新闻中心

EEPW首页 > 医疗电子 > 设计应用 > PCI9052总线接口芯片及其ISA模式应用

PCI9052总线接口芯片及其ISA模式应用

——
作者:吴业进,刘锋 (解放军信息工程大学 河南郑州450002) 时间:2007-01-26 来源:《电子工程师》 收藏

1 引 言

本文引用地址:https://www.eepw.com.cn/article/20665.htm

pci(peripheral component interconnect)总线,即外围部件互连总线,是一种先进的高性能32/64位地址数据复用局部总线。pci总线与处理器和时钟频率无关,可以提供高达132mb/s的数据传送速率;它具有严格的规范,只要符合pci规范的扩展卡插入任何pci系统就能可靠地工作。但由于pci总线协议的复杂性,其接口的实现比vesa、isa和mca等总线要困难得多。

目前,开发pci接口设备有两种方法:一种方法是采用可编程逻辑芯片,它的最大好处是比较灵活,用户可以根据自己的需要开发出适合于特定功能的芯片,而不必实现pci的全部功能。现在有许多生产可编程逻辑器件的厂商,如xilinx的logicore和altera的ampp都提供经过严格测试的pci接口功能模块,用户只要进行组合设计即可。另一种常用的方法是使用专用接口器件,通过专用芯片可以实现完整的pci主控模块和目标模块的功能,将复杂的pci总线接口转换为相对简单的用户接口,用户只要设计转换后的总线接口即可。

专用接口芯片具有较低的成本和通用性,能够有效降低接口设计的难度,缩短开发时间。现有的pci接口芯片主要有amcc公司的amccs59xx系列和plx公司的pci90xx系列。在plx系列产品中,pci9052是一款常用的pci总线目标接口芯片,该芯片最大的特色是带有一个isa接口,通过它可以实现isa总线到pci总线的无缝连接,这为目前仍存在的isa插件移植到pci提供了极大的方便。

利用pci9052的isa模式进行pci的开发可以简化设备开发过程,但难度还是较大。设计者不仅要理解掌握手册中的要点,还要学习硬件设计和软件设计的方法和过程。为了让大家能够系统地了解利用pci9052的isa模式进行pci板卡开发的过程和方法,本文从硬件设计、配置寄存器的编写、板卡调试和驱动程序的编写等方面介绍了pci9052的开发过程。2 pci9052的isa接口模式

2.1 基本特点

pci9052是plx公司继pci9050之后推出的低成本pci总线接口芯片,它符合pci2.1规范,可作为pci总线目标设备实现基本的传送要求;它有5个局部地址空间和4个局部设备片选信号,局部总线与pci总线时钟相互独立运行。通过配置eeprom的内容可以将pci9052设定为isa接口模式,通过8位或16位内存或i/o映射可直接使pci总线与isa总线相连,从而将isa总线快速地转换到pci总线上。

在我们的数控测井系统中,原来的通信控制模块是基于isa总线的插件,端口地址为0x100~0x10f,总线宽度是16位,可以实现输入输出,有中断功能。现在,我们利用pci9052芯片的isa模式对原来的板卡进行升级改造,使原来的板卡在做少量改动的情况下可以插在pci总线插槽中正常工作。

2.2 引脚介绍及连接

在不同的模式下,pci9052的部分引脚有不同的定义和功能。工作在isa模式下,其主要引脚如图1所示。

pci9052硬件连接正确与否直接关系到芯片能否正常工作,某些引脚处理不当往往会引起芯片工作不正常或死机。在图1中,9052左上方的信号和pci信号相连,左下方信号和串行eeprom相连,右边的信号和局部总线信号相连,也就是和isa总线信号相连。

pci端主要信号完全符合pci规范要求,直接和pci总线上对应的引脚相连即可。 isa端连接如下:

在我们的板卡中由于只涉及到i/o,且为16位宽的数据,因此,memwr#、memrd#、sbhe#和bale信号可以不用。

lad〔15:0〕是16位的数据总线。la〔23:2〕和isaa〔1:0〕共同组成isa的地址总线,对于8位的数据总线,isaa〔1:0〕相当于la〔1:0〕,它们一起进行地址译码。而对于16位的数据线,每次读写两个字节,这时isaa〔0〕不用,isaa〔1〕和la〔23:2〕一起进行地址译码。需要注意的是,并不是所有的地址线都要进行地址译码,这里要根据板卡上实际i/o口空间的大小选择译码地址线的数目。对于我们的板卡,la〔3:2〕和isaa〔1〕地址译码是必需的(isaa〔1〕为低位),当然,所有的地址线都参加地址译码也是可以的。

iowr#和iowd#是局部端口读写信号。lclk是isa端时钟信号,按芯片要求外接8mhz的时钟。lreset#是9052芯片上电时pci端复位后所发出的对isa端进行复位的信号。在isa模式下,该信号输出高有效。

linti1和linti2是局部总线中断输入信号,这里,我们只用到linti1信号,由于9052内部没有对这两个信号进行上拉或下拉处理,因此,在外部将linti2上拉或下拉到一个确定的状态。

nows#是无等待标志信号,此引脚上拉或接地可以减少等待的时钟数。lrdy#是局部准备就绪信号,如果局部芯片没有提供该信号,一般对它进行下拉或接地处理。chrdy是局部通道准备好信号,一般要进行上拉处理。lhold是局部总线请求信号,应该进行下拉或接地处理。mode是模式选择信号,由于我们使用的是isa非复用模式,因此该引脚接地。

