"); //-->
摘要:msm9841是日本oki(冲)电气半导体公司研制的单声道/立体声语音控制处理大规模集成芯片。文中介绍了该芯片的结构、特点、工作原理及其在数字语音录放机中的应用。
关键词:录放机 msm9841 fifo
1 引言
msm9841是日本oki(冲)电气半导体公司研制的带有1kbitfifo(先进先出)存储器的单声道/立体声语音控制处理大规模集成芯片。它可以很方便的同外部系统或非半导体存储器进行接口,且具有多种录放模式。由于该芯片采用了较新的adpcm2算法,因而可以保证非常高的语音回放质量。msm9841的录音和回放功能可以由微处理器通过8/16bit的总线接口来进行控制。msm9841采用56脚qfp封装,电源电压为2.7v~5.5v,振荡频率为4.096mhz时的代样频率有以下值可供选择:4.0 khz、6.4 khz、8.0 khz、12.8 khz、16.0 khz、32.0 khz(仅用于回放);振荡频率为5.6448 mhz时,采样频率可以选择22.05 khz或44.1 khz(仅用于回放)。msm9841具有8/16bit总线接口和dma接口且内含低通滤波器、14bita/d和d/a转换器,采样频率为16 khz或更低;具有由用户定义(256/512/1024bit)的fifo存储功能(当使用8 khz采样频率,4bitadpcm2/adpcm算法,非立体声模式时,其缓冲时间为32ms);支持4种录放压缩算法,即4/5/6/7/8bit adpcm2算法、4bit adpcm算法、16 bit pcm算法和8bit非线性pcm算法;通过控制命令可实现8级音量控制(0db~21db)。
2 引脚排列及功能
msm9841的引脚排列如图1所示,各引脚的功能如下:
d15~d8:对于8 bit总线接口,这些管脚可以通过命令被定义到外部存储器的输入输出接口。否则,这些管脚只能定义为输入管脚。对于16 bit总线接口,这些管脚可用作外部存储器或微处理器的双向数据总线。
d7~d0:到外部存储器或微处理器的双向数据总线。
wr:写允许,低有效。
rd:读允许,低有效。
cs:读写功能允许,低有效(低电平时,允许读写功能操作)。
d/c:当该管脚为高电平时,语音数据可以从d0~d15引脚输入或输出。当该管脚为低电平时,d0~d7引脚用于输入控制命令或输出状态。
busy:当处于录音、回放、暂停状态时,该管脚输出低电平。
图2
emp:当fifo存储器中无数据时该管脚输出高电平,通过命令可使该管脚由高电平变为低电平。
mid:当fifo中的数据超过fifo存储空间的一半时,该管脚输出高电平。在回放期间,mid为高电平时开始语音合成。通过命令可使mid由高电平变成低电平。当不使用fifo时,该管脚可为语音的输入/输出提供一个同步信号。
ful/dreqr:当fifo存储空间已满时,该管脚输出高电平。在回放期间,该管脚为高电平,fifo中不能写入数据。ful/dreqr输出的高电平可由命令输入来将其改变成低电平。当选择dma转换和立体声回放时,dreqr输出高电平信号表示需要dma转换。dreqr输出的高电平亦可由命令输入平将其改变成低电平。
ch/dackr:当选择立体声回放且ch为高电平时,emp、mid或ful管脚输出右移fifo的状态。当ch为低电平时,emp、mid或ful管脚输出左移fifo的状态。在录音和单声道回放时需将该管脚设置为低电平。当选择dma转换和立体声回放时,该管脚为dackr功能。在这种情况下,输入dma转换应答信号到dackr。当dackr为低电平时,iow信号被接受。dackr输出的低电平可由命令输入来将其改变成高电平。
dreql:当选择dma转换和立体声回放时,dreql输出高电平表示需要dma转换。dreql输出的高电平可由命令输入来将其改变成低电平。
dackl:当dma控制器允许dma转换时,可输入一个信号到dackl端。如果dackl为低电平,iow和ior信号将被接受。当选择立体声回放时,可给dackl端输入左移fifo的dma转换应答信号。dackl端的低电平可由命令输入将其改变成高电平。如果不使用dma转换,应将该脚置为高电平。
iow:在dma转换时,该管脚为将外部数据写入msm9841的写脉冲输入管脚。如果不使用dma转换,将该引脚置为高电平。
ior:在dma转换时,该管脚可作为msm9841的读脉冲输入管脚。如果不使用dma转换,应将该引脚置为高电平。
图3
adsd:当使用外部adc时,该管脚为16bit串行数据输入管脚,如果不使用外部adc,则应将该引脚置为低电平。
dasd:当使用外部dac时,该管脚为16 bit串行数据输出管脚。
siock:当使用外部adc或dac时,该管脚为16 bit串行数据输入/输出的同步时钟管脚。
xt,xt:外部振荡器连接管脚,当使用外部时钟时,可将外部时钟输入到该管脚。
vck:录音和回放时的输出采样频率。当用外部adc或dac时,vck管脚的信号被用作同步信号。
reset:复位管脚,低有效。
testo、testi:测试管脚,将该引脚置为低电平。
sg:模拟地输出管脚。
min,lin:内部op放大器的反相输入端,同相输入端内部已连到信号地。
mout,lout:mout为内部放大器到min的输出端,lout为内部放大器到lin的输出端。
aoutl:内部lpf(低通滤波器)左路模拟信号输出端。它是回放信号波形输出端,将该管脚连到放大器后可驱动扬声器。
aoutr:内部lpf(低通滤波器)右路模拟信号输出端。它是回放信号波形输出端,将该管脚连到放大器后可驱动扬声器。
dvdd:数字电源。在该管脚和数字地之间应接一个0.1μf电容。
dgnd,agnd:数字地和模拟地。
avdd:模拟电源。在该管脚和模拟地之间应接一个0.1μf电容。
3 内部结构及工作原理
msm9841的内部结构如图2所示,它主要由微处理器、定时控制器、音量控制器、adpcm2/adpcm/pcm分析器、adpcm2/adpcm/pcm/非线性pcm合成器、直接存储器访问接口、fifo、adc、dac、lpf等部件构成。
对msm9841可采用二进制编码命令进行控制,从而完成录音、回放、停止、暂停、音量调节、dma转换、设置使用内部或外部d/a、a/d、信号输出模式选择等功能。该控制命令的长度为8bit。
4 以msm9841为核心的录放机
基于msm9841的录放机电路如图3所示,该录放机采用双cpu模式,以单片机at89c52作为录放音模块的主控单元。键盘和液晶显示模块以at89c2051作为主控单元,通过串口与录放音模块变换指令与数据。由于本录放机未采用dma方式,故msm9841的dma控制管脚均接高电平。msm9841中d/c管脚的电平高低可决定数据总线上的数据类型。当d/c为低电平时,数据总线上的信号为系统控制命令;当d/c为高电平时,总线上的信号为语音数据。由于at89c52是8位单片机,而msm9841支持16位或8位数据总线,所以,在系统工作时,首先要利用msm9841的控制命令将其设置为8位数据总线模式。
录放机音频输出端采用音频功率放大器lm386,其电路连接如图4所示。当电源电压为+5v时,lm386输出功率为300mw左右。msm9841内部有2个运算放大器,可用于放大麦克风的语音信号,每个运算放大器对外提供反向输入端和输出端,而同向输入端则在芯片内部与模拟地相连。两个运算放大器可以级连,通过调节外部电阻阻值即可获得所需的放大倍数。通过下式可调节vlo,以使其处于lout管脚所允许的电压范围内:
vlo=(r4/r3)vmo=(r2r4/r1r3)vin(v)
当供电电压为5v时,lout引脚所允许的电压范围为1~4v.lout管脚在芯片内部与输入低通滤波器相连,可用于去掉超过1/2采样频率的输入频率分量。这样,就可满足数据采样系统所适用的奈奎斯特定理,然后送adc进行数据采样。放大电路通过隔直电容与麦克风相连,隔直电容主要用于去掉低电平交流信号(约2~20mv)中的直流信号。整个音频输入电路如图5所示。
整个刻录机系统采用4片2m×8 bit的dram msm5116800作为语音存储介质,在较高质量的8kbps的采样速率下,若采用4 bit的adpcm2算法,4片msm5116800能够记录的语音长度大约是4×1.024×2000×8/(8×4)=2048s。2m×8 bit的dram的地址总线共20位,分为高位地址(即a0~a8和a9r~a11r共12位构成行地址row address)和低位地址(即a0~a8共9位构成的列地址column address),两者通过分时复用共用9根地址线a0~a8,每片dram的寻址范围为000000h~7fffffh,各片dram通过不同的cas信号线来区别。dram有多种不同的读写模式和存储单元数据刷新模式,在本系统中,由于所需要的数据率非常低,所以可采用最基本的读写模式,即先发送完整的地址信号(包括行地址和列地址),然后读写;而刷新模式则采用cas-before-ras方式,并将刷新脉冲穿插到读写时序中间。
该系统通过接收键盘指令来完成录放音的操作。录音时,首先利用二进制命令对msm9841进行初始化,具体内容包括:设置语音合成方式为4 bit的adpcm2算法;选择采用内部adc;设置总线宽度为8位;不采用dma方式;配置fifo的大小,fifo最大可配置为1024 bit;设置输出数据的模式;设定采样频率为8.0 khz。此采样频率可使语音音质大大优于电话的音质。提高采样频率还可使音质进一步得到改善,但录音时间也就相应缩短;反之,较低的采样频率会增加录音时间,但会降低音质。
初始化完成之后即可发出控制命令10h(采样频率为8.0 khz)来启动录音操作。在录音的过程中当fifo中的语音数据超过fifo存储空间一半时,mid引脚将变为高电平,并产生外部中断信号送至mcu(微处理器)的int1端以使mcu产生中断响应,此时,mcu开始读取fifo中的语音数据,然后转存到dram之中,读取过程中还要查询emp端的状态,以免fifo读空。
与录音相同,放音时首先进行同样的初始化,然后发控制命令20h(采样频率为8.0 khz)启动放音操作。mcu开始从dram中读取要播放的语音数据并写入fifo中,当fifo中的语音数据装满时,ful引脚将变为高电平,并产生外部中断信号送至mcu的into端以使mcu产生中断响应,此时应停止向fifo写入数据。
在mcu录、放音的过程中,可根据键盘指令向msm9841发出暂停或停止命令,以暂停或结束录、放音操作。同时利用液晶显示器来显示当前正在执行的操作及操作结果。通过键盘和液晶进行人机交流可方便的实现多段语音的录放操作以及音量调节等功能。
5 结束语
基于msm9841的录放机在使用较为满意8kbps的比特率时,其录放音时间大约为34分钟。若需延长录放音时间,可对存储部分进行扩展。系统使用廉价的dram作为语音存储介质,因此成本较低。整机具有结构简单、性能可靠、人机交互界面友好、使用方便等一系列优点,因而具有较好的应用前景。如果将存储部分的dram换成flash或铁电存储器,该机还可被广泛地应用于公交车报站系统、录音电话、自动语音服务台等领域。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。