DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1291|回复: 0
打印 上一主题 下一主题

[待整理] 基于Internet的IP电话设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 12:56:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  IP电话的发展已经历了三代。第三代IP电话是Internet普及的产物,目前,以太网接口直接入户已经越来越普遍,有必要开发一种带有RJ-45以太网接口、直接连入Internet、使用更加方便的IP电话。用户在打电话时,可以直接拨叫远端的电话号码,通过网闸把所拨的电话号码转换成远端IP电话的IP地址,从而建立起通话连接。与第二代IP电话终端不同的是,第三代IP电话终端直接把输入语音信号数字化,并按照一定的语音压缩编码标准算法(如G.728,G.729等)完成对输入语音信号的实时压缩,使带宽从64kbps降低到8kbps甚至8kbps以下,大大提高了信道的利用率,IP电话终端遵循SIP(或者H.323)协议。第三代IP电话系统通过网关,可实现IP电话和普通电话的互通。

  系统介绍

  整体概述

  IP电话系统有4个基本组件:网络电话机(IP Phone),网关(Gateway),多点控制单元MCU(Multipoint Control Unit)和网闸(Gatekeeper)。

  (1)网络电话机:是一个IP电话客户终端,多以硬件形式出现。它可以直接连接在IP刚上,实现实时的语音或多媒体通信。

  (2)网关:是通过IP网络提供PHONE-TO-PHONE语音通信的关键设备,是IP网络和PSTN/ISDN/PBX网络接口设备。

  (3)网闸:又称网守或关守,用来提供对整个电话系统端点和呼叫的管理功能。主要功能包括地址翻译、呼叫接纳控制、呼叫管理、呼叫权限。在H.323建议中,网闸是一个可选部分,但是对于实际运行的局域网IP电话系统来说,网闸是个重要部件。在本系统中,网闸设立在IP地址的一个终端上。网闸对所有终端用户的姓名和IP地址进行统一登记和管理,并预先给每个终端用户分配一个类似电话分机的虚拟电话号码,以便其他终端用户进行呼叫。主叫用户无需知道被叫用户终端的IP地址,只需输人其对应的虚拟电话号码或真实姓名即可。

  (4)多点控制单位:它的功能在于利用IP网络实现多点通信。使得IP电话能够支持诸如网络会议这样一对多的通信应用。 单机的软硬件设计

  单机框图

  本文选择了ARM9和μC/OS-II搭建的平台来制作网络电话单机部分。其单机的基本框图如图1所示。

  单机硬件功能模块

  1.CPU内核模块:其主要功能是搭建一个带CPU及存储器的工作核心。处理器采用三星的S3C2410(ARM920T),Flash采用的是SST公司的SST39VF160,SDRAM采用Hynix公司的HY57V641620HG。

  2.以太网接口:帮助CPU完成TCP/IP数据包的接收和发送。这里采用的是RTL8019AS。RTL8019AS是一种全双工即插即用的以太网控制器,它兼容RTL8019控制软件和NE2000的8bit或16bit传输,支持UTP、AUI、BNC和PNP自动检测模式,支持外接闪存读写操作,支持I/O口地址的完全解码,具有LED指示功能。其接口符合Ethernet2和E802.3、10Base5、10Base2、10BaseT标准。

  3.显示模块:采用一块普通数显LCD,主要用来完成电话号码及一些本机工作状态的显示。

  4.键盘模块和EEPROM:主要提供网络电话机的拨号键盘,完成拨号和电话机的功能设置。EEPROM主要完成参数的设置。

  5.语音模块:采用UDA1341TS音频编解码器。

  6.上位机接口:完成一些参数的设定和一些已经被记录的参数的读取。

  系统的软件设计

  软件设计是基于μC/OS-II的,软件方面的工作主要集中在驱动程序的编写、任务的划分、任务的编写等。由于μC/OS-II不提供API接口库或者需要额外购买,那么在需要设计的网络电话机中,主要写的驱动库有:TCP/IP、液晶驱动、EEPROM驱动、键盘驱动、I/O驱动和USB驱动。这些驱动的编写有固定的模式和套路。这里不多做介绍。

  任务的划分和优先级的安排如图2所示。从图2可以看出共分8个任务、3个任务链,其中待机任务链的优先级最高。8个任务分别是:监听来电、监听服务器、监视本机工作状态和设置、返回握手信号、接听电话、获取对方IP、按IP与对方取得握手等。


  IP电话软件结构

  IP电话软件集成了完成语音通话所需的所有功能。该软件按功能可以划分为4部分。

  1、呼叫处理模块:主要完成呼叫的建立与拆除功能。呼叫控制采用SIP协议建立会话。呼叫建立过程如下:一个SIP终端首先向本地的代理服务器发出呼叫请求:本地的代理服务器通过查询本地的重定向服务器找到下一个代理服务器的地址,并向其转发呼叫请求:下一个代理服务器收到呼叫请求后,通过定向服务器找到被叫所在网络的代理服务器,然后向该代理服务器转发呼叫请求:被叫所在网络的代理服务器确定被叫终端,并向被叫终端转发呼叫请求:被叫终端应答,从而实现连接。

  2、语音编/解码模块:语音采集得到的PCM编码数据虽然能够提供相当好的长途通信语音质量,但是其速率过高,占用网络带宽资源过多。为此需要对语音数据进一步压缩,以降低语音编码的速率。相应地,在接收端也需要同样的解压算法来恢复成原始语音数据。这部分代码编制时主要采用比较成熟的语音编解码算法,并进行一定的改进,以提高语音通话质量。

  3、数据封包/拆包模块:此部分代码对压缩编码后的语音数据进行打包,添加包头、时标和其他信息后形成语音包。在接收时,要进行相应的拆包,提取语音压缩包。

  4、数据传输模块:该模块主要完成语音包的发送和接收。把音频数据实时地传输给对方是保证实时语音通信的关键。所以在考虑可靠性和实时性方面更注重速度和实时性。这里采用UDP协议。

  结语

  本文介绍的系统利用现有的计算机网络资源组成电话通信系统,无需铺设电话线路和电话通信网络设备,节省了大量建设电话网络的设备费、线路费和工程费等费用,可取得显著的经济效益。在不需要铺设电话线路的情况下,方便地实现电话通信,增加电话用户,缩短安装工程周期。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-1-12 07:00 , 耗时 0.105204 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表