Abstract: This article lists the theory of IIR filter and how to design it. It analyzed how the Serial Interface of TMS320C5402 work and the specialty of TLC320AC01. Then list a link between C5402 and AC01, so that the system can both process digital signals and analog signals. In the end, it provides the material way of system design and implement IIR filter base on CCS and DES5402PP board.
Key Words: TMS320C5402; TLC320AC01; IIR Filter; CCS
0 引言
在许多实际应用DSP系统中,输入信号既可以是语音信号、调制的电话信号、编码的数字信号、压缩后的图像信号,也可以是各种传感器输出的模拟信号,这就需要DSP通过A/D和D/A转换完成数字信号和模拟信号之间的转换,从而能使DSP处理模拟信号和将数字信号转换成易于人机交互的声、光、电等信号。DES5402PP是一个采用TI公司的TMS320C5402为核心处理器的实验开发板,它提供的TLC320AC01能很好的完成这一功能。
1 IIR滤波器的MATLAB设计
尽管IIR滤波器的算法比FIR滤波器要复杂,且不是因果稳定的,但IIR滤波器也具有多种优越性,它可充分利用模拟滤波器的设计成果,工作量相对较小;在相同的设计指标下,可以用较低的阶数获得较好的性能;所用的存储单元少,因此对于硬件来说,在相同时钟速率和存储空间下可以提供更好的带外衰减特性[1]。http://www.51kaifa.com
设低通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的发送和接收初始化步骤
发送操作 |
接收操作 |
(1)写0008h到SPC,复位和初始化BSP |
(1)写0000h到SPC,复位和初始化BSP |
(2)写0020h到IFR,清除未使用的BSP中断 |
(2)写0010h到IFR,清除未使用的BSP中断 |
(3)用0020h与IMR进行或运算以激活BSP中断 |
(3)用0010h与IMR进行或运算以激活BSP中断 |
(4)如果可能,清ST1的INTM位恢复全局中断 |
(4)如果可能,清ST1的INTM位恢复全局中断 |
(5)写1400h到BSPCE,初始化ABU发送 |
(5)写0A000h到BSPCE,初始化ABU传输 |
(6)写缓冲启动地址到AXR |
(6)写缓冲启动地址到ARR |
(7)写缓冲区大小到BKX |
(7)写缓冲区大小到BKR |
(8)写0048h到SPC,启动BSP运行 |
(8)写0088h到SPC,启动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的数据存储器功能
R0 |
一般为0 |
R3 |
相移控制 |
R6 |
控制操作模式 |
R1 |
采样频率 |
R4 |
模拟输入输出的增益控制 |
R7 |
控制从模式的串行通信 |
R2 |
低通滤波器的截止频率 |
R5 |
使能高通滤波器 |
R8 |
控制生成的帧同步脉冲数 |
在AC01正常工作前,必须对它进行正确的初始化。初始化的操作主要工作是配置AC01的以上各个数据存储器。采样频率Fs=MCLK/2AB,其中,MCLK为DSP的工作频率,A,B分别为A,B寄存器的内容。由于实验设置采样频率为600Hz,因此设A,B寄存器的内容分别为5和4。即:
LD #00105h,a;送05h到AC01的数据寄存器1
IDLE 1
LD #00204h,a;送04h到AC01的数据寄存器2
IDLE 1
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将使用外部时钟和帧同步信号。在使用串口前,需要对它进行初始化,包括串口收发中断设置和串口寄存器的初始化,主要代码如下:
STM #0,spsa() ;spsa()为串口0的子地址寄存器
STM #2000h,spcr10;
……
STM #0C1h
LD #603h,a ;开始串口发送
……
LDM drr10,a ;将串口要输入到数据寄存器的内容转送到累加器A
CALL filter ;调用滤波子程序
……
STH a,dxr10 ;数据送到AC01的D/A,转换成模拟信号输出
同时,要修改中断向量表以便正确响应串口的接收和发送中断请求,其中发送中断产生测试信号和完成对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)滤波前的信号波形 (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),因此该系统也可用于音频信号滤波。
参考文献:
[1]齐海兵,平冠军,陶文超.无限冲激响应滤波器的设计与实现[J].微计算机信息,2006,10-2:84-85.
[2]汪安民,陈明欣,朱明.TMS320C54xxDSP实用技术[M].北京:清华大学出版社,2007:48-204.
[3] Texas Instrument. TLC320AC01C Data Manual.
[4] Texas Instrument. Interfacing TMS320C54x DSPs to TLC320AC01/02 Analog Interface circuits.