Xilinx DPD 解决方案使用经验(七)
这篇文章是关于Xilinx DPD最后一篇总结文章,内容涉及的比较宽泛,但在使用的是要注意的问题。
1)DPD V2.0文档指出,DPD的处理带宽必须不能小于信号带宽的3倍。建议带宽是5倍信号带宽。在使用过程中进行了相关测试和实验,如果DPD的处理带宽只有3倍信号带宽的话,DPD的改善效果达不到文档提供的参考值,这说明 DPD的处理带宽还是对预失真的性能有较大影响的。如果是多载波的情形下,且载波不连续,需要的处理带宽要更大一些。这点不能忽略。
我们知道DPD的输出给下游FR单元,其实我们说的3倍或5倍信号带宽,如果在RF单元中带宽达不到3倍或5倍信号带宽的话,我们在数字域中保留的那些通带的带宽就失去意义了。
总而言之,要保证DPD输入后的链路带宽合乎DPD的要求,同时反馈通路也一样要满足。
2)DPD对输入信号的大小的要求。DPD能处理小信号,即低功率的信号,但不保证预失真功能。如果DPD工作在 DCL模式下,信号低于-33dBFS时,软件检测到功率值达不到要求,将不进行DPD运算。 但输入的信号又不能太大,一般的情况下是不超过-15dBFS.这样做是为预失真信号预留裕度,保证信号 不溢出。
Xilinx DPD 解决方案使用经验(六)
使用过Xilinx DPD IP核的朋友知道,在系统调试的时候运行单步模式,确定好DPD的各个参数后,我们期望的是连续运行DPD。这个时候运行DCL(Dynamic Control Layer)模式。这种模式DPD系数收敛很快,具有实时性的特点。
本文说一说如何使用DCL模式.
DCL模式的运行受4类参数的限制:DCL_pstep、DCL_set1ratio、DCL_set2ratio、Meter_length。
DCL_pstep:用于设置增益跟踪三个门限的衰退率;
Meter_length:用于设置测量模块的采样点数量;
DCL_set1ratio、DCL_set2ratio:这两个参数的设置还与功放的特性有关。若功放是QSNL则该参数均设为0
若功放是NSNL则它们使用定义在系数集的门限值。
运行DCL前先写入Meter_length的值,然后写入DCL_pstep、DCL_set1ratio、DCL_set2ratio的值。
最后在启动DCL的运行命令。
Xilinx DPD 解决方案使用经验(五)
Xilinx DPD 解决方案能够支持NSNL性质的功放。但它在Xilinx的提供的文档中没有具体给出确定NSNL性质的功放的方法。如果通过测试,确定功放的特性呢? 我根据FAE的提供的方法进行了测试。方法如下:
1.首先调整发射信号的功率,使的系统工作在最大工作状态。
2. 使用单步系数更新命令COMPUTE_NEW_COEFFICIENT运行几次DPD的系数计算
3. 在频谱仪上将当前的频谱进行保存
4. 保持DPD目前的参数不变,减少进入DPD模块信号的幅度(调整信号增益嘛,这个好实现),
并保存下此时的信号的频谱。
5.尝试不同的信号增益(增益递减模式),重复进行第4步。
6.比较每次增益递减频谱,如果频谱“相似”则功放是QSNL,否则是NSNL.
Xilinx DPD 解决方案使用经验(四)
Xilinx DPD 解决方案的Microblaze每执行一次Control_mode(通俗的讲,就是命令),都会返回一个CommandStatus.
我讲经常用到的和遇到的CommandStatus罗列出来,供大家参考。下面是各种CommandStatus遵循的格式说明。
DPDCommandStatus code :代表的意义
1 :Microblaze处于忙状态,仍在执行上一个Control_mode
2 :命令执行成功
3 :ECF计算的DPD预失真系数转换到LUT时出现16bit溢出
255 :ECF更新DPD预失真系数检测到PA过载,仍然使用更新后的系数
Xilinx DPD 解决方案架构
各位朋友,不好意思,之前的博客直接先讲使用Xilinx DPD 解决方案的经验,忘了应该先介绍一下该方案的架构方面的内容。
Xilinx DPD 解决方案包括如下几个部分:
1)预失真器。
2)捕获缓冲区(4K的存储空间)。用于存储发射和反馈路径的采样数据。
3)SCA测量。
4)参数估计器。基于最小二乘或阻尼牛顿算法实现对给定捕获缓冲区中发射和反馈采样数据
自适应计算功放的逆模型。这部分是由MicroBlaze处理器完成。属于DPD软件部分。
其框架在附件中的图片中,由于不知道怎么在博客中插入图片,暂时只能这么处理了。
在软件范畴中实现的模块就是我们上面提到的“参数估计器” ,它的主体就是MicroBlaze处理器。
该MicroBlaze处理器有64K的内部RAM内存和32KB的捕获RAM。在该平台上的软件是由Xilinx提供,
经过了全面测试。它们能完成各种控制和提供监控操作的用户接口。
DPD软件实现的内容,包含以下几个部分:
1) 估计功能ECF:将发送和接收数据的幅度、时延、相位进行对齐align.这些工作完成后才进行
系数估计。
Xilinx DPD 解决方案使用经验(三)
调试具备DPD功能的射频功放系统时,我之前没有按照一些必要的步骤,走了不少弯路。利用这段时间总结了一下,把它写出来,记录下来。
1.在运行DPD之前,先检查整个链路中是否有信号过大导致失真的情况。
通过设置TX_PATH链路上各个增益控制单元,查看送到功放前的信号是否出现失真的情况。
因为DPD仅是对功放进行建模,如果进入功放前的信号出现失真,在DPD进行ACLR改善时,
此时改善效果很很差,甚至次邻道会出现ACLR恶化现象。
2.确认估计函数ECF的记忆项个数和多项式个数。我通过实验,多项式个数越大,ACLR改善越佳;
但记忆项个数与ACLR的改善没有必然联系。这要根据实际情况进行试验,确定出于功放记忆性
匹配的记忆项个数。
3.确定功放的特性。DPD方案支持两种特性的功放:QSNL和NSNL。绝大多数的功放特性是QSNL,
NSNL特性的功放很少见。因此在运行DCL模式时,只需要设定一个DCL参数即可:DCL_PSETP.
其他参数使用默认值就差不多可以了。
Xilinx DPD 解决方案使用经验(二)
Xilinx DPD 解决方案 V3.0中提供了各种Debug的功能。其中之一就是捕获TX、RX的数据。注意,TX_PATH的捕获是捕获预失真前的数据,该IP核没有提供预失真后的数据捕获功能。在调试过程中,我们难免会遇到不少问题,那是时候我们是多么渴望能抓取到预失真后的数据进行分析,确定DPD的运行是哪个环节出现问题。由于目前没有提供预失真后的数据捕获功能,我们只能通过理论进行分析。
我们知道,DPD的模型建立是创建RF功放AM/AM的逆模型曲线。由于功放具有记忆性,我们的DPD的模型也是基于记忆性来进行建模的;因此预失真后的数据其频谱是具有“选择性的”。 换句话说,DPD的滤波器特性是非线性的。
附件的截图,是文档提供的几种频响图。
因此使用预失真后的数据进行系统分析没有多大的意义。
Xilinx DPD 解决方案使用经验(一)
Xilinx DPD V3.0 采用Shared Block RAM(SBRAM)实现Mircoblaze 与Host 之间的交互。因此有必要先弄清楚,HOST怎样读取或加载数据和指令给Mircoblaze,完成对DPD的控制和配置工作的。
在初期的学习过程中,遵循如下的步骤:
1.告诉DPD要执行的命令(DPD文档中称为控制模式)是什么。
方法:给模式寄存器CONTROL_MODE_REGISTER写入需要执行的指令。
2.触发命令的执行。方法:它通过给CONTROL_CONTROL_MODE_REGISTER写入0xABCDEF12.
3. 监控DPD的执行状态。方法:读命令状态寄存器COMMAND_STATUS值。
DPD的使用手册公开给用户的控制模式有如下几种:
1.计算DPD系数。
2.DCL动态控制层的控制命令。
3.DPD的运行状态监控。
4.启动和管理QMC
5.反馈通道的切换命令
6.诊断和维护DPD命令。
Xilinx DPD 解决方案初步介绍
Xilinx DPD 解决方案是数字域上的预失真技术,它在中频环节上进行预失真处理。
目前在数字域中的常见的解决方案还有有TI的GC系列 、Optichron OP4400 DPD方案;
Xilinx DPD 解决方案以其性能优良、成本低的优势获得市场上的认可和成功。
Xilinx DPD 的IP核 V3.0,有几大特点:
1.最大有30dB的ACLR改善;
2.支持多种空中接口标准;;TDD标准的空中接口,该IP核提供两种数据捕获模式,其中延时同步采样的捕获模式使用于TDD标准。
3.DPD性能和耗用FPGA资源之间的平衡选择,根据实际情况进行选取。
提供DPD内核估计算法的三种不同架构:Arch_A,Arch_B,Arch_C. 这三种不同的架构消耗的FPGA资源 (尤其是DSP48) 依次递增,换取的是更高的ACLR改善效果。
4.正交调制器的DC偏置修正能力(QMC);
5. 一个DPD核最多可支持4个发射通道;时钟率和数据率的比值支持1到4;
6.丰富的Monitoring and Debug功能。具备信号捕获和分析功能。
7.反馈通道SRX_path有三种不同的选择输入方式:
最新评论
2 天 5 小时之前
2 天 5 小时之前
2 天 5 小时之前
2 天 9 小时之前
3 天 5 小时之前
5 天 3 小时之前
5 天 10 小时之前
6 天 10 分钟之前
6 天 5 小时之前
6 天 9 小时之前