实验6 音频信号处理实验
目录
- 实验目的 1
- 实验设备 1
- 算法实现原理与仿真结果 1
3.1 参量均衡器的LowShelf和HiShelf通道模式 1
3.1.1 参量均衡器 1
3.1.2 LowShelf和HiShelf通道模式 4
3.1.3 LowShelf和HiShelf均衡的Matlab仿真 5
3.2 巴特沃斯滤波器 8
3.2.1 特性 8
3.2.2 传递函数 12
3.2.3 巴特沃斯滤波器的Matlab仿真 13
3.3 音频的反相 15
3.3.1 反相的概念 15 - 界面设计与通信协议 16
4.1 界面设计 16
4.2 通信协议 26 - 算法的DSP程序设计 27
5.1 系统的软件设计流程 27
5.2 系统时钟及必要外设的初始化 28
5.3 上位机和DSP板接收命令的判定 30
5.4 解析串口通信数据 32
5.5 音频算法软件处理 35 - 实验结果分析 52
6.1 界面设计展示 52
6.2 音频算法处理结果与分析 53
6.2.1 直通处理 53
6.2.2 静音/反相处理 55
6.2.3 低架处理 57
6.2.4 高架处理 61
6.2.5 巴特沃斯低通处理 65
6.2.6 巴特沃斯高通处理 68 - 参考文献 71
——————————————————————————————————
- 实验目的
1、复习巩固数字信号处理和音频DSP的基本原理和应用方法;
2、掌握在DSP上实现数字音频信号处理算法的方法。 - 实验设备
PC机一台,操作系统为Windows,安装VisualDSP++5.12软件, ADSP-21489 EZ –Board 一套。 - 算法实现原理与仿真结果
3.1 参量均衡器的LowShelf和HiShelf通道模式
3.1.1 参量均衡器
(一) 均衡器的分类
均衡器分为三类:图示均衡器,参量均衡器和房间均衡器。
(1) 图示均衡器
亦称图表均衡器,通过面板上推拉键的分布,可直观地反映出所调出的均衡补偿曲线,各个频率的提升和衰减情况一目了然,它采用恒定Q值技术,每个频点设有一个推拉电位器,无论提升或衰减某频率,滤波器的频带宽始终不变。常用的专业图示均衡器则是将20Hz~20kHz的信号分成10段、15段、27段、31段来进行调节。这样人们根据不同的要求分别选择不同段数的频率均衡器。一般来说10段均衡器的频率点以倍频程间隔分布,使用在一般场合下,15段均衡器是2/3倍频程均衡器,使用在专业扩声上,31段均衡器是1/3倍频程均衡器,多数有在比较重要的需要精细补偿的场合下,图示均衡器结构简单,直观明了,故在专业音响中应用非常广泛。
(2) 参量均衡器
亦称参数均衡器,对均衡调节的各种参数都可细致调节的均衡器,多附设在调音台上,但也有独立的参量均衡器,调节的参数内容包括频段、频点、增益和品质因数Q值等,可以美化(包括丑化)和修饰声音,使声音(或音乐)风格更加鲜明突出,丰富多彩达到所需要的艺术效果。
(3) 房间均衡器
用于调整房间内的频率响应特性曲线的均衡器,由于装饰材料对不同频率的吸收(或反射)量不同以及简正共振的影响造成声染色,所以必须用房间均衡器对由于建声方面的频率缺陷加以客观地补偿调节。
频段分得越细,调节的峰越尖,即Q值(品质因数)越高,调节时补偿得越细致,频段分的越粗则调节的峰就比较宽,当声场传输频率特性曲线比较复杂时较难补偿。
(二) 参量均衡器的重要参数
频率(frequency)参数:设定了你要对声音频带中进行均衡的具体频段。
提升(boost)和衰减(cut)参数:决定了你要对选定频段进行提升或是衰减的程度。
带宽,共振或是Q值参数:这个参数决定了提升或是衰减曲线是窄而尖还是宽而平缓。较窄的带宽设置(即较高的共振或是Q值)使得均衡器只能对非常窄的一个音频段进行操作,而较宽的设定值则可以对较宽的音频段进行操作。
参量均衡算法实际上是一种二阶IIR滤波器,参量均衡器一般用于补偿声音信号中不足的频率成分,衰减过多的频率成分。使用过程中有三个参数可以调:中心频率fC、Q值、增益值Gain。下图为参量均衡器的示意图。
界面设计
```c
1. %% 串口配置全局变量
2. global popBaudRate;
3. global popDataBits;
4. global popStopBits;
5. global popParity;
6.
7. popBaudRate = [9600, 19200, 38400, 57600, 115200]; % 波特率
8. popDataBits = [8, 9]; % 数据位
9. popStopBits = [1, 2]; % 停止位
10. popParity = {'none', 'even', 'odd'}; % 校验位
11.
12. %% 音频命令全局参数
13. global CH_IN; CH_IN =0; % 输入声道
14. global CH_OUT; CH_OUT=1; % 输出声道
15.
16. global CH_NUM; CH_NUM = 16; %输入、输出声道各8个,其中输入声道目前的21489开发板只有4个,另外4个保留
17. global IN_CH1; IN_CH1 = 1 ; %输入声道1
18. global IN_CH2; IN_CH2 = 2 ; %输入声道2
19. global IN_CH3; IN_CH3 = 3 ; %输入声道3
20. global IN_CH4; IN_CH4 = 4 ; %输入声道4
21.
22. global OUT_CH1; OUT_CH1 = 9; %输出声道1
23. global OUT_CH2; OUT_CH2 = 10; %输出声道2
24. global OUT_CH3; OUT_CH3 = 11; %输出声道3
25. global OUT_CH4; OUT_CH4 = 12; %输出声道4
26. global OUT_CH5; OUT_CH5 = 13; %输出声道5
27. global OUT_CH6; OUT_CH6 = 14; %输出声道6
28. global OUT_CH7; OUT_CH7 = 15; %输出声道7
29. global OUT_CH8; OUT_CH8 = 16; %输出声道8
30.
31. global HEAD1; HEAD1 = 170; %参数的帧头1 0xaa
32. global HEAD2; HEAD2 = 85; %参数的帧头2 0x55
33.
34. global MUTELEN; MUTELEN = 4; % 静音命令参数个数
35. global BYPASSLEN; BYPASSLEN = 3; % 直通命令参数个数
36. global PHASELEN; PHASELEN = 4; % 反相命令参数个数
37. global DELAYLEN; DELAYLEN = 6; % 延时命令参数个数
38. global LOWSHELFLEN; LOWSHELFLEN = 8; % lowshelf命令参数个数
39. global HIGHSHELFLEN; HIGHSHELFLEN = 8; % highshelf命令参数个数
40. global BUTTERLEN; BUTTERLEN = 8 ; % 巴特沃斯命令参数个数
41. global MUTEID ; MUTEID = 2; % 静音命令ID
42. global BYPASSID; BYPASSID = 3; % 直通命令ID
43. global PHASEID ; PHASEID = 4; % 反相命令ID
44. global DELAYID ; DELAYID = 5; % 延时命令ID
45. global LOWSHELFID; LOWSHELFID = 6; % lowshelf命令ID
46. global HIGHSHELFID ; HIGHSHELFID = 7; % highshelf命令ID
47. global BUTTERID ; BUTTERID = 9; % 巴特沃斯命令ID
主要的DSP实现代码:
```c
```c
1. // Sets the UART0 receive interrupt to P13
2. *pPICR2 &= ~(0x3E0);
3. *pPICR2 |= (0x13<<5);
4.
5.
6. initPLL_SDRAM(); //Initialize the PLL and SDRAM controller
7.
8. // UART 设置
9. *pUART0LCR=0;
10. *pUART0IER = UARTRBFIE; // enables UART0 receive interrupt
11. interrupt(SIG_P13,UARTisr);
12. initDPI();
13. initUART();
14.
15.
16. // Initialize DAI because the SPORT and SPI signals
17. // need to be routed
18. InitDAI();
19.
20. // This function will configure the AD1939 codec on the 21489 EZ-KIT
21. Init1939viaSPI();
22.
23. // Turn on SPORT0 TX and SPORT1 RX for Multichannel Operation
24. InitSPORT();
25.
26. // Unmask SPORT1 RX ISR Interrupt
27. interrupt(SIG_SP1,TalkThroughISR);
28.
29. Init_LEDs();
30.
31. Init_PushButtons();
32.
33. NewCmdFlag = 0; // 初始化命令标志, 当前无新命令
处理算法图
实验结果分析:
完整代码以及工程、设计报告(word,近2w字分析讨论)如下:
https://download.csdn.net/download/weixin_39589455/18656041