掌桥专利:专业的专利平台
掌桥专利
首页

一种基于SRIO分时复用和解复用的报文传输装置及方法

文献发布时间:2023-06-19 18:35:48


一种基于SRIO分时复用和解复用的报文传输装置及方法

技术领域

本发明涉及高速数据通信技术领域,具体为一种基于SRIO分时复用和解复用的报文传输装置及方法。

背景技术

在高速数据通信领域,SRIO(Serial Rapid IO)总线技术成为常用的高速控制总线,能够支持芯片间和板间通信,在通信系统中的应用越来越多。

随着通信技术及嵌入式系统的发展,现有的通信传输系统在FPGA方案设计中的SRIO链路部分,一个SRIO链路往往需要:1、传输实时性要求高、数据量大的多业务通道;2、传输可靠性要求高、数据量小的多控制通道;3、保证各功能能够同时进行,互不干扰。在多通道SRIO总线的环境下,如果采用CS(Chip Select)片选的方式,则每次只能选择一路SRIO总线,如果需要多路SRIO总线同时传输报文时,那么在片选时会冲突,出现大量丢包的现象,无法实现多路SRIO总线同时传输,不满足使用需求。

发明内容

本发明的目的在于提供一种基于SRIO分时复用和解复用的报文传输装置及方法,以解决上述背景技术中提出的问题。

为了解决上述技术问题,本发明提供如下技术方案:

一种基于SRIO分时复用和解复用的报文传输装置,所述装置采用装有FPGA芯片的两个单板电路来实现;

所述装置的输入通道总路数为L,业务通道路数为n,控制通道路数为m;

所述FPGA芯片包括本端芯片FPGA1和对端芯片FPGA2,所述本端芯片FPGA1和所述对端芯片FPGA2内部的结构是相同的,内部连接方式是相同的,放置方向是相反的;所述本端芯片FPGA1与n路业务通道和m路控制通道相连接;所述对端芯片FPGA2与所述本端芯片FPGA1相连接;

所述本端芯片FPGA1包括分时复用模块MUX、SRIO发送模块SRIO_TX、SRIO接收模块SRIO_RX和解复用模块DEMUX;

所述本端芯片FPGA1的分时复用模块MUX的输出端与所述本端芯片FPGA1的SRIO发送模块SRIO_TX的输入端相连接;所述本端芯片FPGA1的SRIO发送模块SRIO_TX的输出端与所述对端芯片FPGA2的SRIO接收模块SRIO_RX的输入端相连接;所述对端芯片FPGA2的SRIO接收模块SRIO_RX的输出端与所述对端芯片FPGA2的解复用模块DEMUX的输入端相连接;所述对端芯片FPGA2的解复用模块DEMUX的输出端与所述对端芯片FPGA2的分时复用模块MUX的输入端相连接;所述对端芯片FPGA2的分时复用模块MUX的输出端与所述对端芯片FPGA2的SRIO发送模块SRIO_TX的输入端相连接;所述对端芯片FPGA2的SRIO发送模块SRIO_TX的输出端与所述本端芯片FPGA1的SRIO接收模块SRIO_RX的输入端相连接;所述本端芯片FPGA1的SRIO接收模块SRIO_RX的输出端与所述本端芯片FPGA1的解复用模块DEMUX的输入端相连接。

根据上述技术方案,所述分时复用模块MUX包括缓存单元、拆包单元、寄存单元、写时钟、读时钟和轮询单元;

所述缓存单元用于将L路输入通道输入进来的SRIO接口数据送入FIFO存储器进行缓存以及对两个异步FIFO存储器进行乒乓缓存;

所述拆包单元用于对L路输入通道输入进来的SRIO接口数据中的n路业务通道数据进行拆包;

所述寄存单元用于将各L路输入通道对应FIFO存储器的写完成标志wr_done_flag从右到左依次存入写完成标志寄存器wr_done_reg中;

所述写时钟是各L路输入通道对应的速率;

所述读时钟是SRIO的用户时钟log_clk;

所述轮询单元用于用轮询计数器轮询是否有通道的写完成标志wr_done_flag有效,当出现两个及以上通道的写完成标志wr_done_flag有效时,开启优先级动态调整方式。

根据上述技术方案,所述SRIO发送模块SRIO_TX包括组包单元和发送单元;

所述组包单元用于完成对SRIO接口协议的组包;

所述发送单元用于发送时序设计,并将分时复用信号srio_mux发送到对端芯片FPGA2中。

根据上述技术方案,所述SRIO接收模块SRIO_RX包括解析单元和传送单元;

