Home > 电话会议新闻动态 > 技术文档 > 基于双内核的嵌入式VolP电话网关设计

基于双内核的嵌入式VolP电话网关设计

2014/04/28 Tang

1引言
随着IP技术的飞速发展,VOIP电话网关(Voice和Over IP Gateway/Internet Telephone Gateway)成为及其工作方式。连接因特网和电话网的桥梁,它将网络IP网络和传统电话网(PSTN)相互连接起来,用Internet替换掉昂贵的长途电话线路来传送话音,可以组合成功能强大的新的通信网络。与PSTN采用的电路交换不同,VoIP完全建立在分组交换(packet switching)基础上,而分组交换固有的时延、丢包等弱点使VoIP的通话质量根本得不到保证。因此在VoIP电话网关的设计、建设、使用过程中,通话质量一直是人们最为关注的问题。利用嵌入式技术来保障VoIP电话质量为众多研究者和生产商所重视。本文介绍的就是一种基于ARM 9与DSP双内核、嵌入式的VolP电话网关设计方案,并结合核心芯片TMS320C5416和S3C2410详细分析了其设计流程、软硬件结构及其工作方式。

2 基于ARM 9与DSP双内核、嵌入式的VoIP电话网关硬件系统设计
按照“硬件+嵌入式操作系统+应用层软件”的系统架构设计思想,在这种VoIP网关系统硬件设计中,主芯片采用MCU+DSP双内核结构,其外围有存储器、以太网接口、音频接口和I/O扩展电路等几部分,其硬件框图如图1所示。

2.1 语音信号的采集、压缩标准及VoIP主芯片
语音信号的采集、语音信号的压缩,这里采用G.729协议标准,即共轭结构码激励线性预测编码算法(CS-ACELP)E 。其编码速率为8kb/s,可以满足网络通信的要求,具有良好的语音质量,对不同的应用环境有较强的适应性,是一种性能较好的语音压缩国际标准。

VoIP网关硬件框图

单个语音流上G.729语音压缩的计算开销非常大,要求达到20MIPS,如果要求一个中央CPU在处理多个语音流的同时,还执行路由和系统管理功能,这是不现实的,因此,使用DSP可以从中央CPU卸载其中的复杂语音压缩算法的计算机任务。本设计采TMS320C5416和S3C2410构成双内核VoIP主芯片。TMS320C5416是TI公司推出的一款高性价比的通用16位定点DSP芯片,它的内核CPU基本组成与TMS320C54X系列一样_2]。C5416的单指令周期为6.25 RS,每秒执行的指令数为160×106,指令系统丰富并具有很多多功能指令,使用了6级指令流水线结构,这些都很适合实现低时延的G.729声码器。S3C2410是三星公司生产的基于ARM920T内核的32位RISC微处理器(MCU),它最高可运行在203MHz、拥有独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM 的Timer,I/O 口,RTC,8路l0位ADC,Touch Screen接口,IIC_BUS接口,II BUS接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。这种基于ARM 9与DSP双内核的VoIP主芯片具有如下明显优势:

1)提高语音处理的实时性,避免传统单内核设计功耗太大的缺点。传统单内核设计致使MCU负担过重、实时性能受到影响,从而造成VoIP电话语音质量下降、并限制了通信话路、不能满足大量用户通信的要求。现由DSP处理器完成实时的语音信号压缩,DTMF信号的检测与产生、回波抵消等工作,既减轻了MCU 的负担,同时又提供了多个话路,使网关为多用户提供服务成为可能。

2)实现复杂的系统功能。采用32位MCU作为控制管理中心,能稳定地进行嵌入式实时操作系统,能支持各种网络协议栈,使语音数据能够在网络中有效地传输。

2.2 编解码器
IDT821034是IDT公司的4通道PCM编解码器,具有可编程增益设置、主时钟频率为IDT821034是IDT公司的4通道PCM编解码器,具有可编程增益设置、主时钟频率为2.048MHz最大支持128个可编程时隙、A律/μ律可选、内置数字滤波器、串行控制接口和低功耗等特点。利用该芯片负责对DSP解压缩后送来的PCM数据进行解码,并将滤波后的模拟语音信号送给用户端;同时,它还负责将模拟语音信号进行PCM 编码,然后送到DSP芯片进行压缩处理。

