MAX5881直接RF合成DAC与FPGA的接口
介绍
由于MAX5881 4.3Gsps下行电缆直接RF合成DAC具有宽带特性,相比窄带DAC,它的数据接口需要更高的工作频率。通常,设计宽带数据接口时,需要注意确保其工作可靠、无误。接口架构
FPGA功能可以有多种不同组合,有几种接口架构可供选择,其中之一如图1所示。这种架构可以支持较宽的工作频率范围,并且对处理过程、电压和温度(PVT)变化有较好的容限。本应用笔记重点讨论这种架构的特征。通过数据接口的具体时序分析,突出了该架构相比其它架构的优点。图1. MAX5881与Xilinx Virtex-5 FPGA的接口(CLKDIV = 0,DDR数据接口架构)
时钟
MAX5881具有独立的模拟和数字时钟。MAX5881为数字数据接口提供时钟输出。由于作为数据源的FPGA并不是数据时钟源,所以,需要使用一个“系统同步”的数据接口¹。需要注意的是,MAX5881的数据时钟输出DATACLKP/DATACLKN抖动非常小,原因是它直接来自于高质量的模拟时钟CLKP/CLKN输入。对FPGA DCM²使用外部时钟反馈,以自动补偿FPGA固有的随温度变化的输出数据时钟。设计外部时钟反馈路径,使其严格匹配MAX5881的DATACLKP/DATACLKN输出到FPGA内部数据路径的延时。这确保了由数字时钟管理器(DCM)提供的时钟补偿与FPGA时钟、数据路径的温度漂移相一致。使时钟反馈信号的PCB路径与数据路径加上DATACLK路径长度相等,以确保FPGA的数据输出变化与DATACLK边沿一致。给时钟反馈路径加上额外的延时,可以使数据与时钟保持一致。设计或调整延时以确保MAX5881从数据建立到保持时间段内的数据稳定性。可以采用延长时钟反馈信号路径长度、或者在反馈路径上增加一个FPGA ODELAY器件的方法,以实现这种额外的延时。
数据速率
把MAX5881的CLKDIV引脚设置为低电平,FPGA配置为双倍率(DDR)输出数据格式。在这种情况下,DATACLKP/DATACLKN信号的频率是MAX5581 CLKP/CLKN引脚输入时钟频率的四分之一。对于MAX5581的更新速率,CLKP/CLKN的频率是2.0GHz。使得DATACLKP/DATACLKN的频率为500MHz。这个500MHz的时钟信号用来驱动FPGA的串行器(OSERDES),串行器配置为在时钟的上升和下降沿都会输出数据。因此FPGA输出数据的周期是1ns (或者1.0GHz)。由于Xilinx不允许DCM (或者此种情况下的PLL)配置成外部时钟反馈和多重输出时钟,配置CLKDIV = 0,可以避免生成一个双倍频率时钟驱动串行器。位于FPGA最后端的数据输出级的OSERDES器件减小了上行时钟或OSERDES侧数据输入的频率。这使得FPGA的布局和布线变得容易。对于MAX5581的更新速率,上行时钟的频率是250MHz。接口时序
表1以数据表的方式提供了数据接口的时序分析。通过两个部分进行分析,第一部分,对接口工作频率进行分析,称为“数据周期分析”。这部分内容不考虑在数据周期内稳定数据的确切位置。然而,它可以确定:是否可能调整时钟反馈延时,以确保MAX5881从数据建立到数据保持时间窗口内的数据稳定性。数据表中分析了一个工作频率,并重复分析了其它几个工作频率(没有示意),图2所示为分析结果。同时,图3给出了时序参考波形。表1. Virtex-5与MAX5881接口的数据周期分析
Value | Unit | Specification | Description | Source | Notes |
4.300 | GHz | fDAC | MAX5881 output update rate | MAX5881 data sheet | |
0.5375 | GHz | fDATACLK = fDAC/8 | DDR interface mode | MAX5881 data sheet | |
930 | ps | tDATAPERIOD = 1/(2 × fDATACLK) | Data period | MAX5881 data sheet | |
50 | ps | tINFBOFFSET | FPGA DCM feedback phase error (peak ±) | Xilinx ds202.pdf | |
120 | ps | tPERJITT | FPGA DCM jitter (peak ±) | Xilinx ds202.pdf | |
121 | ps | dtOUTWC | Worst PVT FPGA output-to-output skew (peak-to-peak) | ".twr" post-layout static timing report from Xilinx static timing analyzer (worst-case PVT) | |
1.4 | ps | dtPCB | Board output-to-output skew | Estimate | All PCB data and data clock trace lengths matched |
462 | ps | dtTOTAL = (2 × tINFBOFFSET) + (2 × tPERJITT) + dtOUTWC + dtPCB | Total FPGA data output timing variance | ||
1100 | ps | tSETUP | MAX5881 setup time | MAX5881 data sheet | |
-760 | ps | tHOLD | MAX5881 hold time | MAX5881 data sheet | |
590 | ps | tDW = tDATAPERIOD - (tSETUP + tHOLD) | MAX5881 data change window | Time in clock period when data does not have to be valid and stable | |
128 | ps | tPSL = tDW - dtTOTAL | Period timing slack | Extra time between FPGA changing data; data must be stable at DAC |
图2. 周期容限
图3. 时序参考波形
时序分析的第二部分计算了所需要的时钟反馈延时(表2),同时计算了与反馈延时相对应的建立和保持时间容限,或者叫做时序余量。
表2. 数据时序分析(MAX5881的引脚DELAY = 0)
Value | Unit | Specification | Description | Source | Notes |
0 | ps | tDOUTNOM | FPGA clock-to-data output delay | FPGA external clock-feedback configuration | Feedback-path length equal to data-path length plus clock-path length; this centers data transitions at the clock edge |
-170 | ps | tSUNOM = tDATAPERIOD - tSETUP - tDOUTNOM | Nominal setup margin (without dtTOTAL factor) | Calculate margin without jitter, skew, and phase-error effects first; they are accounted for later | |
760 | ps | tHLDNOM = tDOUTNOM - tHOLD | Nominal hold margin | Calculate margin without jitter, skew, and phase-error effects first; they are accounted for later | |
-401 | ps | tSUABS = tSUNOM - dtTOTAL/2 | Absolute setup margin (including dtTOTAL factor) | Include jitter, skew, and phase-error effects | |
529 | ps | tHLDABS = tHLDNOM - dtTOTAL/2 | Absolute hold margin (including dtTOTAL factor) | Include jitter, skew, and phase-error effects | |
-529 | ps | tDADVANCE = -tHLDABS | Delay-adjusted FPGA clock-to-data output | External clock feedback with feedback-path length equal to data-path length plus clock-path length plus tHLDABS | Place data transition immediately after tHOLD |
128 | ps | tSUFINAL = tSUABS - tDADVANCE | Delay-adjusted setup margin | ||
0 | ps | tHLDFINAL = tHLDABS + tDADVANCE | Delay-adjusted hold margin |
同样地,这部分分析在各种工作频率下重复进行。由于数据生成量太大,表格中没有给出这些数据,而是用图4建立容限和图5保持容限给出了曲线示意图。
图4. 建立容限
图5. 保持容限
需要注意的是,在图4和图5中,时钟反馈延时基于宽工作频率范围(变化的fDAC)进行计算。实现方法是设置无效数据窗口的前沿,也就是在这个位置,数据开始变化为MAX5881保持时间后的下一个值。换句话说,一旦满足了保持时间规定,FPGA就开始转换到下一个数据值。
对于某一个特定频率,可以使用增加保持时间容限并且减少建立时间容限的方法来平衡建立时间和保持时间容限。这是通过在时钟反馈路径上插入可变延时的途径实现的。对于低频,建立和保持时间容限足够大,容限平衡将失去意义。
图6. 容限平衡
其它处理过程
由于FPGA器件的灵活性,可以考虑多种设计方法。研究这些方法的具体细节超出了本篇应用笔记的范围,这里只简单描述其中几种:- 使用DCM相位偏移控制输出数据变化,而不是靠增加DCM时钟反馈路径的长度来增加额外延时。这种方法在软件延时调整方面具有优势,但同时引入了由FPGA相位偏移电路带来的更多的时序不确定性。
- 在DCM反馈路径中使用ODELAY器件。同样,在软件延时调整灵活性方面具有优势,但也会引入更多的时序不确定性。
- 使用方法1或者方法2,但对器件进行逐个校准。MAX5881特性数据表明,在所有器件整个温度范围内,每个器件的数据采样窗变化量是151ps相比于340ps。每个器件的微小时序变化可以补偿FPGA时序不确定性。使用这种方法,可以减小FPGA器件间的某些时序差异。
评论