基于ARM9的嵌入式网络语音通信终端

发布者:暮烟微雨最新更新时间:2015-11-12 关键字:ARM9  网络语音  通信终端 手机看文章 扫描二维码
随时随地手机看文章
传统的语音通信是以公共交换电话网(PSTN)为语音系统进行话音交流,该系统以电路交换为通信基础,信道利用率低、通信资费较高。而随着通信技术和网络的快速发展,越来越多的用户采用IP网络进行语音通信与视频通话,该通信系统采用分组交换为基础,具有灵活的业务扩展能力和低廉的话费价格。从2013年开始到如今,工信部已经发放了两批虚拟运营商牌照,此举必然会进一步推动国内市场的网络语音发展。

本文采用嵌入式处理器、以太网控制芯片、音频处理芯片设计出一款语音通信终端,该终端通过音频采集、播放语音、处理器进行数据处理,通过网卡进行数据传送与接收,从而实现终端的语音通信功能。

1 硬件电路设计

网络语音终端系统硬件由微处理器、以太网通信模块、音频处理模块、电源等模块组成。该终端系统各个模块之间进行数据交互的示意图如图1所示。

 

 

图1 系统模块数据交互图

网络语音终端启动音频模块后,从麦克风拾取语音进行A/D转换采集,把语音信号转换为数字信号,经I2S总线送给处理器处理,并通过以太网通信模块把数据发送到IP网络上;从IP网络上把数据取出,经处理器处理后,由I2S总线送给音频模块进行D/A转换,然后把语音信号送给扬声器播放语音。

系统采用S3C2440微处理器实现数据处理,利用DM9000CEP以太网控制芯片来实现与IP网交互,并且采用UDA1341TS音频芯片进行语音采集及播放。其他接口电路比较常见,这里不再赘述。

1.1 以太网通信模块

主控芯片采用三星公司的S3C2440通用32位微处理器,该处理器采用ARM920内核,具有低功耗、处理计算能力强等特点。以太网控制芯片采用DAVICOM(联杰)公司的DM9000CEP芯片。该芯片支持16位数据传输,集成10/100M自适应收发器,可以自动协调功能将自动完成配置以最大限度地适合其线路带宽,且支持IEEE802.3x全双工流量控制。

为实现DM9000CEP与S3C2440的连接,对两者间的数据、地址、控制三大总线进行连接和转换。由于S3C2440是32位微处理器,可寻址1G的地址空间,但其只有27根地址线,理论上只能寻址2的27次方(即128M)的地址范围。所以引出了8根BANK线(对应nGCS0~nGCS7),用这8根线来选通和关闭不同的存储器,实现1G地址空间的寻址。本文DM9000与S3C2440之间数据交换,是通过NGCS4线选择基址为0x2000 0000来实现的。图2给出了S3C2440与DM9000CEP的连接方法。

 

 

图2 DM9000CEP与S3C2440的接口图

1.2 音频处理模块

音频处理芯片选用Philips公司的UDA1341TS音频芯片,该芯片内部集成了立体声的ADC、DAC,可以实现模拟信号和数字信号的相互转换,并可用可编程增益控制(PGA)和自动增益控制(AGC)来对模拟信号进行控制,该芯片还提供数字信号处理功能。微处理器通过L3总线接口对音频芯片进行控制。其与处理器连接图如图3所示。

 

 

图3 UDA1341TS与S3C2440的接口图

UDA1341TS音频芯片提供一组I2S总线接口和一组L3总线接口。其中,I2S总线接口包括音频系统时钟线(SYSCLK)、位时钟输入信号线(BCK)、字选择输入线(WS)、数据输出信号线(DATAO)、数据输入信号线(DATAI)。而L3总线接口由时钟线、数据线以及模式选择线组成。S3C 2440处理器通过这两组总线接口实现与UDA1341TS芯片之间的音频数据交互及控制。

2 软件实现

