基于IP模块的PCI接口设计及FPGA实现
扫描二维码
随时随地手机看文章
PCI局部总线不仅是目前最新的计算机总线,而且是一种兼容性最强、功能最全的计算机总线。它可同时支持多组外围设备,而且不受制于处理器,为CPU及高速外围设备提供高性能、高吞吐量、低延迟的数据通路。图形用户界面(GUI)、高清晰度电视(HDTV)、三维视频多媒体显示等新技术的发展以及高速通讯系统的广泛需求使PCI具有良好的应用前景。针对这种趋势,国外许多芯片厂家设计生产了各种各样的PCI专用集成电路。
目前国内系统厂家的PCI总线接口一般采用国外的PCI专用芯片,如TUNDRA公司的Qspan、PLX公司9050、INTEL公司的21554等,但是这些专用芯片价格昂贵、功能繁杂、不能灵活配置、不利于系统的升级优化,难于应用。为此,各大FPGA厂商纷纷推出基于各自可编程逻辑器件结构与工艺的PCI IP模块(软核、固核或硬核)。 Xilinx,Altera,Actel及QuickLogic等公司的PCI核在国内都有广泛应用,它们各有特色,总体而言,Xilinx的PCI Core是含有布局布线信息的HDL门级网表格式,便于VHDL方法设计及第三方EDA软件环境下的仿真验证;Altera的PCI Core为AHDL格式,通过ACF文件提供布局布线时的约束,其用户侧的信号数量较少,功能简单,便于实现;Actel及QuickLogic公司的反熔丝结构,使其可编程芯片在速度与性能上有一定的优势,但PCI核的功能则相对较弱。
根据VoIP、CDMA等先进的通讯系统对PCI总线接口的实际需求,我们通过评估比较,决定采用Altera公司的64位66MHz PCI Core,在VERIBEST及MAXPLUSII NT设计平台上,针对目标器件FLEX10K 100E,利用VHDL硬件描述语言,设计了PCI总线到摩托罗拉CPU的FPGA桥接芯片。该芯片介于PCI总线与摩托罗拉CPU之间,提供两种总线间的地址转换,命令译码,数据缓冲与传输,即插即用的配置,为系统的高速数据传输提供无缝的接口。
1. 设计输入
设计输入包括VHDL代码设计及功能仿真。在进行设计之前,先对系统划分功能模块,最顶层例化两个模块:Altera的PCI Core和用户侧逻辑。用户侧逻辑根据功能再进一步细化。VHDL的结构化特点非常便于层次化设计,每个工程师负责完成功能相对独立的各子模块设计仿真,最后进行整体的功能仿真。进行整体功能仿真前,先要提取PCI Core的功能仿真模型,在MAXPLUSⅡ环境下,按照系统要求配置PCI Core的相关参数,然后对其进行编译及布局布线,此时不必产生ACF文件。为能输出用于VERIBEST环境下仿真的VHDL网表,编译时需要选择INTERFACE菜单下VHDL NETLIST WRITER。考虑到综合后可能要作带门级延时的仿真,编译时最好产生SDF标准延时文件,在INTERFACE菜单下VHDL OUTPUT FILE[.VHO](WRITE DELAY CONSTRUCTS TO一栏中)。完成以上关键设置后,通过编译即可得到PCI Core带延时的VHDL网表文件。通过相同的操作可得到用户侧逻辑模块中例化的其他Altera的MegaCore子模块。
用户侧逻辑模块与PCI Core互连时,需要注意一些关键问题。PCI Core支持PCI主/从工作模式,其用户侧主/从模式信号是分开的,在PCI Core处于一种工作模式时,另一种模式的信号必需处于确定的无效态,不能处于悬浮态或高阻态。用户侧逻辑模块内部应避免使用三态信号,为便于控制与调试,应采用状态机设计。对于PCI 时钟与CPU时钟间的交互使用,应采用握手信号实现。
功能仿真在VERIBEST99 FPGA DESIGNVIEW环境下进行。仿真时首先要对PCI Core进行配置访问,配置PCI Core内部配置寄存器的相应位。
2. 设计实现
设计实现包括逻辑综合及布局布线。功能仿真完成后,下一步为用户逻辑的综合。VERIBEST 支持两种 FPGA 综合器;FPGA EXPRESS 和 SYNPLIFY。FPGA EXPRESS操作简单,界面清晰,综合效率好,但其SCHEMATIC VIEW功能较差,所生成的原理图晦涩难懂,不利于深入的时序分析。SYNPLIFY提供了RTL VIEW和TECHNOLOGY VIEW两种原理图,有利于关键路径的寻找和分析,它还提供了许多功能强大的属性参数,但同时也增加了软件使用的复杂性。
VHDL语言中例化的FPGA IP模块(PCI核,双端口RAM等)应该不参与逻辑综合,可以在VHDL源码中加入FPGA EXPRESS的综合开关-RPAGMA SYNTHESIS_OFF或SYPLIFY的综合开关-SYNTHESIS TRANSLATE_OFF实现,也可以将FPGA IP模块的VHDL网表文件从综合文件列表中删除。
逻辑综合时应该分模块进行,找出各子模块内部的关键路径,通过修改设计,优化数据通路,最后进行顶层的综合。顶层综合时最好保留设计层次。对于各模块间的关联信号,由于它们一般经过多级查找表,造成延时较大,应利用流水线技术在这些关键路径上加入适当数量的触发器,减小 时延。软件上的一些设置也有利于提高综合后电路的频率,如状态机采用ONE HOT编码,减小FANOUT数量,屏蔽操作数共享功能等。通过上述方法,我们的设计综合后电路的频率从38MHz提升到63MHz。
综合完成后可生成用于MAXPLUSⅡ环境下布局布线的EDIF文件,如要作门级仿真,也可同时生成带延时的VHDL网表文件。在MAX-PLUSⅡ中调入EDIF文件后,设置ASSIGN菜单下相关参数并指明PCI Core的库路径。编译EDIF文件时要设置EDIF NETLIST READER为SYNOPSYS或SYNPLIFY。第一次布局布线,最好不要加入ACF文件。完成后,按要求生成PCI Core的ACF文件并放在工作目录下,加入自己的约束条件,然后进行第二次布局布线,此时应设置产生用于VERIBEST进行功能验证的VHDL网表文件。布局布线后,进行时间参数分析。我们的设计结果PCI时钟为30MHz,CPU时钟为57MHz。
3. 设计验证
设计验证包括静态时序分析,功能验证及板级验证。静态时序分析用于分析建立/保持时间,时钟到输出时间等时间参数是否满足PCI规范。33MHz、32位的PCI规范要求建立时间小于7ns,保持时间为0ns,时钟到输出时间小于11ns,分析时必需考虑触发器的影响,对关键路径加以细致入微的计算。MAXPLUSⅡ提供了比较好的静态时序分析功能,设计工程师负责设置并分配时间参数,软件计算后给出分析结果,如果不满足要求,可在重新布局布线时加上相关约束条件。时序分析结束后,还需进行功能验证,在VERIBEST环境下对布局布线后生成的VHDL网表仿真,此时应选择OPEN POST_LAYOUT SIMULATOR进入仿真器。VERIBEST会自动生成VHDL格式的端口映射文件,并自动关联SDF文件,用户无需额外设置。此时的功能仿真,调试相对较难,信号间关联关系可通过VHDL网表文件查询。
基于PCI Core的FPGA设计的板级验证可考虑采用Altera公司提供的PCI通用开发板,该板支持Altera所有的PCI MegaCore模块,用户可通过板上的SDRAM,PMC插槽,RS232端口实现用户逻辑与PCI Core的接口,也可以利用板上PROTOTYPE区实现用户逻辑的功能。PCI开发板演示软件可以显示数据传输速率,也可用于调试,配置PCI Core。
基于IP模块的PCI设计为用户在FPGA目标器件上实现PCI接口提供了一种有效的途径,设计工程师可以将主要精力集中于非PCI部分,通过将FPGA厂商提供的IP模块与原理图、状态机及HDL语言等设计方法有机的结合,采用层次化结构,在功能强大的EDA软件环境下,于较短的时间内完成复杂电子系统的设计。