基于Aurora协议的双路冗余数据交换方法及系统

文档序号:1904463 发布日期:2021-11-30 浏览:24次 >En<

阅读说明:本技术 基于Aurora协议的双路冗余数据交换方法及系统 (Two-way redundant data exchange method and system based on Aurora protocol ) 是由 马文林 张国奇 闫森 王辉林 王春雷 陶威 高云龙 于 2021-09-15 设计创作,主要内容包括:本发明涉及一种基于Aurora协议的双路冗余数据交换方法及系统,其中该系统包括:第一Aurora协议模块Aurora-0、第二Aurora协议模块Aurora-1、接收侧模块Rx-top、去冗余模块Rd-arbiter、数据缓存模块dma-ctrl、数据整理发送模块Tx-engine、数据解析接收模块Rx-engine、数据分路发送模块Wr-arbiter和发送侧模块Tx-top。本发明使用了双路独立的工作接口,即所述第一Aurora协议模块Aurora-0和所述第二Aurora协议模块Aurora-1,提升链路中数据的准确性,并将优先完成校验的一路外部数据输入到所述去冗余模块Rd-arbiter,实现进行数据的缓存,能够控制数据吞吐量,不会造成数据的丢失,依据判断条件对缓存中的双路冗余数据进行判决,实现去冗余操作,此种传输方式提升了高速率下的数据稳定性。(The invention relates to a method and a system for exchanging double-path redundant data based on an Aurora protocol, wherein the system comprises the following components: the system comprises a first Aurora protocol module Aurora _0, a second Aurora protocol module Aurora _1, a receiving side module Rx _ top, a redundancy removing module Rd _ arbiter, a data caching module dma _ ctrl, a data sorting and sending module Tx _ engine, a data analyzing and receiving module Rx _ engine, a data shunting and sending module Wr _ arbiter and a sending side module Tx _ top. According to the invention, two independent working interfaces, namely the first Aurora protocol module Aurora _0 and the second Aurora protocol module Aurora _1, are used, so that the accuracy of data in a link is improved, one path of external data which is preferentially checked is input to the redundancy removal module Rd _ arbiter, the data is cached, the data throughput can be controlled, the data is not lost, the two paths of redundant data in the cache are judged according to judgment conditions, the redundancy removal operation is realized, and the data stability under high speed is improved by the transmission mode.)

基于Aurora协议的双路冗余数据交换方法及系统

技术领域

本发明涉及高速通信设备技术领域,尤其涉及一种基于Aurora协议的双路冗余数据交换方法及系统。

背景技术

伴随着5G等通信技术的普及,通信设备对数据实时性处理、传输速度、高带宽的需求逐渐升高,传统用于嵌入式系统中的低速传输总线,具有稳定性强且操作简洁等优点,但由于传输带宽的限制极易成为数据传输中的瓶颈;传统用于设备间的高速协议,具备高带宽、延迟低等优点,但由于接口通用性差、传输协议复杂、数据传输的通道逐渐增多,增加了开发的难度和成本。

为了应对通信设备高速发展的趋势,使得通信系统具备更高的模块化和集成度,保证传输链路中数据稳定的情况下,进行设备间高速数据交换,成为通信行业研究的热点。PCIE总线作为应用最广泛的计算机总线,其优势在于在提升了总线带宽和传输速率,采用DMA的方式,缓解了总线带宽与高速处理器之间的冲突,具备双通道的传输技术和扩展的灵活性。

目前,伴随着时钟速率的升高、电路走线及时钟延迟等因素,数据传输的确定性随之降低,为了实现提升链路中数据的准确性,亟需一种基于Aurora协议的双路冗余数据交换方法及系统。

发明内容

基于此,有必要针对上述技术问题,提供一种能够提高数据处理效率的基于Aurora协议的双路冗余数据交换系统及系统。

