摘 要:PCI9054是PLX公司推出的一种PCI主模式桥芯片。本文主要介绍了它的特性、功能及应用,说明了以PCI9054作为接口芯片,开发PCI总线扩展卡的硬件框架图,最后给出一个简单的实例。
概述
PCI9054是由美国PLX公司生产的先进的PCI I/O加速器,采用了先进的PLX数据流水线结构技术,是32位、33MHz的PCI总线主I/O加速器;符合PCI本地总线规范2.2版,突发传输速率达到132MB/s,本地总线支持复用/非复用的32位地址/数据;有M、C、J三种模式;针对不同的处理器及局总线特性可选,尽量减少中间逻辑;具有可选的串行EEPROM接口,本地总线时钟可和PCI时钟异步。PC9054内部有6种可编程的FIFO,以实现零等待突发传输及本地总线和PCI总线之间的异步操作;支持主模式、从模式、DMA传输方式,因其强大的功能可应用于适配卡和嵌入式系统中。PCI
9054是一种性价比较高的PCI桥路芯片,比PCI9080、PCI9050等性能更优越。
PCI 9054其内部原理如图1所示。它采用先进的PLX数据管道结构技术,是32Bit、33MHz的PCI总线主I/O加速器。
图1 PCI9054内部框图(略)
PCI9054主要特性如下:
·符合PCI V2.1,V2.2规范,包含PCI电源管理特性。
·支持VPD(Vital Product Data)的PCI扩展。
·支持PCI双地址周期,地址空间高达4GB。
·具备120准备报文单元,完全兼容120 V1.5规范。
·提供了两个独立的可编程DMA控制器,每个通道均支持块和
Scatter/Gather的DMA方式,DMA通道0支持请求DMA方式。
·在PCI启动模式下,PCI 9054可插入类型1和类型2的配置周期。
·PCI和Local Bus数据传送速率高达132MB/S。
·支持本地总线直接接口Motorola MPC850或MPC860系列、Intel i960系列、IBM PPC401系列及其它类似总线协议设备。
·本地总线速率高达50MHz;支持复用/非复用的32bit地址/数据;本地总线有三种模式;M模式、C模式和J模式,可利用模式选择引脚加以选择。
·具有可选的串行EEPROM接口。
·具有8个32bit Mailbox寄存器和2个32位Doorbell寄存器。
功能描述
PCI9054的物理总线接口
PCI9054提供了三种物理总线接口:PCI总线接口,LOCAL总线接口及串行EPROM接口。LOCAL总线的数据宽度为32位,时钟频率可达到50MHz并且支持数据预取功能。
PCI9054的总线操作包括PCI总线操作和本地总线操作。对于PCI总线操作,它完全遵守2.2版本PCI规范。PCI9054本地总线支持非多路复用32位地址/数据总线,多路复用32位和8位,16位或32位本地总线设备从属访问,运行速率高达50MHz,可以获得200MB/S的本地总线突发传输速率。
PCI9054的LOCAL总线与PCI总线之间数据传输有三种方式:主模式(Direct Master)、从模式(Direct Slave)和DMA方式。其内部具有两个DMA数据通道,双向数据通路上各有6个FIFO进行数据缓冲,可同时进行高速的数据接收和发送。8个32位Maibox寄存器可为双向数据通路提供消息传送。
PCI9054还提供了一个串行EEPROM接口,容量2K字节。在配置存储器中存放了厂家标志、设备标志以及本地总线的基地址空间、I/O空间和中断控制信号等信息。初始化时,系统自动将串行EEPROM中的配置参数装入PCI配置寄存器,并根据本地总线对内存、I/O端口和中断的需求统一划分,自动配置。其中本地端寄存器也可以由本地CPU读写,直接进行配置。
PCI9054工作模式
PCI9054有3种工作模式:C、M和J模式。M模式主要针对Motorola公司高性能MPC850/860的应用而设计,主要应用在电信领域。J模式的接口设计相对比较复杂,通常用的是C模式。
C模式下PCI9054分为PCI Initiator操作和PCI Target操作。在PCI Initiator操作过程中,本地处理器或本地总线主控设备能够直接通过PCI9054访问PCI总线,发起Local-to-PCI的数据传输。而在PCI
Target操作过程中,PCI总线主控设备可以以可编程的等待状态、总线宽度和突发传输功能访问PCI9054的三个本地空间(空间0,空间1和扩充ROM空间)。
PCI9054的DMA突发模式
PCI9054集成了两个相互独立的DMA通道,每个通道都支持Block DMA和Scatter/Gather DMA,通道0还支持Demand
DMA传输方式
Block DMA要求PCI主机或Local主机提供PCI和Local的起始地址、传输字节数、传输方向。主机设定DMA开始位启动数据传输,一旦传输完成,PCI9054设定DMA"传输结束位"结束DMA。如果启动中断允许位,在传输结束时PCI9054将向主机申请中断。在DMA传输中,PCI9054既是PCI总线的主控器又是Local总线的主控器。
Scatter/Gather DMA要求主机在PCI空间或Local空间设定Descriptor模块,模块包括PCI和Local的起始地址、传输字节数、传输方向和下一个Descriptor模块的地址。PCI9054载入第一个Descriptor模块并发起传输,连续加载下一个模块,直到它侦测到“链结束位”有效,PCI
9054设置“传输结束位”,或者申请PCI或Local中断。这种模式下,PCI9054也可以在每个模块加载时有效中断信号,结束DMA传输。若Descriptor模块在本地存储空间,可以编程使DMA控制器在每次DMA传输结束后清除传输字节数。
PCI9054寄存器
PCI9054内部提供了5种寄存器:PCI配置寄存器、本地端配置寄存器、运行时间RUNTIME寄存器、DMA寄存器和120信息寄存器。下面对PCI配置寄存器和本地端配置寄存器的功能做简要介绍。
PCI配置寄存器也就是我们常说的PCI配置空间,它提供了配置PCI的一些信息。其中VenderID,DeviceID,RevisionID,HeaderType,ClassCode用于PCI设备的识别。
命令寄存器(Command)包含设备控制位,包括允许存储器读写响应等。
状态寄存器(Status)用于记录PCI总线的相关事件。
PCI配置寄存器提供了6个基地址寄存器,这些基地址都在系统中的物理地址范围内,其中BASE0和BASE1用来访问其他配置寄存器的基地址,BASE1是其他配置寄存器映射到PCI端内存的基地址,BASE2是其他寄存器映射到PCI端I/O的基地址。
可以通过PCI端内存和PCI端I/O来访问LOCAL配置寄存器与其他3种寄存器。BASE2~5四个空间提供了访问本地端所接的4个芯片(当然可以少于4个),它们将本地端的芯片通过本地端地址(在LOCAL配置寄存器中设)翻译成PCI的地址,也就是将本地的芯片映射到系统的内存或I/O口。这样使得用程序操作这一段内存(或I/O)实际上就是对本地的芯片操作。
本地端配置寄存器提供了本地端的一些信息,如图2 C模式部分时序图
图2 C模式部分时序图(略)
LCLK:输入信号,时钟信号
LHOLD:输入信号,申请使用本地总线
LHOLFA:输入信号,对LHOLD应答
基于PCI9054的PCI接口设计
PCI 9054 以其强大的功能和简单的用户接口,为PCI总线接口的开发提供了一种简洁的方法,设计者只需设计出本地总线接口控制电路,即可实现与PCI总线的高速数据传输。
图3是应用PCI9054作为接口芯片,开发PCI总线扩展卡的总体硬件框架图
图3 开发PCI总线扩展卡的总体硬件框架图(略)
下面简单介绍以PCI9054为接口芯片的网卡设计。
硬件设计
见图4
图4 硬件设计原理图(略)
第一部分是9054和PCI插槽间的连接信号线。这些信号包括地址数据复用信号AD[31:0],总线命令信号C/BE[3:0]#和PCI协议控制信号PAR、FRAME#、IRDY#、TRDY#、STOP#、IDSEL、PERR#和SERR#。
第二部分是9054与EEPROM的连线。这里有四根信号线:EESK、EEDO、EEDI、EECS,串行EEPROM的数据通过烧写编程的方式,也可以通过本地CPU直接编程的方式来完成初始化。
第三部分就是9054与应用电路的连接。其中LA地址总线、LD数据总线、LBE#字节使能信号和CPLD相连;LW/R读写信号、BLAST#、READY#、ADS#和8051单片机相连。
PCI9054工作在初始化器模式时,要求本地端的总线是32位的。在这里,用CPLD实现将80C51单片机的8位数据与16位地址转换成32位的数据和地址,使用RAM的目的是提高8051的数据传输速度和处理复杂的TCP/IP协议,EEPROM用来保存相关的信息状态等。
软件设计
软件程序主要分为两大部分,一是对PCI9054芯片的PCI端配置寄存器和本地端配置寄存器进行正确的编程配置;二是网络通讯,包括网卡初始化、发送控制和接收控制3部分。
结束语
在实践开发中我们发现,用PCI9054开发各种高速数据采集系统、图象处理系统等PCI设备,能够减少许多相应的外围器件,降低开发难度,缩短开发周期,大幅度压缩成本。
|