基于DES5402PP的IIR滤波器设计与实现
扫描二维码
随时随地手机看文章
在许多实际应用DSP系统中,输入信号既可以是语音信号、调制的电话信号、编码的数字信号、压缩后的图像信号,也可以是各种传感器输出的模拟信号,这就需要DSP通过A/D和D/A转换完成数字信号和模拟信号之间的转换,从而能使DSP处理模拟信号和将数字信号转换成易于人机交互的声、光、电等信号。DES5402PP是一个采用TI公司的TMS320C5402为核心处理器的实验开发板,它提供的TLC320AC01能很好的完成这一功能。
1 IIR滤波器的MATLAB设计
尽管IIR滤波器的算法比FIR滤波器要复杂,且不是因果稳定的,但IIR滤波器也具有多种优越性,它可充分利用模拟滤波器的设计成果,工作量相对较小;在相同的设计指标下,可以用较低的阶数获得较好的性能;所用的存储单元少,因此对于硬件来说,在相同时钟速率和存储空间下可以提供更好的带外衰减特性[1]。
设低通IIR切比雪夫滤波器的采样点为256个,采样频率为600Hz,输入为两个频率分别为100Hz和300Hz的正弦信号的合成信号。设定截止频率为200Hz,可以预料,将保留100Hz的信号,300Hz的信号基本被滤掉。
根据系统的设计流程,先在MATLAB中求得IIR滤波器的系数。主要分为三个步骤:产生本系统的测试信号;调用MATLAB中的滤波器函数,求出滤波器的系数;调用filter函数进行滤波,输出滤波后的信号。验证滤波器的性能后,将滤波器的系数通过程序写成.inc的文件,通过.include语句将其写入DSP汇编程序中。
2 C5402的缓冲串口(BSP)工作方式
TMS320C5402是TI公司生产的16位定点、速度为100MIPS、RAM为16×16位、ROM为4K×16位、可编程、低功耗和高性能的DSP。它提供的各种类型的串口都可以在全双工方式下通信,其串口信号与许多符合工业标准的串行设备兼容,可以直接连接。当串口复位时,可通过DSP来关闭或打开串口工作时钟,并允许串口运行在低功耗模式下[2]。
缓冲串口在BSP在标准串口的基础上增加一个自动缓冲单元ABU,是一种增强型标准串口。允许8、10、12、16、20、24或32位的数据传输。由于ABU是一个附加逻辑电路,它允许串口单元直接将数据读写到C5402的内部独立存储器,不需要CPU参与,从而使BSP传输速度更快。表1给出了BSP发送和接收数据初始化的操作步骤。
表1 BSP的发送和接收初始化步骤
3 AC01的特点[3][4]
TLC320AC01也是TI公司生产的一款集成有A/D和D/A的芯片,通过串口与DSP或其他设备通信。AC01的最高采样频率为25kHz,其数据精度为16位,采用单一5V电源供电。C5402与AC01连接后,可以只使用一个缓冲通道串口来同时实现数据的采集和输出,从而节省了DSP的硬件开销。因此,DSP与AC01的连接使用在信号处理中得到了广泛的应用。
实验系统DES5402PP使用AC01作为模拟信号接口,有两个AC01,分别工作于“主”、“从”模式。利用“主AC01”产生合成的输入信号,“从AC01”将该信号转换成滤波的数据信号并输入到DSP芯片。其中,DSP还可以通过读写AC01的寄存器,控制AC01的采样频率、增益、低通、高通滤波器的截止频率等参数。AC01的九个控制寄存器如表2。
表2 TLC320AC01的数据存储器功能
在AC01正常工作前,必须对它进行正确的初始化。初始化的操作主要工作是配置AC01的以上各个数据存储器。采样频率Fs=MCLK/2AB,其中,MCLK为DSP的工作频率,A,B分别为A,B寄存器的内容。由于实验设置采样频率为600Hz,因此设A,B寄存器的内容分别为5和4。即:
4 C5402和AC01的连接方式
4.1 C5402和AC01的硬件连接
在主/从模式下,DSP可以不通过其他器件而直接与两个AC01相连。其硬件连接如图1所示:
图1 主/从TLC320AC01和TMS320C5402的连接
4.2 C5402和AC01的软件连接
先在C5402的数据存储空间写入256个数据(即三个正弦信号混合而成的测试信号的离散表示),然后通过缓冲串口将数据发送到“主AC01”,利用“主AC01”的D/A通道产生一个模拟信号作为IIR滤波器的输入信号。由于实验中DES5402PP的信号输出通道与输入通道相连,即“主AC01”的输出作为“从AC01”的输入,“从AC01”的DOUT端口与DSP芯片的DR端相连。另外,在串口通讯中,因为数据时钟和帧同步信号都由AC01产生,所以C5402将使用外部时钟和帧同步信号。在使用串口前,需要对它进行初始化,包括串口收发中断设置和串口寄存器的初始化,主要代码如下:
同时,要修改中断向量表以便正确响应串口的接收和发送中断请求,其中发送中断产生测试信号和完成对AC01的初始化。实际上对信号滤波的实现,就是指从A/D读到一个数据后调用滤波程序,然后输出数据到D/A。
5 实验过程与结果分析
实验程序主要包括以下几个步骤:
(1),对DSP的寄存器、缓冲串口以及定时器初始化,确保能提供AC01正确的时钟信号。完成该步骤后,检测DSP的CLKR和FSR引脚可以看到连续输出的信号。
(2),同过DSP的缓冲串口对AC01进行初始化,正确设置AC01的采样率控制寄存器(表2中的R1),设置其采样频率。完成该步骤后,检测AC01的DOUT引脚可以发现有连续输出的信号。
(3),设置DSP的中断,从缓冲串口读取数据。这一步可以通过CCS环境查看读取的数据是否正确。如果正确,将采样数据送到滤波程序中,进行滤波处理,得到结果后,直接送到AC01的D/A单元输出。否则,返回步骤(1)。
滤波前后的波形如图2和图3所示。可以看到,比起滤波前的(a)图,(b)图的时域和频域波形得到明显改善,300Hz的信号基本被滤除。
(a)滤波前的信号波形&nBSP; (b)滤波后的信号波形
图2 滤波前后信号的时域波形
(a)滤波前的信号频率 (b)滤波后的信号频率
图3 滤波前后信号的频域波形
在图2(b)中,可以看到,只剩下一种频率的正弦信号。从频域来看,在图3(b)中,高频部分已经基本削弱,同时低频也有少量损失,只要将滤波器的阶数高一些或者截止频率稍微定低一些,便能更大程度的保留低频信号、消除高频信号。
6 结语
在信号与信息的过滤、检测和预测等处理中,都要使用滤波器,数字滤波器是数字信号处理中使用最广泛的一种方法。IIR数字滤波器的设计过程中,可以借助模拟滤波器的设计成果或直接采用典型的滤波器类型,减少工作量。而在信号的输入输出过程中,往往需要A/D和D/A转换,TLC320AC01模拟接口电路便可方便的实现这一转换。此外,DSP芯片本身具有并行的硬件乘法器、流水线结构以及快速片内RAM等资源,容易实现滤波运算,且程序可移植性好,不同性能的滤波器只需要修改滤波器的参数即可。
本文作者创新点:在DES5402PP开发板的基础上,通过输入一组两个不同频率的正弦混合信号,设计并实现了IIR滤波器。同时介绍串口和TLC320AC01的工作方式,给出了与DSP的连接方法,并通过程序实现。不论处理的是模拟信号还是数字信号,系统都可以通过TLC320AC01在信号形式上进行匹配转换,完成对信号的滤波处理。由于TLC320AC01最高采样频率为25kHz(高于语音采样频率8kHz),因此该系统也可用于音频信号滤波