CN105356988A - 一种基于PCIe的全双工DMA传输方法 - Google Patents
一种基于PCIe的全双工DMA传输方法 Download PDFInfo
- Publication number
- CN105356988A CN105356988A CN201510670061.3A CN201510670061A CN105356988A CN 105356988 A CN105356988 A CN 105356988A CN 201510670061 A CN201510670061 A CN 201510670061A CN 105356988 A CN105356988 A CN 105356988A
- Authority
- CN
- China
- Prior art keywords
- data
- control register
- side control
- tlp packet
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/14—Two-way operation using the same type of signal, i.e. duplex
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Bus Control (AREA)
Abstract
本发明涉及一种数据传输方法,具体涉及一种基于PCIe的全双工DMA传输方法。一种基于PCIe的全双工DMA传输方法,包括板卡设备以及上位机;所述板卡设备为基于PCIe总线的板卡设备,包括发送侧控制寄存器、接收侧控制寄存器以及数据传输控制单元,发送侧控制寄存器和接收侧控制寄存器均设置有独立的FIFO;数据传输控制单元控制发送侧控制寄存器以及接收侧控制寄存器与上位机进行数据传输;板卡设备中的数据传输控制单元根据数据的传输方向,分别向上位机发送读和写请求TLP数据包。本发明总线占用时间非常短,且还需要等待上位机返回数据;而向上位机发送写请求TLP数据包时,除了三个双字的包头,还需要携带最多128个双字的数据,总线占用的时间较长。
Description
技术领域
本发明涉及一种数据传输方法,具体涉及一种基于PCIe的全双工DMA传输方法。
背景技术
目前市场上现有的基于PCIe链路进行数据传输的板卡设备中,在与基于X86平台的上位机进行数据通讯的过程中,由于X86平台中北桥芯片的架构限制,从X86平台向板卡设备传输数据时,如果由X86平台发起并主导传输过程,则在每个TLP数据包中都仅能够携带4个字节的有效数据,而TLP数据包的包头最小也需要3个双字,由于有效数据仅占据了TLP数据包大小的最多1/4,因此在这种模式下,数据传输的效率非常低下,无法充分发挥PCIe链路的高速传输性能。
为了解决此问题,一般的做法都是在板卡设备侧实现相应的DMA传输控制功能,即由板卡设备来发起并主导控制数据传输的全过程。
市场上现有的基于PCIe链路进行数据传输的板卡设备中,一般都是采用了基于RAM原理的随机寻址模式,即在板卡设备中,为每个存储单元分配指定的地址,之后再通过完整的片选、地址、数据、读写使能信号来对相应的存储单元进行访问。在这种模式下,整个设计与基于PCI总线实现的DMA传输模式之间,能够保持较好的兼容和可移植性,但由于PCI总线先天性的限制,即其为了降低单板连线数目,采用了地址\数据复用的低速并行数据传输模式,决定了PCI总线永远都只能够工作在半双工的传输模式下。
在基于PCI总线的板卡设备同X86平台交换数据时,不论是从X86平台向基于PCI总线的板卡设备传输数据时,还是从基于PCI总线的板卡设备向X86平台传输数据时,由于其相应的操作都需要完整的使用PCI总线上的地址\数据、片选、读写使能等数据总线和控制信号,因而另外一个方向必然无法同时进行数据传输,只能等待这次传输彻底结束后,才能够开始相应的数据传输工作。
板卡设备中的数据传输控制单元根据数据的传输方向,分别向上位机发送读和写请求TLP数据包。读请求TLP数据包仅需三个双字的数据量,之后等待上位机以读完成TLP数据包的形式返回数据即可,总线占用时间非常短,且还需要等待上位机返回数据;而向上位机发送写请求TLP数据包时,除了三个双字的包头,还需要携带最多128个双字的数据,总线占用的时间较长。
发明内容
本发明旨在提出一种利用PCIe总线两个方向的高速通道同时进行高速数据传输的全双工DMA传输方法。
本发明的技术方案在于:
一种基于PCIe的全双工DMA传输方法,包括板卡设备以及上位机;所述板卡设备为基于PCIe总线的板卡设备,包括发送侧控制寄存器、接收侧控制寄存器以及数据传输控制单元,发送侧控制寄存器和接收侧控制寄存器均设置有独立的FIFO;数据传输控制单元控制发送侧控制寄存器以及接收侧控制寄存器与上位机进行数据传输;所述的数据传输控制单元分别向上位机发送读请求TLP数据包以及写请求TLP数据包,将读请求TLP数据包设置为高优先级,写请求TLP数据包设置为低优先级;发送完读请求TLP数据包之后,即发送写请求TLP数据包,直至上位机以读完成TLP数据包的形式返回了全部数据,再发送下一个读请求TLP数据包。
所述的FIFO的深度为2048,数据宽度为32位。
所述的控制寄存器均包括上位机物理地址寄存器、TLP数据包大小寄存器、TLP数据包个数寄存器、板卡设备内部物理地址寄存器。
本发明的技术效果在于:
本发明通过为两个方向的数据传输设计独立的FIFO,将发送侧控制寄存器以及接收侧控制寄存器的数据传输和处理进行了分离,板卡设备以写请求TLP数据包的形式向上位机高速发送数据的同时,上位机也在以读完成TLP数据包的形式,向板卡设备高速发送数据,即PCIe链路的两个方向,同时都在进行着高速串行的数据传输,充分发挥了PCIe链路的全双工串行高速链路的优势。
具体实施方式
一种基于PCIe的全双工DMA传输方法,包括板卡设备以及上位机;所述板卡设备为基于PCIe总线的板卡设备,包括发送侧控制寄存器、接收侧控制寄存器以及数据传输控制单元,发送侧控制寄存器和接收侧控制寄存器均设置有独立的FIFO;数据传输控制单元控制发送侧控制寄存器以及接收侧控制寄存器与上位机进行数据传输;所述的数据传输控制单元分别向上位机发送读请求TLP数据包以及写请求TLP数据包,将读请求TLP数据包设置为高优先级,写请求TLP数据包设置为低优先级;发送完读请求TLP数据包之后,即发送写请求TLP数据包,直至上位机以读完成TLP数据包的形式返回了全部数据,再发送下一个读请求TLP数据包。其中,FIFO的深度为2048,数据宽度为32位。控制寄存器均包括上位机物理地址寄存器、TLP数据包大小寄存器、TLP数据包个数寄存器、板卡设备内部物理地址寄存器。
即在板卡设备以写请求TLP数据包的形式,向上位机高速发送数据的同时,上位机也在以读完成TLP数据包的形式,向板卡设备高速发送数据,即PCIe链路的两个方向,同时都在进行着高速串行的数据传输,充分发挥了PCIe链路的全双工串行高速链路的优势。
在本产品的实施过程中,为发送侧控制寄存器和接收侧控制寄存器都设计有独立的FIFO,并有独立的传输总线和数据传输控制单元分别相连接。在需要进行数据传输时,由数据传输控制单元实现对应的传输功能。
由板卡设备向上位机传输数据时需要使用发送侧控制寄存器,由上位机向板卡设备传输数据时也需要使用接收侧控制寄存器。
发送侧控制寄存器和接收侧控制寄存器各建立一个深度为2048,数据宽度为32位的FIFO作为缓存空间,由软件一次把最多512个传输参数分别写入了发送或者接收FIFO之后,即可启动对应方向的DMA传输操作。DMA传输结束之后,即立即从FIFO中读出下一次数据传输的参数值,之后,即自动开始相应数据传输工作。在数据的传输过程中,如果需要暂停或开启当前的数据传输,只需要设置对应的控制位,之后可以读取传输状态寄存器,获取当前正在进行的数据传输的结束地址。数据传输过程中,两个方向可以完全独立的被暂停,中止,提供了一种非常灵活的控制方式和高效的数据传输机制。
使用此方法设计的板卡设备,使用在PCIeGen1,X1的链路上时,实际测试得到的结果为进行单向传输时,板卡设备向上位机发送数据时,有效数据传输速率为220MBps;上位机向板卡设备发送数据时,有效数据传输速率为190MBps;板卡设备向上位机发送数据和上位机向板卡设备发送数据同时进行时,两个方向的总的数据传输速率为380Mbps,远远超过了单向传输数据时的性能。
Claims (3)
1.一种基于PCIe的全双工DMA传输方法,包括板卡设备以及上位机;其特征在于:所述板卡设备为基于PCIe总线的板卡设备,包括发送侧控制寄存器、接收侧控制寄存器以及数据传输控制单元,发送侧控制寄存器和接收侧控制寄存器均设置有独立的FIFO;数据传输控制单元控制发送侧控制寄存器以及接收侧控制寄存器与上位机进行数据传输;所述的数据传输控制单元分别向上位机发送读请求TLP数据包以及写请求TLP数据包,将读请求TLP数据包设置为高优先级,写请求TLP数据包设置为低优先级;发送完读请求TLP数据包之后,即发送写请求TLP数据包,直至上位机以读完成TLP数据包的形式返回了全部数据,再发送下一个读请求TLP数据包。
2.根据权利要求1所述的一种基于PCIe的全双工DMA传输方法,其特征在于:所述的FIFO的深度为2048,数据宽度为32位。
3.根据权利要求1所述的一种基于PCIe的全双工DMA传输方法,其特征在于:所述的控制寄存器均包括上位机物理地址寄存器、TLP数据包大小寄存器、TLP数据包个数寄存器、板卡设备内部物理地址寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510670061.3A CN105356988A (zh) | 2015-10-16 | 2015-10-16 | 一种基于PCIe的全双工DMA传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510670061.3A CN105356988A (zh) | 2015-10-16 | 2015-10-16 | 一种基于PCIe的全双工DMA传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105356988A true CN105356988A (zh) | 2016-02-24 |
Family
ID=55332868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510670061.3A Pending CN105356988A (zh) | 2015-10-16 | 2015-10-16 | 一种基于PCIe的全双工DMA传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105356988A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027349A (zh) * | 2016-04-29 | 2016-10-12 | 重庆爱思网安信息技术有限公司 | 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法 |
CN109165178A (zh) * | 2018-08-01 | 2019-01-08 | 北京遥感设备研究所 | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 |
CN109753462A (zh) * | 2017-11-08 | 2019-05-14 | 山东超越数控电子股份有限公司 | 一种基于飞腾服务器pcie接口卡的dma数据传输方法 |
CN110851376A (zh) * | 2019-10-21 | 2020-02-28 | 天津大学 | 一种基于FPGA的PCIe接口设计方法 |
CN115617722A (zh) * | 2022-12-05 | 2023-01-17 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
CN101052013A (zh) * | 2007-05-22 | 2007-10-10 | 杭州华三通信技术有限公司 | 一种网络设备内部管理通道实现的方法及系统 |
CN101540764A (zh) * | 2009-04-27 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种基于fpga的面向虚拟机的数据传输和路由方法 |
CN101902504A (zh) * | 2009-05-27 | 2010-12-01 | 北京神州飞航科技有限责任公司 | 航空电子全双工交换式以太网网卡及其集成化方法 |
-
2015
- 2015-10-16 CN CN201510670061.3A patent/CN105356988A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168643A1 (en) * | 2006-01-17 | 2007-07-19 | Hummel Mark D | DMA Address Translation in an IOMMU |
CN101052013A (zh) * | 2007-05-22 | 2007-10-10 | 杭州华三通信技术有限公司 | 一种网络设备内部管理通道实现的方法及系统 |
CN101540764A (zh) * | 2009-04-27 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种基于fpga的面向虚拟机的数据传输和路由方法 |
CN101902504A (zh) * | 2009-05-27 | 2010-12-01 | 北京神州飞航科技有限责任公司 | 航空电子全双工交换式以太网网卡及其集成化方法 |
Non-Patent Citations (1)
Title |
---|
高俊,杨灿美,杜学亮: "基于PCIe总线的多路实时传输系统设计", 《电子技术应用》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027349A (zh) * | 2016-04-29 | 2016-10-12 | 重庆爱思网安信息技术有限公司 | 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法 |
CN106027349B (zh) * | 2016-04-29 | 2019-01-18 | 重庆爱思网安信息技术有限公司 | 一种pci-e总线接口传输卡及基于该传输卡的数据传输方法 |
CN109753462A (zh) * | 2017-11-08 | 2019-05-14 | 山东超越数控电子股份有限公司 | 一种基于飞腾服务器pcie接口卡的dma数据传输方法 |
CN109165178A (zh) * | 2018-08-01 | 2019-01-08 | 北京遥感设备研究所 | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 |
CN109165178B (zh) * | 2018-08-01 | 2020-04-03 | 北京遥感设备研究所 | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 |
CN110851376A (zh) * | 2019-10-21 | 2020-02-28 | 天津大学 | 一种基于FPGA的PCIe接口设计方法 |
CN115617722A (zh) * | 2022-12-05 | 2023-01-17 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
CN115617722B (zh) * | 2022-12-05 | 2023-03-07 | 成都博宇利华科技有限公司 | 实现多pcie设备共享dma链表的系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105356988A (zh) | 一种基于PCIe的全双工DMA传输方法 | |
CN105183680B (zh) | 实现PCIe接口转CF卡接口的FPGA芯片及方法 | |
US9424214B2 (en) | Network interface controller with direct connection to host memory | |
WO2016202114A1 (zh) | 一种数据传输方法、装置及存储介质 | |
CN109471824B (zh) | 基于axi总线的数据传输系统及方法 | |
CN109411007B (zh) | 一种基于fpga的通用闪存测试系统 | |
JP2014501950A5 (zh) | ||
CN101317364A (zh) | 一种实现业务板和主控板通信的装置和方法 | |
KR102367359B1 (ko) | 직렬 시스템 버스 인터페이스 및 직접메모리액세스 컨트롤러를 갖는 전자 시스템 및 그 동작 방법 | |
CN105549916A (zh) | PCIe固态硬盘控制器、基于PCIe的存储系统及其数据读写方法 | |
CN110941578B (zh) | 一种具有dma功能的lio的设计方法及装置 | |
CN102073611B (zh) | 一种i2c总线控制系统及方法 | |
CN209168746U (zh) | 一种基于fpga的通用闪存测试系统 | |
KR102395075B1 (ko) | PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치 | |
CN116841932B (zh) | 一种可灵活连接的便携式高速数据存取设备及其工作方法 | |
JPH08116348A (ja) | 高速通信装置 | |
CN109165178A (zh) | 一种基于RapidIO的弹上系统SoC芯片间高速通信方法 | |
CN105635005A (zh) | 一种基于描述符的blvds总线数据传送装置及其方法 | |
CN104714918A (zh) | 主机环境下高速fc总线数据接收及缓冲方法 | |
CN101937413A (zh) | 一种i2c总线的通信方法 | |
CN101901199B (zh) | 一种数据透明传输的方法及系统 | |
CN101430739B (zh) | 一种集成芯片参数配置的系统及方法 | |
CN109522251A (zh) | 一种基于PXIe总线的高速同步串口卡及其工作方法 | |
CN111026691B (zh) | 基于apb总线的owi通讯设备 | |
CN104346310A (zh) | 一种高性能i2c从机数据交换电路及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160224 |