APP下载

基于BF531的VoIP终端的设计与实现

2012-10-26郭星海军701工厂北京100015

中国科技信息 2012年5期
关键词:信令线程数据包

郭星 海军701工厂,北京 100015

基于BF531的VoIP终端的设计与实现

郭星 海军701工厂,北京 100015

本文介绍了VoIP原理和关键技术,分析了SIP协议的呼叫流程,提出基于BF531的VoIP终端的设计方案,实现了一款支持通话、短信、通信录等多种功能的终端。

VoIP;BF531;会话初始化协议;Qt/E

引言

VoIP即Voice Over IP,通过对语音进行数字化编码压缩成帧并封装成IP包在Internet上传输,数据到达目的地后进行解压、数模转换还原语音,是一种利用Internet技术进行语音通信的新业务。由于VoIP技术促进了网络资源利用,降低语音业务成本,因此在全球范围内得到了迅速的发展,可以说是当前世界上发展最快,普及最广的应用服务技术之一。鉴于VoIP在网络和通信领域所占的重要地位以及表现出来的广阔前景,本文提出一种在技术上可行的设计方案,即在高性能低功耗的BF531处理器平台上实现VoIP终端。

1 VoIP原理及关键技术

1.1 VoIP原理

VoIP原理:运用语音压缩算法对语音数据进行压缩编码,然后把语音数据按有关协议进行打包,经由IP网络把数据包发送到接收地,接着再把语音数据包串起来,经过解码解压缩处理后,就可以恢复成原来的语音信号了,从而实现互联网传送语音的目的。

1.2 VoIP关键技术

VoIP完全建立在IP网络基础上,关键技术包含信令、编码、实时传输等。

1.2.1 信令

保障电话呼叫的实现和话音质量好坏的前提就是信令,VoIP主要信令包括ITU-T的H.323和会话初始化协议SIP。

1.2.2 语音编码

由于现代信息技术的不断发展,尤其是互联网和无线通信的蓬勃发展,作为多媒体通信中信息传输重要环节的语音,也越来越受到重视,对语音编码要求也就越来越高,在要求低延时、低码率的同时还要保证语音的高质量。语音压缩编码的目标就是要在尽可能低的比特率下,最大化的提取语音信号的特征信息,并且在接收端还原出清晰自然的声音。

1.2.3 实时传输

VoIP电话是一种语音通信,需要对音频数据进行实时传输。其中主要涉及到RTP协议和RTCP协议。

(1)RTP协议

RTP是一种应用型的传输层协议,为应用提供端到端的实时网络传输。RTP需要与底层网络协议相配合才可以实现传输数据的任务。由于语音传输对实时性要求较高,所以一般采用UDP来完成数据传输。

(2)RTCP协议

舰艇、飞行器和车辆对于核动力装置的空间要求远高于核能发电厂,而传统核聚变反应堆体积、重量很大,远超这些运输工具的体积和重量限制,难以做成适配于这些需求的移动式能量供应源。洛马公司称该堆的体积仅为同功率传统托卡马克装置的1/10,一座直径7米、长18米的该型反应堆就可实现200兆瓦的热功率输出,运行一年所需的燃料量仅为25千克,可以在线补充燃料,无需像裂变堆那样定期停堆更换燃料棒,可连续运行,大幅提升续航能力,而且设计与建造周期也只有数月,成本远低于大型聚变装置。

RTCP是配合RTP的一种实时传输控制协议。它自己没有QoS保证功能,但是能通过阶段性的向会话参与者传送控制分组数据,并以此来提供网络状况的有关参数。

1.3 SIP协议

1.3.1 SIP简介

S I P是2001年推出的I E T F标准(RFC3261),用于在IP网络上建立、改变和终结多媒体会话,是基于应用层的控制协议。同时SIP可以邀请第三方加入会话,也支持重定向服务和名字映射。

1.3.2 SIP呼叫流程

SIP是通过用户代理之间的交互消息来建立呼叫的,它继承了Internet中客户机/服务器的模式,即主叫代理充当UAC,被叫代理充当UAS。SIP大致有三种呼叫模式:a.UAC向UAS直接呼叫,b.UAC在重定向服务器的配合下进行重定向的呼叫,c.代理服务器代表UAC向被叫方发起呼叫。下面我们以直接呼叫为例(如图1)说明呼叫过程的建立。

