您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

基于ARM7TDMI的SoC语音处理惩罚体系的计划

发布日期:2011-04-17

择要:基于ARM7TDMI的SoC片内AC97模块和片外CODEC-UCB1400,采取ITU-T的G.721算法计划语音处理惩罚体系;提出一种基于低端RISC核的语音体系计划方案。该方案连合SoC的片内eSRAM模块举行性能优化;通过在流片后的实际样机上验证,编码速率为19.88 KB/s,解码速率为22.68 KB/s,到达了语音及时性请求。


关键词:ARM7TDMI G.721 双Buffer机制 eSRAM优化

引 言

  随着微电子和谋略机技能的高速生长,很多嵌入式应用体系应运而生。此中,种种语音处理惩罚体系不绝被开辟出来,在各行业得到遍及应用,如语音报站器、主动讲授装置、采访灌音笔等,为人类的生产、生存提供了极大的方便。本文基于东南大学国度专用集成电路体系工程技能研究中间自主研发的ARM7TDMI内核的32位嵌入式SoC——SEP3203处理惩罚器,采取G.721标准ADPCM算法,实现了语音信号的软件及时编解码,为语音处理惩罚应用提供了一种有效的嵌入式办理方案。

1 G.721标准概述

  1937年,A.H.Reeves提出脉冲编码调制(PCM),开创了语音数字化通讯的进程。CCITT在20世纪80年代初,开始研究低于64 Kb/s的非PCM编码算法,先后订定通过了G.721、G.728、 G.729等编码标准。此中,G.721协议作为ADPCM的典范算法,不但具有与PCM近乎雷同的语音质量,并且有大略的算法结会商精良的抗误码性能,在卫星、海缆及便携式数字语音配置等方面都有遍及应用。G.721算法的简化框图如图1所示。

  编码进程:

  ① 谋略Sl(k)与自适应预测器输出Se(k)的差值E(k)=Sl(k)-Se(k);
  ② 通过自适应量化模块对E(k)举行量化,得到ADPCM码字I(k);
  ③ 通过自适应反量化模块对I(k)谋略得到量化差分预测信号Dq(k);
  ④ 根据重修信号Sr(k)=Se(k)+Dq(k)和Dq(k)更新预测滤波器系数;
  ⑤ 利用新的系数,谋略得到Se(k+1),重复上述5个步调,压缩下一个语音采样数据。

  解码进程:

  ① 通过自适应反量化和自适应预测得到Dq(k)和Se(k),得到语音重修信号Sr(k);
  ② 对重修信号Sr(k)举行PCM格局转换,得到PCM码字Sp(k);

  


              图1 G.721编码器和解码器简化框图

  ③ 采取与编码器雷同的要领更新预测滤波器系数;
  ④ 为实现双向通讯,同步调解Sp(k);
  ⑤ 利用新的滤波器系数,重复上述5个步调,解码下一个I(k)。

2 芯片简介

  SEP3203芯片为体系处理惩罚内核,总体布局框图如图2所示。该芯片是东南大学国度专用集成电路体系工程技能研究中间自主计划的基于ARM7TDMI的32位SoC,采取AMBA2.0标准,0.25μmCMOS工艺,重要面向嵌入式中低端手持配置。片上提供AC97控制器、外存接口EMI、6通道DMAC、TIMER、PMU、INTC等模块。此中,语音体系利用的模块有:EMI,认真控制对外存的访问;片上存储器eSRAM,用于优化耗时的内核代码;AC97,提供AC97标准的音频接口;DMAC,用于实现大数据量的DMA发送。

  

                图2 SEP3203芯片布局框图

