基于FPGA的PCI Express应用平台设计
2014-12-18李小龙孟李林邵瑞瑞张小磊
李小龙,孟李林,邵瑞瑞,张小磊
(1.西安邮电大学计算机学院,陕西西安 710061;2.西安邮电大学电子工程学院,陕西西安 710061)
传统的数据传输应用平台是基于PCI总线设计实现的。PCI总线是并行共享总线,具有数据传输速率慢等缺点。随着点对点高速串行PCI Express(Peripheral Component Interconnect Express,PCI- E)总线的发展,基于PCI-E总线的新型数据传输应用平台已逐渐取代了传统的基于PCI总线数据传输应用平台。PCI-E总线不仅在系统软件级与PCI总线兼容,且与PCI等传统总线相比具有更高的带宽和灵活的可配置通道数。
以FPGA为核心设计数据传输应用平台,具有硬件电路设计简单、可重构性、提供片上PCI-E IP硬核、并可实现SOPC功能等特点。所以在计算机、通信等领域获得了广泛应用,更使得高速系统设计不必过多地关注PCI-E总线的复杂设计,大幅提高了设计的可靠性,缩短了设计的研发周期[1]。本文设计实现了基于FPGA的PCI Express应用平台。
1 方案实施基础
1.1 PCI-E协议规范
PCI-E作为第三代I/O技术由Intel公布,并随后被PCI-SIG(Peripheral Component Interconne-ct Special Interest Group)正式命名为“PCI Expres- s[2]”。作为串行连接方式的总线,PCI-E协议规范定义了一种分层的设备体系结构,包括事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),所有数据的接收和发送过程中均以包的形式在各层之间传输[3]。PCI-E总线的层次结构如图1所示。
(1)事务层是PCI-E中的最上层,负责事务层包(Transaction Layer Packet,TLP)的封装与分解,并进行流速控制管理、数据包队列管理以及利用多虚拟通道提供服务质量(Quality of Service)。
(2)数据链路层是PCI-E的中间层,主要负责完成数据完整性检查、错误检测与纠正。数据链路层实现了包的应答和重传机制,每个包用一个唯一的标识来确保应答可正确地定位请求,若出错则重传出错标识的所有后续包,以此保证数据的可靠性。
(3)物理层分为逻辑物理子层和电气物理子层。逻辑物理子层完成与数据链路层的数据交换、8b/10b编解码、并串和串并转换。电气物理子层负责对每路串行数据进行差分驱动传输。
(4)设备核心层并不属于PCI-E协议规范。其主要向事务层提供封装TLP所需的数据,或接收事务层拆包后的数据。
图1 PCI-E总线分层结构
1.2 FPGA器件选型
选用Altera公司的Cyclone IV GX系列FPGA为核心实现PCI-E数据传输应用平台。该系列FPGA器件包含多达8个3.125 Gbit·s-1速率的全双工高速收发器,并支持物理编码子层(PCS)、物理介质附加子层(PMA)和PCI-E IP硬核,可完全实现PCI-E基本规范所需的 2.5 Gbit·s-1速率、8b/10b编解码和PCI-E分层协议栈,并可减少应用平台设计的难度,且加快了研发周期[4]。
2 应用平台设计
基于PCI-E总线设计了一种Windows XP操作系统下的数据传输及处理应用平台,满足PCI-E基本规范所需的总线传输速率和分层体系结构,并可通过多种数据传输模式来适用于不同的应用场合,如数据采集、数据下发和数据处理等。应用平台设计包括软件和硬件两部分组成,硬件部分包括FPGA内部逻辑电路,PCI-E IP硬核等;软件部分包括上位机控制程序和应用平台在Windows操作系统下的驱动程序。
2.1 硬件设计
硬件设计主要包括PCI-E IP硬核接口、控制模块、DMA模块和数据处理/接口电路,应用平台的硬件结构如图2所示。
图2 应用平台的硬件结构框图
(1)PCI-E IP硬核接口完成PCI-E IP硬核与设备核心层之间的数据桥接功能。PCI-E IP硬核实现了PCI-E的协议规范,还提供了与设备核心层的接口。Cyclone IV GX系列器件提供的PCI-E IP硬核与设备核心层的接口为一组内存映射(Avalon Memory Map)接口,其中包括 TX接口、RX接口和 CRA接口[5]。
TX接口是指由设备核心层发起的数据传输接口,映射了事务层存储器的读和写请求事务。TX接口支持突发数据传输,实现设备核心层与PCI-E硬核接口的高速数据传输。
RX接口是指由上位机发起的数据传输接口,是对事务层存储器读和写事务的映射。用作上位机发送控制命令的接口。
CRA接口是PCI-E IP硬核配置空间访问接口,通过此接口可访问PCI-E IP硬核的配置寄存器,并完成对PCI-E IP硬核的初始化和配置。此接口可由设备核心层直接访问或上位机通过RX接口访问。
(2)控制模块主要完成设备核心层数据传输和数据处理控制。上位机通过RX接口向控制寄存器写入命令字,控制模块则通过解析命令字,启动相应的模块完成命令。根据应用的不同,控制模块可由CPU或电路实现。CPU可通过编写不同的应用软件来完成相对复杂的控制,但运行速率有限。虽然电路的运行速率较高,但复杂的控制命令将使电路的设计变得复杂。
(3)DMA模块实现上位机与应用平台之间高速数据传输。该模块包含两个独立的DMA通道,通道1控制数据从上位机到应用平台的数据下发传输;通道2控制数据从应用平台到上位机的数据上传。上位机通过RX接口控制应用平台上的DMA模块实现数据下发和上传操作。应用平台上包含下发和上传缓存,分别缓存来自上位机的下发数据和来自外设输入的上传数据。每个缓存均由两块独立的8 kB RAM组成,两块8 kB RAM采用乒乓工作方式,实现不间断的高速数据传输[6]。
(4)数据处理/接口电路是PCI-E设备的功能模块,实现PCI-E应用平台的数据处理或接口电路功能,如数据采集中实现采集设备的接口电路,或在图像处理中完成对图像信号的处理算法等。
2.2 传输模式一
适用于高速数据上传,这种模式主要是将外设采集到的数据通过PCI-E总线数据传输应用平台高速上传至上位机[7]。其工作流程如下:
(1)将平台配置为上传模式。
(2)由上位机通过RX接口向控制模块写入数据上传命令,而控制模块在接到命令后启动外设开始采集数据,外设将采集的数据通过数据处理/接口电路送入FPGA内部两块8 kB的缓存RAM中。
(3)控制模块同时启动DMA模块,将FPGA内部两块8 kB RAM缓存的输入数据采用乒乓工作方式上传到上位机。
(4)当DMA数据传输完成时,通过RX接口通知上位机数据传输完成,上位机采用查询方式进行数据提取等项操作,至此一次传输任务完成。
2.3 传输模式二
传输模式二适用于高速数据下发,这种模式主要是将上位机数据通过PCI-E总线数据传输应用平台高速下发至外设。其工作流程如下:
(1)将平台配置为下发模式。
(2)由上位机通过RX接口向控制模块写入数据下发命令,控制模块在接到命令后启动DMA模块从上位机中读出数据,并写入到8 kB RAM中。
(3)同时数据处理/接口电路采用乒乓工作方式从8 kB RAM中读出数据,并输出到外设。
(4)当DMA数据传输完成时,通过RX接口通知上位机数据传输完成,上位机采用查询方式获取DMA数据传输状态,至此一次传输任务完成。
2.4 传输模式三
传输模式三适用于高速数据上传或下发,这种模式中PCI-E应用平台先完成对上位机中待处理数据的下发,然后将FPGA处理后的数据再上传到上位机。传输模式三可看作模式一与模式二的混合应用。其不同之处在于,模式三执行模式一操作,或执行模式二操作,不能两种同时执行。模式三适用于高速数据灵活收发的工作方式。相对于模式一或模式二来说,模式三收发速率较低。
2.5 软件设计
软件设计包括应用平台的设备驱动和不同传输模式下的控制软件设计。传输模式一的控制软件流程如图3所示。
图3 传输模式一控制软件流程图
传输模式二的控制软件流程如图4所示。
图4 传输模式二控制软件流程图
传输模式三的控制软件流程如图5所示。
图5 传输模式三控制软件流程图
设备驱动是计算机系统中软硬件的交互接口,此应用平台的设备驱动基于Windows下的WDF(Windows Driver Foundation)框架完成。为提高驱动效率及通用性,此设计的设备驱动将内核态的硬件资源全部映射到了应用空间,具体控制由各模式控制软件完成[8-9]。
3 验证与实现
应用平台采用Altera公司型号为EP4CGX50C F23C6的FPGA器件为核心,研发设计出PCI-E X4通道PCB板卡,使用Verilog HDL语言设计FPGA内部硬件电路,并在Quartus II 12.0开发环境下进行设计实现。基于Windows XP操作系统编写PCI-E应用平台驱动,进行验证测试。受所选FPGA器件的PCI-E IP硬核限制,仅以PCI-E基础规范1.1版本进行验证。在传输模式一中,由应用平台上的FPGA电路模拟外设生成的随机数作为测试数据包;在传输模式二中,由上位机软件产生随机数作为测试数据包。测试数据包采用连续生成方式,生成速率>8 Gbit·s-1。测试结果采用统计平均方式,即从一次连续10 s的数据传输量中,计算出数据的传输速率。
传输模式三下Signal Tap II逻辑分析仪捕获的作业包长为2 kB时的TX接口写和读操作时序图如图6和图7所示。
图6 TX接口写操作时序图
图6中txs_addr表示输出缓冲区地址,0x800表示输出缓冲区起始地址;txs_wdata表示写数据;txs_wen为高电平有效写使能;txs_byteen表示字节使能;burstcont表示TX接口一次写突发的数据长度,0x40表示此次突发长度为512字节;txs_waitreq表示TX接口等待请求,为低电平时方可进行TX接口写操作。对于2 kB的包,TX接口需进行4次写操作,每次写512字节才可将FPGA内的上传缓存RAM中的数据包写到上位机内存中。
图7 TX接口读操作时序图
图7中txs_addr表示输入缓冲区地址,0x000表示输入缓冲区起始地址。txs_rdvalid为高电平时txs_rdata读数据才为有效数据。对于2 kB的包,TX接口读操作需进行4次,每次读512 Byte才能将上位机内存中的数据包读到FPGA内的下发缓存RAM中。
验证测试结果如表1~表3所示。传输模式一和传输模式二的测试速率低于PCI-E理论速率。因实际进行DMA传输时,需耗费一定时间,同时数据在PCI-E IP硬核传输过程中也不可避免的会产生一定的时间损耗,这些降低了数据的传输速率。传输模式三包括有上传和下发两种工作方式,此模式下上传和下发不能同时工作,实际传输速率明显降低,此外还包含传输模式一和二所提及的原因。
表1 传输模式一测试结果
表2 传输模式二测试结果
表3 传输模式三测试结果
4 结束语
介绍了一种基于FPGA的PCI-E应用平台设计,且描述了3种不同的数据传输模式,以Windows XP操作系统为验证平台,分别对3种传输模式进行了实现及验证,系统工作稳定,资源利用率较高,最高传输速率可达7.12 Gbit·s-1。此应用平台的设计与实现,为需要构建各种高速数据传输系统的设计师提供了参考。
[1] 陈雪,李佩玥,章明朝,等.基于PCI Express总线的高速光纤接口卡的设计与实现[J].电子技术应用,2011,37(5):64-67.
[2] 林锦棠,敖发良.PCI Express研究及基于FPGA的实现[J].微计算机信息,2008,24(29):185 -187.
[3] PCI- SIG.PCI express base specification revision 1.1[S].USA:PCI-SIG,2005.
[4] Altera Corporation.Cyclone IV device handbook[EB/OL].(2013-05-09)[2014-03-21]http://www.altera.com.cn/literatur-e/hb/cyclone-iv/cyclone4 -handbook.pdf.
[5] Altera Corporation.IP compiler for PCI express user guide[EB/OL].(2011-05-09)[2014-3-21]http://www.altera.co - m.cn/literature/ug/ug_pci_express.pdf.
[6] 王伟,傅其祥.基于PCIe总线的超高速信号采集卡的设计[J].电子设计工程,2010,18(5):43 -45.
[7] 李木国,黄影,刘于之.基于PCIe总线的高速数据采集卡设计与实现[J].测控技术,2013,32(7):19-22.
[8] 李正平,徐超,陈军宁,等.WDF设备驱动程序的设计与实现[J].计算机技术与发展,2007,17(5):228 -230.
[9] 王晓庆,周晓波,赵强.PCIE高速数据采集系统的驱动及上位机软件开发[J].计算机应用与软件,2013,30(9):331-333.