使用DSP加速PCI接口产品的开发

2006-05-07 15:49:56来源: 电子技术应用

1 PCI总线和PCI桥接芯片

PCI总线就一种目前较为流行的、先进的高速同步总线。它的历史较短,正式的2.2版本于1999年2月发布。其优点在于能够满足设备之间实现快速访问,因为PCI总线的全部读写传送都可以用突发方式进行,且总线速度可达33/66MHz,数据宽度为32/64bit。此外,低功耗以及与处理器无关也是其优点。PCI有三个相互独立的物理空间:存储器地址空间、I/O地址空间和配置地址空间。配置空间用于访问PCI设备的配置寄存器,以完成启动时的初始化,并由配置软件给PCI设备分配存储器和I/O地址空间。

由于PCI总线协议较为复杂,在设计具有PCI接口的产品时,如果CPU或MCU没有PCI接口,一般采用专用的桥接芯片,或者是可嵌入PLD中的IP核来实现PCI协议。Altera、Xilinx等PLD生产厂商大都提供可以嵌入自己产品中的支持PCI协议的IP Core,使用起来较为灵活,但是对应用者的要求也较高。采用专用PCI桥芯片,可以让工程师工必精通PCI规范的各种细节,甚至不需完全了解PCI总线的时序,只要理解了桥电路的局部总线的性能,就可以顺利地进行PCI产品的设计开发,不失为一种低成本、高效率的解决方案。主流的PCI桥芯片主要有AMCC公司 S593X和PLX公司的PCI9050、9054、9060等。其中PLX公司为其产品还提供一套软件开发工具包SDK,它可以很好地帮助工程师进行硬件调试,并大大简化PCI设备驱动程序及应用软件的编制。

2 用PCI9052构成的PCI接口电路

按照是否具有控制总线的功能,可以将PCI的设备功能划分为主设备(Master)功能和目标设备(Target)功能,总线上可以有多个具有Master功能的设备,因此PCI是一个独立于CPU的总线。PCI9050、9052、9030是PLX公司生产的具有完全Target接口功能的PCI桥接芯片,支持32位、33MHz即132MB/s传送速度的PCI总线规范。其中PCI9030是最新推出的,支持高达60MHz的局部总线时钟,并具备热插拔功能。PCI9052集成了一个与标准ISA兼容的总线接口,简化了接口电路的设计,应用较为方便。图1是以PCI9052作为PCI桥的图形控制板的接口逻辑电路框图。与PCI9052接口的是一个具有二维图形显示功能的图形控制器TMS34010。它拥有一个16位的I/O映射功能的主机接口(HPI),通用ISA总线的时序就可以满足其要求,因此利用PCI9052的ISA端口可以非常简便地实现图形控制器与PCI总线的接口,并且由于只需要I/O接口操作功能,不需要ISA标准的存储器读写功能,所以许多不需要的相关信号可以被省略。图1中CPLD中的逻辑电路是将ISA地址线进行HPI端口的译码,并与读写选通(IOWR、IORD)相或产生主机片选HCS选中TMS34010。

由于PCI9052的ISA接口不是芯片上电后的缺省状态,所以还要对硬件进行预先设备。首先,将PCI9052的MODE引脚接地,设置成非复用总线方式;然后对串行EEPROM进行预编程,也就是对芯片内部的寄存器进行设置。由于PCI9052的ISA模式已指定将局部总线的CS0分配给了ISA的存储器地址空间,CS1分配给了ISA的I/O地址空间,所以要对CS0、CS1对应的两组相关寄存器进行设置。其中LAS0RR、LAS0BA、CS0BASE用于设置PCI到ISA的存储器地址空间的映射;LAS1RR、LAS1BA、CS1BASE用于设置PCI到ISA的I/O地址空间的映射;LAS0BRD、LAS1BRD用于将时序设置成能满足ISA总线的要求。此外,须将INTCSR寄存器的第12位置成ISA模式,还要设置CNTRL寄存器,将第138、139脚置为ISA总线输出信号IORD、IOWR。

3 使用SDK实现PCI设备的驱动和应用软件的开发

