基于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网表文件从综合文件列表中删除。
逻辑综合时应该分模块进行,找出各子模块内部的关键路径,通过修改设计,优化数据通路,最后进行顶层的综合。顶层综合时最好保留设计层次。对于各模块间的关联信号,由于它们一般经过多级查找表,造成延时较大,应利用流
- 用大电流LDO为FPGA供电需要低噪声、低压差和快速瞬态响应(08-17)
- 基于FPGA 的谐波电压源离散域建模与仿真(01-30)
- 基于FPGA的VRLA蓄电池测试系统设计(06-08)
- 降低从中间总线电压直接为低电压处理器和FPGA供电的风险(10-12)
- FPGA和功能强大的DSP的运动控制卡设计(03-27)
- DE0-Nano-SoC 套件 / Atlas-SoC 套件(10-30)