基于DSP的PCI高速测控系统结构的研究
扫描二维码
随时随地手机看文章
摘 要:本文提出一种基于DSP的PCI测控系统的设计思想,系统采用DSP作为外围核心处理单元,PCI9054作为PCI桥芯片,着重论述了测控系统的数据采集与传输的硬件接口解决方案和驱动程序设计。
关键词:PCI总线;DSP;WDM驱动;测控系统
引 言
随着数字信号处理芯片性价比的不断提高,数字信号处理的应用领域飞速发展,同时Pentium高速CPU的出现,要求有极高的数据通量予以支持,而低速的ISA总线在解决这些问题方面逐渐无能为力,取而代之的是高速的PCI总线。PCI总线可将高速外围设备直接挂在CPU总线上,33MHz/32位时数据传输速率可达132MB/s,66MHz/64位时更是性能加倍,打破了数据传输速率的瓶颈,使得CPU的性能得到充分发挥。如果采用美国TI公司生产的高速高性能数字信号处理器DSP取代原来的单片机作为板载CPU,可以充分利用PCI总线的优点直接将采集的数据传到微机内存,有效地解决了数据的实时传输和存储问题。
测控系统的硬件组成
系统基本硬件结构如图1所示。整个高速测控系统主要由信号调理电路、DSP模块、FIFO存储器、CPLD控制电路、PCI9054接口芯片等组成。系统采用主从结构,PC机作为上位机,用于完成对系统的控制(如AD转换的开始、DSP复位、中断响应、数据接收与处理等)。DSP作为下位机,用于完成数据的采集与处理、PWM波以及其他外围信号的控制等。
图1 系统硬件结构图
DSP测控模块介绍
系统采用的DSP芯片为TI公司的TMS320LF2407。电路设计时,利用的DSP内部的16通道A/D转换实现数据采集,DSP与FIFO的电路接口电压都为3.3V,可实现无缝连接,DSP的数据总线直接与FIFO的数据输入端口相连,DSP与FIFO的时钟频率应设为相同。这样,无需插入等待周期,控制信号经CPLD直接转换为FIFO的读写信号,实现数据的高速存储。
先进先出存储器
在DMA传输方式下,由于PCI9054内部的FIFO只有32级深度,实时传送高速数据时,PCI9054内部的FIFO会很快存满,而DSP内的数据仍会源源不断的传送过来,易造成数据的丢失,因此必须要扩展外部FIFO。
本系统采用IDT公司高速CMOS同步FIFO芯片IDT72V3660,它的容量为4096×36bit;有高达100MHz的读写速度;可以兼容3.3V和5V两种接口电压。该FIFO具有标准的“满”(FF#)、“半满”(HF#)、“空”(EF#)等标志。系统可以根据这些标志信号控制对FIFO的读写操作。在CPLD的逻辑控制下,当WEN#有效时,在WCLK的每一个上升沿,FIFO会把输入数据线上的数据存入内部存储器。当REN#有效且输出允许(OE#有效)时,在RCLK的每一个上升沿,FIFO会把内部存储器中的数据发送到输出数据总线上(低电平用“#”表示)。
控制逻辑芯片CPLD
本系统采用Altera公司的EPM7128来实现系统的逻辑控制,主要包括DSP控制逻辑、FIFO控制逻辑、PCI9054接口控制逻辑三个部分,其中,对PCI9054的逻辑控制是设计的重点。设计中利用MaxPlusⅡ软件进行VHDL语言编程、仿真和调试。
PCI9054及外部接口分析
PCI与板载CPU的桥接有两种设计方案,一种是采用FPGA,通过软件编程实现硬件功能。另一种是利用专用PCI桥接芯片,适合快速开发的场合。
本系统采用PLX公司的PCI总线专用接口控制芯片PCI9054。它符合PCIV2.1和PCIV2.2规范;可同时支持3.3V和5V两种信号环境;提供了两个独立的可编程DMA控制器;内部有6种可编程FIFO,以实现零等待突发传输及局部总线和PCI总线之间的异步操作;在PCI总线端支持33MHz/32位,传输速率最高可达132MB/s;在局部端可编程实现8/16/32位的数据宽度,支持复用/非复用的32位地址/数据,时钟最高可达50MHz。
PCI9054局部总线可工作在M、J、C三种模式,M模式是专门为Motorola公司的MPC850和MPC860提供直接非复用的接口;J模式地址/数据线复用;C模式与J模式差别不大,但地址/数据线非复用,更符合连接习惯。本设计采用C模式。
PCI9054的数据传输模式可分为主模式、从模式、DMA模式。模式的选择主要根据硬件设计者对硬件的设计需要而定。本系统采用DMA模式,在DMA传输模式下,PCI9054既是PCI端的主控方,又是局部端的主控方。
PCI9054集成了两个互相独立的DMA通道,每个通道都支持Block DMA和Scatter/Gather DMA,其中通道0还支持请求(Demand) DMA传输方式。当有通道进行DMA传输时,DMA控制器将发起对局部总线和PCI总线操作,其传输过程如图2所示。
图2 DMA传输过程
PCI9054提供了三个物理总线接口:PCI总线接口、EEPROM接口、局部总线接口。PCI总线接口依照PCI扩展板上定义的引脚分配情况将彼此对应的信号连接在一起即可。本系统采用的EEPROM为4K、3.3V串行的93LC66B,通过对PCI时钟分频来产生EEPROM时钟,内部存放PCI9054的配置信息,系统加电时PCI9054自动加载EEPROM中的配置信息,并由BIOS通过PCI总线对配置寄存器读写,来完成各种控制功能。接口电路如图3所示。
图3 PCI9054与EEPROM的接口
PCI9054在DMA传输方式下,通过设置其DMA控制器内部的寄存器即可实现两总线之间的数据传送。传输过程由以下几个步骤实现:
1. 设置传输方式寄存器:通过寄存器DMA MODE0或DMA MODE1的位9来设置DMA通道的传输方式,置0表示Block传输,置1表示Scatter/Gather传输;
2. 设置命令/状态寄存器:启动/停止DMA操作,并读此寄存器返回DMA状态;
3. 设置描述寄存器:设置DMA的传输方向;
4. 设置传输计数寄存器:以字节为单位设置传输数据量;
5. 设置PCI地址寄存器:设置PCI总线侧的地址空间;
6. 设置局部地址寄存器:设置局部总线侧的地址空间。
当进行数据采集时,由应用程序或通过DSP的外部引脚(pin21)向DSP发出采集命令,同时复位FIFO,在DSP内部程序和CPLD的控制下,数据经D0-31源源不断地输入到FIFO中,当FIFO半满时发出半满标志信号(HF#),CPLD接到半满信号后,立即向PCI9054发出中断请求信号(LINT),驱动程序响应中断,在中断响应程序内,发出读命令、要读取的字节数、传输方向、地址信号等,PCI9054 设定“DMA传输开始位”启动数据传输,当ADS#为低(有效),BLAST为高(无效),LW/R为低(有效)时,表明PCI9054开始一个有效的读数据周期,CPLD产生一个低电平信号REN#给FIFO,同时作为Ready信号返回给PCI9054,表明已准备就绪。直到ADS#为高(无效)且BLAST#为低(有效)时,表明PCI9054已经开始最后一个周期, 同时设定DMA“传输结束位”结束DMA操作,此时REN#信号再次变高电平(无效),完成一次数据突发传输。接口电路如图4所示。
图4 PCI9054接口控制原理图
PCI驱动程序设计
该系统的软件设计主要包括DSP测控程序、PCI设备驱动程序和Windows应用程序三个部分。驱动程序是连接硬件系统和应用程序的桥梁,是整个测控系统开发中的关键一步。在此简单介绍一下PCI设备驱动程序开发过程。
在Windows环境下共有三种类型的驱动程序,分别是VXD、NT、WDM。因为WDM可以应用在windows98/2000/XP下,支持即插即用、电源管理、WMI等功能,是Windows NT驱动体系基础上发展起来的未来主流驱动程序体系,所以为这里选择设计WDM驱动程序。
开发工具选择Compuware公司提供的DriverStudio完成驱动程序的开发,DriverWorks是DriverStudio中的一个部分,DriverWorks中的类库封装了针对驱动程序的各种通用操作,使用其中的DriverWizard向导功能,能够非常方便地实现WDM驱动程序的开发,
其中PCI配置空间的访问采用KPciConfiguration实现。I/O访问采用DriverStudio中的KIoRange类实现。硬件中断响应的处理可以采用Kinterrupt类实现。DMA读主要是利用三个类来实现数据传输,分别为:KDmaTransfer、KdmaAdapter和KCommonDmaBuffer。KDmaTransfer用于DMA传输控制。KdmaAdapter用于建立一个DMA适配器来说明DMA通道的特性。 KCommonDmaBuffer用于申请系统提供的公用缓冲区。
执行过程中驱动程序首先设置PCI9054的工作方式和中断寄存器、DMA配置寄存器,然后等待本地中断的到来。当FIFO半满时表明本地中断到来,在设备成员函数Isr_Irq()中屏蔽本地中断,在设备成员函数DpcFor_Irq()中调用KDmaTransfer:: Continue()函数进行DMA传输。一次数据传输完毕后,驱动程序通过操作系统将内核中的数据拷贝到用户态内存,交给应用软件处理。
结语
在实验室中利用PCI9054作为接口芯片的高速测控系统,可实现持续数据传输速率达50MB/s,且系统运行稳定,具有广泛的应用前景。
参考文献
1.刘和平,张卫宁.TMS320LF/LC24系列DSP的CPU与外设[M].北京:清华大学出版社,2004.
2.申江云,宁 滨.一种实时的交通信息采集处理系统的设计与实现[J].微计算机信息,2005(11):62-64.
3.李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.
4.PLX Technology Inc.PCI9054 Data Book[OL].美国:PLX公司.2000.
5.武安河.Windows 2000/XP WDM设备驱动程序开发[M].北京:电子工业出版社,2005.