2.3 以太网控制器
本设计采用DM9000,DM9000是DAVICOM公司的10/100Mb/s自适应以太网芯片。其特点是:支持8位、16位、32位数据总线宽度;寄存器操作简单有效,有成熟的Linux驱动程序支持;3.3V接口电平;成本相当低廉;还可以使用MII接口和PHY芯片连接。DM9000还提供了介质无关的接口,以连接所有提供支持介质无关接口功能的家用电话线网络设备或其他收发器;其物理协议层接口完全支持使用10MBps下3类、4类、5类非屏蔽双绞线和100MBps下5类非屏蔽双绞线。这是完全符合IEEE 802.3u规格。它的自动协调功能将自动完成配置以最大限度地适合其线路带宽,还支持IEEE 802.3x全双工流量控制 。

2.4 ARM和DSP的通信接口设计
1)关于DSP的HPI口
HPI是TMS320C54X等芯片提供的一种并行端口,专门用于DSP和外部主机并行通信。HPI接口有标准HPI接口和增强型HPI接口。这符合C5416和C5420DSP器件的主机接口为增强型主机接口的要求。

2)HPI硬件连接及其工作方式
S3C2410与TMS320C5416连接方式如图2所示。其中,C5416具有单独的8根数据线HD0~HD7和10根控制线。系统将HPI接口所有控制寄存器HPIC、地址寄存器HPIA、数据寄存器HPID统一编址,映射到S3C2410物理地址的I/O内存空间。

$3C2410与TMS320C5416的连接

利用地址线A[4:1]产生HPI访问所需的控制信号。A1 与A2决定访问寄存器类型。A3决定访问的是第一个字节还是第二个字节:A2=0时,表示写入的数据为第一个字节;A2=1时,表示写入的数据为第二个字节。在HPI一8中所有地址线和控制线是在HDSI和HDS2的下降沿采样,而不是由HR/W 决定,因此HR/W 通过地址线表示当前操作是读还是写,而数据锁存信号由nGCS3和nRW0相与后共同产生。HINT设置为S3C2410的EINT19中断输入脚,DSP通过中断方式与底层HPI驱动程序通信。

2.5 S3C2410与DM9000的连接
实现DM9000与S3C2410连接,必须对两者间的数据、地址、控制三大总线进行连接和转换。S3C2410是32位微处理器,有32根地址线,支持4GB存储空间。其中0-40000000的1G空间被分为8块128M空间,分别由NGCSO—NGCS7片选。DM9000为16位以太网控制芯片。图3给出了S3C2410与DM9000的连接方法。

$3C241O与DM9000连接图

3 基于ARM 9与DSP双内核、嵌入式的VoIP网关的软件系统及其工作方式
考虑到使用S3C2410时,其DSP可通过中断方式与Linux底层HPI驱动程序通信,且Linux随着自身不断的改善,已能支持多种体系结构、大量外设以及其网络功能完善、开放源代码、软件资源丰富、内核稳定而高效、大小及功能均可定制等,在嵌入式领域高速发展中催生了嵌入式Linux。因此在本设计中操作系统选用了嵌入式Linux。

3.1 基于嵌入式Linux的操作系统驱动程序装载
基于嵌人式Iinux的操作系统,本设计将所用设备分为字符设备、块设备和网络设备三种,所有设备都看成普通文件,因此可以通过用操纵普通文件相同的系统调用来打开、关闭、读取和写人设备。设备程序利用结构file-operations与文件系统联系起来。在嵌入式Linux操作系统下驱动程序装载如图4所示。其中,设备驱动程序是一组相关函数的集合,它包含设备服务子程序和中断处理程序。每个设备服务子程序只处理一种设备或者紧密相关的设备,以从与设备无关的软件中接受抽象的命令并执行。具体操作是:当执行一条请求时,根据控制器驱动程序提供的接口、并利用中断机制去调用中断处理程序配合设备来完成这个请求。

Linux下驱动程序装载示意图