为此本发明第一方面提供了,一种基于Aurora协议的双路冗余数据交换系统,所述系统包括第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1、接收侧模块Rx_top、去冗余模块Rd_arbiter、数据缓存模块dma_ctrl、数据整理发送模块Tx_engine、数据解析接收模块Rx_engine、数据分路发送模块Wr_arbiter和发送侧模块Tx_top,所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1用于分别独立接收外部数据,所述接收侧模块Rx_top与所述第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1均连接,所述去冗余模块Rd_arbiter与所述接收侧模块Rx_top连接,所述数据缓存模块dma_ctrl与所述去冗余模块Rd_arbiter连接,所述数据整理发送模块Tx_engine和所述数据解析接收模块Rx_engine均与所述数据缓存模块dma_ctrl连接,所述数据整理发送模块Tx_engine和所述数据解析接收模块Rx_engine还均与PCIE连接,所述数据分路发送模块Wr_arbiter与所述数据缓存模块dma_ctrl连接,所述发送侧模块Tx_top与所述数据分路发送模块Wr_arbiter、所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1均连接。

在可能的优选实施方式中,所述数据缓存模块dma_ctrl包括第一数据切分模块Status、第二数据切分模块Internal、顺序缓存模块Read_req和排序输出模块Order,所述第一数据切分模块Status与所述去冗余模块Rd_arbiter连接,所述第二数据切分模块Internal与所述第一数据切分模块Status、所述顺序缓存模块Read_req、所述数据解析接收模块Rx_engine和所述顺序缓存模块Read_req均连接,所述顺序缓存模块Read_req与所述数据解析接收模块Rx_engine连接,所述排序输出模块Order与所述数据解析接收模块Rx_engine、所述去冗余模块Rd_arbiter连接。

在可能的优选实施方式中,所述数据整理发送模块Tx_engine包括数据打包模块Pkt_gen、数据清除模块Rdclr和数据读取发送模块Tx_trn,所述数据打包模块Pkt_gen与和所述数据解析接收模块Rx_engine连接,所述数据清除模块Rdclr与所述去冗余模块Rd_arbiter连接,所述数据读取发送模块Tx_trn与所述数据打包模块Pkt_gen和所述数据清除模块Rdclr均连接,所述数据读取发送模块Tx_trn还与PCIE连接。

在可能的优选实施方式中,所述数据缓存模块dma_ctrl包括第一数据切分模块Status和第二数据切分模块Internal;所述第一数据切分模块Status与所述数据分路发送模块Wr_arbiter和所述整理发送模块Tx_engine均连接,所述第二数据切分模块Internal与所述第一数据切分模块Status和所述整理发送模块Tx_engine均连接。

在可能的优选实施方式中,所述数据整理发送模块Tx_engine包括数据打包模块Pkt_gen、复位数据模块Dma_rst和数据读取发送模块Tx_trn,所述数据打包模块Pkt_gen与和所述数据解析接收模块Rx_engine连接,所述复位数据模块Dma_rst与所述去冗余模块Rd_arbiter连接,所述数据读取发送模块Tx_trn与所述数据打包模块Pkt_gen和所述所述复位数据模块Dma_rst均连接,所述数据读取发送模块Tx_trn还与PCIE连接。

在可能的优选实施方式中,本系统还包括数据输送模块Egress,所述数据输送模块Egress与所述数据分路发送模块Wr_arbiter和所述数据读取发送模块Tx_trn均连接。

在可能的优选实施方式中,本系统还包括寄存器Register,所述寄存器Register与所述数据分路发送模块Wr_arbiter和所述去冗余模块Rd_arbiter均连接。

本发明第二方面还提供了,一种基于Aurora协议的双路冗余数据交换方法,所述方法基于所述基于Aurora协议的双路冗余数据交换系统,所述方法包括以下步骤:

步骤S100:基于所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1分别独立接收外部数据,并将优先完成校验的一路外部数据输入到所述去冗余模块Rd_arbiter;

步骤S200:经所述去冗余模块Rd_arbiter的数据发起一次DMA,依次经数据缓存模块dma_ctrl和数据整理发送模块Tx_engine至PICE;

步骤S300:所述数据解析接收模块Rx_engine接收PICE返还的数据至一次DMA结束;

步骤S400:所述去冗余模块Rd_arbiter发起清除信号,并基于数据清除模块Rdclr将所述清楚信号经PCIE发送至与PCIE连接的PC端。

在可能的优选实施方式中,所述方法还包括:

基于所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1分别独立接收外部数据,并将优先完成校验的一路外部数据输入到所述去冗余模块Rd_arbiter时,生成第一时间戳。

