一种应用于AD源同步数据接收的FPGA动态相位调整方法与流程

文档序号:17317892发布日期:2019-04-05 21:22阅读:1123来源:国知局
一种应用于AD源同步数据接收的FPGA动态相位调整方法与流程

本发明涉及高速数据传输领域,具体涉一种应用于ad源同步数据接收的fpga动态相位调整方法。



背景技术:

ad源同步数据接收包含时钟信号及数据信号,信号频率高,通常为双边沿差分串行数据。ad的串行数据通过训练字确定串行到并行转换的序列。

随着数据传输速率的提高,时钟对数据采样的保持时间变窄,即采样准确性降低,并且由于传输路径不同,信号到达接收端的延迟不能保证完全相同,即时钟对多路数据的采样存在偏差。为此,出现静态相位调整以及动态相位调整。静态相位调整spa通过匹配时钟线和数据线的长度,使各信号在其传输线上延时相等。动态相位调整dpa技术,是根据当前各信号线的物理状态,在每次系统上电后,自动对相应信号进行去偏移操作,从而使相位调整的参数适合当前物理状态。各大厂商fpga器件都具备了相位调整能力,但是在应用中,需要根据实际情况设计相应的算法实现动态相位调整。

现有的动态相位调整方法,是分别查找串行数据1bit高低电平变化的上升沿和下降沿,然后计算出中心位置作为最佳采样位置。由于xilinx公司的fpga延迟模块idelay最大延迟不超过5ns,串行数据上升沿和下降沿的查找需要覆盖2bit数据,所以查找串行数据1bit高低电平变化左右边沿计算中心位置的方法要求双边沿数据率不小于400mbps。而对于双边沿数据率低于400mbps的应用,现有的动态相位调整方法无法满足。并且现有的动态相位调整方法只在上电时进行相位调整,没有考虑上电之后环境变化的影响,如温度变化可能导致数据传输误码。



技术实现要素:

为了克服现有基于xilinx公司fpga的动态相位调整(dpa)方法无法满足双边沿数据率低于400mbps源同步数据接收的应用需求问题,本发明提供了一种应用于ad源同步数据接收的fpga动态相位调整方法。

本发明的发明构思是:

首先,配置ad工作在训练模式,输出训练字;然后,查找ad输出训练字串行数据流高低电平变化的上升沿,通过已知的ad源同步数据频率作为先验信息,计算获得串行数据比特位的中心位置,根据该中心位置调整idelay延迟,使得时钟边沿卡在所述串行数据比特位的中心位置;最后,调整iserdes串行数据流的解串序列,使得iserdes输出的并行数据与所述训练字一致。

本发明所采用的技术方案是:

一种应用于ad源同步数据接收的fpga动态相位调整方法,所述fpga为xilinx公司fpga,包括io逻辑资源idelay及iserdes;idelay和iserdes分别用于实现ad源同步数据的延迟及串并转换;其特殊之处在于,包括步骤:

1)fpga初始化ad;

2)配置ad工作在训练模式,输出训练字,所述训练字为串行数据流;

3)接收ad输出的串行数据并转换为并行数据;

4)dpa调整

4.1)通过对所述并行数据相邻位两两异或,查找所述训练字串行数据流中的电平变化位置;若未找到,则继续查找;若找到,则执行步骤4.2);

4.2)寄存所述电平变化位置对应的数据值edge_ifor1;

4.3)查找训练字串行数据流上升沿及相应的延迟系数reg_tap1;若未找到,则调整idelay延迟后继续查找;若找到,则执行步骤4.4);

4.4)计算最佳延迟值opt_num;

当reg_tap1大于等于num时,opt_num=reg_tap1-num;

当reg_tap1小于num时,opt_num=reg_tap1+num;

num为半个时钟周期对应的延迟系数,num=t/78.125ps;

t为ad源同步时钟周期;

78.125ps为参考时钟等于200mhz,延迟系数1对应的时间;

4.5)根据最佳延迟值opt_num,调整idelay延迟到最佳延迟位置;

5)bitslip调整

调整串行数据流的解串序列,直至iserdes输出并行数据与训练字一致。

进一步地,还包括步骤6)配置ad为正常工作模式。

进一步地,还包括步骤7)判断ad是否为工作间歇,若是,则返回步骤2);若否,则接收ad源同步数据。

进一步地,步骤4.1)查找所述训练字串行数据流中电平变化位置的方法为:对并行数据相邻位两两异或,若异或结果中含有1则认为找到电平变化位置;若异或结果中不含有1,则表示没有找到电平变化位置,继续进行查找。

进一步地,步骤4.3)查找训练字串行数据上升沿及相应的延迟系数reg_tap1的方法为:从零延迟开始,增加idelay延迟系数,idelay延迟系数每增加1,判断一次解串数据异或结果低六位是否与上一步寄存的edge_infor1高六位一致,若一致时,则找到了训练字串行数据流电平变化的上升沿也即训练字串行数据上升沿,并记录此时的延迟系数reg_tap1;若不一致,则继续增加idelay延迟系数值,进行再次判断。

进一步地,步骤5)bitslip调整的具体方法为:bitslip模块产生bitslip脉冲宽度为1个clkdiv的脉冲信号,驱动iserdes改变输出并行数据序列;判断iserdes输出并行数据是否与训练字一致,一致则bitslip调整结束。

与现有技术相比,本发明的有益效果是:

1、简化了dpa流程