所述解析单元用于解析对端芯片FPGA2内部SRIO发送的分时复用信号srio_mux“’;

所述传送单元用于将解析后的分时复用信号srio_mux“’传送入解复用模块。

根据上述技术方案,所述解复用模块DEMUX包括识别单元、选择单元、写时钟、读时钟和解复用单元;

所述识别单元用于根据SRIO协议帧头识别通道号;

所述选择单元用于根据通道号选择对应的异步双口ram存储;

所述写时钟对应分时复用模块的读时钟log_clk;

所述读时钟是各L路输入通道对应的速率;

解复用单元用于完成从1路到L路的解复用,还原L路SRIO接口数据。

一种基于SRIO分时复用和解复用的报文传输方法,所述方法的步骤包括:

S1:将L路输入通道输入进来的SRIO接口数据送入FIFO存储器进行缓存以及对两个异步FIFO存储器进行乒乓缓存,对L路输入通道输入进来的SRIO接口数据中的n路业务通道数据进行拆包;

S2:将各L路输入通道对应FIFO存储器的写完成标志wr_done_flag从右到左依次存入写完成标志寄存器wr_done_reg中,利用轮询计数器cnt1对各L路输入通道对应FIFO存储器的写完成标志进行轮询和优先级动态调整;

S3:完成与对端的SRIO接口协议交互,即将分时复用模块MUX输出的复用信号srio_mux送入SRIO发送模块SRIO_TX,完成组包和时序设计后并转串成高速数据流txp/n后,送入对端芯片FPGA2的SRIO接口,对端处理完成后发送至本端芯片FPGA1的SRIO接收模块SRIO_RX,本端接收高速数据流rxp/n后,通过串转并和解析将其转换成SRIO接口的总线数据;

S4:对SRIO总线数据进行解复用,即将srio_demux数据送入解复用模块DEMUX,根据协议帧头识别通道号,根据通道号选择对应的异步双口ram存储,完成1路到L路的解复用,还原L路SRIO接口数据。

根据上述技术方案,在步骤S1中,所述L路输入通道包括n路业务通道和m路控制通道;

对L路输入通道中的n路业务通道数据进行拆包,设置一包的比特数为c比特;

一包的比特数可根据需求自定义,但是为了保证此类型数据的实时性,一般取值在200比特以内。

所述各n路业务通道比特流按小包依次在对应的两个FIFO存储器中来回缓存。

根据上述技术方案,在步骤S2中,所述轮询计数器cnt1根据当时轮询计数器cnt1的值来确定和累加选择读取数据的通道,并且轮询计数器cnt1轮询到两个及以上通道的写完成标志wr_done_flag有效时,开启优先级动态调整方式。

根据上述技术方案,所述分时复用模块MUX的状态机的状态流程图的具体表现为:

状态1:初始状态,开始时对轮询计数器cnt1和等待计数器cnt2等信号进行复位;当轮询计数器cnt1检测到写完成标志寄存器wr_done_reg有效时,触发进入状态2,若写完成标志寄存器wr_done_reg无效,则一直在状态1循环;

状态2:轮询状态,对各通道的写完成标志进行轮询;轮询方式为优先级动态调整,根据当时轮询计数器cnt1的值确定优先级,轮询计数器cnt1从0开始循环计数,计数范围为0~p,当检测到写完成标志寄存器wr_done_reg[cnt1]有效时,轮询结束,轮询计数器cnt1停止计数,触发进入到状态3,若写完成标志寄存器wr_done_reg[cnt1]无效,则一直在状态2循环;

状态3:等待状态,等待计数器cnt2从0开始循环计数,计数范围为0~q,同时根据分时复用的接口协议添加各通道的帧头,长度为1字节,当检测到cnt2为q时,触发进入到状态4,若cnt2小于q,则一直在状态3循环;

状态4:读取状态,将对应通道FIFO存储器的读使能rd[cnt1]拉高,读至FIFO空标志empty[cnt1]有效时,触发回到状态1,进入下一次轮询操作,否则一直在状态4循环。

根据上述技术方案,在步骤S3中,所述其中SRIO接口协议包括发起请求ireq、发起响应iresp、目标请求treq、目标响应tresp。

与现有技术相比,本发明所达到的有益效果是:

(1)本发明解决了传统CS片选方式无法在同一时间传输多路SRIO总线的难题,通过“提速+轮询+优先级动态调整”的方式,提出分时复用和解复用的完整解决方案,此方案在节省SRIO接口资源的前提下,能够解决CS片选通道冲突及大量丢包的问题,同时保证了各业务通道数据的实时性和各控制通道数据的可靠性;