在可能的优选实施方式中,所述方法还包括:所述去冗余模块Rd_arbiter检测到所述接收侧模块Rx_top的缓存中有数据时,并且此时的寄存器Register中的index有数据时,读取index和物理地址,并将实际传输长度拆分成每8K,发起一次DMA,其中,实际传输长度为64KB。

本发明的系统及方法实现技术效果如下:

上述基于Aurora协议的双路冗余数据交换方法及系统,依次设置第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1、接收侧模块Rx_top、去冗余模块Rd_arbiter、数据缓存模块dma_ctrl、数据整理发送模块Tx_engine、数据解析接收模块Rx_engine、数据分路发送模块Wr_arbiter和发送侧模块Tx_top。使用了双路独立的工作接口,即所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1,提升链路中数据的准确性。

进行数据传输时基于所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1分别独立接收外部数据,并将优先完成校验的一路外部数据输入到所述去冗余模块Rd_arbiter,然后经所述去冗余模块Rd_arbiter的数据发起一次DMA,依次经数据缓存模块dma_ctrl和数据整理发送模块Tx_engine至PICE。

接着,所述数据解析接收模块Rx_engine接收PICE返还的数据至一次DMA结束,最后,所述去冗余模块Rd_arbiter发起清除信号,并基于数据清除模块Rdclr将所述清楚信号经PCIE发送至与PCIE连接的PC端,进而实现进行数据的缓存,能够控制数据吞吐量,不会造成数据的丢失,依据判断条件对缓存中的双路冗余数据进行判决,实现去冗余操作,此种传输方式提升了高速率下的数据稳定性。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为一个实施例中基于Aurora协议的双路冗余数据交换方法的设备应用环境框图;

图2为一个实施例中基于Aurora协议的双路冗余数据交换系统的结构框图;

图3为一个实施例中基于Aurora协议的双路冗余数据交换方法中发送方向DMA的流程结构框图;

图4为一个实施例中基于Aurora协议的双路冗余数据交换方法中接收方向DMA的流程结构框图;

图5为一个实施例中基于Aurora协议的双路冗余数据交换方法的流程示意图;

图6为一个实施例中读写请求优先级仲裁流程图;

图7为一个实施例中读取BD的流程框图。

具体实施方式

下面对本发明的具体实施方式进行详细地说明。以下示例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。此外在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。

在一个实施例中,如图1所示,提供了一种基于Aurora协议的双路冗余数据交换系统和基于Aurora协议的双路冗余数据交换方法的应用场景图。

在一个实施例中,如图2所示,提供了一种基于Aurora协议的双路冗余数据交换系统,所述系统包括第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1、接收侧模块Rx_top、去冗余模块Rd_arbiter、数据缓存模块dma_ctrl、数据整理发送模块Tx_engine、数据解析接收模块Rx_engine、数据分路发送模块Wr_arbiter和发送侧模块Tx_top。

其中,第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1为符合Aurora协议的数据传输,通过此模块转换后的数据符合AXI端口协议,将数据传递给FPGA内部逻辑使用。

所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1用于分别独立接收外部数据,所述接收侧模块Rx_top与所述第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1均连接,所述去冗余模块Rd_arbiter与所述接收侧模块Rx_top连接,所述数据缓存模块dma_ctrl与所述去冗余模块Rd_arbiter连接,所述数据整理发送模块Tx_engine和所述数据解析接收模块Rx_engine均与所述数据缓存模块dma_ctrl连接,所述数据整理发送模块Tx_engine和所述数据解析接收模块Rx_engine还均与PCIE连接,所述数据分路发送模块Wr_arbiter与所述数据缓存模块dma_ctrl连接,所述发送侧模块Tx_top与所述数据分路发送模块Wr_arbiter、所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1均连接。

需要说明的是,后续实施例中的说明部分,如第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1、接收侧模块Rx_top、去冗余模块Rd_arbiter、数据缓存模块dma_ctrl、数据整理发送模块Tx_engine、数据解析接收模块Rx_engine、数据分路发送模块Wr_arbiter和发送侧模块Tx_top可能会采用后续字母标示来代替,如第一Aurora协议模块Aurora_0称之为Aurora_0,或者Aurora_0模块,其他如第二Aurora协议模块Aurora_1、接收侧模块Rx_top、去冗余模块Rd_arbiter、数据缓存模块dma_ctrl、数据整理发送模块Tx_engine、数据解析接收模块Rx_engine、数据分路发送模块Wr_arbiter和发送侧模块Tx_top则同理表示。

