基于DSP/BIOS的FIR数字滤波器设计与实现
1 引言
数字信号处理器(DSP)拥有强大的数字信号处理能力,与其配套的集成可视化开发环境CCS(Coder Composer Stu-dio)更方便了 DSP应用程序的开发。DSP/BIOS是CCS的重要组成部分,它实质上是一种基于DSP平台的规模可控的实时操作系统内核。这里主要研究在DSP上利用DSP,BIOS实现FIR数字滤波器的方法。
2 TMS320F2812及DSP/BIOS内核介绍
TMS320F2812是基于TMS320C2XXX内核的定点数字信号处理器,具有数字信号处理及强大的事件管理和嵌入式控制功能,适于有大批量数据处理的控制系统。其性能可用于数字滤波器设计。
TMS320F2812采用高性能的静态CMOS技术,时钟频率达150 MHz;低功耗(内核电压1.9 V,I/O口电压3.3 V);采用哈佛总线结构,片上集成许多片上外设,可实现更多功能。开发环境是集成开发环境CCS,支持C/C++/汇编嵌入式实时操作系统DSP/BIOS,JTAG调试接口。
DSP/BIOS内核是一个尺寸可伸缩的实时内核,它是为实时信号处理应用而设计的,主要包括:(1)DSP/BIOS配置工具。该工具可用来创建和配置在应用程序中使用的DSP/BIOS内核对象,也可使用该工具配置存储器,线程优先权以及中断处理;(2)DSP/BIOS实时分析工具。CCS中的分析丁具使用户可测试和分析目标DSP上应用程序的运行,包括监测CPU负荷、日志、线程执行情况等;(3)DSP/BIOS API函数。用户在PC端采用C、C++或汇编语言编写调用DSP/BIOS API函数的应用程序;(4)器件支持库。提供许多宏和函数,用来简化片上外设的配置和管理。
3 数字滤波器分析
数字滤波器根据冲激响应持续时间可分为有限冲激响应滤波器(FIR)和无限冲激响应滤波器(IIR)。其中FIR滤波器能够保证严格的线性相位特性,且不存在稳定性问题。窗函数法和频率采样法等是设计FIR数字滤波器的常用方法。窗函数法在时域中进行,其原理简单,易于实现,但存在在相同设计指标下滤波器的阶数通常会偏大的问题。频率采样法对于只有少数几个非零值采样的窄带选频滤波器较有效。这里分析如何在DSK2812板上利用CCS本身所带的操作系统实现一种通过窗函数法实现的FIR滤波器。FIR滤波器的各项指标可以通过现有的表查找,其设计步骤如下:
(1)给定所要求的理想频率响应函数Hd(ejw);(2)对理想频率响应函数进行反傅里叶变换,则得到系统单位脉冲响应为:hd(n)=IDFTFT[Hd(ejw)];(3)根据过渡带及阻带衰减最小的要求查表,可选定窗ω(n)的形状及除数,N的大小,一般N的值要做几次试探才能最终确定;(4)得到所设计的FIR滤波器的单位抽样响应(该响应逼近理想):h(n)=hd(n)ω(n),n=0,1…,N-1;(5)求H(ejw)=DTFT[h(n)],检查是否满足设计要求,若不满足,则需重新按照上述步骤设计。
4 数字滤波器的实现
要实现的低通FIR滤波器:通带边缘频率ωp=10 kHz,阻带边缘频率ωs=22 kHz,阻带衰减δ2=75 dB,采样频率fs=50 kHz。根据对滤波器的分析可求得系统的差分方程。所求得的h(n)在程序设计过程中可用一个数组存放。X(n)是A/D转换器采样值。让其逐项相加,再输出即可。实现滤波器所采用的硬件平台为DSK2812,实现流程如图1所示。
(1)启动CCS,新建一个丁程,命名为FILTER。
(2)新建一个DSP/BIOS的配置文件,命名为Fiher.cmd,并将其加入该工程中。在配置文件中设置所用到的硬件中断,它对应A/D采样的硬件中断。还需设置一个软件中断,用来对A/D转换模块采集到的数据滤波。因为滤波器处理数据需一定时间,所以将其放到软件中断中,通过BIOS的任务调度实现对信号的滤波。
(3)配置系统时钟,系统有基于PLL的时钟模块,为器件及各种外设提供时钟信号。在X1/XCLKIN和X2两个引脚间连接一个30MHz的晶体振荡器(可采用外部时钟),将输入的时钟信号直接接到X1/XCLKIN引脚,而X2引脚悬空,这种情况下,不使用内部振荡器。然后经PLL倍频后,为系统提供时钟。通过PLLCR寄存器的值可配置15"150 MHz的时钟。则TMS320F2812得到SYSCLKOUT,通过配置高速外设时钟HISPCP和慢速外设时钟LOSPCP控制外设,从而实现整个系统的时钟系统控制。这里设置系统的时钟HSPCLK为150 MHz。
(4)数字滤波器通过EVA1模块设置采样频率。首先将该模块配置为连续增计数模式。当周期寄存器和定时器的值相等时,产生一个外设中断请求,选择其启动A/D转换器,则在中断标志位置位的同时将A/D转换启动信号送至A/D转换模块。故只需配置定时器的周期值,便可改变A/D转换器的采样频率。滤波器的通用定时器采用内部CPU时钟(HSPCLK)作为时钟源,而内部时钟源可通过时钟预定标参数寄存器设置。这里设置的内部高速外设时钟为系统时钟。
(5)A/D转换模块的配置。A/D转换模块的A/D转换器有16个通道,可配置为2个独立的8通道模块,分别服务于事件管理器A和B。两个独立的8通道模块也可级联构成一个16通道模块。尽管在模数转换模块中有多个输入通道和两个排序器,但仅有一个转换器。将其配置为两个独立8通道模块,让EVA事件管理器A触发A/D转换器、信号从ADINAO引脚输入,从ADCRESULTO结果寄存器中读取转换结果。
(6)处理采集到的数据,即是对采集的信号进行滤波。首先根据信号通过滤波器设计过程进行运算,得到系统差分方程的系数,用一个数组存放该系数,以方便计算。主程序的数据采集即硬件中断所要完成的工作。
为验证所设计滤波器的滤波效果,将其应用于某电路实验的实测信号滤波,滤波前后波形如图2所示。由图2可看出,滤波效果较好。
5 结论
所设计的滤波器滤波效果理想,达到了设计要求。在DSP/BIOS多任务的调度下,不但可在滤波算法的基础上添加新任务,实现多任务系统,而且还能较好地满足需进行滤波处理的系统开发。
|