当前位置:文档之家› 基于IP核的PCI+Express接口

基于IP核的PCI+Express接口

第35卷1%k35第24期

No.24

计算机工程

ComputerEngineering

2009年1≥月

December2009

?工程应用技术与实现?文章■号t1000_3428(2009)24珈23争卅3文献标识码?A中圈分类号lN945基于IP核的PCIExpress接口

徐天1.何道君2徐金甫1

(1.解放军信息工程大学电子技术学院,郑州450004;2.北方信息技术研究所,北京100072)

I耍:提出一种基于IP核的PCIExpress接口设计方案,采用分层的体系结构,具有高性能、高可靠性、软件兼容等特点。在Xilinx公司的xc5vlx30tFPGA器件中,运用PCIExpress硬核端点模块,设计并实现了PCIExpress总线接口,同时在接口内部设计了DMA控制器。仿真实验结果表明,该接13能够有效提高总线的数据传输速率,充分发挥总线的性能。

关■诃:PCIExpress总线;现场可编程门阵列;DMA控制器;IP核

PCIExpressInterfaceBasedonIP--core

XUTianl,HEDao-jun2,XUJin-ful

(1.InstituteofElectronicTechnology,PLAInformationEngineeringUniversity,Zhengzhou450004;

2.NorthInformationTechnologyInstitute,Beijing100072)

