AD9253链路训练

  • 传统方式

        参考Xilinx官方文档xapp524。对于AD9253器件 - 125M采样率 - DDR模式,ADC器件的DCO采样时钟(500M Hz)和FCO帧时钟是中心对齐的,适合直接采样。但是DCO时钟不能直接被FPGA内部逻辑使用,需要经过BUFIO和BUFR缓冲后,得到s_bit_clk和s_frame_clk。此时,s_bit_clk和DCO时钟不是相位对齐的。如果s_bit_clk直接采样数据总线,则不能保证采样到正确的数据。故需要进行链路训练。

参考之前博客:  AD9253 LVDS 高速ADC驱动开发_lvds adc-优快云博客  

step1:

       大概流程为:s_bit_clk采样DCO时钟信号,通过调节IDELAY,配合ISERDES原语,先稳定得到8'b11111111或8'b00000000(根据ADC器件手册时钟和数据相位关系来选择),则表明s_bit_clk和DCO处于固定的相位关系,但不是边沿对齐。然后再调节IDELAY,使得s_bit_clk采样DCO时钟信号,得到的结果为一个不确定值,则表明DCO和FCO时钟信号已边沿对齐,即链路s_bit_clk和DCO时钟信号的相位关系已训练完毕。

step2:每个数据点比特位的链路训练,用于对齐采样时钟和每个数据点的比特顺序。

s_bit_clk采样FCO帧时钟信号,通过调节ISERDES的bitslip,使得采样到特定pattern,对于ADC9253器件而言,特定pattern为8'hf0。则表明每个数据点比特位的链路训练完毕。

  • 本文方式

传统方式存在一个问题:需要DCO,FCO,多路DOUT走线和阻抗均需要保持完全一致,才能满足手册的时序关系。

在实际项目中,遇到一个问题:ADC9253的2个通道,有一个通道很稳定,另一个通道存在偶发的数据值跳变。于是修改训练方案:

核心思路是每路数据总线和采样时钟s_bit_clk配合来单独训练,从而可以避免不同通道的差异性。因为传统方法通过调节采样时钟s_bit_clk,使之与DCO对齐,这种调节类似于全局调节,DCO对每个通道都会起作用,如果两个通道存在硬件设计差异,就会导致上述问题。

Step1:AD9253器件配置为test mode模式,test pattern为标号1所示。

针对每个通道内所有Lane数据总线,通过调节IDELAY,配合ISERDES原语(可以使用selectio这个IP更方便),使得采样时钟s_bit_clk能采样到稳定的值,比如10ms内采样值都不变。说明:该值通常不会恰好等于测试pattern。

step2:每个数据点比特位的链路训练,用于对齐采样时钟和每个数据点的比特顺序。

对于每个通道内所有Lane数据总线,通过调节ISERDES的bitslip,使得采样到预先设定的pattern,见标号1。当所有路数据总线均稳定采样到预先设定的pattern,则表明AD9253链路训练OK。

Step3:验证环节。AD9253器件配置为test mode模式,test pattern为标号2所示。因为链路已经训练OK,那么此时改变test pattern,所有通道,理论上也应该正确采样到该test pattern值。实际项目测试,也验证了该理论猜想。

  • 补充说明:对于链路训练,通常只训练一次。但是如果受到温度等因素干扰,链路可能失效。此时需要自适应的检测到,并重新进入链路训练环节。链路失效检测方法:链路训练OK后,可以用采样时钟s_bit_clk采样FCO帧时钟信号,当采样值突然稳定的发生改变,不等于当前值,则表明链路失效。

  • AD9253器件支持test mode。数据管脚可以输出固定的 test pattern序列。

