基于SERDES的甚短距离光传输链路层协议

时间:2007-12-28

1 引言

  随着人们对信息量的需要越来越大,甚短距离光传输技术(VSR,Verv Shotl Reach)不仅应用在网络通信中,也可以广泛使用于高速互连的各种应用。以RapidIO和Infinihand为代表的串行传输协议标准,在物理层采用光互连是其发展趋势之一。本文基于SERDES硬核,定制了一个串行点对点高速传输协议模型,可用于短距离的光互连系统。在SERDES的选择上,本设计选用了Rocket I/O作为协议的物理层。Rocket I/O是Xilinx公司嵌入到FPGA中的高速串行收发器硬核,单片可提供高达3.125Gb/s的I/O速率。

2 ROCket I/O简介

  Rocket I/O是一种灵活、功能可配置的千兆位级高速串行收发器.Xilinx公司将它集成在多款FPGA系列中,为多种串行通信标准提供支持,其中包括InfinibandTM、PCI express和光纤通道FC等。

  它的基本功能就是接收并行数据,发送高速串行信号;接收高速串行信号,进行时钟和数据恢复,准确无误恢复成并行数据输出。Rocket I/O采用了8B/10B编解码技术,预加重技术,comma字符检测等保证了数据的串化,解串过程的正确运行。R0cket I/O主要由物理媒介层和物理编码层构成。

  其中PMA主要包括串化器、解串器、时钟产生和恢复电路、发送和接收弹性缓冲区:PCS主要包括8B/10B编解码模块、时钟校正、CRC校验和通道绑定。Rocket I/O的工作原理是:在发送端的并行数据(可以是8、16或32bits位宽),插入CRC校验符号,使能8B/1OB编码功能,将待发的数据进行编码,之后送到Serializer串化器,终被转换为差分信号.Rocket I/O的的差分驱动器是以CML(Current Model Logic)实现的。在接收端接收差分信号经逆过程转换为原始并行数据。RocketI/O还提供了comma字符检测,用于数据的对齐。Rocket I/O的灵活的功能可配置模式,使得CRC校验功能,8B/10B编解码功能可以选择使用,也可以被旁路。

3 数据链路层协议的设计与实现

  现在我们将Rocket I/O作为物理层数据收发器,为数据通信提供并串/串并转换,然后在链路层做数据收发和控制逻辑模块,设计过程中需调用Rocket I/O模块,正确配置其参数。整个协议包含了OSI参考模型的链路层和物理层两层,对上层协议提供应用接口。在本设计当中引入8B/10B编解码,使链路上有充足的电平跳变,保证了接收设备正确进行时钟和数据恢复。由于本文只考虑数据从发端到收端的传输过程,不存在寻址交换和复杂的上层应用,因此本文对于流量控制和寻址交换不作考虑。那么定制这样一个链路层协议,主要考虑的就是:数据帧结构、链路初始化和链路状态控制等。

3.1 数据帧结构

  为了保证链路上的数据正确的传输到接收端,并且被接收设备正确的解析,需要定义协议的数据帧格式。根据甚短距离光互连技术的特点和设计的实际应用需求,协议定制需尽量减少协议的传输开销,简化收发双方的握手过程,这是与现有的针对网络传输的VSR协议不同的地方。本文引入8B/10B编码中的K字符,来定义协议原语:初始化字符(SP),初始应答字符(SPA),空闲字符(IDLE),帧头(SF),帧尾(EF)。帧头帧尾只占4个字节的开销,在协议的上层接口方面,设计了标识数据帧开始结束和有效的控制信号。

  其中SP、SPA用来初始化链路;SF、EF表示数据帧头和帧尾,用来把原始数据封装成数据包,由链路发送到目的地,在接收端帧头帧尾又被去除,解析成原始数据:在链路空闲状态下,IDLE字符将被发送,以维持链路的畅通。

3.2 链路初始化和状态控制

  每次通信都要经过建立通信联络和拆除通信联络两过程。这种建立起来的数据收发关系叫作数据链路。系统上电后需要对链路进行初始化来建立一个有效链路。初始化过程包括了对Rocket I/O的复位和对齐,以使Rocket I/O正常开始工作。之后发送端不断向链路上发送SP同步字符,如果接收端接收到同步请求,则回复一个同步应答信号。如果发送端收到这个应答信号,链路就被激活,表明可以收发数据了。链路初始化完成后,需要维持链路的畅通状态。而对协议的上层应用来说,数据帧的发送是有问隙的。为了保持链路的激活状态,发送端在没有数据帧发送请求时,会不断向链路发送空闲字符(IDLE)。接收方识别IDLE字符后,做抛弃处理。如果链路遇到系统复位或物理连接中断,链路自动回到初始化过程的状态。

