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

发布者:温文儒雅最新更新时间:2012-05-21 来源: 微计算机信息关键字:AC48304  S3C2410  Linux  内核空间 手机看文章 扫描二维码
随时随地手机看文章

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毫秒,在进程中执行数据的读取操作很难保证数据及时读取,如果某个服务进程或者是本进程中的某个控制操作执行时间过长,就会造成语音数据的丢失。[page]

表1:语音数据特性

编码

方式

每帧大小(byte)

每帧时长(ms)

码率

(kbps)

G.711 A/u

80

10

64

G.726(24k)

30

10

24

G.726(40k)

50

10

40

G.723.1(5.3)

20

30

5.3

G.723.1(6.3)

24

30

6.3

G.729

20

20

8

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/LINUX编程指南.王勇等译,北京:清华大学出版社,2000.

关键字:AC48304  S3C2410  Linux  内核空间 引用地址:基于AC48304的嵌入式多路语音记录器

上一篇:基于U-BOOT的S3C44B0引导装载程序的设计与实现
下一篇:LPC2132在嵌入式系统中的应用技术

推荐阅读最新更新时间:2024-03-16 12:59

linux LCD驱动代码分析
1、对LCD驱动添加设备信息 对lcd驱动程序,跟之前分析的方式一样,还是先看设备信息,其定义在Mach-smdk2440.c(archarmmach-s3c24xx)文件中,在该文件中使用了填充了s3c2410fb_display结构体, struct s3c2410fb_display {undefined /*LCD type */ unsignedtype; /********************************************************************************* 设置LCD的类型,比如TFT,STN等LCD的类型。 各种类型
[单片机]
基于嵌入式Linux平台的图像采集与传输设计
引言   随着嵌入式技术的迅猛发展和Linux在信息行业中的广泛应用,视频采集与传输系统作为远程视频监控、可视电话会议和工业自动控制领域的一项核心技术,近年来已经得到了飞速的发展。本文在基于嵌入式Linux系统平台上,采用USB摄像头捕捉视频信号,利用V4L内核应用编程接口函数,实现了视频连续帧图像的采集,并保存成文件的形式利用无线传输方式传输给接收端。这里着重讨论视频采集发送端的实现。   1 系统组成   1.1 统的硬件构成   本系统包括发送端和接收端2部分,两部分均采用Samsung公司生产的S3C2410处理器做硬件开发平台。S3C2410在片上集成了丰富的组件:分开的16 KB指令Cache和16 KB数据
[单片机]
基于嵌入式<font color='red'>Linux</font>平台的图像采集与传输设计
触摸屏的移植(s3c2410
触摸屏驱动的名称: dev/mounse0 我们看一下/proc/devices # cat /proc/devices Character devices: 6 lp 7 vcs 10 misc 13 input 29 fb 90 mtd 查看触摸屏: cat /proc/interrupts 53: 596 s3c-ext eth0 60: 1 s3c-ext s3c-mci 70: 28 s3c-uart0 s3c2410-uart 71: 832 s3c-uart0 s3c2410-uart 79: 16 s3c-
[单片机]
Linux系统下超线程感知的调度算法研究
  随着计算机应用的日益普及,用户对计算机的处理能力的需求成指数级增长。为了满足用户的需求,处理器生产厂商采用了诸如超流水、分支预测、超标量、乱序执行及缓存等技术以提高处理器的性能。但是这些技术的采用增加了微处理器的复杂性,带来了诸如材料、功耗、光刻、电磁兼容性等一系列问题。因此处理器设计人员开始寻找新的途径来提高处理器的性能。Intel公司于2002年底推出了超线程技术,通过共享处理器的执行资源,提高CPU的利用率,让处理单元获得更高的吞吐量。    1 超线程技术背景   传统的处理器内部存在着多种并行操作方式。①指令级并行ILP(Instruction Level Paramllelism):同时执行几条指令,单CP
[嵌入式]
瑞萨R-Car入门套件提供汽车级Linux标准参考平台
瑞萨电子(Renesas)宣布推出汽车级Linux(Automotive Grade Linux, AGL),采用瑞萨R-Car系统单芯片的入门套件,做为软件开发的标准参考平台。 AGL是一项协力合作的开放原始码计划,将汽车制造商、供货商及技术公司集合在一起,为汽车应用打造以Linux为基础的开放式软件平台,并可当做业界标准,采用瑞萨R-Car入门套件,协助软件开发者容易取得硬件环境,以执行此计划所开发的软件,并快速轻松开发新一代联网汽车的车内信息娱乐(IVI)应用软件。 瑞萨汽车信息解决方案事业部副总裁Masahiro Suzuki表示,AGL计划致力于建立业界标准的先进开放原始码软件,该公司很荣幸R-Car入门套件能获得AGL
[半导体设计/制造]
基于44B0平台的uC-Linux Web服务器实现方法研究
前言嵌入式系统已经大量应用于各种场合,网络技术的发展使嵌入式系统的网络功能日益完善。在测控领域里,常常需要远程查询被测控对象的实时状态,或进行某种控制操作,采用服务器-浏览器进行工作的嵌入式系统,可以仅通过浏览器就完成所有的测控任务而不依赖于其他客户端程序,具有简单网络服务器功能的嵌入式系统可以方便地提供这种功能。本文以目前国内外普遍采用的ARM+uCLinux嵌入式系统为例,以uCLinux20031103版本为基础,以S3C44B0X开发板为平台,对uCLinux下实现静态、动态Web服务器的方法进行了研究,实现了对远程温度传感器的访问。 1. uCLinux简介Linux是一种很受欢迎的操作系统,它与UNIX系统兼容,开放源代
[单片机]
基于Linux的ARM9远程客车监控系统
随着我国汽车数量的增加和国家公路网的建设,城市间的往来日益频繁,受经济利益的驱使,长途客运市场普遍存在超员等问题,由此造成的重特大交通事故逐年增加,已严重威胁了人民群众的生命和财产安全。目前,客运交通监管部门主要采用设立检查站和路上巡检的传统方法检测客车是否超员,这些方法耗费人力物力,自动化程度不高,管理落后而且检测精度很低。在国内,只有少数地区对当地的部分运营车辆安装了智能检测设备。本文设计的监控终端以GPS定位信息和车内的图像数据为基础,利用GPRS无线通信技术,通过Internet建立与交通监管中心的通信,对长途客车的超员、超速、以及车辆运行状况、突发事件等进行实时监控,为交通监管、车辆调度、事故处理提供了必要的依据和证据
[单片机]
基于<font color='red'>Linux</font>的ARM9远程客车监控系统
基于嵌入式Linux的磁场测量系统
  引言   随着科技的发展,嵌入式操作系统在越来越多的领域发挥着重要的作用,目前已成为产品技术水平的标志之一。其中Linux因为其拥有开放性、多用户、多任务、良好的用户界面、丰富的网络功能、可靠的系统安全和良好的可移植等特性被广泛的应用到仪器测量设备中。   传统的磁场测量设备(持斯拉计、高斯计)普遍存在精度低(典型测量精度为1.5%)、操作不便等缺点。本文提出一种基于嵌入式Linux的中频磁场测量系统,它不但可以满足当前磁场测量数据采集的需要,还因为其嵌入了操作系统Linux,使具有可靠性好、升级方便的特点,既提高了磁场测量的准确性,又为仪器的功能升级带来便利。可应用于实验室仪器,医疗仪器,姿态控制,安全检测等需磁场检测的领
[单片机]
基于嵌入式<font color='red'>Linux</font>的磁场测量系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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