如图1所示,整个采集系统由A/D转换电路、DSP处理部分、串口传输部分等组成。由于数据采集卡工作在恶劣的环境中,因此要求硬件电路在保证完成尽可能多工作的同时,使用尽可能少的器件,以保证采集板能够长时间稳定工作。
2系统硬件实现
2.1 主处理器简介
随着数字信号处理器(DSP)性能的提高和价格的下降,它在电子工业领域得到了越来越广泛的应用。本数据采集卡的核心处理器选用的是TMS320VC5410A。TMS320VC5410A(以下简称5410A)是德州仪器公司(TI)推出的属于TMS320VC54X系列的16位定点数字信号处理芯片,是为实现低功耗、高性能而专门设计的定点DSP芯片,主要应用在通信、数据采集等系统中。该芯片采用CMOS制造工艺,属于第七代DSP产品,它的工作频率可以根据需要进行调整。5410A的运行速度可达160 MIPS,它的内部有64K x 16bit的DARAM以及16K x 16bit的ROM,丰富的资源配置为系统设计提供了极大的便利。该芯片支持单指令循环和块循环,支持32位长操作数指令,支持两个或三个操作数读指令,支持并行存储和并行装入的指令,支持条件存储指令及中断快速返回指令。它的存储块移动指令提供了更好的程序和数据管理。它的片内外设包括软件可编程等待状态发生器,连接内部振荡器或外部时钟源的锁相环(PLL)发生器,一个16bit定时器,六通道直接存储访问(DMA)控制器,三个多通道缓冲串口(McBSPs)和一个8bit增强型主机接口(HPI8)。该芯片的各种性能指标完全能够满足本系统的要求。
由于5410A芯片内部本身不带FLASH程序存储器,因此,在采集板上要使用FLASH存储器来保存程序,本设计使用的芯片是SST39VF400A。5410A DSP芯片内带16K字节的RAM,其中一部分用来运行程序,另外一部分可以用来存储临时数据,片内的RAM存储器不能满足数据存储容量的要求,因此在采集板上还要扩充一部分SRAM。本采集卡上使用的SRAM芯片为CY7C1020。
2.2 A/D芯片及FPGA控制电路
A/D转换电路使用MAX1184模数转换芯片。MAX1184是一款+3V、双10位模数转换器(ADC),适合于那些低功耗、高动态性能的应用。本系统使用两片MAX1184来完成对4路模拟信号的模数变换。MAX1184的控制和时钟信号由FPGA提供。
由于多通道高速数据采集会产生巨大的数据流,一个4通道20MHz采样率16位精度数据采集板并行采样0.1S将产生16MB的数据量,而且还需要较多的片选信号,模块测试所占用的I/O口资源也比较多,用一般的芯片较难实现,而用FPGA则不但可以较好地实现其功能,而且还可提高设计能力和设计效率。
FPGA选用ALTERA公司生产的EP1K50,它的逻辑门数为5万门,内含10个EAB(嵌入阵列块)。每个EAB实际上是4K的RAM,可以用来构造FIFO、双口RAM等。本系统应用EAB构成了四个256×16BIT的FIFO,因而可将四路A/D转换结果分别送入四个FIFO,然后在FPGA的输出端将四个FIFO中的数据交替地送给DSP,每个FIFO每次读出128个采样数据。A/D转换器的输出为10位数据,而FPGA的片内FIFO的数据字宽为16位。在存储、传送时,将高6位补0即可。四路A/D采样速度都为20MHz,这个速度对于EP1K50都是完全可以达到的。另外DSP芯片将A/D转换器、FIFO、RAM 、FLASH等器件都作为统一的外设,对每一外设进行地址编码。通过FPGA将DSP的外设操作信号转换为对具体芯片的控制信号,这样在程序的效率以及整体电路工作的协调性上都有了很大的提高。 除了构造FIFO以实现数据通道复用外,FPGA还可以作为协处理器由板上DSP控制来进行一些简单高效的数据预处理(如插值、取平均、FIR滤波等)。同时可使用EDA工具QUARTUS 5.0来对EP1K50的逻辑算法进行设计、编译并仿真,然后下载到EP1K50中实现预定功能。
2.3 DSP的异步串口扩展
综合考虑硬件连接和软件编程的方便性,DSP与PC机的数据接口采用RS-232串口。与其他类型的接口相比,串行接口的最大特点是减少了器件引脚数目,降低了接口设计复杂性。串行数据传输可分为同步和异步两种模式。通用PC机的RS-232接口为通用异步接口,而DSP芯片提供的是同步串口。为了利用DSP的McBSP同步串行接口,在扩展适当硬件的情况下,将同步数据变换为UART异步数据格式进行传输。这样可以充分利用DSP的片上资源,从而使硬件系统尽量简单化。本系统应用美国MAXIM 公司的MAX3111串行异步收发器,与DSP的McBSP口直接连接。硬件上无需任何其它外围器件,同时由于异步数据的发送和接收由MAX3111以硬件方式实现,所以软件编程需要考虑的也只是DSP与MAX3111之间的同步数据通信。这样,用最简单的硬件连接和软件编程就能实现同步到异步的串行数据格式转换。
MAX3111通用异步收发器是MAXIM公司专门为小型微处理系统进行最优化设计的UART。它包括一个振荡器和一个可编程波特率发生器;具有一个可屏蔽的中断源;另具有一个8字节的接收FIFO(先入先出)缓冲器。它应用SPI/MICROWIRE接口技术直接与主控制器进行通信,线路简单、体积小,通信速率可达230K BITS/S。另外其内部除具有UART之外,还包括两个RS-232电平转换器,这样无需再接入普通的MAX232进行电平转换,即可应用一个芯片实现微控器(具有SPI/MICROWIRE接口)与PC机或其它设备之间的异步数据传输。
数据传输部分主要包括以下几部分:
(1)McBSP串口初始化
在本设计中应将5410A的McBSP串行口配置为SPI模式,以DSP作为主设备。
(2)MAX3111工作模式及波特率设置
在进行通信之前,DSP必须首先根据命令序列格式向MAX3111写入配置命令
字,之后才能进行正确的数据传输,如8位数据位、一位停止位、无奇偶校验位、波特率为115200、使能接收和发送中断的异步数据传输。示例程序如下:
McBSP0_initializing:
stm #0,spsa0
stm #0001100000000000b,spsd0 ;dlb=0,rjust=00,clkstp=11,dxena=0,rintm=00
stm #1,spsa0
stm #0000000100000000b,spsd0 ;free=0,soft=1,xintm=00
stm #2,spsa0
stm #0000000001000000b,spsd0 ;1 word/frame and 16bits/word for receive
stm #3,spsa0
stm #0000000001000001b,spsd0 ;rcompand=00,rfig=0,rdatdly=01
stm #4,spsa0
stm #0000000001000000b,spsd0 ;1 word/frame and 16bits/word for transmit
stm #5,spsa0
stm #0000000001000001b,spsd0 ;xcompand=00,xfig=0,xdatdly=01
stm #6,spsa0
stm #0000000000011101b,spsd0 ;fwid is ignored,clkgdv=11101b=29
stm #7,spsa0
stm #0010000000000000b,spsd0 ;clksm=1,fsgm=0,fper is ignored
stm #0eh,spsa0
stm#0000111100001101b,spsd0 ;fsxm=1,clkxm=1,fsxp=1,clkxp=0,clkrp=1
(3)中断服务程序
在进行中断方式数据传输时,需要注意的是:虽然DSP的McBSP有自身的发送和接收中断,但由于McBSP与MAX3111之间的同步串行数据传输速率高于MAX3111将数据以一定波特率(最高230KBPS)异步发送的速率,因此如果应用McBSP的发送中断,将造成发送数据的丢失。同时,在SPI协议中,数据的传输是由SPI主设备发起的,所以在SPI方式下的McBSP并不能产生接收中断。因此,应用的关键之一是将MAX3111的IRQ中断信号连接至DSP的一外部中断,以实现中断方式下可靠、正确的数据传输。
通过简单的硬件电路将同步接口转换为异步串行接口,充分利用了DSP的在片硬件资源,很好地解决了DSP的异步串口扩展问题。
3系统软件的设计
数据采集卡的实时系统控制软件采用模块化的设计方法,包括:DSP 初始化模块、采样控制、DSP数据处理部分以及DSP发送数据至上位机部分。
固化在采集板上的DSP处理程序的程序主流程图如图2所示。
采集卡启动DSP芯片首先通过BOOTLOADER程序将存储在FLASH中的程序代码转移到RAM中,高速运行程序。程序首先进行初始化,然后由DSP本身完成对数据的自动采集,计算机并不参与采集的具体过程。采集后的数据暂时存储在FPGA芯片内部的FIFO中,当采集到一定数量的一组数据,由DSP芯片对数据根据需要进行处理。例如,对信号进行互相关、自相关、压缩算法等分析计算。这样经过处理后的数据量大大减少,再上传给主机以减轻了传输压力和主机处理负担,从而避免了数据通讯瓶颈。经过处理获得的数据,DSP芯片将其按照RS-232协议送至PC机,以进一步分析、处理数据。DSP程序使用与其配套的集成可视化开发环境CCS(Code Composer Stidio)进行开发,编程语言使用C语言与汇编语言相结合的方法,程序整体使用C语言编写以提高程序开发周期。对于实时性要求强或有比较复杂算法的部分,为提高DSP代码芯片的执行效率,使用汇编语言编写。
4结束语
本文介绍了一种基于DSP芯片、通过RS-232进行数据传递的数据采集系统方案。该方案在强大的DSP处理器控制下利用高速A/D芯片完成多路模拟信号的采集工作,采集后的数据可以进行实时处理与传输。该系统可以广泛应用于需要较高频率远程模拟信号的采集处理场合,将采集后的数据送至计算机进行分析处理,为后续工作提供了充足的数据基础。