基于SDA80D51的以太电话机的设计

2007-03-09 19:03:27来源: 互联网
作者Email: hongxinglu600010@sina.com 一、引言 随着互联网技术的不断发展,VoIP(Voice over IP)技术已经成为语音通信技术领域的一个强有力的竞争者。VoIP是利用网络作为传输载体实现语音通信的技术,以太电话机则是以VoIP为基础实现的语音通信终端。在未来的几年内,IP电话必将在电信市场占到举足轻重的地位,对以太电话机的研究是符合市场需求并具有巨大的市场潜力和发展前景。以太电话机价格相对昂贵和话音质量方面的问题是目前开发工作的重点。本设计是基于德国Infineon公司的SDA80D51芯片实现的,因为芯片的选择和设计上的巧妙,使该话机具有集成度高、结构简单、成本低等特点,具有较高推广价值。 二、硬件设计 话机采用SDA80D51芯片和以太网接口芯片RTL8019AS实现。由于采用了高集成的SDA80D51芯片,使系统硬件电路结构简单,整体硬件成本低廉、集成度较高。 1、SDA80D5l 英飞凌公司生产的SDA80D51芯片是一种具有特殊结构的微处理器,是将16位DSP和增强型微处理器(8051微处理器的扩展版本)高度集成,并同时集成有模/数转换单元(ADC与DAC),面向语音处理的专用芯片。芯片同时提供有一个内存控制单元MMU和片上104kb的RAM。它具有程序和数据分开的总线结构,流水线操作功能,单周期硬件乘法器和适合数字信号处理的高效指令集。此芯片的C编译能力很强,汇编出的目标代码效率会更高。正是此芯片高度集成后具备的强大功能和其相对低廉的价格,使其成为设计此系统的首选。 SDA80D51的基本结构如图1所示,由其组成单元来看,实现三种主要功能,即语音压缩(DSP)、系统管理及信令控制(8051微处理器)、语音编码(CODEC)。语音信号在芯片集成的语音采样接口模块进行A/D和D/A转换,语音的压缩处理则由DSP模块进行,但传输的语音数据打包是由这个C51模块完成的。编解码压缩处理后由控制模块进行对语音的接收发送控制,同时主控模块还要完成对整个系统控制工作。 图1 SDA80D51工作原理示意图 2、网络接口控制模块 网络接口控制模块采用Realtek公司的具有高度集成化的以太网控制芯片RTL8019AS。这一芯片具有很多优点,已广为采用。它与NE2000兼容,支持8位、16位数据总线;全双工,收发可同时达到10Mbps,有睡眠模式,可有效地降低功耗;内置16kb的SRAM用于收发缓冲,可减轻主处理器在速度上的压力;可选择连接同轴电缆和双绞线,并可自动检测所连接的介质。 系统使用RTL8019AS来实现以太网媒介访问层(MAC)和物理层(PHY)的功能,包括MAC数据帧的收发,地址识别,CRC编码校验,超时重传,链路完整性测试,信号极性检测纠正等。主处理器在RTL8019AS的外部总线上读写MAC帧。其中,接收控制器用于将接收的串行数据拼成字节送到CRC校验单元,发送控制器则是将送来的字节送到CRC编码单元并逐个按位移出;CRC逻辑在接收时对输人的数据进行CRC校验,发送时对帧数据产生CRC校验序列,并附加在数据尾传递;地址识别逻辑对接收帧的目的地址与预先设置的本地物理地址进行比较,如不符合要求则拒收。RTL8019AS还使用内部存储缓冲器对与核心控制单元数据交换进行缓冲,以优化系统的数据传输速度。 3、其它电路设计 考虑到协议代码的存储需求,使用一块FLASH作为扩展存储单元存放代码,同时还设计了拨号键盘到核心控制单元的控制电路。硬件的设计还可以根据不同的需求,进行相应的调整,以实现其它的增值业务功能。 三、软件设计 系统的软件是基于SDA80D51设计开发的。话机软件结构框图2如下: 图2 以太电话机软件框图 系统软件开发以C51的C语言编程为主,对占用系统资源比较大的部分使用汇编语言来完成。程序开发主要完成网络接口控制、TCP/IP协议栈、RTP/RTCP、H.323协议栈、语音编解码和主控程序这6部分。 1、TCP/IP协议栈的实现 通常编程环境中,TCP/IP协议栈的功能是基于操作系统中相应的socket机制实现的,像以太话机这种嵌入式系统,考虑到操作系统占用资源太大,一般不采用任何操作系统。这样,只能由用户编程来完成任务调度、存储器管理和TCP/IP协议栈等功能。 在协议栈开发时,充分考虑了资源有限,在保证实现以太电话正常工作的前提下,从两个方面进行了TCP/IP协议栈的优化,从而使开发得到的协议栈程序代码最少,RAM的需求最低。 (1)、协议栈本身的优化 根据系统的实际需求,只实现TCP/IP协议栈的部分协议,即:ARP(地址解析协议)、IP(互联网协议)、ICMP(互联网控制报文协议)、UDP(用户数据报协议)、TCP(传输控制协议)等5部分。协议栈的编程采用事件驱动机制,采用ARP完成对电话的寻址,通过对相应的应用程序的调用来实现事件响应(如图3所示)。 图3 TCP/IP协议栈实现过程示意图 (2)、协议功能的优化 在对协议栈优化的过程中,结合系统的使用要求,还针对每个协议的一些不必要的功能进行了简化。例如,对于TCP协议,标准的TCP协议使用慢启动的滑动窗口机制。在实现TCP协议时,考虑到系统所需传送的信令数据很少,基本不可能产生拥塞,同时为了减少存储器的使用,TCP只使用单个窗口,就变成了一种简单确认的处理方法。所有的处理只是对单个数据报的发送和确认,节约了系统的资源,也使维护更加方便。同时考虑到,话机系统的突发事件很少,这样对于流量控制可以不做考虑。对于差错控制,程序处理过程中只对信令数据设置重传机制,而语音数据处理不考虑重传。 (3)、存储空间的共享 协议开发中,为了尽量减少对存储空间的需求,设计使用共用缓存区用于输人输出数据的存放。其中RBuff用于存放网络接口收到的数据,SBuff用于存放要发送的数据。这样各程序之间只提供相互要处理数据所在的指针,就可以完成数据的传递,从而节约了大量的存储空间,同时也利于工程研发人员之间的相互协调。 2、H.323协议的信令过程 信令控制过程是H.323以太话机控制的核心内容之一,整个H.323终端系统的信令控制是由H.245、H.225.0和RAS这3个协议来实现的。在两个话机间建立基于H.323的呼叫连接,需要使用TCP建立两个连接。其中第一个TCP的连接承载的是H.225.0中定义的呼叫建立消息,通常叫做Q.931通道或呼叫信令通道。第二个TCP连接承载H.245呼叫控制消息,在收到呼入的同时,被呼叫方也在一个动态端口上监听TCP的连接。被呼叫方于是在这个端口上应答呼叫接收信息。然后,呼叫方会随后在这个端口上建立第二个TCP连接。一旦H.245通道建立成功,第一个连接就不再需要了,任何一端都可以将其关闭。终端使用H.245通道交换音频信息格式,即能力交换,并确定主从关系。同时通过它打开音频的逻辑信道,从而建立用于媒体流传输的RTP会话。H.245通道在会话过程一直保留,因为它还要关闭媒体通道。 一个话机到话机的基于H.323协议的简单呼叫建立过程有5个阶段(如图4所示),即呼叫初始化、建立控制通道、呼叫开始、通话和结束呼叫。 图4 呼叫建立过程示意图 在设计中,考虑到系统不同于IP电话网关系统,只需实现单路连接,同时考虑到系统资源有限的特点,对H.323协议栈的实现进行了很大程度的简化。其中H.225只实现四个,即SETUP、ALERTING、CONNECT、RELEASE COMPLETE;RAS实现基本的6个功能,也就是网守发现、端点登记、端点定位、呼叫接纳、呼叫退出和状态查询;建立H.245通道只保留了能力交换、主从确定、开闭逻辑信道和终止会话消息。在实现上述3个协议的过程中,对于它们每个消息中的可选项参数,在编码时尽量简化,解码时保留。通过采用上述的措施优化H.323信令过程,尽可能的减少了代码量和存储器空间,同时又保证了与其它产品的兼容性。 3、以太话机中语音的处理过程 以太电话机进行语音传输,要完成以下几个过程:模拟语音首先经CODEC编码为64K的PCM码,经压缩形成语音数据;语音数据再由RTP封装后再交由UDP进行封装;携带语音数据的UDP数据报在IP层被封装为IP包;最后IP包通过以太网接口程序形成以太帧发送至以太网上传送;携带语音数据的以太网帧在目的话机被以太网卡接收并拆包恢复为语音数据,其处理是语音发送的逆过程,语音数据解码为模拟语音送至话筒。 4、系统性能优化 嵌入式系统在开发中的优化十分重要。根据处理器的性能,尽可能地提高代码运行速度,减少代码和数据存储空间,这是系统优化所要解决的基本问题。虽然C编译器提供了一定的代码优化,但编译器的优化仅涉及执行速度和代码大小的平衡,不能使程序达到小而精,因而必须在开发程序时采取一定的优化方案。系统调试中,在确保系统稳定工作的基础上,采取了以下的措施进行系统优化。 对于代码优化主要采取以下措施: (1)、根据发生频率对条件跳转语句排序,提高代码运行速率。 例如switch-case、if这类语句,程序中使用了很多,而每一个由机器语言实现的测试和跳转仅是为了决定下一步要做什么,这样就浪费了处理的时间。优化时对具体情况按照发生的相对频率排序,即把最常发生的情况放在第一位,最不可能发生的情况放在最后,这样会减少平均的代码执行时间,从而有效的提高程序的运行速度。 (2)、尽量使用全局变量,减少函数调用参数。 这样比向函数传递参数效率更高,去除了函数调用前参数入栈和函数完成后参数出栈。 (3)、努力减小代码的大小。 尽量避免使用标准库例程,很多大的库例程没法处理所有可能的情况,会占用庞大的内存空间,因而应尽可能地减少使用标准库例程。 对于存储区优化问题,是使用了下面一些方法进行的: (1)、使用前述协议栈开发提到的共用缓冲区的方法。 由于基于协议的数据封装的特点,在对共用缓存区的数据进行处理时,只需在程序中使用地址指针进行调用,这样在保证系统正常工作的前提下,大幅度减少了对数据存储空间的需求。同时,使用指针代替数组索引还能使代码运行速度加快。 (2)、编程时将一些固定的数据定义为代码类型,同样可以有效的减少存储区的使用量。 优化过程中,还考虑到代码优化与存储区占用量的相互影响,以及程序可读性等问题。综合考虑以上因素后,通过以上的措施以及对协议实现的具体优化,得到了优化的以太电话系统。在优化前的程序,数据段需要至少150K字节;优化后的系统中,数据段不到70K。同时,系统的响应速度也得到较大提高。由此可以看出,对程序的合理优化,对提高程序运行的稳定性和系统处理速度,都可以起到至关重要的作用。 四、结束语 嵌入式以太网技术作为嵌入式系统发展的热点之一,越来越多的解决方案在不断的被提出和验证。本文提出的设计是在现有的以太网嵌入式系统基础上,使用SDA80D51芯片,实现较高性价比的以太网电话机。由于该芯片的集成度很高,设计电路时就省去了许多的相关模块,使得设计得到的硬件简单,便于调试检测。同时通过对协议栈等的优化,使系统达到了预期的低成本,高可靠性等特点。该设计得到的样机,工作稳定、可扩展性强,在以太网环境的语音传输完全可以达到预期目标,整个设计方案和实现方法是可行的。
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/network/200703/10000.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved