随着信息时代的到来,信息技术尤其是计算机多媒体技术与网络技术飞速发展,语音教室在各种学校都已有了广泛的应用。现存的语音教学系统一般都是采用模拟电路,可靠性低,抗干扰性弱,易发生串音,从而在传输过程中会失真、衰减,且易受干扰,导致语音质量较差,同时布线也较复杂,建设成本比较高;另外现存的解决方案实现的功能较为单一,只能完成简单的教学功能,没有提供随意分组讨论、点名、选择题问答等应有的功能;另外,现存的解决方案没有发挥出现有的多媒体网络技术优势,无法进行高效、生动的多媒体教学,交互性比较差,教学效果受到很大的影响,严重影响了在实际教学中的推广与应用。要解决传统语音教学面临的问题必须引入数字化的设计。
数字多媒体终端的硬件设计与实现
数字语音教学系统由教师端、多个学生端(数字多媒体终端)、数字传输网络组成。其中,教师端一般采用计算机控制,主要完成系统管理及网络管理。学生端既可以基于PC机平台,也可以采用经济型独立设备。数字传输网络是所要传输的多媒体信息的载体。本文就是针对学生端设计一种经济实用的独立设备。它采用嵌入式数字信号处理器DSP+CPLD+接口电路的设计模式。数字信号处理器DSP实现语音信号的处理、网络接口部分的控制及多任务的管理。CPLD完成网络适配部分设计及部分外围电路控制。接口电路包含网络接口、模拟语音输入输出接口。语音传输中要保证语音传输的实时性和交互性,实现学生端与教师端和其他学生端的通信。
硬件平台构造于DSP嵌入式系统上,该平台采用了TI公司的数字信号处理器TMS320VC5402作为核心部
件,利用可编程逻辑器件XC95288开发了外围控制电路和接口电路多种设备接口。
包括网络输入、输出接口、话筒输入接口和耳机输出接口。
语音信号前置放大
由于从话筒输入的语音信号比较微弱(1~30mV),达不到编解码器对信号强度的要求,因此必须进行前置放大,这里由专用前置放大芯片完成。
语音信号的转换及编解码
语音信号的A/D,D/A转换及编解码功能是利用MC145480完成的,它的优点是:①可将语音信号的A/D,D/A转换及编解码集成在一个芯片中,提高了系统稳定性;②只需单电源供电,减少了双电源供电所带来的电源干扰问题,提高了语声质量;③可提供A律及m律两种编码格式,提供符合ITU- T G.711建议的语音数据流。
系统控制、管理与语音压缩
由数字信号处理器TMS320VC5402完成。该芯片处理速度快,可实现语音的实时处理,并实现语音的回声抑制功能。除了能完成DSP所提供的功能外,利用内嵌的DSP/BIOS实时操作系统,可实现并建立语音实时多任务系统。
网络适配电路
本网络的拓扑结构参考令牌总线网,物理拓扑采用总线型结构,由一根线形的电缆连接各个站点。逻辑拓扑采用环形结构,每个站点知道自己左边和右边站点的地址,在逻辑上构成一个环,数据沿环逐节点顺序传送。这种物理结构具有以太网电缆的可靠性,不会因某处电缆故障物而在物理上导致整个系统瘫痪。其所需电缆长度短,安装费用低,易于布线、维护和扩充。而且,物理上共享总线的站点之间可以直接通信,响应速度较快。同时,由于总线电缆固有的广播特性,使得应用中广播功能的实现较为容易。另外,由于逻辑环是公平的,每一站点对信道的访问时间有一个确定的上界,因此可以防止某一站点独占信道这种情况的发生。共享媒体语音网是一个局域通信网络,它没有路由问题,任何两个站点之间可以使用一条直接链路,所以不需要单独设置网络层,而可以将寻址、排序、流控、差错控制等功能都放在数据链路层中实现。
该控制电路利用XILINX公司的可编程逻辑器件CX95288实现。网络适配器把数据总线上的低电平并行信号转换成0、1码流,通过连接网络各站点的电缆传输。它采用特殊技术,以便利用适配器共享局域网线缆、局域网的介质访问控制MAC方式和发送信号的类型。电路包括网络接口、接收电路、发送电路及与DSP的接口电路。其中,网络接口部分采用通用的RS-485通信接口,实现简单。数字多媒体终端的软件设计与实现。
数字多媒体终端系统除了利用DSP完成信号处理,实现全部系统控制功能之外,在系统软件设计中,需要对DSP、存储器、外设等各种资源加以管理,同时还要处理多任务并发操作和不同任务之间的协调。为了保证系统的可靠性和稳定性,本文采用了DSP/BIOS实现上述工作。
DSP/BIOS实时操作系统
DSP/BIOS是TI公司推出的一个实时操作系统(RTOS),与TI的Code Composer Studio(CCS)集成在一个开发环境下。目前最新的版本是CCS 2.0 中的DSP/BIOS II。它支持软件模块化,通过修改内核提供占先式多任务服务;具有设备独立的I/O数据流模型;可以对内存进行动态分配与内存管理。DSP/BIOS实际上是一个可调用的系统模块API的集合,利用DSP/BIOS调试工具可以对程序进行实时跟踪与分析,提高应用程序开发的可靠性。通过DSP/BIOS 插件(Plug-ins)可实时观察内核中各线程的执行状态和对象的当前属性。利用配置工具 (Configuration Tool)开发者可以对各个模块实行配置。非常有效地提高项目了开发效率,简化了DSP应用程序的开发和调试。
DSP/BIOS实时语音处理多任务系统
对语音信号的处理利用DSP/BIOS建立实时多任务系统。DSP与音频编解码器之间的通信通过DSP的外设多通道缓冲串行口(McBSP)实现闭环测试。简单的语音处理系统由采集线程和播放线程两个应用任务组成。每个应用任务分别对应一个输入SIO和一个输出SIO流,通过两个半双工通道(一个输入,一个输出)来访问连接到音频编解码器的DSP多通道缓冲串行口。另外,在两个任务之间的数据交换通过DPI设备驱动完成。具体实现包括:
● 建立设备驱动
设备驱动采用DAX驱动程序作为管理设备的软件模块。DAX驱动模块由DAX头文件和DAX函数组成。DAX_Params作为配置工具设备驱动对象的属性。每个设备驱动模块同时还需要一个控制模块,控制模块由外部函数bind、start、stop和unbind等组成,通过DAX_Params参数结构和配置工具配置控制器。其中,控制器的bind(unbind)函数负责绑定(解除绑定)设备驱动模块对设备端口的控制。控制器的start函数负责调用流SIO_get时打开设备端口,也就是打开McBSP的接收和发送中断使ISR中断服务线程正常运行。控制器的stop函数使停止中断运行并关中断。
DAX函数由配置工具中设备对象的函数表调用,在dax.c中初始化驱动函数表DAX_FXNS,DAX函数表的结构如下所示:
DEV_Fxns DAX_FXNS = {
DAX_close,
DAX_ctrl,
DAX_idle,
DAX_issue,
DAX_open,
DAX_ready,
DAX_reclaim
};
应用程序不直接调用驱动函数,这个函数表用于SIO模块调用特定的设备驱动函数,SIO模块依次发送通常的函数调用适当的驱动函数。
● 建立SIO流
本文利用静态配置工具为每个任务建立一个输入流和一个输出流,采样线程对应采样输入流inSample和输出流outSample,播放线程对应播放输入流inSink和输出流outSink。
● 建立任务
系统利用DSP/BIOS建立两个任务tasksample和tasksink,分别对应Sample 和Sink线程,以完成语音的采集处理与播放处理。采样线程Sample和播放线程Sink调用相同的I/O处理函数,I/O处理函数如下所示:
static Void doStreaming(SIO_Handle input, SIO_Handle output, Uns nloops)
{
Ptr buf;
Int i, nbytes;
if ( SIO_staticbuf(input, &buf) == 0) {
SYS_abort("Error reading buffer");}
while(1) {
if ((nbytes = SIO_get(input, &buf)) < 0) {
SYS_abort("Error reading buffer %d", i);
}
if (SIO_put(output, &buf, nbytes) < 0) {
SYS_abort("Error writing buffer %d", i);
}
}
}
虽然两个线程调用了相同的I/O处理函数,但是由于对应不同的输入/输出流,因此在多任务操作中 ,不会出现冲突。
● 建立中断服务程序
使用HWI硬件中断服务管理器HWI配置相应的中断服务程序ISR。当接收发生中断时,ISR将接收的数据放入缓冲区,当接收缓冲区满时,通知设备驱动程序DAX,将缓冲区的数据发送到inSample流中,供上层任务处理。
结语
本文针对传统模拟语音教学系统的弊端提出了数字语音教学系统,并设计实现。该系统平台主要为数字语音教室的随意分组讨论、点名、选择题问答、播放备课文件、回放等一系列功能提供了实现基础。同时通过共享多种媒体,如声音、音乐、文字、图象等,减少时间浪费,使教学高效、生动,从而激发学生的学习积极性和想象力,有很好的开发应用价值。