摘要:PCI9052是PLX技术公司开发的PCI协议从模式接口芯片。介绍了其功能、特点及应用,并说明了其引脚功能及配置注意事项。最后给出了一个开关控制器电路实例,旨在介绍如何利用PCI9052完成由ISA扩展板向PCI扩展板的转换。
关键词:PCI ISA 扩展板 PCI接口芯片9052
PCI(Peripheral Compornent Interconnect,即外围部件互连)总线是一种能为主CPU及外设提供高性能数据总线的局部总线。1992年以INTEL为首的多家集团开始设计PCI总线,其V2.0规范于1993年4月正式发布。PCI总线具有严格的规范,这就保证了它具有良好的兼容性,符合PCI规范的扩展卡可插入任何PCI系统可靠地工作;PCI总线可以提供极高的数据传送速率(132MB/s);PCI总线与CPU无关,与时钟频率亦无关,可适用于各种平台,支持多处理器和并发工作;PCI总线还具有良好的扩展性,通过PCI-PCI桥路,可允许无限地扩展;PCI总线以它的即插即用特性取代了VESA局部总线。一个PCI接口包括一系列的寄存器,这些寄存器中的信息允许计算机自动配置PCI卡。PCI总线是目前PC机上最先进的一种总线。
表1 电源
| 管脚号 | 符号 | 名称 | 功能描述 |
| 99 | TEST | 测试 | 高为测试,低为。测试时除RD#(126)外,所有输出端置于三态。 |
| 1、10、27、41、50、66、81、103、121、146 | VDD | 电源 | +5V供电。需大9052附近每个引脚接去耦电容0.01~0.1μF |
| 9、26、40、51、65、80、104、120、142、160 | VSS | 地 | |
| 45,67 | NC | 保留 |
PCI总线协议非常复杂。如果开发PCI扩展板使用可编程逻辑阵列芯片来完成PCI协议的执行,其工作量和难度都是巨大的,一般都会选用PCI专用接口芯片。下面介绍PCI9052接口芯片。
表2 串行EEPROM接口
| 管脚号 | 符号 | 名称 | 功能描述 |
| 142 | EECS | 片选 | 串行EEPROM片选 |
| 143 | EEDO | 数据出 | 串行EEPROM读数据 |
| 145 | EEDI | 数据入 | 串行EEPROM写数据 |
| 144 | EESK | 串行数据时钟 | 串行EEPROM数据时钟 |
1 PCI9052芯片介绍
PCI9052是PLX技术公司为扩展适配板卡推出的能提供一种混合的高性能PCI总线目标(从)模式的接口芯片。该芯片可与多种局部总线相连,并且支持相对慢的局部总线在PCI总线上的突发传送速率达到132MB/s。9052的可编程配置直接与复用或非复用的8/16/32位局部总线相连。8位和16位模式便于ISA卡直接向PCI卡转换。
表3 PCI系统总线接口
| 管脚号 | 符号 | 名称 | 功能描述 |
| 150~157、2~8、11、23~25、28~32、34~39、42、43 | AD[31:0] | 地址和数据 | 地址数据复用信号 |
| 158、12、22、33 | C/BE[3:0]# | 总线命令/字节使能 | 地址传送节拍用于总线命令,数据传送节拍用于字节使能为所PCI |
| 149 | CLK | 时钟 | 传送提供时序,同时作为每一个PCI设备的一个输入,可达33MHz。 |
| 16 | DEVSEL# | 设备选择 | 有效时表示选中设备作为当存取的目标来译码地址。 |
| 13 | FRAME# | 周期帧 | 由当前主控制器驱动,表示一次存取的开始和过程。 |
| 159 | IDSEL | 初始化设备选择 | 在配置期间用于读写传送的片选。 |
| 44 | INTA# | 中断A | 中断请求 |
| 14 | IRDY# | 准备好 | 总线驱动器完成当前数据传送节拍 |
| 18 | LOCK# | 锁定 | 多次传送完成 |
| 21 | PAR | 奇偶 | 奇偶校验 |
| 19 | SERR# | 奇偶错 | 奇偶校验错 |
| 148 | RST# | 复位 | 复位 |
| 20 | SERR# | 系统错 | 系统发生错误 |
| 17 | STOP# | 停止 | 停止当前传送 |
| 15 | TRDY# | 目标准备好 | 所选择设备完成当前数据传送节拍 |
| 68 | MODE | 总线模式 | 1:复用总线模式,0:非复用总线模式 |
| 137、136 | LINTi1/LINTi2 | 局部中断1/2入 | PCI中断 |
| 135 | LCLK | 局部总线时钟 | 最高40MHz,可与PCI时钟异步 |
| 134 | LHOLD | 保持请求 | 局部总线请求使用 |
| 133 | LHOLDA | 保持响应 | 9052响应 |
| 132 | LRESET# | 局部总线复位出 | 9052复位时,用于复位局部总线设备 |
| 63 | BCLKO | BCLK出 | |
| 131,130 | CS[1:0]# | 片选 | 通用片选。可在配置寄存器编程指定 |
| 138 | USERO/WAITO# | 用户I/O或等待出 | |
| 139 | LLOCKO# | 用户I/O1或LLOCK出 | |
| 140 | USER2/CS2# | 用户I/O2或CS2出 | |
| 141 | USER3/CS3# | 用户I/O3或CS3出 |
1.1 主要特点
(1)兼容PCI V2.1协议特性。9052芯片与PCI协议V2.1版兼容,支持低开发成本的从模式适配设备,该芯片支持从ISA适配卡向PCI适配卡转换。
表4局部总线数据传送(独立模式)
| 管脚号 | 符号 | 名称 | 功能描述 |
| 123 | ADS# | 地址存储 | 表明可用址址和一次新的总线存取的起始 |
| 64 | ALE | 地址锁存使能 | 地址节拍有效,数据节拍之前无效 |
| 127 | LW/R | 写/读 | 1:写;0:读 |
| 124 | BLAST# | 最后突发 | 由当局部总线控制器驱动,用以提示最后一次总线存取传送 |
| 126 | RD# | 读 | 通用读。由当总线区域描述寄存器控制时序 |
| 125 | WR# | 写 | 通用写。由当前总线区域描述寄存器控制时序 |
| 128 | LRDYi# | 局部总经准备好入 | 表示在局部总线读数据或可接受写数据 |
表5 局部总线数据传送(非复用模式和复用模式)
| 管脚号 | 符号 | 名称 |
| 129 | BTETM# | 突发中止 |
| 122、119~105、102~100、98~92 | LA[17:2] | 地址总线 |
| 52~62、69~79、82~91 | LAD[31:0] | 数据总线 |
| 46~49 | LBE[3:0]# | 字节使能 |
表6 ISA局部总线数据传送(非复用模式)
| 管脚号 | 符号 | 名称 | 功能描述 |
| 131 | MEMWR# | 存储器写 | 从ISA数据总线顾取数据到存 |
| 130 | MEMRD# | 存储器读 | 将数据读到ISA数据总线 |
| 139 | IOWR# | I/O写 | WWISA数据总线写数据入I/O口 |
| 138 | IORD# | I/O读 | 将I/O口数据总读到ISA数据总线 |
| 46 | SBHE# | 系统字节高使能 | 高位字[15:8]使能 |
| 48、49 | ISAA[1:0] | ISA地址总线 | ISAA[1:0]是ISA总线地址节拍比特,与LA[23:2]一起使用。对于16bitISA总线,ISAA0作作LBE#信号;对于8bitISA总线,ISAA0用作一位址位。 |
| 64 | BALE | 总线址锁存使能 | 用以表示地址和SBHE#信号线有效 |
| 45 | CHRDY | 通道准备好 | 该信号从设备输入,用来表示需要附加时序(等待状态),当从设备需要等待状态时,信号保持低电平 |
| 67 | NOSW# | 无等待状态 | |
| 116~105、102~100、98~92 | LA[23、2] | 地址总线 | |
| 74~79、82~91 | LAD[15:0] | 数据总线 |
(2)直接从(目标)方式数据传送模式。9052支持突发存储器映射和I/O映射方式在PCI总线和局部总线存取数据。读写FIFO寄存器使得局部总线和PCI总线具有高性能的突发方式。PCI总线总是工作在突发方式,局部总线可以设置成突发方式或者连续单周期方式。
表7当ISA_MODE使能时一般局部总经支持信号(非复用模式)
| 管脚号 | 符号 | 名称 | 功能描述 |
| 68 | MODE | 总线模式 | 1:复用;0:非复用 |
| 137/136 | LINTi1/LINTi2 | 局部中断1/2 | 电平触发:有效时引起一次PCI中断,极性由INTCSR配置寄存器定义;边缘触发:只在上升沿有效,有效时引起PCI中断。 |
| 135 | LCLK | 局部总线时钟 | 对于ISA时为8MHz,可与PCI时钟异步 |
| 134 | LHOLD | 保持请求 | |
| 133 | LHOLDA | 保持响应 | |
| 132 | LRESET | 局部复位输出 | 当ISA_MODE使能时,信号为高 |
| 63 | BCLKO | BCLK输出 | |
| 140 | USER2/CS2# | 用户I/O2或CS2输出 | |
| 141 | USER3/CS3# | 用户I/O3或CS3输出 |
表8 串行EEPROM装截数据表
| 串行EEPROM偏移 | 寄存器偏移量 | EEPROM值 | 寄存器描述 |
| 0H | PCI02H | 9050 | 设备ID |
| 2H | PCI00H | 10B5 | 制造商ID |
| H | PCI0aH | 0680 | 级联码 |
| 6H | PCI08H | 000* | 级联码 |
| 8H | PCI2EH | 9050-1 | 子系统ID |
| AH | PCI2CH | 10B5 | 子系统制造商ID |
| CH | PCI3EH | **** | |
| EH | PCI3CH | 01** | 中断引脚 |
注:表中“*”表示“不必考虑”。
(3)中断发生器。9052可以从两个局部总线中断输入生成一个PCI中断。
(4)时钟。9052局部总线接口运行于TTL时钟并生成必要的内部时钟。局部TTL时钟与PCI时钟异步工作,并允许局部总线独立于PCI时钟工作。缓冲PCI总线时钟BCLKO可与局部总线时钟LCLK相连。
(5)可编程局部总线配置。9052支持复用或非复用的8/16/32bit局部总线。芯片有4字节使能,26根地址线,32/16/8bit数据线。
(6)先读模式。9052支持先读模式,也就是说,预锁存数据可从9052内部FIFO寄存器先于局部总线读取。
(7)总线驱动。所有控制、地址和数据信号都由9052直接生成,用于驱动PCI和局部总线,不用额外驱动电路。
(8)串行EEPROM接口。9052包含一个用于加载配置信息的串行EEPROM接口,对于装载一个特定的适配设备信息来说,这是很有用的。将9052转换为ISA接口模式时串行EEPROM也是必需的。
(9)四个局部片选信号。9052提供了四个局部片选信号,基地址和每一个片选的范围可由串行EEPROM或主控制器独立编程。
(10)五个局部地址空间。基地址和每一个局部地址空间的范围可由串行EEPROM或主控制器独立编程。
(11)读/写存储延时和写周期保持。对于ISA总线,读/写信号可以从时钟周期的开始延时。
(12)局部总线等待状态。附加的LRDYi握手信号用于产生各种等待状态,9052有内部等待状态发生器。
(13)可编程预锁存计数器。局部总线预锁存计数器可以编程为(无预锁存),4、8、16或连续值(预锁存计数器关闭)模式。
1.2 引脚功能
PCI9052为160脚塑封PQFP封装结构。其各管脚功能接功能块划分分别列于表1~表7中。
2 PCI9052芯片的使用
PCI9052接口芯片作为通用PCI接口,其应用场合和范围是广泛的。随着PC机中ISA扩展槽数量的逐渐减少直至取消,PCI扩展槽已成为PC机主板配置的主流,今后的扩展板的开发必定是基于PCI接口的。
但现行的很多ISA接口的扩展板,尤其是自己自主研制的具有某些特殊功能的扩展板,如何使之能在PCI槽上继续使用,显得很有意义。下面就着重介绍PCI9052接口芯片将ISA扩展板直接转换为PCI扩展板的应用。
2.1 ISA接口模式介绍
PCI9052的内部结构中包含了一个独立的ISA逻辑接口,通过这个逻辑接口可以完成由ISA到PCI的平滑转换。它支持8位和16位数据宽度的ISA设备,该设备可以是内存映射,也可以是I/O映射。选读模式用于提高读取数据的吞吐量。一旦ISA接口模式使能,PCI9052只执行单个周期操作。特别指出的是,串行EEPRIM必需使ISA接口模式使能。
2.1.1 配置方法
可以使用两种方法配置PCI9052用于ISA接口模式。
方法一:烧写串行EEPROM方法。使用烧写器,将数据写入串行EEPROM,参照表8使用恰当的数据。需要注意的是,对于ISA模式,LRESET#(132)引脚必须始为高电平,并确认MODE(68)引脚置为0,处于非复用模式。
方法二:热配置方法。从PCI总线通过PCI9052芯片使用方法一的相同数据来烧写串行EEPROM。该方法需要注意的是,LRESET#(132)引脚的极性在ISA模式时由低变为高, 并确认MODE(68)引脚置为0。
2.1.2 配置注意事项
当为ISA接口模式配置时必须注意以下几点:
①存取ISA接口引脚时要参照PCI9052引脚的C/ISA模式引脚图来连线。
②空间0分配给ISA接口的内存存取。
③空间1分配给ISA接口的I/O存取。
④无论空间0的局部地址处于CS0#范围还是空间1的局部地址处于CS1#范围,ISA存取均有效。
⑤标准的从周期可以使用空间2、空间3和串行EEPROM来存取。
2.2 应用实例
下面给出一个电子转换开关控制器应用实例。该控制器的功能是,当检测到触发条件时,便向端口200H送一个控制码C0H,用以控制继电器完成开关动作。该例子旨在说明如何将PCI9052用于ISA扩展板向PCI扩展板的转换。
2.2.1 硬件设计
控制器硬件电路结构图如图1所示。
电路分为三部分。第一部分是9052与PCI插槽间的连接信号线。这些信号包括地直数据复用信号AD[31:0],总线命令信号C/BE[3:0]#和PCI协议控制信号PAR、FRAME#、IRDY#、TRDY#、STOP#、IDSEL、DEVSEL#、PERR#、SERR#。第二部分是与串行EEPROM的连线。这里有四根信号线:EESK、EEDO、EEDI和EECS,串行EEPROM的数据可以提前用烧写器烧好,也可以在线烧写。第三部分是9052与应用电路的连接。在本例中主要用到的是ISA局部总线信号,有数据线LAD[7:0],地址线ISAA[1:0]、LA[23:2],I/O读写信号线IOWR#、IORD#,地址锁存BALE。
2.2.2 软件设计
程序分为两部分,一部分为PCI9052各配置寄存器赋值并初始化芯片,另一部分为主程序,任务是不断查询册表中的相关键值,一旦条件满足,即向端口送控制码。程序用DELPHI语言完成。选用DELPHI的主要原因是可编译成独立的可执行文件,不带任何动态连接库,程序短小精悍,并且DELPHI各版本间的兼容性比较好。程序流程图如图2所示。