3.3 协议的硬件实现

  根据以上对协议的设计要素和依据的叙述,作者设计了发送数据位宽位为16比特,能够进行数据发送接收全双工工作的协议结构。作者采用了VerilogHDL硬件描述语言,调用配置Rocket I/O模块,并对链路层设计的功能进行建模。链路层主要包括了发送逻辑、接收逻辑、链路初始化和链路状态控制模块。

  发送逻辑模块,在不同的链路状态下,向链路发送各种功能字符,并采用一个2比特宽度信号,分别指示被编码后的数据MSB和LSB是否为K字符。1表示为K字符,O表示为D字符。接收逻辑对从RocketI/O串并转换过来的数据进行检测解码,通过接收到的协议原语,来确定链路状态的跳转,并将数据从链路中解析出来。接收端同样有一个2位宽的信号,分别表示MSB和LSB的是否为K字符,还有一个comma字符指示信号,用于接收字节对齐。本设计的Verilog HDL源代码在ISE8.1li环境下,通过了综合,翻译映射和布局布线,终配置到Virex-II ProXC2VP20进行调试。

4 测试结果

  为了对协议的数据收发完整性和延迟验证,有必要采用一种简单有效的方法来模拟数据帧的发送请求。首先初始化一个单口RAM,在其周围填加适当的控制逻辑产生标识数据帧开始结束和有效的脉冲信号,以符合协议的接口标准,生成可用的数据帧。测试方案设置了两个协议模块,分别作为发送端和接收端。当链路初始化完成后,设置标识链路可用的信号来复位帧产生模块,使其开始生成数据帧,传输到发送模块。协议设计为全双工的工作模式,发送和接收模块的功能完全相同,因此两个模块可以互为发送接收数据。本方案首先在Modelsim中进行仿真.

  从仿真的时序图可以看到,链路初始化完成后进入空闲状态,此时链路上被空闲字符(7C7C)占据。一旦有数据发送请求,即转入数据发送状态。TX_SOF_N,TX_EOF_N和TX_SRC_RDY_N分别是标识数据帧的开始、结束和有效的信号。要发送的是0001到0009的宽度为16位的数据帧。在链路上数据被加上帧头(5CFB)和帧尾(FDFE)之后封装为数据包。在协议的物理层,Rocket I/O将并行数据进行并串转换,通过差分驱动器发送到物理传输介质上。在仿真时序图上还可以观察到发送和接收到差分信号TXP、TXN与RXP、RXN。

  在测试方案的接收端,Rocket I/O将接收到的差分信号通过差分驱动器和串并转换,再次还原为并行数据信号。协议的接收逻辑模块将数据包解析,去掉帧头帧尾,并重新产生标识数据帧开始结束和有 效 的RX_SOF_N、RX_EOF_N、RX_SRC_RDY _N信号。数据包解析完毕后,链路再次转入空闲状态,等待下一个数据帧的到来。

  本测试方案通过综合,翻译映射和布局布线流程后,到virtex-II PrO XC2VP20中,差分信号的输入输出使用SMA接口互连。并将数据信号输出到指示灯。通过观测指示灯亮灭状况确定了终接收的数据是正确的。数据收发延迟包括协议引擎延迟和物理层延迟,总共为42个时钟周期,其中物理层延迟为31个时钟周期,占总延迟的73.8%。因此作为物理层的SERDES延迟是影响协议总延迟主要因素。

5 结论

  在芯片级或板级甚短距离光互连系统中,要求数据传输有比较高的速率和实时性。本文基于这种需求设计了这样一种串行点对点的协议原型,可完成基本的通信需要。它的特点是协议开销和收发延迟都很小,数据帧只有4个字节的开销,上层接口信号简洁,易于上层应用的使用。协议延迟主要集中在物理层的SERDES,如果使用性能更好的SERDES取代RocketI/O,可进一步降低接口延迟。为了取得更好性能,协议设计的进一步工作可以引入流量控制机制和延迟隐藏策略,也可以基于原型设计更加复杂的带有寻址交换功能的协议,如光互连内存服务器中的内存阵列访问协议。



  

参考文献:

[1]. SPA datasheet https://www.dzsc.com/datasheet/SPA_1679598.html.
[2]. SMA datasheet https://www.dzsc.com/datasheet/SMA_1054310.html.


上一篇:超级电容提高移动电话的音频质量和电源性能
下一篇:关于IPv6嵌入式网络的使用与技术支持

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料