在设计电路板时,要严格遵循pci规范。电源和地线要尽可能宽且电源滤波要良好,在芯片的每个电源引脚最好接0.1μf的滤波电容。由于pci时钟信号的一半要靠反射波来提升,因此,时钟信号clk走线长度近似为2500mil。prstn1和prstn2两者必须有一个接地,主板就是靠这两个信号来判断这个插槽上是否有卡的。用作上拉或下拉的电阻一般取值2.2 k欧姆即可。一般来说,pci板卡推荐做4层板,其实只要布线合理做两层板也是可以的。

串行eeprom端信号有以下几种:时钟信号(eeck)、读数据信号(eedo)、写数据信号(eedi)和片选信号(eesc),分别和eeprom相应管脚相连即可。

2.3 串行eeprom的配置

与isa总线相比,pci总线支持三个物理空间:存储器地址空间、i/o地址空间和配置空间。配置空间是pci所特有的一个空间,所有的pci设备必须提供配置空间。串行eeprom存储了pci9052重要的配置信息,如设备号did、制造商号vid、子设备号sdid、子制造商号svid、中断号、设备类型号、局部空间基地址、局部空间描述符、片选响应以及局部响应控制cntrl等信号。eeprom的内容非常重要,它直接关系到整个板卡能否正常工作,在设计时要非常注意。

系统加电时,通过pci的rst复位以后,pci9052首先检测eeprom是否存在。如果检测到eeprom首字不是ffffh,pci9052将依次读取eeprom的内容来初始化内部寄存器。pcibios根据配置寄存器的内容进行系统资源分配,这样,整个pci设备的资源才不会发生冲突,从而实现了pci总线的即插即用的特性。

pci9052的内部寄存器为总线接口的设计与实现提供了最大的灵活性,这些寄存器可以分为两类:pci配置寄存器和局部配置寄存器。pci配置寄存器有6个基地址寄存器,这些基地址是在系统中的物理地址。其中,基地址0和基地址1分别是以内存方式和i/o方式访问局部配置寄存器的基地址,基地址2和基地址3分别映射到局部基地址0和局部基地址1。局部总线配置寄存器用于设定局部总线的工作方式,如基地址和地址范围等。实际上,9052在pci和isa总线之间起到一个翻译作用,要访问isa端地址只需对pci端基地址进行操作就可以了。对于我们的设计,eeprom的值及装入顺序如表1所示。

表1中,did和vid是plx公司的标志,一般不能更改。操作系统就是通过did、vid、sdid、svid及设备类型码来识别不同厂家的设备的。

在isa模式下,局部空间1必须映射为i/o空间,局部空间0必须映射为内存空间。另外要注意:在isa模式下虽然不存在片选信号,但我们必须设置它,使它的值和局部空间1的基地址和范围相匹配,否则,局部地址空间无法响应pci的控制指令。同样,如果用到局部地址空间0,也要设置它的值。

对于pci9052芯片,它的配置寄存器的内容是在芯片复位时通过串行eeprom加载的。在isa模式下,串行eeprom一定不能省略,我们一般使用松下公司的nm93cs46或与之兼容的存储器。配置寄存器的内容编写完以后,可以用编程器写入eeprom中。另外,也可以通过主机在线烧写,但由于各种原因,成功率很低。3 板卡调试

板卡做好以后,就可以插入主机板的pci插槽中进行调试。在调试的过程中,为了跟踪信号的变化通常要用到数字示波器,另外,还需要一个软件调试工具。plx公司提供了一个905x的专用调试软件plxmon,我们可以从它的网站免费下载。plxmon包括以下功能:pci总线的探测与选择;配置寄存器的检查和修改;内存空间的显示、修改和填充;eeprom内容的读写等。利用这个工具,我们可以很清楚地看到eeprom的内容以及pci配置寄存器和局部端配置寄存器的内容,另外,用户还可以进行内存和i/o端口的读写。

此外,我们也可以用windriver或softice软件进行板卡调试,但总的来说,使用起来都不如plxmon方便。有了开发工具,设计者就可以根据板卡的具体要求进行调试了。

4 驱动程序的编写

板卡调试成功以后就可以编写驱动程序了。目前,编写驱动程序最常用的工具是vtoolsd和windriver,它们都是专门的驱动开发工具。尤其是windriver,开发人员不需要掌握windows驱动编程的知识,利用它的向导工具,能很快地开发出高质量的驱动程序。

在windows9x环境下,操作系统统一管理硬件资源,出于安全性考虑,ring3层应用程序不能直接访问硬件(i/o端口访问除外),因此,必须编写运行在ring0层的虚拟设备驱动程序(vxd)来响应系统底层的中断。如果板卡只有i/o操作,而没有用到中断和内存操作,可以不用编写驱动程序,直接在应用程序里实现输入输出就可以了。编程的方法是先找到板卡,再找到卡中与我们用到的局部空间相对应的pci基地址,然后就可以根据要求对这个基地址进行操作了。如果在windows98以上版本的操作系统下,就要编写wdm设备驱动程序了。

5 结束语

由于pci总线数据吞吐量大,传输速率高,在微机接口设计中,基于pci总线的设计成为主流。pci9052是一款优秀的pci接口芯片,设计者用它可避免直接面对复杂的pci总线协议,降低了设计难度,从而使用户可以集中精力解决具体的应用问题,缩短了开发周期。实践证明,pci9052为开发作为总线接口目标设备的产品,特别是对基于isa总线的接口板向pci的转换提供了极大的方便。



关键词:

评论


相关推荐

技术专区

关闭