AD_TRIG脉冲的周期是由主CPU决定,由DSP1写入CPLD。其它七个DSP不 向CPLD写入AD_TRIG脉冲的周期,它们只是AD_TRIG脉冲的接收者。
② 产生控制ADC的R/C和CS信号
R/C和CS信号是在AD_TRIG同步脉冲的基础上产生的。在产生R/C和CS的时序逻辑电路中,有些触发器的时钟就是AD_TRIG脉冲,这样八个DSP的采集、转换就被同步。
③ 产生FIRE点火脉冲
FIRE点火脉冲是在CPLD内产生的使发射晶体发声的脉冲。当DSP1接到主CPU传来的采集数据的命令时,就向CPLD发出产生FIRE脉冲的命令,CPLD经其内部组合和时序逻辑电路产生FIRE脉冲,然后送往主CPU,主CPU接到该脉冲后向发射模块发命令,使发射晶体发声。在设计时,产生FIRE脉冲的时序逻辑电路的有些触发器也是以AD_TRIG脉冲为时钟的,这样就解决了发声晶体“发声”与DSP“采集”的同步问题。
④ 作为DSP与主CPU之间的通信接口
主CPU的命令要传给DSP,八个DSP最后处理过的数据也要传给主CPU,因此,在CPLD中设计了一个同步串口。设计此串口要注意的是当DSP向主CPU传送数据时八个DSP不能发生冲突。下面的VHDL程序是本设计中对这一问题的解决,其中bfsx1~bfsx8是DSP1~DSP8的发送帧同步脉冲,bdx1~bdx8是DSP1~DSP8的缓冲串行口数据发送端发送的数据,fsx、dx是从CPLD输出的发送帧同步脉冲和发出的数据。
fsx<= bfsx1 and bfsx2 and bfsx3 and bfsx4 and bfsx5 and bfsx6 and bfsx7 and bfsx8;
a1<= ( not bfsx1)and bdx1; a2<= ( not bfsx2)and bdx2;
a3<= ( not bfsx3)and bdx3; a4<= ( not bfsx4)and bdx4;
a5<= ( not bfsx5)and bdx5; a6<= ( not bfsx6)and bdx6;
a7<= ( not bfsx7)and bdx7; a8<= ( not bfsx8)and bdx8;
dx<= a1 or a2 or a3 or a4 or a5 or a6 or a7 or a8;
在DSP内要通过编程实现对数据的如下处理:
①对数据进行平均运算
这是一个对所有数据求平均值的运算,此平均值即为噪声平均值的二倍。
②求 声波 的最大振幅及其时间
这是一个对所有数据的绝对值求最大值的运算,目的是进行自动增益控制(AGC)。
③对数据进行抽取滤波
声波信号的频率不超过20KHz,根据抽样定理,采样频率不小于40KHz就可不失真的恢复出原信号,但是为了提高信噪比,设计的采样频率均大于1 20KHz,为过采样,这就需要在DSP中设计一个抽取滤波器,对过采样后的数据进行抽取滤波。
④对数据进行压缩
声波信号是测井系统本身产生的,具有较大的数据冗余度,所以在上传给主CPU之前要对其进行压缩。本系统使用的是差分预测编码DPCM。
C54x的源程序可以使用汇编或C/C++语言编写。但是,关键的DSP程序一般还要用汇编语言编写,因为:首先,大多数广泛使用的高级语言如C,并不适合描述典型的DSP算法。典型的DSP应用都由大量计算的要求,并有严格的开销限制,使得程序的优化必不可少;其次,DSP结构的复杂性,如多存储器空间、多总线、不规则的指令集、高度专门化的硬件等,使得用C难以为其编写高效率的编译器;此外,对于底层硬件的控制,用汇编语言编写调试将更加直观高效。本系统的DSP程序主要是大量的计算,所以在实现时采用了汇编语言编写。
结语
本系统经过调试,证明总体设计思路正确,方案可行,满足性能要求。另外,本系统还可通过在DSP中编写不同的程序,来实现对不同信号的采集与处理。
参考文献
1 洪有密. 测井原理与综合解释. 石油大学出版社. 1993
2 刘树棠, 黄建国. 离散时间信号处理. 西安交通大学出版社. 2001
3 TMS 320 C54X DSP Reference Set. Volume 1: CPU and Peripherals. Texas Instruments Inc. 1997
4 TMS 320 C54X DSP Reference Set. Volume 2: MnemonIC Instruction Set. Texas Instruments Inc. 1996
5 TMS 320 C54X DSP Reference Set. Volume 3: Algebraic Instruction Set. Texas Instruments Inc. 1998
本文关键字:暂无联系方式DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术