3.2 HPI驱动程序
HPI接口可用I/O端口方式,也可以用I/0存取方式。系统平台采用I/O存取方式,将HPI访问控制寄存器、数据寄存器、地址寄存器,映射到内存物理地址为OX30000000开始的空间,通过访问存储器指令对HPI进行操作。HPI具体物理地址定义如下:
#defineHPI_BASEOX30000000//HPI基地址
#define HPD_READ— LOWHPI—BASE+OXOO12//读数
据寄存器第一字节
#define HPA—WRITE— HIGHHPI— BASE+0X000C//写
地址寄存器第二字节在Linux下,类似Windows,程序不能直接访问物理地址。设备驱动程序是内核的一部分,它像内核中其他代码一样运行在内核模式,驱动程序如果出错就会使系统受到严重破坏,因此需要将物理地址映射到内核空间。在Linux下通过virtul—ad—dress===(u32)ioremap(HPI BASE,HPI—LENGTH)实现。驱动程序主要结构如下 :
struet file—operations hpi— fops一{
owner:THIS _MODULE,
read:hpi _read,
write:hpi_ write,
poll:hpi_ poll,
open:hpi_ open,
release:hpi_release,);
HPI通信协议采用帧结构,由于增强型HPI接VI允许访问DSP内部RAM所有空间,系统通信在DSP内部分配2K字(16位)作为帧缓冲区,读写各1K字,协议采用一位滑动窗口协议。帧格式如表1所示。

帧格式协议

3.3 应用程序设计及相关功能模块
本设计应用层的软件由系统应用层协议SIP和各个功能模块组成。系统的应用层协议SIP实现通过VoIP网关实时传送数据的功能。SIP通信协议栈负责IP电话中寻找被叫方、建立应答、并且按照彼此的数据处理能力发送数据,在网络中进行实时语音传输。应用层软件功能模块主要包括语音包处理模块,路由寻址模块和网络管理模块等。 SIP是IETF标准进程的一部分,它是一个分层结构的协议。最底层是语法和编码,它的编码使用增强Backus-Nayr形式语法(BNF)来规定;第二层是传输层,它定义了网络上一个客户机如何发送请求和接收响应以及一个服务器如何接收请求和发送响应,所有的SIP元素包含传输层内;第三层是事务层,事务是DIP的基本元素,它处理应用层重传、匹配响应到请求、以及应用层超时。事务层之上的层称为事务用户(TU)。每个SIP实体,除了无状态代理,都是事务用户。当一个TU希望发送请求,它生成一个客户机事务实例并且向它传递请求和IP地址、端口和用来发送请求的传输机制。一个TU生成客户机事务也能够删除它。当客户机取消一个事务时,它请求服务器停止进一步的处理,将状态恢复到事务初始化之前,并且生成特定的错误响应到该事务。这由取消请求完成,它构成自己的事务,但涉及要取消的事务。SIP提供它自己的可靠性机制从而独立于分组层,并且只需不可靠的数据包服务即可。

语音处理模块主要是在数字信号处理器(DSP)芯片上以G.729协议标准进行语音处理。主要包括四个过程:首先对输入的语音数据进行抗叠滤波、模数转换,再经DSP采集并存人RAM存储器中,即语音存储过程;接着运行编码程序,将前面存储的信息进行压缩并存储,这是编码过程;然后进行解码,并将数据存回原来的位置;最后DSP执行输出指令,将解码后的数据送到数模转换器中,实现模拟输出,这是语音回放过程。路由寻址模块主要完成路由寻址及路由管理的功能。它将各个地区的电话区号映射为相应网关的IP地址,存放在数据库中,当用户拨打电话时,网关根据电话区号的数据库资料,确立相应网关的IP地址,并将此IP地址加入到IP数据包中,同时选择出最佳的路由以减少传输延迟,把IP数据包经过Internet传送到目的网关。网络管理模块(SNMP/WEB/CLI)提供一个语音管理的接口,实现对VoIP语音网关的配置和维护。网络管理信息是基于国际标准.ASN.1和SNMP(简单网络管理协议)的要求建立的,可以针对不同系统开发了三种模式管理:基于WEB的管理、基于SNMP(简单网络管理协议)的管理和基于命令行的管理。这使用户对VoIP语音网关的配置和维护更加简单和有效。

4 结语
基于双内核、嵌入式的VolP电话网关设计,不仅实现提高语音处理的实时性,避免传统单内核设计功耗太大的缺点,而且又提供了多个话路,降低了功耗,使网关为多用户提供服务成为可能。同时采用32位MCU作为控制管理中心,能稳定地进行嵌入式实时操作系统,能支持各种网络协议栈,使语音数据能够在网络中有效地传输。随着以太网的发展和嵌入式系统设计被人们越来越广泛的关注,这种设计方式将会在VoIP领域及工业控制领域得到越来越广泛的应用。

VOIP网关

如没特殊注明,文章均为好会通科技原创,转载请注明来自 http://www.meeteasy.com.cn/archives/2802.htm.

copyright 2004-2013     粤ICP备12061155号-1

Sitemap|XML|RSS|隐私政策|EN|