实验四 IIR滤波器设计
一、实验目的
1.掌握IIR滤波器DSP实现的编程方法。
2.测试IIR滤波器的单位冲击响应,检查IIR滤波器的频率特性。
二.实验条件
1.PC机及集成开发环境CCS5000软件或硬件仿真器。 2.低通IIR滤波器的参数如下: 通带:0~1/9?,带内波动<0.5db 过渡带:1/9?~5/18?,阻带衰减>20db 滤波器级数:N=5
B0?B1z?1?B2z?2?B3z?3?B4z?4滤波器:H(z)? ?1?2?3?41?A1z?A2z?A3z?A4z滤波器系数:A1=3.4647, A2=-4.6515, A3=2.8518, A4=-0.6739,
B0=0.0951,B1=-0.3139, B2=0.4460, B3=-0.3139, B4=0.0951
注:还可以用MATLAB中的数字滤波器设计工具得到其它IIR滤波器的系数表。
三、实验内容
编写头文件、cmd文件,还要用混合编程技术编写C语言主程序及IIR滤波器汇编子程序,在C程序中调用汇编子程序(函数),函数只有三个参数,即输入、输出序列首地址及长度,函数返回值为void。 1.编写滤波器汇编程序
采用循环缓冲区及乘法累加指令编写低通IIR滤波器程序,入口参数为输入、输出首地址及长度。
2.滤波器单位脉冲响应测试
在C程序中用定义一个长度为240的int型数组,其第一个单元为32768,其余全为0。用该数组作为滤波器的输入,测试滤波器的单位脉冲响应特性。 3. 检查滤波器的频率特性
在C程序中产生不同频率的序列sin(wn),w=0.05?,0.1?,…,0.5?,调用IIR滤波子程序(函数),对之进行滤波处理,对比滤波器的输入、输出序列的幅度比,检查滤波器的频率特性。 4.编写头文件和cmd文件。
5.进一步学习使用CCS的图形观察窗查看输入、输出序列的波形,具体使用方法见教材P381页。
四、实验步骤
10
本实验的步骤同实验三,实验工程建立在D盘DSPLAB\\LAB4文件夹中。
五、思考题
1.IIR滤波器的系数与滤波器的单位脉冲响应是否相等? 2.FIR、IIR滤波器的实现方法主要区别是什么?
3.当滤波器级数N相等时,FIR、IIR滤波器的阻带衰减特性那个好?
六、实验报告要求
1.简述IIR滤波器的特点,写出IIR滤波器的差分方程。 2.简述实验步骤。
3.编写FIR滤波器的汇编程序。
4.记录输入、输出序列的波形,分析实验结果。 5.简要回答思考题。
11
实验五 语音信号滤波
一、实验目的
1、了解音频编解码器TLC320AIC23的接口和使用方法。 2、了解DSP的多通道缓冲串口(MCBSP)通信方法。 3、了解一个完整的语音输入、输出系统的设计。
4、利用C语音及DSP汇编语音综合实现语音信号的采集、滤波及回放。
二、实验设备
计算机、DSP硬件仿真器、DSP图像处理实验箱、麦克风等。
三、实验原理
1. 实验箱音频输入输出通道简介
立体声音频编解码芯片TLV320AIC23是TI生产的一种模拟接口电路,用于音频信号的输入/输出。音频采样频率为8kHz – 96kHz,可用16至32位量化,码率128Kbps –3072Kbps,输入包括麦克风输入和线性输入两个通道,输出一个耳机输出通道,片内集成了立体声耳机功率放大器。TLV320AIC23与TMS320VC5416的接口有命令接口和数据接口,如图5.1所示。命令接口是IIC总线,DSP的第二个MCBSP作为GPIO模拟IIC总线,对TLV320AIC23进行初始化。数据接口是多通道缓冲串口(MCBSP),DSP的MCBSP0与TLV320AIC23与进行数据传输。
图5.1 TLV320AIC23与TMS320VC5416的接口
2. 音频通道的命令接口
TLV320AIC23命令接口主要功能是初始化TLV320AIC23内部控制寄存器。本系统使用DSP的第二个MCBSP作为GPIO模拟IIC总线对TLV320AIC23内部的控制寄存器进行操
12
作。IIC总线上的数据格式为:8bit的设备地址,本系统中TLV320AIC23的设备地址固定为0x34;7bit的片内寄存器地址,TLV320AIC23片内有15个控制寄存器,其功能见下表;9bit的数据。 表5.1 AIC23片内部分控制寄存器 序号 地址 寄存器 0 1 2 3 4 5 6 7 8 9 10 3. 音频通道的数据接口
TLV320AIC23数据接口主要功能是DSP接收、输出由TLV320AIC23模/数、数/模转换的数字音频数据。在本系统中,在MCBSP总线上TLV320AIC23工作在主模式,DSP工作在从模式。MCBSP每一帧两个数据,每个数据16位,分别为左声道数据和右声道数据。TLV320AIC23和DSP之间可以通过MCBSP进行无缝连接。图5.1中,DIN为AIC23数字音频输入端,DOUT为AIC23数字音频输出端,LRCIN、LRCOUT分别为输入、输出的帧同步信号,BCLK是同步时钟。 4. 语音信号的采集、滤波及回放
音频实时回放(滤波)程序流程图见图2。 (1)初始化TLV320AIC23
首先要初始化TLV320AIC23,函数为IIC_Write_B(), 三个参数,第一个参数为设备地址,第二个参数为片内 寄存器地址,第三个参数为数据。我们需要对 TLV320AIC23内部的左声道线性输入音量、 右声道线性输入音量、模拟音频通道、数字 音频通道、电源管理、数字音频格式、音频 采样率、数字音频接口,使能控制寄存器进 行写操作,只要在此函数的第二个参数带入 不同的寄存器地址就可以了;配置各个寄存 器的数据,由第三个参数带入,详细请参阅
TLV320AIC23的数据手册。 图5.2 音频采集、滤波回放流程图
13
0000000 左声道线性输入音量控制寄存器 0000001 右声道线性输入音量控制寄存器 0000010 左声道耳机输出音量控制寄存器 0000011 右声道耳机输出音量控制寄存器 0000100 0000101 0000110 0000111 0001000 0001001 0001111 模拟音频通道控制寄存器 数字音频通道控制寄存器 电源管理控制寄存器 数字音频格式控制寄存器 音频采样率控制寄存器 数字音频接口使能寄存器 复位寄存器 初始化TLV320AIC23 初始化DSP的MCBSP0 采样20个输入音频数据,同时输出上次循环中已滤波的数据 对本次循环中采样的20个数据滤波,得到新的滤波后的数据 (2)初始化DSP的多通道缓冲串口
在mcbsp54.h头文件中,定义了许多实用的宏函数,我们可以直接调用这些宏函数对MCBSP进行配置。需要配置DSP内部的相关寄存器:SPCR1,RCR1,RCR2,XCR1,XCR2,PCR。MCBSP总线上的数据格式为:单数据相,数据长度为16位,每相2个数据,具体配置方法请参阅《TMS320C54x DSP Reference Set Vol 5:Enhanced Peripherals》。 (3)采样MIC输入的音频数据
本系统MCBSP总线上,TLV320AIC23为主设备,DSP为从设备,也就是音频的采样频率完全是由TLV320AIC23控制的。DSP不需要控制采样率,可以通过中断或者查询的方式从MCBSP上取得采样数据。例程中,采用查询方式,mcbsp54.h中定义了MCBSP_RRDY宏函数,可以判断MCBSP中是否接收到完整的一帧数据。如果接收完成,我们可以调用宏函数DRR1_ADDR,此函数的返回值即为采样数据。 (4)输出音频数据到耳机
调用宏函数DXR2_ADDR和DXR1_ADDR,即可从耳机输出音频数据。注意必须先调用DXR2_ADDR,再调用DXR1_ADDR。这两个函数分别输出左声道和右声道音频数据。 (5)语音信号滤波
在firfun2.asm定义了一个FIR低通滤波器。调用函数firfunc2()需要三个参数,第一个原始序列的首地址,第二个为滤波后序列的首地址,第三个序列的长度。
四、实验步骤
1. 在断电状态下,用USB线将实验箱的USB口与PC机的USB口相连,将仿真器与 DSP 的JTAG口相连。打开PC机电源及实验箱的12伏电源。
2.打开CCS,选择open——c5416 XDS进入DSP硬件集成开发环境(使用实验箱做实验,先连接好实验箱及仿真器等方可开机)。进入CCS集成硬件开发环境(应能找到实验箱,否则重新开始)。
3.打开项目codec.pjt(D:\\DSPLAB\\LAB5),编译、链接后下载out文件到dsp,运行代码,接上耳麦,应能听到说话声。
4.将lab3文件夹中的firfun.asm或firfun2.asm文件添加到本工程中,修改codec.c文件及链接命令文件,实现语音信号的采集、滤波及回放。比较滤波前后声音频率特性。 5. 采用滤波器级联的方法对语音信号进行多级滤波,滤波后的信号送AIC23再输出,再比较输入与输出信号的差别。
五、实验报告要求
1、 简述语音处理的实验原理。
2、 如何在采集语音的同时输出语音数据?
3、 模拟滤波器的截止频率与数字滤波器的截止频率之间有何关系?如何编程实现:降
低模拟低通滤波器的截止频率?
14