进一步地,其中Rx_top为Aurora侧的接收模块,其功能包括对数据进行解析,对两路Aurora数据进行缓存、比较、校验、数据流速控制操作,相对应的Tx_top为Aurora侧的发送模块,对两路数据进行校验,校验后的数据转换成AXI总线模式送出;Rd_arbiter模块的主要功能为对接收到的两路数据进行去冗余操作,会控制一次发送请求的数据长度和通道等,相对应的Wr_arbit模块将数据分别从两路独立的接口发送出去,会控制一次接收请求的长度等;dma_ctrl模块会对数据进行缓存、切片并发起dma的操作;Tx_engine模块会将待发送的数据包整理成PCIE标准包的格式进行发送,相对应的Rx_engine模块会对收到的PCIE数据进行解析。

在一个实施例中,如图2-图4所示,所述数据缓存模块dma_ctrl包括第一数据切分模块Status、第二数据切分模块Internal、顺序缓存模块Read_req和排序输出模块Order,所述第一数据切分模块Status与所述去冗余模块Rd_arbiter连接,所述第二数据切分模块Internal与所述第一数据切分模块Status、所述顺序缓存模块Read_req、所述数据解析接收模块Rx_engine和所述顺序缓存模块Read_req均连接,所述顺序缓存模块Read_req与所述数据解析接收模块Rx_engine连接,所述排序输出模块Order与所述数据解析接收模块Rx_engine、所述去冗余模块Rd_arbiter连接。

在一个实施例中,如图3所示,所述数据整理发送模块Tx_engine包括数据打包模块Pkt_gen、数据清除模块Rdclr和数据读取发送模块Tx_trn,所述数据打包模块Pkt_gen与和所述数据解析接收模块Rx_engine连接,所述数据清除模块Rdclr与所述去冗余模块Rd_arbiter连接,所述数据读取发送模块Tx_trn与所述数据打包模块Pkt_gen和所述数据清除模块Rdclr均连接,所述数据读取发送模块Tx_trn还与PCIE连接。

在一个实施例中,如图2-图3所示,所述数据缓存模块dma_ctrl包括第一数据切分模块Status和第二数据切分模块Internal;所述第一数据切分模块Status与所述数据分路发送模块Wr_arbiter和所述整理发送模块Tx_engine均连接,所述第二数据切分模块Internal与所述第一数据切分模块Status和所述整理发送模块Tx_engine均连接。

在一个实施例中,如图4所示,所述数据整理发送模块Tx_engine包括数据打包模块Pkt_gen、复位数据模块Dma_rst和数据读取发送模块Tx_trn,所述数据打包模块Pkt_gen与和所述数据解析接收模块Rx_engine连接,所述复位数据模块Dma_rst与所述去冗余模块Rd_arbiter连接,所述数据读取发送模块Tx_trn与所述数据打包模块Pkt_gen和所述所述复位数据模块Dma_rst均连接,所述数据读取发送模块Tx_trn还与PCIE连接。

更进一步地,图4中Status模块和Internal模块、Tx_trn模块的功能等同于图3的发送方向中的模块功能;Dma_rst模块的功能是当完成一个64K的数据发送时,发起一次复位,此模块对复位的请求进行一个缓存处理。

进一步地,Pkt_gen模块会对数据进行打包,并且组成符合协议的帧头和数据;Tx_trn模块控制数据的读取,发送给PCIE;Read_req模块是将数据包的顺序信息进行缓存;Order模块是对接收到的数据进行排序后输出;Rx_engine模块是将收到的数据进行解析缓存;Rdclr模块是将清除数据信号进行缓存。

在一个实施例中,如图4所示,所述基于Aurora协议的双路冗余数据交换系统还包括数据输送模块Egress,所述数据输送模块Egress与所述数据分路发送模块Wr_arbiter和所述数据读取发送模块Tx_trn均连接。Egress模块是对数据进行读取,读取后的数据送到Tx_trn模块中。

