ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:20.21KB ,
资源ID:22816784      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22816784.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA在PCI Express总线接口中的应用.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FPGA在PCI Express总线接口中的应用.docx

1、FPGA在PCI Express总线接口中的应用FPGA在PCI Express总线接口中的应用 摘 要:随着高速数据采集设备传输带宽的日益提高,开发者需要采用新的计算机总线进行数据传输。这里叙述了使用EP2SGX90系列FPGA完成PCI-Express协议转换,多种DMA工作方式及相关寄存器的作用。以链式DMA传输方式为例,详细介绍该传输方式下的寄存器设置及在驱动程序中的实现范例。实验表明,用FPGA实现协议转换,总线持续传输速率最高可以达到1.2 Gb/s,满足大多数高速数据采集设备的要求。在此摒弃了采用专用总线接口芯片的传统方法,将开发者的逻辑设计和总线协议转换放到同一个FPGA芯片中

2、,不但节省了硬件成本,利用其可编程特性,大大提高了设计可扩展性,同样的硬件很容易完成由PCIE 1.0到PCIE 2.0的升级。 关键词:PCIE总线; 可编程器件; DMA传输; 高速数据采集设备 中图分类号:TN40; TP336 文献标识码:A 文章编号:1004-373X(2010)14-0109-03 Application of FPGA in PCI Express Bus Interface SHEN Hui, ZHANG Ping (Nanjing Institute of Electronic Technology, Nanjing 210000, China) Abstr

3、act: Along with increase of transmission bandwidth of the high-speed data acquisition systems, the designers have to use the new computer bus to complete the data transmission. The implementation of PCI-Express protocol transform with aplication of FPGA of EP2SGX90 series, the functions of multiple

4、DMA operation modes and the relative register are described. Taking the chained transmissin mode as an example, the register setup in the chained DMA transmission mode and the implementation in the driver are introduced in detail. By this means, the continuous transmission rate of the bus is up to 1

5、.2 GB. The experiment indicates that it can be applied to mass of data acquisition designs. One FPGA chip is adopted to accomplish the logic control and protocol transform of PCI-Express instead of the special bus interface chip. It lowers the design cost and improves the expandability of design. It

6、 is is for the same hardware to upgrade the PCIE1.0 to PCIE2.0. Keywords: PCIE bus; FPGA; DMA transfer; high-speed data acquisition equipment 0 引 言 PCIE(PCI express)是用来互联诸如计算机和通信平台应用中外围设备的第三代高性能I/O总线。PCIE体系结构继承了第二代总线体系结构最有用的特点,采用与PCI相同的使用模型和读/写通信模型,支持各种常见的事务。其存储器、I/O和配置地址空间与PCI的地址空间相同。由于地址空间模型没有变化,所

7、以现有的OS和驱动软件无需进行修改就可以在PCIE系统上运行1。 PCIE是串行协议,与原有的PCI并行总线相比,它没有大量的数据和控制线,对于硬件电路设计者来说,省去了很多硬件设计工作2。PCIE的传输速度远远大于PCI总线,PCIE 1.1版本单个链路的单向吞吐量能达到250 MB/s。对于需要与主机进行大容量传输的系统来说,该总线标准的优势是非常明显的3-4。 由于PCIE总线硬件设计简单,吞吐量大,软件向下兼容,只要找到合适的总线接口芯片,很容易将现有的PCI总线设备升级为PCI Express设备。Altera公司最新推出的EP2SGX90系列的芯片,给用户提供了PCIE接口IP核。

8、本文将结合实际的应用,详细介绍该IP核的使用情况,包括寄存器设置,DMA操作等。 1 功能描述及参数设置 按照PCIE协议的要求,该FPGA的IP核也采用三层体系结构,即传输层、数据链路层和物理层。这?层功能模块完成了PCIE的协议转换,在传输层上给开发人员提供了非常丰富的接口。开发人员的所有开发,包括DMA传输等都是在传输层以上进行的5。 传输层(transaction layer):完成TLP(数据传输包)的收发,含有虚拟信道(VC)缓冲区,具有端口仲裁、VC仲裁、流控制、数据重新排序和数据校验等功能。 数据链路层(data link layer):数据链路层的主要功能是保证在各链路上发送

