基于ARM7TDMI内核SEP3203处理器的语音信号的软件实时编解码的实现

发布者:chunli最新更新时间:2011-06-08 关键字:ARM7  TDMI内核  SEP3203处理器  实时编解码 手机看文章 扫描二维码
随时随地手机看文章

  本文基于东南大学国家专用集成电路系统工程技术研究中心自主研发的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);

  ③ 采用与编码器相同的方法更新预测滤波器系数;

  ④ 为实现双向通信,同步调整Sp(k);

  ⑤ 利用新的滤波器系数,重复上述5个步骤,解码下一个I(k)。

 


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

  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驱动放音设备(耳机、扬声器等)。[page]

  根据语音实时性的需要,设置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帧数据编码并发。只要编码速度高于采样速度,就不会出现数据的覆盖。处理过程如下(解码时的情况类似):


  4 性能优化

  语音处理的实时性要求很高,否则,若数据处理速度跟不上语音变化速度,就会在录音时出现刚采样的数据覆盖了先采入但未处理的数据;在放音时,出现播放的速度比实际语音慢。当然,如果用足够大的缓冲,可以避免录音出现的问题,但放音出现的问题是无法避免的。同时,鉴于存储资源对于嵌入式系统是很宝贵的,故此方案没有实际价值。上文介绍的“双Buffer”机制,能够使采样和编码之间、解码和播放之间分别互不影响、并发执行,易于控制;但要满足实时性要求,还要使编解码速度符合采样和播放的要求。语音速率是8 KB/s,而系统中一个采样点用16位表示,故编解码速度不能低于16 KB/s(即每秒至少编码16 KB的PCM码,每秒至少解出16 KB的PCM码)。表1是未对系统优化前,测试裸机无操作系统情况下,处理512 KB的PCM码(对应128 KB的ADPCM码)所用时间。该测试是使用SoC内部定时器TIMER进行的,见参考文献。测试结果显示,系统优化前没有满足语音实时性要求。


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

  但是,SEP3203的20K的资源是有限的,不可能也不必要将所有代码都放在其中执行。ARM集成开发工具提供了Profile功能,可以对整个程序进行统计分析,得到各部分代码(主要以标准C函数为单位)所耗时间占系统总时间的百分比。通过对软件系统做Profile分析,得到各编解码库函数在总编解码时间内所占的百分比,其中主要部分如表3所列。


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

  进行内存映像后,rec_esram.c的目标代码rec_esram.o(约为1.5KB)就加载到eSRAM(起始地址为0x1fff0000)中执行了。表4是经过eSRAM优化后编解码速度测试结果。

 


  在有操作系统的情况下,也对语音系统性能进行了测试,如表5所列。该操作系统为东南大学专用集成电路系统工程技术与研究中心自主研发的面向嵌入式应用的ASIXOS,提供图形用户界面、网络、时钟、实时中断管理等支持和清晰的应用程序开发接口。语音系统为该OS环境中的一个应用,有独立的用户界面和底层服务。限于篇幅,本文不再详述。


  从以上测试可以看出,在经过eSRAM优化后,无论是在裸机上还是在有操作系统的情况下,编解码速度都能满足语音实时性的需要,达到了设计要求。

  结语

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

 

关键字:ARM7  TDMI内核  SEP3203处理器  实时编解码 引用地址:基于ARM7TDMI内核SEP3203处理器的语音信号的软件实时编解码的实现

上一篇:基于ARM与FPGA的LCD控制器设计
下一篇:基于FPGA+DSP+ARM的数据传送总线变换器

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

