1、电子技术应用 2023年 第49卷 第1期Embedded Technology嵌入式技术基于 FPGA 的 SRIO 多通道控制系统设计与实现*薛培1,官剑1,邵春伟2,张鑫刚1,郑思旭1(1.无锡华普微电子有限公司,江苏 无锡 214000;2.中国电子科技集团公司第五十八研究所,江苏 无锡 214000)摘 要:在板间互联及芯片互联方式上,SRIO 具有更高的带宽及实时性。使用 MSG(消息)接口的 HELLO 格式,发送端采用多接口设计方法,内部采用 Round-Robin 处理机制,实现了多通道接口在同时发送数据时共用一个 SRIO 接口的竞争处理;同时封装为多通道的输入输出的方式,
2、支持接口数量、时钟域的任意扩展。经过测试验证,该系统最大可实现 64 个不同时钟下通道的数据收发,单通道下包和包之间延时最低可到 4 s,在 SRIO 传输应用方向上,具有较好的应用价值。关键词:XILINX;SRIO;多通道;Round-Robin中图分类号:TP334.4 文献标志码:A DOI:10.16157/j.issn.0258-7998.222857中文引用格式:薛培,官剑,邵春伟,等.基于 FPGA 的 SRIO 多通道控制系统设计与实现J.电子技术应用,2023,49(1):107-113.英文引用格式:Xue Pei,Guan Jian,Shao Chunwei,et al
3、.Design and implementation of SRIO multiple channel control system based on FPGAJ.Application of Electronic Technique,2023,49(1):107-113.Design and implementation of SRIO multiple channel control system based on FPGAXue Pei1,Guan Jian1,Shao Chunwei2,Zhang Xingang1,Zheng Sixu1(1.Wuxi Hope Microelectr
4、onics Co.,Ltd.,Wuxi 214000,China;2.No.58 Research Institute of China Electronics Technology Group Corporation,Wuxi 214000,China)Abstract:In board and chip interconnection,SRIO(Serail RapidIO)has higher bandwidth and reliability than other protocol.In this paper,the HELLO format of the MSG(message)in
5、terface is used to multi-interface design method at the sending end,and the Round-Robin processing mechanism is used internally to realize the competition processing of the multi-channel interface sharing one SRIO interface when sending data at the same time.It supports the arbitrary expansion of th
6、e number of interfaces and the clock domain.After testing and verification,the system can realize the data sending and receiving of 64 channels under different clocks at most,and the delay between the single channel and the packet can be as low as 4s.It has good application value in the direction of
7、 SRIO transmission application.Key words:XILINX;SRIO;multiple-channel;Round-Robin0 引言随着嵌入式系统性能的快速提升,板间互连、板内芯片互连对数据带宽、可靠性、灵活性要求逐步提升,传统的并行传输方式已经很难满足实际的需求。Serial RapidIO(SRIO)高速串行总线协议,成为一种使用范围极广的高速协议1。SRIO 是一种基于数据包交换的互联体系结构,在芯片互联、实时视频传输、小型化系统等场合得到了广泛的使用2。在国内外有关 SRIO 文献的研究中,研究较多的有SRIO 和 FPGA 之间通信3、FPGA
8、实现多协议转换 SRIO设计4,本文即为研究多协议接口和 SRIO 之间的转换。本文以 XILINX 公司 FPGA 提供的 SRIO IP 为基础,设计了多通道发送和接收控制系统的设计方法,其中发送通道采用了一种 Round-Robin 数据处理方法,有效控制多通道数据同时发送时可能造成的数据拥塞。基于该设计方法而开发的 SRIO 多通道控制系统,经过仿真与调试,已用于某型号项目通信系统,达到了高带宽、低延时的效果,具有很好的通道扩展性。*基金项目:辽宁省科技厅联合开放基金机器人学国家重点实验室开放基金资助项目(2021KF2205)107Embedded Technology嵌入式技术ww
9、w.ChinaAET.com本系统采用MSG消息方式,利用MSG接口中的mailbox空间作为通道ID区分,采用该方法,相较于其他多接口SRIO设计中采用Nwrite/Nread的方法。具有以下优点:(1)无 需 占 用 SRIO paylod 区 域,提 高 了 单 个 包 的带宽。(2)最大支持 64 个通道的输入输出,具备良好的扩展性。(3)发送端采用 Round-Robin 机制,多协议接口具备优先级控制,相较于其他方法,在不同优先级通道同时发送数据时,可实现通道差异化。1 SRIO 简介SRIO 采用三层分级体系结构,该结构如图 1 所示。其中逻辑层位于最高层,定义了包的格式,包为端
10、点发起和完成事务提供必要的信息;传输层位于中间层定义了 SRIO 地址空间和在端点器件间传输包所需要的路由信息;物理层在整个分级结构的最底部,主要规定了物理层方式5。SRIO 数据包由包头、有效的数据载荷和 16 位 CRC校验组成6。包头的长度最大的有效载荷长度为 256 B。由于包长度短,因此传输延时较小,硬件上也易于实现,适合数字信号处理场合对传输延时要求较高的应用7。XILINX 的部分 FPGA 中4已经集成了 GTP、GTX或 GTH 等高速串行收发电路,这些是 FPGA 实现 SRIO高速传输的物理层基础。在 XILINX 的开发环境下,可直接调用 Serial RapidIO
11、gen2 IP 来 实 现 SRIO 的 LOG、BUF 及 PHY 三 层 结构8。在本文所述的系统中,IP 设置为 Condensed I/O 模式,Messaging 接口设置为 Separate Messaging Port。完成如上的设置,生成 IP 后,开放的主要接口为四组:MSGIREQ、MSGIRESP、MSGTREQ、MSGTRESP,这些接口间的信号流向和功能分别如图 2 和表 1 所示。本系统的包头使用 HELLO 包9中的 MSG 和 RESP包。包头格式见图 3。在该系统中,为了适应任意数量的发送通道和接收通道,需要将通道 ID 加入到 SRIO 包中。本系统采用了M
12、SG 包的 mailbox 参数和 RESP 包中特有的 TargetTID 参数来表示当前发送通道和接收通道的通道数信息。2 系统架构SRIO IP 开放的接口均为 AXI4-stream 接口10。其中 MSGIREQ 和 MSGIRESP 为发送控制处理逻辑模块所连接的接口,本地 SRIO 节点所有发送通道的数据均需要 转 换 为 这 两 组 接 口 的 HELLO 包。MSGTREQ 和MSGTRESP 接口为从对端 SRIO 接收到的接口,经过接收控制处理逻辑模块对 HELLO 包进行处理,转化为接收通道输出的数据。系统整体框架如图 4 所示。图 1SRIO 三层分级体系图 2SRI
13、O IP 接口框图表 1SRIO 接口功能表SRIO 接口MSGIREQMSGIRESPMSGTREQMSGTRESP方向本地 SRIO-对端 SRIO对端 SRIO-本地 SRIO对端 SRIO-本地 SRIO本地 SRIO-对端 SRIO功能发送数据发送数据-确认接收数据接收数据-反馈HELLO包类型MSGRESPMSGRESP图 3HELLO 帧头格式108Embedded Technology嵌入式技术电子技术应用 2023年 第49卷 第1期在发送控制处理逻辑,根据待发送的发送通道数信息(假设为 M 通道),将 M 填充到 MSGIREQ 包的 mailbox参数中,实现本地 SRI
14、O 的数据发送;发送完成后,发送通道(M)进入到等待 ACK 的状态。发送控制处理逻辑仍然可继续其他发送通道的数据发送。当 MSGIRESP 收 到 RESP 包(TargetTID 信 息 等 于M)时,发送通道 M 从等待 ACK 状态进入到收到 ACK 状态。此时发送通道 M 认为对端 SRIO 已正确接收上一次的发送数据。在 接 收 控 制 处 理 逻 辑 中,其 起 始 状 态 为 接 收 到MSGTREQ 接口的 MSG 包头。根据 mailbox 参数(假设为 N,最大可支持到 64),则该 MSG 包的接收通道为 N,同时提取 payload 数据转换为接收通道 N 的输出时序
15、,完成后,向 MSGTRESP 接口发送 RESP 包,其 TargetTID参数填充为 N,实现对端 SRIO 包的响应反馈。基于以上架构,可实现多路不同时域、不同速度的数据在 SRIO 链路之间的传输。2.1 通道接口时序本系统采用一种通用的发送通道和接收通道时序,如图 5 所示。接 口 由 6 个 信 号 组 成,分 别 是 时 钟 CLK、复 位RST_N、数 据 有 效 标 志 ENABLE、地 址 ADDR、数 据DATA、准备标志 READY,数据位宽为 16 bit。所有的信号均为 CLK 时钟下的同步信号,RST_N 低电平复位,ENABLE、ADDR、DATA 必须在 RE
16、ADY 为高时有效;ENABLE 为高时,地址 ADDR=0 时的 DATA 值为 CTRL 值,CTRL 值内含一次 SRIO 包的数据长度等信息,其中最高 bit 为 1 时意味着 SRIO 传输包有效,低位bit 代 表 着 包 的 包 长;ADDR=1 到 ADDR=N 范 围 内 的DATA 值 为 一 次 SRIO 传 输 包 的 有 效 数 据。由 于 一 个SRIO 包最大支持 256 B,则该地址位 N 最大为 128。当有多个不同时钟域、不同收发速度的数据接口接入到 SRIO 系统时,均可通过极简单的控制逻辑转换为该接口的时序,实现 SRIO 的快速应用。2.2 发送控制模块发送控制模块主要由双口 RAM、Round-Robin 模块和发送控制状态机三部分组成。发送接口数据首先按接口时序中的地址信号存入到发送双口 RAM 模块,等待后续模块读取。Round-Robin 模块用于实现所有通道发送的优先级顺序处理;发送控制模块则完成发送双口RAM 通道和 SRIO IP 接口(MSGIREQ 和 MSGIRESP)的转换。发送模块整体框架如图 6 所示。2.2.1 发送