基于AC48304的嵌入式多路语音记录器

发布者:BlissfulHeart最新更新时间:2007-03-23 来源: 控制工程网关键字:编解码  VOIP  静音 手机看文章 扫描二维码
随时随地手机看文章
1. 引言

  数字多路语音记录器在安全、监控方面有很多应用。一些传统的设计方案基于工控机,用数据采集卡实现语音的A/D转换,用软件实现语音编解码,这种方案成本高、功耗大。如果采用嵌入式的设计方案,可以实现同样的功能,并且具有低成本,低功耗的特点。

  普通的低成本嵌入式处理器性能不高,不足以实现多路语音的实时编码、解码,需要用专门的语音处理芯片完成这一工作。基于DSP自主设计语音编码器是一种方法,但工作量大。AC48304广泛应用于各种小型VOIP网关中,价格低廉,是一种很好的替代方案。同时AC48304还具有DTMF识别和静音检测等功能,便于实现电话号码识别和语音的

自动记录。

  ARM是一种应用广泛的嵌入式处理器,Samsung、Atmel等厂家生产的ARM处理器接口丰富,技术支持全面。ARM处理器价格低、性价比高,向下取代了大量单片机的应用,向上渗透高端嵌入式处理器的市场。在本多路语音记录器中,采用了Samsung的ARM9处理器S3C2410,操作系统则采用了嵌入式Linux。

2. 系统结构

  语音记录器包括语音处理模块、ARM系统模块、硬盘记录模块、网络接口模块几个部分。为使系统配置灵活,将系统设计为主控板和扩展板两个部分,在主控板上实现16路语音通道,另设计一个16通道的语音扩展板,整个系统可以用4的倍数进行语音通道的扩展,最多达到32个语音通道。计算机控制部分集成S3C2410 处理器、64MB SDRAM及16MB 的FLASH,构成一个嵌入式小系统。

  语音CODEC采用AMD的LE58QL021,该器件是3.3V单电压用户线语音处理器,在小型语音网关中是AC48304的常用搭配,支持4通道语音AD/DA,支持E1 PCM Highway,能与AC48304实现无缝连接。LE58QL021的工作模式可软件编程控制,ARM通过MPI(Microprocessor Interface)串行控制总线设置LE58QL021的各种工作参数。

  基于DM9000网络控制器,系统实现10/100Mbps自适应以太网接口,Linux操作系统提供设备驱动支持。IDE接口则是由一片CPLD实现,硬盘用于语音的本地记录。主要部分电路原理见图1。


  图1 语音处理模块的硬件电路原理图

3. AC48304语音处理器

  AC48304是AudioCodes公司基于DSP设计的一个四通道语音处理器,支持多种标准、多种码率的G系列语音编码器,如G.723.1,G.711,G.726和G.729等,支持T.38传真中继和其他语音信号处理功能。在系统中,ARM通过CPU局部总线实现对AC48304的控制及数据交换。AC48304与LE58QL021之间通过E1 PCM Highway接口实现多通道数字语音接口。E1接口由2.048Mhz时钟驱动,有0~31共32个8位时隙,工作时序如图2所示。


  图2 PCM Highway时序

  AC48304是一种专用的语音处理DSP芯片,需要运行相应的DSP程序。正常运行前, AC48304有两个程序需要下载:kernel(内核)程序和application(应用)程序。kernel程序是个只有几百字节的小程序,完成DSP的初始化工作,为下载应用程序做准备。application程序则完成AC48304的所有功能,在kernel程序程序下载完成后,才可以下载application程序。AC48304有4个工作模式:内核下载模式、程序下载模式、初始化模式、运行模式。其中运行模式有两个状态:空闲状态和激活状态,用户只能在空闲状态改变芯片的工作参数。