在一个实施例中,如图3和图4所示,所述基于Aurora协议的双路冗余数据交换系统还包括寄存器Register,所述寄存器Register与所述数据分路发送模块Wr_arbiter和所述去冗余模块Rd_arbiter均连接。

Register为寄存器模块,存放一些指令信息来进行读或者是写的操作信息;Status模块和Internal模块分别进行两次数据的拆分切片,并且发起DMA的操作。

综上所述,本发明所述基于Aurora协议的双路冗余数据交换方法及系统,依次设置第一Aurora协议模块Aurora_0、第二Aurora协议模块Aurora_1、接收侧模块Rx_top、去冗余模块Rd_arbiter、数据缓存模块dma_ctrl、数据整理发送模块Tx_engine、数据解析接收模块Rx_engine、数据分路发送模块Wr_arbiter和发送侧模块Tx_top。使用了双路独立的工作接口,即所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1,提升链路中数据的准确性,进行数据传输时基于所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1分别独立接收外部数据。

并将优先完成校验的一路外部数据输入到所述去冗余模块Rd_arbiter,然后经所述去冗余模块Rd_arbiter的数据发起一次DMA,依次经数据缓存模块dma_ctrl和数据整理发送模块Tx_engine至PICE,接着,所述数据解析接收模块Rx_engine接收PICE返还的数据至一次DMA结束,最后,所述去冗余模块Rd_arbiter发起清除信号,并基于数据清除模块Rdclr将所述清楚信号经PCIE发送至与PCIE连接的PC端,进而实现进行数据的缓存,能够控制数据吞吐量,不会造成数据的丢失,依据判断条件对缓存中的双路冗余数据进行判决,实现去冗余操作,此种传输方式提升了高速率下的数据稳定性。

在一个实施例中,如图5所示,本发明还提供一种基于Aurora协议的双路冗余数据交换方法,所述方法基于所述基于Aurora协议的双路冗余数据交换系统,所述方法包括以下步骤:

步骤S100:基于所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1分别独立接收外部数据,并将优先完成校验的一路外部数据输入到所述去冗余模块Rd_arbiter;

步骤S200:经所述去冗余模块Rd_arbiter的数据发起一次DMA,依次经数据缓存模块dma_ctrl和数据整理发送模块Tx_engine至PICE;

步骤S300:所述数据解析接收模块Rx_engine接收PICE返还的数据至一次DMA结束;

步骤S400:所述去冗余模块Rd_arbiter发起清除信号,并基于数据清除模块Rdclr将所述清楚信号经PCIE发送至与PCIE连接的PC端。

具体地,所述方法还包括:

基于所述第一Aurora协议模块Aurora_0和所述第二Aurora协议模块Aurora_1分别独立接收外部数据,并将优先完成校验的一路外部数据输入到所述去冗余模块Rd_arbiter时,生成第一时间戳。

具体地,所述方法还包括:所述去冗余模块Rd_arbiter检测到所述接收侧模块Rx_top的缓存中有数据时,并且此时的寄存器Register中的index有数据时,读取index和物理地址,并将实际传输长度拆分成每8K,发起一次DMA,其中,实际传输长度为64KB。

在一个实施例中,如图2-图4所示,外部数据从Aurora_0和Aurora_1两路独立的数据分别进入到Rx_top模块的缓存当中,当此模块中的缓存处理不及时便会触发流控操作,控制数据的流速;当缓存有数据的时候,此模块开始从两个缓存中读出数据进行数据头部、尾部、数据长度和crc的校验,两路数据中哪一路数据首先完成校验,便传输到下一级,对应的另一路数据进行丢弃操作,在此两路冗余数据便转换成一路数据。

为了保证链路的正常工作,增加时间戳的功能,通过计算时间戳的差值,便可得到链路的传输时间,若时间过长便进行超时上报;在数据从此模块中输出时,打上第一个时间戳。

