本文设计并实现了一种基于DSP的高速数据采集与处理系统。该设计方案电路简单、可靠性好、具有一定的通用性、可以进行多通道扩展。系统主要包括高速A/D、高速缓存、DSP处理器、通讯接口四个部分,其结构示意图如图1所示。
1 同步与过程控制
在通常的数据采集系统中,测量过程是通过对A/D变换器的控制来实现的。但对于一个高速采集系统而言,这种方法有局限性。因为高速A/D建立稳定的工作状态需要相当长时间,频繁的改变A/D的工作状态会影响测量的精度,严重时会造成信号的失真。
在本设计方案中,同步命令并不直接作用于高速A/D。自通电时起,A/D和时钟电路始终处于工作状态,同步命令通过对高速FIFO的写入端的控制,即允许或禁止对FIFO写入,实现对采样数据的取舍。与A/D相比,高速FIFO的写有效时间为3ns,对同步和过程控制更为有利。
一次完整的测量过程是从DSP发出同步命令开始的。同步命令一方面触发发射机工作,另一方面允许对FIFO写入,对采样的数据进行存储。当存储的数据到达预定的数量时,FIFO的特定状态位置位,引发DSP外部中断。在中断服务程序中,DSP禁止对FIFO写入、中断数据的存储,同时复位该状态位。然后读取数据,待完成数据处理过程之后,DSP对FIFO复位清零。此即完成一次测量。
2 高速A/D转换器
高速A/D转换器选用AD9432,采样位数12位,最高采样速率105MHz,模拟带宽500MHz,差分信号输入,差分外部时钟,片内带有输入缓存和采样/保持器,12位并行数据输出,52引脚LQFP封装。
由于AD9432要求差分输入形式,因此对于单端输入信号必须经过图2所示的信号调理电路变换为差分形式。图中,AD8138为差分输出的高精度运算放大器。
时钟对于一个高速数据采集系统而言是十分重要的。在最高采样频率下,为了保证测量的精度,AD9432要求时钟波形的上升沿和下降沿小于2ns,这样的标准在TTL逻辑下难以实现,但利用ECL器件可以有效地解决此问题,图3为差分时钟电路。
需要说明的是:ECL器件的驱动能力有限,一路差分时钟输出一般只供一个器件使用。
3 高速缓存FIFO
高速缓存是系统中的一个关键环节,根据系统的需求我们选用CY7C4245。
CY7C4245是高速、低功耗4K×18 FIFO存储器,读写周期为10ns,具有独立的18位输入、输出接口和读、写时钟信号,可以实现同步读写操作。CY7C4245提供五种状态指示:Empty、Almost Empty、Half Full、Almost Full、Full,分别代表当前数据存储的深度。其中Almost Empty 和Almost Full 为可编程空满状态位,可根据系统的需求对存储进行设定。FIFO的状态信息代表了已采样的点数,当采样点数达到预期的数量时,相应的状态位置位,触发DSP的外部中断,中止测量过程,由 DSP读取数据进行处理。
4 DSP处理器
4.1 TMS320F206的特点
DSP是整个采集系统的核心,本文中选用 TMS320F206。该产品属于TI公司采用CMOS集成电路技术生产的TMS320C2XX系列,设计结构及其汇编指令集与TMS320C5X相兼容,其主要特点如下:
(1)运算速度可以达到40MIPS;
(2)4.5K片内RAM和32K片内FLASH存储器;
(3)32位算术逻辑单元和32位累加器;
(4)16位地址总线和16位数据总线;
(5)具有一个异步串行通讯接口和一个同步串行通讯接口,异步串行口具有波特率自动检测功能;
(6)价格低廉。
4.2 数字信号处理
数字信号处理是DSP应用的主要方面。DSP所提供的数学运算能力和运算速度远远高于单片机,具有更为丰富的指令集和更大的内存空间,可以实现较为复杂的数学算法。
DSP首先要完成数制转换,AD9432的量程为-500mV~+500mV。对于负电平,采样数据以二进制补码的形式输出,需将12位补码转换为16位二进制整数;更为重要的是DSP要实现系统所要求的数字信号处理算法,如快速维纳滤波、FFT等。
5 数据通讯
5.1 异步串行通讯
数据采集系统与主控计算机之间的数据交换采用异步串行通讯方式。TMS320F206带有一个异步串行通讯端口,在40MHz外频条件下,最高传输速率达到2.5Mbit/s。发送和接收使用独立的缓冲区,可以实现全双工工作方式,异步串行口的工作框图如图4所示。
其中,AXSR为异步串行发送移位寄存器;ARSR为异步串行接收移位寄存器;ADTR为异步数据发送接收寄存器,TXRXINT为发送接收中断(硬件中断)。
此外,TMS320F206有一个同步串行口,用于多机并行工作方式下DSP之间的数据交换。在40MHz外频时,其最高传输速率为20Mbit/s。
5.2 波特率设置
TMS320F206有一个16位寄存器BRD用于设定异步串行通讯所使用的波特率,其数值计算公式如下:
表1列出了不同外部时钟频率下常用波特率对应的BRD数值。
5.3 串行通信软件设计
为了提高效率,数据的发送和接收均采用中断方式,串行通讯波特率为57600,汇编程序代码如下:
串行口初始化:
setc INTM ;禁止所有中断
splk #0ffffh, ifr ;清中断
splk #0000h, 60h
out 60h, wsgr ;清等待状态
splk #0c180h, 61h
out 61h, aspcr ;复位异步串口,设发送、接收
中断,一个停止位
splk #0e180h, 61h
out 61h, aspcr ;配置异步串口
splk #4fffh,62h
out 62h,iosr ;复位异步串口各状态标志
splk #002Bh, 63h
out 63h, brd ;设波特率为57600
splk #020h, imr ;允许异步串行中断
mar *, ar1
lar ar1, #rxbuf ;设缓冲区指针
mar *,ar0
lar ar0, #size ;设缓冲区大小
发送中断服务程序:
..........
splk #0ffffh, ifr ;关中断
out *+, adtr ;发送数据
mar *,ar0 ;发送计数
banz skip, ar1 ;若仍有数据,发送
缓冲区指针加1
skip: splk #0020h, ifr ;允许中断
clrc INTM ;清中断
ret
接收中断服务子程序:
............
splk #0ffffh, ifr ;关中断
in 68h,iosr
bit 68h,7
bcnd skip,ntc ;检测接收标志位
in *, adtr ;读数据
mar *,ar0
banz skip, ar1 ;接收数据计数
............
skip: splk #0020h,ifr ;开中断
clrc INTM
ret
其中ifr为中断标志寄存器;aspcr为异步串行口控制寄存器;imr为中断屏蔽寄存器;iosr为I/O状态寄存器;wsgr为等待状态寄存器。
6 RS232接口电路
该系统中DSP与主控计算机的数据通讯采用RS232标准,驱动电路选用MAX232A芯片。MAX232A功耗低、集成度高、片内集成电荷泵,只需外接+5V电源,具有两个发送接收通道,接口电路简单、可靠性好。RS232驱动电路如图5所示。
7 系统的扩展
本设计方案电路简单、易于实现、具有一定的通用性,在此基础上可以扩展为同步采样的多通道采集系统,如图6所示。图中,主从DSP之间的数据通讯采用同步串行方式。
需要注意的是:对于多通道同步采样系统,应尽可能地保证各通道参数的一致性。
根据本文内容设计并实现的双通道同步数据采集与处理系统已成功应用于分布式光纤测量系统,取得了很好的效果,实践证明本文的设计是可行有效的。