音频混噪及IIR滤波器滤除LCD显示音频信号的FFT计算结果

一、实验目的

掌握Matlab辅助设计滤波器系数的方法,并实现音频混噪及IIR滤波器滤除,并在LCD上显示音频信号的FFT计算结果。

二、实验原理

音频接口采用的是24.576MHz(读兆赫兹)晶振,实验板上共有3个音频端口,分别是LINE IN、MIC IN和LINE OUT,音频数据是通过I2C总线进行读写的,McASP(字母)的时钟来自于晶振时钟,分频后可得到帧同步信号和位同步信号。

image.png

TLV320AIC3106音频芯片

(1)数据精度支持 16/20/24/32 bit 。

(2)支持速率 8kHz ~ 96kHz 采样率。

(3)控制总线可选为 SPI 或 I2C。

(4)音频串行数据总线支持4种协议格式: I2S, 左对齐格式,右对齐格式,DSP格式。

(5)有可编程PLL 可以灵活产生时钟。

image.png

音频芯片功能框图

(1)在框图底部分别是供电部分、(点击鼠标)时钟产生部分、(点击鼠标)SPI或I2C串行总线控制部分。

(2)芯片通过左右声道采集输入的音频模拟信号。

(3)经过ADC采样后得到数字化的音频数据。

(4)数字化音频数据通过音频串行总线接口传输到DSP。

(5)DSP处理之后的数字化音频从DSP通过音频串行总线接口再传输到DAC。

(6)音频经过DAC还原为可输出的模拟信号。

(7)最后,通过耳机或者音箱输出音频模拟信号。

image.png

音频芯片的工作流程。音频模拟信号通过左右声道分别采样,经过ADC转换为数字信号后通过McASP传输到DSP,在DSP处理完成后再通过McASP传输到DAC,最后经过DAC转换为模拟信号后,分左右声道输出。

image.png

IIR滤波器

IIR无限冲激响应数字滤波器(infinite impulse response digital filter)是对单位冲激的输入信号的响应为无限长序列的数字滤波器。可分为一维、二维或多维无限冲激响应数字滤波器。它的输出y(n)由当前的和过去的输入信号x(n)及过去的输出信号共同决定。IIR的幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上。

对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。其系统函数如下:

image.png

无限冲激响应数字滤波器的差分工程如下:

image.png

image.png

IIR滤波器特性

无限冲激响应数字滤波器具有以下特性:

(1)系统函数可以写成封闭函数的形式。

(2)采用递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。

(3)在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。

(4)相位特性不好控制,对相位要求较高时,需加相位校准网络。

IIR滤波器的设计

设计IIR数字滤波器实质上就是找到一个使其频率响应H(Z)满足给定的通带截止频率、通带衰减系数、阻带截止频率及阻带衰减系数的可以在物理上实现的系统函数H(Z)。

根据所要设计滤波器的参数去确定一个模拟滤波器的传输函数,然后再根据这个传输函数,通过双线性变换、或脉冲响应不变法来进行数字滤波器的设计。它的设计比较复杂,复杂在于它的模拟滤波器传输函数H(s)的确定。这一点可以让软件来实现。具体实现步骤:

(1)先确定需要一个什么样的滤波器,巴特沃斯型,切比雪夫型,还是其它什么型的滤波器。

(2)当选定一个型号后,就可以根据设计参数和这个滤波器的计算公式来确定其阶数、传输函数的表达式。通常这个过程中还存在预扭曲的问题(这只是双线性变换法所需要注意的问题,脉冲响应不变法不存在这种问题)。

(3)确定H(S)后,就可以通过双线性变换得到其数字域的差分方程。

MATLAB FIR 滤波器辅助设计,生成滤波器系数。

打开Matlab 软件,并打开"Filter Designed&Analaysis Tool"工具,在弹出的界面中按照所需滤波器修改以下参数:

(1)滤波器类型:高通Highpass;

(2)滤波方式:切比雪夫Ⅱ型IIR(Chebyshev Type II);

(3)滤波器阶数:Minimum order;

(4)采样频率:8000Hz;

(5)阻带截止频率:100Hz

(6)通带截止频率:3400Hz;