网络语音终端系统软件部分主要由系统初始化、语音采集播放模块、网络通信模块等部分构成。

2.1 系统初始化

使用UDA1341TS芯片与I)M9000CEP芯片之前,需要对芯片内部的寄存器进行初始化。

DM9000CEP芯片的初始化设置工作方式:通过CMD与ADDR2引脚相连,高电平时为数据端口,低电平时为地址端口。CS与NGCS4引脚相连,选择DM9000CEP的端口基址为0x2000 0000,偏移300个单位。发送给DM9000的地址信息固定放在0x2000 0300上,把存放在该地址的数据放在0x2000 0304,采用此方式可对DM9000CEP内部的寄存器进行操作,如启动、复位、TX控制、RX控制以及MAC地址初始化等。其代码如下:

 

 

UDA1341TS芯片的初始化工作需要与L3的总线连接,该L3总线是MCU通过GPB2、GPB3、GPB4三个引脚来模拟控制,用于处理器配置UDA1341内部的寄存器。UDA1341有两种模式:地址模式和数据传输模式。地址模式表示传输的是地址信息,它的高6位永远是000101,低两位用来表明模式是状态模式、数据0模式还是数据1模式,其中状态模式主要用于配置UDA1341的各类初始状态:采用频率、ADC、DAC等;数据模式主要用于改善音频输入、输出的效果、音量大小调节等。

此外,要初始化S3C2440芯片内部的特殊寄存器,对I2S、DMA、中断相关的各个寄存器进行初始化设置,以及各个引脚功能的设置,如把GPF7引脚设置为EINT7外部中断功能引脚,当以太网网卡接收到数据,此引脚电平就会因中断跳变以使程序进入网卡中断接收处理函数。

2.2 语音采集播放模块

完成实时语音通话,UDA1341TS芯片在录音同时也必须完成放音功能。数据传输使用两个DMA通道。其录音过程为:音频芯片从麦克风中拾取声音信号进行采样、量化、编码,把采集到的数据通过I2S总线传给DMA1通道,并通过内部总线传到内存缓冲区中,之后送给处理器处理。放音:内存从处理器中获取数据,通过内部总线传给DMA2通道,之后通过I2S总线把数据传给音频芯片送给扬声器播音。通过采用DMA通道数据传输方式,处理器不需要花大量时间参与数据的传输,有充足的时间来处理其他事件。

本设计需要实现全双工语音通信功能,本终端采用双缓存的设计方法,缓存处理机制以录音为例,系统在使用缓存2来存放音频设备量化好的数据时,CPU则处理缓存1的数据,当设备填充完缓存2,则转向缓存1进行填充,此时CPU处理缓存2的数据,如此不断循环交替,其处理过程如图4所示。
 

 

图4 双缓存处理过程

其录音与播放过程都采用双缓存设计方案,以录音为例,程序流程图如图5所示。

 

 

图5 录音程序流程图

2.3 网络通信模块

处理器首先将从麦克风采样的数据信号封装成规定格式(其封装步骤如图6所示,封装到14字节以太网层),然后把封装好的数据交给DM 9000CEP驱动部分的发送函数dm_tran_packet(unsigned char*datas,intlength),通过设置TCR的发送请求位将数据发送出去,数据发送过程就是对数据打包的过程。而数据的接收是通过DM9000CEP的网络中断函数DM9000ISR()进行的,网卡每接到一个数据包将会产生一个中断,进入中断处理函数,按规定的格式从数据包中取出其语音数据,之后数据经处理器处理送到扬声器上播放外音。网络各层数据封装如图6所示。

 

 

图6 数据封装示意图