9、和接收数据包时数据的完整性。在接收端,对数据进行严格的CRC校验,如果有错误,会给发送方返回1个NAK信号。发送端具有重传缓冲区,如果收到NAK信号,则把数据重新发送1次。 物理层(physical layer):对于发送端,接收数据链路层的数据包,把这些数据进行8 b/10 b编码,送到串行发送器上;对于接收端则刚好相反,收到串行码后,先解码,然后送给数据链路层。 在生成PCIE的IP核时,至少选择2个存储区,?桓霆?是BAR1:0,用作用户开发板的扩展存储区用;还有一个是BAR2,下面所有的寄存器操作都是基于该地址的。新生成的IP核不带有DMA功能,但是在工程文件夹下面有一个xxx exa

10、mples(xxx代表工程名称)的文件夹,文件夹里有简单DMA和链式DMA的例子代码,开发者只需要对这些代码进行修改,就能开发出适合自己的DMA功能模块。 2 简单DMA 该DMA传输模式相对比较简单,只需要对相应的寄存器进行设置即可完成,DMA传输步骤如下所示,每进行1次DMA传输,都需要按照下面的步骤进行1次设置。下面所述的偏移量都是相对于BAR2地址5。 (1) 设置偏移量为0x00和0x04的寄存器,写入DMA传输的主机端地址; (2) 设置偏移量为0x14的寄存器,写入DMA传输的PCIE端点地址; (3) 在偏移量为0x08的寄存器中写入本次DMA传输的长度,以字节为单位; (4)

11、 设置偏移量为0x0C的寄存器,设置DMA传输的属性,对该寄存器的写操作将启动本次DMA传输; (5) 读取0x0C的寄存器DMA传输状态位,察看本次DMA是否完成。 3 链式DMA 链式DMA是一种效率远远高于简单DMA的传输方式,它只需要1次启动操作,就可以完成多次DMA传输。这里将结合实际使用情况,详细介绍链式DMA的传输过程。 3.1 描述符表 实现链式DMA传输时,需要开发人员在主机内存中开辟一块空间,用来存储描述符表,它由一个表头和多个描述符组成,其中每一个描述符对应一次DMA操作。用户根据自己的需求填写该描述符表,关于该描述符表的详细说明如表1和表2所示6-7。 控制区域中含有一

12、些控制信息,其中第16位用来控制传输方向,为0是DMA写,为1是DMA读,这里的读/写是以主机端为参考的,如果以PCIE核为参考,方向刚好相反。第18位用来使能DMA传输计数,如果该位使能为1,那么在DMA传输过程中,PCIE核每完成1次DMA操作,都会进行1次计数操作,然后把这个计数结果传送给主机,主机把这个结果填写到描述符表的RCLAST字段中。 表大小是指本次链式DMA操作对应的描述符?鍪?,每个描述符对应一次DMA操作。 RCLAST是一个计数单元,它有两个作用,在链式DMA传输前,表示还有多少个DMA操作等待传输,由于它是从0开始计数的,所以这个值等于表大小减1。还有一个重要作用是在

13、链式DMA传输过程中,用来表示链式DMA传输的状态。如上所述,如果控制区域的第18位设置为1,那么每完成1次DMA操作,主机都会更新这个计数器。当计数器的数值(也是从0开始计数的)等于前面设置的期望传输的DMA次数,就表示链式DMA传输操作结束。开发人员可以用这个状态单元来察看本次传输是否结束,从而开始一个新的传输周期。 表1 描述符表表头 31 16 15 0 控制区域表大小 描述符表高32位基地址 描述符表低32位基地址 保留RCLAST 表2 描述符 31222116150 保留控制区域DMA长度 PCIE端点地址 主机端高32位地址 主机端低32位地址 DMA长度用来设置本描述符对应的