[AbstraetlAdesignschemeforPCIExpressinterfacebasedonIP-coreisproposed,whichusesstoriedstructureandhassuchcharacteristicsashizhperformance.highreliabilityandsoRwarecompatibility.ThePCIExpressbusinterfaceisdesignedandimplementedbyusingPCIExpressendpointblockhardIP?coreinXilinxxcSvlx30tFieldProgrammableGateArrBy(FPGA、.ADMAcontrollerisalsodesignedinsidetheinterfacelogiccircuit.SimulationexperimentalresultsshowthisinterfacespeedsupthefrequencyofdatatransferandthehigllperformanceofPCIExpressbusisdemonstratedadequately.

[Keywords]PCIExpressbus;FieldProgrammableGateArray(FPGA);DMAcontroller;IP?COre

现代测控系统和通信领域对数据传输速率的要求越来越高。相比PC中其他技术的发展,总线技术的发展显得相对缓慢,总线性能已经成为制约系统性能发挥的瓶颈。传统的ISA,EISA总线等已无法适应高速数据传输的要求,PCI总线技术虽然经过了不断的修正和发展,但是由于它固有的缺陷,使其应用领域受到限制【l】。PCIExpress总线以其优异的性能和低廉的造价引起了业界的广泛关注。具有广阔的应用前景。本文介绍PCIExpress总线接13的设计方法,并实现一个基于IP核的PCIExpress总线接口。.

1PCIExpress总线倚介

PCIExpress总线IzJ是Iatel公司于1997年提出的第3代I,o技术,是种全新的串行总线技术。与PCI总线相比,PCIExpress总线具有以下特点:

(1)在数据传输模式上,PCIExpress总线采用双工串行传输模式,一条PCIExpress通道由2对LVDS差分线对组成:一对负责发送,另一对负责接收,单向数据传输速率为2.5Gb/s。

(2)具有很好的灵活性,一个PCIExpress物理连接可以根据实际需要配置成Xl,x2,×4,x8,X16,x32个并行的数据通道,满足不同设备之间通信带宽的要求。

(3)在软件层与PCI总线完全兼容,原有PCI总线的驱动程序可以完全移植到PCIExpress总线架构的系统中。

(4)串行连接采用自同步时钟技术,时钟内嵌于串行数据的8bit/10bit编码中,可实现数据传输率的自适应调整。

PCIExpress协议定义了3层结构:物理层,数据链路层和事务层。每个层次按照协议中规定的内容,完成相应的数据处理功能。2PCIExpress接口设计方法

PCIExpress总线的接13的设计方法大体有2种:使用专用接13芯片或者使用可以实现PCIExpress物理接13的可编程器件。

专用接13芯片实现了PCIExpress总线的物理层、数据链路层和事务层的控制逻辑。例如,PEX8311是PLX公司推出的第1款本地总线到PCIExpressxI的桥接芯片13珥l,符合PCIExpress1.0规范,支持自动极性反转、CRC校验、链路设备电源管理,具有直接主模式、直接从模式、DMA和数据预取等功能。

使用PEX8311实现PCIExpress接13,用户仅需实现相对筒单的本地总线接口即可,降低了开发难度。但是这种方法受限于专用接口芯片的性能,用户无法根据自身的需求提升接口的性能。

可编程器件设计方案的基本思想是由FPGA实现PCIExpress的上层电路,利用Philip公司或TI公司提供的PHY(物理层)器件实现物理层接13,通常需要购买Xilinx公司或Altera公司提供的IP核与PHY器件首己合使用。在有些FPGA产品中,集成有PCIExpress接I:1的硬核模块,可以采用相应的产品实现PCIExpress接13的功能。例如,Xilinx公司Virtex-5LXT/SXT/FXT/TXT系列FPGA器件中,集成有

柞者筲介:徐天(1982--),男,助理工程师、硕士研究生,主研方向:专用集成电路设计应用,SOC系统设计;何道君,高级工程师;徐金甫,副教授

收稿日期:2009-08-20E-mail:xutian_1982@163.oom

—_239_一

万方数据

PCIF,xpress硬核端点模块,能够自动完成数据链路层和物理层的数据处理功能。采用这种方法,用户只需要设计处理事务层数据包的逻辑电路即可。还可以根据自己的需求,设计具有特殊功能的电路结构,发挥接口的性能,但是这种方法的开发难度较大,开发周期相对较长。

3PCIExpress接口实现

本设计采用Xilinx公司Virtex.5系列xcSvlx30t芯片,使用该芯片内部的PCIExpressEndpoint硬核端点模块,设计了处理事务层数据的逻辑电路,实现了计算机内存与用户逻辑之间数据的正确传输。其中,控制状态机的设计和DMA控制器的设计是重点、难点,下面详细介绍具体的实现过程。3.1接口电路的设计

在接口电路中,PCIExpress物理层和数据链路层的电路采用Xilinx公司的PCIExpressEndpointBlockplusv1.5硬核端点模块实现,能够有效完成接El物理层和数据链路层的数据处理功能,提供给上层一个事务层数据接I:1。

上层电路主要由5部分电路构成,分别是核配置与辅助控制模块、数据发送控制器、数据接收控制器、数据输入FIFO和数据输出FIFO,如图l所示,最终提供给用户FIFO类型的用户逻辑接口。

圈lPC!Express接口电麝结构

核配置与辅助控制模块与硬核端点模块紧密联系,完成硬核端点模块中通道宽度、时钟频率、设备号、版本号、存储空间类型与大小等一系列可控制参数的配置与一些基本功能的控制。

硬核端点模块提供的事务层数据接口为64bit的数据发送接口和64bit的数据接收接口以及控制数据发送和接收的一系列控制信号接口。数据接收控制器将收到的事务层包进行解析,根据数据包的类型进行相应的处理。数据发送控制器用于将所要发送的数据按照事务层包的格式进行封装后,发送到硬核端点模块。

数据输入FIFO和数据输出FIFO共同构成了数据通道,均为双端口FIFO,用于连接PCIExpress接I:l和用户逻辑。数据输入FIFO用于保存从接口收到的数据;用户逻辑电路输出的数据保存到数据输出FIFO中后发送到接口电路。3.2控翻状态机的设计’

数据发送控制器和数据接收控制器负责事务层数据的封装和解析工作,是本设计中的关键电路模块。这两个模块均采用有限状态机方式进行设计,下面详细介绍这2个模块状态机的设计。

接收控制器从硬核端点模块中收到事务层包(TLP),根据TLP的格式,第56bit-第62bit为表示数据包类型的标志位。按照标志位中的信息,对TLP的内容进行解析,进行相应的数据操作。所设计的状态机的状态转换图如图2所示,各个一24伊一状态的说明如表1所示。

圈2接收控■器状态枫

表1接收控钊器状态说明

状态

RXRSTSTATE

RXMEMRD32DWlDW2

RXMEMWR32DWlDW2

RXIOWRDWlDW2‘

RXMEMRD64DWlDW2

RXMEMWR64DWlDW2

RXMEMWR64DW3

RXWAITSTATE

}兑明

状态机守闲状态

存储器读操作,32bit模式,收到第l和

第2个双字

存储器写操作,32bit模式,收到第l和

第2个双字

IO写操作,收到第1和第2十双字

存储器读操作。64bit模式,收到第1和

第2个双字

存储器读操作,64bit模式,收到第l和

第2个双字

存储器写操作,“bn模式,收到第3个双字

状态机等待其他操作完成状态

系统复位后,接收控制器状态机处于空闲状态,等待接收数据包,收到TLP后跳转到相应的状态进行存储器或者I/O的读写操作。在操作过程中,对存储器或者I/O的状态进行监控,如果目标设备没有准备好,则进入等待状态直到目标设备就绪。在存储器或者I/O的读写操作完成后,状态机又返回空闲状态。在各个状态中接收控制器产生相应的控制信号完成数据的写入以及对发送控制器的操作。

与接收控制器状态机相比,发送控制器状态机相对简单,只有3个状态,状态转换图见图3,各个状态的说明见表2。

圈3发送控■器状态机

裹2发送控翻器状态说明

状态’兑明

TXRSTSTATE

TX——CPLD—.QwI

TXCPL.QWI

状态机空闲状态

有载荷数据的发送状态

无载茼数据的发送状态

1系统复位后,发送控制器状态机处于复位状态。当从接收控制器收到发送数据的命令后,如果需要发送的是一个载荷数据,则将从存储器或者I/0中取出的载荷数据填充到TLP

万方数据

中的相应位置后发送到端点模块;如果需要发送的只是一个响应或者标志信息,则直接封装成一个TLP发送到端点模块。

3.3DMA控倒器的设计一由于串行总线结构与传统的并行总线结构不同,因此存

储器的读写操作都是以数据包的形式传输。普通的读写操作一次最多只能进行64bit数据的读写,使得总线多数时间处于等待状态,严苇影响了PCIExpress总线的数据传输速率。本文设计出相应的DMA控制器,实现了DMA方式的数据传输。

DMA控制器的主要电路结构为14个与DMA操作相关

的寄存器,通过对这些控制寄存器的读写,设定DMA方式数据读写操作的地址范围和数据大小,完成DMA数据读写操作。这些寄存器的定义和功能描述如表3所示。

表3DMA控翻寄存器说明

在设计了上述14个DMA控制寄存器后,接收控制器和发送控制器的状态机也要进行相应的调整,以适应DMA操作的需要。在接收控制器状态机中加入了2个状态,分别用于接收数据传输过程中的第1个DMA数据包和剩余的DMA数据包。在发送控制器状态机中也加入了2个状态;分别用于发送数据传输过程中的第1个DMA数据包和剩余的DMA数据包。为了达到尽可能高的数据传输速率∥在接收和发送过程中都使用了64bit数据传输模式。

在设计了如上所述的DMA控制器后,PCIExpress总线接口就可以用DMA方式进行数据的读写操作。进行DMA读/写操作的具体过程如下:(1)写中断控制寄存器,打开中断;(2)写读/写地址寄存器,设置读/写数据的起始地址;(3)写读/写包长度寄存器,设置读/写数据包的大小;(4)写读/写包数量寄存器,设置读/写数据包的数量;(5)写控制寄存器,启动DMA读/写操作;(6)等待中断服务寄存器发出中断;(7)收到中断,读中断服务寄存器;(8)写中断控制寄存器,关闭中断。4仿真与性能测试

使用Verilog语言编写代码实现本设计,使用ModelsimSE6.29对该设计进行功能仿真。从数据写入FIFO的仿真波形图中可以看到,未采用DMA方式时,每次只能够将一个数据写入到FIFO中,在2次写操作之间存在较长的等待时间;采用DMA方式时,可以根据用户的设置连续写入多个数据,消除了2次操作之间的等待时间,大大提高了数据传输速率。

自行设计了采用Xilinx公司xc5vlx30t芯片的PCIExpressx4接口数据传输卡;使用Xilinx公司的ISE9.2对设计代码进行综合和布局布线,生成配置文件,下载到xc5vlx30t芯片中;使用DELLPrecision690工作站,在Windows环境下编写测试程序对数据传输卡PCIExpress接口数据传输的速率进行测试。

采用多种数据量对PCIExpress接口进行DMA方式读数据测试,得到的结果如图4所示,硬件层数据传输速率稳定在840Mb/s。

传输数据Wt/Kb

圈4实际测试读敦据速率

采用多种数据量对PCIExpress接13进行DMA方式写数据测试,得到的结果如图5所示,硬件层数据传输速率稳定在720Mb/s。

传精敢据量/Kb

圈5实际测试写数据速率

从图4、图5可以看出,DMA控制器有效减少了数据传输过程中的等待时间,大幅度地提高了数据传输速率,发挥了PCIExpress总线的优越性能。

5结束语

本文采用基于Xilinx公司硬IP核的方法设计实现了PCIExpress总线接口及数据的传输。对于DMA控制器的设计,能提高数据传输的速率,使PCIExpress总线的性能得到充分发挥。

参考文献

【1】熊彬.走进PCIExpress的世界[J】.微型计算机,2004,lO(9):112一117.

[2】PLXTechnologyInc..PEX8311ProductBrieffZ].(2005,12.06).http://www.plxtech.com/pdfftechnical/expresslane/Technolog),Brief——PCIExpress.pdf.

【3】PLXTechnologyInc~PEX8311ExpressLanePCIExpress.to-GenericLocalBusBridgeDataBookVersionO.90[Z].(2006—04—20、http://www.plxtech.corn/products/expresslane.

【4】刘豫.Xilinx可编程解决方案应对市场变化和成本挑战[J】.电子设计应用,2005,8(5):37—39.

编辑陈文

—乏41—

万方数据

基于IP核的PCI Express接口

作者:徐天, 何道君, 徐金甫, XU Tian, HE Dao-jun, XU Jin-fu

作者单位:徐天,徐金甫,XU Tian,XU Jin-fu(解放军信息工程大学电子技术学院,郑州,450004), 何道君,HE Dao-jun(北方信息技术研究所,北京,100072)

刊名:

计算机工程

英文刊名:COMPUTER ENGINEERING

年,卷(期):2009,35(24)

被引用次数:0次

参考文献(4条)

1.熊彬走进PCI Express的世界[期刊论文]-微型计算机 2004(09)

2.PLX Technology Inc PEX 8311 Product Brief 2005

3.PLX Technology Inc PEX 8311 Express Lane PCI Express-to-Generic Local Bus Bridge Data Book Version 0.90 2006

4.刘豫Xilinx可编程解决方案应对市场变化和成本挑战[期刊论文]-电子设计应用 2005(05)

相似文献(3条)

1.学位论文刘宁基于PCI Express接口的高速数据传输系统的设计与实现2008

随着高速采集系统、图像采集系统等测试系统的发展,在测试中产生的大容量数据如何快速传入计算机进行分析处理成为制约系统性能进一步提高及系统功能实现的一个重要环节。在此背景下,通过研制以LYDS接口高速接收发送数据并通过PCI Express计算机总线将数据传入计算机的接口卡,实现了将外部数据高速传入计算机。

论文在分析任务及技术指标的基础上,设计了系统总体方案。在硬件实现部分,介绍了基于PCI Express总线高速数据传输过程中的相关技术,对数据收发的接口及时序、FPGA实现PCI的主模式工作时序、FPGA实现PCI的从模式工作时序、FPGA实现PCIExpress总线配置、FPGA实现DMA传输、FPGA进行中断管理及电源分配等技术进行了详细的描述:在软件部分,结合系统读取数据过程介绍了驱动程序的结构以及为实现高速数据存盘而采用的多线程技术。在论文的结束部分给出了该接口卡自检、数据读入计算机等功能的试验过程及数据的分析结果。

本次设计完成的接口卡,是以PCI Express的X1接口实现的,如果以X16接口进行设计,采用RAID等技术,系统的性能将会进一步提高。

2.会议论文徐天.徐金甫.何道君PCI Ezpress接口设计技术研究2008

PCI Express总线是第3代I/O技术,是一种全新的串行总线技术.它采用分层的体系结构,具有高性能、高可靠性、软件兼容等特点.本文提出了一种实现PCI Express总线接口的方法,在Xilinx公司xc5vlx30t FPGA器件当中,采用PCI Express硬核端点模块,设计实现了PCI Express总线接口.测试结果表明,该设计能够达到较高的数据传输速率,发挥了PCI Express总线的性能.

3.学位论文孙勤林电子束曝光系统中高速数据传输卡的软件设计2010

在开发电子束曝光系统中控制部分的软硬件时,根据系统设计要求,需要数据处理速度达到300MB/s以上,由于实际数据处理单元都是由高速现场可编程门阵列(Field Programmable Gate Array, 简称FPGA)以硬件方式实现的,数据处理单元的速度足以满足系统要求。系统的速度瓶颈在于数据的传输部分,即从数据服务器传输到数据处理单元。为了解决这个问题,实际系统开发时,为数据服务器开发了一块专门用于高速数据传输的数据传输卡。该数据传输卡采用了PCI Express(Peripheral Component Interconnect Express)接口与主机进行数据通信,并利用FPGA的Aurora控制器通过光纤与数据处理单元进行高速数据传输。

高速数据传输卡采用PCI Express接口与主机进行通信是由于PCI Express总线能提供足够的带宽。由于PCI Express一个通道能提供2.5Gbps的带宽[1],该高速数据传输卡采用了x4的方式,理论上可以达到1GB/s的有效带宽。在实际开发时并不能完全发挥总线的带宽,但达到40%的效率还是可以保证的,即该设备至少能达到400MB/s的速度,在硬件层该数据传输卡保证了系统设计的目标。

在软件设计时,首先要为数据传输卡开发一个驱动程序。系统中数据服务器采用了x86_64的系统构架,并使用了64bit的Linux操作系统。因此就要在Linux系统下为数据传输卡开发驱动程序。驱动程序除了为应用程序提供访问硬件设备的接口之外,还要采用合适的驱动开发技术保证硬件设备的性能得以最大限度的发挥。

高速数据传输卡是通过DMA(Direct Memory Access)方式与数据服务器主机进行大数据量的高速传输的。驱动程序在处理DMA操作时,最主要的就是为DMA数据传输分配物理地址连续的内存块,同时用于DMA传输的内存块还需要满足高速缓存的一致性。

通常情况下,由于应用程序不能直接访问内核地址空间,应用程序对设备的访问采用双拷贝的方式,驱动程序需要在内核地址空间缓冲区与用户空间缓冲区之间进行数据拷贝,同时还需要在内核地址空间缓冲区与设备间进行数据拷贝。如果采用双拷贝方式,在DMA操作时,驱动程序先要将用户空间的数据拷贝到内核空间的DMA缓冲区,再通过DMA操作将DMA缓冲区的数据传输出去。虽然内存拷贝本身速度很快,但对于高速DMA传输而言,应用程序缓冲区与内核空间缓冲区的数据拷贝过程还是会很大程度上影响系统的性能。因此在驱动程序开发时采用了mmap方式。通过mmap方式可以将DMA缓冲区所对应的物理地址映射到用户进程空间,让用户程序通过用户空间的虚拟地址直接访问DMA缓冲区,即将数据直接存入内核DMA缓冲区中,将用户空间缓冲区与内核DMA缓冲区之间的拷贝过程去掉,从而提高系统性能。通过对系统的实际测试,采用双拷贝方式时的平均速度是224.26MB/s,采用mmap方式时的平均速度是358.88MB/s。采用mmap方式后数据传输速度比双拷贝方式提高了60%,并且达到了系统的性能要求。

本文链接:https://www.doczj.com/doc/b5893492.html,/Periodical_jsjgc200924079.aspx

授权使用:北京航空航天大学(bjhkht),授权号:96cc135e-bb7f-4eb9-810a-9e3d014577e0

下载时间:2010年11月29日

相关主题
文本预览
相关文档 最新文档