基于ARM7TDMI的SoC语音处理系统的设计

发布者:科技火箭最新更新时间:2012-10-25 来源: 21ic 关键字:ARM7TDMI  SoC  语音处理系统  双Buffer机制 手机看文章 扫描二维码
随时随地手机看文章

引 言

  随着微电子和计算机技术的高速发展,许多嵌入式应用系统应运而生。其中,各种语音处理系统不断被开发出来,在各行业得到广泛应用,如语音报站器、自动解说装置、采访录音笔等,为人类的生产、生活提供了极大的便利。本文基于东南大学国家专用集成电路系统工程技术研究中心自主研发的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。以下为系统工作过程。[page]

  
                图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]。测试结果显示,系统优化前没有满足语音实时性要求。[page]

    
                 表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 datasheet http://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[2]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[3]. G.728 datasheet http://www.dzsc.com/datasheet/G.728_2060768.html.
[4]. G.729 datasheet http://www.dzsc.com/datasheet/G.729_2060769.html.
[5]. DMAC datasheet http://www.dzsc.com/datasheet/DMAC_1401012.html.
[6]. PMU datasheet http://www.dzsc.com/datasheet/PMU_1198106.html.
[7]. 凌明.基于ARM7TDMI的低成本手持多媒体设备处理器.南京:东南大学国家ASIC工程中心,2004
[8].  苟大举,杨启刚.基于ADPCM 编码的语音录放系统开发平台.四川大学学报(自然科学版), 1998.4, Vol.35 No.2:178~182
[9]. 傅秋良,袁宗宝.纯软件实现ADPCM语音压缩算法.电信科学, 1994.10, Vol.10 No.10:21~24
[10].  Gibson Jerry D. 多媒体数字压缩原理与标准.李煜晖译.北京:电子工业出版社,2002
[11].  CCITT. Recommendation G.721: A 32kbit/s Adaptive Differential PulseCodeModulation, Red Book,1984
[12].  CCITT. Recommendation G.711: General Aspects of Digital Transmission Systems and Terminal Equipments, Blue Book, 1988

关键字:ARM7TDMI  SoC  语音处理系统  双Buffer机制 引用地址:基于ARM7TDMI的SoC语音处理系统的设计

上一篇:ST MP34DT01和STM32数字MEMS麦克风解决方案
下一篇:基于DSP、DDS和ARM的雷达中频信号模拟器设计与实现

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

基于DE2的开源片上系统Freedom E310移植
引言:伯克利大学于2014年发布了开源指令集架构RISC-V,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域[1]。RISC-V自发布以来受到多方关注和参与,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC(System on Chip)采用RISC-V架构,其中Rocket-Chip就是由伯克利大学发布的基于RISC-V的可配置SoC,通过配置不同的参数可以得到不同性能、应用不同场合的SoC。RISC-V的迅速发展还激励其设计人员成立了SiFive公司,专注于定制化SoC设计,其产品线包括如下: (1)开源处理器核Cor
[嵌入式]
大联大诠鼎集团推出基于高通QCS400 SoC的2.1声道智能音响方案
致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下诠鼎推出基于高通QCS400系列SoC的智能音响参考设计方案。 该系列是高通专门针对人工智能领域,面向更智能的扬声器、条形音箱、家具助理和影音接受设备等而设计。这款SoC系列产品当中集成了高性能、低功耗计算功能以及出色的音频技术,包括集成计算、网状Wi-Fi、低功耗蓝牙网状网络、语音UI和音频技术等,且支持杜比全景声、DTS:X及众多安全特征,并采用双DSP优化音质。此举旨在为更智能的音频和物联网(IoT)应用高度优化并且支持人工智能功能的解决方案。 图示1-高通QCS400系列SoC 该家族目前拥有QCS403、QCS404、QCS405、QC
[嵌入式]
大联大诠鼎集团推出基于高通QCS400 <font color='red'>SoC</font>的2.1声道智能音响方案
一种基于ARM内核SoC的FPGA 验证环境设计方法
引 言 随着片上系统(SoC) 设计的复杂度和性能要求的不断提高, 软硬件协同设计(Hardware/ Software Co2de2sign) 贯穿于SoC 设计的始终。软硬件协同设计是一个以性能和实现成本为尺度的循环优化过程,验证设计是其中必不可少的重要环节。目前大多数公司提供的开发验证系统(开发板) 存在两个弱点:一是开发板的性能、规模难以根据特定的设计需求灵活、自由地调节;二是开发板的功能大多数只能进行软件代码的调试,即使ARM公司提供的开发平台也只能调试部分硬件。这两个弱点均在一定程度上限制了软硬件划分的探索空间,使所设计的SoC 不能获得更佳结构实现的能力。 本文利用现场可编程门阵列(FPGA) 重用性好、现场灵活性好
[单片机]
一种基于ARM内核<font color='red'>SoC</font>的FPGA 验证环境设计方法
提高IP整合效率SoC开发时程大幅缩减
  矽智财(IP)整合逐渐被视为开发SoC的关键挑战,而诸多因素共同导致IP整合更加困难。有鉴于此,EDA产业计画以随插即用(Plug And Play)类型的标准化IP来因应,使其在IP整合的过程中,发挥如同「乐高积木」般的效用。   矽智财(IP)整合逐渐被视为开发SoC的关键挑战,而诸多因素共同导致IP整合更加困难。日益复杂的系统、IP的重复使用、IP可组态性和紧凑排程等诸多问题的共同影响之下,传统的流程​​与方法已不再管用。EDA产业已将IP整合视为下一波重大挑战,并计画以随插即用(Plug And Play)类型的标准化IP来做因应,使其在IP整合的过程中,发挥如同「乐高积木」般的效用。这种乐高概念的解决方案已问世多年