4. 软件设计

  4.1Linux中的驱动程序设计

  操作系统采用的是嵌入式Linux操作系统。Linux具有效率高、内核小的优点,且开放源代码,完全免费。在Linux操作系统下,应用程序不能直接访问硬件,尽管Linux在ARM平台上有较完整的板级支持包,但在该系统的开发工作中仍然要完成部分设备的驱动程序设计,包括AC48304驱动程序、LE58QL021驱动程序、S-EEPROM驱动程序等。

  设备驱动程序要为应用软件提供设备打开、关闭、设备控制及数据读/写等接口, 即一些类似于open、close、read和write的函数,在主程序中直接采用文件读写的方式实现数据的收发。LE58QL021与ARM处理器之间采用MPI串行控制总线,MPI驱动接口结构定义如下:

  static file_operations mpi_ctl_fops = {

  ioctl:  mpi_ctl_ioctl, //设备控制

  open:  mpi_open, //打开设备

  close:  mpi_ close, //关闭设备

  }

  Linux提供ioremap函数将I/O内存资源的物理地址映射到核心虚地址空间,然后可像操作寄存器那样进行数据读写。编写驱动程序的时候,必须提供两个函数,一个是module_init(),insmod在加载此模块的时候自动调用,负责进行设备驱动程序的初始化工作,一个函数是module_exit,在模块

被卸载时调用,负责进行设备驱动程序的清除工作。

  4.2 AC48304的数据读写实现

  每个AC48304可同时进行4个通道的语音编/解码,片内有数据缓存区,编码后的语音数据先存储在各通道的缓存区,然后依次拷贝到输出缓冲区。表1为本系统支持的几种主要语音编码格式的相关参数。其中G.711的A/u律数据量最大为64kbps,每个通道每秒有8000字节的数据,而AC48304的数据读取区的有效量为80字节,即每秒钟要进行100次的读取操作,对每个AC48304而言每秒钟要进行400次读取操作才能保证数据及时读取。由于语音编码包是以恒定的速率产生的,因此每2.5毫秒必须对DSP进行一次读取操作。本平台的Linux内核中,进程调度算法的时间单位为10毫秒,在进程中执行数据的读取操作很难保证数据及时读取,如果某个服务进程或者是本进程中的某个控制操作执行时间过长,就会造成语音数据的丢失。

  表1:语音数据特性

  

  Linux中程序运行的环境分为内核空间和用户空间,内核空间的程序优先级高于用户空间。为保证编码数据被及时读取,需在内核级别的进程中定时读取AC48304产生的数据。有两种方式可将用户程序加入到内核空间中运行:修改Linux内核源代码,直接将用户程序代码编译到内核中;利用Linux的模块机制,动态的将用户程序代码添加到内核空间中运行。第一种方法实现难度比较大,而且容易出错。第二种方法实现难度小,效果与第一种相同,本系统中采用的是第二种方法。

  将AC48304的读取操作作为驱动程序进行设计,使用insmod命令动态加载到内核中去,在定时中断的服务函数中读取AC48304的数据。S3C2410中有5个用户可编程的时钟中断,中断优先级别高,中断的频率可编程控制,其中时钟中断Timer3已用于DMA控制,Tmer4用于进程调度。本系统的程序设计中使用Timer2,通过配置相关控制寄存器将Timer2的中断频率设为500HZ,适当的增加读取查询操作频率,保证数据及时读取。中断服务函数是由内核来执行的,优先级高于用户程序,可保证读取操作的实时性。为AC48304的每个通道分配一个数据缓冲区,定时中断函数中读取的数据先保存在缓冲区中,用户程序通过读取该缓冲区获得语音数据,这样对外部用户而言,语音数据没有丢失,语音延迟在毫秒级别,完全可以满足需求。

  4.3 应用软件设计

  将应用程序及驱动程序文件加入文件系统中,修改有关启动的配置文件,使得系统启动完毕时自动加载目标程序,这样每次设备启动时将自动进入应用程序。主程序流程如图3所示,主程序的功能主要是:

  u 系统配置:系统的配置表存储在一片S-EEPROM中,配置表可以通过串口终端或者网络在线配置。

  u 初始化系统:包括向DSP下载内核程序和应用程序,启动DSP及LE58QL021等。

  u 语音数据读写:通过DSP的HPI总线读取DSP数据实现语音采集,通过HPI把数据写入DSP实现语音回放。

  u 数据存储:根据录音计划将需要录音的语音数据保存到硬盘中。

  u 命令处理:包括选择语音通道命令、回放命令、校时命令、增益调节命令、配置表传输命令、录音数据上传命令等。


  图3.主程序流程图