高性能单电源 ARM7 微控制器介绍
LPC2138 是一款高性能单电源 ARM7 微控制器,它具有多种断电模式,用于在微控制器等待执行任务时节省电量。在掉电模式下,LPC2138 在室温下从 3.3 V 电源消耗大约 60 µA,并在掉电启用时消耗大约 30 µA,在掉电禁用时消耗大约 30 µA。考虑到该部件是使用深亚微米工艺构建的,这是相对较好的。然而,在高温下,漏电流显着增加。 本应用笔记的目的是描述使用 LPC2138 时在整个温度范围内具有极低漏电流的低成本方法。这种方法需要一些外部元件,但它可以显着降低漏电流。 本应用笔记将讨论两种恢复微控制器断电前状态的方法。一种方法使用廉价的外部 EEPROM,另一种方法使用可保留用于 EEPROM 仿真的内
[单片机]
高性能单电源 <font color='red'>ARM7</font> 微控制器介绍
SEP3203处理器的FPGA数据通信接口设计
SEP3203处理器是由东南大学国家专用集成电路系统工程技术研究中心设计的16/32位RISC微控制器,面向低成本手持设备和其他通用嵌入式设备。该处理器内嵌ARM7TDMI处理器内核,为用户提供了面向移动终端应用的丰富外设、低功耗管理和低成本的外存配置,整个芯片可以运行在75 MHz。数据通信系统使用的主要功能模块如下:20 KB片上零等待静态存储器(eSRAM);外部存储器接口控制器(EMI);中断控制器(INTC);DMA控制器(DMAC)。 系统中使用的FPGA为Altera公司的Cyclone系列中的EP1C6Q240C8,拥有丰富的I/O资源和逻辑资源,外部接口遵循SRAM时序。它主要负责提供信号的A/D采样频率,并将A
[工业控制]
ARM7&ARM9双核平台的技术分析
嵌入式系统教学平台市场上的主导产品都是基于ARM7或ARM9架构的,一般都认为ARM7属于低端产品、ARM9属于高端产品,也出现了所谓的“ARM7&ARM9覆盖高端&低端的教学平台”。宣传“两套 CPU 子板都是可以自由插拔,一套实验系统变化为两套, ARM7 的实验系统可以实现基础的 ARM 嵌入式教学,主要包括指令实验,基础接口实验, UCOS-II 操作系统实验和 uCLinux 操作系统实验; ARM9 的实验系统可以实现高端的 ARM 嵌入式教学,主要包括扩展接口实验, Linux 操作系统实验和 WinCE 操作系统实验。” 这种观点有误导用户的嫌疑。因为ARM9和ARM7同属于ARMv41,是属于中低端系列的ARM
[单片机]
基于ARM7实时时钟显示设计
简介:把该工程应用于基于LPC2294的开发板外部存储器后,能够脱机运行,VFD实时时钟全部点亮,并且显示时间正确。LPC2294适用于开发税控设备。税控设备上有较多的模块,VFD客显模块是其中之一,可用来显示时间。 ARM(Advarlced RISC Machine)是设计这种处理器内核的公司的名字,ARM核并非芯片。ARM核与其他部件,如RAM、ROM、片内外设,组合在一起才构成现实的芯片。ARM作为一类微处理器的通称,作为一种低功耗、高性能的32位嵌入式微处理器,现在已经被广泛应用在各个领域中。 ARM应用的开发工具主要包括集成开发环境IDE、评估板和JTAG仿真器等。国内使用较多的IDE为ARM公司的SDT、AD
[单片机]
基于<font color='red'>ARM7</font>的<font color='red'>实时</font>时钟显示设计
基于ARM7的畜牧养殖智能消毒机器人控制系统设计
1 总体方案设计 畜牧养殖智能消毒机器人控制系统由机器人智能控制模块、监视模块、及无线网络通讯模块等三大部分组成。工作过程是通过接入互联网的手机或者微型计算机客户端通过无线网络向远程的机器人发送控制指令代码,期间传输信号由发送端使用加密狗加密。当信号经互联网发送到接收终端时,智能消毒机器人网络模块把接收的指令传送到处理器,处理器指示驱动模块驱动智能消毒机器人执行动作。运动的同时监视模块把采集到的图像通过无线互联网传输到客户机端,其整体结构如图1所示。 1.1 智能控制模块 此模块是智能消毒机器人的核心部分。采用的是嵌入式系统设计,可以准确高效地运行及处理数据。控制器通过网络组件WIFI或者GPRS与外部网络进行数据通讯,
[单片机]
基于<font color='red'>ARM7</font>的畜牧养殖智能消毒机器人控制系统设计
使用ARM7-LPC2148控制伺服电机的教程
在本教程中,我们将使用 ARM7-LPC2148 控制伺服电机。伺服电机比步进电机具有低功耗的优势。当到达所需位置时,伺服电机停止其功耗,但步进电机继续消耗功率以将轴锁定在所需位置。伺服电机主要用于 机器人项目 ,因为它们的准确性和易于操作性。 伺服电机 伺服电机 是直流电机、位置控制系统和齿轮的组合。 伺服电机的旋转是通过向其施加PWM信号来控制的,PWM信号的宽度决定了电机的旋转角度和方向。在这里,我们将在本教程中使用 SG90 伺服电机 ,它是最受欢迎和最便宜的电机之一。SG90 是 180 度伺服。所以有了这个伺服,我们可以将轴定位在 0-180 度之间: 工作电压:+5V 齿轮类型:塑料 旋转角度:0 至 180
[单片机]
使用ARM7-LPC2148控制伺服电机的教程
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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