语音数据进行封装之后,不管是发送数据帧还是接收数据帧,都需要底层网卡驱动函数提供服务,本文以发送数据帧为例,简述底层网卡驱动原理,在发送数据和接收数据过程中,特别需要注意的是关闭网卡中断,以防打断数据处理过程。DM9000CEP内部有3 KB的SRAM用于发送数据缓存。在发送之前,数据是暂存在这个SRAM中的。当需要连续发送时,需要用DM9000CEP寄存器MWCMD赋予数据端口,这样就指定了SRAM中的某个地址,并且在传输完一个数据后,指针会指向SRAM中的下一个地址,从而达到连续访问数据的目的。如果在此过程中到达发送数据缓冲区末尾,指针将折回缓冲区的开头。发送数据帧的流程图如图7所示。

 

 

图7 发送数据帧流程

3 终端语音测试结果

使用ADS软件将程序编译成可执行文件,下载到语音终端A和B上。在两个终端分别接上麦克风和耳麦进行话音通信,通过实验验证了系统可以进行清晰的语音对话。另外,可将终端A的麦克风接口与函数信号发生器相接,终端B的扬声器接口与示波器相连。函数信号发生器将正弦信号送给终端A,其频率为1 kHz,幅度为100mVpp。在示波器上可以看到经放大的正弦信号,其输出信号波形如图8所示。测试结果表明,该网络语音终端系统可以应用于远程网络语音通信。

 

 

图8 终端B输出信号图

结语

本文作者利用嵌入式技术开发的网络语音终端具有可靠性高、控制界面强大以及可扩展性好的特点,使该终端可不通过计算机、直接连上网络进行数据传输,能充分利用现有网络通道实现快捷的语音通话。

关键字:ARM9  网络语音  通信终端 引用地址:基于ARM9的嵌入式网络语音通信终端

上一篇:ARM发布Cortex-A35,v8-A架构全面进军移动和嵌入式
下一篇:嵌入式Linux开发之C语言学习秘诀

推荐阅读最新更新时间:2024-05-03 00:06

