基于ARM的嵌入式语音存储系统设计

发布者:幸福旅程最新更新时间:2012-05-29 来源: 21ic 关键字:ARM  嵌入式语音  存储系统 手机看文章 扫描二维码
随时随地手机看文章

1 系统控制核心

嵌入式操作系统软硬件结构框图如图1所示,由硬件层、驱动层、系统层和应用层组成。硬件层包括嵌入式处理器最小系统、存储器(SD RAM、Flash、ROM等)、通用设备接口和I/O接口(A/D、D/A、I/O等),其中Linux实时操作系统和应用程序都可以固化在ROM中。硬件层的核心是嵌入式处理器,在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式处理器最小系统。中间的驱动层将上层软件和底层硬件分离开,为其连接提供接口。系统层主要负责软件硬资源的分配、内存管理、任务调度、文件处理等,是软件层的核心。应用层为用户提供编程接口,实现各种应用功能。

a.JPG

1.1 系统软件核心

Linux操作系统的内核主要由进程调度、内存管理、虚拟文件系统、网络接口、进程间通信五个子系统组成,各个子系统之间都存在着不可分割的依赖关系。内核为设备驱动提供支持,实现设备控制与应用;设备驱动为上层提供标准接口,完成硬件细节的封装。可以根据设计需要对内核模块进行适当的裁减,制作出理想、实用的操作系统。

1.2 系统硬件核心

Samsung公司的S3C2440A处理器是一款以手持设备为主而设汁的芯片。这款处理器支持NOR Flash和NAND Flash启动方式,内部集成LCD、I2C总线、AC97、Camera等控制器。提供丰富的接口资源,方便与外设连接,易于扩展。

2 G.729算法概述

2.1 G.729编码原理

G.729编码标准采用CS-ACELP语音压缩编码技术,其核心原理是线性预测和二级量化。每个10 ms的语音帧包含80个采样点,在每个这样的语音中都要进行线性预测(LP)分析,计算出LP滤波器系数,再转换为线性谱对参数(Line Spectrum Pari,LSP),并使用有两个阶段

的预测矢量量化器(Vector Quantization,VQ)进行18比特量化。然后编码器以原始语音和合成语音的误差感觉加权最小为准则采用A-B-S(Analysis-By-Synthesis,分析合成)方法搜索激励信号,激励参数(固定码书参数和自适应码书参数)每个子帧(5 ms帧长,40个采样点)确定一次,感觉加权滤波器的系数由未量化的LP系数产生。

2.2 G.729解码原理

解码是编码的逆过程,其原理为:首先从获得的码流中提取出参数的索引,这些参数包括LP滤波器系数、自适应码书矢量以及固定码书矢量和增益,它们分别解码后,可获得一个LSP系数、两个音节延迟、两组自适应码书和固定码书增益等对应于10 ms语音帧的编码器参数。

然后将LSP系数进行内插操作,转换为每个5 ms子帧的LP滤波器系数,再对每个子帧进行如下操作:

①经各自增益缩放的自适应矢量和固定码本矢量相加,得到重建的激励信号;

②将激励信号通过LPC合成滤波器,得到重建语音;

③重建的语音信号经过各种滤波器的后续处理,实现信号的放大和改善。

2.3 G.729算法优化

在G.729编码算法中,采用量化码本结构。其基本原则如下:首先计算出K维码本里的各个码字矢量的平均值并存储起来;然后求出输入信号矢量平均值和各个码字矢量平均值的均方误差值;最后用遍历法找到这些均方误差中的最小值Dmin,与之相对应的码字即为最佳逼近码字。采用这种搜索方法加快了编码速度,减少了搜索时间,并没有改变矢量量化的精度。

3 系统硬件结构

系统硬件结构框图如图2所示。S3C2440A作为整个系统的主控芯片,DC电源、复位电路、时钟电路作用于系统的每个部分;存储模块包括SDRAM、Flash以及外接的CF或SD卡等;调试模块包括JTAG接口、RS232接口以及网络接口三个部分;音频模块的主要工作由编解码器UDA1 341完成,扩展接口由USB接口、IDE接口构成,交互模块由TFT LCD和触摸屏构成。其中,音频模块和IDE扩展接口是研究的重点。

b.JPG[page]

3.1 系统外围电路

