IP电话的VoIP语音网关设计( 二 )



;②实现复杂的系统功能 。采用32位ARM核作为控制治理中心,能稳定的运行嵌入式实时操作系统,能支持各种网络协议栈如TCP/IP,使语音数据能够在网络中有效地传输 。
(2)存储器
系统包括1片8MB的Flash,用于存储嵌入式实时操作系统内核和应用程序代码的压缩文件,还有1片512KB的SDRAM 。系统启动时,ARM核将Flash中的压缩文件调入SDRAM进行解压,然后执行 。
(3)音频解码器
编解码器芯片负责对DSP解压缩后送来的PCM数据进行解码,并将滤波后的模拟语音信号送给用户端;同时,编解码器芯片还负责将模拟语音信号进行PCM编码,然后送到DSP芯片进行压缩处理 。在设计中,编解码器芯片采用IDT公司的4通道PCM编解码芯片IDT821034 。该芯片具有可编程增益设置、主时钟频率为2.048MHz,最大支持128个可编程时隙、A律/μ律可选、内置数字滤波器、串行控制接口和低功耗等特点 。
(4)以太网控制器
采用由Realtek公司生产的以太网芯片,它具有10/100M自适应收发功能,支持全双工操作,符合802.3协议 。由它负责处理有关以太网数据帧的发送和接收,包括曼彻斯特编码、冲突检测、帧头的产生和检测、CRC校验码的生成和验证以及数据重发等 。
(5)其他外围
系统中还包括LCD液晶显示、键盘、AC—DC电源等模块 。
2.2软件实现
图4是软件系统的总体设计和层次及模块划分的框图 。下面对各个层次和模块进行介绍 。
点击查看大图
2.2.1嵌入式操作系统和驱动程序的设计
嵌入式操作系统采用μClinux,包含File模块、GUI模块和NET模块等 。μClinux是针对无内存治理单元处理器定制的Linux操作系统,具有源代码公开、内核可裁剪和易于移植等特点 。本系统用C语言进行开发,μClinux强大的应用程序库μCLibc对应用软件层的开发提供了支持,节省了系统开发的时间 。File模块是文件系统模块 。GUI模块是一个图形治理模块,支持LCD和触摸屏,用于开发人机界面 。NET模块即网络模块,实现了TCP/IP协议栈,用于提供网络语音通信的功能 。
根据硬件平台的要求,还需要开发适应硬件平台的驱动程序,包括BSP板级包,串口驱动程序和以太网口驱动程序 。BSP板级包贯穿着硬件级、操作系统级和应用程序级多层,与μClinux一起为应用程序提供服务 。BSP板级包的编写是实现μClinux系统移植的要害 。在BSP板级包上开发和完成硬件初始化,中断的处理和产生,硬件时钟治理,本地和总线的内存映射等功能 。在串口驱动设计中,实现了单字符发送、字符串发送、单字符读取等基本功能,达到通过串口收发字符串的目的 。网口驱动相对简单,实现了芯片初始化、网络包发送、网络包接收和芯片复位等基本功能,达到通过网络口发送和接收网络数据包的目的 。
2.2.2应用软件模块
应用层的软件由系统应用层协议栈H.323和各个功能模块组成 。
系统的应用层协议栈H.323实现通过VoIP网关实时传送数据的功能 。H.323通信协议栈负责IP电话中寻找被叫方、建立应答、并且按照彼此的数据处理能力发送数据,在网络中进行实时语音传输 。应用层协议栈H.323是系统应用层软件的基础,应用层的软件模块在这个协议栈的基础上进行开发 。
应用层软件功能模块包括语音包处理模块,电话信令网关模块,路由寻址模块和网络治理模块 。
语音包处理模块主要是在数字信号处理器(DSP)芯片上运行,可实现以下的功能 。
①语音的编码及解码 。
②静音检测 。通过对无话音时的噪声进行检测,从而判定所接收的信号是否含有语音信号,假如没有检测到语音信号,将会反馈至“语音包处理器”,让它发出一个含有“静音”的信息包,从而最大限度节省通信带宽 。

推荐阅读