项目背景1.1 AD转换 AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。 A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。 AD转换的技术指标,一般有如下几个: 1. 分辨率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2^n的比值。分辨率又称精度,通常以数字信号的位数来表示。 2. 转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。采样时间则是另外一个概念,是指两次转换的间隔。为了保证转换的正确完成,采样速率 (Sample Rate)必须小于或等于转换速率。因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。常用单位是ksps和Msps,表 示每秒采样千/百万次(kilo / Million Samples per Second)。 3. 量化误差 (Quantizing Error) 由于AD的有限分辨率而引起的误差,即有限分辨率AD的阶梯状转移特性曲线与无限分辨率AD(理想AD)的转移特 性曲线(直线)之间的最大偏差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。 4. 偏移误差(Offset Error) 输入信号为零时输出信号不为零的值,可外接电位器调至最小。 5. 满刻度误差(Full Scale Error) 满度输出时对应的输入信号与理想输入信号值之差。 6. 线性度(Linearity) 实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。 其他指标还有:绝对精度(Absolute Accuracy) ,相对精度(Relative Accuracy),微分非线性,单调性和无错码,总谐波失真(Total Harmonic Distotortion缩写THD)和积分非线性。
<think>好的,用户想了解关于Selectio DDR模式配置或相关信息。首先,我需要确定Selectio是什么,以及DDR模式在这里的具体应用场景。根据用户提供的引用内容,提到了DDR2和DDR3 SDRAM的模型和相关参数文件,这可能涉及到FPGA设计中的DDR内存接口。 接下来,我应该考虑Xilinx或Altera(Intel)FPGA中的SelectIO技术,因为SelectIO是Xilinx的术语,用于描述其可配置的输入输出接口资源。DDR(双倍数据速率)模式通常用于在时钟的上升沿和下降沿传输数据,从而提高数据传输速率。因此,用户可能在询问如何在FPGA中配置SelectIO接口以支持DDR模式。 需要确认用户的具体需求,是Xilinx还是其他厂商的工具,但根据提供的引用文件如sim_tb_top.v和ModelSim脚本,可能涉及到Xilinx的Vivado或ISE设计流程中的仿真配置。此外,DDR模型参数文件可能用于验证物理层接口的时序。 可能的问题点包括:如何设置SelectIO的DDR模式,约束文件的配置,时钟与数据的对齐方法,以及仿真测试的步骤。用户可能需要知道如何在HDL代码中实例化DDR寄存器,使用原语或IP核,以及如何进行时序分析。 另外,用户提供的引用内容提到仿真相关的文件,如sim.do和sim_tb_top.v,说明用户可能在进行仿真时遇到问题,需要配置SelectIO DDR模式以匹配DDR内存模型。因此,回答需要涵盖HDL代码配置、约束文件设置、仿真步骤以及可能的常见问题解决方法。 需要确保回答结构清晰,分步骤说明配置过程,引用相关文档或资源,并生成相关问题帮助用户深入理解。同时,注意使用中文和正确的LaTeX格式,避免技术术语错误。</think>### SelectIO DDR模式配置详解 SelectIO DDR(双倍数据速率)是FPGA设计中实现高速数据传输的核心技术,通过时钟双边沿采样可将数据传输速率提升一倍[^1]。 #### 一、基本配置步骤 1. **IP核调用**:在Vivado中创建`IOBUF`或`IDDR`/`ODDR`原语 ```verilog ODDR #( .DDR_CLK_EDGE("SAME_EDGE"), .INIT(1'b0), .SRTYPE("SYNC") ) ODDR_inst ( .Q(TX_DATA), // 1-bit DDR输出 .C(clk), // 时钟输入 .CE(1'b1), // 时钟使能 .D1(data_rise), // 上升沿数据 .D2(data_fall), // 下降沿数据 .R(1'b0), // 复位 .S(1'b0) // 置位 ); ``` 2. **约束配置**: ```tcl set_property IOSTANDARD LVDS_25 [get_ports {data_p}] set_property PACKAGE_PIN AB12 [get_ports {data_p}] create_clock -period 5.000 [get_ports clk] ``` #### 二、关键参数设置 $$ t_{SU} = t_{CO} + t_{PCB} - t_{CLK\_SKEW} $$ 其中$t_{SU}$为建立时间余量,$t_{CO}$为时钟输出延迟 #### 三、仿真验证流程 1. 使用ModelSim脚本`sim.do`加载DDR3模型 2. 在`sim_tb_top.v`中配置时钟参数: ```verilog initial begin sys_clk = 0; forever #2.5 sys_clk = ~sys_clk; // 200MHz DDR时钟 end ``` #### 四、典型应用场景 - DDR3/DDR4内存接口 - 高速ADC/DAC数据采集 - 千兆以太网PHY接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值