微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DES5402PP的IIR滤波器设计与实现

基于DES5402PP的IIR滤波器设计与实现

时间:06-26 来源: 点击:

在许多实际应用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的信号基本被滤除。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top