系统设计的外围电路都是ARM最小系统所必需的。电源电路为系统提供能量,是系统工作的基础。设计电源电路时要考虑的因素很多,主要包括输入及输出的电压范围、输出纹波大小、电池兼容和电磁干扰等,系统采用DC-DC转换芯片LM1117将5 V的电压转换成1.3 V、2.5 V、3.3 V后供系统使用。采用复位芯片MAX811产生的复位信号,既能保证上电复位的时间,又能保留手动复位的特点。时钟电路为系统提供工作时钟,主时钟采用12 MHz晶振作为时钟源,RTC时钟采用32.768 kHz晶振作为时钟源。通过JTAG接口,可以访问芯片内部的所有部件,是实现系统开发、调试的高效手段。为了减小系统体积,采用10针简化的JTAG接口,其接口电路如图3所示。

c.JPG

SDRAM存储器选择Samsung公司的K4S561632E-UC75,其存储容量为32 MB,具有存取速度快、成本低廉的特点,主要用来存放执行代码和变量,是系统启动之后主要进行存取操作的存储器。Flash存储器选择Samsung公司的K9F1208U0CNAND Flash存储器,其存储容量为64 MB,可以擦写一百多万次,具有很长的使用寿命,把启动程序、内核代码等固化到Flash闪存中能加速系统的启动、提高系统的稳定性和可靠性。

3.2 音频采集与处理模块

该模块采用Philips公司生产的音频芯片UDA1341TS,它支持I2S数据总线格式,且具有低功耗、低电压及DSP语音功能等特征。I2S(Inte grate Interfaceof sound)是Philips公司提出的串行数字音频总线协议,音频数据与控制信号、时钟信号分开传输,避免了由时钟带来的抖动问题,因此系统中可省略消除抖动的器件。

d.JPG

音频芯片与主控芯片的连接如图4所示。I2S音频接口包括5根信号线,其中音频模块的同步时钟CDCLK由S3C2440A提供,该时钟控制音频的A/D、D/A采样速率。串行时钟SCLK,也叫位时钟(BCLK),即每一个SCLK脉冲对应一位数字音频数据。帧时钟LRCK用于左有声道的切换,LRCK为1表示正在传输的是左声道的数据,为0则表示正在传输的是右声道的数据。DATAI是串行数据输入信号线,DATAO是串行数据输出信号线,所传输的音频数据用二进制补码表示。L3总线接口包括3根信号线:L3MODE/GPB2是微处理器接口模式信号线;L3CLOCK/GPB4是微处理器接口时钟信号线;L3DATA/GPB3是微处理器接口数据线。L3总线接口主要用于传输控制信号,相当于混音器控制接口,可以调节输入/输出音频信号的音量、低音提升、控制去加重等。

[page]

3.3 IDE硬盘控制模块

IDE接口是硬盘和光驱普遍使用的外部接口,接口采用16位数据总线并行传送,体积小、速度快,兼容性强。IDE接口主要有可编程输入输出(Programming Input Output,PIO)和直接内存访问(Direct Mcmory Access,DMA)两种传输模式。PIO模式占用大量的系统资源,数据传输速率较低;DMA模式需要额外的驱动程序或设置,系统资源占用少、执行效率较高。本设计选择DMA模式。

e.JPG

S3C2440A与硬盘接口如图5所示。其接口信号分为片选信号、数据信号和控制信号3个部分。硬盘上寄存器分为两组,分别由/CS0和/  CS1选中其中的一组,A0~A2引脚用于组内寄存器寻址,包括数据寄存器、错误寄存器、扇区计数器、扇区号寄存器、低柱面号寄存器、高柱面寄存器、状态寄存器和命令寄存器。数据线D0~D15用于数据的双向传输。/DIOR、/DIOW是读写控制信号;/Reset是硬盘复位信号;DMARQ(DMA请求信号)和/DMACK(DMA应答信号)是专用于DMA模式的信号。

4 系统软件实现

4.1 语音数据的采集

语音采集部分主要是完成UDA1341TS驱动程序的编写,其初始化相关代码如下:

f.JPG

端口初始化包括L3总线接口和I2S接口的设置,首先将与L3接口相连的通用I/O口GPB2、GPB3、GPB4设置为输出模式,然后设置与I2S控制器输出信号相关的GPIO引脚,将GPE0~GPE4这5个引脚设置为I2S接口的信号模式。UDA1341TS芯片初始化部分包括L3接口时序和协议的模拟,完成采样速率、数据格式等参数的设置。系统采样速率为8 kHz,使用时钟为384 fs,数据输入格式设置为MSB-Justifled模式。接下来通过“audio_init_dma()”申请DMA通道,输出音频缓冲区的DMA通道设为通道2,输入音频缓冲区的DMA通道设为通道1。若初始化失败会返网相应的错误标志,初始化成功后方可进行后续操作。