[手机便携]
特定用途集成电路芯片(ASIC)的成本计算
大规模集成电路芯片, 比如SOC(System on chip),由多核CPU和GPU组成,用于智能手机主芯片、车载多媒体和导航系统, 或者特定用途的集成电路芯片ASIC (Application specified integrated circuit), 用于电子控制模块的信号处理,算法运行和控制执行部件, 比如自动泊车、启动安全气囊、自动驾驶的雷达信号分析等。这些芯片是未来数字化、智能化的核心元件。但是,它们的成本是怎样构成? 客户所能知道的就是半导体公司或芯片贸易商(Distributor)的报价。特定用途集成电路ASIC芯片的成本构成对绝大多数用户来说更是一无所知。作者通过20多年来积累的成本工程经验和对集成电路芯片制造
[汽车电子]
特定用途集成电路芯片(ASIC)的成本计算
基于ARM7TDMISoC语音处理系统的设计
摘要:基于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优化 引 言   随着微电子和计算机技术的高速发展,许多嵌入式应用系统应运而生。其中,各种语音处理系统不断被开发出来,在各行业得到广泛应用,如语音报站器、自动解说装置、采访录音笔等,为人类的生产、生活提供了极大的便利。
[应用]
美高森美与Solectrix推出基于SmartFusion2 SoC FPGA的系统级模块
致力于在功耗、安全、可靠和性能方面提供差异化半导体技术方案的领先供应商美高森美公司(Microsemi Corporation,纽约纳斯达克交易所代号:MSCC) 和独立的专业嵌入式系统开发服务提供商Solectrix宣布提供基于美高森美SmartFusion 2 系统级芯片(SoC) 可编程逻辑器件(FPGA)的高性能、低功耗、高安全性和超紧凑型数字信号处理(DSP)系统级模块(SOM)解决方案SXoM-SF2,这款器件带有SmartFusion2 SoC FPGA 和DDR3存储器,可以快速构建众多更高性能应用,显着缩短客户的上市时间。 美高森美营销总监Prem Arora表示: 美高森美针对视频和图像应用建立功能强大的产品
[嵌入式]
智邦的安全便携式无线VoIP网关采用英飞凌SoC
英飞凌(Infineon)日前宣布,智邦(Accton)已在新款安全便携式无线VoIP网关器VG2211i采用其无线网络处理器系统单芯片(SoC) WildPass,该网关器可作为无线网络基地台以及VoIP路由器,能以无缝及低成本方式在现有宽带设备中添加WLAN和VoIP功能。 WildPass芯片是一款CPE解决方案,其多重接口包括:提供应用于Voice over IP中的PCM和SPI,提供MII以连接至宽带上行连接技术(如xDSL、光纤或线缆调制解调器),并提供SDRAM和闪存(Flash)给外部内存装置及USB2.0。 该芯片能让在一个网络中的许多PC或因特网的装置(随选视讯媒体服务器、游戏机、个人媒体网关等等)同时使
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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