基于DSP的通用语音编译码器设计与实现
2 软件设计
软件设计包括DSP程序、控制器程序、CPLD程序和上位机程序四部分。DSP程序根据命令完成语音信号和计算机数据的处理等;控制器程序完成本地对编译码器的管理,并负责DSP与PC之间的通信;CPLD程序除完成系统需要的组合、时序工作外,还要提供与调制/解调器的数据接口;上位机程序完成对语音编译码器的管理。下面介绍部分程序的设计原理。
2.1 DSP程序设计
DSP程序主要包括主程序、命令解析子程序、模拟信号采集与输出子程序、编译码子程序、数据信号接收与发送子程序等。DSP完成G.711规范的A-Law编译码程序流程图如图2所示。
在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所示。
开关电源温度一个12V/3A的开关电源裸板,在3A额定负载下运行1小时,DC侧电解电容表面温度达到100℃,正常?过热了吧?戈卫东发表于2017-8-2322:51
过热了吧?
一般40-60之间正常,100多度,磁芯都被磁化
Verilog过程赋值语句提问在书上看到的,讲解阻塞型赋值语句时,举了一个例子
说的是,本想采用触发器的方式,
设计一个延时来使得dreg的输出比areg慢3个时钟节拍,
但是结果是dreg的输出只比areg慢一个
精确测量电源纹波精确地测量电源纹波本身就是一门艺术。在图 1 所示的示例中,一名初级工程师完全错误地使用了一台示波器。他的第一个错误是使用了一支带长接地引线的示波器探针;他的第二个错误是将探针形成的环路和接地引线均置