(2)本发明设计的分时复用模块MUX和解复用模块DEMUX内部均配置了L路spi总线通道,支持n+m的灵活配置,只需要满足n+m<=L即可,其中n优选数据量大、实时性要求高的业务数据类型,m优选数据量小、可靠性要求高的控制数据类型。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1是本发明一种基于SRIO分时复用和解复用的报文传输装置及方法的架构图;

图2是本发明分时复用模块MUX的状态流程图;

图3是本发明本地SRIO与对端SRIO协议交互框图;

图4是本发明一种基于SRIO分时复用和解复用的报文传输装置及方法的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1-图4,本发明提供技术方案:

一种基于SRIO分时复用和解复用的报文传输装置,所述装置采用装有FPGA芯片的两个单板电路来实现;

所述装置的输入通道总路数为L,业务通道路数为n,控制通道路数为m;

所述FPGA芯片包括本端芯片FPGA1和对端芯片FPGA2,所述本端芯片FPGA1和所述对端芯片FPGA2内部的结构是相同的,内部连接方式是相同的,放置方向是相反的;所述本端芯片FPGA1与n路业务通道和m路控制通道相连接;所述对端芯片FPGA2与所述本端芯片FPGA1相连接;

所述本端芯片FPGA1包括分时复用模块MUX、SRIO发送模块SRIO_TX、SRIO接收模块SRIO_RX和解复用模块DEMUX;

所述本端芯片FPGA1的分时复用模块MUX的输出端与所述本端芯片FPGA1的SRIO发送模块SRIO_TX的输入端相连接;所述本端芯片FPGA1的SRIO发送模块SRIO_TX的输出端与所述对端芯片FPGA2的SRIO接收模块SRIO_RX的输入端相连接;所述对端芯片FPGA2的SRIO接收模块SRIO_RX的输出端与所述对端芯片FPGA2的解复用模块DEMUX的输入端相连接;所述对端芯片FPGA2的解复用模块DEMUX的输出端与所述对端芯片FPGA2的分时复用模块MUX的输入端相连接;所述对端芯片FPGA2的分时复用模块MUX的输出端与所述对端芯片FPGA2的SRIO发送模块SRIO_TX的输入端相连接;所述对端芯片FPGA2的SRIO发送模块SRIO_TX的输出端与所述本端芯片FPGA1的SRIO接收模块SRIO_RX的输入端相连接;所述本端芯片FPGA1的SRIO接收模块SRIO_RX的输出端与所述本端芯片FPGA1的解复用模块DEMUX的输入端相连接。

根据上述技术方案,所述分时复用模块MUX包括缓存单元、拆包单元、寄存单元、写时钟、读时钟和轮询单元;

所述缓存单元用于将L路输入通道输入进来的SRIO接口数据送入FIFO存储器进行缓存以及对两个异步FIFO存储器进行乒乓缓存;

所述拆包单元用于对L路输入通道输入进来的SRIO接口数据中的n路业务通道数据进行拆包;

所述寄存单元用于将各L路输入通道对应FIFO存储器的写完成标志wr_done_flag从右到左依次存入写完成标志寄存器wr_done_reg中;

所述写时钟是各L路输入通道对应的速率;

所述读时钟是SRIO的用户时钟log_clk;

所述轮询单元用于用轮询计数器轮询是否有通道的写完成标志wr_done_flag有效,当出现两个及以上通道的写完成标志wr_done_flag有效时,开启优先级动态调整方式。

根据上述技术方案,所述SRIO发送模块SRIO_TX包括组包单元和发送单元;

所述组包单元用于完成对SRIO接口协议的组包;

所述发送单元用于发送时序设计,并将分时复用信号srio_mux发送到对端芯片FPGA2中。

根据上述技术方案,所述SRIO接收模块SRIO_RX包括解析单元和传送单元;

所述解析单元用于解析对端芯片FPGA2内部SRIO发送的分时复用信号srio_mux“’;

所述传送单元用于将解析后的分时复用信号srio_mux“’传送入解复用模块。

根据上述技术方案,所述解复用模块DEMUX包括识别单元、选择单元、写时钟、读时钟和解复用单元;

所述识别单元用于根据SRIO协议帧头识别通道号;

所述选择单元用于根据通道号选择对应的异步双口ram存储;

所述写时钟对应分时复用模块的读时钟log_clk;

所述读时钟是各L路输入通道对应的速率;

解复用单元用于完成从1路到L路的解复用,还原L路SRIO接口数据。

一种基于SRIO分时复用和解复用的报文传输方法,所述方法的步骤包括:

S1:将L路输入通道输入进来的SRIO接口数据送入FIFO存储器进行缓存以及对两个异步FIFO存储器进行乒乓缓存,对L路输入通道输入进来的SRIO接口数据中的n路业务通道数据进行拆包;

S2:将各L路输入通道对应FIFO存储器的写完成标志wr_done_flag从右到左依次存入写完成标志寄存器wr_done_reg中,利用轮询计数器cnt1对各L路输入通道对应FIFO存储器的写完成标志进行轮询和优先级动态调整;

S3:完成与对端的SRIO接口协议交互,即将分时复用模块MUX输出的复用信号srio_mux送入SRIO发送模块SRIO_TX,完成组包和时序设计后并转串成高速数据流txp/n后,送入对端芯片FPGA2的SRIO接口,对端处理完成后发送至本端芯片FPGA1的SRIO接收模块SRIO_RX,本端接收高速数据流rxp/n后,通过串转并和解析将其转换成SRIO接口的总线数据;

S4:对SRIO总线数据进行解复用,即将srio_demux数据送入解复用模块DEMUX,根据协议帧头识别通道号,根据通道号选择对应的异步双口ram存储,完成1路到L路的解复用,还原L路SRIO接口数据。

对L路输入通道中的n路业务通道数据进行拆包,设置一包的比特数为c比特;

所述各n路业务通道比特流按小包依次在对应的两个FIFO存储器中来回缓存。

根据上述技术方案,在步骤S2中,所述轮询计数器cnt1根据当时轮询计数器cnt1的值来确定和累加选择读取数据的通道,并且轮询计数器cnt1轮询到两个及以上通道的写完成标志wr_done_flag有效时,开启优先级动态调整方式。

根据上述技术方案,所述分时复用模块MUX的状态机的状态流程图的具体表现为:

状态1:初始状态,开始时对轮询计数器cnt1和等待计数器cnt2等信号进行复位;当轮询计数器cnt1检测到写完成标志寄存器wr_done_reg有效时,触发进入状态2,若写完成标志寄存器wr_done_reg无效,则一直在状态1循环;

状态2:轮询状态,对各通道的写完成标志进行轮询;轮询方式为优先级动态调整,根据当时轮询计数器cnt1的值确定优先级,轮询计数器cnt1从0开始循环计数,计数范围为0~p,当检测到写完成标志寄存器wr_done_reg[cnt1]有效时,轮询结束,轮询计数器cnt1停止计数,触发进入到状态3,若写完成标志寄存器wr_done_reg[cnt1]无效,则一直在状态2循环;

状态3:等待状态,等待计数器cnt2从0开始循环计数,计数范围为0~q,同时根据分时复用的接口协议添加各通道的帧头,长度为1字节,当检测到cnt2为q时,触发进入到状态4,若cnt2小于q,则一直在状态3循环;

状态4:读取状态,将对应通道FIFO存储器的读使能rd[cnt1]拉高,读至FIFO空标志empty[cnt1]有效时,触发回到状态1,进入下一次轮询操作,否则一直在状态4循环。

根据上述技术方案,在步骤S3中,所述其中SRIO接口协议包括发起请求ireq、发起响应iresp、目标请求treq、目标响应tresp。

在本实施例中:

设定通道总数L=10,其中业务通道n=5,控制通道m=5。

S1:将10路输入通道输入进来的SRIO接口数据送入FIFO存储器进行缓存以及对两个异步FIFO存储器进行乒乓缓存,对L路输入通道输入进来的SRIO接口数据中的5路业务通道数据进行拆包;

S2:将各10路输入通道对应FIFO存储器的写完成标志wr_done_flag从右到左依次存入写完成标志寄存器wr_done_reg中,利用轮询计数器cnt1对各10路输入通道对应FIFO存储器的写完成标志进行轮询和优先级动态调整;

S3:完成与对端的SRIO接口协议交互,即将分时复用模块MUX输出的复用信号srio_mux送入SRIO发送模块SRIO_TX,完成组包和时序设计后并转串成高速数据流txp/n后,送入对端芯片FPGA2的SRIO接口,对端处理完成后发送至本端芯片FPGA1的SRIO接收模块SRIO_RX,本端接收高速数据流rxp/n后,通过串转并和解析将其转换成SRIO接口的总线数据;

S4:对SRIO总线数据进行解复用,即将srio_demux数据送入解复用模块DEMUX,根据协议帧头识别通道号,根据通道号选择对应的异步双口ram存储,完成1路到10路的解复用,还原10路SRIO接口数据。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120115627199