5. 结束语

  本记录器最多支持32路语音实时处理,在硬盘上实现长时间录音,并可通过10/100Mbps以太网实现数据上传和管理。经测试本记录器可以很好的完成语音数据的采集、压缩、存储、解压缩和回放,内核级别的用户进程运行正常,保证了整个系统的实时性。该语音记录器具有低成本、低功耗、结构精简、使用简单的特点,具有很好的实用价值。

  本文作者创新点:采用嵌入式实现系统设计,操作系统及应用软件完全固化在FLASH中,实现了高稳定性;相对基于工控机的语音记录器,本文设计的系统具有低成本、低功耗的特点;在本文中创新性地将VOIP语音处理器AC-48304应用在多路语音记录器中;在软件是设计中,在LINUX操作系统内核空间实现数据采集功能,从而保证了系统数据采集的实时性要求。

参考文献:

[1].华恒公司. HHARM2410平台手册. 2004.
[2].AC4830xC-C Vopp Designer's Manual.pdf. 2003.
[3].吴姣梅,李红艳,吴保荣,严明.改善嵌入式Linux实时性能的方法研究.微计算机信息.2006年,02期,72页.
[4].K.Wall,等.GUN/LINU

X编程指南.王勇等译,北京:清华大学出版社,2000.

关键字:编解码  VOIP  静音 引用地址:基于AC48304的嵌入式多路语音记录器

上一篇:基于RT-Linux防危保障机制的实验模型
下一篇:基于SOPC的指纹识别系统设计

推荐阅读最新更新时间:2024-05-02 20:35

基于DDK的TLV320AIC23型编解码器的驱动设计
1 引言   TLV320AIC23是TI公司推出的一款高性能立体声音频编解码器,内置耳机输出 放大器 ,支持mic和line in二选一的输入方式。输入和输出都具有可编程的增益调节功能。TLV320AIC23的模/数转换器( ADC )和数,模转换器(DAC)集成在芯片内部.采用先进的Σ一△过采样技术.可以在8kHz至96kHz的采样率下提供16bit、20bit、24bit和32bit的采样数据。ADC和DAC的输出信噪比分别可达90dB和100dB。同时。TLV320AIC23还具有很低的功耗(回放模式为23mW。节电模式为15μw)。上述优点使得TLV320AIC23成为一款非常理想的音频编解码器,与TI的 DSP 系列
[安防电子]
基于DDK的TLV320AIC23型<font color='red'>编解码</font>器的驱动设计
多媒体编解码芯片的选择策略
本文对音视频产品的芯片选择作了分析,从芯片的指令集,主频,cache,DMA等方面进行衡量,给大家在选择软解码芯片时提供一些帮助。 现在有许多电子产品需要有多媒体编解码芯片的支持,例如:机顶盒,高端手机,PMP。在设计这些产品时,选择好一款DSP芯片,成为了产品成败的一个关键。如何选择芯片?这是一个非常复杂的问题,涉及到方方面面。我把我对这个问题认识在此总结一下。 先从了解芯片的处理能力说起。假如我们要让我们的产品做到MPEG-4 D1实时解码,不考虑价格,功耗,接口等其他因素,只谈处理能力。我们以Philips 的Trimedia 1300和ADI的Blackfin533为例。人们谈起芯片的处理能力时,总是首先想到主频。Tr
[嵌入式]
用FPGA实现1553B总线接口中的曼码编解码
引言 曼彻斯特码编码、解码器是1553B总线接口中不可缺少的重要组成部分。曼彻斯特码编解码器设计的好坏直接影响总线接口的性能。本文介绍的是MIL-STD-1553B接口中最曼彻斯特码的编码和解码器的设计实现。 在电子设计领域,可编程器件的广泛应用为数字系统的设计带来极大的灵活性,1片FPGA/CPLD芯片可替代上百个IC电路。同时,Altera公司开发的MAX+PLUS II和QUARTUS II软件,是完全集成化的可编程逻辑设计环境;Synplicity公司的Synplify是专门用于FPGA和CPLD的一种优秀逻辑综合工具;VHDL更是一种功能强大的硬件设计语言,可用简洁的代码描述来进行复杂控制逻辑的设计。所这些使得硬
[嵌入式]
嵌入式DSP上的视频编解码分析
通用视频标准和编解码器    联合视频组(Joint Video Team, JVT)由 ITU的视频编码专家组(Video Coding Experts Group, VCEG)和ISO/IEC运动图像专家组(Moving Picture Experts Group, MPEG)组成。VCEG开发自愿性标准,用于会话和非会话类音/视频应用的先进移动图像编码。 MPEG开发国际标准,用于移动图像、音频及两者组合的压 缩、编码、解压缩、处理等,以满足各种应用。总之,JVT已经开发了包括ITU H.262/MPEG2和H.264/MPEG-4 AVC在内的最流行的视频标准。 MPEG-2 Video/H.262:MPEG2
[嵌入式]
嵌入式DSP上的视频<font color='red'>编解码</font>分析
音频编解码芯片接口的FPGA应用
介绍了音频编解码芯片WM8731基于FPGA的 接口电路 的设计,包括芯片配置模块与音频数据接口模块等,使得控制器只通过寄存器就可以方便地对其进行操作。整个设计以VHDL和Verilog HDL语言在Max+Plus Ⅱ里实现,并进行了验证。   1 概 述   WM873l是一款功能强大的低功耗立体声24位音频编解码芯片,其高性能耳机驱动器、低功耗设计、可控采样频率、可选择的滤波器使得WM8731芯片广泛使用于便携式MP3,CD,PDA的场合。其结构框图如图1所示。      WM8731包含2个线路输入和1路麦克风输入并可以进行音量调节;内置片上ADC(模拟数字转换器)及可选择的高通数字滤波器;采用高品质
[嵌入式]
音频<font color='red'>编解码</font>芯片接口的FPGA应用
NTT电子支持H.264/AVC HDTV的编解码
  2008年12月2日- NTT电子株式会社开发出了搭载有支持H.264/AVC (备注1)HDTV实时编解码LSI "PINEA"(备注2)的PCI Express模组“PINEA模组”。   本产品搭载有内建DDR存储器且采用了堆栈封装的编解码LSI,该模组可轻松实现PC平台的H.264/AVC编解码系统的构筑。   作为数字视频压缩格式,H.264/AVC开始被广泛应用于广播、新一代DVD及移动终端等领域。H.264/AVC采用了高度压缩演算法,能够实现高压缩率。另一方面,为了执行庞大的演算处理,还需要高度的处理能力。虽然PC高速化得到快速推广,但是,在使用软件对全高清视频和标清视频进行多通道编码实时处理方面还略显不足
