基于PCIe的高速实时传输系统

文档序号:1952541 发布日期:2021-12-10 浏览:9次 >En<

阅读说明:本技术 基于PCIe的高速实时传输系统 (PCIe-based high-speed real-time transmission system ) 是由 晏佳 白静 唐俊勇 刘远漠 于 2021-11-15 设计创作,主要内容包括:本发明提供一种基于PCIe的高速实时传输系统,所述基于PCIe的高速实时传输系统包括基于FPGA的PCIe板卡和计算机,所述基于FPGA的PCIe板卡插在所述计算机的PCI-E X8插槽;所述基于FPGA的PCIe板卡的通道类型为PCI-E X8,以FPGA芯片为核心,FPGA芯片端外扩高速接口和并行接口,且外接内存,其中并行接口通过隔离芯片与FPGA相连。通过本发明,充分利用FPGA的高速传输接口和并行接口,兼顾高速串行传输和并行传输的优点,提供了两种不同的对外传输方式,确保了传输的高速率、高实时性。(The invention provides a PCIe-based high-speed real-time transmission system, which comprises a PCIe board card based on an FPGA and a computer, wherein the PCIe board card based on the FPGA is inserted into a PCI-E X8 slot of the computer; the PCIe board card based on the FPGA is characterized in that the channel type of the PCIe board card based on the FPGA is PCI-E X8, an FPGA chip is used as a core, a high-speed interface and a parallel interface are externally expanded at the end of the FPGA chip, and the FPGA chip is externally connected with a memory, wherein the parallel interface is connected with the FPGA through an isolation chip. According to the invention, the high-speed transmission interface and the parallel interface of the FPGA are fully utilized, the advantages of high-speed serial transmission and parallel transmission are taken into consideration, two different external transmission modes are provided, and the high speed and the high real-time performance of transmission are ensured.)

基于PCIe的高速实时传输系统

技术领域

本发明涉及通信技术领域,尤其涉及一种基于PCIe的高速实时传输系统。

背景技术

随着通信技术的发展,大数据的传输与处理对高速通信提出了越来越高的要求,尤其是PC端应用软件需要与硬件做数据交换时,常见的与PC端应用软件最紧密的高速互联接口有PCIe、以太网、USB、HDMI等,这些接口各自有其特点,其中由于PCIe总线的传输速率高,技术成熟,实现方法灵活,是最常用的高速传输接口之一,也越来越广泛的被应用在各个领域,尤其数据吞吐量较大的场合。

PCIe板卡常常使用在Windows和Linux系统环境下。由于Windows和Linux都是非实时系统,在对数据传输的实时性没有要求的情况下,可以很好的满足要求。但是,在自动化工业领域,特别是在测量、测试和控制技术方面,保证数据传输的实时是不可缺少的。对于这种对实时性要求比较高的使用场景,虽然Linux系统可以通过打实时补丁来解决这个问题,但是客户软件实际使用环境更多的是Windows系统环境下运行的时候,就无法满足实时性要求。

发明内容

本发明的主要目的在于提供一种基于PCIe的高速实时传输系统,旨在现有技术中传输实时性不高的技术问题。

第一方面,本发明提供一种基于PCIe的高速实时传输系统,所述基于PCIe的高速实时传输系统包括基于FPGA的PCIe板卡和计算机,所述基于FPGA的PCIe板卡插在所述计算机的PCI-E X8插槽;所述基于FPGA的PCIe板卡的通道类型为PCI-E X8,以FPGA芯片为核心,FPGA芯片端外扩高速接口和并行接口,且外接内存,其中并行接口通过隔离芯片与FPGA相连。

可选的,所述FPGA芯片通过XDMA核实现PCIe协议和DMA传输,XDMA核包括M_AXI接口和M-AXI-Lite接口,其中,M_AXI接口用于传输DMA数据,M-AXI-Lite接口用于访问寄存器数据。

可选的,所述FPGA芯片通过寄存器切换通信链路连接高速接口,实现高速串行传输;所述FPGA芯片通过寄存器切换通信链路连接并行接口,实现并行传输。

可选的,当连接高速接口时,DMA数据先进入内存中缓存,寄存器数据在RegisterBRAM中缓存,通过高速传输控制机制,选择DMA数据或寄存器读写数据进行数据处理。

可选的,当连接并行接口时,通过并行传输控制机制,选择DMA数据或寄存器读写数据进行数据处理。

可选的,所述计算机在开机过程中,通过PCIe驱动,根据PCIe总线编号、设备名以及功能号在运行的处理器系统中迭代读取所有PCIe板卡的配置空间,所述配置空间位于PCIe板卡的XDMA核;将配置空间中Vendor ID字段和Device ID字段与需要查找的PCIe板卡的Vendor ID和Device ID进行比较,如果相等,则查找成功;查找成功后,初始化查找到的PCIe板卡的基础地址寄存器空间;初始化完成后,进行数据传输。

可选的,所述PCIe驱动在基于RTX实时系统的基础上设计得到。

可选的,所述初始化查找到的PCIe板卡的基础地址寄存器空间的步骤包括:

分配PCIe板卡的基础地址寄存器在PCIe总线域的地址空间。

可选的,所述进行数据传输的步骤包括:

计算机访问PCIe板卡的XDMA核的M-AXI-Lite接口用户寄存器,然后通过并行接口,访问下一级板卡。

可选的,所述进行数据传输的步骤包括:

计算机选择PCIe板卡的传输接口为高速接口,申请一段连续的内存空间,用于DMA数据传输;根据描述符的大小创建一段连续的内存空间,写入描述符基地址;开启DMA传输。

本发明中,基于PCIe的高速实时传输系统包括基于FPGA的PCIe板卡和计算机,所述基于FPGA的PCIe板卡插在所述计算机的PCI-E X8插槽;所述基于FPGA的PCIe板卡的通道类型为PCI-E X8,以FPGA芯片为核心,FPGA芯片端外扩高速接口和并行接口,且外接内存,其中并行接口通过隔离芯片与FPGA相连。通过本发明,充分利用FPGA的高速传输接口和并行接口,兼顾高速串行传输和并行传输的优点,提供了两种不同的对外传输方式,确保了传输的高速率、高实时性。

附图说明

图1为基于FPGA的PCIe板卡的架构示意图;

图2为FPGA芯片的逻辑原理框图;

图3为基于RTX实时系统的PCIe驱动的框架示意图;

图4为一实施例中计算机进行DMA读写的流程图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

第一方面,本发明实施例提供了一种基于PCIe的高速实时传输系统。

一实施例中,基于PCIe的高速实时传输系统包括基于FPGA的PCIe板卡和计算机,所述基于FPGA的PCIe板卡插在所述计算机的PCI-E X8插槽;所述基于FPGA的PCIe板卡的通道类型为PCI-E X8,以FPGA芯片为核心,FPGA芯片端外扩高速接口和并行接口,且外接内存,其中并行接口通过隔离芯片与FPGA相连。

参照图1,图1为基于FPGA的PCIe板卡的架构示意图。如图1所示,基于FPGA的PCIe板卡通道类型为PCI-E X8,可支持PCIe GEN3x8的高速传输,以FPGA芯片为核心,FPGA芯片端外扩高速接口(即图1中的光纤接口QSFP+)和并行接口(即图1中的Local Bus CN),同时外接内存(即图1中的DDR4),用于数据缓存。其中,Local Bus通过隔离芯片与FPGA的Program Logic部分相连,很好的保护了FPGA芯片以及完成了电平的转换。

进一步地,一实施例中,FPGA芯片通过XDMA核实现PCIe协议和DMA传输,XDMA核包括M_AXI接口和M-AXI-Lite接口,其中,M_AXI接口用于传输DMA数据,M-AXI-Lite接口用于访问寄存器数据。

本实施例中,FPGA芯片内集成了PCIe硬核,其开发软件中带有多种PCIe的IP实现方法,此处采用的是XDMA核来实现PCIe协议和DMA传输。

参照图2,图2为FPGA芯片的逻辑原理框图。如图2所示,XDMA核的用户接口分为M_AXI接口和M-AXI-Lite接口,其中前者是传输DMA数据,后者是访问寄存器数据。寄存器数据都是通过Register BRAM进行缓存,并且与后继逻辑做数据交换,另外,后续逻辑的一些控制指令也是通过寄存器数据产生。