[学习笔记]ARM9-mini2440之点亮第一颗LED
本文记录mini2440点亮led的操作流程; 点亮一颗led代码实现方式:汇编和C; 进行了一些功能扩展实验; 基本思路 看原理图确定控制led的引脚; 看主芯片手册确定如何控制引脚; 编写程序; 编译; 烧录bin文件; 看原理图 mini2440主芯片引脚图: led电路图: 由于只要点亮一颗led,因此选择nLED_1。由原理图可知:nLED_1接线对应主芯片的GPB5引脚,且当GPB5输出低电平时,nLED_1会被点亮。而引脚则由寄存器控制,因此只要对GPB5引脚相关寄存器进行设置即可。 看芯片手册 S3C2440端口B相关寄存器: 由上图可知,S3C2440的I/O口B相关的寄存器有: 控制
[单片机]
[学习笔记]ARM9-mini2440之点亮第一颗LED
ARM9(S3C2440)的IO口--LED流水灯
概述 S3C2440A 包含了130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口A(GPA):25 位输出端口 端口B(GPB):11 位输入/输出端口 端口C(GPC):16 位输入/输出端口 端口D(GPD):16 位输入/输出端口 端口E(GPE):16 位输入/输出端口 端口F(GPF):8 位输入/输出端口 端口G(GPG):16 位输入/输出端口 端口H(GPH):9 位输入/输出端口 端口J(GPJ):13 位输入/输出端口 每个端口都可以简单的由软件配置为各种系统配置和设计要求。你必须在开始主程序前定义使用的每个引脚的功能。如果没有使用某个引脚的复用功能,这个引脚可
[单片机]
基于ARM9的指纹识别系统的设计和实现
生物识别技术是利用人体固有的生理特性(如指纹、脸象、红膜等)和行为特征(如笔迹、声音、步态等)来进行个人身份的鉴定。   生物识别技术比传统的身份鉴定方法更具安全、保密和方便性。生物特征识别技术具有不易遗忘、防伪性能好、不易伪造或被盗、随身“携带”和随时随地可用等优点。   生物识别的工作原理是利用生物识别设备对生物特征进行取样,提取其唯一的特征并将其转化成数字代码,并进一步将这些代码组成特征模板,人们同识别设备交互进行身份认证时,识别设备获取其特征并与数据库中的特征模板进行比对,以确定是否匹配,从而决定接受或拒绝该人。而在众多的用于身份验证的生物识别技术中,指纹识别技术是目前最方便、可靠、非侵害和价格便宜的解决方案。   
[模拟电子]
基于<font color='red'>ARM9</font>的指纹识别系统的设计和实现
采用ARM9微处理器PXA270芯片实现低功耗的嵌入式计算机
引言 绿色环保节能是全球化的热潮,而嵌入式计算机系统被广泛应用于便携式和移动性较强的产品,低功耗设计不仅是绿色环保的要求,也是嵌入式计算机系统体积和质量的约束。随着市场对嵌入式计算机系统在体积和性能方面要求的不断提升,小体积、高性能与有限的电池能量之间的矛盾曰益突出,系统低功耗设计是解决这一矛盾的有效手段。基于ARM的嵌入式计算机系统在保证系统性能的情况下通过硬件和软件两方面低功耗的设计来最大限度地降低嵌入式计算机系统的功耗。 1 系统组成 嵌入式计算机系统采用ARM9微处理器PXA270为核心,外围扩展了许多标准的IO接口来实现系统功能,如显示、数据采集、定位、通信等功能。系统主要由处理器子系统、存储器子系统、电源管理子系统
[单片机]
采用<font color='red'>ARM9</font>微处理器PXA270芯片实现低功耗的嵌入式计算机
关于ARM9协处理器CP15及MCR和MRC指令
在ARM芯片资料中,针对协处理器CP15的介绍非常少,但是CP15又十分重要,例如在使用MMU编写虚拟地址映射表时,最后的一步重要工作就是要将映射表的基地址存储到CP15的寄存器C2中,还有一些控制的TLB,Cache等访问控制权限等等。。。 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。 访问CP15寄存器的指令 MCR ARM寄存器到协处理器寄存器的数据传送 MRC 协处理器寄存器到ARM寄存器的数据传送 MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未定义指令的异常
[单片机]
关于<font color='red'>ARM9</font>协处理器CP15及MCR和MRC指令
(C与汇编语言)ARM9之LPC2132控制LCD1602显示字符串
GPADIR EQU 0xE0028008 GPASET EQU 0xE0028004 GPACLR EQU 0xE002800C EXPORT xmain AREA Init,CODE,READONLY ENTRY xmain ldr r0,=GPADIR ldr r1,=0x3ff str r1, ;A=out ;===========init1602=================
[单片机]
(C与汇编语言)<font color='red'>ARM9</font>之LPC2132控制LCD1602显示字符串
ARM9舵机程序详解
/***************************************************************************************************************************** 定时器特性总结如下。 ● 5 个16 位定时器可以工作在中断模式或DMA 模式。 ● 包括2 个8 位预分频器、2 个4 位分割器。 ● 输出波形的占空比可用编程控制(即进行脉宽调制)。 ● 具有自动重载模式或单次触发模式。 ● 具有死区发生器。 与定时器相关的寄存器有:TCFG0、TCFG1、TCON、TCMPBn、TCNTBn、TCNTOn 定时器的频率由PCLK分频而来,
[单片机]
OpenCV2.0.0移植到ARM9(三)(JZ2440----S3c2440)
在前面已经交叉编译生成了OpenCV的库,libjpeg相关的库。下面尝试OpenCV应用程序编写与交叉编译。 1、opencv测试程序 test.cpp程序代码: #include stdio.h #include highgui.h #include imgproc.h int main(int argc,char *argv ) { IplImage* img = cvLoadImage( abc.jpg ); cvNamedWindow( Example1 , CV_WINDOW_AUTOSIZE); cvShowImage( Example1 , img); cvWaitKey(
[单片机]
OpenCV2.0.0移植到<font color='red'>ARM9</font>(三)(JZ2440----S3c2440)
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved