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%,但还是在各类应用中获得广泛应用,其原因在于下面几个方面:
① 转换密度:其目的是保证在发送数据流中有足够的信号转换,以保证PLL正常工作。如果没有8B/10B 编码方法,数据中的一串1或0有可能引起接收时钟漂移或同步丢失,从而引起数据丢失。
② DC 补偿:8B/10B还保证对信号进行DC补偿,这意味着链路中不会随着时间推移而出现DC偏移,8B/10B编码将用户数据按字节8位块变换成多个10位的输出值,用这些值进行DC补偿。
③ 纠错:8B/10B编码遵循特定规则,根据这些规则,很多信号传输错误都可立即检测出来。
④ 特殊字符:8B/10B编码采用10位字符,其数量是8位字符空间中字符数的4倍,这样可以将特殊字符编码放入数据流中,它们不会被解码成数据字符,这些特殊字符可用作分隔符或其他命令。
8B/10B模块在设计中可以旁路掉,也可以用其余的线路编码方式代替,如64B/66B编码等。将发送器的TXBYPASS8B10B[n]控制信号设置成1,则可将发送端的线路编码模块旁路;在接收器中将RX_DECODE_USE设置为FALSE,就可把接收端的解码模块旁路。
在实际设计中,依据互连双方接口的电气标准的不同,有两种耦合方式:直流耦合和交流耦合。在直流耦合方式下,并不一定要求采用8b/10b编码,可以选择其它的线路码型或不用线路编码。但在较高的传输速率条件下,如2.5Gbaud以上,为了达到良好的抗干扰性能和低的误码率,应该考虑采用8b/10b编码。而在交流耦合方式下必须要选择8b/10b编码,否则接收端的漂移会使接收器无法正常工作。
(3)不均匀性控制(Disparity Control)
8B/10B编码器被连续的―-‖不均匀初始化,统一控制当前状态为不均匀性运行状态。TXRUNDISP表明了不均匀性的状态。
TXCHARDISPMODE和TXCHARDISPVAL可控制对每个接收字节使能不均匀性控制。例如,收发器可通过反向指定第二、第四字节的running disparity,产生以下序列:
K28.5+ K28.5+ K28.5– K28.5– 或 K28.5– K28.5– K28.5+ K28.5+
(4)发送FIFO
发送FIFO的长度为4,可通过配置旁路掉。只要当信号TXUSRCLK锁频到参考时钟REFCLK上,就可以使用FIFO,允许1个时钟周期的相位差。
(5)串行化输出接口
由于Rocket IO将参考时钟完成20倍频作为自身的工作时钟,因此数据需要经过并串转换后,才能通过TXP和TXN这一对差分端口发送出去,其中时隙0发送第一个比特,时隙19发送最后一个比特。TXP和TXN的电气连接特性是配置可改变的,可通过发送端的控制输入信号TXPOLARITY来实现。如果PCB上连线接反的话,可通过对TXPOLARITY信号的编程来修正。
(6)发送终端
发送器提供了发送终端,有75欧姆和50欧姆两种可编程终端,无需额外的片外终端。默认值为50欧姆。
(7)预加重
预加重的原理如10.2.3节所述,在Rocket I/O中,预加重电路有4个可选程度:10%、20%、25%以及33%,默认值为10%,可通过编程实现。选择最佳的预加重参数,可使发送器以最高波特率驱动20英寸的FR4。
4)接收器
接收器模块主要包括解串器、接收终端和8B/10B解码器。下面进行简要介绍。
(1)解串器
Rocket I/O收发器核通过RXP和RXN这一对差分接口接收差分数据,并通过芯片内部的锁相环从中提取时钟,再按照此同步时钟来采样数据,无需片外PLL芯片。从数据中提取的同步时钟包括频率和