新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的PCI接口设计

基于FPGA的PCI接口设计

作者:时间:2012-03-14来源:网络收藏

3.2 Memory写操作
pci_t32的单周期memory 写操作时序如图3所示。

时序分析及用户逻辑设计要点:pci主设备在第2个clk给出要写的目标地址ad 31 0 和Memory写命令cben 3 0 =7,pci_t32在第3个clk向用户设备给出写目标地址l_adro 31 0 和Memory写命令l_cmdo 3 0 =7。用户设备要对l_cmdo 3 0 译码来判断是何种操作,对l_adro 31 0 译码来选择目标地址。在lt_framen输出为低的下个时钟周期,若用户设备逻辑准备好接收pci_32t写的数据,可以置低lt_rdyn。若用户逻辑没有准备好,可以延迟置低lt_rdyn来产生延时等待周期。当lt_dxfrn输出为低电平时(第7个clk),pci_t32已经将输出的有效数据放在l_dato 31 0 上,pci用户设备必须在第8个clk的上升沿将l_dato 31 0 输出的数据D0锁存至目标地址l_adro 31 0 ,用户设备逻辑可以用第8个clk的上升沿来作为锁存器的锁存时钟,用lt_dxfrn作为锁存器的锁存使能信号(/Latch Enable)或存储单元的写使能信号(/Write Enable)。

4 应用设计实例及注意事项

笔者已经成功地将pci_t32用于一个compact PCI的TARGET控制模块中。在这个模块中,主设备Master通过pci_t32来读写64个32bit控制寄存器,再由这些寄存器组去控制外部设备。在本系统的里,还有仲裁器等其它逻辑,PCI时钟是33MHz,芯片选用的是EPF10K100EQC240-2。系统逻辑设计的框架如图4所示。

在寄存器组里还有一些简单的选通、三态控制等逻辑,此略。L_adro 6 0 译码选择寄存器组里的目标寄存器。当/WE有效时,l_dato 31 0 上是pci_t32输出的有效数据;当/OE有效时,寄存器组必须将要输出的数据放到l_adi 31 0 总线上。
在使用pci_t32时,还有一些值得注意的地方,如下所述:
1 用户逻辑的时钟(本系统的寄存器组的时钟clk)与进入pci_t32的时钟必须是同一个时钟,并且在定义管脚时应选用全局时钟线(global clock)。这样,可以保证时钟的同步,提高系统的性能。
2 从库中调出pci_t32.gdf的symbol,在其右上角,可以看到一些默认设置,双击这些参数,可以改变设置。包括:Device_ID、REVISION_ID、CLASS_CODE、VENDOR_ID、基地址等PCI标准配置寄存器。
3 选择芯片主要考虑两个因素:
容量和速度。芯片容量包括片内的逻辑单元和可用I/O管脚数。芯片速度主要由PCI系统工作的时钟频率以及用户逻辑的大小和优化程度两方面决定。

Pci_t32的资源占用较小,在用EPF10K100EFC484-1芯片编译时,占用621个LC(Logic Cell)。而PCI宏核pci_a,在用EPF10K100EFC484-1芯片编译时,占用923个LC。EPF10K100共有约5000个LC。
Altera的有多种容量和速度级,一般来说,-1速度级的芯片可以满足66MHz时钟的PCI时序要求,-2速度级的芯片只能满足33MHz时钟的PCI时序要求。

速度和容量是否能满足用户的要求,必须要进行仿真才能最终确定。
现在的价格日渐下降,大容量的FPGA使用越来越普遍。各家芯片供应商都提供了各种 PCI宏核逻辑。设计者可以将PCI用户逻辑与宏核逻辑集成在一片FPGA里,在顶层通过仿真来验证以及用户逻辑设计的正确与否。这样,可以大幅度提高调试速度,缩短开发周期,提高电路板的集成度和系统性能。可以肯定地预言,使用宏核逻辑来进行PCI接口设计是今后设计PCI接口的主要方法。PCI接口宏核逻辑将会受到越来越多的设计工程师的青睐。

参考文献
1 ALTERA Device Data book 1999.ALTERA,1999
2 PCI MegaCore Function User Guider,Version 1.0.ALTERA,1999年12月
3 金 革.可编程逻辑阵列FPGA和EPLD.合肥:中国科技大学出版社,1996


上一页 1 2 3 下一页

关键词: PCI总线 FPGA PCI接口

评论


相关推荐

技术专区

关闭