3 体系计划

  3.1 硬件体系

  硬件体系框图如图3所示。虚线框内是片内模块;框外为片外器件,包括外存(SDRAM/SRAM/Flash等)、CODEC等。Philips公司的UCB1400作为CODEC。以下为体系事变进程。

  

                图3 语音处理惩罚硬件体系框图

  ① 编码。CODEC采样语音数据,寄存在AC97的输入FIFO中。然后,由DMAC通过停止方法,将数据发送到指定存储地区。在ARM7TDMI的控制下,运行G.721编码步伐,将语音PCM数据压缩为ADPCM码。
  ② 解码。运行G.721解码步伐,把存储器中的ADPCM码解码为PCM码。每解满1帧数据后,由DMAC通过停止方法把数据发送到AC97的输出FIFO,通过CODEC驱动放音配置(耳机、扬声器等)。

  根据语音及时性的必要,设置UCB1400采样速率为8 kb/s。该芯片用16位表现一个采样点,故采样速率为128 kb/s。编码后,每个采样点用4位表现,故传输率为32 kb/s。

  3.2 软件体系

  软件流程如图4所示。每帧数据为64个采样点,共计为128字节、16位表现的PCM码,编码后为32字节、4位表现的ADPCM码。

    
                图4 编解码的软件流程

  (1) 编码

  起首对体系初始化,包括对AC97、CODEC、DMAC等模块配置,以及有关状态变量的初始化。然后,采样第1帧语音数据,采样结束进入DMA停止,在停止处理惩罚中再次配置DMAC,触发新的采样传输,并对刚采样的数据编码。由于编码由内核实行,采样由CODEC和DMA完成,故对第K帧编码和对第K+1帧采样是并发举行的。

  (2) 解码

  同编码进程雷同,起首对体系举行初始化,然后解码第1帧音频数据。解码完配置DMAC,触发数据发送至AC97输出FIFO,通过放音配置播放灌音。同样,解码第K+1帧数据与播放第K帧数据并发举行。
  本计划采取“双Buffer”机制缓冲数据。“双Buffer”是指:开辟两个帧缓冲区为Buf0、Buf1,缓冲标记Flg初始为0。编码时,采样第1帧数据,DMA从AC97输入FIFO向Buf0传输数据,传输完后,设置Flg=1,编码器从Buf0中取数据编码;同时,DMA向Buf1中发送新数据。周而复始,每帧数据采样完,设置Flg=!Flg,编码器从Buf!Flg缓冲区取数据编码,DMA发送采样数据的目标地点为Buf Flg,从而实现了第K+1帧数据采样和第K帧数据编码并发。只要编码速率高于采样速率,就不会出现数据的包围。处理惩罚进程如下(解码时的环境雷同):

  Flg=0;
  Psmp=Buf Flg;
  Run_Sample(Psmp);//采样第1帧数据
  While(1) { 
    Flg=! Flg;
    Penc=Buf !Flg;//编码指针指向缓冲区Buf !Flg
    Psmp=Buf Flg;//采样指针指向缓冲区Buf Flg
    Run_Sampler(Psmp); Run_Encoder(Penc); 
             //启动采样器和编码器,两者并发
  }


