基于DSP的数据采集和频谱分析系统设计_杜治芸(2)
发布时间:2021-06-06
发布时间:2021-06-06
4山 西 电 子 技 术 2010年
316),所以通过合理分配内部RAM空间,可以将所有的代码都在运行前搬移到内部RAM中,提高系统的性能。具体的做法如下:
(1)CMD文件的编写
F2812的存储空间分配为:M0SARAM(1k316),地址
初始化、定时器初始化、片外AD初始化、LCD初始化等,初始化完成后,启动定时器,使能中断,接着进入主循环,系统开始正常运转。定时器的中断响应函数会以4kHz的频率,启动AD转换;在AD转换结束信号的中断响应函数中,会读取AD采样的结果并存储在缓冲区中;在主循环中,如果已经采集完成一次FFT变换所需的512点数据,则暂停启动
AD采样的定时器,调用FFT分析函数,并将分析的结果显
范围0x000040~0x0003FF;M1SARAM(1k316),地址范围0x000400~0x0007FF;L0SARAM(4k316),地址范围
0x008000~0x008FFF;L1SARAM(4k316),地址范围0x009000~0x009FFF;H0SARAM(8k316),地址范围0x3F8000~0x3F9FFF。
(2)代码搬移的实现
示在LCD上,同时通过SCI模块发送到上位机。
2.2 FFT算法实现
快速傅立叶变换(FFT)是计算N点离散傅立叶变换
(DFT)的高效算法,FFT算法分为时间抽取FFT(DIT)和频
率抽取FFT(DIF),本设计采用了DIT。DIT是将N点的输入序列x(n)按照偶数和奇数分解为偶序列和奇序列,因此,x(n)的N点FFT可表示为:
N/2-1
/2-1
FLASH中复制到
:DSP内核上电
0x3F7FF6处开始执行引m),在引导代码中进行代码搬移。由于代码搬移的时间可能会比较长,所以要先将看门狗禁止。接下来,在将待搬移段的存储地址、运行地址和大小赋给相应的寄存器之后,利用汇编语句“RPT”就可以实现代码搬移了。在代码搬移到RAM后,调用语句“LB_c_int00”,程序将建立
C语言运行环境(CEnvironment),进入main函数开始执行
X(k)=
n=0
k
6
x()N/2nkk
nx(+)W/(1)
k
N
Y)NZ(k).
X(k+N/2)=Y(k)-WZ(k).
几步实现:
K的范围为0~N/2-1,k=N/2~N-1的X(k)表示为:
(2)
实数FFT模块使用按时间抽取基22算法。具体分以下
(1)对输入的N点序列按照序列的奇偶性质分为两个
用户程序,至此,所有的代码搬移工作全部完成。
3 系统运行结果及分析
在现场环境中,通过仿真器与设备PCB板相连接,在
CCS环境中可以查看采集到的波形以及经过FFT变换后的
长度为N/2的序列,然后组成一个长度为N/2的复数序列,对长度为N/2的复数序列进行位倒序操作;
(2)对位倒序后的N/2点复数序列加窗(可根据需要
波形,如图2所示
。
选择);
(3)进行N/2点基22复数FFT计算;
(4)调用分割函数,计算得出N/2+1个复数输出;(5)计算幅度平方(可根据需要选择)。
需要注意的是,TI提供的FFT函数库对变量的存储位置有特殊的要求,且直接利用了指针去访问存储区域,这也就要求对存储区的分配格外重要,否则在做FFT运算的过程中数据被破坏,出现意想不到的结果[5]。在本设计中,将
mag变量分配到了L0SARAM的起始地址0x8000,并为其分
(a)
原始数据波形图
配了1024316bit的存储空间,将ipcb分配到了接下来的
0x8400地址空间。2.3 提高软件性能的措施
TMS320F2812的优点之一就是拥有片内FLASH,而不
需要外扩FLASH去存储代码。但是,这导致的缺点就是在访问FLASH的过程中,由于FLASH的响应速度无法比拟内部总线的速度,需要插入等待周期,这也就降低了代码执行速度。在该频谱分析系统中,DSP在做FFT运算时,会多次读取FLASH中的数据和代码,FLASH的读取会降低系统的运算速度。而F2812的内部RAM拥有“零等待时间”的性能,所以可以考虑将执行频率比较高的代码段在系统初始化时搬运到内部RAM中来运行。而在本系统中,由于程序段和数据段的大小总和未超过F2812内部RAM的大小(18k
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved.
(b)经FFT变换后的波形图
图2 现场测试波形图
从图中可以看出,采集到的信号频谱图中出现了3个尖峰,分别位于10,30和100处,说明信号中主要有3种频率
(下转第30页)
上一篇:控制系统的能控性和能观性
下一篇:VRAY渲染器的相关介绍