“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

如何在设计阶段考虑降低XILINX的功耗 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

如何在设计阶段考虑降低XILINX的功耗
最近Xilinx发布了不少关于使用serdes,ISERDES/OSERDES等基元设计一些很具创意性的接口。
如XAPP1071 - Connecting Virtex-6 FPGAs to ADCs with Serial LVDS Interfaces and DACs with Parallel LVDS Interfaces。
XAPP486 - 7:1 Serialization in Spartan-3E/3A FPGAs at Speeds Up to 666 Mbps
XAPP485 - 1:7 Deserialization in Spartan-3E/3A FPGAs at Speeds Up to 666 Mbps

这些设计有一个好处:节省接口I/O的使用数量。
根据此我想到了我们在设计前期时都是要进行功耗评估的工作,我们如果经常使用Xilinx Xpower Analyzer进行这方面的工作就会发现在FPGA内部
功耗耗用情况。

进入Xilinx Xpower Analyzer界面,打开一个工程后,选中和阅读Summary那栏时,软件会列出诸如
Clock、Logic、Signals、IO、BRAMs、DCMs、DSPs等资源功耗分类信息。

Xilinx DPD 解决方案使用经验(七) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

-109

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.这样做是为预失真信号预留裕度,保证信号 不溢出。

有关复位信号时序约束问题“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

有关复位信号时序约束问题。

做了很久FPGA的朋友们,是否有这种经历:一个FPGA设计工程,在研发测试阶段或转产中试阶段发现,FPGA系统
在上电运行后,偶尔会有异常现象? 或者说,反复加电测试,有时会出现异常或功能失败的情况。

出现这种情况,多半是设计中复位信号不当引起的。

我们好多设计师在处理复位问题时,通常有如下几种情况:1.采用一个全局的异步复位信号 2.省略复位信号,
DFF的初始值在能利用默认值就采用power-up的默认值,在需要特殊的DFF初始值时,告诉编译器这些DFF在
power-up后使用initial值。这些做法各有各的好处,在这里不详细论证。

下面再给出一个大家根深蒂固的设计理念:对于全局复位信号,只要其脉宽足够长,能保障系统复位安全。
其实,我们的ISE中附带的那个Timing Analyzer对复位信号分析,关注的是复位信号撤销后系统的时序正确与否。

这是我们在设计上经常忽略的一点,所以就引起了文章一开始之处提到的那些诡异现象。

因为在FPGA芯片内,clk信号使用的是专用时钟网络,其skew值很小,但设计中的rst信号其扇出巨大,

TD-LTE下行链路EVM工作经验总结 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

TD-LTE下行链路EVM工作经验总结

最近做一个TD-LTE下行链路EVM的仿真和调试,关于EVM的一些问题总结如下:
规范中对EVM的要求我们比较容易实现,但由于该EVM值是整个数字和射频链路的值。由于EVM的产生主要是来自模拟域;而在模拟域中RF功放的非线性是它的主要源头。因此我们在数字域的所有设计中,一般都会有一个比较严格的EVM性能要求。这样做的好处,很明显,就是减轻模拟域中EVM要求的设计压力。比较在数字域中改动设计比较方便。
我的工作是寻求一个将EVM的需求参数转化为滤波器特性参数的方法,找到一些经验值或公式、分析方法等等。目前还没有得到具体结论,由于牵涉的设计因素太多,无法获得一个明显的分析方法。
从经验上来讲,EVM的Filter的长度有关,在实际设计中我们发现:只要滤波器的长度足够长,EVM就容易满足。这个结论的给出,会增加数字域的Group delay 。在系统设计中,如果EVM不满足指标,目前唯一有效、快速的方法就是调整滤波器的长度。

Xilinx SPARTANT6系列 GTP使用方法 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

Xilinx SPARTANT6系列 GTP使用方法
在4月份发的一篇博客中写了关于Xilinx SPARTANT6系列GTP的特点。事后有该款芯片的使用者向我问起关于Transceiver的反馈时钟选择的问题。本文对他提出的问题给出一该常见的使用方法和注意事项。
关于Xilinx SPARTANT6的芯片集成了Serdes transceiver,它们可以选择多个参考时钟源。从结构上来看,一个DUAL的GTPA1_DUAL包含两个transceiver,每一个GTPA1_DUAL又包含两个PLL.每个PLL的时钟可以通过设置进行
独立的选择。可供选择的可见还是很灵活的,但灵活带来一些使用上的不当:每个PLL的参考时钟选择输入是有严格规定的。很多使用者在这方面没注意,犯了不少错误。transceiver的参考时钟的源分为4种:1.来自于外部引脚;2.来自于east/west;;3.来自于FPGA内部的PLL;4:直接来自于FPGA的LOGIC产生。不同的源有不同的使用方法,这一点要加以区分和正确应用。

Xilinx DPD 解决方案使用经验(六) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

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的运行命令。

高速FPGA设计在时序约束方面的总结 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

高速FPGA设计在时序约束方面的总结

FPGA中高频率运行的单元,如Serdes,这些单元的时序约束要经过仔细设计。
最近阅读了Xilinx 应用笔记:xapp485和xapp485,受到不少启发。
之前在做时序约束的时候有几个因素都是没有考虑到的。

Timespec should be set to period plus an amount for jitter。
For example : primary clock of 90 MHz => high speed clock of 315 MHz (3175 pS).
From spreadsheet : jitter is 464 pS
1/(3175 - (0.5*464)) => 340 MHz
这一点毋庸置疑,我们大家都知道。
但我要指出的是我们很多设计师都没有考虑 DCM引入的Jitter.这种jitter和timing uncertainty
是由于DFS生成倍频时钟引起的。 该参数称为Tj35.

现在总结起来,我们在处理高速时钟问题时要考虑的内容有。Tj35、Incoming Clock jitter、Tsamp等几个因素。

Xilinx DPD 解决方案使用经验(五) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

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 解决方案使用经验(四) “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

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 解决方案架构 “安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品

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.这些工作完成后才进行
系数估计。