4 性能优化

  语音处理惩罚的及时性请求很高,不然,若数据处理惩罚速率跟不上语音变革速率,就会在灌音时出现刚采样的数据包围了先采入但未处理惩罚的数据;在放音时,出现播放的速率比实际语音慢。固然,要是用充足大的缓冲,可以克制灌音出现的题目,但放音出现的题目是无法克制的。同时,鉴于存储资源对付嵌入式体系是很宝贵的,故此方案没有实际代价。上文先容的“双Buffer”机制,可以或许使采样和编码之间、解码和播放之间分别互不影响、并发实行,易于控制;但要餍足及时性请求,还要使编解码速率切合采样和播放的请求。语音速率是8 KB/s,而体系中一个采样点用16位表现,故编解码速率不克不及低于16 KB/s(即每秒至少编码16 KB的PCM码,每秒至少解出16 KB的PCM码)。表1是未对体系优化前,测试裸机无操纵体系环境下,处理惩罚512 KB的PCM码(映射128 KB的ADPCM码)所用时间。该测试是利用SoC内部定时器TIMER举行的,见参考文献[1]。测试结果表现,体系优化前没有餍足语音及时性请求。

    

                 表1 优化前编解码速率

  到此,体系目标代码都是在SDRAM中运行的。SEP3203提供了一个很有效的模块——片内高速存储器eSRAM。eSRAM存取速率非常快,可到达0.89 MIPS/MHz,以是对体系性能有很大的优化作用,而SDRAM却只能有其性能的1/3左右。表2是在50 MHz时钟、32位ARM指令环境下,SDRAM和eSRAM的性能比较。各项指标的意义见参考文献[1]。

    

                表2 eSRAM和SDRAM性能比较
  
  但是,SEP3203的20K的eSRAM资源是有限的,不大概也不须要将全部代码都放在此中实行。ARM集成开辟东西提供了Profile成果,可以对整个步伐举行统计阐发,得到各部分代码(重要以标准C函数为单位)所耗时间占体系总时间的百分比。通过对软件体系做Profile阐发,得到各编解码库函数在总编解码时间内所占的百分比,此中重要部分如表3所列。

    

                表3 最淹灭时间的库函数

  以上三个函数在总编解码时间内占用了近80 %的时间(Quan()、Fmult()、Update()的成果分别为量化表查找、定点化的浮点数乘法、状态变量更新),对这些代码优化就会明显进步编解码速率。把这些函数代码整合到文件rec_esram.c中,然后加载remap.scf文件举行内存映像(*.scf文件是ARM ADS集成开辟东西提供的链接脚本文件)。下面是remap.scf文件的内容:

  FLASH 0x30002000 0x1000000
  {
    FLASH 0x30002000
            //体系初始化入口及其他代码存放地点
    {
      init_ice.o (INIT, +First)
      * (+RO,+RW,+ZI)
    }
    32bitRAM 0x00000000 //停止向量表入口地点
    {
      boot_gfd.o (BOOT, +First)
    } 
    ESRAM 0x1fff0000 0x600 //内核库代码存放地点,在eSRAM中
    {
      rec_esram.o (+RO,+RW,+ZI)
    }
    /*堆栈设置部分*/
  }

  举行内存映像后,rec_esram.c的目标代码rec_esram.o(约为1.5KB)就加载到eSRAM(肇始地点为0x1fff0000)中实行了。表4是颠末eSRAM优化后编解码速率测试结果。

    

              表4 eSRAM优化后的编解码速率

  在有操纵体系的环境下,也对语音体系性能举行了测试,如表5所列。该操纵体系为东南大学专用集成电路体系工程技能与研究中间自主研发的面向嵌入式应用的ASIXOS,提供图形用户界面、网络、时钟、及时停止办理等支持和清楚的应用步伐开辟接口。语音体系为该OS环境中的一个应用,有独立的用户界面和底层办事。限于篇幅,本文不再详述。

   从以上测试可以看出,在颠末eSRAM优化后,无论是在裸机上还是在有操纵体系的环境下,编解码速率都能餍足语音及时性的必要,到达了计划请求。

    

              表5 eSRAM优化后的编解码速率

结语

  在计划一款面向多媒体应用的嵌入式体系时,及时性能非常紧张。本文提出了一种基于ARM7TDMI内核的SoC中语音处理惩罚体系的计划方案,并根据该款SoC具有eSRAM的特点,举行了体系性能的优化。对样机的测试表明体系在主频70 MHz、有操纵体系的环境下编码速率为19.88 KB/s,解码速率为22.68 KB/s,到达了语音体系的及时性请求。并且,要是语音处理惩罚作为样机的子体系应用,其硬件计划也支持MP3播放和LCD触摸屏的成果,实现了体系板面积减小、整机本钱低落的目标,不失为一种高效价廉的计划方案。

                 参考文献

1 凌明.基于ARM7TDMI的低本钱手持多媒体配置处理惩罚器.南京:东南大学国度ASIC工程中间,2004
2 苟放肆,杨启刚.基于ADPCM 编码的语音录放体系开辟平台.四川大学学报(天然科学版), 1998.4, Vol.35 No.2:178~182
3 傅秋良,袁宗宝.纯软件实现ADPCM语音压缩算法.电信科学, 1994.10, Vol.10 No.10:21~24
4 Gibson Jerry D. 多媒体数字压缩原理与标准.李煜晖译.北京:电子产业出版社,2002
5 CCITT. Recommendation G.721: A 32kbit/s Adaptive Differential PulseCodeModulation, Red Book,1984
6 CCITT. Recommendation G.711: General Aspects of Digital Transmission Systems and Terminal Equipments, Blue Book, 1988

张兵:硕士研究生,重要研究方向为嵌入式多媒体音频技能研究。