充分利用了先验信息,即已知ad源同步数据频率,只查找串行数据流高低电平变化的上升沿,通过计算获得idelay最优延迟系数,如此简化了dpa流程。

2、降低了dpa应用对数据率的下限要求

由于只查找串行数据流高低电平变化的上升沿,延迟最多需要覆盖1bit数据的宽度,所以dpa数据率大于203mhz即可,降低了现有dpa方法对数据率的下限要求,能够满足数据率低于400mbps的应用需求。

3、上电之后,能够定期检查并调整时钟与数据接收相位,克服由于工作温度变化引起的传输误码。

附图说明

图1为基于本发明的fpga动态相位调整方法接收ad源同步数据的原理框图。

图2为基于本发明的fpga动态相位调整方法接收ad源同步数据的流程图。

图3为基于本发明的fpga动态相位调整方法接收ad源同步数据的时序图。

具体实施方式

下面结合附图1-2对本发明作进一步说明。

利用本发明接收ad源同步数据的原理框图如图1所示,其中源同步时钟clk_lvds_p和clk_lvds_n经过ibufds(ibufds为fpga内部功能模块,可以直接调用,用于差分时钟转单端时钟)由差分转为单端,再分别经过bufio和bufr:bufio输出时钟驱动io逻辑资源iserdes;bufr四分频产生时钟信号clkdiv,信号clkdiv驱动iserdes模块(iserdes_master、iserdes_slave)、dpa及bitslip等fpga内部逻辑。

ad源同步数据(data_lvds_p和data_lvds_n)先经过ibufds,然后接入iserdes模块。iserdes模块集成了idelay及串转并单元。两个iserdes模块级联,一个作为master,另一个作为slave。iserdes_master的shift_out1,shift_out2分别接入iserdes_slave的shift_in1,shift_in2。iserdes_master的q[1:6]输出pdata[0:5],iserdes_slave的q[3:4]输出pdata[6:7]。

dpa单元根据pdata[7:0]输入数据来调整inc信号和ce信号,实现idelay(idelay是fpga内延迟功能模块,可以调用以改变数据的延迟)延迟的增加或减少,从而找到源同步数据的最佳接收相位。

bitslipmodule根据pdata[7:0]输入数据来调整bitslip信号,实现iserdes并行数据移位,直到移位结果与ad配置的训练字一致。

利用本发明接收ad源同步数据流程如图2所示:

第一步,上电,fpga初始化ad;

第二步,配置ad工作在训练模式,输出训练字串行数据流,训练字串行数据流示意见图3中所示。

第三步,接收ad输出的串行数据并转换为并行数据。

第四步,dpa调整

4.1查找训练字串行数据流中的0到1或1到0电平变化位置

通过对并行数据相邻位两两异或,获得串行数据流中高低电平变化位置,具体是判断异或结果中是否含有1,若含有1则认为找到高低电平变化位置,进入步骤4.2;若不含有1,则继续查找;如图3中,并行数据00000000,11000000,11000000异或结果分别为000_0000,010_0000,010_0000。

4.2寄存异或结果至edge_infor1;

4.3查找训练字串行数据上升沿及对应的延迟系数

查找串行数据流电平变化的上升沿,具体方法是从零延迟开始,增加idelay延迟系数(延迟系数0~63),延迟系数每增加1,判断一次解串数据异或结果低6位是否与上一步寄存的edge_infor1高6位一致。当其一致时,就找到了串行数据流电平变化的上升沿,记录此时的延迟系数,reg_tap1,此时,串行数据的变化沿与时钟边沿可以认为是对齐的,如图3所示。若不一致,则继续增加延迟系数值,查找串行数据流电平变化上升沿。

4.4计算最佳延迟值

当串行数据变化沿与时钟边沿对齐时,串行数据向前或者向后平移半个时钟周期,即延迟系数增加或减少半个时钟周期的长度,则时钟边沿与数据比特位中心位置对齐,此时的延迟系数即为最佳延迟值opt_num。由于ad源同步时钟频率是已知的,假定ad源同步时钟周期为t,半个时钟周期对应的延迟系数num即为:

num=t/78.125ps

注:参考时钟200mhz,延迟系数1对应78.125ps。

最佳延迟系数opt_num即为:

当reg_tap1大于等于num时,opt_num=reg_tap1-num。

当reg_tap1小于num时,opt_num=reg_tap1+num。

由于idelay延迟基准时钟200mhz,最大延迟系数63,延迟精度78.125ps,最大延迟4921.785ps,所以上述的最佳延迟查找方法要求数据速率不低于1/4921.785ps=203mbps。

4.5调整idelay延迟到最佳延迟位置(即最佳接收相位)

根据步骤4.4得到的最佳延迟值,调整idelay延迟到最佳延迟位置。

第五步,bitslip调整

dpa调整完成之后,开始调整串行数据流的串并转换序列,直至iserdes输出并行数据与训练字一致,具体方法为:bitslip模块产生bitslip脉冲信号,脉冲宽度1个clkdiv,驱动iserdes改变输出并行数据序列。每个bitslip脉冲之后,等待两个clkdiv周期,判断iserdes输出并行数据是否与训练字一致,一致则bitslip调整结束,进入第六步;否则继续调整串行数据流的串并转换序列。

第六步,配置ad为正常工作模式

第七步,判断ad是否为工作间歇,若是,则返回第二步;若否,则接收ad源同步数据。

本发明的动态相位调整方法需基于具有idelay及iserdes资源的fpga实现,例如xilinx公司virtex4系列及以上fpga。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1