基于FPGA IP 软核的PCI 接口的设计 何博,汪国有** 作者简介:何博,(1988-),男,硕士研究生,主要研究方向:测控仪器硬件平台研制。 通信联系人:汪国有,(1965-),男,教授,主要研究方向:模式识别图像处理及其硬件实现技术。 E-mail: gywang@mail.hust.edu.cn (华中科技大学图像识别与人工智能研究所,武汉 430074) 摘要:IP(intellectual p 5 roperty)技术是IC 设计发展到SOC 时代的必然选择,使用IP 软核 能在设计中节省大量人力,提高设计效率。本文以作者的项目实践为基础提出了一种基于 FPGA IP 软核的PCI 目标接口的设计方法,从PCI 总线协议、PCI IP 核操作及功能实现、IP 核时序仿真和实际抓取时序等角度对IP 核的设计方法进行了介绍。实验运行的结果表明, 该IP 核在功能和时序上符合PCI 技术规范,达到了预定的目标。 10 关键词:PCI 总线;FPGA;IP 核 中图分类号:TP336 Design of PCI-slave Interface Based on IP core of FPGA He Bo, Wang Guoyou 15 (Institute for Pattern Recognition and Artificial Intelligence,Huazhong University of Science and Technology, WuHan 430074) Abstract: Using IP(intellectual property) is an inevitable choice in SOC design. Building an IP library can save much time and manpower for the design later. Based on my engineering project, the Verilog design for PCI-slave interface are introduced in this paper. The architecture concept, 20 the operation and implementation of PCI IP Core and simulation are introduced in detail. The results show that the bus controller IP core meets the PCI local bus specification revision 2.3 in the functional specification and timing characters, met the expectation. Keywords: PCI bus; FPGA; IP core 25 0 引言 总线结构是微机系统体系结构的重要特点之一,总线是微机系统的基础和重要资源。传 统的ISA,EISA 总线等已无法适应高速数据传输的要求,PCI[1](Peripheral Component Interconnect)总线,即外围设备互连,是一种先进的高性能32/64 位的局部总线,它具有高 性能、线性突发传输、兼容性强及性价比高等优点,使用PCI 总线结构的设备,可以达到理 30 论峰值为132Mbytes/s 的数据率,虽然这个数字会因为总线的繁忙和设备自身的原因和实际 值有些出入,但是达到60Mbyte/s 的平均数据率还是有可能的。基于以上优点,PCI 总线获 得了广泛的应用,迅速成为流行的系统总线之一。 目前PCI 总线接口电路主要有两种方案:一是选用纯粹的PCI 接口芯片,如PLX(90xx 系列)、AMCC(59xx 系列),它们将复杂的PCI 总线接口转换为相对简单的用户接口, 35 用户只需设计转换后的总线接口,但这种方案会占用一定的板卡空间,不能灵活地设计目标 系统;二是用专用的IP 核来实现PCI 接口功能,如Altera 的MegaCore 中的PCI 功能系列 以及Xilinx 的LogiCore 等等,通过将PCI 插卡的用户逻辑与PCI 接口逻辑集成在一块芯片 上,实现紧凑的设计。本文主要用Altera 公司的PCI Compiler[2]来实现所有PCI 协议解析功 能,用PCI IP 软核来实现控制连接在PCI 局部总线上的外设。 40 1 PCI 总线的特点 PCI 是技术先进的高性能局部总线,它可同时支持多组设备,PCI 不受制于处理器,并 为微处理器和高速外设提供了一条通道,大大提高了数据吞吐量,可确保电脑部件、附加卡 及系统间的可靠运行。总之,PCI 总线有如下特点:(1)数据总线的位长为32Bits,也可 以扩展到64Bits;(2)地址、数据线采用时分复用模式,减少引脚数,便于进行突发数据 45 传输;(3)具有同处理器和存储器子系统完全并行操作的能力;(4)总线时钟频率为33MHz 或66MHz,理论上最高传输速度可达528MB/s;(5)完全的多总线主控,采用中央集中式 总线仲裁;(6)资源自动配置,支持即插即用;(7)支持3.3V 和5V 两种信号电平标准, 且能够平滑过渡;(8)对地址和数据进行奇偶校验。 2 PCI 接口功能信号 50 如图1 所示,是构成PCI 总线的基本功能引脚信号[3] [4],主要由地址数据线、接口控制 线、中断线、错误报告线、总线仲裁线、系统线等组成。PCI 总线规范信号线有100 根,分 为必备信号和可选信号,本文只实现了最重要的总线命令,相应信号线做了精简,分别是: (1)系统线: CLK:输入,系统时钟信号;RST#:输入,系统复位信号。 55 (2)接口控制线: FRAME#:输入,帧周期信号,表示一个PCI 访问周期的开始;TRDY#:输出,目标 设备准备好信号;IRDY#:输入,主设备准备好信号;STOP#:输出,停止数据传送信号; DEVSEL#:输出,设备选择信号;IDSEL:输入,初始化设备选择信号。 (3)地址数据线: 60 AD[31:0]:双向,地址数据复用线;C/BE[3:0]#:输入,总线命令/字节使能信号;PAR: 双向,奇偶校验信号。 (4)错误报告线: SERR#:系统错误信号线;PERR#:校验错误线。 65 图1 PCI 总线信号 Fig. 1 Signal of PCI bus 3 PCI 总线命令 总线命令是处理器发送的指向目标的表明作业类型的命令。PCI 上的基本总线传输机制 70 是猝发成组传输。一个分组由一个地址和一个或多个数据相组成。基本的PCI 传输由三个信 号控制: FRAME#:该信号由主设备驱动,表明一个事物的开始和结束。 IRDY#:该信号由主设备驱动,表明它已做好传输数据的准备。 TRDY#:该信号由从设备驱动,表明它已做好传输数据的准备。 75 PCI 总线上支持三个独立的物理空间:存储器空间、I/O 空间和配置地址空间。前二者 由系统统一编址,一个PCI 设备可以占有系统存储器空间或I/O 空间的一部分,PCI 设备负 责其自己的地址译码,不需要从外部输入设备选择信号。每一个PCI 设备内部都有一个配置 空间,用于支持PCI 设备的硬件配置。对配置空间寻址时,要给出设备片选信号,以表明要 寻址的设备。 80 PCI 主设备在一个事物的地址期间,要在C/BE[3..0]#线上给出一个命令编码,向目标设 备表明本次事物所要执行的事物类型。PCI 总线上可以实现的命令及其编码如表1 所示。 表1 PCI 总线命令 Tab. 1 Command of PCI bus C/BE[3..0] 命令类型说明 0000 中断响应命令 0001 特殊周期命令 0010 I/O 读命令 0011 I/O 写命令 0100 保留 0101 保留 0110 存储器读命令 0111 存储器写命令 1000 保留 1001 保留 1010 配置读命令 1011 配置写命令 1100 储存器多行读命令 1101 双地址周期命令 1110 存储器一行读命令 1111 存储器写并无效命令 85 4 PCI IP core 操作及功能实现 PCI 总线的读写操作[5] [6]遵循总线控制协议,在设计中,和计算机PCI 总线有关的功能 完全由PCI IP core 来完成,我们只要实现其LOCAL 总线的有关功能即可。所以在硬件功能 实现的设计中,除了启动时的初始化设置,对于PCI IP core 内部配置寄存器的设置我们不 90 需做很多的工作,主要是关注LOCAL 配置寄存器和其他寄存器的设置。 在本文的控制器卡上,我们是实现32 位数据的Target 读写,采用的是pci_t32 模块, pci_t32 的功能即是将复杂的PCI 总线转换为相对简单易操作的PCI 本地总线,它从PCI 总 线侧获得传输命令和读写数据的地址后,一方面对这个操作命令做出反应,将其传达给 LOCAL 总线,另一方面将PCI 总线传送过来的数据地址映射为LOCAL 总线可识别的地址。 95 当LOCAL 总线准备好后,PCI IP core 会收到LOCAL 侧做出的响应信号。然后根据读/写命 令的不同执行相应的时序。从模式下存储器单周期读、写操作时序分别如图2、图3 所示。 图2 基本的读操作 Fig. 2 Basic Read Operation 100 图3 基本的写操作 Fig. 3 Basic Write Operation 本文运用Quartus II 中的PCI compiler 生成PCI IP 核继而直接在FPGA 逻辑中实现PCI 105 总线接口,调用PCI compiler 生成PCI 模块提供给顶模块使用,实际的PCI 总线数据传输时 序如图4、图5 所示,对比规范的PCI 读写操作时序[7]可以看出,该设计能成功地进行PCI 访问,达到预定目标。 图4 实际的读操作时序图 110 Fig. 4 Timing Diagram of Actual Read Operation 图5 实际的写操作时序图 Fig. 5 Timing Diagram of Actual Write Operation 115 5 结束语 本文所用的PCI 目标接口可以方便地与用户逻辑集成于一块芯片中,在实际的板卡中实 现了通过PCI 设备驱动函数由上位机成功对PCI 设备进行了读写访问,完成了对PCI 板卡 的读写功能,并通过Quartus II signaltap 对PCI 读写操作进行了实际时序的抓取,证明了该 IP 核在功能和时序上符合2.3 版本的PCI 技术规范,从而达到了设计目标。基于IP 软核的 120 PCI 接口实现方法不仅简单,而且具有很强的灵活性,它在单片FPGA 中同时完成PCI 接口 和用户逻辑的设计,缩减成本,提高集成度,减少资源浪费,具有较强的实际应用价值。 [参考文献] (References) [1] PCI Local Bus Specification .PCI Special Interest Group.2001/10 125 [2] PCI Compiler User Guide. Altera Corporation. 2009/11 [3] 谢京华.基于FPGA IPcore 的PCI 接口设计与应用[D].成都:电子科技大学,2006. [4] 李均盛,王省书,胡春生,梁德强. 基于FPGA 的PCI 从接口设计[J]. 工业控制计算机,2010,23(1):79-80 [5] 蒋豪,肖铁军.基于FPGA的PCI总线目标接口IP 核的设计[J].计算机工程与设计,2008,29(11):2785-2787 [6] 刘红,李勃,常青,吴鑫山.基于IP 核的PCI 总线接口设计与实现[J].电子技术应用.2006,6:6-8 130 [7] 史小斌,宋思盛,黄根全.PCI 总线从设备接口的CPLD 实现[J]. 电子科技,2011,24(11):59-62 学术论文网Tag:代写论文 代写代发论文 论文发表 |