Rocket IO采集数据的同步时钟则是通过时钟/数据恢复电路来提取的,该电路由一个单片的PLL集成块实现,不需要任何外部组件。恢复电路从接收的数据流中提取出时钟的频率和相位,并通过20倍分频后送到输出管脚RXRECCLK上。
图10-7 Virtex-2 Pro系列Rocket IO模块说明
当高精度输入到FPGA中后,吉比特发送器对参考时钟输入管脚REFCLK的信号完成20倍倍频操作后,来作为自己的工作时钟。同样,该倍频器已集成在芯片中,不需要额外的组件。RXRECCLK和REFCLK二者之间没有固定的相位关系,且都为专用时钟信号,不能连接到其他管脚上作为他用。当使用4字节或1字节数据接收路径时,RXUSRCLK和RXUSRCLK2具有不同的频率,但是频率低的时钟下降沿要和频率高的时钟下降沿对齐。同样的关系也适用于TXUSRCLK和TXUSRCLK2信号。
例如,在Virtex-2 Pro系列FPGA中,由于Rocket IO模块内部将输入参考时钟20倍频,而Rocket IO模块可容忍的输入参考时钟抖动公差仅为40ps,可见参考时钟的抖动对其性能有直接影响。
典型的时钟输入如图10-8所示,外部时钟由差分或单端引脚馈入后,只经过一级全局时钟缓冲(BUFG)布设到时钟树上,再连接到Rocket I/O的参考时钟上,可最大幅度地减小抖动。
图10-8 Rocket I/O的时钟、复位连接示意图
2) 时钟和数据恢复器
如果没有数据存在,时钟/数据恢复器(CDR)电路会自动锁相到参考时钟上。为了使操作达到最佳性能,参考时钟的精度必须在100ppm之内。同时要满足供电系统的低噪声。如果有数据,则恢复电路会自动同步锁相到输入数据上。
3)发送器
发送器模块包括发送接口、8B/10B编码器、不均匀控制、发送FIFO、串行器、发送终端以及预加重电路。
(1)FPGA发送接口
发送接口可发送1、2或4个数据字符到发送器,每个字符都是8比特或10比特位宽。当选择8比特位宽时,多出的两比特就变成8B/10B编码器的控制信号。如果同时将8B/10B编码旁路后,10比特字符的顺序如图10-9所示。
图10-9 旁路掉8B/10B编码后的字符顺序
(2)8B/10B编码器
8B/10B编码器是一个可选的硬件组件,意味着它可以被旁路掉。在吉比特以太网、光纤信道以及infiniBand应用中,编码器都是用256个字数据符和12个控制字符。编码器在K-字符(单比特)后读入8个数据比特,由这9个比特数据生成10比特编码输出。当K-字符为高时,数据将被编码成8B/10B码中可用的12个K-字符组合中的1个;当K-字符为低时,8比特数据将被标准编码。
线路编码将8个数据位转换为不连续五个以上的―1‖或―0‖的10位比特码,以获取更好的直流平衡性,能提高数据传输速率、平衡码流中―0‖、―1‖概率,并且可以减小码流中长连―0‖和长连―1‖串。
8b/10b编码是属于基于块编码的mbnb线路码中的一种,很多串行标准Infiniband、光纤通道千兆以太网ATM ESCON和DVB-ASI都针对原始数据流采用8B/10B编码和解码。其编码过程是将8个比特分成5B/6B与3B/4B两部分分别编码,如图10-10所示。
图10-10 8B/10B线路编码原理
8b/10b编码集合中包括数据字串和控制字串两部分数据字串,包括256个可能数值。其中,包括可作为控制字串K23.7 K28.0~K28.7 K27.7 K29.7 K30.7的码字。当传送的字串作为控制字串时,由Rocket IO模块相应的控制字标志输入引脚,如TX_CHARISK指定该字为控制字串。尽管8B/10B编码后,数据的传输效率只有80%,但还是在