[安防电子]
如何使用编解码器加速开发音频播放应用
在嵌入式系统中,越来越需要提供高保真音频而不是蜂鸣器来实现用户反馈,包括报警和警报。虽然过去哔哔声或者鸣叫声很有效,但用户期望通过播放 MP3 等文件格式音频才能产生的高级声音。问题是,音频播放可能会让人紧张,并增加系统成本和复杂性。第一直觉是找到可以播放 MP3 的微控制器,但这往往会使物料清单 (BOM) 增加几美元并需要相当复杂的嵌入式软件。 音频编解码器就是一个特别能平衡额外成本和软件复杂性的解决方案。音频编解码器不仅能接受来自微控制器的音频数据流,往往还具有多种功能,使得开发人员可以对音频播放系统进行精心调校,提高系统播放音质。 本文将讨论音频编解码器的作用、开发者在选择时应考虑的主要特点以及如何有效使用。本文将
[嵌入式]
如何使用<font color='red'>编解码</font>器加速开发音频播放应用
Facebook Home将实现VoIP直接通话功能
    腾讯科技讯(苏格)北京时间4月7日消息,据国外媒体报道, Facebook于上周发布基于Android系统深度定制的社交桌面界面Facebook Home。另一个值得我们关注的是其VoIP 电话功能,这种新型的通话服务已越来越多地取代传统的电话网络。 今年早些时候,Facebook在其iOS和Android的应用中添加了免费VoIP呼叫功能。Facebook发言人说,此功能将会在Facebook Home上实现,但不是通过Chat Heads实现。换句话说,你无法简单地在Chat Heads中点击朋友的头像来打电话。但该发言人表示,这个特性可以在未来实现。 Facebook也不会向广告客户提供任何特殊的服务,比如在Cov
[手机便携]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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