《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > PCI 9052及其应用

PCI 9052及其应用

2008-08-06
作者:赵 斌

    摘  要: 介绍了PCI9052的功能、特点及具体应用,说明了ISA模式下EEPROM配置及功能引脚连接的注意事项,给出了A/D" title="A/D">A/D转换电路" title="转换电路">转换电路及其驱动程序实例。旨在介绍如何利用PCI9052完成由ISA扩展板" title="扩展板">扩展板向PCI扩展板的转换。
    关键词: PCI总线   ISA扩展板   PCI9052    A/D转换

 

    PCI(外围部件互连)总线是一种高性能局部总线" title="局部总线">局部总线。PCI总线与处理器及时钟频率无关,可以提供极高的数据传送速率(33MHz总线时钟、32位数据通路时,最大传输率为132Mbit/s);PCI总线具有地址数据多路复用的高性能32位或64位的同步总线,可适用于各种平台,支持多处理器和并发工作;PCI总线规范严格,具有良好的兼容性,对PCI扩展卡及元件能够自动配置,实现设备的即插即用;PCI总线还具有良好的可扩展性,通过PCI-PCI桥路,可无限地扩展。
    由于功能强大,使用方便灵活,PCI总线产品与其它总线产品相比具有较大优势和较为广阔的应用前景。 PCI扩展槽已成为PC机主板配置的主流,今后的扩展板的开发必定是基于PCI接口的。如何使现有的某些ISA接口的功能扩展板能在PCI槽上继续使用,显然很有意义。
    实现PCI总线接口电路,目前一般有两种方案:使用可编程逻辑器件(PLD)和PCI专用桥接芯片组。鉴于PCI总线协议的复杂程度,如使用可编程逻辑阵列芯片来完成PCI协议,虽然其灵活性较高,但其开发周期长, 难度较大。而通用的PCI接口芯片功能较全, 对PCI协议具有良好的支持,可实现PCI规范要求的接口信号和配置寄存器,能够减少开发时间和成本,并获得较好的数据传输性能。所以决定采用已有的桥接芯片实现PCI总线接口电路。下面就来介绍如何利用PCI9052接口芯片将A/D功能的ISA扩展板转换为PCI扩展板的应用。
1 PCI9052概述
    PCI9052是PLX公司的一款低成本PCI总线接口芯片,符合PCI2.1规范。它有五个局部地址空间和四个局部设备片选信号,支持多路复用和非多路复用的8位、16位和32位通用局部总线,且局部总线与PCI总线时钟相互独立运行。
1.1 ISA接口模式介绍
    PCI9052内部含有一个ISA逻辑接口,支持8位和16位的ISA从设备。通过配置EEPROM可将PCI9052设定为ISA模式,通过内存或I/O映射可将PCI总线与ISA总线相连,快速实现ISA总线到PCI总线的转换。
1.2 配置方法及注意事项
    通过对EEPROM的编程可将PCI9052配置为ISA接口模式,方法包括利用烧录器烧写和利用PCI9052芯片在PCI总线上直接烧写。配置信息包括设备号DID、制造商号VID、子设备号SDID、子制造商号SVID、中断号、设备类型号、局部空间基地址、局部空间描述符、片选响应以及局部响应控制CNTRL等信号。对空间的分配方式为:
    (1)空间0分配给ISA接口的内存存取。
    (2)空间1分配给ISA接口的I/O存取。
    (3)无论空间0的局部地址处于CS0#范围还是空间1的局部地址处于CS1#范围,ISA存取均有效。
    (4)标准的从周期可以使用空间2、空间3和串行EEPROM来存取。
    EEPROM的内容非常重要,它关系到板卡能否正常工作,在设计时要非常注意。
2 应用实例
    下面给出基于PCI9052接口的A/D数据采集板的应用实例。该数据采集板的功能是:外部模拟信号经过多选开关选通后,再经过运算放大器送入A/D芯片进行转换,其转换状态的结果可用程序查询方式读出。
