0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过采用PCI9030芯片实现从ISA总线到PCI总线的转接卡设计

电子设计 来源: 微计算机信息 作者:施少敏;马彦恒 2020-07-03 07:58 次阅读

1、引言

作为对PCI总线在仪器领域的扩展,PXI总线由于具有高性能、低价位等特点,使其在数据采集、工业自动化系统、计算机机械观测系统和图像处理等方面获得了广泛应用。

但是PXI总线协议十分复杂,其接口的实现比ISA困难得多,直接为它设计相匹配的数字逻辑控制电路难度很大。特别是对于那些没有PCI板卡设计经验的人来说,要想直接设计出能满足要求的PXI模块几乎是不可能的事。而PXI总线的电气规范大部份跟PCI相同,只是增加了一些仪器特性。基于以上考虑,我们决定通过设计一个PCI接口卡来系统地了解利用接口芯片PCI 9030开发PXI模块的过程和方法。

2、硬件设计

目前实现 PCI 接口的方法主要是采用可编程逻辑器件或采用专用接口芯片。为降低难度,缩短开发时间 ,我们决定采用专用接口芯片来进行接口的开发。因为我们的最终目的是开发PXI模块,所以我们选用了符合PXI性能要求的接口芯片PCI 9030。PCI 9030 是 PLX 公司开发的一种为扩展适配卡推出的高性能目标接口芯片,其符合 PCI2.2 规范,3.3V 核心电压,低功耗,176 引脚 PQFP 或180 引脚 BGA 封装,本地总线可以设置为 8 位、16 位、32 位复用和非复用模式。

在我们原来的性能测试系统中,功率计模块是基于ISA总线的插件,端口地址是ox100-ox107,数据总线宽度是8位,具有输入输出功能。我们要设计的接口卡所实现的功能相当于一个从ISA总线到PCI总线的转接卡。PCI 9030作为一种桥接芯片,提供了PCI总线、EEPROM和ISA总线三个接口,下面分别介绍各部分的接口电路:

第一部分是PCI9030与PCI总线的接口。这些信号包括地址数据复用信号AD[31:0]、总线命令和字节使能信号C/BE[3:0]、奇偶校验信号(PAR), 帧周期信号(FRAME#)、主设备准备好信号(IRDY#), 从设备准备好信号(TRDY#),停止数据传送信号(STOP#),初始化设备选择信号(IDSEL), 设备选择信号(DEVSEL#)、数据奇偶校验错误报告信号(PERR#)、系统错误报告信号(SERR#)、时钟输入信号(CLK),复位信号(RST#)、中断信号(INTA#)等。电路连接中,把两边对应的管脚相连就行,中间不需要用电阻隔离。

第二部分是PCI9030与EEPROM的接口。EEPROM选用NATIONAL公司的NM93CS66L;它是一个4K的低电压串行存储器,用来存储PCI9030的配置信息并在芯片复位时进行加载,从而使PCI板卡具有即插即用的功能。PCI9030有四根信号线用于与EEPROM的连接:EESK, EEDO, EEDI和EECS。

PCI9030与EEPROM的电路连接如图1所示:

通过采用PCI9030芯片实现从ISA总线到PCI总线的转接卡设计

第三部分是PCI9030与ISA总线的接口。

ISA总线功率计模块的主要信号只涉及到I/0,且为8位宽的数据总线,数据传输只用到端口读写信号IORD#和IOWR#,用A0-A9作为地址译码。在接口芯片的本地端中我们采用非复用模式,地址和数据总线都是8位,所以只需选择LA2、LBE0和LBE1进行地址译码就可以了。具体的电路连接见下表:

3、EEPROM的配置

PCI总线能实现“即插即用”是因为它具有一个配置空间。当计算机启动时,BIOS会对每个PCI卡的配置空间进行访问,即自动加载EEPROM内容来获取各个PCI卡的配置信息,并根据这些信息进行资源分配。配置空间是PCI所特有的一个空间,所有的PCI设备必须提供配置空间。

对EEPROM的配置要根据具体的硬件设备来进行,其配置的正确与否是硬件设备能否正常工作的关键。下面以我所做的接口卡的串行EEPROM内容为例进行介绍。

首先介绍PCI配置寄存器的配置方法。主要是填写器件ID号、供应商ID号、类码、子系统ID号和子系统供应商ID号等。对于PCI9030,其器件ID号为9030, 供应商ID号为lOB5 ,子系统ID号为9030,子系统供应ID号为10B5,类码号为0680,表示其为桥设备中的其它桥设备类。另外,由于使用到中断INTA#,所以在中断寄存器中要将其值设为0100。

其次介绍本地配置寄存器的配置方法。PCI9030本质上是一个桥设备,它的作用是把对某一段PCI总线地址空间的各种操作(包括读、写等)转换为相应的本地地址总线的操作。由于在接口卡的本地总线中只用到I/O地址空间,所以我们只需对本地地址空间1的相关寄存器进行配置就行了。本地空间1范围寄存器的值为oxFFFFFFF9,表示I/O空间大小为8个字节, bit0为1表示此空间被映射为I/O空间;本地空间1基地址寄存器的值为ox00000101,表示空间1的基地址为ox100, bit0为1表示空间1使能;本地空间1描述寄存器的值为ox00000022,表示本地空间1的数据总线宽度为8位。本地片选寄存器1的值是ox00000105,表示当本地地址落在ox100-ox107内时,片选信号CS1#有效以用来选择本地总线上的外围设备。对于其它值的含义可参考PCI9030的数据手册,这里就不再一一介绍。图2是PLXmon界面下EEPROM的配置窗口。

4、板卡调试

板卡做好后,就可以插入计算机的PCI插槽进行调试。如果硬件电路设计正确,在自检过程中,可以在屏幕上看到系统查找到的PCI设备,并且显示出设备的DID和VID等相关信息。在系统正常启动后,会提示“发现新硬件”,并要求用户安装相应的驱动程序,跳过以后就可以配置EEPROM进而开始调试。对EEPROM的编程有两种方法:一是先用专门的烧录器把数据下载到EEPROM再插入板卡中,这种方法修改起来比较麻烦;二是用专用的软件在线写,如PLX公司提供的专用调试软件PLXmon。PLXmon具有以下功能:PCI总线的探测与选择;配置寄存器的检查和修改;内存空间的显示、修改和填充;EEPROM内容的读写等。利用这个工具,我们可以随时对EEPROM的内容进行在线修改,大大提高了效率。值得注意的是每次修改完EEPROM都要对系统进行重启,使PCI配置寄存器和本地空间配置寄存器能够重新加载新的值。

5、驱动程序的编写

在板卡调试完成后,需要编写驱动程序。驱动程序的开发工具很多,但是多数需要了解操作系统的核心工作机制,难度比较大。经过比较,我们采用了Jungo公司的WinDriver进行驱动程序的开发。利用WinDriver我们不必熟悉操作系统的内核知识就可以快速开发出驱动程序,它对于硬件调试也是一个很好的帮助工具。

用WinDriver开发PCI设备驱动程序一般有两种方法:一种是使用向导(Driver Wizard), Driver Wizard能够自动生成驱动程序的框架代码,我们只需修改代码,加入定制的功能,再在用户态执行和调试代码就行;另一种是直接在应用程序中调用WinDriver的API函数。

我们在开发驱动程序中采用的是前一种方法,其基本流程如下:

a. 打开Driver Wizard,在Card Information的设备列表中选中自己的设备,如图3,点击“Generate .INF file”生成安装信息文件;

b. 点击“下一步”,进入WinDriver 资源定义与测试界面中,如图4, 调试列出的I/O、内存等资源,并定义必要的工作寄存器,如PCI卡上的一些配置寄存器;

c. 点击“Generate Code“,选择VC编译器作为自己的开发语言环境,此时将生成针对硬件设备的文件,包括代码文件、说明文件以及适用于VC编译器的项目文件。

最后,对向导产生的设备驱动代码框架中添加自己的代码,编译连接后就可以生成对设备进行诊断的控制台程序了。

6、结束语

本文作者创新点:在以往的接口卡设计中,对于实现ISA总线向PCI总线转换的方法都是采用带ISA接口的接口芯片,如PCI9052,这可以大大简化开发PCI设备的过程。由于课题需要,我们选用了一种不带ISA接口的接口芯片-----PCI9030制作了一个PCI接口卡。经反复调试,该接口电路能够顺利地完成数据传输,已经成功地实现PCI总线与外设的连接,这一方面验证了用专用接口芯片实现PCI总线接口在技术上的可行性,另一方面也为下一步开发PXI模块打下良好基础。

同时,本文中对接口卡的硬件电路连接、EEPROM的配置、驱动程序的编写等方面都作了比较详细的介绍,这对于那些初次接触PCI总线开发的人有一定的指导意义。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409098
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148480
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87206
收藏 人收藏

    评论

    相关推荐

    PCI总线接口芯片9054及其应用

    、AMCC S5933,PLX 公司的PLX9054、PLX9080 等,通过专用芯片可以实现完整的PCI主控模块和目标模块的功能,将复杂的PCI
    发表于 10-09 11:23

    基于PCI 总线的高速数据采集系统的设计与实现

    器件。采用可编程逻辑器件实现PCI 接口比较灵活, 可以利用的器件也比较多, 但由于PCI 总线协议的复杂性, 其接口的
    发表于 09-22 08:51

    PLX芯片PCI9052及其应用

    的同步总线,可以支持猝发传送。为支持即插即用功能,PCI总线规范定义了264字节的配置空间。由于PCI总线协议比较复杂,因而其接口电路
    发表于 01-05 10:47

    PCI总线接口芯片9050及其应用

    ,其应用场合和范围是广泛的。下面给出的是一个利用PCI9050做接口的PCI插卡。在用户电路上,采用MT90820做交换,实现数字电路的转接
    发表于 11-29 14:52

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

    ,可以提供高达132MB/s的数据传送速率;它具有严格的规范,只要符合PCI规范的扩展插入任何PCI系统就能可靠地工作。但由于PCI总线
    发表于 12-17 11:23

    采用CH365芯片实现PCI总线接口设计

    等原因导致以FPGA实现比较困难。本文所述通过CH365芯片可以快速实现PCI接口电路的设计,支持ISA
    发表于 04-29 07:00

    接口芯片PCI 9030开发PXI模块的过程和方法

    输入输出功能。我们要设计的接口实现的功能相当于一个从ISA总线PCI
    发表于 05-05 09:29

    基于PCI总线的CPLD实现

    独立的配置空间,可实现即插即用。这些优点使得PCI总线在数据采集、嵌入式系统和测控等领域得到广泛应用。实现PCI
    发表于 05-29 05:00

    采用PCI总线集成电路实现测试仪接口设计

    PCI9030执行复佗操作时加载存储信息,从而使PCI接口实现即插即用的功能。PCI9030与NM93CS66L的电路连接如图4所示。 2
    发表于 05-30 05:00

    ISA总线的标准DMA技术在Linux中的实现

    数据传输是通过ISA总线控制芯片组中的两个级联8237 DMAC来实现的。这种DMA机制也称为“标准DMA”(standard DMA)。标
    发表于 07-01 08:10

    请问怎样去设计PCI总线接口电路?

    PCI9030是什么?PCI9030主要有哪些特点?设计PCI总线接口有哪些步骤流程?
    发表于 04-15 06:57

    如何去采用PCI9030芯片实现从ISA总线PCI总线转接卡的设计?

    如何去采用PCI9030芯片实现从ISA总线
    发表于 07-01 08:00

    pci总线标准|pci总线规范下载

    PCI总线渐渐地取代了ISA总线。它有许多优点,比如即插即用(Plug and Play)、中断共享等。在这里我们对PCI
    发表于 06-16 14:24 147次下载

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

    PCI9052总线接口芯片及其ISA模式应用 PCI9052是PLX公司开发的服从PCI协议的
    发表于 05-04 21:48 1606次阅读
    <b class='flag-5'>PCI</b>9052<b class='flag-5'>总线</b>接口<b class='flag-5'>芯片</b>及其<b class='flag-5'>ISA</b>模式应用

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

     PCI9052是PLX公司开发的服从PCI协议的从模式接口芯片,它能够实现ISA总线
    发表于 05-09 12:02 1146次阅读
    <b class='flag-5'>PCI</b>9052<b class='flag-5'>总线</b>接口<b class='flag-5'>芯片</b>及其<b class='flag-5'>ISA</b>模式应用