要完成对PCI设备产品的开发和调试,相关的软件调试工具是必不可少的。PLX公司的Software Development Kits(SDK)就是这样一个功能较为完善的工具包。

3.1 SDK软件包的内容和特点

SDK软件包主要包括以下内容:

(1)Windows 98/NT/2000兼容的设备驱动程序和以此为基础的HOST API库函数;

(2)一个Windows下的调试应用软件PLXMon,它可以对PLX公司的所有PCI接口芯片进行配置和操作,使用非常方便;

(3)可以支持多种嵌入式CPU的Local API库函数;

(4)可以支持VxWorks、Linux、pSOS等多种RTOS的BSP。

其中(3)、(4)项是专业版SDK-PRO的内容,对于在嵌入式实时操作系统(RTOS)上开发具有嵌入式CPU的PCI MASTER设备是很有帮助的。而在Windows操作系统上开发PCI的TARGET设备,(1)、(2)项即可满足要求,而且利用SDK的HOST API就可方便地进行设备驱动程序的开发。

3.2 使用SDK开发步骤

将PCI SDK安装后,Windows的驱动程序就已被放置在SDK的目录下,插入PCI设备后上电,操作系统自动搜索到新的PCI硬件,并且识别出PLX接口芯片的型号,要求安装驱动程序,将SDK的相应目录给出,便自动完成安装。

如要进行硬件调试,PLXMon是一个使用简便的基于Windows 98/NT/2000操作系统的调试工具。它可以查看和修改PLX公司的PCI桥芯片内的所有寄存器的值,并支持FLASH和EEPROM编程,可极大地方便硬件的调试。而要开发用户自己的设备驱动或应用程序,还需要Microsoft的Windows DDK和Visual C/C++ 6.0;步骤如下:1、将PLX公司的SDK包含在工程目录下;2、程序中要设置PCI_CODE和LITTLE_ENDIAN宏定义;3、包含头文件PlxApi.h;4、将PlxApi.lib插入到工程中去;5、调用PLX公司的API函数完成相应的功能操作。

3.3 实例说明

下面是一段在Visual C++6.0环境下编写的代码,仅为了说明如何在计算机局部总线上调用SDK的API函数对上设备进行I/O读写等基本操作,这也是编写一个设备驱动程序的基础。为了节省篇幅,省略了程序中变量和函数的详细说明部分,具体可参考文献[4]。

PlxPciDeviceFind(&Device,&DeviceNum);

//首先在PCI总线上寻找PLX公司的PCI接口芯片,获得一个指向DEVICE_LOCATION类型的指针变量Device;

rc=PlxPciDeviceOpen(&Device,&hDevice);

//打开这个设备,获得一个句柄hDevice;

PlxChipTypeGet(hDevice,&ChipType,&Rivision);

//通过句柄读出芯片的型号;

port=PlxPciConfigRegisterRead (Device.BusNumber,Device.SlotNumber,0x1c,&rc);

//利用获得的设备总线和插座的序号信息定位该设备,并调用函数读取PCI9052内部寄存器关于该设备被分配在PCI总线上I/O空间的端口地址(0xlc是要读的PCIBAR3寄存器的地址偏移量);

prot=port & ~(1<<0);//清第零位,得到真正的端口其地址;

rc=PlxIoPortRead (hDevice,port + 0x2b0,BitSize 16,&RegValue);

//将基地址加上偏移地址,读取局部总线扩展端口的数据,写操作与此类似;

……

PlxPciDeviceClose(hDevice); //程序结束时,与PlxPciDeviceOpen()相对应,释放该设备

本文介绍的只是最简单的应用SDK API库的步骤和方法。目前3.2版SDK提供的API库函数功能已非常完善,可完成PCI总线上的包括存储器、I/O和配置寄存器的读写、中断响应以及DMA通道等要求的各种功能,完全可以满足应用软件开发的需要。

SDK最大的优点是使用方便简单,不过它只是面向PLX公司的PCI接口芯片的开发工具,不能做到与芯片无关;另外,它提供的API库只是基于Windows操作系统的,并且要预先安装在提供的各类芯片的驱动程序,然后通过DLL的调用来实现驱动,因此无法开发运行在核心态的真正的VxD。这些是它的局限性。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/others/200605/2509.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved