摘要:随着信号处理带宽和吞吐量的需求与日俱增,多片FPGA协同工作成为一种发展趋势。FPGA片间通信必然成为一个研究热点,特别是不同厂商FPGA间的通信。基于FPGA串行收发器,利用8B/10B编码,实现了链路同步、数据收发以及流量控制。通过板间验证表明:该设计与实现的通信接口稳定可靠,单对收发器通信速率可达10Gbps,并且可进行多路扩展应用,可应用于40G、100G等高速通信。
关键词:FPGA;8B/10B编码;高速收发器
DESIGN AND INPLEMENTATION OF COMMUNICATION INTERFACE BASE ON FPGA SERIAL TRANSCEIVER
Ye Yun-feng, Ren Ji-kui, Huang rui, Yuan jun
(No.30 Institute of CETC, Chengdu Sichuan 610041, China)
Abstract:With the demand of signal processing bandwidth and throughput increases, multi-chip FPGA cooperative work becomes a trend. FPGA inter-chip communication must become a research hotspot, especially the communication between different FPGA of manufacturers. On the basis of FPGA serial transceiver, the link synchronization, data sending and receiving and traffic control are realized by using 8B/10B coding. The inter-board verification shows that the communication interface is stable and reliable, the communication rate of single pair transceiver can reach 10Gbps, and can be applied to high speed communication such as 40Gbps or 100Gbps.
Key words:FPGA; 8B/10B code; High-speed transceiver
0 引言
随着云计算与大数据技术的发展,用户对信息传输的需求不断增长,基带信号处理的带宽和吞吐量需求与日俱增[1]。基于片上网络的多核处理器硬件设计和复杂程度不断增加,多片FPGA的设计应运而生。并行化处理机制需要在FPGA芯片间进行高速数据传递。FPGA厂商都有自己芯片间的互联互通协议。然而不同厂商间FPGA间的通信就需要公共的通信协议。如PCIE、interlaken等。PCIE由于有复杂的协议支持,需要的开销太大,不适用于不同厂商FPGA的片间通信[2]。Interlaken虽然比PCIE的协议简单,得需要做复杂的控制[3]。为了克服现有公共协议在FPGA片间通信上的缺点,本文提出了一种基于FPGA串行收发器的方法,利用8B/10B编码,实现了链路同步、数据收发以及流量控制等,解决了不同厂商FPGA片间的高速接口通信问题。并且在altera 与xilinx FPGA片间得以验证,单对收发器间通信稳定, 且速率可达10Gbps。该设计还可进行多路扩展应用,可应用于40G、100G等高速通信。
1通信接口设计与实现
本文基于altera 与xilinx FPGA串行收发器,通过设计一种链路通信同步、两端数据接收和发送、两端流量控制机制来完成片间高速接口通信。其接口示意图如图1所示:
图1 接口通信示意图
所有机制全部由码流实现,数据编码[4]如表1所示:
1.1 链路通信同步
链路通信同步流程主要包括以下5个步骤:(1)在空闲状态下等待链路同步,链路同步完成后跳转到同步状态一;(2)在同步状态一下,若链路断开,则回到空闲状态;若发送TS1序列64个或接收到TS1序列8个,则跳转到同步状态二;(3)在同步状态二下,若链路断开或超时,则跳转到空闲状态;若发送TS2序列64个或接收到TS2序列8个,则跳转到流量控制状态;(4)在流量控制状态下,若链路断开或超时,则跳转到空闲状态;或收发流量控制信息完成,则跳转到同步完成状态;(5)在同步完成状态下,进行状态检测,或链路断开或收到同步序列1,则跳转到空闲状态。同步状态说明如表2所示:
1.2 数据接收
数据接收流程主要包括以下5个步骤:(1)在空闲状态下等待通信链路同步,链路同步完成后跳转到帧头处理状态;(2)在帧头处理状态下接收帧头序列,若收到帧开始序列时,跳转到数据接收状态;(3)在数据接收状态接收数据时,若收到错误控制符,则跳转到错误处理状态;若收到帧结束序列,则跳转到帧尾处理状态;(4)在错误处理状态进行错误数据处理时,若收到帧结束序列,则跳转到帧尾处理状态;若错误处理完成,则跳转到帧头处理状态;(5)在帧尾处理状态进行数据帧尾处理后跳转到帧头处理状态。数据接收状态说明如表3所示:
1.3 数据发送
数据发送流程主要包括6个步骤:(1)在空闲状态下等待链路同步,链路同步完成后跳转到数据同步状态;(2)在数据同步状态下收发同步序列码,数据同步完后跳转到帧开始状态;(3)在帧开始状态下,发送帧开始序列或空闲序列,若流量控制信息准备好,则跳转到流量控制状态;若数据准备好,则跳转到发送数据状态;(4)在发送数据状态下发送数据,数据发送完成则跳转到帧结束状态;(5)在帧结束状态下发送帧结束符,发送完成则跳转到帧开始状态;(6)在流量控制状态下发送流量控制信息,发送完成则跳转到帧开始状态。数据发送状态说明如表4所示:
2 通信接口验证与测试
在XILINX公司的VIVADO开发环境及ALTERA公司的QUARTUS开发环境中分别对代码进行综合、映射及布局布线。通过两家公司的逻辑分析议分别对链路同步,数据收发等流程进行了验证。链路同步验证如图2所示;
图2 链路同步(截图)
从图2中可以看出,在两端设计加载后,链路同步即可完成。ALTERA与XILINX侧互相收发数据验证如图3所示,从图3中可以看出两端数据收发与设计实现吻合,能够正常进行数据交互。最终通过测试议测试验证表明,此设计与实现能够实现两片不同厂商间FPGA之间的通信,并且单对收发器的通信速率过到了10Gbps;在测试过程中,通过复位来模拟异常操作,最终测试结果表明,在正常数据交互过程中,若发送端或接收端出现异常后,双方仍能重新恢复正常通信。
图3 数据收发(截图)
3结语
本文基于串行收发器实现了不同厂商FPGA片间通信接口链路的建立、数据交互与流量控制的设计。并且通过ALTERA与XILINX FPGA器件进行布局布线后进行板级测试验证。结果表明:该设计的通信接口稳定可靠,且接收和发送带宽在单对收发器上均可达到10Gbps。随着人们对通信速率的要求越来越高,此设计与实现还可进行多路扩展应用,以满足40Gbps,基至100Gbps的通信需求。
参考文献:
[1] 王文彬,肖玉杰,龙明.基于云移动技术的应急视频指挥系统[J].电视技术,2013,37(1) :161-164.
[2] PCI Express?Base Specification Revision 1.0a
[3] Interlaken_Protocol_Definition_v1.2
[4] ug476_7Series_Transceivers. Xilinx cop
作者简介:
叶云峰(1985-),男,硕士,工程师,主要研究方向:网络安全。
任继奎(1985-),男,学士,工程师,主要研究方向:网络安全。
黄锐(1984-),男,学士,工程师,主要研究方向:网络安全。
袁君(1988-),女,硕士,工程师,主要研究方向:网络安全