0 引言
目前,PCI总线" title="PCI总线">PCI总线已成为新一代个人计算机的标准总线,它是一种高性能的32/64位地址数据复用总线,总线时钟频率0~33MHz,具有独立于处理器、高数据传速率、即插即用、低功耗、适应性强等特点。随着PCI总线的广泛应用,其接口的设计开发显得尤为重要。实现PCI总线接口一般采用CPLD或FPGA设计PCI接口,这种方法难度很大;另一种是采用专用的PCI接口电路" title="接口电路">接口电路,使设计开发者免除繁琐的时序分析,缩短开发周期,降低开发成本。PCI通用接口芯片对于PCI协议的良好支持,以及提供给设计者的良好接口都大大减少了设计者的工作量。现有的PCI接口芯片主要有AMCC公司的MACCS59XX系列和PLX公司的PLX系列。本文将对PLX公司的PCI9052" title="PCI9052">PCI9052总线目标接口芯片的功能及其在PCI板卡设计中的应用进行介绍。
1 PCI9052的功能与操作
1.1 PCI9052的简要介绍
PCI9052是PLX公司继PCI9050之后新推出的,可用于低成本适配器的总线目标接口芯片。PCI9Q52与PCI9050一样,可提供用于适配卡的小型高性能PCI总线目标(从属)接口,以使ISA适配器可以迅速、低成本地转换到PCI总线上。采用PCI9052可使适配卡上的I/O数据传送速度从ISA总线的8MHz提高到PCI的33MHz。
PCI9052能被编程去直接连接复用或非复用的8位、16位或32位局部总线。8位和16位模式也能容易地转换成ISA转PCI的设计。
PCI9052包含读和写FIFO,用来将32位宽33MHz的PCI总线与有可能总线宽度要窄或慢的局部总线的速度进行匹配。最大5个局部地址空间和4个片选被支持。
1.2 PCI9052的主要功能
支持低成本从属适配器:PCI9052支持符合PCI2.1版本协议的低成本从属适配器,此芯片也允许转换ISA适配器到PCI。
异步操作:PCI9052的局部总线与PCI总线的时钟相互独立运行,两总线的异步运行便于高、低速设备的兼容。局部总线的运行时钟频率范围为0~40MHz,TTL电平,PCI的运行时钟频率范围为0~33MHz。
支持突发操作:PCI9052支持从PCI总线到局部总线的猝发存储器映射空间的传送和I/O访问,PCI9052提供一个64字节的写FIFO和一个32字节的读FIFO,从而支持预取模式即突发操作。
中断产生器:可以由局部总线的二个中断信号LINTi1和LINTi2产生一个PCI中断信号INTA#。
串行EEPROM接口:PCI9052包含一个SEEPROM接口,用于存放PCI总线和局部总线的配置信息。
5个局域总线地址空间和4个片选:基址和地址范围可以由串行EEPROM或主机进行编程。
大/小边界的字节交换:PCI9052支持大和小边界字节顺序。在16位或8位局部总线操作时PCI9052也支持大边界字节通路方式重定向到当前字/字节通路。
总线驱动:所有地址、数据和控制信号都由PCI9052直接驱动,不用额外的驱动电路。
局部总线等待状态:插入LRDY#(局部准备好输入信号)握手信号能产生几个等待状态,PCI9052也有一个内部等待状态产生器(R/W地址到数据,R/W数据到数据,和R/W数据到地址)。
PCI锁定机制:主机可以通过锁定信号占有对PCI9052的唯一访问权。
ISA总线模式:PCI9052提供一个ISA逻辑接口,用户可直接使PCI总线和ISA总线相连,可以非常容易地将ISA设计转换到PCI。
PCI9052的接口示意图如图1所示。
1.3 PCI9052的应用操作
1.3.1 初始化
在上电时,PCI总线的RST#信号将PCI9052的内部寄存器设置为缺省值,同时,PCI9052输出局部复位信号(LRESET#),并且检查EEPROM是否存在。如果设备上装有EEPROM,且EEPROM的第一个16字节非空,那么,PCI9052根据EEPROM或PCI主机CPU设置内部寄存器,否则设为缺省值。
1.3.2 复位
PCI9052总线接口在RST信号输入有效时将引起整个PCI9052的复位,并输出LRESET局部复位信号。PCI总线上的主机可以通过设置控制寄存器中的软件复位比特来对PCI9052进行复位,并输出LRESET信号。
1.3.3 访问串行EEPROM接口
复位后,PCI9052开始读串行EEPROM,若读出的第一个字非FFFFH,则PCI9052继续读操作,否则认为EEPROM无效。对PCI9052来讲,EEP-ROM的前四个字节应为52H、90H、B5H和10H,其中9052H为设备号,10B5H为厂商编号。
1.3.4 访问内部寄存器
PCI9052提供了二种类型的片内寄存器,即PCI配置寄存器和局部配置寄存器,二者都只能由PCI总线和串行EEPROM访问,也可以通过设置寄存器CNTRL[3:12]禁止对后者的访问,这样就极大地增强了接口设计的灵活性。
1.3.5 直接数据传输模式
PCI9052支持PCI总线上的主处理器对局部总线上的设备进行读/写操作。PCI9052配置寄存器能够访问映射到局部的地址空间。同时片内的读写FIFO使PCI9052能够支持PCI总线与局部总线间的高性能猝发传送。PCI总线主控访问局部总线的示意图如图2所示。
1.3.6 PCI中断(INTA#)的产生
要产生P C I中断IN TA#, 首先将寄存器INTCSR[6](PCI中断使能位)设置为“1”,如果需要以软件方式产生中断,则只需将INTCSR[7](软件中断位)设置为“1”。如果系统设计方案中选用由局部总线上的设备产生中断信号INTi1和INTi2,再生成PCI中断INTA#的方式,只要将寄存器INTCSR的相关位按表1进行设置,复位后INTCSR的值全部为“0”。
1.3.7 局部总线ISA接口模式
PCI9052的新功能是它直接提供给用户ISA逻辑接口,从而保证了ISA到PCI的平滑转换。另外,ISA接口还能支持8/16位存储器或I/O设备。用户通过对EEPROM的编程可将PCI9052置为ISA接口模式,在ISA接口模式下,LRESET信号将由低有效变为高有效,并可将局部总线空间2、3配置为无复用方式。
2 PCI9052设计实例
利用PCI总线目标接口芯片PCI9052设计PCI接口卡非常简便,图3是PCI主处理机读取SRAM的接口示意图,其主要功能是PCI主处理机通过PCI9052实现对RAM的单次或突发读、写操作。
2.1 电路连接
按照图3中的连接电路,对于SRAM主要有以下几个引脚:A(17,0)、I/O(7,0)、OE、CE、WE等。地址线A(17,2)与本地地址线LA[17,2]相连,根据PCI9052的LBE[0,3]#的定义,这里用8位数据总线将LBE0#与A0连接,LBE1#与A1连接,OE与PCI9052的CSO#相连。
PCI9052为设计人员提供了4个片选信号CS(3:0)#,可以为4个设备提供片选信号。这样可以避免设计人员在设计电路时设计片选解码电路,其地址和范围可由其对应的内部寄存内部本地寄存器配置。串行EEPROM用于存储配置寄存器内的配置信息,可以采用NM93C46或与之兼容的存储器。
2.2 寄存器设定
电路连接好后,要使电路能正常工作,必须对PCI9052内部寄存器进行配置。根据电路性能及特点,应将寄存器设定为非复用工作方式,采取存储器映射,8位数据总线。局部总线0的基地址寄存器值为240001H,其地址范围寄存器值为3FFF8H,其描述寄存器值为39H;片选0基址寄存器的初始值为4C0001;命令寄存器的初始值为02H;状态寄存器的初始值为800H,其他寄存器采用默认值。确定好各个寄存器的值后,应依据一定的次序将寄存器的初始值写入EEPROM。
2.3 驱动程序的开发
为了从PCI总线配置寄存器中获得主机动态分配的映射基址并对映射端口进行读写,必须编写驱动程序。编写Windows驱动程序时,可以使用DDK,但难度较大。为了简化驱动程序开发,可使用Jungo公司推出的WinDriver开发工具。WinDriver可自动生成VxD驱动程序及相应的高级函数。使用者不需具备Windows驱动程序开发知识,所生成的高级函数可直接在VC或CBuilder等高级编程语言中调用。
3 结束语
由于PCI总线数据吞吐量大,传输速率高,从而大大改善了数据传输的“瓶颈”问题。所以,在未来的微机接口设计中,PCI总线的设计将成为主流。当然PCI总线协议比较复杂,设计PCI控制接口难度较大。实用证明,用专用PCI接口电路对设计PCI接口卡带来很大的方便。本文主要介绍PLX公司的PCI9052专用接口电路,设计者可根据需要选用其他接口电路,不需要ISA接口时,可选用PCI9050;需要DMA数据传送时,可选用PCI9054。专用PCI接口芯片的使用将避免用户直接面对复杂的PCI总线协议,因此可以降低设计难度,从而使用户能够集中精力解决具体的应用问题以缩短开发周期,降低开发成本,而且有利于驱动程序的开发。