自适应差分脉码调制解码器装置的只读存储器寻址方法

文档序号:7758559阅读:289来源:国知局
专利名称:自适应差分脉码调制解码器装置的只读存储器寻址方法
技术领域
本发明涉及对自适应差分脉码调制(ADPCM)编码的信号的解码,具体地说,涉及用于对存储ADPCM编码的源文件和微控制器操作指令两者的只读存储器(ROM)进行寻址的时分复用方法。
在先有技术中,众所周知需要语音合成器和/或音频发生器的应用。这些应用例子包括高档智力玩具、报警系统、语音发生器、和声响效应发生器。这些应用中的共同点是都以脉码调制(PCM)格式在只读存储器(ROM)中存储语音数据(即话音/声音/声调源文件)。然后,由ROM中编址的源文件数据合成包括话音、声音、或音调的可听信息并输出供收听。
然而所关心的是,即使PCM源文件产生高质量输出合成声音,但这些源文件(存储时)会占据不能接受的大量ROM空间。特别关心的是,在产品应用中,可用ROM空间的总量是非常有限的(也许是因为集成电路尺寸限制或价格考虑)。在这些情况中,对于给定的固定ROM空间,较大的合成源文件极大地限制了所能产生的可听语音数据的长度。
一般还公认,在某些产品应用中,可能不需要象PCM源文件产生的那样较高质量的输出合成声音。并且,这些应用可能需要产生较长的可听语音数据输出信号,后者是不能用保存在有限ROM空间中的PCM存储源文件得到的。针对这两种关心,先有技术提倡代之以用自适应差分脉码调制(ADPCM)格式对PCM源文件进行编码。所述格式有利地使用传统PCM文件所需要的ROM存储空间的几乎一半来保存源文件。这种存储空间的节省是以牺牲某种程度的可听质量为代价的,但与保存在相同容量的ROM空间中的PCM数据可能产生的声音输出信号相比,这有利地使得用户可以产生长得多的合成声音输出信号。
参考

