微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Blackfin 533的SIP网络电话

基于Blackfin 533的SIP网络电话

时间:09-22 来源:3721RD 点击:

引 言

近年来,Internet得到了飞速发展与普及,而作为其核心技术的IP协议体系在数据网络架构中的统治地位已得到了广泛认同。另外,随着IP技术框架中汇聚网络研究的发展和VoIP(Voice over Internet Protoc01)技术的提出,数据网络通信已经融入传统的话音业务领域,而且VoIP与生俱来的Internet血统使得其在应用方面有着很强的拓展性,因此,VoIP技术和应用的研究成为了当今的热点问题。各大芯片厂商相继推出了VoIP方案,比如ADI公司的Blackfin系列等。协议方面的研究也取得了丰硕的成果,其中SIP(Session Initiation Protoc01)协议凭借相对简单的实现模式和极强的扩展性受到了越来越多的关注。ADI公司推出的Blackfin处理器是一类专为满足当今嵌入式音频、视频和通信应用的计算要求和功耗约束条件而设计的新型16/32位嵌入式处理器。该处理器基于ADI和Intel公司联合开发的微信号架构(MSA),拥有类RISC型指令集、双16位乘法器、双40位逻辑运算单元(ALU)、40位桶形移位器和4个视频运算单元(videoALUs),将信号处理功能和通用型微控制器所具有的易用性组合在了一起。这种处理特征的组合使得Blackfin处理器能够在信号处理和控制处理应用中均有较好的表现;与此同时,该能力也简化了硬件和软件方面的设计。SIP类似于HTTP协议,也是一个基于文本的协议,因而易于读取和调试。与此同时,SIP协议在制订时就考虑到了扩充性的问题,通过增加新的消息类型、消息头和消息体即可实现新服务。即使不能支持基于SIP的旧设备也不会妨碍这些新服务。另外,SIP的一个重要特点是,它不定义要建立的会话的类型,而只定义应该如何管理会话。有了这种灵活性,也就意味着SIP可以用于众多应用和服务中。本文介绍了一种基于Blackfin处理器平台的网络电话方案。考虑未来应用的拓展需要和网络电话的特点,选择了Blackfin 533处理器和基于SIP的VoIP协议栈,实现了一系列的通话功能。

1 系统方案

鉴于Linux强大的网络功能,结合Blackfin的硬件特点,采用μClinux作为操作系统;同时面向控制的操作系统、图形化的人机界面以及复杂的网络协议栈,增加了对MCU的要求,语音处理又需要高效的DSP算法,因此选用Blackfin 533作为核心处理器。系统框图如图1所示。

\

外围硬件主要有ADl836、DM9000、LCD显示屏和5×5键盘输入设备。

软件方面采用分层设计:

① 底层是驱动层。完成硬件的配置和相关操作,并为上层提供硬件访问接口。

② 中间层是应用程序库。完成上层应用所需的各种基本操作,并为上层提供丰富的API接口。SIP/SDPRTP/RTCP结合TCP/IP完成SIP信令交互、会话管理,以及控制实时语音数据的传输;Codec完成语音编解码工作,目前支持PCMU、PCMA、GSM、Speex编码;GUI库提供具体的图形显示功能。

③ 上层是应用层。利用底层和中间层提供的接口,构建出话机终端具体应用。终端支持P2P和Proxy两种通信模式,可以实现接听、挂机、呼叫保持/恢复、呼叫转接、电话会议、音量调节、自动注册等功能。

2 硬件方案

Blackfin 533为核心处理器芯片。外围辅以ADl836实现语音信号的采集和播放;DM9000实现网络数据包的收发;TFT LCD显示屏和键盘实现图形界面显示以及人机交互。硬件框图如图2所示。

\

3 软件方案

在详细分析功能需求的基础上,采用并行的程序设计思想,将整个应用划分为4部分,分别由4个线程来完成,如图3所示。

\

① UI(User Interface)控制线程。负责响应用户的键盘输入和屏幕显示的刷新以及传递消息给协议栈。

② Codec语音 线程。完成语音数据的处理,主要包括:本地语音的采集和编码,网络语音数据的解码、混音和播放等。

③ SIP信令交互线程。使用Socket套接字实现SIP数据报收发,并将解析后的消息提供给用户或直接作出相应的反应。

④ RTP/RTCP收发线程。使用Socket套接字完成RTP/RTCP数据包收发。RTP传送语音数据,RTCP可以提供数据分发、质量反馈等相关信息。

在整个应用初始化时,会建立Sound Device Port和Conference Bridge两个数据结构。前者代表本地的声音设备,后者控制着媒体数据在不同Port之间的传送。Port结构体代表着会话参与者,比如sound Device Port代表本地用户,Media Stream Port代表远端参与者。当UI控制线程探测到有外拨电话时,它会传递一个消息给SIP信令交互线程。随后一个Media Transpor实体被创建出来(媒体流传输使用的是UDP)。该实体中的地址和端口号信息将被添加到本地SDP结构中,用于Invite会话的协

商过程。当用于本次

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top