4,2 IDE接口函数

硬盘驱动程序实现分为设备初始化、打开设备、设备I/O操作和释放设备等几部分。要完成硬盘数据交换的工作,就需要对寄存器进行频繁的读写操作,为了方便在程序中的调用,把这些和硬件操作密切相关的操作都写成了接口函数,其函数说明略——编者注。

4.3 系统主程序流程

主进程开始后首先初始化采样参数,包括采样速率、采样点数、数据存储格式及采样通道,若初始化不成功会返回相应的错误标志,并作出相应的出错处理,成功后可继续下一步操作。然后通过键值判断数据的存储区是选择Flash还是选择硬盘,并初始化相应的存储区,这是保证系统在没有外扩硬盘的情况下也能正常运行,只不过是数据存储量较小而已;若选择操作硬盘,但硬盘未连接,仍然会返回相应的错误标志,并进入出错处理函数继续执行。接下来根据键值判断是否进行压缩处理,若进行压缩处理,则相应的编解码标志置位;根据该标志确定是否启动编解码进程,即系统能存储未压缩的数据,也能存储压缩后的数据,可以根据需要进行适当的选择。启动A/D转换进程并进行语音数据的存储,相当于录音的过程;数据存储完成后,即录音结束后,启动D/A转换进程进行语音播放。录音和播放可以同时进行,为了测试方便,这里把这两个过程分离开来。

总的来说,系统主进程创建了A/D、D/A转换进程和编解码进程,结合Linux的共享机制和进程间通信等手段,实现了语音信号的采集、压缩、存储、回放等环节。

系统主程序流程图略——编者注。

[page]

5 系统测试与结果分析

系统测试内容主要包括语音质量、语音存储时长、语音压缩效率三个方面。语音质量是指经传输、处理后音频信号的保真度,是衡量语音编码算法优劣的关键指标。其评价方法分为主观评定和客观评定两类。系统采用的主观评定方法是平均意见得分(Mean Opinion Score,MOS),即以主观打分来度量,其评价标准分为5个等级,MOS评价标准如表2所列。客观评定选择信噪比为评价指标,信噪比(Signal Noise Ratio,SNR)定义为信号与量化噪声的方差的比值,计算公式为:

g.JPG

h.JPG

其中i.jpg分别为信号方差和噪声方差。通过测试系统的主观评价指标MOS可以达到3.8分,接近于电话语音质量,与原始语音的区别不明显;系统的客观评价指标SNR为58 dB,噪声的影响在可以接受的范围内。语音时长的统计,依赖于扩展IDE硬盘的容量,测试选择3G容量的硬盘;记录未经压缩的语音数据为750个小时,而记录压缩后的语音数据可达7500多个小时;可见语音压缩的效率可以达到10多倍,已达到理想的效果。

关键字:ARM  嵌入式语音  存储系统 引用地址:基于ARM的嵌入式语音存储系统设计

上一篇:ARM微处理器的指令的分类与格式
下一篇:ARM和WinCE6.0下nRF24L01的驱动设计

推荐阅读最新更新时间:2024-03-16 13:00

深入理解ARM体系架构(S3C6410)---S3C6410存储映射
S3C6410的物理内存分成Memory和Pheriperal两部分,地址范围分别为0x0~0x6fffffff和0x7fffffff~0xffffffff。系统通过 SPINE总线访问Memory空间,通过PERI总线访问Pheriperal空间。而为了适应不同外设的访问速度,又分别通过AHB总线访问LCD、 Camera、Accelerator等高速外设,通过APB总线访问iic、watchdog等低速外设。 Memory: (1)启动镜像区物理地址为0x00000000~0x07ffffff,共128MB,是用来启动系统的。但是这个范围内并没有实际的存储介质与之对应,只能在通过OM 选择具体的启动介质后再把相应
[单片机]
深入理解<font color='red'>ARM</font>体系架构(S3C6410)---S3C6410存储映射
ARM更新安卓开发套件,意旨降能耗
           安卓系统的开发套件已经比较普及,但因为使用安卓系统的设备并不统一,芯片能耗问题一直没有有效解决。        今天,ARM发布全新的开发工作室5 (Developmnt Studio 5),不仅可以用于开发Linux软件,还可以开发基于Linux系统的安卓移动操作系统。        DS5的主要特点是其更关注应用优化,一方面是性能提高,另一方面是提高效率。ARM称DS5的指令可比Java指令快四倍,不过该软件还有待进一步测试。
