原创 基于DSP的PCI高速测控系统结构

2009-9-20 08:30 1718 3 3 分类: 处理器与DSP
作者:陈圣杰 丁喆等    时间:2007-06-25    来源: 
 
      

随着数字信号处理芯片性价比的不断提高,数字信号处理的应用领域飞速发展,同时pentium高速cpu的出现,要求有极高的数据通量予以支持,而低速的isa总线在解决这些问题方面逐渐无能为力,取而代之的是高速的pci总线。pci总线可将高速外围设备直接挂在cpu总线上,33mhz/32位时数据传输速率可达132mb/s,66mhz/64位时更是性能加倍,打破了数据传输速率的瓶颈,使得cpu的性能得到充分发挥。如果采用美国ti公司生产的高速高性能数字信号处理器dsp取代原来的单片机作为板载cpu,可以充分利用pci总线的优点直接将采集的数据传到微机内存,有效地解决了数据的实时传输和存储问题。

测控系统的硬件组成

系统基本硬件结构如图1所示。整个高速测控系统主要由信号调理电路、dsp模块、fifc)存储器、cpld控制电路、pc19054接口芯片等组成。系统采用主从结构,pc机作为上位机,用于完成对系统的控制(如ad转换的开始、dsp复位、中断响应、数据接收与处理等)。dsp作为下位机,用于完成数据的采集与处理、pwm波以及其他外围信号的控制等。


系统硬件结构图


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。

本系统采用i d t公司高速cmos同步fifo芯片idt72v3660,它的容量为4096×36bit;有高达100mhz的读写速度;可以兼容3.3v和5v两种接口电压。该fifo具有标准的"满"(ff#)、"半满"(hf#)、"空"(ef#)等标志。系统可以根据这些标志信号控制对fifo的读写操作。在cpld的逻辑控制下,当wen#有效时,在wclk的每一个上升沿,fifo会把输人数据线上的数据存入内部存储器。当ren#有效且输出允许(oe#有效)时,在rclk的每一个上升沿,fifo会把内部存储器中的数据发送到输出数据总线上(低电平用"#"表示)。


控制逻辑芯片cpld

本系统采用altera公司的epm7 128来实现系统的逻辑控制,主要包括dsp控制逻辑、fifo控制逻辑、pci9054接口控制逻辑三个部分,其中,对pc219054的逻辑控制是设计的重点。设计中利用maxplusⅱ软件进行vhdl语言编程、仿真和调试。

pci9054及外部接口分析

pci与板载cpu的桥接有两种设计方案,一种是采用fpga,通过软件编程实现硬件功能。另一种是利用专用pci桥接芯片,适合快速开发的场合。

本系统采用plx公司的pci总线专用接口控制芯片pc19054。它符合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/(3ather dma,其中通道0还支持请求(demand)dma传输方式。当有通道进行dma传输时,dma控制器将发起对局部总线和pci总线操作,其传输过程如图2所示。

pc219054提供了三个物理总线接口:pci总线接口、eeprom接口、局部总线接口。pci总线接口依照pci扩展板上定义的引脚分配情况将彼此对应的信号连接在一起即可。本系统采用的eeprom为4k、3.3v串行的93lc66b,通过对pci时钟分频来产生eeprom时钟,内部存放pci9054的配置信息,系统加电时pci9054自动加载eeprom中的配置信息,并由bios通过pci总线对配置寄存器读写,来完成各种控制功能。接口电路如图3所示。




dma传输过程


pci9054在dma传输方式下,通过设置其dma控制器内部的寄存器即可实现两总线之间的数据传送。传输过程由以下几个步骤实现:


1.设置传输方式寄存器:通过寄存器dma mode0或dmamode1的位9来设置dma通道的传输方式,置0表示block传输,置1表示scatter/gather传输;


2.设置命令/状态寄存器:启动/停止dma操作,并读此寄存器返回dma状态;


3.设置描述寄存器:设置dma的传输方向;


4.设置传输计数寄存器:以字节为单位设置传输数据量;


5.设置pci地址寄存器:设置pci总线侧的地址空问;


6.设置局部地址寄存器:设置局部总线侧的地址空间。 当进行数据采集时,由应用程序或通过dsp的外部引脚(pi n21)向dsp发出采集命令,同时复位fifo,在13sp内部程序和cpld的控制下,数据经do-31源源不断地输入到fifo中,当fifo半满时发出半满标志信号(hf#),cpld接到半满信号后,立即向pci9054发出中断请求信号(lint),驱动程序响应中断,在中断响应程序内,发出读命令、要读取的字节数、传输方向、地址信号等,pci9054设定"dma传输开始位"启动数据传输,当ads#为低(有效),blast为高(无效),lw/r为低(有效)时,表明pci9054开始一个有效的读数据周期,cpld产生一个低电平信号ren#给fifo,同时作为ready信号返回给pci9054, 表明已准备就绪。直到ads#为高(无效)且blast#为低(有效)时,表明pci9054已经开 始最后一个周期,同时设定d m a"传输结束位"结束dma操作,此时ren#信号再次变高电平(无效),完成一次数据突发传输。接口电路如图4所示。


接口电路


该系统的软件设计主要包括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和k c o m m o n d m a b u ff e r。kdmatransfer用于dma传输控制。kdmaadapter用于建立一个dma适配器来说明dma通道的特性。kcommondmabuffer用于申请系统提供的公用缓冲区。

执行过程中驱动程序首先设置pci9054的工作方式和中断寄存器、dma配置寄存器,然后等待本地中断的到来。当fifo半满时表明本地中断到来,在设备成员函数isr_irqo中屏蔽本地中断,在设备成员函数dpcfor_irq()中调用kdmatransfer:continue()函数进行dma传输。一次数据传输完毕后,驱动程序通过操作系统将内核中的数据拷贝到用户态内存,交给应用软件处理。

结语

在实验室中利用pci9054作为接口芯片的高速测控系统,可实现持续数据传输速率达50mb/s,且系统运行稳定,具有广泛的应用前景。


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条