基于ARM7TDMI的SoC语音处理系统的设计.pptx_第1页
基于ARM7TDMI的SoC语音处理系统的设计.pptx_第2页
基于ARM7TDMI的SoC语音处理系统的设计.pptx_第3页
基于ARM7TDMI的SoC语音处理系统的设计.pptx_第4页
基于ARM7TDMI的SoC语音处理系统的设计.pptx_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式开发教程之基于ARM7TDMI的SoC语音处理系统的设计,引 言 1 G.721标准概述 2 芯片简介 3 系统设计 3.1 硬件系统 3.2 软件系统 4 性能优化 结语,随着微电子和计算机技术的高速发展,许多嵌入式应用系统应运而生。其中,各种语音处理系统不断被开发出来,在各行业得到广泛应用,如语音报站器、自动解说装置、采访录音笔等,为人类的生产、生活提供了极大的便利。本文基于东南大学国家专用集成电路系统工程技术研究中心自主研发的arm7TDMI内核的32位嵌入式SoCSEP3203处理器,采用G.721标准ADPCM算法,实现了语音信号的软件实时编解码,为语音处理应用提供了一种有效的

2、嵌入式解决方案。,引言,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)进行量化,得到

3、ADPCM码字I(k); 通过自适应反量化模块对I(k)计算得到量化差分预测信号Dq(k); 根据重建信号Sr(k)=Se(k)+Dq(k)和Dq(k)更新预测滤波器系数; 利用新的系数,计算得到Se(k+1),重复上述5个步骤,压缩下一个语音采样数据。,1嵌入式开发教程之G.721标准概述,解码过程: 通过自适应反量化和自适应预测得到Dq(k)和Se(k),得到语音重建信号Sr(k); 对重建信号Sr(k)进行PCM格式转换,得到PCM码字Sp(k);, 采用与编码器相同的方法更新预测滤波器系数; 为实现双向通信,同步调整Sp(k); 利用新的滤波器系数,重复上述5个步骤,解码下一个I(k)

4、。,嵌入式开发教程,SEP3203芯片为系统处理核心,总体结构框图如图2所示。该芯片是东南大学国家专用集成电路系统工程技术研究中心自主设计的基于arm7TDMI的32位SoC,采用AMBA2.0标准,0.25mCMOS工艺,主要面向嵌入式中低端手持设备。片上提供AC97控制器、外存接口EMI、6通道DMAC、TIMER、PMU、INTC等模块。其中,语音系统使用的模块有:EMI,负责控制对外存的访问;片上存储器eSRAM,用于优化耗时的核心代码;AC97,提供AC97标准的音频接口;DMAC,用于实现大数据量的DMA传送。,2嵌入式开发教程之芯片简介,嵌入式开发教程,图2 SEP3203芯片结

5、构框图,3.1 硬件系统硬件系统框图如图3所示。虚线框内是片内模块;框外为片外器件,包括外存(SDRAM/SRAM/Flash等)、CODEC等。Philips公司的UCB1400作为CODEC。以下为系统工作过程。,3嵌入式开发教程之系统设计,图3 语音处理硬件系统框图, 编码。CODEC采样语音数据,暂存在AC97的输入FIFO中。然后,由DMAC通过中断方式,将数据传送到指定存储区域。在arm7TDMI的控制下,运行G.721编码程序,将语音PCM数据压缩为ADPCM码。 解码。运行G.721解码程序,把存储器中的ADPCM码解码为PCM码。每解满1帧数据后,由DMAC通过中断方式把数据

6、传送到AC97的输出FIFO,通过CODEC驱动放音设备(耳机、扬声器等)。根据语音实时性的需要,设置UCB1400采样速率为8 kb/s。该芯片用16位表示一个采样点,故采样速率为128 kb/s。编码后,每个采样点用4位表示,故传输率为32 kb/s。,嵌入式开发教程,软件流程如图4所示。每帧数据为64个采样点,共计为128字节、16位表示的PCM码,编码后为32字节、4位表示的ADPCM码。,3.2嵌入式开发教程之软件系统,图4 编解码的软件流程,首先对系统初始化,包括对AC97、CODEC、DMAC等模块配置,以及有关状态变量的初始化。然后,采样第1帧语音数据,采样结束进入DMA中断,

7、在中断处理中再次配置DMAC,触发新的采样传输,并对刚采样的数据编码。由于编码由内核执行,采样由CODEC和DMA完成,故对第K帧编码和对第K+1帧采样是并发进行的。,(1) 编码,同编码过程类似,首先对系统进行初始化,然后解码第1帧音频数据。解码完配置DMAC,触发数据传送至AC97输出FIFO,通过放音设备播放录音。同样,解码第K+1帧数据与播放第K帧数据并发进行。本设计采用“双Buffer”机制缓冲数据。“双Buffer”是指:开辟两个帧缓冲区为Buf0、Buf1,缓冲标志Flg初始为0。编码时,采样第1帧数据,DMA从AC97输入FIFO向Buf0传输数据,传输完后,设置Flg=1,编

8、码器从Buf0中取数据编码;同时,DMA向Buf1中传送新数据。周而复始,每帧数据采样完,设置Flg=!Flg,编码器从Buf!Flg缓冲区取数据编码,DMA传送采样数据的目的地址为Buf Flg,从而实现了第K+1帧数据采样和第K帧数据编码并发。只要编码速度高于采样速度,就不会出现数据的覆盖。处理过程如下(解码时的情况类似):,(2) 解码,Flg=0;Psmp=Buf Flg;Run_Sample(Psmp);/采样第1帧数据While(1) Flg=! Flg; Penc=Buf !Flg;/编码指针指向缓冲区Buf !FlgPsmp=Buf Flg;/采样指针指向缓冲区Buf FlgR

9、un_Sampler(Psmp); Run_Encoder(Penc); /启动采样器和编码器,两者并发,语音处理的实时性要求很高,否则,若数据处理速度跟不上语音变化速度,就会在录音时出现刚采样的数据覆盖了先采入但未处理的数据;在放音时,出现播放的速度比实际语音慢。当然,如果用足够大的缓冲,可以避免录音出现的问题,但放音出现的问题是无法避免的。同时,鉴于存储资源对于嵌入式系统是很宝贵的,故此方案没有实际价值。上文介绍的“双Buffer”机制,能够使采样和编码之间、解码和播放之间分别互不影响、并发执行,易于控制;但要满足实时性要求,还要使编解码速度符合采样和播放的要求。语音速率是8 KB/s,而

10、系统中一个采样点用16位表示,故编解码速度不能低于16 KB/s(即每秒至少编码16 KB的PCM码,每秒至少解出16 KB的PCM码)。表1是未对系统优化前,测试裸机无操作系统情况下,处理512 KB的PCM码(对应128 KB的ADPCM码)所用时间。该测试是使用SoC内部定时器TIMER进行的,见参考文献1。测试结果显示,系统优化前没有满足语音实时性要求。,4嵌入式开发教程之性能优化,表1 优化前编解码速度,到此,系统目标代码都是在SDRAM中运行的。SEP3203提供了一个很有用的模块片内高速存储器eSRAM。eSRAM存取速度非常快,可达到0.89 MIPS/MHz,所以对系统性能有

11、很大的优化作用,而SDRAM却只能有其性能的1/3左右。表2是在50 MHz时钟、32位arm指令情况下,SDRAM和eSRAM的性能比较。各项指标的意义见参考文献1。,嵌入式开发教程,表2 eSRAM和SDRAM性能比较,但是,SEP3203的20K的eSRAM资源是有限的,不可能也不必要将所有代码都放在其中执行。arm集成开发工具提供了Profile功能,可以对整个程序进行统计分析,得到各部分代码(主要以标准C函数为单位)所耗时间占系统总时间的百分比。通过对软件系统做Profile分析,得到各编解码库函数在总编解码时间内所占的百分比,其中主要部分如表3所列。,嵌入式开发教程,表3 最耗费时

12、间的库函数,以上三个函数在总编解码时间内占用了近80 %的时间(Quan()、Fmult()、Update()的功能分别为量化表查找、定点化的浮点数乘法、状态变量更新),对这些代码优化就会明显提高编解码速度。把这些函数代码整合到文件rec_esram.c中,然后加载remap.scf文件进行内存映像(*.scf文件是arm ADS集成开发工具提供的链接脚本文件)。下面是remap.scf文件的内容:FLASH 0 x30002000 0 x1000000FLASH 0 x30002000/系统初始化入口及其他代码存放地址init_ice.o (INIT, +First)* (+RO,+RW,+

13、ZI),嵌入式开发教程,32bitRAM 0 x00000000 /中断向量表入口地址boot_gfd.o (BOOT, +First) ESRAM 0 x1fff0000 0 x600 /核心库代码存放地址,在eSRAM中rec_esram.o (+RO,+RW,+ZI)/*堆栈设置部分*/进行内存映像后,rec_esram.c的目标代码rec_esram.o(约为1.5KB)就加载到eSRAM(起始地址为0 x1fff0000)中执行了。表4是经过eSRAM优化后编解码速度测试结果。,嵌入式开发教程,表4 eSRAM优化后的编解码速度,在有操作系统的情况下,也对语音系统性能进行了测试,如表5所列。该操作系统为东南大学专用集成电路系统工程技术与研究中心自主研发的面向嵌入式应用的ASIXOS,提供图形用户界面、网络、时钟、实时中断管理等支持和清晰的应用程序开发接口。语音系统为该OS环境中的一个应用,有独立的用户界面和底层服务。限于篇幅,本文不再详述。 从以上测试可以看出,在经过eSRAM优化后,无论是在裸机上还是在有操作系统的情况下,编解码速度都能满足语音实时性的需要,达到了设计要求。,表5 eSRAM优化后的编解码速度,在设计一款面向多媒体应用的嵌入式系统时,实时性能非常重要。本文提出了一种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论