14、DMA传输的长度,是以32位为单位的。主机端地址用来指示数据存放存放的位置。 3.2 实现范例 根据上面介绍的描述符表,下面给出一个链式DMA读的驱动程序例子。首先生成一个描述符表,然后把描述符表表头的4个字段的内容分别写入BAR2地址偏移量为0x0,0x4,0x8和0xC寄存器中。写完后即开始此次链式DMA读传输,while循环用于等待链式DMA结束。从下面的代码可以看出,2个描述符对应2次DMA操作8-9。 #define DMA BLOCK 16 /*描述符表头*/ DmaTableVirtualAddress0=0x50002; DmaTableVirtualAddress1=DmaT

15、ablePhysicalAddress.HighPart; DmaTableVirtualAddress2=DmaTablePhysicalAddress.LowPart; DmaTableVirtualAddress3=0x1; /*2个描述符*/ DmaTableVirtualAddress4=DMA BLOCK; DmaTableVirtualAddress5=0; DmaTableVirtualAddress6= DmaBufferPhysicalAddress.HighPart; DmaTableVirtualAddress7=DmaBufferPhysicalAddress.Low

16、Part; DmaTableVirtualAddress8=DMA BLOCK; DmaTableVirtualAddress9=0; DmaTableVirtualAddress10=DmaBufferPhysicalAddress.HighPart; DmaTableVirtualAddress11=DmaBufferPhysicalAddress.LowPart+DMA BLOCK*4; /*填写寄存器,启动DMA传输*/ WRITE REGISTER ULONG(PULONG)(RegBase+0x0),DmaTableVirtualAddress0); WRITE REGISTER

17、ULONG(PULONG)(RegBase+0x4),DmaTableVirtualAddress1); WRITE REGISTER ULONG(PULONG)(RegBase+0x8),DmaTableVirtualAddress2); WRITE REGISTER ULONG(PULONG)(RegBase+0xc),DmaTableVirtualAddress3); while(dx-DmaTableVirtualAddress3!=0x44040001) 图1是用SignalTap工具获取的链式DMA读时序图。PCIE核接收tx req0请求信号,然后给出一个tx ack0,同时将t

18、x dv0置为有效,该信号套住的TX Data就是需要读取的有效数据10。在每次DMA结束之后,PCIE核都会用同样的控制逻辑给主机传送1个已完成DMA次数的状态字,如图1中的44040000h。 图1 链式DMA传输时序图 4 性能测试 在做总线性能测试时,采用链式DMA传输方式,共4个描述符表。根据实际使用的PCIE总线通道数和DMA长度的不同,实际测试得到的总线速度也不同,表3给出了参考数据。 表3 实测数据 PCIE通道数 48 DMA长度 /B8 19216 38432 7688 19216 38432 768 总线传输速率 /(MB/s)5005806509801 0501 200

19、 5 结 语 使用FPGA来设计PCIE总线扩展卡,可以省去专用的PCIE接口芯片,降低了硬件设计成本,提高了硬件的集成度。利用FPGA的可编程特性,大大提高了设计灵活性、适应性和可扩展性。PCIE总线提供了高速、独享的数据交换通道,确保在大数据量的数据交换时不会出现瓶颈,而且作为新一代总线,它使系统在获得更高性能的同时,具有了良好的升级性。 参考文献 1田玉敏,王崧,张波.PCI Express系统体系结构标准教材M.北京:电子工业出版社,2005. 2PCI Special Interest Group. PCI Express Base Specification Revision 1.

20、0aEB/OL. 2009-10-16 . 3PCI Special Interest Group.PCI Local Bus Specification 2.2EB/OL. 1998-12-02 . http:/ftp.sandpile.org/docs/intel/PCI.htm. 4李贵山,戚得虎.PCI局部总线开发者指南M.西安:西安电子科技大学出版社,1997. 5Altera Corporation.PCI Express Compiler User Guide 9.1EB/OL. 2010-04-03 . . 6Chris Cant.Windows WDM设备驱动程序开发指南M.北京:机械工业出版社,2001. 7ONEY Waher. Programming the Microsoft Windows Driver ModelM. USA: Micorsoft, 2003. 8张惠娟,周利华,翟鸿呜.Windows环境下的设备驱动程序设计M.西安:西安电子科技大学出版社,2002. 9Microsoft. DDK Document M . USA: Microsoft Press, 2000. 10姜立冬.VHDL语言程序设计及应用M.北京:北京邮电大学出版社,2001.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1