中国电子科技集团公司第三十研究所 ,四川省,成都市, 610041
摘要:随着信号处理带宽和吞吐量的需求与日俱增,多片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 | TS1 | x”0000000000002d1e” | 同步序列1 |
x”070707070707071c” | |||
2 | TS2 | x”000000000000331e” | 同步序列2 |
x”070707070707073c” | |||
3 | FC_READY | x”0000000000004b1e” | 流控信息1 |
x”070707070707077c” | |||
4 | FC_FULL | x”000000000000551e” | 流控信息2 |
x”07070707070707bc” | |||
5 | DATA_SOP | x”0000000000000078” | 帧开始 |
x”07070707070707fb” | |||
6 | DATA_IDLE | x”000000000000001e” | 空闲 |
x”0707070707070707” | |||
7 | DATA_EOP | x”0000000000000087” | 帧结束 |
x”070707070707071c” |
1.1 链路通信同步
链路通信同步流程主要包括以下5个步骤:(1)在空闲状态下等待链路同步,链路同步完成后跳转到同步状态一;(2)在同步状态一下,若链路断开,则回到空闲状态;若发送TS1序列64个或接收到TS1序列8个,则跳转到同步状态二;(3)在同步状态二下,若链路断开或超时,则跳转到空闲状态;若发送TS2序列64个或接收到TS2序列8个,则跳转到流量控制状态;(4)在流量控制状态下,若链路断开或超时,则跳转到空闲状态;或收发流量控制信息完成,则跳转到同步完成状态;(5)在同步完成状态下,进行状态检测,或链路断开或收到同步序列1,则跳转到空闲状态。同步状态说明如表2所示:
表2 同步状态说明表
当前状态 | 跳转条件 | 下一状态 | 说明 |
空闲 | 等待链路同步 | ||
同步状态1 | 链路断开 | 空闲 | 接收同步序列1; 发送同步序列1 |
发送TS1序列64个; 接收TS1序列8个 | 同步状态2 | ||
同步状态2 | 链路断开或超时 | 空闲 | 接收同步序列2; 发送同步序列2 |
发送TS1序列64个; 接收TS2序列8个 | 流量控制 | ||
流量控制 | 链路断开或超时 | 空闲 | 发送流控信息; 接收流控信息 |
收发流控信息完成 | 同步完成 | ||
同步完成 | 链路断开或收到同步序列1 | 空闲 | 状态监测 |
1.2 数据接收
数据接收流程主要包括以下5个步骤:(1)在空闲状态下等待通信链路同步,链路同步完成后跳转到帧头处理状态;(2)在帧头处理状态下接收帧头序列,若收到帧开始序列时,跳转到数据接收状态;(3)在数据接收状态接收数据时,若收到错误控制符,则跳转到错误处理状态;若收到帧结束序列,则跳转到帧尾处理状态;(4)在错误处理状态进行错误数据处理时,若收到帧结束序列,则跳转到帧尾处理状态;若错误处理完成,则跳转到帧头处理状态;(5)在帧尾处理状态进行数据帧尾处理后跳转到帧头处理状态。数据接收状态说明如表3所示:
表3 数据接收状态说明表
当前状态 | 操作 | 跳转条件 | 下一状态 |
空闲 | 等待链路同步 | 链路同步完成 | 帧头处理 |
帧头处理 | 接收帧头序列 | 收到帧开始序列 | 数据接收 |
数据接收 | 接收数据 | 收到帧结束序列 | 帧尾处理 |
收到错误控制符 | 错误处理 | ||
帧尾处理 | 接收帧尾序列 | 直接跳转 | 帧头处理 |
错误处理 | 处理错误数据 | 收到帧结束序列 | 帧尾处理 |
1.3 数据发送
数据发送流程主要包括6个步骤:(1)在空闲状态下等待链路同步,链路同步完成后跳转到数据同步状态;(2)在数据同步状态下收发同步序列码,数据同步完后跳转到帧开始状态;(3)在帧开始状态下,发送帧开始序列或空闲序列,若流量控制信息准备好,则跳转到流量控制状态;若数据准备好,则跳转到发送数据状态;(4)在发送数据状态下发送数据,数据发送完成则跳转到帧结束状态;(5)在帧结束状态下发送帧结束符,发送完成则跳转到帧开始状态;(6)在流量控制状态下发送流量控制信息,发送完成则跳转到帧开始状态。数据发送状态说明如表4所示:
表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-),女,硕士,工程师,主要研究方向:网络安全