基于DSP的通用语音编译码器设计与实现
在DSP响应控制器程序中设置一个控制标志位CON_SEL,并分配在DSP数据空间内的0x1fffH地址,控制器根据用户从键盘输入的命令(或来自PC机的命令)向此地址写入相应的控制标志,DSP的底层程序响应该控制标志位完成相应的工作(MIC语音处理、线路语音处理和数据通信)。DSP响应控制器程序流程图如图3所示。从流程图中可以看到,对于语音处理,程序先打开中断。当A/D采集完语音数据后,即进入中断服务程序,在中断服务程序中关闭全局中断,并设置数据是否满的标志位为有效状态。主程序查询该标志位,如果有效则调语音处理子程序进行处理,处理完调用通信程序输出;而对于数据通信的处理过程是,DSP首先在内部开辟一个数据缓冲区,并打开HPI中断和全局中断,然后DSP主程序进入数据处理程序,这时接收来自单片机(或PC机)的数据通过数据口传输出去,传送完后可通过HINT去中断控制器,通知主机传送下一个数据。
2.2 控制器程序设计
控制器工作有两个状态,即本地控制工作状态和通信传输工作状态。本地控制状态就是实现对编译码器的控制与管理,而通信工作状态仅仅完成DSP与PC机之间的信息传输,这里只说明DSP、控制器和PC机之间的程序设计。由于DSP的HINT引脚和单片机的INT0引脚相连接,HINT中断有效触发的是单片机的INT0中断,所以PC机的上位机软件要响应DSP的中断只能在控制器与PC机的控制协议中完成,DSP在发送完成一个数据后无法采用中断的方式告诉上位机。为解决这个问题,上位机采用查询的方式,即在控制器中设置一个标志位send_end,初始化为0,当DSP发送完一个字节数据后置该标志位为1,上位机每发送完一个数据,通过控制器触发一次DSPINT中断,并读回send_end的值判断,若为1则传送下一个字节,否则等待控制器将当前数据发送完成。
2.3 上位机软件设计
上位机软件采用学生容易掌握的VB语言实现,其主界面如图4所示。
主界面主要完成系统初始化,并显示系统需要检测和控制的内容。初始化正常后,上位机程序即可通过控制器向DSP的指令地址发送控制命令,DSP查询此地址的命令字,并根据命令字进入相应的服务程序(MIC语音、线路语音或数据通信。DSP在初始化中默认的是MIC语音处理),如果要进行线路语音处理则在控制界面上选择“线路输入语音”控制命令,这时控制子界面将用户选择的命令通过控制器送DSP,DSP查询到并判断是线路输入语音命令后即执行线路输入语音子程序,这时如果将数据输出端口与数据输入端口、对应的同步信号连接好的话,从耳机可听到经过语音编码和译码后的电脑播放的音乐,从听到的音乐比较编译码后的语音质量。如果在命令控制界面选择“计算机数据通信”控制命令,即可进行计算机数据通信实验。
3 实际测试
3.1 语音信号编译码测试
首先将PC机的线路输出用信号线连接到编译码器的LINE输入,启动编译码实验系统,然后由PC机播放MP3音乐,测试得到的8 kHz帧同步和64 kHz位同步时钟的波形如图5所示。
图6是在64 kHz位同步时钟情况下编码后的音乐数据波形,在译码器输出端用耳机可以听到MOS分在4 dB以上的音乐。
3.2 数据传输测试
首先在上位机软件的控制界面中选择计算机数据通信命令,在弹出的数据通信对话框中输入测试数据1234,如图7所示。
DSP结束当前语音通信过程后即进入数据通信子程序,这时可以从主界面的编辑对话框中输入要传输的数据(也可以选择PC机中的文件),点击“确认”按钮,编译码实验系统即可完成数据通信,图8给出以64 Kb/s的速率传输的数据,同时PC机从DSP端读回所发送的数据,可以看到数据完全正确。
对于传输文件,先选择*.txt数据文件,然后点击“确认”,则*.txt文件中的数据将通过控制器发送到DSP中指定的发送缓冲区中,DSP将发送缓冲区中的数据以64 Kb/s的速率从数字接口McBSP2发送出去。如果将数据接口的发送和接收端用测试线连接起来,则DSP接收回到接收缓冲区中,软件从其接收缓冲区中读回数据,图9是写入DSP发送缓冲区的数据,在CCS中观察与所发送的数据完全一致。
4 结语
本文设计并实现了一种基于DSP的通用语音编译码器实验平台。该平台硬件采用模块化设计,软件采用结构化设计,非常方便学生从不同层面参与实验,也非常适合以团队的方式完成实验项目,将比较复杂、内容比较多的实验项目分解成易于实现的小模块,同时模块和结构化的设计思想非常容易实现硬件和软件的扩展和升级,可以从硬件和软件等多方面培养学生的设计、综合以及创新等能力。从仿真和测试结果可以看到设计的正确性。
- 基于FPGA的DSP设计方法(08-26)
- 电力电子装置控制系统的DSP设计方案(04-08)
- 基于DSP Builder的VGA接口设计(04-10)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 基于DSP的嵌入式显微图像处理系统的设计(06-28)