用于数据重传的系统转让专利

申请号 : CN201510964497.3

文献号 : CN105573937B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 耿雄飞窦晓光

申请人 : 曙光信息产业(北京)有限公司

摘要 :

本发明提出了一种用于数据重传的系统,该系统包括:FPGA芯片以及与FPGA芯片相连的PCIx总线;其中,FPGA芯片用于将数据发送至PCIx总线;PCIx总线用于接收数据,并将数据发送至目标设备;PCIx总线进一步用于在数据发送失败的情况下,向FPGA芯片发送重传信号;以及,FPGA芯片进一步用于根据接收的重传信号将数据重新发送至PCIx总线。通过本发明的技术方案,能够在消除对读写指针的维护的同时避免组合逻辑造成的时序问题,从而提高了数据重传的稳定性以及可靠性。

权利要求 :

1.一种用于数据重传的系统,其特征在于,包括:FPGA芯片以及与所述FPGA芯片相连的PCIx总线;

其中,所述FPGA芯片用于将数据发送至所述PCIx总线;

所述PCIx总线用于接收所述数据,并将所述数据发送至目标设备;

所述PCIx总线进一步用于在所述数据发送失败的情况下,向所述FPGA芯片发送重传信号;以及,所述FPGA芯片进一步用于根据接收的所述重传信号将所述数据重新发送至所述PCIx总线;

其中,所述FPGA芯片包括:

直接内存存取DMA控制单元;

PCIx核心单元,与所述DMA控制单元和所述PCIx总线分别相连;

其中,所述DMA控制单元采用先入先出队列FIFO将所述数据中的部分数据进行缓存。

2.根据权利要求1所述的用于数据重传的系统,其特征在于,所述DMA控制单元用于将所述数据发送至所述PCIx总线;

所述DMA控制单元进一步用于接收所述重传信号,并根据所述重传信号将所述数据重新发送至所述PCIx总线。

3.根据权利要求1所述的用于数据重传的系统,其特征在于,所述DMA控制单元进一步用于将所述数据发送至所述PCIx核心单元;

所述PCIx核心单元用于对接收到的所述数据进行封装处理,并将封装后的数据发送至所述PCIx总线。

4.根据权利要求3所述的用于数据重传的系统,其特征在于,所述DMA控制单元进一步用于当接收到所述重传信号时,将缓存的所述数据中的部分数据以及剩余部分数据重新发送至所述PCIx总线。

5.根据权利要求1所述的用于数据重传的系统,其特征在于,所述重传信号为时序信号。

6.根据权利要求5所述的用于数据重传的系统,其特征在于,所述PCIx总线进一步用于在所述数据发送失败的情况下,向所述PCIx核心单元发送时序信号;

所述PCIx核心单元用于将接收到的所述时序信号解析为重传指令,并将所述重传指令发送至所述DMA控制单元。

7.根据权利要求6所述的用于数据重传的系统,其特征在于,所述DMA控制单元进一步用于当接收到所述重传指令时,将缓存的所述数据中的部分数据以及剩余部分数据重新发送至所述PCIx总线。

说明书 :

用于数据重传的系统

技术领域

[0001] 本发明涉及电子技术领域,具体来说,涉及一种用于数据重传的系统。

背景技术

[0002] DMA是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一些处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
[0003] 但是当目标设备无法完成当前数据传输的时候,会发送重传指令到主设备,这时候,由于当前数据没有传输成功,主设备需要重新将未完成的数据进行重新传送,这样一来就需要主设备对发送出去的数据进行缓存,来应对重传时候的情况。
[0004] 当前解决此问题的方法现在使用RAM进行数据的缓存,在不覆盖当前数据的前提下,可以多次任意的重传,但是此方法首先需要对RAM的读写指针进行维护,其次在一些特殊情况下会造成时序问题,比如在使用国产的FPGA开发环境下,PCIx时钟频率达到133M,对于国产FPGA频率已经很高,根据PCIx接口时序要求,当M_DATA_NXT到来的时候需要将数据在当前周期放到数据总线上,然而RAM有一个周期的延时,这样就会不可避免的出现64bit数据的组合逻辑,造成时序非常紧张。
[0005] 针对相关技术中由于传输失败,所以读指针需要根据当前状态进行指针的加减,造成维护困难;以及由于在国产FPGA开发环境下,组合逻辑造成的时序问题更加严重,会导致出现不可预知的错误的问题,目前尚未提出有效的解决方案。