图1 直接呼叫流程

2 VoIP终端设计实现

2.1 VoIP终端组成框图

图2 VoIP终端组成框图

2.2 硬件设计

硬件采用模块化设计,包括IP电话处理器、电源管理模块、语音处理模块、网络接口模块、存储器、键盘和LCD7部分。其中IP电话处理芯片采用BF531,语音芯片采用UDA1341。

2.3 软件设计

终端软件分驱动层、中间层和应用层三层设计,其中应用层软件采用Qt/E开发,移植开源软件linphone的库文件,采用多线程设计思想,将整个应用程序划分为四部分,分别由四个线程来实现。

UI线程主要用来响应用户的键盘输入和屏幕的显示及传递消息到协议栈。通过在main.cpp程序中创建QApplication类型的对象实现。QApplication类负责图形界面应用程序的控制流以及主要设置管理,包括主事件的循环、应用程序的初始化和结束及对话管理。

Codec语音线程主要完成语音处理,包括本地语音采集与编码工作,网络语音数据解码、混音及播放等。

SIP信令交互线程调用linphone所依赖的eXoSIP和oSIP库,使用UDP实现底层SIP接收/发送,并且封装了SIP消息解析器。利用系统初始化时创建的eXosip_execute线程不断查询是否有数据需要处理。当它发现状态机中有需要处理的数据时,它会调用在系统初始化时eXosip_set_callbacks 注册的事件处理函数。利用函数eXosip_listen_ addr监听端口,等待连接。如果有数据,立即接收并解析数据,放到事件队列中。

RTP/RTCP收发线程调用linphone所依赖的oRTP库,用Socket套接字实现RTP/RTCP数据包收发工作。RTP负责传送语音数据,RTCP对数据分发质量等信息进行反馈。其中初始化函数:rtp_session_ init,它执行rtp会话的一些必要的初始话工作。发送函数:rtp_ session _send_with_ ts,发送rtp数据包,session是rtp会话结构体,返回值是成功发送到网络中字节数。接收函数:rtp_ session _recv _with_ ts,接收rtp数据包。

3 VoIP终端功能验证

首先向SIP服务器注册主叫方和被叫方的SIP地址,分别为100200@192.168.1.231和100300@192.168.1.23,然后进行了通话测试,并进行了语音时延测量。通过测试发现VoIP终端能够实现语音通话,语音清晰流畅,没有出现明显的时延和回音,达到预期效果,已在实际中应用。

4 结论

本文在深入分析VoIP原理和SIP机制的基础上,提出基于BF531处理器的设计方案,利用Qt/E开发出一款支持通话、短信、通讯录等多种功能的终端。通过测试结果分析,设计的终端达到了预期的目标,验证了本文提出的设计方案的可行性。

[1]徐炽,张闻芳.基于SIP协议的VOIP系统设计与实现[J].科学技术与工程,2008.8(10)

[2]倪继利.Qt及Linux操作系统窗口设计[M].电子工业出版社,2006.P212~248

[3]陈峰.Blackfin系列DSP原理与系统设计[M].电子工业出版社,2010.P295~302

[4]陶慧明.基于SIP的嵌入式VoIP终端的设计与实现[学位论文].华中科技大学,2008

[5]刁扣锁.短信息在嵌入式Linux系统中的设计与实现[学位论文].东南大学,2005

郭星,海军701工厂,工程师,主要研究方向是嵌入式开发。

10.3969/j.issn.1001-8972.2012.05.024

展开全文▼
展开全文▼

猜你喜欢

信令线程数据包
二维隐蔽时间信道构建的研究*
基于C#线程实验探究
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于国产化环境的线程池模型研究与实现
SLS字段在七号信令中的运用
线程池调度对服务器性能影响的研究*
移动信令在交通大数据分析中的应用探索
C#串口高效可靠的接收方案设计
基于信令分析的TD-LTE无线网络应用研究
LTE网络信令采集数据的分析及探讨