时间:2023-03-21 16:50:48
序论:在您撰写FPGA的双路FC数据合并输出模块设计时,参考他人的优秀作品可以开阔视野,小编为您整理的1篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
0引言
随着计算机技术、通信技术和网络构建技术的发展,航空电子设备、武器装置、飞机控制等电子系统也趋于完善和复杂,飞机的性能有了很大的提高,飞机内各种设备的集成和复杂性越来越高,机内设备间的通信需求也更加迫切,其功能、性能的正确性、可靠性将直接影响飞机的飞行,FC由于其强实时性、高可靠性、高带宽、低延迟的特点被广泛应用于航空电子领域中[1]。在机载环境中构建FC网络的初期阶段,由于FC网络的复杂性和高数据带宽的特征,若能在机载应用环境中对FC网络中传输的FC数据进行长时间、高可靠性的实时记录、高速采集将对分析和研究FC网络的功能、性能,定位和排除网络中潜在的故障有着积极的推动作用[2]。从以上的实际需求出发,文中主要讲述了一款机载光纤通道数据采集记录器中的数据处理模块的设计。
1系统统总体结构
机载光纤通道数据采集记录器对来自飞机上相关设备的FC数据进行完整性检测和余度去除,同时该采集设备接收IRIG-B时间码信号,并对接收到的每个FC数据附加IRIG-B码等时间信息,将符合要求的FC帧数据通过千兆以太网输出给机载数据记录系统和100%完整的存储在机载光纤通道数据采集记录器的固态存储盘中;记录在固态存储盘中的数据待飞行结束后再由地面卸载设备卸载后,供事后处理[3]。记录器整体框图如图1所示。光纤数据接收模块以fpga为处理核心,主要完成由fc通信交换机传送过来的两路FC数据的采集工作,并对采集到的两路FC数据,进行余度选择,然后对余度选择后的数据分别采用两种不同的过滤机制进行过滤(可以通过各自的配置寄存器对过滤机制进行独立配置),加以标志和区分后,将处理好的数据发送到数据处理模块进行处理[4]。数据处理模块完成两路FC数据的接收缓存以及组帧控制等工作,该模块也采用FPGA技术来实现,数据处理模块和光纤数据接收模块之间的互联采用Aurora接口,每路FC接口使用一路Aurora接口。本文主要设计了机载光纤通道数据采集记录器中的数据处理模块,而数据处理模块目的是实现两路FC数据合并后进行高效、稳定地传输,经过对系统功能和性能要求进行分析,设计了如图2所示模块方案,该数据处理模块主要由AuroraIP模块、FC数据接收模块、调度控制模块、输出控制模块以及缓存模块所组成,所有模块都在一块FPGA上完成。根据逻辑资源的评估及系统功能需求与功耗的考虑,设计选用XLINX-7系列的XC7Z045-FFG900I实现,该芯片是目前XLINX推出的基于SoC架构开发的低功耗的FPGA,在性能上完全满足目前设备设计需求。
2数据处理模块个子模块详细设计
该模块主要由Aurora模块、FC数据接收模块、调度控制模块、输出控制模块以及缓存模块所组成。Aurora模块主要实现对FC数据的高速串行传输,采用Aurora8B10B编码方式;FC数据接收模块用来接收从Aurora模块进来的axi_stream接口数据,并且将帧写入到缓存模块中;缓存模块主要缓存长度信息、帧长错误标志和帧负载;调度控制模块主要是进行两路Aurora输入数据调度,由两路指令FIFO的空信号控制状态机,实现两路并发情况下的数据乒乓调度;输出控制模块则主要完成两路并行输入数据的串行输出控制并按照要求调整输出帧格式。
2.1AuroraIP核实例化Aurora协议在2002年由Xilinx公司首次提出,是一个可扩展且轻量级的链路层串行传输通信协议,可以实现点到点的串行数据传输[5]。Aurora协议针对FPGA间的高速数据传输,能够为物理层提供透明接口。可以使用Vivado提供的IPCatalog工具完成IP核的定制与生成。调用该IP核不仅可以降低设计的难度,节省设计的时间,同时还能提高设计的可靠性和稳定性。在调用AuroraIP核时,各项参数需要根据实际情况和需求进行合理的选择[6]。下面介绍配置该IP核时需要注意的一些重要参数。(1)LaneRate:Aurora总线的传输速度,ZYNQ7000系列FPGA的Aurora总线可支持0.5~6.6Gbit/s内的任意值,此处设置为2.125Gbit/s。(2)GTRefclk:提供给Aurora所采用的GTH时钟,有多个速率可选,这里选择为106.25MHz。(3)INITclk:Aurora初始化时钟频率,此处采用50MHz。(4)DataflowMode:Aurora协议可支持双工模式和单工模式,根据设计的需求选择双工Duplex模式。(5)Interface:AuroraIP提供了两种数据接口类型,一种为帧模式,另一种为流模式。帧模式的用户接口采用AXI_Stream协议,支持对任意帧长度的封装,并提供了帧收发时的一些帧结构控制参数。流模式以数据流方式传输数据。前者使得数据流传输比较规范,但占用的资源比较多,实现难度大于后者[7-9]。本次设计采用帧模式接口类型。
2.2FC数据接收模块FC数据接收模块主要用来接收auroraIP模块通过的axi_stream接口数据,并且将帧的负载写入数据FIFO(dfifo)当中,将长度信息及帧长错误标志写入指令FIFO(ififo)当中。其中分两个FIFO缓存主要是因为如果放在一个FIFO里面,如果出现帧长错误后,丢帧这里就会很难控制,会造成错误向下蔓延,后续的帧可能都会传输错误,如果分开存储,出现传输的帧长错误后,仅丢掉当前帧就可以了,不再影响后续正确帧的传输。接收数据帧可以通过状态机来实现,如图3所示各个状态机功能详述如下:RX_IDLE:空闲状态。当不接收数据时,接收模块处于空闲状态,当接收到接收数据有效信号时,状态机跳转到接收数据状态;当接收dfifo满信号时,状态机从空闲状态跳到接收丢弃状态。RX_DATA:接收数据状态。当接收数据完成状态信号时,状态机从接收数据状态跳转到接收完成状态;当检测到帧长错误时,状态机从接收数据状态跳转到接收错误状态。RX_END:接收完成状态。在数据接收完成一个时钟周期后跳转到空闲状态。RX_DIS:接收丢弃状态。当检测到dfifo满信号时,跳转到该状态,当接收数据有效信号时,状态机从接收丢弃状态跳转到空闲状态。RX_ERR:接收错误状态。当检测到帧长错误时,跳转到该状态,当接收数据完成状态信号时,状态机从接收错误状态跳转到接收完成状态。
2.3调度控制模块该模块的主要功能是进行两路输入数据调度,由两路ififo空信号控制状态机,实现两路并发情况下的乒乓调度。
2.3.1乒乓调度原理乒乓调度是种经常应用于数据流控制的处理方法,常用于需要提高数据效率的地方[10]。其主要特点有:(1)实现数据的无缝缓冲和处理;(2)可节约缓冲区空间;(3)可实现低速模块处理高速模块。如图4为调度控制模块中乒乓调度的操作示意图。乒乓调度的主要流程为:输入FC数据流通过“输入数据分配器”将数据流轮流分配到两个数据暂存单元,两个数据暂存单元选择FIFO。在第一个周期,将输入的数据流缓存到“数据暂存单元1;在第2个周期,通过“输入数据分配器”的切换,将输入的数据流缓存到“数据暂存单元2”,同时将“数据暂存单元1”缓存的第1个周期数据通过“输出数据选择器”的选择,输送到“数据处理单元”中进行处理;在第3个缓冲周期通过“输入数据分配器”的再次切换,将输入的数据流缓存到“数据暂存单元1”,同时将“数据暂存单元2”缓存的第2个周期的数据通过“输出数据选择器”切换,输送到“数据处理单元”进行处理,如此循环。
2.3.2状态机乒乓调度模块内部逻辑采用状态机来实现FC数据的平滑输出,切换状态流程如图5所示,各个状态功能详述如下。IDLE:空闲状态,当缓存模块中的指令FIFO为空时,状态机处于空闲状态,当通路1的指令FIFO为非空,通路2的指令FIFO为空时,跳转到REQ0_a状态,开始读取1通道FIFO中的数据,当通路1的指令FIFO为空,通路2的指令FIFO为非空时,跳转到REQ1_a状态,开始读取2通道FIFO中的数据,当两个FIFO全为非空时,优先读取通路1中的数据,全部读取完成后再开始读取通路2。REQ0_a:通路1读状态,当接收到帧结尾标志rev_eof_flg0,表示通路1读取完成,跳转到REQ0_b状态。REQ1_a:通路2读状态,当接收到帧结尾标志rev_eof_flg1,表示通路2读取完成,跳转到REQ1_b状态。REQ0_b:通路1完成状态,该状态表示通路1读取完成,此时如果通路2的FIFO为非空时,则跳转到REQ1_a状态,开始读取通路2中的数据,如果通路1的FIFO为非空时,跳转到REQ0_a状态,继续读取通路1中的数据。REQ1_b:通路2完成状态,该状态表示通路2读取完成,当通路2的FIFO为非空时,跳转到REQ1_a状态,继续读取通路2中的数据。
2.4输出控制模块输出控制模块主要功能是完成两路并行输入数据的串行输出控制,在帧头前添加固定识别字以及用来区分来自哪个通道的通道号,并按照要求调整输出帧格式的顺序[11]。输出控制模块内部逻辑采用状态机来接收由数据FIFO来的FC数据,切换状态流程如图6所示,各个状态功能详述如下。图6输出控制状态机RX_IDLE:空闲状态,当通道1接收FIFO读使能信号或者通道2接收FIFO读使能信号为高电平时该状态机开始接收由缓存模块来的FC数据。RX_RD0:接收帧读状态0,接收固定识别字。RX_RD1:接收帧读状态1,获取通道号。RX_RD2:接收帧读状态2,获取帧长及帧错误标志。RX_WR0:接收帧写状态0,获取系统时标高32位。RX_WR1:接收帧写状态1,获取系统时标低32位。RX_WR2:接收帧写状态2,获取本地时标高32位。RX_WR3:接收帧写状态3,获取本地时标低32位。RX_PD:接收帧写等待完成状态,等待EOF,当接收到帧尾标志Rev_eof_flg时,跳转至接收帧完成状态RX_EOF。RX_EOF:接收帧写完成状态。
3模块调试与仿真验证设计通过
Questasim对每个模块进行功能仿真,具体仿真结果如下所述:如图7和图8所示为FC数据接收模块接收完整一帧的仿真波形图,由图7和图8可知,当上电后,状态机进入接收状态,图中rx_tdata为接收到的数据帧信号,当rx_tvalid=1时,开始接收数据,rx_tlast=1表示接收到数据帧的最后一个字节,由接收数据帧可以看出接收到的数据帧格式正确,包括帧计数,帧长度,时标信息,帧负载和帧尾EOF。仿真时发送了长度为16’h258,帧尾为32’hBC957575的FC数据帧,可以看到接收到的数据帧完全一致。rx_dfifi_wrdata和rx_ififo_wrdata为缓存到dfifo和ififo中的数据,由图7和图8可以看到接收到的数据帧会在下一个时钟周期后缓存到dfifo和ififo中,暂存到fifo中的数据帧完整并与接收到的数据帧完全一致。如图9所示为输出控制模块的仿真波形图,rev_buff_dout为输出的数据帧,可以看到在接收到的数据帧的头部添加了固定的识别字和区分来源于哪个通道的通道号,然后将组好的数据帧发送出去,符合所要求的数据帧的帧格式。
4结语
文中设计并实现了机载光纤通道数据采集记录器中的数据处理模块,通过Aurora接口将两路FC数据进行高效、稳定地传输,按要求调整帧格式,并合并为一路输出。该模块在数据接收和发送方面都具有较好的应用价值。
参考文献:
[1]高润莲,周晴.基于光纤通道数据收发系统的设计与实现[J].电子设计工程,2018,26(2):189-193.
[2]王晓澜.一种光纤通道收发器的设计与验证[D].电子科技大学,2021.
[3]田泽,徐文龙,许恒,等.FC光纤通道技术研究综述[J].电子技术应用,2016,42(9):143-146.
[4]焦新泉,杜凯旋,杨志文,等.Aurora协议的高速光纤存储系统优化设计[J].单片机与嵌入式系统应用,2022,22(4):88-91.
[5]苏秀妮.基于RocketIO高速串行通信接口的研究与实现[D].西安电子科技大学.
[6]王新刚.基于Aurora协议的万兆串行数据传输研究[D].河北科技大学,2019.
[7]许超.基于Aurora的高速数据记录装置设计与实现[D].中北大学,2021.
作者:康磊 王云云 任丽华 单位:西安石油大学计算机学院 西安翔腾微电子科技有限公司