PCI 9052及其在通用网络控制卡设计中的应用
关键词:PCI总线,PCI接口芯片9052,WDM
1、前言
PCI(Peripheral Compornent Interconnect,即外围部件互连)总线是一种能为主CPU及外设提供高性能数据总线的局部总线。目前已经成为最流行的、也是最有发展前途的计算机系统局部总线[1]。相应的,计算机应用领域的各种功能扩展卡也必将逐步发展为PCI标准的扩展插卡。以INTEL为首的多家集团开始设计的PCI总线,其V2.0规范于1993年4月正式发布。PCI总线具有严格的规范,这就保证了它具有良好的兼容性,符合PCI规范的扩展卡可插入任何PCI系统可靠地工作。一个PCI接口包括一系列的寄存器,这些寄存器中的信息允许计算机自动配置PCI卡。
目前,实现PCI接口大体有两种方式:使用可编程器件或专用芯片。由于PCI总线协议非常复杂。开发PCI扩展板若使用可编程逻辑阵列芯片来完成PCI协议的执行,其工作量和难度都是巨大的,一般都会选用PCI专用接口芯片。下面介绍PCI9052接口芯片及其在通用网络控制器中的应用。
2、PCI9052芯片简介
PCI9052是PLX技术公司为扩展适配板卡推出的能提供一种混合的高性能PCI总线目标(从)模式的接口芯片。其主要特点如下:
(1)遵照PCI2.1规范的从接口芯片,支持低成本从属适配器;(2)双向FIFO,可实现高性能的零等待突发式数据传输;(3)最多可达5个局部地址空间和4个芯片组。(4) 支持Big/Little Endian编码字节的转换; (5)支持复用或非复用模式的8、16或32位的局部总线;(6)局部总线与PCI时钟异步。(7)串行EEPROM提供PCI总线和局部总线部分重要配置信息; (8)PCI锁定机制,PCI主控设备可以通过锁定信号独占对PCI9052的访问。(9)PCI总线传输速率达132Mb/s。(10)低功耗CMOS,160脚PQFP封装。
PCI9052为适配板提供了简明、高性能的PCI总线从接口,能快速、廉价的将ISA器转换为PCI总线。同时,PCI9052能加快适配板上的数据传输率,由ISA的8MHz、5Mb/s提高到33MHz、132Mb/s。可与多种局部总线相连,并且支持相对较慢的局部总线。
3、PCI9052芯片在通用网络控制卡中的应用
PCI9052接口芯片作为通用PCI接口,其应用场合和范围是广泛的。随着PC机中ISA扩展槽数量的逐渐减少直至取消,PCI扩展槽已成为PC机主板配置的主流。本文设计的通用网络控制卡,主要由一片自制双口RAM(由6264和ISPL1032E组成)、PCI9052、51单片机以及一些外围器件构成。该控制卡的核心功能是:由RS-485进来的数据通过PCI卡,送微机进行数据处理,需显示部分通过RS-232由51单片机控制液晶实现显示功能。
3.1工作原理
在本设计中,采用控制能力较强的单片机来执行数据流的控制,高速的PC机进行数据处理。由于PCI9052对PCI总线没有直接的主控能力,对内部寄存器的操作是通过PCI总线上的主机或串行EEPROM来实现的。9052通过EEPROM(93CS46)读取配置信息,初始化内部寄存器。在9052和89C51通信过程中,自制双口RAM将89C51接收到的数据交给PC机处理,同时,PC机需要显示或通信的数据也通过双口RAM送给89C51。考虑到成本以及本卡的体积,本设计采用Lattice芯片ispLSI1032E自制双口RAM及控制接口。当9052和89C51访问共用RAM6264时,用ispLSI1032E实现总线隔离,将数据、地址总线和读写及片选信号隔离,同时设计仲裁电路以保证对存储器的分时访问,避免由于双方同时访问造成总线竞争。本设计电路中采用利用中断口(9052 LINT1、89C51 INT0)来完成竞争仲裁电路。LATTICE实现总线隔离、地址锁存及分时复用89C51的单个串口,从而控制RS232或RS485与外界通信。
3.2 EEPROM配置
配置空间的可靠、稳定实现是PCI扩展卡设计的核心问题。一次设计的成功与否,配置空间起着关键性的作用。它决定了用户扩展卡能否被操作系统识别、能否“即插即用”,决定着软件驱动程序开发的方便程度。
可以使用三种方法配置PCI9052的EEPROM, 方法一:烧写串行EEPROM方法。使用烧写器,将数据写入串行EEPROM,适当修改9052数据手册EEPROM默认值以满足实际需要。方法二:热配置方法。从PCI总线通过PCI9052芯片使用方法一的相同数据来烧写串行EEPROM。方法三:使用由PLX公司提供的软件PLXMON来直接配置。
在硬件调试过程中,某方面的考虑不全,都能引起硬件调试失败,本设计配置注意事项:
1.由于和51单片机协同工作,PCI9052设置为不支持突发方式,其局部总线被设置成非总线复用(MODE引脚接地)和8位宽度(在LASXBRD控制寄存器中设置)。
2.PCI9052必须设置为Little Endian模式,而且LRDY#输入必须被使能,而BTERM和BURST必须被禁止(通过LASXBRD控制寄存器实现)。
3. 空间0分配给LOCAL端的内存存取,空间1分配给LOCAL端的I/O存取。其基地址和空间范围根据实际配置(通过CSXBASE控制寄存器实现)。
4.提供的地址和I/O空间可根据实际需要通过CS相应选择。
5.串行EEPROM一定要选用支持连续读写的芯片型号,9052才能实现正确读写。
3.3硬件设计
控制器硬件电路结构图如图1所示。
图1 电路结构示意图
电路分为四部分。第一部分是9052与PCI插槽间的连接信号线。这些信号包括地址数据复用信号AD[31:0],总线命令信号C/BE[3:0]#和PCI协议控制信号PAR、FRAME#、STOP#、TRDY#、IDSEL、DEVSEL#、PERR#、SERR#、INTA。尤需注意的是PSNT1、PSNT2必须至少有一根接地,这样系统才能找到PCI卡,在本设计中本地芯片没有提供TRDY#信号,9052的对应脚IRDY#必须接地,否则系统就会死机,永远等待那个IRDY#信号有效才读取数据。第二部分是与串行EEPROM的连线。这里有四根信号线:EESK、EEDO、EEDI和EECS。第三部分是9052与应用电路的连接。在本设计中主要用到的是本地端局部总线信号,有数据线LAD[7:0],地址线LBE[1:0]、LA[12:2],读写信号线WR#、RD#,本地端准备好输入信号线LRDYI#,由于本设计中本地芯片无需申请总线控制,9052的LHOLD信号接地。第四部分是双口RAM与C51电路的连接。本设计ispLSI1032E不仅提供隔离总线的I/0口,还实现了地址锁存、控制功能,极大地提高了设计的灵活性。89C51的P1.1控制6264的总线,当P1.1为1时,89C51占用总线,这时PC机可以通过读偏移量为3FFFH单元上的内容来产生一个中断信号来向89C51申请6264的总线控制权;而P1.1为0时,PC机占用6264的总线,89C51可以通过P1.2申请PC机中断,以使9052释放6264总线控制权或直接置P1.1为1占用6264总线。P1.0通过设计ispLSI1032来实现控制89C51的串口的分时复用问题的,P1.3控制RS584的收发转换。
3.4软件设计
完成通用网络控制卡硬件方面的设计,为了实现该卡与计算机的通信,还需要开发PCI设备驱动程序。WDM (Windows Driver Model)是 NT3 . 51和NT4. 0内核模式设备驱动程序模型的扩展形式 ,是为基于 Win98和 Win2000的设备驱动程序提供的一种新的开发模型。本设计使用开发工具WINDRIVER大大简化了驱动程序的开发。通过DiverWizard开发者很容易生成驱动程序框架,同时,WINDRIVER和VC++有很好的接口。生成驱动框架后在Microsoft Visual C++ 6.0中就可以通过在工程项目中加入9052_lib.c, 在应用程序开头#include"9052_lib.h",并添加特定的驱动代码完成驱动编写。下面是驱动程序主函数的部分代码:
…
if (!PCI_Get_WD_handle(&hWD)) return 0;
WD_Close (hWD); //确定驱动是否装上
hMy9052 = PMy9052_LocateAndOpenBoard(0x10b5, 0x9050, fUseInt); //打开9052设备
PMy9052_ADDR ad_sp = P9052_ADDR_SPACE0;
ad_sp =*PMy9052_GetAddrRangeName(PMy9052_ADDR addrSpace);//得到有效的映射空间
data = MYDIVER_ReadByte(hMYDIVER, ad_sp, Offset); //读特定存储位置的值
MYDIVER_WriteByte(hMYDIVER, ad_sp, Offset,data); //data值写入存储空间
…//数据处理
WD_Close (hWD); //结束
为了使用WDM驱动程序 ,需要在开始→设置→控制面板→添加 /删除硬件向导中选择“下一步”,然后选择“添加新设备” ,在查找新硬件页中选择“否 ,我想从列表中选择硬件” ,在硬件类型页中选择“其它设备” ,在选择一个设备驱动程序页中选择“从磁盘安装”按钮 ,接着选择设计好的INF文件即可。INF文件负责复制WDM驱动程(MY9052.SYS)到Windows 98路径下的SYSTEM\DRIVERS文件夹 ,并根据INF文件中的设定分配硬件资源。本地端89C51采用汇编语言控制液晶显示,卡外数据采集及其与PC机的通信。总体主程序流程图如图2所示。
图2 主程序流程图
4、结论
实践证明,本课题开发的网络控制卡,实用性强,可靠性好,并具有良好的可扩展性。在设计电路中,采用LATTICE自制双口RAM及控制仲裁电路,减少了许多相应的外围器件,使成本有了大幅度的降低。本文使用驱动开发工具Windriver 5.05 ,并借用了VC++6.0集成环境,设计的驱动程序与Windows 98操作系统完全兼容 ,工作正常且稳定。利用此WDM驱动程序,可以实现Windows 98环境下网络控制卡采集数据的正确处理。
参考文献
[1] Tom Shanley Don Anderson 著 刘晖等 译 PCI系统结构(第四版). [M]. 北京:电子工业出版社,2000:C1-C4.
[2] PLXTechnology.9052 Data Book[M].Version 2.0. 09,2001.
[3] 李贵山.PCI局部总线开发者指南 [M ]. 西安:西安电子科技大学出版社,1997:1-200 .
[4] [美 ]Chris Cant Windows WDM设备驱动程序开发指南[M] 孙义,马波,国雪飞等 北京:机械工业出版社,2000
文章版权归西部工控xbgk所有,未经许可不得转载。










服务咨询