本文共 2722 字,大约阅读时间需要 9 分钟。
PCI总线及其接口概述
PCI总线是高速同步总线,具有32位总线宽度,工作频率为33MHz,最大传输率为132Mbyte/s,远高于ISA总线的5Mbyte/s速率。PICMG制定的Compact PCI规范支持64位总线宽度、66MHz工作频率,最大传输率可达528Mbyte/s。PCI总线因其高性能、高效率和与现有标准兼容的特点,被认为是最具前瞻性和普适性的局部总线标准之一。
PCI接口相较于其他总线接口较为复杂,不仅有严格的时序要求,还需包含多个配置寄存器以支持即插即用和自动配置功能。PCI设备分为MASTER和TARGET两类,对应的接口也分为MASTER和TARGET两种。PCI接口主要包括PCI标准配置寄存器(64字节)、PCI总线逻辑接口、用户设备逻辑接口、数据缓冲区等。
对于普通应用设计工程师而言,完全理解PCI规范细节并设计接口逻辑并非必要。市场上提供了多种专用PCI接口芯片,如AMCC公司的S5920(TARGET接口)和S5933(MASTER接口),这些芯片简化了PCI接口设计,仅需少量控制信号即可实现PCI总线与用户设备的连接,接口开发变得更加简单高效。
随着FPGA技术的快速发展,PCI接口宏核逻辑逐渐成为设计者的首选选择。FPGA芯片价格下降且逻辑容量扩大,使得集成PCI接口变得更加经济实惠。许多FPGA制造商提供PCI MegaCore逻辑,如ALTERA公司的pci_t32、pci_a、pci_mt64等。这些宏核逻辑支持不同接口类型和数据宽度,设计者可根据需求选择合适的方案。
本文将重点介绍ALTERA公司提供的最简单的32位PCI TARGET接口宏核逻辑pci_t32。文章将涵盖pci_t32的内部结构、外围信号、读写操作时序分析、应用设计实例及相关注意事项。
PCI_t32内部结构及外围信号
PCI_t32是ALTERA公司提供的最简单的32位PCI TARGET接口宏核逻辑,支持33MHz和66MHz时钟频率。其内部结构包括以下几个模块:
PCI_t32内部功能模块及周边信号如图1所示。
PCI_t32的外围信号主要包括PCI总线信号和用户逻辑接口信号。PCI侧信号符合PCI规范,右侧用户逻辑接口信号(local信号)定义如下:
读写操作时序分析与设计要点
PCI规范定义了两种读写操作:Memory和I/O。PCI_t32的读写操作包括Memory单周期读写、Memory猝发读写、I/O单周期读写及配置读写。本文将重点分析32位Memory单周期读写时序,其它模式的操作方式相似。
3.1 Memory读操作时序
PCI_t32的Memory读操作时序如图2所示。PCI主设备在第2个clk给出读地址AD 31 0和Memory读命令CBEN 3 0=6。PCI_t32在第3个clk向用户设备输出读地址L_ADR 31 0和读命令L_CMD 3 0=6。用户设备需根据L_CMD 3 0诊别操作类型,选择目标地址并在lt_framen输出为低电平时准备读数据。当lt_rdyn低电平时,用户设备逻辑可准备数据。数据在lt_dxfrn低电平时(第6个clk)输出至L_DAT 31 0。PCI_t32在第7个clk采样数据,PCI主设备在第8个clk获得数据。
3.2 Memory写操作时序
PCI_t32的Memory写操作时序如图3所示。PCI主设备在第2个clk给出写地址AD 31 0和Memory写命令CBEN 3 0=7。PCI_t32在第3个clk向用户设备输出写地址L_ADR 31 0和写命令L_CMD 3 0=7。用户设备需根据写命令准备接收数据。当lt_rdyn低电平时,用户设备可接收数据。数据在lt_dxfrn低电平时(第7个clk)输出至L_DAT 31 0。PCI_t32在第8个clk输出数据,用户设备可在此时锁存数据。
应用设计实例及注意事项
笔者曾将PCI_t32用于一个Compact PCI TARGET控制模块中。主设备通过PCI_t32读写64个32位控制寄存器,控制外部设备。系统中包含仲裁器等其他逻辑,PCI时钟为33MHz,芯片选用EPF10K100EQC240-2。系统逻辑框架如图4所示。
在寄存器组中还包含简单的选通、三态控制逻辑。L_ADR 6 0诊别寄存器组目标寄存器。当/WE有效时,L_DAT 31 0上为PCI_t32输出的有效数据;当/OE有效时,寄存器组需将数据放至L_ADC 31 0总线上。
使用PCI_t32时需注意以下事项:
随着FPGA容量的扩大,PCI接口宏核逻辑将成为未来PCI接口设计的主要方法。这些宏核逻辑可显著提高调试效率,缩短开发周期,提升系统集成度和性能。
转载地址:http://digt.baihongyu.com/