logo资料库

基于IP核的PCI接口FPGA设计实现.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
基于基于IP核的核的PCI接口接口FPGA设计实现 设计实现 采用IP核的设计方法,将外设组件互连标准(PCI)总线接口与具体功能应用集成在一个FPGA上芯片, 提高了系 统的集成度。在对PCI IP核进行概述的基础上,介绍了IP核的设计方法,实现了PCI总线接口,并设计DMA 控 制器解决了接口和主机间的数据传输瓶颈问题,最后说明了驱动程序的设计方法。通过在PCI机箱的实验测试, 设计在功能和时序上均符合PCI技术规范,而且硬件工作稳定可靠,达到预期目标。 0引言 外设组件互连标准(PeripheralComponentInterconnection,PCI)是一种由Intel公司1991年推出的用于局部总线的标准。PCI 总线位宽32bit工作频率33MHz,数据速率132Mbps,同时支持总线宽度扩展到64bit, 工作频率66MHz,数据速率 528Mbps。PCI总线具有即插即用,中断共享,高速 数据传输等功能 。 PCI总线系统可以满足通信与网络的需求,在 嵌入式系统中具有广泛的应用前景。尤其是很多其 他的总线,如PXI和PCIE都 是由PCI总线发展而来的。嵌入式系统可以在PCI总线上安装各种扩展卡以实现不同的功能。总线的定义对协议、时序、负 载、电器性能和机械性能都有严格的规定,充分保证运行的可靠性和兼容性。 PCI总线接口的主要完成不同信号环境间的转换,使得数据传输可以顺畅进行。 1PCI总线接口 PCI总线接口的实现方法有很多种。设计者可 以根据实现的难度, 成本以及板卡的尺寸限制等实际情况加以选择。 1.1 专用接口芯片 如PLX公司的PCI9054、 PCI9656等。采用这些芯片的优点是可靠性高,设计者可以避开复杂的PCI 总线接口关系。缺点是用 户可能只是用到部分功能, 会造成一定的资源浪费,并且设计上也缺乏灵活性。 1.2 专用IP核 优点是开发速度快,灵活性好,缩短开发周期。缺点是IP核价格昂贵。例如Xilinx公司的LogiCore。 1.3自行开发 CPLD或FPGA自行设计。优点是可以灵活实现PCI功能。节省系统的逻辑资源,方便系统升级。缺点是需要详细了解PCI总线 协议,实现难度大。 2 XilinxPCIIP核概述 Xilinx公司的PCIIP核版本是Initiator/Target v4.13forPCI。此IP核支持存储器读写、I/O读写、配置空间读写3种读写方式。其 最多有3个地址空间,每个大小都可根据用户需要具体设置。如果有 不使用的BAR最好被禁用,以优化其性能 。 PCIIP核对FPGA设备是预先实现和经过验证的模型。在FPGA芯片内的管脚定义和资源的相关位置是定义好的,利用用户约 束文件控制关键路径以确保设计的PCI接口的时序满足要求。用户通过选择合适的芯片和用户约束文件,包括管脚定义约 束和 时序约束, 以满足运行在33/66MHzPCI时钟下的时序要求。每种芯片和封装都有特定的时序约束来保证接口的性能,所以用 户约束文件最好是在IP核推荐文件的基础上增加用户部分的时序约束。 此IP核文件还提供仿真测试文件,用户可以改 变参数和时序, 完成应用设计后对顶层文件进行仿真验证设计功能的正确性。 其主要的功能是将左边复杂的PCI接口信号转换成右边的用户接口数据和控制信号,完成用户设备与PCI总线的信息传递。具 体应用时只需要关心 用户侧的信号, 具有很强的灵活性。根据用户性质的不同,用户侧的信号分为相对简单的2组独立的 Target(被动)模式和Initiator(主动)模式的信号。用户根据实际需要来确定应用哪种模式,并选用相应控制信号和状态机 信号作为接口。 3 应用说明 3.1 Target操作 PCIIP核支持Target模式下的单个数据传输和多个数据传输。而且只要涉及到Initiator模式的数据传输就必须用到Target模式的 接口,反之是不需要的。下面对Target模式下用户侧重要信号进行简 单介绍 。 ADDR_VLD:地址总线上的地址有效; S_DATA_VLD:ADIO_OUT总线上的数据有效; S_WREN:‘1’标志Target写,‘0’标志Target读; S_CBE[3:0]:总线命令和字节有效; BASE_HIT[7:0]:基地址寄存器译码;
S_READY:数据传输准备好; S_DATA:设备处于数据传输状态。 3.2 Initiator操作 IP核作为PCI总线主设备进行Initiator写操作时, DMA控制器与Initiator控制逻辑模块共同将FIFO缓存输出的数据通过DMA操 作发送到IP核 的本地端;Initiator读操作时, Initiator控制逻辑模块将IP核本地端的数据通过DMA操作发送到FIFO缓存的输入 端。下面对Initiator模式下用户侧重要信号进行简单介绍。 REQUEST:用来请求Initiator传输; M_DATA_VLD:总线发生数据传输; M_SRC_EN:数据指针增加; M_READY:准备好传输数据; M_ADDR_N:表示当前操作的地址; M_DATA:表示数据传输的状态。 4 IP核在FPGA上的具体实现 在Xilinx公司芯片XC5VLX50T-1I上利用PCI的IP核实现PCI接口的读写。FPGA的内部结构如 图1所示。 图1FPGA内部结构图 4.1 寄存器读写 在Target模式下进行数据传输,设备能做的就是响应主设备的命令,接收数据完全处于被动状态。设计只实现Target模式的单 个数据传输,因此时序相对简单。 4.2DMA操作 在Initiator模式下进行数据传输必须严格按照PCI局部总线规范进行。实际应用时,将FPGA的数据通过PCI总线写入到计算机 内存,若传输要求的速度高,通常以DMA方式实现,由硬件设备代替CPU接管总线并负责数据传输,省去了由CPU负责传输 时所必须的寻址指令。DMA控制器在IP核Initiatorburst写操作基础上完成。 DMA部分的设计是本地逻辑的重要部分,设计的优劣会影响到数据的传输速率。如图2所示。 图2DMA控制状态机 REQ_S:主设备开始向总线仲裁器申请总线;然后根据DIR确定进入读状态还是写状态。 WRITE_S:写状态;数据传输结束时,判断是否需要重新申请总线。 READ_S:读状态;数据传输结束时,判断是否需要重新申请总线。 DEAD_S:致命错误的终结状态;OOPS_S:传输评估状态。 根据DMA控制器程序的设计,需要设置的参数有目标初始地址(START_ADDR)、目标结束地址(END_ADDR)、读写设 置(DIR)、burst长度(BURST_LENGTH)和开始标志(START)。 Initiatorburstwrite模式实际工作时,在ChipScope软件中观察到的时序图如图3所示。 图3用户端DMA接口时序 4.3 驱动程序开发 在WindowsXP操作系统下,以VC++6.0为 开发环境, 利用WinDriver工具开发PCI接口的驱动程序。寄存器写操作直接采用 WinDriver提供的函数XXX_WriteDword();寄存器读操作采用函数XXX_ReadDword()。 DMA操作分为2部分:①申请一段连续的内存, 用函数WD_DMALock()申请指定大小的连续数据缓冲区;②写参数至 FPGA相应寄存器中,最后 启动传输, 传输结束后,用DMA->pUserAddr访问存放数据的数据缓冲区。 由此可见,利用Windriver开发PCI的驱动程序是较为方便的。另外,在驱动程序开发完成后,还可以很方便地打包成安装文 件,从而使驱动程序可以独立运行。 5结束语 基于PCI总线的接口设计已经不是一个新鲜的课题,但随着设计开发提出的指标越来越高,开发的难度并未减弱。Xilinx公司
的PCIIP核集成在FPGA中,完成接口功能,并与用户逻辑配合工作,实现数据的缓存和传输。相比较采用专用处理芯片的方 法,虽然增加了设计的复杂度,但是系统的可移植性好,系统升级也容易。经过实践测试,大大缩小 电路板面积, 更有灵 活、稳定、可靠的特点。对于DMA控制器的设计能提高数据传输的速率, PCI总线的性能得到充分发挥,相信以后会得到更 广泛的应用。
分享到:
收藏