2.1 硬件设计
    硬件电路原理如图1所示。

 


    硬件电路分为四个部分:
    (1)PCI9052与PCI插槽间的连接信号线。这些信号包括地址数据复用信号AD[31:0],总线命令信号C/BE[3:0]#,模式选择信号MODE,局部总线请求信号LHOLD和PCI协议控制信号PAR、FRAME#、IRDY#、TRDY#、STOP#、IDSEL、DEVSEL#、PERR#、SERR#。由于使用的是ISA非复用模式,因此MODE引脚应接地。LHOLD信号应该进行下拉或接地处理。
    (2)PCI9052与串行EEPROM的连线。有EESK、EEDO、EEDI和EECS等连线。
    (3)PCI9052与A/D转换电路的连接。由于用到的是ISA局部总线信号,所以有数据线LAD[7:0]、地址线ISAA[1:0]、LA[23:2]、I/O读写信号线IOWR#、IORD#、地址锁存BALE等连线。
    (4)A/D采样转换电路。包括A/D芯片、多选开关、采样保持和逻辑控制电路。
    PCB板布线应注意以下事项
    (1)参照PCI9052的C/ISA模式引脚图进行连线。
    (2)对于ISA模式,CLK(局部总线时钟)为8MHz,可与PCI时钟异步。由于PCI时钟信号的一半要靠反射波来提升,因此时钟信号CLK走线长度近似为2500mil+/-100mil。直接连接不满足长度要求时可采用蛇形布线多绕几圈。
    (3)PRSNT1#和PRSNT2#两者必须有一个接地,主板依靠这两个信号判断插槽上是否有卡及板卡对电源的要求信息。
    (4)PCI卡上每个Vcc都必须退耦,电容容量不小于0.01μF。
2.2 软件设计
    板卡调试成功以后就可以编写驱动程序了。目前,编写驱动程序最常用的工具是DDK、VtoolsD和WinDriver等。它们都是专门的驱动开发工具,在此选用的是WinDriver。它允许用户使用Visual C++、Borland或者其它Win32编程工具软件在用户模式(UserMode)上编写设备驱动程序,能很快地开发出高质量的驱动程序。编程的基本方法是首先查找板卡,再找到卡中与用到的局部空间相对应的PCI基地址,然后根据要求对这个基地址进行操作。考虑到调用灵活性,在WinDriver环境下利用VC++6.0将驱动程序的接口制成DLL(动态链接库)形式,这样可以方便调用VB、VC、DELPHI、LABVIEW等多种编程语言。
    限于篇幅,对板卡进行查找及访问的程序源码摘录如下,以供参考:
    P9050_HANDLE  pcicheck(DWORD dwVendorID, DWORD dwDeviceID, BOOL fUseInt)  //获得板卡句柄" title="句柄">句柄函数
    {
        DWORD cards, my_card;
        P9050_HANDLE hPlx = NULL;//定义句柄初始为空
        RegisterWinDriver();
        if (dwVendorID==0)
        {
            sscanf (“9050”, “%x”,&dwVendorID);
            if (dwVendorID==0) return NULL;
            sscanf (“10b5”, “%x”,&dwDeviceID);
        }
        cards = P9050_CountCards (dwVendorID, dwDeviceID);//对PCI卡的个数进行遍历
     …
        if(P9050_Open(&hPlx,dwVendorID,dwDeviceID,my_card-1,
    fUseInt ? P9050_OPEN_USE_INT:0/*P9050_OPEN_FIX_BIT7*/ ))
        return hPlx;  //返回获得板卡句柄
    }
    int  pciad(P9050_HANDLE hPlx, BOOL fLocalAddr,int ch)//用获得的板卡句柄对IO空间进行访问,实现A/D操作
    {
    …
        P9050_WriteSpaceByte(hPlx, ad_sp, addr1, (BYTE) data1);   //对局部IO空间进行写操作
    …
       data5=P9050_ReadSpaceByte(hPlx, ad_sp, addr4); //对局部IO空间进行读操作     
    …
    }
    int  pciclose(P9050_HANDLE hPlx) // 关闭板卡句柄函数
    {
    P9050_Close(hPlx);
    return 1;
    }
参考文献
1 PCI9052 Data Book V1.01. PLX Technoledgy,1999
2 WINDRVR V5 User’s Guide.Jungo Ltd, June 20,2001
3 戚德虎,李贵山.PCI局部总线开发者指南.西安:西安电子科技大学出版社,2000

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。