基于TLK2711的高速串行全双工通信协议研究
2013-08-10倪建军王建宇
倪建军 , 李 涛 , 王建宇
(1.中国空间技术研究院 北京 100086;2.北京空间机电研究所 北京 100076)
随着实时型相机成像系统获取图像数据量的迅速增加,使得相机传输图像数据的码率迅速增长,相应地对成像电路的数据传输系统也提出了更高的要求。高性能的数据传输系统迫切需要高可靠、高传输速率的数据传输技术来解决实时型相机数据传输问题[1-2]。
目前,处理器的数据处理速率已远高于外部数据总线传输速率。增加并行总线宽度可以提高芯片与芯片之间、背板与背板之间的数据吞吐量,但是总线数目的增多及传输速率的加快会使PCB布线的难度提高,并且增加了信号的延时或偏移。高速串行总线接口技术成为提高数据传输带宽的有效解决途径[3-4]。
为了解决上述问题,文章选用了外置SerDes器件TLK2711。系统之间正常通信,必须制定相应的协议。虽然符合规范的标准协议传输的速度和精度非常高,但是这些标准协议提供许多不同类型的服务,其结果是有大量的通信冗余数据,恶化了延时性能。如XILINX公司就针对自己FPGA内嵌的Rocket IO制定了串行互联AURORA协议,但该协议帧格式的定义存在弊端,会导致系统资源的浪费[5]。为了提高系统的可靠性与设备的可重复性并减少系统资源的占有率,文章设计了基于TLK2711的简单可靠的全双工通信协议。
1 TLK2711简介
文中以SerDes器件TLK2711为研究对象,TLK2711是吉比特高速收发器件家族的成员之一,支持1.6 Gbps到2.7 Gbps的串行数据率,提供超过2.16 Gbps的信号带宽,可应用于超高速、点对点的双向传输系统中。它采用的64引脚的VQFP封装,2.5 V的电压供电。TLK2711具有如下特点[6-7]:
1)串行传输速率为 1.6 Gbps到 2.7 Gbps,支持背板、铜线和光纤转换器接口;
2)采用2.5 V供电,具有360 mW的低处理功耗;
3)支持片内8B/10B编解码和逗号对齐(CommaAlignment);
4)串行输出摆动可调,接收差分输入门限最低可达200 mV;
5)输入低速参考时钟,片内PLL提供时钟综合;
6)支持热插拔保护,满足工业温度范围,有高等级器件。
TLK2711除上述特点外还具有一些其他的特点,如采用了单端信号,因此不需要参考电压,而信号的传送或接收也只需要一个片内的时钟合成电路,降低了成本和功耗。TLK2711的原理如图1所示。
TLK2711将发送的16位数据与控制码TKLSB与TKMSB经8B/10B编码器产生10位有效数据传到2:1的多路复用器,然后送到串行器,完成数据从并行到串行的转换,最后经带有预加重功能的发送器发送出去。TLK2711的接收基本上是其发送数据的逆过程。
图1 TLK2711原理框图Fig.1 Block diagram of TLK2711
2 全双工通信协议的制定
SerDes本身是相当灵活的设备,为了启动SerDes,首先要定义对齐序列、线路编码方法、物理链路,之后数据才可在两个收发器间相互传送。但是所传送的数据的含义还需要有更详细的定义,这就是协议存在的意义。什么数据传送到何处,数据的含义是什么,数据中需要插入什么特殊位,什么样的数据可以被丢弃,这些都需要预先定义一个协议来完成收发双方的相互协调。因此,为了保证链路上的数据正确的传输到接收端,并且被接收设备正确的解析,需要定义合理的传输协议。根据传输的特点和设计的实际需要,协议制定需要尽量减少协议的传输开销,简化收发双方的握手过程。
2.1 通信链路模型
文章制定的是全双工的点对点链路层串行协议,不存在寻址交换和复杂的上层应用,因此本文对于寻址交换不做考虑。,主要考虑的是:数据帧传输、链路初始化和链路管理。如图2所示是高速串行双工协议系统,整个协议只考虑了OSI(开放系统互连)参考模型中的链路层和物理层。
图2 高速串行协议模型Fig.2 High-speed serial protocol model
由TLK2711与高速连接器等构成通讯协议的物理层,实现发送数据的编解码与串并转换。即,将数据链路层给出的数据字节转换成可在物理介质上传输的合适信号,同样也负责将从物理介质上接收到的信号转换成可向数据链路层传递的数据字节。
其中FPGA实现数据链路层的功能,完成物理子通道的初始化、完成发送数据的帧封装、将接收到的数据进行解析帧处理、同时为上层协议提供简单的用户接口。图3是高速串行通讯链路层协议的结构框图,我们设计的协议力求链路层两端的接口简单明了,有利于用户对协议的操作。
对于应用层,用户可以不去了解协议的具体内容,只提供自己所要传输的数据即可,其他的传输功能都由链路层和物理层来完成,这样简化了用户的设计。
图3 链路层协议结构框图Fig.3 Block diagram of Link layer protocol
2.2 协议原语设计与链路同步
为了确保数据在协议通道中正确传输,必须在通道中传输一些控制信息。协议将定义的这些控制字符称为协议原语。本协议用8B/10B编码中的K字符和D字符组合来实现数据的发送与接收控制功能,表1给出了协议中自定义的协议原语。
表1 控制字符Tab.1 Control characters
系统上电后需要对SerDes进行初始化来建立一个有效链路,这样SerDes才能进行正确的数据收发。链路初始化过程中非常重要的一点就是数据对齐。在SerDes中,当并行数据经串行器变为串行数据时,与并行数据相关的字符边界就会丢失。当串行数据经解串器恢复为并行数据时,必须依赖数据对齐,链路才能够识别出与并行数据相关的字符边界。
SerDes采用扫描搜寻特定的比特序列,即comma字符序列实现数据对齐功能。comma检测电路通过扫描匹配comma字符序列来同步数据流,如果找到,解串器调整字符边界以匹配检测到的comma字符序列。扫描是连续进行的,一旦对齐确定,所有后续的comma字符均会发现对齐已确定。TLK2711仅识别包含了字符特征的序列 (b0011111或者b1100000)的控制字符作为识别数据边界的comma码。而在8B/10B编码中,包含了具有字符特征的序列(b0011111或者b1100000)仅有 K28.1、K28.5 和 K28.7,因此在协议中,定义唯一的同步字符/SP/为/D5.6/K28.5/作为对齐字符。TLK2711的comma检测电路通过检测/K28.5/字符序列将接收到的串行数据对齐到它原始的10 bit边界处,之后解码器将10 bit数据转换成8 bit数据。
3 全双工高速串行通信协议的实现
本次协议的逻辑实现是采用VHDL硬件语言描述,协议逻辑分为3个模块:发送模块、接收模块、控制模块。如上述图3协议链路层接口中所示,链路双方的初始化过程是协议的关键所在,不但要保证正确实现收发链路的同步,还要能够正确判断通讯过程中出现的错误,并正确处理,使数据交换能够顺利实现。
链路初始化过程是通过收发双方链路交互协议定义的原语来实现的,主要用到同步字符原语(/SP/)、同步应答字符原语(/SPA/)以及空闲字符原语(/IDLE/)。协议中设计了复位状态、初始化状态、链路检测状态与链路同步状态4个状态,如图4所示。
图4 链路初始化过程Fig.4 Link initialization process
在系统上电、复位或数据在传输过程中发生链路中断都会使链路置于复位状态,引起链路的重新初始化。在复位状态下,链路上的/SPA/应答标志位Spa_OK与链路同步标志位Lane_OK均为低,表明链路没有收到应答字符,链路也没有建立。之后会转入初始化状态,初始化状态分为两个子状态,即Inital_state1与Inital_state2。在Initial_state1中,发送端会不断发送同步字符/SP/,当接收端连续收到32个/SP/时,会置/SPA/应答标志位Spa_OK为高,之后转入Inital_state2。在Inital_state2中,发送端就会发80个连续的同步应答字符/SPA/与176个连续的同步字符/SP/的组合码,这样做的目的是保证对方链路能够有效的收到32个同步字符/SP/或16个/SPA/。当接收端在应答状态下收到了连续16个同步应答字符/SPA/,则链路同步标志位Lane_OK置高,链路进入同步状态Syn_state中,表明链路已建立。在Syn_state中,首先发送80个同步应答字符/SPA/,之后再发进行数据的正常收发。
实际中收、发链路是不可能同时建立,即必有先后顺序,所以链路双方不论谁先建立,先建立的链路再发一定数量的同步应答字符/SPA/,这样做的目的是使得另外一条链路在应答状态下能有效收到16个同步应答字符,如果链路还没有建立,可能就是链路出现问题,会由链路检测状态来处理。
在链路检测状态下,即图4中Lane_detect_state。如果链路在一定时间内没有收到帧头/SF/、帧尾/EF/或空闲字符/IDLE/,说明收、发链路必有一条没建立,要重新进入复位状态。如果链路收到是无效的字符K0.0和K31.7,即Rxd=?‘FFFF’或‘0000’且 RKLSB 与 RKMSB 均为高,则说明链路可能是发生误码,也可能是遇到物理连接中断等问题,分别处理误码和连接中断两种错误会提高协议的效率。所以在Lane_detect_state下如果连续三次接收到有效的数据,那么认为出现的错误是误码,则链路重新跳转到同步状态Syn_state,否则当累计收到3次的无效数据,则认为是链路发生严重的链接错误,链路会重新进入复位状态以便重新建立链接。
对于协议的上层应用来说,数据帧的发送是有间隙的,为了保持链路的激活状态,发送端在没有数据帧发送请求时,会不断向链路发送空闲字符(IDLE),接收方识别IDEL字符后,作抛弃处理。
4 测试与验证
本次双工协议的测试硬件互联如图5所示,采用4根2米长的同轴电缆互联。为了简单明了,链路双方发送渐变数,图6是使用ChipScope抓取的数据传输图。图中(a)是链路初始化过程接收端的时序图,链路在Spa_OK高有效之前,链路接收到的码字是不稳定的,当收到32个同步字符后(即十六进制C5BC),Spa_OK会置高,之后收到16个同步应答字符(即十六进制2CBC),Lane_OK置为高有效,高有效之后还会收到一段同步应答码字,然后转入正常数据收发。图(b)是图(a)放大后的时序图,十六进制5CFB为帧头,后面为渐变数。
图5 协议测试互联系统Fig.5 Protocol testing interconnected system
图6 链路建立过程中数据的收发图Fig.6 Link establishment process of sending and receiving data
在对TLK2711做误码率测试时,当链路双发建立后,链路双方发送伪随机数。通过接收端进行监控收到的数据是否为所发送的数据。我们在控制器FPGA中作误码计数器,对误码标志位进行计数,来统计传输数据的误码率。
测试时,发送时钟为125 MHz,串行数据率为2.5 Gbps,用时 2 小时,发送数据总量 2.5×2×3 600×109=1.8×1 013 bit。接收端误码标志位一直为高,表明发送的伪随机数均被正确接收,没有出现无码。所以误码率BER=出错位数/总传输位数<1/1.8×1013=5.56×10-14。
5 结 论
针对并行总线在数据吞吐量与总线宽度提高出现的问题,实时型成像电路系统对数据误码率小,系统小型化与通用化的需求,文章采用SerDes器件TLK2711可以有效解决空间相机数据传输容量的与误码率的问题。
同时,针对相机成像系统对数据传输的高可靠性要求,文章制定的全双工通信协议尽量做到最简化,实测无码率低于10-12,可靠性高。同时,简单可靠的协议有效的减少了研发所占用的时间,减少维护工作量,提高了设备的利用率。
[1]张达,徐抒岩.高速CCD图像数据光纤传输系统[J].光学精密工程,2009,17(3):670-673.ZHANG Da,XU Shu-yan.High-speed CCD image data fiber transmission system[J].Optics and Precision Engineering,2009,17(3):670-673.
[2]张贵祥,金光,郑亮亮,等.高速多通道CCD图像数据处理与传输系统设计[J].液晶与显示,2011,26(3):397-403.ZHANG Gui-xiang,JIN Guang,ZHEN Liang-liang,etal.Design of high-speed and multi-channel CCD image data processing and transmission system[J].Chinese Journal of Liquid Crystal and Displays,2011,26(3):397-403.
[3]高志,黄生叶.基于FPGA的通用高速串行互连协议设计[J].计算机测量与控制,2009,17(9):1826-1829.GAO Zhi,HUANG Sheng-ye.Design of high-speed serial interconnection protocalbased on FPGA[J].Computer Measurement&Control,2009,17(9):1826-1829.
[4]吴威,苏海冰.RocketIO的高速串行通道设计与验证[J].单片机与嵌入式系统应用,2008(2):9-11.WU Wei,SHU Hai-bing.Design and validation of high-speed serialchannelbasedonRocketIO[J].Microcontroller&Embedded Systems,2008(2):9-11.
[5]杜旭,于洋,黄建.基于FPGA的高速串行传输接口的设计与实现[J].计算机工程与应用,2007,43(12):94-96.DU Xu,YU Yang,HUANG jian.Design and implementation of high-speed serial transmission interface based on FPAG[J].Computer Engineering and Applications,2007,43(12):94-96.
[6]Texas Instruments.TLK2711 1.6 to 2.7Gbps transceiver datasheet[Z].2001.
[7]George J,Yu P,Koga R.Single event effects and total dose test results for TI TLK2711 transceiver[J].IEEE REDW,2008:69-75.