王松明
(中国电子科技集团公司第十研究所,四川 成都 610036)
高速数据交换的FPGA实现
王松明
(中国电子科技集团公司第十研究所,四川 成都610036)
针对数字信号处理系统前端数据采集与后端信号处理之间的数据流传输效率问题,介绍了基于RapidIO协议和Aurora协议在FPGA上实现高速数据交换的设计方案。该交换模块采用Aurora协议与光纤传输结合实现高速数据采集的点到点通信,并利用RapidIO协议的高效率解决数据高速交换问题。验证结果表明该方法在数据传输效率上达到了预先设计指标,其对提高数字信号处理系统处理带宽、改进系统性能具有较大的意义。
FPGA;RapidIO;Aurora;交换
随着模数转换器件以及各种信号处理器件性能的提高,复杂的高速实时数字信号处理系统已经可以实现[1],相应的板间及机箱间的数据交互要求越来越高,连接各种器件的总线问题成为实现高性能数字信号处理系统的关键。
为有效解决系统连接的瓶颈、实现互连架构的可重构,本文介绍了一种基于Aurora协议和RapidIO总线技术的数字信号处理系统高速数据交换设计方案,主要技术指标如下:
(1)支持18个通道前端高速数据输入,单通道最大支持6.5 Gb/s的传输,数据输入总带宽小于30 Gb/s;
(2)支持RapidIO 2.2标准,物理层采用4X串行RapidIO;
(3)支持4路4X RapidIO实现板卡内通信,单路数据率10 Gb/s,总带宽40 Gb/s;
(4)支持3路4X RapidIO实现板卡间通信,单路数据率10 Gb/s,总带宽30 Gb/s;
(5)支持2路4X RapidIO实现机箱间通信,单路数据率为10 Gb/s,总带宽为20 Gb/s。
数字信号处理系统的前端通常数据流量大且是点对点传输,Aurora IP用户接口简单并支持与光纤的无缝连接[2],是实现与数字信号处理系统前端数据互连的最佳选择之一。
Aurora协议是由Xilinx公司提供的一个开放、免费的链路层协议,可以用来进行点对点的串行数据传输。Aurora IP内部封装了RocketIO硬核,将RocketIO控制结构转化为简单的用户接口。同时,协议自带的信道初始化与时钟校正等功能有效保证了点对点传输的高速数据同步,能有效解决数据传输的瓶颈。
Aurora 64B/66B Core结构如图1所示[3],主要功能模块如下:
(1)通道逻辑:收发器初始化、控制字符编解码、通道数据错误检测;
(2)全局逻辑:初始化时通道对齐;
(3)接收侧用户接口:从通道中接收数据传输到应用、接收流量控制;
图1 Aurora 64B/66B Core结构图
(4)发送侧用户接口:从应用中接收数据并发送出去,发送流量控制及时钟补偿。
本设计需要实现9路4X RapidIO接口和18路Aurora协议接口,可选择的最佳FPGA是Xilinx公司的Virtex7系列,具体型号选择XC7VX690T。XC7VX690T有80个高速串行接口,特别适合高速串行互连设计。本设计需要实现54个高速串行接口,采用一片XC7VX690T就可以满足设计需求。
IP核的参考时钟不能有过大的抖动,考虑到本设计IP核传输数据速率都比较高,所以使用高精度的差分时钟用作IP核的参考时钟。根据Xilinx公司发布的用户指南,一组差分时钟只能给3个Bank或12个GTX/GTH作为参考时钟[4]。FPGA参考时钟设计如图 2所示,Aurora IP需要2组差分时钟,用于机箱间通信的RapidIO IP需要1组差分时钟,用于板卡内通信的RapidIO IP需要2组差分时钟,用于板卡间通信的RapidIO IP需要1组差分时钟,除此之外1组差分时钟用作系统处理时钟,总共需要7组差分时钟输入。
图2 FPGA参考时钟设计
XC7VX690T总共有32个全局时钟,即32个BUFGCTRL,这32个全局时钟可以分配为BUFG、BUFGCE、BUFGMUX。在实际使用时需要预留几个全局时钟,否则在布局和布线时会出现布线布不开等问题。软件生成的Aurora 64B/66B Core内部使用了1个BUFGCE,RapidIO Core内部使用了5个BUFG,如果直接使用IP,则仅IP就需要消耗63个全局时钟资源,因此需要设计IP共享时钟方案。
在4X 2.5 Gb/s线速模式下,RapidIO Core内部gt_clk、phy_clk、log_clk、cfg_clk四个时钟频率均为125 MHz[5],因此在RapidIO时钟共享设计方案时可以使用同一时钟驱动,如图 3所示。考虑到Core内部时钟不会在Core以外其他任何地方使用,为了节约全局时钟资源,将Core代码内部的所有BUFG替换为BUFH,这样每个Core可以节约4个全局时钟资源。
Aurora 64B/66B Core时钟共享方案如图4所示,12个或6个Core共用一组差分时钟作为参考时钟,每4个Core共用一个GTXE2_COMMON,所有Aurora Core所需的初始化时钟init_clk均来自系统处理时钟。同时为了节约全局时钟资源,将Core代码内部的BUFGCE替换为BUFHCE。
数据交换系统主要包含三个部分:Aurora IP、RapidIO IP和数据交叉电路。数据交叉电路实现多路Aurora接口到多路RapidIO接口的数据调度,主要功能目标为根据系统应用需求,实现多个Aurora端口的数据到多个RapidIO端口的任意交叉,以及不同通信目的地的RapidIO端口之间的数据任意交叉。数据交换系统框图如图 5所示。
使用异步FIFO对IP核输入输出接口完成数据跨时钟域的变换,可以避免其他模块进行异步时钟处理。由于Aurora 64B/66B Core与RapidIO Core数据总线大小端不一致,需要调整Aurora接口接收到的数据位序。RapidIO接口接收来自Aurora IP和其他RapidIO IP的数据,组包后缓存到异步FIFO中,再以RapidIO SWrite操作发送到RapidIO目的端。
图3 RapidIO Core时钟共享方案
图4 Aurora Core时钟共享方案
图5 数据交换系统框图
可由软件通过板卡内的4路RapidIO接口中任意一路配置Aurora 端口和其余RapidIO端口的寄存器,通过扩展RapidIO NWrite操作实现寄存器写访问和扩展RapidIO NRead操作实现寄存器读访问。
对于板卡内的RapidIO接口,每一个端口可能接收来自18路Aurora数据、来自板卡间的3路RapidIO数据以及来自机箱间的2路RapidIO数据,共计23路数据,经过调度后发送到目的端。对于板卡间或机箱间的RapidIO接口,每一个端口可能接收来自18路Aurora的数据,经过调度后发送到目的端。RapidIO数据调度处理结构如图 6所示。
图6 RapidIO数据调度处理结构
RapidIO SWrite操作一次发送256 B数据,基于双FIFO的乒乓操作是通过FIFO写逻辑与读逻辑的相互配合,将需要缓存的数据包连贯地送到RapidIO接口进行处理的一种控制方法。FIFO写逻辑先选择FIFO 0,待FIFO 0写满之后切换FIFO写逻辑选择FIFO 1,FIFO 1写满之后切换回写FIFO 0。FIFO 0写满之后才会启动FIFO读逻辑,先选择读取FIFO 0数据,FIFO 0空之后切换FIFO读逻辑选择FIFO 1,FIFO 1读空之后切换回读FIFO 0,如此循环。
数据调度采用周期轮询:板卡内的RapidIO接口可能接收23路数据,编号为1,2,3,…;各路数据按照1,2,3,…的顺序轮流接受服务,若当前通路有数据则输出到RapidIO,否则跳过本轮服务。
测试过程中随机选择一路Aurora数据,配置到板卡内、板卡间的任意一路RapidIO输出,通过判断数据的一致性来验证数据调度系统的正确性和有效性。通过图 7和图 8的对比,得到测试结果为:Aurora IP接收到的数据与RapidIO IP发送的数据完全一致。
图7 Aurora数据接收测试
图8 RapidIO数据发送测试
经过测试,本设计实现了Aurora接口数据输出到RapidIO接口的任意调度和RapidIO接口数据到RapidIO接口的任意调度,数据带宽满足要求。
本文针对高性能数字信号处理系统大规模实时数据交换的需求,结合具体的模块设计,给出了一种采用Xilinx公司的FPGA芯片实现多端口、高速率、大规模数据交换设计。在实际的数字信号处理系统中,本设计取得了很好的效果。
[1] 陈丽华.多DSP并行处理技术的研究[D]. 上海:华东计算技术研究所,2004.
[2] 李维明,陈建军,陈星锜. 基于Aurora协议的高速通信技术的研究[J]. 电子技术应用,2013,39(12):37-40.
[3] Xilinx.Aurora 64B/66B v11.0 logiCORE IP product guide[Z]. 2015.
[4] Xilinx.7 series FPGAs GTX/GTH transceivers user guide[Z]. 2015.
[5] Xilinx. LogiCORE IP serial RapidIO Gen2 endpoint v2.0[Z]. 2013.
An implementation of high-speed communication system on FPGA
Wang Songming
(The Tenth Research Institute of China Electronic Technology Group Corporation,Chengdu 610036,China)
Aiming at the problem of data transmission efficiency between front-end data acquisition and back-end signal processing of digital signal processing system,this paper designs a high-speed communication system based on FPGA with Aurora and RapidIO protocol. This method combined optical transmission and Aurora protocol to achieve high-speed communication of front-end data acquisition,and used the RapidIO protocol’s characteristic of high efficiency to implement high-speed data switch. The test results show that the data transmission efficiency of the method could reach the preset index,and it has great meaning in improving the signal processing bandwidth and performance of digital signal processing system.
FPGA; RapidIO; Aurora; switch
TN914
A
10.19358/j.issn.1674-7720.2017.24.028
王松明.高速数据交换的FPGA实现J.微型机与应用,2017,36(24):98-101.
2017-06-27)
王松明(1986-),男,硕士,工程师,主要研究方向:集成电路设计。