发明内容

[0006] 针对相关技术中的问题,本发明提出一种用于数据重传的系统,能够消除对读写指针的维护的同时避免组合逻辑造成的时序问题,从而提高了数据重传的稳定性以及可靠性。
[0007] 本发明的技术方案是这样实现的:
[0008] 根据本发明的一个方面,提供了一种数据重传的系统。
[0009] 该系统包括:
[0010] FPGA芯片以及与FPGA芯片相连的PCIx总线;
[0011] 其中,FPGA芯片用于将数据发送至PCIx总线;
[0012] PCIx总线用于接收数据,并将数据发送至目标设备;
[0013] PCIx总线进一步用于在数据发送失败的情况下,向FPGA芯片发送重传信号;以及,[0014] FPGA芯片进一步用于根据接收的重传信号将数据重新发送至PCIx总线。
[0015] 在一个优选的实施例中,FPGA芯片包括:
[0016] 直接内存存取DMA控制单元;
[0017] PCIx核心单元,与DMA控制单元和PCIx总线分别相连。
[0018] 在一个优选的实施例中,DMA控制单元用于将数据发送至PCIx总线;
[0019] DMA控制单元进一步用于接收重传信号,并根据重传信号将数据重新发送至PCIx总线。
[0020] 在一个优选的实施例中,DMA控制单元进一步用于将数据发送至PCIx核心单元;
[0021] PCIx核心单元用于对接收到的数据进行封装处理,并将封装的数据发送至PCIx总线。
[0022] 在一个优选的实施例中,DMC控制单元进一步用于将数据中的部分数据进行缓存。
[0023] 在一个优选的实施例中,DMC控制单元进一步用于当接收到重传指令时,将缓存的数据中的部分数据以及剩余部分数据重新发送至PCIx总线。
[0024] 在一个优选的实施例中,重传信号为时序信号。
[0025] 在一个优选的实施例中,PCIx总线进一步用于在数据发送失败的情况下,向PCIx核心单元发送时序信号;
[0026] PCIx核心单元用于将接收到的时序信号解析为重传指令,并将重传指令发送至DMC控制单元。
[0027] 在一个优选的实施例中,DMC控制单元进一步用于将数据中的部分数据进行缓存。
[0028] 在一个优选的实施例中,DMC控制单元进一步用于当接收到重传指令时,将缓存的数据中的部分数据以及剩余部分数据重新发送至PCIx总线。
[0029] 通过本发明的上述方案,能够消除对读写指针的维护的同时避免组合逻辑造成的时序问题,从而提高了数据重传的稳定性以及可靠性。

附图说明

[0030] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031] 图1是根据本发明实施例的用于数据重传的系统的示意图;
[0032] 图2是根据本发明的用于数据重传的系统的具体实施例的示意图;
[0033] 图3是根据本发明的用于数据重传的系统的具体实施例的示意图;
[0034] 图4是根据本发明的用于数据重传的系统的具体实施例的示意图。

具体实施方式