[手机便携]
Xilinx、Arm、Cadence和台积公司构建全球首款7纳米CCIX测试芯片
电子网消息,赛灵思、Arm、Cadence和台积公司今日宣布一项合作,将共同构建首款基于台积7纳米FinFET工艺的支持芯片间缓存一致性(CCIX)的加速器测试芯片,并计划在2018年交付。这一测试芯片旨在从硅芯片层面证明CCIX能够支持多核高性能Arm CPU和FPGA加速器实现一致性互联。 出于功耗及空间方面的考虑,在数据中心内对应用进行加速的需求日益增长,诸如大数据分析、搜索、机器学习、4G/5G无线、内存内数据处理、视频分析及网络处理等应用,都已受益于可在多个系统部件中无缝移动数据的加速器引擎。CCIX将支持部件在无需复杂编程环境的情况下,获取并处理位于任何地方的数据。 CCIX将利用现有的服务器互连基础架构,实现
[半导体设计/制造]
ARM上安装minicom及“error: conflicting types for 'getline'”解决
需要下载安装两个文件ncurses和minicom: root@zhaoxc-VBox:/opt/arm-tools/ncurses-6.0# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/arm-tools/ncurses-6.0/install-arm root@zhaoxc-VBox:/opt/arm-tools/ncurses-6.0# make root@zhaoxc-VBox:/opt/arm-tools/ncurses-6.0# make install root@zhaoxc-VBox:/opt/arm-tools/minicom-2.1# .
[单片机]
ARM平台上Linux异常处理代码简要分析
Linux version 3.10.40 ARM处理器支持多种异常模式,如reset,irq,fiq等,发生异常后处理器根据配置跳到指定的地址运行,可以配置成从0地址开始,也可以配置成从0xFFFF0000地址开始。我们从两个角度分析Linux上的实现,第一是负责异常处理的代码是如何安装到该地址的,第二是这些代码的处理流程是什么样的。 一 放置异常处理代码流程 依次涉及: init/main.c中的start_kernel函数 arch/arm/kernel/setup.c中的setup_arch函数 arch/arm/mm/mmu.c中的paging_init和devicemaps_init函数 a
[单片机]
软银考虑出售或者让Arm重新上市
根据《华尔街日报》的最新报道指出,软银集团正为旗下英国芯片设计公司Arm探索几个可能的出路,包括全部或部分出售以及公开上市。 知情人士表示,软银已经聘请高盛担任本次资本运作的顾问,但行动仍处于早期探索阶段,目前还不清楚这些计划将如何实现,软银也有可能选择什么都不做。 软银在2016年以320亿美元的价格收购了Arm。据报道,当初软银收购Arm的一部分原因是为了将业务扩展到物联网领域。 软银创始人孙正义去年曾表示,他希望在五年内让Arm重新上市。而稍早前,Arm表示计划将两个软件业务转让给日本母公司软银集团,将经营战略转向专注于发展核心芯片业务,并且希望在9月之前将该业务完成转让。 此消息传出后,国内有媒体写到,“外媒称苹果
[手机便携]
软银考虑出售或者让<font color='red'>Arm</font>重新上市
arm拟出售在华子公司51%权益
  有报道称,软银旗下芯片制造商arm将作价7.75亿美元,向直接投资者出售在华子公司arm Technology China 51%权益。此前媒体报道显示,基于arm指令集生产的芯片几乎垄断了嵌入式和移动端的市场。上市公司中,中科创达与arm合资成立了安创空间,共同拓展在智能硬件生态系统中的影响力,中科创达持股51%。全志科技和arm、地平线机器人联合发起开放人工智能实验室。
[嵌入式]
Arm Neoverse正在成为数据中心的新势力
Arm在拥有手机和物联网设备的通用计算能力后,其下一步行动目前尚不明朗。尽管x86巨头在数据中心占据主导地位,但Arm和RISC-V之间在小型平台上的竞争已初露端倪。然而,Arm一直在积极拓展其业务,向上发展至基础设施领域,包括云计算、有线和无线通信,甚至延伸到网关和边缘设备。起初,他们的步伐是稳健的,但最近他们更积极地寻求取代主流处理器和FPGA,成为以AI为中心的GPU的前端,广泛应用于超大规模扩展、DPU、电信公司的网关和无线基带,以及汽车等边缘应用领域。在我看来,这是对支撑我们所有电子技术的快速增长和高价值基础设施的一次重要而未被充分认识的布局。 Arm的Neoverse系列在基础设施领域持续占据一席之地。以英伟达的超
[嵌入式]
<font color='red'>Arm</font> Neoverse正在成为数据中心的新势力
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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