CN110851376A - 一种基于FPGA的PCIe接口设计方法 - Google Patents
一种基于FPGA的PCIe接口设计方法 Download PDFInfo
- Publication number
- CN110851376A CN110851376A CN201910997757.5A CN201910997757A CN110851376A CN 110851376 A CN110851376 A CN 110851376A CN 201910997757 A CN201910997757 A CN 201910997757A CN 110851376 A CN110851376 A CN 110851376A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- pcie
- pio
- core
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000013461 design Methods 0.000 title claims abstract description 18
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000012856 packing Methods 0.000 claims abstract description 7
- 230000002452 interceptive effect Effects 0.000 claims abstract description 4
- 230000005540 biological transmission Effects 0.000 claims description 16
- 238000004088 simulation Methods 0.000 claims description 7
- 238000012795 verification Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000007795 chemical reaction product Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明涉及一种基于FPGA的PCIe接口设计方法,建立FPGA工程并导入PCIe IP核将其实例化,对相应的需求进行配置,同时加入PIO设计的源文件;PIO模块内部主要包括RX接收模块、TX发送模块、存储器连接模块、存储器模块;EP端TX模块实现的是事务层TLP包的发送,是向Endpoint的PCIe IP核回传数据的发送模块,数据会最终发送至RC;在EP接收到Non‑Posted TLP,TX通过发送CplD或Cpl来响应操作,TX模块实现的是组包的过程;EP端RX模块实现的是事务层TLP包的接收,是用于接收和分析从外部发送来的读写TLP包的模块;PIO设计中的Mem Access模块实现数据的软硬件交互存储与读取;将PIO模块与PCIe的IP核模块相连接,PCIe的IP核模块负责将传输的事务层报文数据进行以PCIe协议为结构的拆包或组包。
Description
技术领域
本发明属于通信接口协议中的高速总线领域,涉及使用可编程输入输出PIO模块进行PCIe协议的事务层数据传输。
背景技术
随着科技的不断发展,人们对数据的传输速度提出了越来越高的要求,传统的并行数据传输模式已经不能满足高性能应用对高速数据传输的需求,高速串行数据传输技术由于具备高传输速率、低响应时间等优势,逐渐成为了主流,并广泛应用在个人计算机,数据存储等很多方面。Intel公司于2001年提出PCIe(PCI Express)总线技术,PCIe在计算机架构中属于局部总线,主要负责连接外部设备,这些设备可以是PCIe设备,也可以是通过桥连接其他接口的设备。
PCIe的技术优势使得其在问世之初就成为了研究的热点,并且在传统领域已经逐渐取代了PCI总线,成为了主流IO总线技术。2002年,PCI-SIG组织发布PCIe 1.0标准,之后于2007年上半年公布2.0标准,并且将数据传输速率由2.5GT/s(千兆传输/秒)提升到5GT/s。2010年,PCIe 3.0规范将数据传输速率提升到8GT/s,并且编码规范也使用了效率更高的128b/130b编码。在2017年,PCI-SIG组织正式发布PCIe 4.0规范,传输速率定义为16GT/s,是PCIe 3.0版本的两倍。
目前,Xilinx公司推出的一系列芯片已经具备实现PCIe技术的能力,如其高端产品Virtex系列FPGA部分型号集成了高速收发器模块,数据传输速率达3.125Gbps,用来支持PCIe数据传输。Altera公司也在其高端产品Stratix系列部分型号中集成了PCIe软硬核。2011年,日本的Otani Sugako等人实现了基于PCIe的多核通信芯片系统;2015年,Thoma等人完成了基于PCIe总线的FPGA与GPU通信接口的构建;此外,UCSD大学开发出了RIFFA(Reusable Integration Framework for FPGA Accelerators)FPGA加速器可重建集成架构,开发者可以通过使用Python、Matlab等简单语句实现主机与FPGA IP核的通信,在硬件端口层面上通过FIFO传输独立的握手信号,实现读/写数据操作。目前,国内的电子科技大学、国防科技大学等高校以及一些科研院所等单位也对PCIe协议,尤其是高速串口通信进行了研究。
基于以上背景,通过使用FPGA自带的PCIe IP核,并使用Verilog语言设计其事务层逻辑架构,实现FPGA端作为End Point(EP)模式下PCIe IP核与上位机的正常通信也成为应用的热点内容。
发明内容
本发明提供一种PCIe接口设计方法,在使用基于Xilinx Kintex-7系列FPGA的基础上,使用其自带的PCIe IP核,对其进行可编程输入输出的PIO模块进行代码设计,上位机与EP端的通信以PCIe协议的事务层报文(TLP:Transaction Layer Packet)的形式进行交互,以实现上位机与外接设备的接口通信。主要技术方案如下:
一种基于FPGA的PCIe接口设计方法,包括下列步骤:
(1)建立FPGA工程并导入PCIeIP核将其实例化,对相应的需求进行配置,同时加入PIO设计的源文件,RC端在此处是作为验证模块,不对应于实际电路,仅作为EP端PIO设计的Testbench;RC端包括了数据接收模块、数据传输模块、配置模块仿真文件。
(2)PIO模块内部主要包括RX接收模块、TX发送模块、存储器连接模块、存储器模块;其中模块间能否相互传输数据,是以多种信号的高低电平是否有效或是否无效为前提条件,其中包括Data数据传输信息、Keep保持信号、valid有效信号、Wr数据写信号、Rd数据读信号等;
(3)EP端TX模块实现的是事务层TLP包的发送,是向Endpoint的PCIe IP核回传数据的发送模块,数据会最终发送至RC;在EP接收到Non-Posted TLP,TX通过发送CplD或Cpl来响应操作,TX模块实现的是组包的过程;
(4)EP端RX模块实现的是事务层TLP包的接收,是用于接收和分析从外部发送来的读写TLP包的模块;在RC向EP发送数据时,数据先到达EP的信号接收端口,并被传送至PCIeIP核模块,数据在核内被封装为符合PCIe协议的TLP包,再被传输至PIO模块,后由PIO中的RX模块接收解析,并与Memory模块和TX模块协同,响应相关操作;RX模块会对EP接收到的TLP包进行解析,实现拆包的过程;
(5)PIO设计中的Mem Access模块实现数据的软硬件交互存储与读取;Mem Access处理IO写或存储器写TLP时,会将报文包含的数据负载信息写入存储器硬件中;处理IO读或存储器读TLP报文时,会将数据从存储器中取出,使用TX将数据组包发送出去;
(6)将PIO模块与PCIe的IP核模块相连接,PCIe的IP核模块负责将传输的事务层报文数据进行以PCIe协议为结构的拆包或组包。
附图说明
图1 PCIe IP核顶层功能模块与接口图
图2存储器写操作TLP数据流向图
图3存储器读操作TLP数据流向图
具体实施方式
本发明是在使用基于Xilinx Kintex-7系列FPGA的基础上,使用其自带的PCIe IP核,对其进行可编程输入输出的PIO模块进行代码设计,上位机与EP端的通信以PCIe协议的事务层报文(TLP:Transaction Layer Packet)的形式进行交互,以实现上位机与外接设备的接口通信。
主要技术方案如下:
(7)建立FPGA工程并导入PCIe IP核将其实例化,对相应的需求进行配置,同时加入PIO设计的源文件,RC端在此处是作为验证模块,不对应于实际电路,因此RC是用于仿真而不可综合的,仅作为EP端PIO设计的Testbench。RC端包括了数据接收模块、数据传输模块、配置模块等仿真文件。
(8)PIO模块内部主要包括RX接收模块、TX发送模块、存储器连接模块、存储器模块。其中模块间能否相互传输数据,是以多种信号的高低电平是否有效或是否无效为前提条件,其中包括Data数据传输信息、Keep保持信号、valid有效信号、Wr数据写信号、Rd数据读信号等。
(9)EP端TX模块实现的是事务层TLP包的发送,是向Endpoint的PCIe IP核回传数据的发送模块,数据会最终发送至RC。在EP接收到Non-Posted TLP(需要回传数据的报文),如存储器读、配置读写等报文时,TX通过发送CplD(带数据的完成报文)或Cpl(不带数据的完成报文)来响应操作。TX模块实现的是组包的过程。
(10)EP端RX模块实现的是事务层TLP包的接收,是用于接收和分析从外部发送来的读写TLP包的模块。在RC向EP发送数据时,数据先到达EP的信号接收端口,并被传送至PCIe IP核模块,数据在核内被封装为符合PCIe协议的TLP包,再被传输至PIO模块,后由PIO中的RX模块接收解析,并与Memory模块和TX模块协同,响应相关操作。RX模块会对EP接收到的TLP包进行解析,实现拆包的过程。
(11)PIO设计中的Mem Access(存储器控制器)模块实现数据的软硬件交互存储与读取。Mem Access处理IO写或存储器写TLP时,会将报文包含的数据负载信息写入存储器硬件中;处理IO读或存储器读TLP报文时,会将数据从存储器中取出,使用TX将数据组包发送出去。
(12)将PIO模块与PCIe的IP核模块相连接,PCIe的IP核模块负责将传输的事务层报文数据进行以PCIe协议为结构的拆包(拆开事务层报文提取信息)或组包(将信息按照事务层报文形式的组装)。
整个PCIe IP核功能模块架构如图1所示。图2、图3为进行存储器读写操作时各个模块间的数据流向图。下面具体描述应用的流程:
(1)首先在ISE软件上建立PCIe工程,将其IP进行配置并实例化,在设备类型中选择Endpoint Device,以实现Endpoint型应用,即把FPGA端设置为EP。选择Xilinx Kintex-7KC705系列验证平台配置IP核。
(2)把PCIe PIO的代码导入到工程中,其中包括EP端的Verilog代码,以及用于仿真验证的RC端testbench代码。
(3)对代码进行综合并使用Modelsim软件进行仿真,从仿真波形中把RC和EP的相关信号波形加入Wave窗口观察,将信号分为RC-tx、EP-rx、EP-tx、RC-rx四个部分,分别对应RC的发送信号,EP的接收信号,EP的发送信号,RC的接收信号,这样可以观察到读写操作的数据流。
(4)仿真无误后测试PCIe系统与上位机的通信情况,将FPGA插入到服务器的PCIe总线接口上,把服务器作为上位机,使用Windriver软件通过PCIe总线接口向FPGA写入/读取数据,打开ChipScope查看上位机与作为EP终端的FPGA通信的数据收发过程的波形,进而分析数据传递的正确性。
Claims (1)
1.一种基于FPGA的PCIe接口设计方法,包括下列步骤:
(1)建立FPGA工程并导入PCIeIP核将其实例化,对相应的需求进行配置,同时加入PIO设计的源文件,RC端在此处是作为验证模块,不对应于实际电路,仅作为EP端PIO设计的Testbench;RC端包括了数据接收模块、数据传输模块、配置模块仿真文件。
(2)PIO模块内部主要包括RX接收模块、TX发送模块、存储器连接模块、存储器模块;其中模块间能否相互传输数据,是以多种信号的高低电平是否有效或是否无效为前提条件,其中包括Data数据传输信息、Keep保持信号、valid有效信号、Wr数据写信号、Rd数据读信号等;
(3)EP端TX模块实现的是事务层TLP包的发送,是向Endpoint的PCIe IP核回传数据的发送模块,数据会最终发送至RC;在EP接收到Non-Posted TLP,TX通过发送CplD或Cpl来响应操作,TX模块实现的是组包的过程;
(4)EP端RX模块实现的是事务层TLP包的接收,是用于接收和分析从外部发送来的读写TLP包的模块;在RC向EP发送数据时,数据先到达EP的信号接收端口,并被传送至PCIeIP核模块,数据在核内被封装为符合PCIe协议的TLP包,再被传输至PIO模块,后由PIO中的RX模块接收解析,并与Memory模块和TX模块协同,响应相关操作;RX模块会对EP接收到的TLP包进行解析,实现拆包的过程;
(5)PIO设计中的Mem Access模块实现数据的软硬件交互存储与读取;Mem Access处理IO写或存储器写TLP时,会将报文包含的数据负载信息写入存储器硬件中;处理IO读或存储器读TLP报文时,会将数据从存储器中取出,使用TX将数据组包发送出去;
(6)将PIO模块与PCIe的IP核模块相连接,PCIe的IP核模块负责将传输的事务层报文数据进行以PCIe协议为结构的拆包或组包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910997757.5A CN110851376A (zh) | 2019-10-21 | 2019-10-21 | 一种基于FPGA的PCIe接口设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910997757.5A CN110851376A (zh) | 2019-10-21 | 2019-10-21 | 一种基于FPGA的PCIe接口设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110851376A true CN110851376A (zh) | 2020-02-28 |
Family
ID=69597558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910997757.5A Pending CN110851376A (zh) | 2019-10-21 | 2019-10-21 | 一种基于FPGA的PCIe接口设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851376A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051212A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 图形处理器、数据传输方法、装置、电子设备和存储介质 |
CN114546917A (zh) * | 2022-01-29 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种fpga侧辅助ip系统 |
CN117369906A (zh) * | 2023-12-07 | 2024-01-09 | 成都市楠菲微电子有限公司 | Pcie验证平台、方法、装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009188508A (ja) * | 2008-02-04 | 2009-08-20 | Toshiba Corp | データ送受信装置 |
CN103098428A (zh) * | 2012-10-27 | 2013-05-08 | 华为技术有限公司 | 一种实现pcie交换网络的报文传输方法、设备、系统和存储介质 |
CN103559156A (zh) * | 2013-11-11 | 2014-02-05 | 北京大学 | 一种fpga与计算机之间的通信系统 |
KR20150037002A (ko) * | 2013-09-30 | 2015-04-08 | 주식회사 유니테스트 | Fpga 기반의 비실장형 스토리지 테스트 장치 |
CN105356988A (zh) * | 2015-10-16 | 2016-02-24 | 陕西海泰电子有限责任公司 | 一种基于PCIe的全双工DMA传输方法 |
-
2019
- 2019-10-21 CN CN201910997757.5A patent/CN110851376A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009188508A (ja) * | 2008-02-04 | 2009-08-20 | Toshiba Corp | データ送受信装置 |
CN103098428A (zh) * | 2012-10-27 | 2013-05-08 | 华为技术有限公司 | 一种实现pcie交换网络的报文传输方法、设备、系统和存储介质 |
KR20150037002A (ko) * | 2013-09-30 | 2015-04-08 | 주식회사 유니테스트 | Fpga 기반의 비실장형 스토리지 테스트 장치 |
CN103559156A (zh) * | 2013-11-11 | 2014-02-05 | 北京大学 | 一种fpga与计算机之间的通信系统 |
CN105356988A (zh) * | 2015-10-16 | 2016-02-24 | 陕西海泰电子有限责任公司 | 一种基于PCIe的全双工DMA传输方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051212A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 图形处理器、数据传输方法、装置、电子设备和存储介质 |
CN113051212B (zh) * | 2021-03-02 | 2023-12-05 | 长沙景嘉微电子股份有限公司 | 图形处理器、数据传输方法、装置、电子设备和存储介质 |
CN114546917A (zh) * | 2022-01-29 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种fpga侧辅助ip系统 |
CN117369906A (zh) * | 2023-12-07 | 2024-01-09 | 成都市楠菲微电子有限公司 | Pcie验证平台、方法、装置、存储介质及电子设备 |
CN117369906B (zh) * | 2023-12-07 | 2024-02-09 | 成都市楠菲微电子有限公司 | Pcie验证平台、方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851376A (zh) | 一种基于FPGA的PCIe接口设计方法 | |
US6769622B1 (en) | System and method for simulating universal serial bus smart card device connected to USB host | |
CN108768981B (zh) | 一种实现Powerlink工业实时以太网通讯的IP核 | |
CN107911391A (zh) | 一种基于fpga的axi协议与spi协议转换的方法 | |
CN114880977A (zh) | 软硬件联合仿真系统、方法、装置、设备和存储介质 | |
CN113760748A (zh) | 一种fpga原型验证装置及方法 | |
CN105068955A (zh) | 一种局部总线结构及数据交互方法 | |
CN109634901A (zh) | 一种基于uart的数据传输系统及其控制方法 | |
CN201251783Y (zh) | 基于pci-e的光纤传输卡 | |
CN106294228A (zh) | 输入输出扩展芯片以及其验证方法 | |
CN105808476A (zh) | 跨时钟域数据的传输方法及装置 | |
CN106502951A (zh) | Pcie接口数据摆渡卡及其摆渡数据的方法 | |
CN112631976A (zh) | 一种可配置硬件ip电路结构 | |
CN113422756B (zh) | 验证数据传输方法、速率转换装置以及验证数据传输系统 | |
CN105550146B (zh) | 一种opb总线和ips总线之间的桥装置 | |
CN113570050A (zh) | 一种双向异步同步先进先出适配器 | |
CN210402342U (zh) | 一种基于zynq的数据加解密结构 | |
Du et al. | Research on XDMA high-speed data transmission architecture based on PCIe | |
CN113609052A (zh) | 基于fpga和微处理器的芯片模拟系统及实现方法 | |
CN108595357B (zh) | 基于fpga的dm365数据传输接口电路 | |
Cui et al. | Design of millisecond IP network USB hub for remote experiment education | |
Tembhare et al. | Design & implementation of PCI Express Bus Physical layer using VHDL | |
CN101071406A (zh) | 接口可配置的通用串行总线控制器 | |
CN115543908B (zh) | 基于FPGA的Aurora总线数据交互系统 | |
CN109446015B (zh) | 一种NVMe原型仿真验证结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200228 |