基于SERDES的甚短距离光传输链路层协议
发布时间:2008/5/29 0:00:00 访问次数:956
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串并转换过来的数据进行检测解码,通过接收到的
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串并转换过来的数据进行检测解码,通过接收到的