[0035] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 根据本发明的实施例,提供了一种用于数据重传的系统。
[0037] 如图1所示,根据本发明实施例的用于数据重传的系统包括:
[0038] FPGA芯片以及与FPGA芯片相连的PCIx总线;
[0039] 其中,FPGA芯片用于将数据数据发送至PCIx总线;
[0040] PCIx总线用于接收数据数据,并将数据数据发送至目标设备;
[0041] PCIx总线进一步用于在数据数据发送失败的情况下,向FPGA芯片发送重传信号;以及,
[0042] FPGA芯片进一步用于根据接收的重传信号将数据数据重新发送至PCIx总线。在一个优选的实施例中,FPGA芯片包括:
[0043] 直接内存存取DMA控制单元;
[0044] PCIx核心单元,与DMA控制单元和PCIx总线分别相连。
[0045] 在一个优选的实施例中,DMA控制单元用于将数据发送至PCIx总线;
[0046] DMA控制单元进一步用于接收重传信号,并根据重传信号将数据重新发送至PCIx总线。
[0047] 在一个优选的实施例中,DMA控制单元进一步用于将数据发送至PCIx核心单元;
[0048] PCIx核心单元用于对接收到的数据进行封装处理,并将封装的数据发送至PCIx总线。
[0049] 在一个优选的实施例中,DMC控制单元进一步用于将数据中的部分数据进行缓存。
[0050] 在一个优选的实施例中,DMC控制单元进一步用于当接收到重传指令时,将缓存的数据中的部分数据以及剩余部分数据重新发送至PCIx总线。
[0051] 在一个优选的实施例中,重传信号为时序信号。
[0052] 在一个优选的实施例中,PCIx总线进一步用于在数据发送失败的情况下,向PCIx核心单元发送时序信号;
[0053] PCIx核心单元用于将接收到的时序信号解析为重传指令,并将重传指令发送至DMC控制单元。
[0054] 在一个优选的实施例中,DMC控制单元进一步用于将数据中的部分数据进行缓存。
[0055] 在一个优选的实施例中,DMC控制单元进一步用于当接收到重传指令时,将缓存的数据中的部分数据以及剩余部分数据重新发送至PCIx总线。
[0056] 为了更好的理解本发明的技术方案,下面以具体实施例来进行详细阐述。
[0057] 图2为本实施例中,FPGA与PCIx总线结构的示意图,在图2中:FPGA与PCIx之间,根据协议中时序的要求能够产生不同的指令,其中重传指令如图3中所示。当FPGA中的PCIx核心单元接收到如图3中所示的时序时,PCIx核心单元将接收到的时序解析为可以被DMA控制单元接收的指令,并将重传指令发送给DMA控制单元。其中,PCIx核心单元与DMA控制单元接口信号连接如图4所示。在本实施例中,当DMA控制单元将数据地址等数据准备完毕以后,就要向目标设备发送请求,通过M_REQ发送一次请求,当收到M_ADDL_VLD信号拉高,表示在当前数据周期需要将写地址放到M_DATA_IN数据线上,当M_ATTR_VLD有效,需要在当前数据周期将写长度放到M_DATA_IN数据总线上,同时将操作指令放到M_CBEA_IN上,等到M_DATA_NXT有效时候,需要在当前数据周期将数据放到M_DATA_IN数据总线上,当M_DONE出现的时候,则证明当前数据传送完成。
[0058] 在本实施例中,M_RETRY信号拉高表示接收到重传请求,所以需要将当前发送的数据重新发送一次。然而根据PCIx核心单元的时序要求,以及通过工具抓取信号分析,M_RETRY信号固定会在M_DATA_NXT信号有效的第三个周期后拉高,同时下一周期M_DONE信号将拉高,表明当前传输结束,并且数据传送失败,需要重新传送,所以为了使用先入先出队列(FIFO)进行数据传输,需要将前四拍的数据进行寄存,这样当开始重传的时候,前四拍数据使用寄存的数据,其他周期的数据从FIFO中获取,同时FIFO设置为showAhead模式,避免了组合逻辑的使用,时序得到了满足。
[0059] 综上所述,借助于本发明的上述技术方案,利用接口时序特点,在DMA控制单元中采用FIFO代替RAM来缓存数据,在收到重传指令后,可以稳定高效的进行数据重传。同时在国产FPGA中,在保证时序的同时,能够稳定可靠的重传数据。
[0060] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。