设置好参数后,转换为单精度再导出生成包含滤波器系数的.h头文件,将该头文件的数据拆分复制,即可用于IIR函数。

image.png

image.png

程序流程设计

设计中首先要首先要进行I2C和McASP的管脚复用配置,接着使能EDMA3的PSC和配置GPIO模块,然后初始化DSP中断和配置按键中断,进行音频芯片的初始化,并将McASP初始化为EDMA方式,初始化LCD,自定义生成一段噪声备用,最后进行按键检测,如果USER0按键按下,进行音频数据的混合噪声或IIR滤波或者是恢复原声,如果是USER1按键按下,则在LCD上显示计算的音频数据FFT结果。

image.png

数字信号处理库

DSPLIB 包含优化的、C语言可调用的通用信号处理例程,用于计算密集型实时应用程序。 调用这些例程的运行速度比直接用C语言编写的等效代码快得多。使用DSPLIB可以缩短应用程序开发时间。

DSPLIB 3_4_0_0包括适用于 C64x+ 或 C66x 或 C674x 处理器的 Windows 或 Linux 安装可执行文件。 每个可执行文件安装一个组件包存储库、一个文档目录、一个 Eclipse 插件目录和一个扩展的组件目录结构,其中包含组件库、头文件和测试示例。

TMS320C6748处理器使用的是dsplib_c674x_3_4_0_0。

dsplib_c674x_3_4_0_0

image.png

函数源码

FFT运算函数

程序使用DSPLIB 的库来进行FFT运算,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的FFT函数中,第一个参数是样本中 FFT 的长度,第二个参数是指向数据输入的指针。第三个参数是指向复杂旋转因子的指针。第四个参数是指向复杂输出数据的指针。第五个参数是指向包含 64 个条目的位反转表的指针。如果样本的FFT长度可以表示为 4 的幂,第六个参数是4,否则第六个参数是2 。第七个参数是从主FFT开始的样本中的子 FFT偏移索引 。 第八个参数是样本中主FFT的大小。

使用DSPLIB 的库来进行FFT运算。使用时,直接包含“DSPF_sp_fftSPxSP.h”文件 即可。

API接口

void DSPF_sp_fftSPxSP(int N, float *ptr_x, float *ptr_w, float *ptr_y, unsigned char *brev, int n_min, int offset, int n_max);

image.png

FFT逆变换函数

程序使用DSPLIB 的库来进行FFT逆变换,调用的程序源码和使用说明可以安装DSPLIB后查看。调用的IFFT函数中,第一个参数是样本中 FFT 的长度。第二个参数是指向数据输入的指针。第三个参数是指向复杂旋转因子的指针。第四个参数是指向复杂输出数据的指针。第五个参数是指向包含 64 个条目的位反转表的指针 。如果样本的FFT长度可以表示为 4 的幂,第六个参数是4,否则第六个参数是 2 。第七个参数是从主FFT开始的复杂样本中的子FFT偏移索引 。第八个参数是样本中主FFT的大小。

使用DSPLIB 的库来进行FFT逆变换。使用时,直接包含“DSPF_sp_ifftSPxSP.h”文件 即可。

API接口

void DSPF_sp_ifftSPxSP (int N, float *ptr_x, float *ptr_w, float *ptr_y,

unsigned char *brev, int n_min, int offset, int n_max);

image.png

三、操作现象

实验设备

本实验使用的硬件接口为LINE IN和LINE OUT接口,所需硬件为实验板、仿真器、电源、音频线、耳机和音乐播放器。本次操作是使用手机来播放音乐。

image.png

硬件连接

(1)使用音频线连接LINE IN(停顿一下) CON10音频接口和手机,手机播放音乐,

(2)在LINE OUT (停顿一下)CON11接口插上耳机或者音箱。

(3)连接仿真器和电脑的USB接口,

(4)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,按下USER0,通过耳机可以听到播放的音乐混合了噪声。

再次按下USER0,可以听到滤波后的音乐,滤波后的音乐和原声几乎一致。

再按下一次USER0按键,耳机会输出原声。

按下USER1按键,在LCD屏上会显示音频信号的频谱图。

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值