欢迎来到天天文库
浏览记录
ID:2019022
大小:586.00 KB
页数:6页
时间:2017-11-14
《pci接口扩展卡的快速开发方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、PCI接口扩展卡的快速开发方案摘要:介绍了PCI总线扩展卡的设计思路和方法,并结合一个多功能CAN通信I/O卡的设计实例,介绍了PCI总线扩展卡的软硬件设计流程,给出了一套快速可行的解决方案。关键词:PCI总线PLX9052设备驱动程序Windriver随着计算机和控制技术的不断发展,很多工程人员都选用PC机作为控制系统的操作平台。为了能够和外部设备通信,PC机上提供了外置的USB、串口、并口及内置的ISA、PCI等接口。PCI总线接口速度快,系统占用率低,有完备的即插即用(PnP)管理体制,是目前计算机插卡式外设总线的事实标准
2、。笔者设计了一块PCI总线多功能CAN通信I/O卡,可以完成数字量I/O、CAN总线通信的功能。本文将根据笔者的实际经验,介绍PCI接口扩展卡的软硬件设计流程和一种快速开发方案。1PCI总线简介PCI总线标准由PCISIG(PCISpecialInterestGroup)制定,该组织的成员有Intel、IBM、DEC等公司。目前PC机中使用的PCI总线标准主要以PCI2.0为主,其频率为33MHz,字宽为32bit,电源电压为5V。新版的PCI标准向下兼容,并支持66MHz时钟,字宽为64bit,电压为3.3V。PCI总线是一种
3、时分复用的双向应答总线,传输发起方称为主设备,接收方称为从设备。主设备用RFAME信号指示,从设备拉低它的DEVSEL线来表示响应传输请求。PCI总线的数据传输以帧为单位,每次传输由一个地址周期(AddressPhase)和多个数据周期(DataPhase)组成,如图1所示。AD0~AD31首先给出本次传输的首地址,后面紧跟一个或多个32位(4字节)宽的数据,多个数据的地址自动递增。在地址周期,C/BE0~C/BE3这四根线的不同组合指示出在AD0~AD31上将要进行何种类型的操作,如C/BE0~C/BE3=0110表示存储器读
4、,C/BE0~C/BE3=0011表示I/O写。在数据周期,C/BE0~BE3对应AD0~AD31上四个字节的使能。IRDY和TRDY分别表示主设备准备好和从设备准备好。在传输过程中,只有IRDY和TRDY同时有效,传输才能继续;否则插入等待周期,用于在不同速度的设备之间协调工作。计算机的接口卡一般会用到I/O端口、存储器空间、中断及DMA等计算机资源。传统ISA接口卡通过更改跳线来避免多块卡之间的资源冲突,PCI接口卡则摒弃了硬件跳线,由软件统筹分配资源,这被称为即插即用。为实现此功能,PCI协议除了可以对I/O空间、存储器空
5、间读写外,还定义了对配置空间的读写(C/BE0~C/BE3=1010、1011)。所谓配置空间,是指映射到每块接口卡上的256字节的特殊功能寄存器。设计者事先在配置空间的指定位置写入需要申请使用的资源量,主板上电后,由PnP-Bios读取各卡的配置空间,对它们所需的资源进行统筹分配,再将分配结果写回对应的配置空间地址,完成自动配置。2PCI接口卡的硬件设计及调试以笔者设计的PCI卡为例,使用SJA1000实现CAN总线通信功能,需要映射32字节的存储器空间和一个中断资源,在功能上属于PCI从设备(Target-onlyDevic
6、e)。SJA1000的对外接口电路可以直接与Intel8051、8096及ISA总线连接,但是不能与PCI总线直接连接,因此需要设备用于逻辑转换的接口电路。PCI接口电路的设计一般有两类方法:一类是使用FPGA/CPLD等可编程器件开发逻辑转换电路。根据实现功能的多少,所需的等效门密度约为5000~15000门,可自行编程或者购买已有“软核”(IPCORE)的产品实现;另一类是使用标准接口芯片对PCI总线逻辑信号解码。第一种方法开发成本高、难度大、周期长、测试设备昂贵,但是批量生产成本很低,适合大规模全定制或半定制ASIC的生产
7、。第二种方法相对简单、开发周期短、性价比合理,适合本方案采用。市场上的接口芯片供应商有PLX、AMCC、TI等公司。其中,PLX公司的接口芯片PLX9052价格便宜、供货渠道畅通、功能适用,因此这里选用PLX9052。采用PLX9052的接口卡在逻辑上可分成三个功能模块:PCI接口部分、EEPROM部分和局部总线部分,如图2所示。PLX9052提供完备的PCI从设备支持,PCI接口部分的47根信号线可以直接与PCI连接器(俗称金手指)连接。PCI连接器上有两根特殊的引线PRSNT1#和PRSNT2#,它们不参与PCI协议操作,只
8、用来告知主板该卡消耗的电功率。PLX9052将PCI总线上的操作转换为对局部总线的操作,即通过LAD0~LAD7、RD、WR、CS等对SJA1000的寄存器进行访问。举例来说,如果系统上电后分配给本卡的存储器地址空间为F6800000~F680001F,那么当系
此文档下载收益归作者所有