摘要:本文介绍了PCI总线接口芯片PCI9054的性能、总线操作及其DMA数据传输方式,并且通过它在高速数据采集系统中的应用实例,阐述了PCI9054在PCI接口电路设计中的简便性和实用性。
关键词:PCI总线接口PCI9054 DMA Windriver
引言
PCI(Peripheral Component Interconnect)总线即外围部件互连总线,是一种先进的高性能32/64位地址数据复用局部总线,可同时支持多组外围设备,并且不受制于处理器,为中央处理器与高速外围设备提供一座沟通的桥梁,提高了数据吞吐量(32位时最大可达132MB/s),是当今PC领域中流行的总线。PCI总线具有严格的总线规范,这就保证了它具有良好的兼容性,符合PCI总线规范的扩展卡可以插入任何PCI系统可靠地工作。一个PCI接口包括一系列的寄存器,这些寄存器中的信息允许计算机自动配置PCI卡。
目前实现PCI接口一般采用专用器件,有效方案分为两种:使用可编程逻辑器件和使用专用总线接口器件。采用可编程逻辑器件实现PCI接口比较灵活,可以利用的器件也比较多,但由于PCI总线协议的复杂性,其接口的实现比ISA等总线要困难得多,这种方法难度较大,设计周期较长。采用专用接口器件不仅对PCI协议有良好的支持,而且提供给设计者良好的接口,这些都大大减少了设计者的工作量。
PCI9054的结构和性能
PCI9054是美国PLX公司继PCI9052之后推出的又一低成本PCI总线接口芯片,低功耗,PQFP 172pins封装,它采用了先进的PLX数据管道结构技术,可以使局部总线快速转换到PCI总线上。
PCI9054主要特性
PCI9054的主要特性如下:
* 符合PCI V2.1,V2.2 规范,包含PCI电源管理特性。
* 支持VPD(Vital Product Data)的PCI扩展。
* 支持PCI双地址周期,地址空间高达4GB。
* 具备I2O准备报文单元,完全兼容I2O V1.5 规范。
* 提供了两个独立的可编程DMA控制器,每个通道均支持块和Scatter/Gather的DMA方式,DMA通道0支持请求DMA方式。
* 在PCI启动模式,PCI 9054可插入类型1和类型2的配置周期。
* 在PCI和Local Bus的数据传送速率高达132MB/S。
* 支持本地总线(Local Bus)直接接口Motorola MPC850或MPC860系列,Intel i960系列,IBM
PPC401系列及其它类似总线协议设备。
* 本地总线速率高达50MHz;支持复用/非复用的32位地址/数据;本地总线可为三种模式:M模式、C模式和J模式,可利用模式选择引脚加以选择。
* 具有可选的串行EEPROM接口。
* 本地总线时钟由外部提供,该时钟可和PCI时钟异步。
* 具有8个32位 Mailbox 寄存器和2个32位Doorbell寄存器。
PCI9054的内部结构组成
PCI 9054内部有6种可编程的FIFO,其长度如表1所示,以实现零等待突发传输及本地总线和PCI总线之间的异步操作。
PCI9054的内部结构如图1所示。
表1:PCI9054内部FIFO
图1:PCI9054内部结构
PCI9054还提供了一个串行EEPROM配置接口,容量2K字节。在配置存储器中存放了厂家标示、设备标示以及本地总线的基地址空间、I/O空间、中断控制信号等信息。当初始化时,系统自动将串行EEPROM中的配置参数装入PCI配置寄存器,并根据本地总线对内存、I/O端口和中断的需求统一划分,自动配置。
PCI9054的总线操作
PCI9054的总线操作包括PCI总线操作和本地总线操作。对于PCI总线操作,它完全遵守2.2版本PCI规范。下面主要讨论一下本地总线操作。PCI9054本地总线支持非多路复用32位地址/数据总线,多路复用32位和8位,16位或32位本地总线设备从属访问,运行速率高达50MHz,可以获得200MB/S的本地总线突发传输速率。
PCI9054有3种工作方式,分别为C、M和J模式。M模式主要是针对Motorola公司高性能MPC850/860的应用而设计的,主要应用在电信领域,J模式的接口设计相对比较麻烦,比较常用的是C模式。
C模式下PCI9054分为PCI Initiator操作和PCI Target操作。在PIC Initiator操作过程中,本地处理器或本地总线主控设备能够直接通过PCI9054访问PCI总线,发起Local-to-PCI的数据传输。而在PCI
Target操作过程中,PCI总线主控设备可以以可编程的等待状态、总线宽度和突发传输功能访问PCI9054的三个本地空间(空间0,空间1和扩充ROM空间)。
PCI9054的DMA突发模式
PCI9054集成了两个互相独立的DMA通道,每个通道都支持Block DMA和Scatter/Gather DMA,通道0还支持Demand
DMA传输方式。
Block DMA要求PCI主机或Local主机提供PCI和Local的起始地址、传输字节数、传输方向。主机设定DMA开始位启动数据传输,一旦传输完成,PCI9054设定DMA"传输结束位"结束DMA,如果中断允许位被使能,在传输结束时PCI9054将向主机申请中断。在DMA传输中,PCI9054既是PCI总线的主控器又是Local总线的主控器。
Scatter/Gather DMA要求主机在PCI空间或Local空间设定Descriptor模块,模块包括PCI和Local的起始地址、传输字节数、传输方向和下一个Descriptor模块的地址。PCI9054载入第一个Descriptor模块并发起传输,连续加载下一个模块,直到它侦测到"链结束位"有效,PCI
9054设置"传输结束位",或者申请PCI或Local中断。这种模式下,PCI9054也可以在每个模块加载时有效中断信号结束DMA传输。若Descriptor模块在本地存储空间,可以编程使DMA控制器在每次DMA传输结束后清除传输字节数。
PCI9054的设计与应用
PCI9054作为一种通用的PCI接口芯片,以其显著的功能和特性,得到了广泛的应用,下面就其在高速数据采集系统设计中的应用进行简单介绍。
硬件结构组成
该高速数据采集系统利用PCI9054的PCI专用接口芯片的特性,设计了一个双路200M的高速数据采集卡,完成高速数据的采集和传输。
系统结构主要包括A/D转换、数据存储、逻辑控制,时钟分配和数据传输五大模块。A/D转换电路采用AD(Analog Device)公司的AD9054芯片,分辨率为8位,最高采样率200MSPS。数据存储电路采用IDT公司的产品72V36110,该芯片可以工作在133
MHz的频率下,零延迟传输,可以提供9位、18位、36位输入、输出接口,最大存储容量为128K 36Bit。逻辑控制电路采用CPLD技术,利用Altera公司的可编程逻辑器件EPM7128S完成对数据存储电路、AD采集电路、PCI桥电路的控制,对时钟电路的配置,以及各种触发控制。时钟电路产生的采样脉冲的频率范围是25MHz~400MHz,步长为1MHz,采用SYNERGY公司的频率合成器SY89429V来完成。整个硬件结构如图2所示。
图2:高速数据采集系统
从图2可以看出,主机通过PCI总线上的接口控制电路完成对采集板的控制和高速数据传输。系统工作过程可以分为两大部分。
第一步:模拟信号经过信号调理电路后送入ADC,ADC在逻辑控制电路和时钟控制电路的作用下,完成A/D转换,并将转换结果送入数据存储电路。
第二步:PCI桥电路在主机的控制下,将数据存储电路中的数据传输到微机内存中,以供应用程序进行后续的信号处理。
软件设计
PCI数据传输卡的另一关键问题即驱动程序的开发。设备驱动程序提供连接到PCI板卡的软件接口,在Windows 9x和Windows
NT中,设备驱动程序必须根据Windows驱动程序模型(WDM)设计。设备驱动程序的关键是如何完成硬件操作,基本功能是完成设备的初始化、对端口的读写操作、中断的设置和响应及中断的调用、以及对内存的直接读写。
该系统选用Windriver来编写设备驱动程序,Windriver是美国KRF-Tech公司出品的用于编写驱动程序的另一种工具包。它以通用设备驱动程序Windrvr.vxd和Windrvr.sys为核心,包含一个类似QuickVxD的代码生成器Windriver
Wizard,一个Windriver发行包,两个公用程序pci_scan.exe和pci_dump.exe。用它编写的程序主要针对ISA/PCI设备,可同时工作在Windows
9x/NT两种操作系统,其中Windrvr.vxd用于Windows 9x操作系统,Windrvr.sys用于Windows NT操作系统,因此,它是设计PCI设备驱动程序的理想工具。
Windriver 针对PLX和AMCC的专用接口芯片特别编写了API函数包,这些函数能够方便地实现中断处理、DMA传输、I/O操作、内存映射以及即插即用等功能,为系统的驱动程序的编写提供了便利。
结论
PCI 9054 以其强大的功能和简单的用户接口,为PCI总线接口的开发提供了一种简洁的方法,设计者只需设计出本地总线接口控制电路,即可实现与PCI总线的高速数据传输。本系统经过测试,高速数据能够正确采集和传输。在高速数据传输系统中,利用PCI总线的高速特性实时传输和存储采集数据,有效解决了数据的传输和处理的实时性,可应用于高速数据采集卡、视频处理卡、网卡等高速设备中,随着PCI总线的普及应用,基于
PCI总线的传输系统设计有十分广阔的前景。
|