G.723标准数字录音系统设计

如果要将其录音以数字形式的数据保存,则应将其模拟录音信号变换成数字形式的数据,这就给原始数据的保存带来诸多不便。因此,笔者按g.723标准设计了一种数字录音机,它以adsp-2181作为语音处理器和系统控制器,取消了普通录音机的机械部分和磁带,以大容量的闪速存储器(flash ram)作为数字语音数据存储器。该样机体积很小,录音时间长,没有机械噪声及机械故障,很有实用价值。
1 g.723标准简介和系统结构框图
1.1 g.723标准简介
g.723是itu-t在1996年制订成型的一种多媒体语音编解码标准。其典型应用包括ip电话服务、h.324视频电话、无线电话、数字卫星系统、数电倍增设备(dcme)、公共交换电话网(pstn)、isdn及各种多媒体语音信息产品。g.723标准传输码率有5.3kb/s和6.3kb/s两种,在编程过程中可随时切换。该标准主要包含了编码算法和解码算法。原理是:从采集的语音信号中解析出声道模型参数,构造一个合成滤波器,采用合适的激励源激励,编码传输的参数主要是激励源与合成滤波器的参数。5.3kb/s的编码器采用代数码线预测激励(acelp);6.3kb/s的编码器则采用多脉冲最大似然量化(mp-mlq)激励。根据传输编码参数,可重构激励源与合成滤波器进行解码,还原出来的数字语音信号经d/a转换器转换成模拟语音信号。关于g.723的编码和解码的详细说明见参考文献[2]。
g.723算法对语音信号有很好的编解码效果,同时也可处理音乐和其它声音信号,典型输入是64kb/s(8k%26;#215;8)或128kb/s(8k%26;#215;16)的a律或μ律的pcm采样语音信号。每次处理一帧语音信号,每帧240个采样点(30ms)。在5.3kb/s的码率下,每帧语音被压缩成20个字节传输;在6.3kb/s的码率下,每帧语音被压缩成24个字节传输。
1.2 数字录音系统的结构框图
系统框图主要由图1所示的五部分组成。
ad73311用来进行a/d和d/a转换,它集成了模/数和数/模转换功能,而且可编程控制,使用极其方便;adsp-2181为系统的核心数字处理器[3],时钟频率为33mhz,其功能强大;km29n32000为闪速存储器(flash ram),用来存储已压缩的语音数据;at27c010(eprom)用来存放控制adsp-2181工作的程序;lcd用来显示系统当前的工作状态。系统的工作流程是:模拟语音信号经ad73311采样并经a律或μ律压缩后转换成pcm数据,通过adsp-2181的串行口送到adsp-2181,adsp-2181再将数据进行编码和压缩后送到闪速存储器km29n32000中存储起来;录音回放时,从km29n32000读取压缩数据,送回adsp-2181进行解码,再送到ad73311进行d/a转换,输出模拟语音信号。整个过程都是由存放在at27c010中的dsp程序控制,有条不絮地工作。lcd显示系统当前的工作状态。
2 系统各主要部分的原理与接口
2.1 ad73311与adsp-2181的接口电路及编程控制
2.1.1 ad73311与adsp-2181的接口电路
ad73311具有a/d和d/a转换功能,采样频率为8khz~64khz,可以编程控制,采样字长为16位。ad73311具有大信噪比、输入输出增益可编程控制、低工作电压(2.7~5.5v),并且一片两用的特点,是一种很受欢迎的芯片。ad73311与adsp-2181的接口电路如图2所示。 ad73311完成模拟语音信号的采集和数字语音信号的回放工作。从图2中看出,信号从vin处输入,在vout处输出回放语音信号。vin处接麦克风,vout处接扬声器。与adsp-2181的通信通过串口进行,从sdo引脚向adsp-2181输出数据,从sdi引脚接收adsp-2181数据,发送和接收可同时进行。时钟信号由adsp-2181的slck引脚接入。编程时必须先初始化ad73311的工作状态,依次设定采样率、输入输出增益、提前时间等,再让其工作在数据传输模式下就可正常工作。ad73311进入数据传输模式后一直进行a/d或d/a转换。在编程控制中,应让adsp-2181的串口一直工作在接收中断方式,这样可使数据发送与接收的速率保持一致。要改变工作模式可将其reset引脚置低,再置高,这样就可重新设定了。
2.1.2 ad73311的编程
ad73311是一种可编程的数据转换器,内含五个8位控制寄存器cra~cre,用于设定工作状态,控制输入输出。ad73311通过串行口与处理器接口,传送的是16位数据,有五种工作模式,分别为:程序模式、数据模式、混合模式、模拟环路模式、数字环路模式。其中前三种是正常的工作模式,后两种是调试模式,仅在调试时使用。五种工作模式由内部的控制寄存器a中的四位(cra0~3)控制。
程序模式:ad73311启动或重置后即工作于程序模式,此时ad73311串行口输入的数据将作为命令字以初始化内部控制寄存器组,之后ad73311根据初始化命令字进入相应的工作模式,在此之前ad73311串行口输出的码字是无效的。数据模式:此时ad73311串行口输出的是a/d转换的16位数据,输入的是d/a转换的16位数据。ad73311一旦进入数据模式,就不能再得到控制信息,所以就永远处于这一模式,除非重启动。这时硬件上可采用发送接收帧同步信号同步方式。混合模式:此时16位码字可能是控制字,也可能是数据。码字的最高位msb用来标识这个码字是控制命令字(msb=1)还是数据(msb=0,低15位是有效数据)。在混合模式下,adsp-2181可以根据系统的运行状况适时改变ad73311的工作参数,如放大器的放大倍数等。这时硬件上可采用发送接收帧同步信号异步方式,便于adsp-2181的自主控制。
ad73311控制采样率由时钟分频电路完成。时钟分频电路将从dmclk引脚输入的外部时钟频率mclk通过主频时钟因子分频为内部时钟频率dmclk,mclk有五种频率选择,由内部控制寄存器b中的crb4~6三位控制。dmclk决定了ad73311的采样频率,它也是ad73311串行口的帧同步频率。dmclk再经串行时钟分频因子分频为串行时钟频率sclk,dmclk有四种选择,由内部控制寄存器b中的grg2~3两位控制。
通过编程控制寄存器d,可控制输入输出的增益。输入增益ig可在0~38db之间调整,输出增益og可在-15~6db之间调整。ad73311的具体编程流程图如图3所示,控制程序如下: ax0=dm(0x3fe5); {for 2181-pf0 connect with ad73311-reset} ar=ax0 and 0xfffe; {pf0 pin reset} dm(0x3fe5)=ar; {reset ad73311 to program} nop; {delay} nop; nop ax0=dm(0x3fe5); ar=ax0 or 0x0001; {2181-pf0 set} dm(0x3fe5)=ar; {ready to program} ax0=0x82f9; {写控制寄存器crc,5v电源,使能adc和dac} tx0=ax0; idle; ax0=0x811b; {写控制寄存器crb,分频,设置8k采样率} tx0=ax0; idle; ax0=0x8320; {写控制寄存器crd,输出输入增益为0} tx0=ax0; idle; ax0=0x8400; {写控制寄存器cre,dac延迟量为0} ax0=ax0; idle; ax0=0x8001; {写控制寄存器cra,进入数据传输模式} tx0=ax0; idle; 2.2 闪速存储器与adsp-2181的接口电路闪速存储器采用韩国三星公司生产的km29 n32000,容量为4m%26;#215;8=32mbit,分成512块,每块有16页,每页528个字节。可进行100万次擦写,数据保存时间为10年,通过编程可自动进行擦写。这里用于保存录音数据,其数据保存不需要充电维持。
从理论上说,如果采用g.723标准算法,在8khz的采样率下,采用5.3kb/s的码率,录音时间最大值约为100分钟;在6.3kb/s码率下最大录音时间约为83分钟,比常用的录音磁带略长,可以满足般的录音要求。如果采用km29v64000(8m%26;#215;8=64m bit),录音时间可增加一倍。如果需要更长的录音时间,可选择容量更大的闪速存储器。有关km29n3200的详细特性见参考文献[4]。
km29n32000与adsp-2181的接口电路如图4所示,它的读写及擦除操作说明如下: (1)读操作首先让cle置高,进入命令模式。此时ale置低,从i/o口输入00h(表示读操作控制命令字),接下来cle置低,ale置高,进入地址加载模式,将要访问的24位地址(a0~a23)分三次由低到高从i/o口磅入。适当延迟后,将ale置低,就可连续地进行读操作,每次读取一帧数据。得到的数据是加载地址开始的。整个过程ce必须保持低电平。 (2)写操作写操作过程与读操作类似,开始控制命令字是80h,将加载地十分三次送入后,适当延迟,就可连续地向闪速存储器写入一帧数据。数据写完时,cle置高,送入10h命令字,进行写操作。 (3)擦除操作 保存数据时,如果对应存储区已经有数据,就必须先擦除掉原来数据。每次擦除一次,每块8k字节。首先输入控制命令字60h,接着把块地址分两次送出,再输入d0h命令字进行块擦除。擦除完后,输入命令字70h,可读取擦除状态。如果接下来读取的数据的lsb位为0则表示擦除成功,为1则表示产生了错误,可重新进行擦除操作。如果再次错误,可能是对应单元出错了。在访问flash ram的内存操作中,最重要的是要注意各个信号的时序。必须严格按照说明书的时序图进行操作才能实现正常的功能。
2.3 lcd显示及接口电路
在本系统中用lcd显示当前系统处于的状态,如录放状态、进行的时间等。可由adsp-2181进行控制,设定显示方式及内容。所用的是点阵式液晶显示器,为日立公司的hd44780a00lcd。里面有专用集成电路作为点阵的控制驱动,只要直接送入数据和指令就可实现所需的显示。在本系统中,由于lcd使能信号脉宽较大,无法直接由dsp产生,因此通过触发单稳触发器74ls123来产生lcd使能信号。接口电路如图5所示。通过调节连接74ls123的r和c值可控制输出q的脉宽tw。当c≥1000pf时为: tw=k%26;#183;r%26;#183;c 其中k为常数,与外界温度及外接电容c有关,在0.2~0.6间选择。 当c≤1000pf时,tw估计值如下: tw=6+0.05c(pf)+0.45r(kω)c+11.6r 当74ls123引脚a出现一个下降脉冲时,输出q产生一个高电平脉冲,脉宽由r和c决定,驱动lcd工作。录音时lcd上面一行显示record,下行则显示进行的时间;放音时上面一行显示play,下行也显示进行的时间。时间的显示通过adsp-2181里面定时器中断进行。
3 系统控制软件设计
adsp21xx系列提供了一整套软件开发工具及相应的仿真器开发平台,给系统的调试与仿真提供了极大的方便。软件开发系统包括系统建造器、带运行时时间库的c编译器、汇编器、连接器、prom划分器等。通过编译连接汇编源程序,可以生成exe文件。此文件是存储映像文件,可以加载到仿真器上进行仿真;调试成功后,通过prom划分器和eprom烧制设备可以写入eprom,系统复位时dsp加载eprom程序便可自动运行,控制整个系统的工作。系统软件设计采用自举和中断控制两种方式。自举方式系统一上电,adsp-2181读取eprom中的程序,自动运行程序去控制整个系统工作。
中断控制利用了adsp-2181的两个中断,即sport0接收中断和timer中断。adsp-2181的sport与ad73311相连。当得到一个采样数据时,产生一个接收中断,adsp-2181读取便得到采样数据。由于sport0是全双工的,当产生接收中断时,同时可以发送数据,一方面在录音时可以得到回放效果;另一方面则在播放时可直接发送数据,而对采样数据置之不理,这样便于解码数据以固定的码率回放。timer中断定时检测外部控制引脚状态,包括录音、放音、快放及码率转换4个引脚,每个引脚的0/1状态对应两种控制,即开始录音/停止录音、开始放音/停止放音、5.3kbps/6.3kbps码率转换及快放状态,共有七个状态。 dsp汇编语言的结构与asm汇编语言类似,其开头部分对应中断向量表。工作在中断方式时,则向量表对应中断处一般为一条跳转语句;产生中断时,则跳到相应语句执行中断控制功能。主程序的中断设置部分如下: jump start;nop;nop;nop; {reset start interrupt} rti;nop;nop;nop; {irq2} rti;nop;nop;nop; {irql1} rti;nop;nop;nop; {sport0 transmit} jump sportreceive;nop;nop;nop; {sport0 receive} rti;nop;nop;nop; {irqe} rti;nop;nop;nop; {bdma} rti;nop;nop;nop; {sport1 transmit} rti;nop;nop;nop; {sport1 receive} jump settimer;nop;nop;nop; {timer interrupt} rti;nop;nop;nop; {powerdown} sporto和timer中断控制说明如下: (1)sporto接收数据中断在程序中,数据处理集中在此进行。主要过程是:在录音时,每收到240个采样数据,就进行g.723编码,将编码结果保存到闪速存储器中;在播放时,每次读取24个数据,将读取的数据进行解码,再通过串行口发送出去,经扬声器还原成语音信号。其流程如图6所示。(2)timer中断 timer中断用来检测用户的控制信息及显示运行时间信息。用户控制有4个,即码率选择、录音控制、放音控制及快退控制。对应这4个控制引脚,初始设定为输入态,然后通过检测各个引脚的电平设定工作态。其流程如图7所示。
4 系统调试
系统调试要使用ad公司提供的adsp21xx系列的整套软件开发工具和仿真器。笔者使用adsp-2181-ez-ice仿真器进行调试。仿真器上自带33mhz的2181,调试支持20个断点,可单步、设断点和全速运行,可随时观察和修改寄存器和存储单元的值。仿真器上提供了一个14针的仿真接口,仿真器通过此接口仿真控制目标系统。仿真器与计算机间有一个rs-232接口,通过数据进行连到计算机的串行口上,在仿真器开发平台上就可以进行软件调试。系统调试时遇到的主要问题是存储器读写及lcd的显示问题。开始时发现写进闪速存储器的数据与读出的数据不符。经仔细分析,发现是由于没有严格按照闪速存储器的读写操作时序进行编程,或是延迟量不够,或是两个信号的先后次序弄反了,数据可能根本没有写进去,读出的数据当然是错的。在严格按照其说明书的时序进行编程控制后,数据的读写擦除操作完全正常。在播放录音数据时,曾出现声音跳变不连续的问题,经分析发现原因在于地址定位时出错。因为对闪速存储器担任时每次读写都是一帧数据,而编解码时一次操作的数据为20/24个字节,两者长度不一样,需要进行转换操作。
本系统中adsp-2181处理器的机器周期为30ns,经设定最大的等待周期为7机器周期后也才有240ns,而lcd的工作使能脉宽至少要300ns。因此在硬件上增加了一单稳延迟电路,这样便解决了此问题。

手机上网、打电话,你知道信号是从哪里来的吗?
直流负载箱和交流负载箱特点介绍
云天励飞最新发布全球首款自主可控的神经网络处理器芯片
基于工业交换机的隧道综合监控系统方案的实现和特点分析
传感器未来的发展方向将会是工业控制领域
G.723标准数字录音系统设计
Nikola Motor Company的汽车公司起诉特斯拉,赔偿20亿美元
一线大牌激光电视的横评对比,且看有你喜欢的那一款吗?
人形机器人落地的解题方法
AcrelCloud-1000变电所运维云平台系统研究与应用
瞬态抑制二极管阵列 USBLC6-2SC6 低结电容0.8pF
电热蒸汽发生器工作原理功能及用途
人工智能正在向具有“高情商”发展
2021年将成为激光雷达前装规模量产元年
运放的参数和选择的汇总
数据中心定制化配电需要提供哪些解决方案
AI智能客服机器人全面上线会带来怎样的体验
台积电公布了2018年Q4季度财报,当季营收2897.7亿新台币
精谱测控无纺布污点检测设备为企业生产提供优质服务
如何选择一款优质的MOS管来让自身的太阳能控制器更加可靠呢?