图1,图1示出传统的基于软件的ADPCM解码器的方框图。通常在微控制器单元(MCU)、微处理器(uP)、或诸如特定用途集成电路(ASIC)的其它智能处理装置中用所述处理装置执行的软件指令实现的ADPCM解码算法来实现所述解码器。按照一种众所周知的算法(如交互式多媒体协会(IMA-Interactive MultimediaAssociation)建议的),C(n)表示从ROM存储器(未示出)读取的ADPCM压缩数据(即源文件)。自适应地对压缩的数据执行去量化而产生数据Dq(n)。将去量化的压缩数据Dq(n)与从以前的样值得到的压缩数据(C(n))的预测值Xp(n-1)相加来产生输出解码数据Xp(n)。在这种反馈配置中,数据Xp(n-1)表示来自以前样值的压缩数据(C(n))的预测值,并由预测器从加法器输出的预测值Xp(n)来产生。
人们认识到这种基于软件的ADPCM解码装置有许多不足。第一,使用软件实现的ADPCM算法,处理装置必须在数据的一个样值(n)期间执行许多加、移位和比较指令,因此装置的操作可能变慢。第二,占据了大量ROM空间来存储ADPCM解码算法(即使编码的ADPCM源文件可能比相应的PCM文件占据更少的空间)。这可能抵消了许多通过将PCM转换到编码的ADPCM源文件所腾出的ROM空间。第三,处理单元通常不能一次执行两种操作,因此在对给定的源文件进行ADPCM解码处理时不能中断来执行另一种操作。
所需要的是具有执行速度快的ADPCM解码器系统,它能利用基于节省ROM的ADPCM格式而不必再来存储解码算法。另外,如果对检索的源文件进行解码的处理可被中断而使处理器处理其它任务的话,这将是一个优点。
本发明包括微控制器,它连接在基于硬件的自适应差分脉码调制(ADPCM)解码器和存储器之间,后者存储控制微控制器操作的程序指令与ADPCM编码源文件数据这两者。所述微控制器执行时分复用存储器寻址。在解码器周期中,从所述存储器读取ADPCM编码的源文件数据并将所述数据提供给ADPCM解码器用于处理。在指令周期,在基于硬件的ADPCM解码器继续处理以前读取的ADPCM编码的源文件数据的同时,从所述存储中读取程序指令并由微控制器来执行所述指令。上述两种周期连续地重复,以便读取ADPCM编码的源文件数据用于解码器处理并同时支持混合的微控制器程序指令执行。
更具体地说,集成电路块具有连接在基于硬件的自适应差分脉码调制(ADPCM)解码器和只读存储器(ROM)之间的微控制器。ROM存储控制微控制器操作的程序指令和ADPCM编码的源文件数据两者。微控制器实现了支持时钟信号驱动的时分复用ROM寻址的结构,所述时钟信号具有指令段和解码器段,其中,在指令段,程序计数器提供用于检索微控制器程序指令的ROM地址,而在解码器段,地址计数器提供用于检索ADPCM编码的源文件数据部分的ROM地址。时钟信号驱动的复用器在程序计数器和地址计数器所提供的用于ROM的地址之间进行选择。将在时钟信号的解码器段中从ROM读取的ADPCM编码的源文件数据提供给解码器,用于在时钟信号后来的指令段期间处理。这允许对同时发生的ADPCM数据解码和微控制器程序指令执行采取某种措施(包括混合处理)。
结合附图参考下文的详细描述,可以更完整地理解本发明的方法和装置,附图中图1(前面所描述的)是传统的基于软件的自适应差分脉码调制(ADPCM)解码器的方框图;图2是包括基于硬件的ADPCM解码器的集成电路块的方框图;图3是说明图2中集成电路块执行的用于时分复用ROM寻址方法的体系结构示意图;和图4是说明所执行的时分复用ROM寻址方法的实现的时序图。
参考图2,它示出了包括基于硬件的ADPCM解码器12的集成电路块10的方框图。集成电路块10可以执行需要话音合成器和/或音频发生器的任何应用。这样的应用的例子包括高档智能玩具、报警系统、语音发生器、和声响效应发生器。基于硬件的ADPCM解码器12连接到微控制器单元(MCU)14。在这种配置中,ADPCM解码器12适合作为独立地执行某种ADPCM解码/合成算法的硬件功能部件。本文中的独立执行是指解码器12的操作,其中微控制器14不执行或不帮助执行ADPCM解码算法。相反,解码操作本身完全在基于硬件的解码器10中完成。在许多可得到的集成电路块产品中可以找到这种硬件实现的ADPCM解码器12,包括诸如STMicroelectronics、Holtek、Winbond、Sonic等公司生产的ADPCM解码器/合成器。这些基于硬件的解码器具有本领域技术人员众所周知的配置和解码操作。
微控制器单元14确定(assert)启动信号16来启动ADPCM解码器12的操作并进一步把从只读存储器(ROM)18读取的未处理的(即ADPCM编码的)的源文件数据通过数据总线20馈送到解码器12。解码器12还接收时钟信号(ck_sac)22以协助定时解码器的运行,其中解码器12将接收的源文件解码并通过解码器12的输出总线(未明确示出)把解码的源文件数据(例如以线性PCM数据格式)输出。微控制器单元14同样地接收时钟信号(clk_mcu)24以协助定时控制器的运行,其中时钟信号24的频率和/或段可以与解码器的时钟信号22的频率和段不同。
ROM 18存储与微控制器单元14的操作有关的用户程序数据和ADPCM编码的源文件数据(最好一起存储在掩模ROM结构中)。在此应该指出用户程序数据包括微控制器单元14操作的指令,后者通常以操作码加任何必要的操作数的格式出现。微控制器单元14可以在ROM 18中确定选择信号(rom_cs)26来存取存储器。在那种方式时,微控制器单元14通过地址总线28确定存储器单元,并经数据总线30从寻址存储器单元检索请求的存储数据(它也可以或者包括用户程序数据或者包括ADPCM编码的源文件数据)。
按照本发明,微控制器单元14执行时分复用ROM寻址方法。或者从处理器指令地址部件40或者从ADPCM源文件数据地址部件42得到微控制器单元14通过总线28应用于ROM的地址。复用器(MUX)44有选择地对部件40和42中的哪一个用来提供ROM地址进行选择,更具体地说,根据时钟信号(ck_6k)46并利用时钟信号(ck_6k)46指定的频率而在处理器指令地址部件40提供的地址和ADPCM源文件数据地址部件42提供的地址之间来回变换,其中时钟信号46的频率和/或段可以与时钟信号22和/或24的不同。具体地说,在时钟信号46是逻辑高的指令周期中,处理器指令地址部件40提供地址并且从ROM 18(通过总线30)检索与微控制器单元操作有关的存储的用户程序数据。然后,微控制器单元14执行所述程序数据。另一方面,当解码器周期时中钟信号46是逻辑低时,ADPCM源文件数据地址部件42提供地址并且从ROM 18(通过总线30)检索ADPCM编码的源文件数据的存储块。然后,微控制器单元14将所述ADPCM源文件数据馈送到ADPCM解码器用于解码。在考虑到同时的(即混合的)微控制器单元程序指令执行的某些性质的同时,只要需要,就连续地重复时分复用寻址方法两个周期,以便可以读取所有的ADPCM源文件数据并将这些数据提供给解码器用于解码。
现参考图3,图3示出了说明图2中集成电路块执行的时分复用ROM寻址方法的结构图。在微控制器单元14中执行所述方法。部件SAC是指包括ADPCM源文件数据地址部件42的地址计数器,它指定微控制器单元14通过总线28应用于ROM的地址,以便检索ADPCM编码的源文件数据。相反地,程序计数器部件和/或指令寄存器部件包括处理器指令地址部件40,后者指定微控制器单元14通过总线28应用于ROM的地址,以便检索用户程序数据。指令寄存器向SAC提供地址,并且对装入SAC(load_sac)信号起反应而将所述地址装载到SAC中。如上所述,对时钟信号(ck_6k)46进行反应而工作的复用器44对微控制器单元14通过地址总线28实际使用的指定地址进行选择。
部件SAE是指存储ROM地址、包括定位的ADPCM源文件数据的结束地址的寄存器。所述地址是在开始地址被装载到SAC中的同时从指令寄存器得到的地址。SAC对微控制器单元施加的加1(inc_sac)信号起反应而将其寄存器值加1(即将最初装载的地址加1)。微控制器单元每次需要检索存储的ADPCM源文件数据的下一部分时施加所述信号。部件比较器执行比较操作,以便确定用于源文件数据地址的当前寄存器值(在加1操作后从SAC输出的)是否与源文件数据的结束地址(存储在SAE中)相匹配。当这种比较操作产生“是”结果时(即当地址匹配时),比较器部件输出播放结束信号(play_end)。所述信号向微控制器单元14表明已从ROM检索到整个源文件(即所有部分)并将其提供给解码器。
现又参考图4,图4示出了说明由图2中集成电路块执行的时分复用ROM寻址方法的图3体系结构实现的时序图。在时段tp1期间,时钟信号(ck_6k)46是逻辑高(指令段或周期),表示处理器指令地址部件40正在提供与存储用户数据程序数据有关的ROM地址。然而在时段tp2期间,时钟信号(ck_6k)46是逻辑低(解码器段或周期),表示ADPCM源文件数据地址部件42正在提供与ADPCM编码的源文件数据的存储块有关的ROM地址。这是时钟切换处理过程,从时段tp3到tpn重复。选择信号(rom_cs)26对把所提供的ROM地址加到ROM本身进行控制。
具体地说,转向时段tp1,微控制器单元14执行播放ADPCM编码的源文件数据的某个存储块的指令。对所述指令起反应,开始执行时分复用ROM寻址方法。此时,时钟信号(ck_6k)46是逻辑高,表示处理器指令地址部件40(即程序计数器-PC)正在提供与用户程序数据有关的ROM地址(rom_add),其中用户程序数据包括具有下面格式的存储的指令PLAY=OP+STARTBLOCK+ENDBLOCK
其中OP是播放指令的操作码,STARTBLOCK是存储第一块源文件数据的ROM地址,ENDBLOCK是存储最后一块源文件数据的ROM地址。在时间t1,从ROM的程序计数器指定地址检索处理器指令的STARTBLOCK的第一字节并将该字节装载到微控制器单元14的指令寄存器中(见load_ir1信号)。接着在时间t2,程序计数器加1(通过信号inc_pc)并从ROM的加1的程序计数器地址检索处理器指令的ENDBLOCK的第二字节并将该字节装载到指令寄存器中(见load_ir2信号)。要指出的是在时间t1和t2,ROM选择信号(rom_cs)为高,表示正存取ROM。在时间t3,装入SAC信号(load_sac)使包括STARTBLOCK和ENDBLOCK的指令寄存器内容被分别装载到SAC和SAE中。在时段tp1的剩余时间,时钟信号(ck_6k)46保持在逻辑高,同时处理器指令地址部件40(即程序计数器)提供微控制器单元14操作所需的ROM地址。
接着转到时段tp2,在时间t4,时钟信号(ck_6k)46按照时分复用ROM寻址方法而变成逻辑低,表示ADPCM源文件数据地址部件42正在提供与ADPCM编码的源文件数据的存储块有关的ROM地址。这时所提供的ROM地址(rom_add)包括SAC指定的当前地址。要指出的是ROM选择信号(rom_cs)为高表示允许微控制器单元对ROM进行存取,以便检索存储的ADPCM编码器源文件数据的一部分。然后,微控制器单元14将所述检索的部分提供给解码器用于处理。在时段tp2的剩余时间,解码器对所述检索的数据进行处理(即解码)。加1的SAC信号变成高,表示解码器目前正在对所述检索的ADPCM数据进行处理。
在时段tp3期间,更具体地说,在时间t5,时钟信号(ck_6k)46按照时分复用ROM寻址方法而变回到逻辑高,表示处理器指令地址部件40(即程序计数器)正在提供与用户程序数据有关的ROM地址。这里要指出的是从ROM的程序计数器指定地址检索处理器指令字节,并将所述字节装载到微控制器单元14的指令寄存器中(见时间t6时的load_ir1信号)。然后在时段tp3的剩余部分期间,对应的指令加1(整个或部分),并且程序计数器也加1(见时间t6时的inc_pc信号)。重要的是要认识到在所述时段tp3期间,解码器继续对时段tp2以前检索的ADPCM编码的源文件数据部分进行处理。换言之,在时段tp3期间,集成电路块同时(即混合)执行两种功能1)解码器执行ADPCM解码操作;和2)微控制器单元执行用户程序数据指令。
接下来,在时段tp4期间,在时间t7,时钟信号(ck_6k)46按照时分复用ROM寻址方法而变成逻辑低,表示ADPCM源文件数据地址部件42正在提供与ADPCM编码的源文件数据的存储块有关的ROM地址(rom_add)。当在时间t8对解码器完成以前检索的ADPCM数据部分的处理反应而使加1的SAC信号(inc_sac)变低时,SAC存储地址值加1,而这时所提供的ROM地址包括现在由SAC指定的加1的当前地址。要指出的是ROM选择信号(rom_cs)为高表示允许微控制器单元对ROM进行存取,以便检索位于加1的SAC地址的存储的ADPCM编码器源文件的一部分。然后,微控制器单元14将所述检索的部分提供给解码器用于处理。在时段tp4的剩余时间,解码器对所述检索的数据进行处理(即解码)。加1的SAC信号(inc_sac)还变回到高位,表示解码器目前正在对所述检索的ADPCM数据进行处理。
然后,在从ROM检索存储的ADPCM解码器源文件的所有部分并将所述部分提供给解码器处理所需的任何其它必要时段(例如,直到tpn),在时钟信号(ck_6k)46的控制下重复上述过程。那时,在时间t9时,加1的SAC信号将使SAC增量到与SAE存储的ENDBLOCK地址相吻合的值。然后,比较器部件输出播放结束信号(play_end),时钟信号(ck_6k)46变回到逻辑高,而时分复用ROM寻址方法结束。在优选实施例中,时钟信号(ck_6k)46保持在逻辑高,直到需要存取ROM存储的ADPCM编码的源文件数据的下一个指令(象播放指令那样)被执行,并且再次利用时分复用ROM寻址方法(同时回到tp1)。
尽管在附图中示出了并在详细描述中描述了本发明的方法和装置的优选实施例,然而应该知道本发明不限于所公开的实施例,而是能够有许多重新配置、修改和替换,它们都不脱离后附权利要求书提出和定义的本发明的精神。
权利要求
1.一种电路,它包括基于硬件的自适应差分脉码调制(ADPCM)解码器;存储器,用于存储程序指令和ADPCM编码的源文件数据;和微控制器,它具有执行时分复用存储器寻址的结构,其中在第一周期中,从所述存储器中读取ADPCM编码的源文件数据并将其提供给所述ADPCM解码器用于处理,在第二周期中,从所述存储器中读取程序指令并由所述微控制器来执行,同时所述基于硬件的ADPCM解码器继续对所述以前读取的ADPCM编码的源文件数据进行处理。
2.权利要求1的电路,其特征在于所述基于硬件的ADPCM解码器由所述读取的ADPCM编码的源文件数据来合成解码的输出数据,而不要所述微控制器的任何处理帮助。
3.权利要求2的电路,其特征在于所述解码的输出数据包括线性脉码调制(PCM)格式数据。
4.权利要求1的电路,其特征在于所述微控制器的结构包括程序计数器,它提供检索微控制器程序指令的存储器地址;地址计数器,它提供检索所述ADPCM编码的源文件数据的一部分的存储器地址;和复用器,它连接到所述程序计数器和所述地址计数器并在所述程序计数器和所述地址计数器所提供的存储器地址之间进行选择。
5.权利要求4的电路,其特征在于所述复用器的所述选择操作是由两段时钟信号驱动的,后者具有用来选择所述地址计数器的第一段和用来选择所述程序计数器的第二段。
6.权利要求4的电路,其特征在于所述微控制器的结构还包括寄存器,用于存储所述ADPCM编码的源文件数据用的结束存储器地址;和比较器,用于将所述地址计数器提供的存储器地址与所述寄存器的结束存储器地址进行比较并在所比较的地址吻合时输出结束信号。
7.权利要求6的电路,其特征在于所述微控制器的结构还包括用于递增所述地址计数器计数值的装置,以便在多个第一周期中对检索用于解码的所述ADPCM编码的源文件数据的所有部分所需的存储器地址进行选择。
8.权利要求1的电路,其特征在于所述第一和第二周期被连续地重复,直到读取所有用于解码器处理的ADPCM编码的源文件数据。
9.权利要求1的电路,其特征在于所述存储器包括只读存储器(ROM)。
10.权利要求1的电路,其特征在于完全用集成电路块来实现所述电路。
11.用于对存储程序指令和自适应差分脉码调制(ADPCM)编码的源文件数据这两者的存储器进行时分复用寻址的方法,所述方法包括如下步骤在第一时间周期,从所述存储器读取ADPCM编码的源文件数据,用来提供给ADPCM解码器并由ADPCM解码器处理;和在第二时间周期,在所述ADPCM解码器继续处理所述第一时间周期读取的ADPCM编码的源文件数据的同时,从所述存储器读取供处理器执行的程序指令。
12.权利要求11的方法,其特征在于所述读取ADPCM编码的源文件数据的步骤包括如下步骤选择所述存储器中存储所述ADPCM编码的源文件数据的一部分的地址。
13.权利要求12的方法,其特征在于所述读取程序指令的步骤包括如下步骤选择所述存储器中存储各个程序指令的地址。
14.权利要求13的方法,其特征在于还包括如下步骤交替地在所述选择的ADPCM编码的源文件数据地址和所述选择的程序指令地址之间进行选择。
15.一种微控制器程序结构,它与存储程序指令和自适应差分脉码调制(ADPCM)编码的源文件数据这两者的存储器相连接,所述结构包括程序计数器,用于存储与微控制器程序指令有关的第一存储器地址;地址计数器,用于存储与所述ADPCM编码的源文件数据的一部分有关的第二存储器地址;复用器,用于接收所述第一和第二存储器地址,并在第一周期期间选择所述第一存储器地址用于所述存储器读取,而在第二周期期间选择所述第二存储器地址用于所述存储器读取。
16.权利要求15的程序结构,其特征在于还包括用以驱动所述复用器分别在所述第一和第二存储器地址之间进行选择操作的、具有第一和第二段的时钟信号。
17.权利要求15的程序结构,其特征在于还包括寄存器,用于存储与所述ADPCM编码的源文件数据的最后一部分有关的第三存储器地址;和比较器,用于将所述第一存储器地址与所述第三存储器地址进行比较并在所述地址吻合时输出表示到达所述ADPCM编码的源文件数据末尾的信号。
18.权利要求15的程序结构,其特征在于还包括指令寄存器,用于将与微控制器程序指令有关的所述第一存储器地址提供给所述程序计数器,并且将与所述ADPCM编码的源文件数据的一部分有关的所述第二存储器地址提供给所述地址计数器。
19.权利要求15的程序结构,其特征在于还包括用于所述地址计数器的第一增量信号,用以在所述第二周期期间将所述第二存储器地址加1,以便连续存取所述ADPCM编码的源文件数据的所有部分。
20.权利要求19的程序结构,其特征在于还包括用于所述程序计数器的第二增量信号,用以在所述第一周期期间将所述第一存储器地址加1,以便改变所述微控制器程序指令。
21.一种集成电路块,它包括自适应差分脉码调制(ADPCM)解码器部分,它接收ADPCM编码的源文件数据用于解码并输出线性脉码调制(PCM)数据;只读存储器(ROM)部分,它存储程序指令和ADPCM编码的源文件数据;和微控制器部分,它具有由包含第一段和第二段的时钟信号驱动的时分复用的存储器寻址结构,其中在所述第一段期间,用第一地址对所述ROM部分寻址来读取ADPCM编码的源文件数据,由所述微控制器部分将所述读取的数据提供给所述ADPCM解码器用于解码,而在所述第二段期间,用第二地址对所述ROM部分寻址来读取程序指令,由所述微控制器执行。
22.权利要求21的集成电路块,其特征在于所述ADPCM解码器由所述读取的ADPCM编码的源文件数据来合成所述线性PCM数据,而不用所述微控制器部分的任何处理帮助。
23.权利要求21的集成电路块,其特征在于在微控制器部分执行程序指令的所述第二段期间,所述ADPCM解码器部分将所述第一段读取的ADPCM编码的源文件数据解码。
24.权利要求21的集成电路块,其特征在于所述微控制器部分的结构包括地址计数器,它提供用于读取ADPCM编码的源文件数据的所述第一地址;程序计数器,它提供用于读取微控制器程序指令的所述第二地址;和复用器,它连接到所述程序计数器和所述地址计数器并对所述时钟信号起反应而在所述地址计数器和所述程序计数器所提供的存储器地址之间进行选择。
25.权利要求24的集成电路块,其特征在于所述微控制器的结构还包括寄存器,用于存储所述ADPCM编码的源文件数据的结束存储器地址;和比较器,用于将所述地址计数器提供的第一地址与所述寄存器的结束存储器地址进行比较并在所述比较的地址吻合时输出表示所述ADPCM编码的源文件数据读取结束的信号。
26.权利要求25的集成电路块,其特征在于所述微控制器部分的结构还包括用于所述地址计数器的第一增量信号,用以在所述时钟信号的第一段期间将所述第一地址加1,以便连续存取所述ADPCM编码的源文件数据的所有地址。
27.权利要求26的集成电路块,其特征在于所述微控制器部分的结构还包括用于所述程序计数器的第二增量信号,用以在所述时钟信号的第二段期间将所述第二存储器地址加1,以便改变所述微控制器程序指令。
全文摘要
微控制器连接在基于硬件的自适应差分脉码调制(ADPCM)解码器和只读存储器(ROM)之间。微控制器结构执行由两段时钟信号驱动的时分复用ROM寻址。在指令段,程序计数器提供检索微控制器程序指令用的ROM地址。在解码器段,地址计数器提供检索ADPCM编码的源文件数据部分用的ROM地址。在后来的指令段期间,将解码器段中从ROM读取的ADPCM编码的源文件数据提供给解码器处理。由两段时钟驱动的复用器在程序计数器和地址计数器之间进行选择。
文档编号H04B14/04GK1361518SQ0013717
公开日2002年7月31日 申请日期2000年12月29日 优先权日2000年12月29日
发明者田立军 申请人:深圳赛意法微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1