进一步地,一实施例中,所述FPGA芯片通过寄存器切换通信链路连接高速接口,实现高速串行传输;所述FPGA芯片通过寄存器切换通信链路连接并行接口,实现并行传输。

本实施例中,为了充分利用串行数据传输的高速率和并行数据传输的低延时的优点,在FPGA芯片内部,通过寄存器来切换通信链路连接光纤接口QSFP+,实现高速串行传输;通过寄存器切换通信链路连接并行接口Local Bus CN,实现并行传输。

进一步地,一实施例中,当连接高速接口时,DMA数据先进入内存中缓存,寄存器数据在Register BRAM中缓存,通过高速传输控制机制,选择DMA数据或寄存器读写数据进行数据处理。

本实施例中,当连接光纤接口QSFP+时,为了保证PCIe DMA数据与光纤接口QSFP+的数据速率匹配,DMA数据会先进入DDR4中缓存,寄存器数据则会在Register BRAM中缓存,通过High Speed Transmission Controller的控制机制,选择DMA数据或寄存器读写数据进行与Data Process处理,Data Process的处理就是按照自定义的数据结构进行组包和解包处理,以Aurora传输协议,最后从光纤接口QSFP+出。

进一步地,一实施例中,当连接并行接口时,通过并行传输控制机制,选择DMA数据或寄存器读写数据进行数据处理。

本实施例中,在连接并行接口Local Bus CN时,通过Local Bus TransmissionController的控制机制,选择DMA数据或寄存器读写数据进行与Data Process。DataProcess的处理就是并行传输接口将传输的数据、控制信号转换成具有Local Bus的并行接口。Local Bus接口由32位数据线,24位地址线和必要的控制线构成。

进一步地,一实施例中,所述计算机在开机过程中,通过PCIe驱动,根据PCIe总线编号、设备名以及功能号在运行的处理器系统中迭代读取所有PCIe板卡的配置空间,所述配置空间位于PCIe板卡的XDMA核;将配置空间中Vendor ID字段和Device ID字段与需要查找的PCIe板卡的Vendor ID和Device ID进行比较,如果相等,则查找成功;查找成功后,初始化查找到的PCIe板卡的基础地址寄存器空间;初始化完成后,进行数据传输。

进一步地,一实施例中,所述PCIe驱动在基于RTX实时系统的基础上设计得到。

本实施例中,计算机通过基于RTX实时系统的PCIe驱动控制基于FPGA的PCIe板卡。计算机系统为Windows,由于Windows是非实时系统,基于RTX实时系统的PCIe驱动实现,首先要做的是可将Windows改造成一个确定响应的硬实时操作系统。Ardence公司研发的基于Windows的RTX实时扩展子系统是首选,主要原因是 RTX与Windows操作系统无缝兼容,可以利用Windows系统的各种优势,包括大量标准的API函数、高效的内存管理机制以及各种Windows下的通用资源。作为一个完全的Windows扩展系统,RTX并不对Windows系统架构作任何封装和修改。与基于Windows的PCIe驱动相比较,由于使用RTX提供的API函数,基于RTX的PCIe驱动实现过程就显得简单明了。基于RTX实时系统的PCIe驱动的框架示意图如图3所示。首先查找PCIe板卡,查找成功后,初始化查找到的PCIe板卡的基础地址寄存器空间,初始化完成后,进行数据传输。若查找PCIe板卡失败,则退出;若初始化失败,则退出。

其中,查找PCIe板卡的步骤具体包括:

根据PCIe总线编号、设备名以及功能号在运行的处理器系统中迭代读取所有PCIe板卡的配置空间,所述配置空间位于PCIe板卡的XDMA核;将配置空间中Vendor ID字段和Device ID字段与需要查找的PCIe板卡的Vendor ID和Device ID进行比较,如果相等,则查找成功。

本实施例中,在一个处理器系统中,每一个Host主桥都推出一棵PCIe总线数。在一棵PCI总线数中有多少个PCIe桥(包括HOST主桥),就含有多少条PCIe总线。系统在遍历查找指定的PCIe设备时,首先要找到对应的PCIe总线,而一条PCIe总线下面会挂接各种各样的PCIe设备,每一个PCIe设备在PCIe总线下具有唯一的设备号。系统软件通过总线号和设备号定位一个PCIe设备。每一个PCI设备可以只有一个功能,也可以拥有最多8个功能,即多功能设备。不管这个PCIe设备拥有多少个功能,其每一个功能都有一个唯一独立的配置空间与之对应。

查找PCIe板卡的具体实现就是根据PCIe总线编号和设备名以及功能号在运行的处理器系统中迭代读取所有PCIe板卡的配置空间,将配置空间中Vendor ID字段和DeviceID字段与需要查找的PCIe板卡的Vendor ID和Device ID进行比较,如果相等则存在,否则查找失败,退出程序。

由于PCIe板卡的FPGA在配置XDMA IP核时,可以更改PCIe设备的Vendor ID字段和Device ID字段,当出现多个PCI设备的Vendor ID字段和Device ID字段一致时,查找失败。

进一步地,一实施例中,所述初始化查找到的PCIe板卡的基础地址寄存器空间的步骤包括:

分配PCIe板卡的基础地址寄存器在PCIe总线域的地址空间。

本实施例中,在PCIe板卡进行数据传输之前,系统软件需要初始化PCIe板卡的BAR0-5寄存器。系统软件对PCIe总线进行遍历时,完成这些寄存器的初始化,即分配这些设备在PCIe总线域的地址空间。当这些寄存器初始化完毕后,PCIe板卡就可以使用PCIe总线地址进行数据传递。

PCIe板卡中的BAR(base address register,基础地址寄存器)0-5中的地址都是PCIe总线地址,而这些地址在处理器系统的存储器域中具有映像,如果一个PCIe板卡的BAR空间在存储器域中没有映像,处理器将不能够访问该PCIe板卡的BAR空间。

处理器通过HOST主桥将PCIe总线域与存储器域隔离。当处理器访问PCIe板卡的地址控件时,需要先访问该设备在存储器域中的地址空间,并通过HOST主桥将这个存储器域的地址空间转换为PCIe总线域的地址空间之后,在使用PCIe总线事务将数据发送到指定的PCIe板卡中。

首先将BAR空间的地址转化为CPU可以直接访问的物理地址,然后再把转化后的物理地址映射到应用程序可以访问的虚拟地址,映射到虚拟地址空间后,用户才能正常读写PCIe板卡的内存空间或者I/O空间。

进一步地,一实施例中,所述进行数据传输的步骤包括:

计算机访问PCIe板卡的XDMA核的M-AXI-Lite接口用户寄存器,然后通过并行接口,访问下一级板卡。

本实施例中,计算机中的应用程序通过基于RTX的PCIe驱动,访问板卡中XDMA的M-AXI-Lite接口用户寄存器,在软件部分做到实时,然后通过Local Bus并行接口,访问下一级板卡,在硬件上做到低延时,这样保证整个传输链路的实时性。

进一步地,一实施例中,所述进行数据传输的步骤包括:

计算机选择PCIe板卡的传输接口为高速接口,申请一段连续的内存空间,用于DMA数据传输;根据描述符的大小创建一段连续的内存空间,写入描述符基地址;开启DMA传输。

本实施例中,参照图4,图4为一实施例中计算机进行DMA读写的流程图。如图4所示,先申请一段连续的内存空间,用于DMA数据传输;然后根据描述符的大小创建一段连续的内存空间;写入描述符基地址,开启DMA传输;检测传输是否完成,若未完成,则继续传输;若完成,则停止DMA运行。

本实施例中,基于PCIe的高速实时传输系统包括基于FPGA的PCIe板卡和计算机,所述基于FPGA的PCIe板卡插在所述计算机的PCI-E X8插槽;所述基于FPGA的PCIe板卡的通道类型为PCI-E X8,以FPGA芯片为核心,FPGA芯片端外扩高速接口和并行接口,且外接内存,其中并行接口通过隔离芯片与FPGA相连。通过本实施例,充分利用FPGA的高速传输接口和并行接口,兼顾高速串行传输和并行传输的优点,提供了两种不同的对外传输方式,确保了传输的高速率、高实时性。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:电子纸设备及其刷新方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!