如图3所示,首先,按照图3中的第①各步骤,Rd_arbiter模块检测到Rx_top的缓存中有数据时并且此时的寄存器(Register)中的index有数据时,便去读取index和物理地址;②将实际传输长度(64KB)拆分成每8K,发起一次DMA;③Status将8KB的DMA拆分成每4KB发起一次DMA;④Internal发起4KB的DMA;⑤Pkt_gen将组帧头所用tag信息发送给Read_req缓存;⑥Pkt_gen根据PCIE的最大请求长度将4KB拆分并组成符合协议的帧头放入缓存中供Tx_trn读取,tx_trn_sm读取帧头发送给PCIE核;接着,⑦Rx_engin接收PCIE读请求返回的数据,将接收帧的tag顺序信息送入Read_req,以便判断是否有响应超时;⑧Rx_engin将接收的数据送入Order模块进行排序;⑨Order模块将数据按请求帧的顺序进行排序后送给Rx_top模块;⑩将数据送入Rd_arbiterr,统计DMA长度;⑪Rx_engin根据实际接收长度和DMA 长度产生4KB DMA done 信号;⑫一直重复步骤②~⑫完成所有的8K数据的DMA,在此步骤中,对数据打上第二个时间戳;⑬完成数据的DMA后,发起清除信号;⑭将清除信号发送给PC端;最后跳转到等待状态,等待下次DMA的发起。

进一步地,如图2和图4所示,接收方向的数据按图4的序号顺序:①Wr_arbiter检测到前端有数据且有index可用,读取物理地址;②Wr_arbiter发起DMA(64KB);③Status将64KB的DMA拆分成每4KB一个DMA;④Internal发起4KB的DMA;⑤Pkt_gen根据PCIE的 帧的大小将4KB拆分并组成符合协议的帧头放入fifo供Tx_trn读取;⑥、⑦、⑧、⑨、 tx_trn_sm读取数据;⑩tx_trn_sm读取帧头和数据发送给PCIE核,并根据DMA的长度和实际发送的长度产生4KB DMA done信号;⑪Status重复③~⑩,直到所有的4KB DMA完成,产生64KB DMAdone 信号,此步骤中,对数据打上第三个时间戳。;⑫Wr_arbiter检测到64KB DMA done信号,帧长度及帧校验结果等信息帧写入Dma_Wrset;⑬Tx_trn读取Dma_Wrset缓存的数据发送给PCIE核;最后跳转到等待状态,等待下次DMA的发起。

最后,数据送入Tx_top的缓存中,将单路数据进行校验,复制成两路相同的数据,在这里打上第四个时间戳,通过时间戳的差值便可计算出链路中所消耗的时间,在此模块中设定阈值,当时间戳的差值超过所设定的阈值时,便对数据进行丢弃,直到检测到下次帧头后停止丢弃,接着再次判断和校验。

在一个实施例中,如图6所示,当出现dma的读写冲突的时候,通过缓存读写请求,当读或写的请求达到缓存深度2n的一半n时,便先执行哪个请求,在执行过程中,缓存持续接收请求,假设现在读请求满足缓存深度n时,先执行n个读请求后,在判断此时的写请求是否也满足了深度n,若是,便执行n个读请求,若不是便返回到最初的状态,等待读或者是写请求哪个先满足深度n的条件,如此循环往复。

所采用方案读取BD的流程框图如图7所示,FPGA与PC的任何数据交互,首先都是通过PC读/写数据到FPGA的register模块当中,FPGA根据register中的值,来进行下一步的操作。

在这里,引入BD的概念,即PCIE DMA读写数据之前,PC都会将BD的值写入register中,通过读取register的BD值,可提取出index标号,利用index的标号读取相应ram中的物理地址,对应的物理地址就是FPGA进行DMA操作的(PC的buffer)地址,根据此地址,才会进行数据的传输。

综上所述,本发明提供的该基于Aurora协议的双路冗余数据交换方法及系统,能够解决现有技术领域在高速通信系统中,伴随着时钟速率的升高、电路走线及时钟延迟等因素,而造成的数据传输确定性降低问题,从而提升链路中数据的准确性,为此本系统采用了双路独立的工作接口,在接收到总线传输的数据后,能够进行数据的缓存,以控制数据吞吐量,从而避免造成数据丢失,以依据判断条件对缓存中的双路冗余数据进行判决,实现了去冗余操作,籍此有效提升了高速率下的数据稳定性。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

本领域技术人员可以理解,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

此外实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于功能安全监控的双线SPI通信系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!