pci9052isa总线到pci总线的平滑转换_第1页
pci9052isa总线到pci总线的平滑转换_第2页
pci9052isa总线到pci总线的平滑转换_第3页
pci9052isa总线到pci总线的平滑转换_第4页
pci9052isa总线到pci总线的平滑转换_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

pci9052isa总线到pci总线的平滑转换

由于vsa、ifa和mca等连续线程的复杂性,接口实现通常比vesa困难。目前实现PCI接口的有效方案主要是使用可编程逻辑器件或使用专用总线接口器件。采用可编程逻辑器件实现PCI接口的最大好处是比较灵活,用户可以根据自己的需要开发出适合于特定功能的芯片,而不必实现PCI的全部功能。但这种方法难度较大,设计周期较长。专用接口芯片具有较低的成本和通用性,能够有效降低接口设计的难度,缩短开发时间,因此,它是进行小批量开发的首选方案。现有的PCI接口芯片主要有AMCC公司的AMCCS59xx系列和PLX公司的PCI905x系列。在PLX系列产品中,PCI9052是一款常用的PCI总线目标接口芯片,其最大特色是带有一个ISA接口,可以实现ISA总线到PCI总线的平滑过渡,这为目前仍存在的ISA总线插件移植到PCI总线上提供了极大的方便。PCI9052是PLX公司继PCI9050之后推出的、可用于低成本适配器的的小型高性能PCI总线目标(从属)接口芯片。图1所示是PCI9052的信号接口示意图。虽然利用9052的ISA模式可以简化开发PCI设备的过程,但还是有较大的难度,而且即使在PLX公司的数据手册上也找不到一个系统开发的实例。为了系统地了解利用PCI9052的ISA模式进行PCI板卡开发的过程和方法,本文从硬件设计、配置寄存器的编写、板卡调试和驱动程序的编写等方面介绍了PCI9052的开发过程。1板卡中多个小口化性信号的串接在我们的静电探针测试系统中,原来的AD/DA模块是基于ISA总线的插件,端口地址为0X100~0X10F,总线宽度是16位,可以实现模入模出,无中断功能。现在,我们利用PCI9052芯片的ISA模式对原来的板卡进行升级改造。PCI9052芯片有三种工作模式,分别是C模式、J模式和ISA模式。不同的模式下,9052的部分引脚功能有不同的功能定义。通过配置寄存器设定,可将PCI9052设定为ISA接口模式。在此情形下,通过8位或16位内存或I/O映射,可直接使PCI总线和ISA总线相连,实现ISA总线到PCI总线的平滑转换。PCI9052采用了160芯PQFP封装。当其工作在ISA接口模式时,主要引脚如图2所示。在电路设计时,PCI9052硬件连接正确与否直接关系到芯片能否正常工作,某些引脚处理不当往往会引起芯片工作不正常或死机。图2中PCI9052左上部分的引脚应该全部与PCI总线上相应的脚相连。左下部分必须和与9052兼容的串行EEPROM相连。PCI端主要信号有如下几种:地址、数据多路复用的输入/输出信号(AD[31~0])、总线命令和字节使能多路复用信号(C/BE[3~0]#)、奇偶校验信号(PAR)、帧周期信号(FRAME#)、主设备准备好信号(IRDY#)、从设备准备好信号(TRDY#)、停止数据传送信号(STOP#)、初始化设备选择信号(IDSEL#)、设备选择信号(DE-VSEL#)、数据奇偶校验错误报告信号(PERR#)、系统错误报告信号(SERR#)、时钟输入信号(CLK)、复位信号(RST#)、中断信号(IN-TA#)和锁定信号(LOCK#)。这些信号完全符合PCI规范的要求。串接EEPROM端信号有如下几种:时钟信号(EESK)、读数据信号(EEDO)、写数据信号(EEDI)和片选信号(EECS)。关于ISA端主要信号在我们的板卡中由于只涉及到I/O,且为16位宽的数据,因此,MEMWR#、MEMRD#、SBHE#和BALE信号不用。IOWR#和IOWD#是局部端口读写信号。LA[23:2]和ISAA[1:0]共同组成ISA的地址总线,对于8位数据总线,ISAA[1:0]相当于LA[1:0],它们一起进行地址译码。而对于16位数据线,每次读写两个字节,这时ISAA不用,ISAA和LA[23:2]一起进行地址译码,ISAA是地址最低位。需要注意的是,并不是所有的地址线都要进行地址译码,这里要根据板卡上实际I/O口空间的大小选择译码地址线的数目。对于我们的板卡,由于是16位的数据总线,I/O空间大小为16个字节,所以LA[3:2]和ISAA地址译码是必需的(ISAA为最低位)。当然,所有的地址线都参加地址译码也是可以的,有利于将来地址空间大小的扩充。这里我们只选择几根线就能够进行正确的地址译码,这与后面要讲的EEPROM的配置有关联。LAD[15:0]是16位的数据总线。CHRDY是局部通道准备好信号,一般要进行上拉处理。LINTi1和LINTi2是局部总线中断输入信号,我们要改造的ISA卡不使用中断。由于9052内部没有对这两个信号进行上拉或下拉处理,因此,在外部将LINTi1和LINTi2上拉或下拉到一个确定的状态。LCLK是局部时钟信号,在ISA模式下,必须接一个8M的时钟。否则ISA接口就不会工作。LRESET#是9052芯片上电时PCI端复位后所发出的对ISA端进行复位的信号。在ISA模式下,该信号输出高有效。NOWS#是无等待标志信号,此引脚下拉或接地可以减少等待的时钟数。LRDY#是局部准备就绪信号,如果局部芯片没有提供该信号,一般对它进行下拉或接地处理,否则读写芯片可能会死机。LHOLD是局部总线请求信号,应该进行下拉或接地处理。MODE是模式选择信号,由于我们使用的是ISA非复用模式,因此该引脚必须接地。在设计电路板时,要严格遵循PCI规范。上拉或下拉电阻一般推荐为1~4.7kΩ。电源和地线要尽可能宽且电源滤波要良好,在芯片的每个电源引脚最好接0.1μF的滤波电容。由于PCI时钟信号的一半要靠反射波来提升,因此,时钟信号CLK走线长度近似为2500mil。prstn1和prstn2两者必须有一个接地,主板就是靠这两个信号来判断这个插槽上是否有卡的。一般来说,PCI板卡推荐做4层板,其实只要布线合理做两层板也可以。2eeper-4ep-将有分配到每一个区域计算机的接口卡都需要使用I/O空间资源、存储器空间资源以及中断资源。与ISA相比,PCI接口卡可以实现资源的自动配置,即在每次系统启动时,由操作系统根据每个接口卡上的资源需求情况,自动分配所需的资源,启动完毕后,接口卡的驱动程序可以读取分配结果,从而获得所需的资源。接口卡上无需任何硬件跳线即可实现“即插即用”技术,这是因为PCI系统除了支持内存空间、I/O空间外,还多了一个配置空间。配置空间是PCI所特有的一个空间,所有的PCI设备必须提供配置空间。而当系统加电时,BIOS软件会检测PCI总线,确定PCI总线上有哪些设备,以及它们的配置信息,并根据这些信息进行系统资源分配。只有这样,各个PCI设备才可能不至于产生地址以及中断等的冲突。因此,各个PCI设备必须有实现PCI协议规定的配置寄存器。对于9052,它的配置信息是通过串行EEPROM来储存并在芯片复位时进行加载的。串行EEPROM一般要求采用NM93CS46或与之兼容的存储器,必须支持连续读写。9052在C模式下可以省去EEPROM,因为在上电时它可以使用默认值,但在ISA模式下,串行EEPROM一定不能省。EEPROM存储了9052重要的配置信息,如设备号DID、制造商VID、子设备号SDID、子制造商SVID、中断号、设备类型号、局部空间基地址、局部空间大小及映射类型、局部空间描述、片选响应、中断控制和状态以及局部响应控制CNTRL等信息。EEPROM的内容直接关系到9052能否正确的工作。特别注意的是,如果EEP-ROM内容编写不正确的话,即使硬件设计没有一点错误,9052也无法正确工作。本设计中EEPROM的内容如下(地址和内容都用16进制表示):设备号DID为0x9050,制造商VID为0x10B5,子设备号SDID为0x0000,子制造商SVID为0x0000,设备类型号为0x06800000。其中DID和VID我们一般使用默认值,这是PLX公司9052芯片的标志,而SDID和SVID可以自己设置,也可以向PLX免费申请一个全球唯一的串号。操作系统一般都是通过DID、VID、SDID、SVID以及设备类型号来识别各个厂家不同的设备(实际上是驱动程序通过DID、VID、SDID、SVID来寻找确定板卡的)。设备类型号可以查询手册,自己给它指定一个。本例为0x06800000,计算机启动时会提示发现PCI桥设备。局部空间1范围寄存器的值为0xFFFFFFF1,表示I/O空间大小为16字节,bit0为1表示此空间被映射为I/O空间。局部空间1基地址寄存器的值为0x00000101,表示空间1的基地址ox100,bit0为1表示空间1使能。局部空间1描述寄存器的值为0x00400022,其中bit[23∶22]为01表明局部空间1的数据总线宽度为16位。在ISA模式中,局部空间1必须映射为I/O空间,局部空间0必须映射为内存空间。局部片选寄存器1的值是0x00000109,表示局部地址落在0x100-0x110之间时,片选有效。在ISA模式下,虽然不存在片选信号1,但我们必须设置它,使它的值与局部空间1的基地址和范围相匹配,否则局部空间也就无法响应PCI的I/O控制指令了。同样,如果用到了局部空间0,那么局部片选寄存器0的值也要与局部空间0的基地址和范围相匹配,否则局部空间也就无法响应PCI的内存控制指令了。这个寄存器的值十分重要,具体算法可以查看PLX公司的数据手册。中断控制状态寄存器的值为0x00001000,表示不使用中断,其中bit12为1表示ISA模式使能,如果不设置bit12为1,那么9052就会工作在C模式而造成错误。9052内部提供了两种配置寄存器:PCI配置寄存器和局部空间配置寄存器。PCI配置寄存器有6个基地址寄存器,局部配置寄存器有4个基地址寄存器。PCI基地址是在系统上电时由BIOS根据设备配置信息而分给设备在系统中的物理地址,我们在设计硬件电路和编写EEPROM时不用理会。其中PCI基地址0和基地址1分别是以内存方式和I/O方式来访问局部配置寄存器所分配的基地址,PCI基地址2和基地址3分别映射到局部基地址0和局部基地址1。编写驱动程序时通过调用PCI基地址2或基地址3的值得到板卡在微机系统中的真实基地址。因此,9052其实就相当于一个桥,在PCI总统和局部总线之间起到一个翻译的作用。在本例中,对局部空间1进行I/O操作,局部基地址寄存器1的值为0x101,表示空间1的基地址ox100,局部片选寄存器1的值是0x00000109表示局部地址范围为0X100~0X10F,共16字节。假设现在板卡实际基地址的值为PCIBAR3,那么当PCI端访问地址PCIBAR3+Offset(Offse为偏移量)时,若0≤Offset<16,那么ISA端的地址总线上出现的值就会为0x100+Offset,且IORD或IOWR信号也会产生,如图3所示;如果Offset不在这个范围之内,那么地址就会落在局部片选寄存器1所设置的有效片选范围之外,因而局部端也就不会响应。3板卡调试软件plxwell此外,我们也可以用WinDriver软件进行板卡调试,但使用起来不如PLXmon方便。有了开发工具,设计者就可以根据板卡的具体要求进行调试了。4驱动模块的实现板卡调试成功以后就可以编写驱动程序了。目前,主流操作系统是Windows2000及WindowsXP,这就要求驱动程序为新型的WDM程序。编写WDM驱动程序最常用的是DriverStudio和WinDriver,它们都是专门的驱动开发工具。Jungo公司提供的WinDriver程序为一般的用户应用程序提供了一个很好的直接进行底层硬件操作的API接口,使得开发人员不需要掌握Windows内核及驱动编程的知识,利用它的向导工具,很快地开发出驱动程序。但是利用WinDriver开发的驱动需要到Jungo公司购买License,所以笔者在板卡调试时使用PLXmon和WinDiver,而发布的正式版本则使用DriverStudio编写。首先,在DriverStudio的图形向导中填写DID、VID、SDID、SVID,驱动程序会根据以上配置信息寻找并确定PCI插槽上的目标接口卡。其次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论