动态相位调整技术在FPGA中的设计与实现
2009-07-06
作者:黄万伟,汪斌强,曹晓磊
摘 要: 提出一种基于FPGA的动态相位调整实现方案。在高速数据传输接口中,由于数据窗缩小以及传输路径不一致,造成数据和时钟信号在FPGA的接收端发生位偏移和字偏移。动态相位调整技术根据当前各数据线物理状态,对各信号线动态进行去偏移操作,克服了静态相位调整中参数不可再调的缺点,使接口不断适应外部环境的变化,从而保证数据的可靠传输。
关键词: FPGA;动态相位调整;位偏移;字偏移;静态相位调整
随着单线传输速率不断接近于1 Gb/s,使每位所占的时间窗不断减小,导致采样时钟对信号线的采样点很难在其有效区间进行准确采样;再加上传输路径的不同,各数据线和采样时钟到达接收端的延迟时间不能保证完全一致,从而带来了各信号线之间的位偏移(Bit Skew)和字偏移(Word Skew)[1],如图1所示。位偏移为采样时钟沿不在各数据窗口的中心位置采样,可能会导致数据采样保持时间不够长,易使bit位发生瞬间突变,从而导致接收的数据不稳定;字偏移是指采样接收后的各数据信号之间不同步,使得同时在发送端发送的数据在接收端却不能同一时刻被采样,导致接收的数据无效。
静态相位调整SPA(Static Phase Alignment)通过匹配时钟线和数据线的长度[2],使各信号在其传输线上延时相等。SPA过程将耗费大量劳动和时间,而且其设定的参数静态只针对板卡当前的物理状态,不能适应外部环境的变化。采用动态相位调整DPA(Dynamic Phase Alignment)技术[3],则根据当前各信号线物理状态,每次系统上电后,自动对各信号线进行去偏移操作,从而使相位调整的参数适合当前物理状态,保证了相位调整的时效性。所以,DPA技术能够使通信接口不断适应外部环境的变化,避免由于相位偏移而导致的数据采样错误,从而保证了数据的可靠传输。
1 DPA在FPGA上实现
为保证接送端可靠并有效接收数据,用于去偏移的DPA设计方案必须具有消除位偏移和字偏移的功能。在DPA过程中,发送端不停地发送训练序列,而接收端首先对承载各数据的传输线进行位校正,利用PFGA内部的IDELAY功能,对各个数据线进行不同程度的精确线延迟操作,使数据窗的中心位置都正对着采样时钟的边沿;在完成位调整的基础上,接收端以bit为基本单位,利用BITSLIP功能分别调整各数据线解串后的并行数据,使并行输出数据都调整到预先设定的同步字模式,从而实现各数据通道接收数据同步。在SPI4-4.2接口中[4],其训练序列定为“00000000001111111111”,其同步字为“0011”。
1.1 ISERDES核介绍
在接口设计中采用了Xilinx 公司的Xc4vlx160 FPGA[5],在FPGA间的收发双方利用16个外部差分管脚进行器件间高速传输。每个输出管脚都在FPGA内部对应一个并串转换(OSERDES)核,该核内有倍频电路以及并串转换功能,将内部的并行数据串化后送到发送端的外部输出管脚。
接收端的每个输入管脚在FPGA内部都对应一个串并转换核(ISERDES),在其内部分别嵌入IDELAY线延迟核和BITSLIP位偏移核,如图2所示。IDELAY线延迟核将串行输入数据在其内部进行精确延迟,提供可调的64级抽头线延迟功能,对应的最大延迟时间为5 ns,则Bit alignment提供的最小延迟颗粒度为78.125 ps,其初始化值设为零延迟。IDELAY线延迟核提供dlyce和dlyinc两个输入控制信号。当dlyce输入为高电平时,表明IDELAY处于工作状态,此时dlyinc每置一周期的高电平,信号线的延迟就增加一级;而dlyinc每置一周期的低电平,信号线的延迟就减少一级。
BITSLIP字偏移核内部提供串并转换和位调整功能,每个并串转换器的最大并行输出宽度为6,若需要更宽的并行数据输出,可以以主从模式将两个相邻的ISERDES连接在一起,最大提供10位的并行输出。BITSLIP的位调整功能将并行输出数据存储并对数据进行移位,提供bitslp输入控制信号,通过控制bitslip信号,对输出数据进行左移或右移,最终使并行输出数据的排序满足本DPA方案中设定的同步字格式。
1.2 DPA设计方案
由于FPGA之间数据总线宽度为16 bit位,当FPGA的内部总线宽度为64 bit位时,从管脚输入的串行数据将被转换成4 bit位宽的内部并行格式。在DPA训练过程中,发送端分5个周期发送训练序列“0000_0000_0011_1111_1111”,以5个周期为一次循环,如此反复。定义“0011”为同步字,作为各数据线解串后需匹配的固定数据格式。
在接收端的DPA包括位校正(Bit alignment)和字校正(Word alignment)2个模块,如图3所示,并以5个周期作为基本时间单位进行去偏移操作。Bit alignment模块通过控制Idelay硬核的dlyce和dlyinc两输入信号,对每个数据线都进行精确的线延迟,使采样时钟沿正好位于各自信号数据窗的中心位置。各个数据通道的Bit alignment调整完成以后,分别给其Word alignment模块发送ready信号,然后Word alignment模块通过Bitslip字偏移核进行字调整,使各信号线的并行输出数据中出现同步字匹配,即“0011”,表明采样后的数据分别为“0000”、“0000”、“0011”、“1111”和“1111”,从而接收端的各信号线的并行输出都保持同步,此时即可认为接收端已完成DPA功能,两FPGA之间可以发送有效数据。
当其支持内128 bit位宽格式时,输入的串行数据被转换为8 bit位宽的内部并行格式,训练序列为“00000000_00000000_00001111_11111111_11111111”,同步字定为“00001111”, 其DPA的具体实现过程不再详述。
2 DPA内部功能模块
2.1 Bit alignment位校正模块
Bit alignment校正模块的主要功能是对输入的串行流进行精确的线延迟,最终使采样时钟沿置于被采数据窗的中心位置。由于各数据流经过不同的传输路径后所产生的线延迟不可知,只知周期性的训练序列被采样输出5个4位并行数据,其集合为“0000”、“0001”、“0011”、“0111”、“1111”、“1110”、“1100”和“1000”,而且输出的5个4 bit并行数据不可能全为“0000”或“1111”,因此必存在某并行数据中同时存在‘0’和‘1’,如“0001”、“0011”等,此处为串行流电平的变化沿。在此基础上,Bit alignment位校正模块按照下述步骤进行:
(1)首先搜索出串行数据流电平的变化沿,具体实现方法为将解串输出的4 bit并行数据中相邻的bit位两两执行异或操作,得到3 bit的edge_info。若edge_info不全为‘0’,则采样数据处于串行流的‘0’和‘1’变化位置,以“0111”为例,其edge_info=“100”,如图4所示。
(2)每次循环训练就通过控制dlyce和dlyinc对信号线的延迟增加一级,并不断对新输出的4 bit位数据两两执行异或操作,得到edge_info_new,将edge_info_new与原edge_info逻辑右移一位的值比较。若比较的值不同,则重复(2),否则执行(3)。
(3)此时采样时钟位于前后bit位的边缘处,如图5所示。原输出的“0111”变为“0011”,edge_info由“100”变为“010”,表明后一bit位的左边缘被采样,称之为LEFT_EDGE状态。此时将处于该状态的线延迟级数记为counter1,并将edge_info_new值赋给edge_info。
(4)继续增加信号线的延迟,将新得到的edge_info_new与edge_info逻辑右移两位的值比较。若比较的值不同,则重复(4),否则执行(5)。
(5)此时采样时钟位于前后bit位的边缘处,如图6所示,记为前一bit位的右边沿,称之为RIGHT_EDGE状态,并记录处于该状态时的线延迟级数,记为counter2。
(6)将处于LEFT_EDGE与RIGHT_EDGE状态的延迟级数的中间位置即为数据窗的中心位置,通过控制dlyce和dlyinc信号不断递减其延迟值,最终使Idelay的延迟级数调整为(counter1+counter2)/2。位校正的处理流程如图7所示。
2.2 Word alignment字校正模块
当Bit alignment位校正完成以后,通过其ready信号告知Word alignment模块,采样时钟已置于各数据线的数据窗的中心位置,可以对并行输出数据进行字调整。在DPA过程中,发送端将每20位的训练序列分为“0000”、“0000”、“0011”、“1111”和“1111”,以5次串化过程为一次循环进行发送。各信号线上的训练序列经过不同的传输路径到达接收端,并经过Bit alignment位校正后,各串行流经过并行输出的4 bit数据不一定为“0000”、“0000”、“0011”、“1111”和“1111”这5种状态,因此需要对输出数据进行移位操作。
Word alignment字校正的目的是通过Bitslip操作,使解串输出的并行输出值出现同步字“0011”,从而使各信号线并行输出的4 bit数据为“0000”、“0000”、“0011”、“1111”和“1111”这5种状态,则接收端和发送端保持同步,接收数据有效。Word alignment将并行输出值与“0011”相比较,如果输出值为“0011”,则该信号线不需要进行字调整;否则激活一次bitslip操作,即对bitslip信号输入一周期的高电平,如此反复,直至输出的数据出现同步字“0011”,则认为该信号线的Word alignment字校正完成。其处理流程如图8所示。当各个信号线的Word alignment字调整完成以后,整个接收端的DPA训练就结束,此后本接口就可以用于传输应用数据。
3 工程实现与结论
在路由器设计中,负责包处理的FPGA之间的高速接口设计中就采用本DPA设计方案,发送端的输出时钟频率超过400 MHz,且数据线采用双边沿触发,则其单线传输速率大于800 Mb/s。在接口中采用16位数据线,则整个接口的传输带宽高达800 Mb/s×16=12.8 Gb/s,足以满足支持10 Gb/s接入处理的应用需求。图9为实际采样的动态相位调整效果图。
采用DPA实现方案,使通信接口根据当前接口中各数据线的物理状态,实时自动对各信号线进行去偏移操作,不断适应外部环境的变化,保证数据的可靠传输,因此具有很好的应用推广价值。
参考文献
[1] Frenzel,Louis.Serializer/Deserializer Creates Low-cost,Short 10-Gbit/s Optical Links[J].ElectronicDesign,2001,49(3):41.
[2] MONTROSE M I.电磁兼容和印刷电路板:理论、设计和布线[M].北京:人民邮电出版社,2002:44-46.
[3] TZE Yeoh.Dynamic phase alignment with chipSync technology in Virtex-4 FPGAs[J].2005-01-15,http://china.xilinx.com/publications/xcellonline/xc_v4chipsync52.htm.
[4] Xilinx.Virtex-4 User Guide ug070(v2.0)[R].San Jose,CA:Xilinx,2006.
[5] Optical Internetworking Forum.Implementation Agreement:OIF-SPI4-02.10[R].Fremont,CA:Optical Internetworking Forum,2003.