一种音频数据处理器的制作方法

文档序号:11176791阅读:291来源:国知局
一种音频数据处理器的制造方法与工艺
本发明涉及电子
技术领域
,具体涉及一种音频数据处理器。
背景技术
:随着多媒体技术的不断发展,越来越多的音频设备被应用到人类的日常生产生活中。在音频设备的使用过程中,在很多应用场景中需要对声音进行优化处理,最常见的,即是对声音的音效进行处理,比如可编程的电子乐器、游戏机、家庭影院系统和电脑音响系统等音频设备的应用场景。在现有技术中,音频设备通常使用自身的音效处理器来对声音的音效进行处理。音效处理器是通过对输入的音频信号,执行一系列的指令来产生新的声音效果,每条指令会对于输入的音频信号进行逻辑上的,或者算数上的处理来产生特殊的声音效果。在现有技术中,音效处理器通常采用与其它类型处理器相同或相近的硬件架构以及指令集结构。但是,相较于其他类型的数据,由于音频数据的数据结构以及音效处理过程具有其特殊性,因此采用通用的处理器硬件架构以及指令集结构并不能实现理想的音频数据处理效率。因此,需要一种新的,针对音频数据的处理器架构以及指令集结构。技术实现要素:本发明提供了一种音频数据处理器,所述处理器包括:包含输入接口、操作码输出接口、第一操作数输出接口、第二操作数输出接口以及第三操作数输出接口的操作指令解析单元,所述操作指令解析单元配置为获取并解析所述输入接口输入的运算指令,获取操作码、第一操作数、第二操作数以及第三操作数并通过相应输出接口输出;包含操作码输入接口、第一操作数输入接口、第二操作数输入接口、第三操作数输入接口以及输出接口的算术单元,所述算术单元包含多个运算器,所述算术单元配置为根据所述操作码选用对应的运算器对所述第一操作数、所述第二操作数以及所述第三操作数进行相应的计算操作并将计算结果通过所述输出接口输出,其中,所述算术单元包含针对音频数据处理的和异或运算器、对数/指数运算器、特殊跳转运算器和/或内插运算器。在一实施例中,所述和异或运算器配置为将所述第一操作数与所述第二操作数求和并将求和结果与所述第三操作数进行异或运算以获取并输出异或运算结果。在一实施例中,所述操作指令解析单元配置为获取并解析所述输入接口输入的运算指令,获取操作码、第一操作数、第二操作数以及第三操作数并通过相应输出接口输出,其中,当所述运算指令对应和运算、异或运算、非运算、或运算或与非运算时所述操作码对应所述和异或运算器。在一实施例中,所述对数/指数运算器配置为将所述第一操作数转化为对数形式或线性数据。在一实施例中,所述操作指令解析单元配置为获取并解析所述输入接口输入的运算指令,获取操作码、第一操作数、第二操作数以及第三操作数并通过相应输出接口输出,其中:当所述运算指令对应对数/指数运算时,所述操作码对应所述对数/指数运算器的对数/指数运算模式,所述第一操作数为对数/指数运算对象,所述第二操作数为指定最大的指数值,所述第三操作数为运算结果的数据格式;所述对数/指数运算器配置为,当所述操作码对应所述对数/指数运算器的对数运算模式时:分配对数运算结果的符号位、指数位以及尾数位;保存所述第一操作数的符号位;取所述第一操作数的绝对值并将所述绝对值左移,直到最高位为1,停止左移;以所述第二操作数减去绝对值移动的位数的结果为临时指数部分;对移位后的所述第一操作数进行规格化判断,根据规格化判断结果、移位后的所述第一操作数以及所述临时指数部分确定所述运算结果的指数部分以及尾数部分;根据所述第三操作数对所述对数运算结果进行数据格式处理,其中,所述数据格式处理包含取反、取负数以及保持不变。。在一实施例中,所述对数/指数运算器配置为对移位后的所述第一操作数进行规格化判断,根据规格化判断结果、移位后的所述第一操作数以及所述临时指数部分确定所述运算结果的指数部分以及尾数部分,其中,所述对数/指数运算器还配置为:判断移位后的所述第一操作数的数据最高位是否为1;当所述数据最高位为1时,再次左移所述第一操作数一次并将所述临时指数部分加1,以所述临时指数部分加1后的结果为所述指数部分,以所述第一操作数的最终左移结果为所述尾数部分;当所述数据最高位不为1时,以所述临时指数部分为所述指数部分,以所述第一操作数的左移结果为所述尾数部分。在一实施例中,所述对数/指数运算器还配置为,当所述操作码对应所述对数/指数运算器的指数运算模式时:采用所述对数运算模式下的反向运算来对所述第一操作数进行数据处理。在一实施例中,所述特殊跳转运算器配置为在满足预设状态方程时将当前运算指令之后的n个运算指令标记为无效指令,n为非负整数,所述无效指令为可接收但不执行的运算指令。在一实施例中,所述操作指令解析单元配置为获取并解析所述输入接口输入的运算指令,获取操作码、第一操作数、第二操作数以及第三操作数并通过相应输出接口输出,其中,当所述运算指令对应特殊跳转运算时,所述操作码对应所述特殊跳转运算器,所述第一操作数为跳转状态参数,所述第二操作数为所述n,所述第三操作数为所述预设状态方程选择参数。在一实施例中,所述内插运算器配置为对第一操作数和第三操作数按照配置的比例进行线性内插操作运算。在一实施例中,所述内插运算器配置为:计算第一操作数-第二操作数*(第一操作数-第三操作数)。在一实施例中,所述处理器基于两个并行的数字信号处理核心构造,两个所述数字信号处理核心间通过流水线控制器进行指令的分配。在一实施例中,每个所述数字信号处理核心包含一个精简指令集处理器和一个信号处理单元,其中,所述精简指令集处理器包含:采用基于16个寄存器操作的结构的精简指令集;基于直接内存操作的结构的数字信号处理指令集。发明的处理器包含针对音频数据处理的运算器,可以实现对音频数据的快速处理。相较于现有技术的处理器,本发明的处理器处理速度更快,处理效果更优。本发明的其它特征或优点将在随后的说明书中阐述。并且,本发明的部分特征或优点将通过说明书而变得显而易见,或者通过实施本发明而被了解。本发明的目的和部分优点可通过在说明书、权利要求书以及附图中所特别指出的步骤来实现或获得。附图说明附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:图1以及图2是根据本发明实施例的音频数据处理器结构简图;图3是根据本发明一实施例的risc指令结构和寄存器组示意图;图4是根据本发明一实施例的和异或运算流程图;图5是根据本发明一实施例的对数运算流程图;图6是根据本发明一实施例的特殊跳转运算流程图;图7是根据本发明一实施例的内插运算流程图;图8是根据本发明一实施例risc组成结构示意图;图9是根据本发明一实施例音效处理器系统架构示意图。具体实施方式以下将结合附图及实施例来详细说明本发明的实施方式,借此本发明的实施人员可以充分理解本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程并依据上述实现过程具体实施本发明。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。随着多媒体技术的不断发展,越来越多的音频设备被应用到人类的日常生产生活中。在音频设备的使用过程中,在很多应用场景中需要对声音进行优化处理,最常见的,即是对声音的音效进行处理,比如可编程的电子乐器、游戏机、家庭影院系统和电脑音响系统等音频设备的应用场景。在现有技术中,音频设备通常使用自身的音效处理器来对声音的音效进行处理。音效处理器是通过对输入的音频信号,执行一系列的指令来产生新的声音效果,每条指令会对于输入的音频信号进行逻辑上的,或者算数上的处理来产生特殊的声音效果。在现有技术中,音效处理器通常采用与其它类型处理器相同或相近的硬件架构以及指令集结构。但是,相较于其他类型的数据,由于音频数据的数据结构以及音效处理过程具有其特殊性,因此采用通用的处理器硬件架构以及指令集结构并不能实现理想的音频数据处理效率。针对上述问题,本发明提出了一种音频数据处理器。具体的,在本发明一实施例中,音频数据处理器为数字信号(digitalsignalprocessing,dsp)处理器,其除了包含常规的数据处理指令集(指令集结构)外还针对音效处理构造了特别的数据处理指令(运算器)。如图1所示,在一实施例中,处理器包括:包含输入接口(e1)、操作码输出接口(d1)、第一操作数输出接口(a1)、第二操作数输出接口(b1)以及第三操作数输出接口(c1)的操作指令解析单元110,操作指令解析单元110配置为获取并解析输入接口e1输入的运算指令,获取操作码(d)、第一操作数(a)、第二操作数(b)以及第三操作数(c)并通过相应输出接口输出;包含操作码输入接口(d2)、第一操作数输入接口(a2)、第二操作数输入接口(b2)、第三操作数输入接口(c2)以及输出接口(e2)的算术单元120,算术单元120包含多个运算器(121、122、123、124、125等),算术单元120配置为根据操作码d选用对应的运算器对操作数a、b以及c进行相应的计算操作并将计算结果通过输出接口e2输出。具体的,在本实施例中,针对音效处理的特殊性,算术单元120包含和异或运算器121、对数/指数运算器122、特殊跳转运算器123和内插运算器124。进一步的,在本发明其他实施例中,可以根据具体的数据处理需求,在算术单元中构造和异或运算器121、对数/指数运算器122、特殊跳转运算器123和内插运算器124中的任意一个或任意几个的组合。进一步的,在一实施例中,基于寄存器以及选址器构造操作指令解析单元。如图2所示,在一实施例中,操作指令解析单元210包含指令内存200指令译码器211以及寄存器212。指令内存200为存储处理器将要执行的运算指令。通用寄存器212内存可作为临时存储空间,参与指令运算,同时也可以是音频数据的输入和输出。指令译码器211把指令从指令内存200里面提取出来,解析运算指令,向算术单元220输出解析出的操作码d。同时,指令译码器211还解析出操作数a、b、c以及z的寄存器地址并将地址发送到寄存器212,。寄存器212接收到操作数地址后将对应地址上存储的操作数a、b、c发送到算术单元220。操作数a,b,c分别锁存于算术单元220的寄存器中。算术单元220根据操作码d选用对应的运算器对操作数a、b以及c进行相应的计算操作并将计算结果(操作数z)写入寄存器212中操作数z地址指向的地址空间。进一步的,在一实施例中,运算指令(dsp指令)的组成格式如表1所示,运算指令包括4位的操作码,3个12位的源地址(操作数a、b、c),一个12位的目标地址(操作数z)。4位操作码12位z操作数地址12位a操作数地址12位b操作数地址12位c操作数地址表1操作码表示音频处理器每条指令的操作。3个源地址a,b,c和一个目标地址z分别指向通用寄存器内存空间。进一步的,在一实施例中,在寄存器212中,寻址空间为2048,每个地址存取一个32位的数据,数据的保存的格式包括定点数,以及浮点格式的数据。还有5位的状态标志位分别是:“饱和标志位”,表示写回的z操作数溢出了32位的数据范围。“零标志位”,表示写回的z操作数32位都为零。“规格化标志位”,表示写回的z操作数为一个规格化的数据。“负数标志位”,表示写回的z操作数为一个负数。“进位标志位”,为上次运算的进位标志位。进一步的,在一实施例中,精简指令集(rsic)指令的组成格式如图3所示,18位的dsp自定义指令集,32位的数据操作,基于16个通用寄存器(r0~r15)。通用的音效处理处理器指令包括算术运算指令“加法”,“乘加”,以及逻辑运算指令“and”,“or”,和“xor”。一般的,为了提高数据处理的处理效率,通常会针对每个运算指令构造独立的运算器。但是,独立的运算器的增多势必会使得算术单元的结构复杂化。针对上述问题,在本发明一实施例中,算术单元中构造了和异或运算器,通过对和异或运算器输入数据的控制来实现多种不同的算术运算指令。具体的,在一实施例中,处理器的算术单元至少包含和异或运算器,和异或运算器配置为将第一操作数(a)与第二操作数(c)求和并将求和结果与第三操作数(c)进行异或运算以获取并输出异或运算结果(z)。如图4所示,在一实施例中,指令译码器接收和异或运算指令(步骤s310);解析该运算指令后获取并输出和异或操作码、操作数a取数地址、操作数b取数地址、操作数c取数地址以及操作数z写回地址(步骤s320)。寄存器根据操作数a取数地址、操作数b取数地址以及操作数c取数地址输出相应的操作数a、b、c。算术单元首先获取操作数a、b、c并锁存(步骤s330),然后根据和异或操作码调用和异或运算器对操作数a、b、c进行算术运算。先进行a操作数和b操作数的和运算(步骤s340);然后将步骤s340的求和结果和c进行异或运算(步骤s350)。最后,将步骤s350的异或运算结果写入寄存器中操作数z写回地址指向的地址空间。进一步的,在一实施例中,根据不同的b、c操作数值,和异或指令能得到不同的逻辑运算结果。具体的,在一实施例中,其可以实现和操作、或操作、异或操作、与非操作、取反操作。即,在一实施例中,当运算指令对应和运算、异或运算、非运算、或运算或与非运算时操作码均对应和异或运算器;处理器通过操作b、c操作数值来实现不同的逻辑运算,如表2所示。具体的,在一实施例中,当运算指令对应和运算时:操作数a以及操作数b为和运算的运算对象;操作数c为0。在一实施例中,当运算指令对应异或运算时:操作数a以及操作数c为异或运算的运算对象;操作数b为0xffffffff。在一实施例中,当运算指令对应非运算时:操作数a为非运算的运算对象;操作数b以及操作数c为0xffffffff。在一实施例中,当运算指令对应或运算时:操作数a以及操作数c为或运算的运算对象;在一实施例中,运算指令对应与非运算时:操作数a以及操作数b为与非运算的运算对象;第三操作数为0xffffffff。表2具体的,在一实施例中,当运算指令对应和运算时:操作数a以及操作数b为和运算的运算对象;操作数c为0。在一实施例中,当运算指令对应异或运算时:操作数a以及操作数c为异或运算的运算对象;操作数b为0xffffffff。在一实施例中,当运算指令对应非运算时:操作数a为非运算的运算对象;操作数b以及操作数c为0xffffffff。在一实施例中,当运算指令对应或运算时:操作数a以及操作数c为或运算的运算对象;在一实施例中,运算指令对应与非运算时:操作数a以及操作数b为与非运算的运算对象;第三操作数为0xffffffff。进一步的,在一实施例中,进行和异或运算对数据的状态标志位的影响是:“零标志位”,“负数标志位”。通过和异或运算器,本发明的处理器通过一条指令(和异或指令)就实现了不同的逻辑运算。处理器在保证其运算功能完整性的前提下大大精简了运算器架构。在通常的音频数据处理过程中,一个对音频处理器的要求是能够保存较大范围的数据。通常的数据存储方式是将线性的数据存储为ieee754格式的浮点数表示形式。但是因为指数和尾数的大小是固定的,音频信号超过这些位的大小会被丢掉。针对上述问题,在本发明一实施例中,针对音频数据构造了特有的对数/指数指令(线性数据到对数的转换指令),其能够自定指数和尾数部分的位宽。根据数据的重要性指数和尾数的位宽可以相应的扩大或者缩小,这样就可以给音效处理提供波形整形和特殊音效处理操作。具体的,在一实施例中,处理器的算术单元至少包含对数/指数运算器,对数/指数运算器配置为将第一操作数转化为对数形式(线性数据转化为对数形式)或线性数据(对数形式转化为线性数据)。进一步的,在一实施例中,当运算指令对应对数/指数运算时,操作指令解析单元输出的操作码对应对数/指数运算器的对数/指数运算模式,操作数a为对数/指数运算对象,操作数b为指定最大的指数值,操作数c为运算结果的数据格式。对应的,在一实施例中,对数/指数运算器配置为,当操作码对应对数/指数运算器的对数运算模式时:对数/指数运算器首先分配对数运算结果的符号位、指数位以及尾数位;然后保存操作数a的符号位(到对数运算结果的符号位);接着取操作数a的绝对值并将该绝对值左移,直到移位结果的最高位为1时停止左移;接下来,以操作数b减去绝对值移动的位数,以得到的结果为临时指数部分;最后,对移位后的操作数a进行规格化判断,根据规格化判断结果、移位后的操作数a以及临时指数部分确定对数运算结果的指数部分以及尾数部分。进一步的,在一实施例中,对数/指数运算器通过对操作数b进行换算来分配指数位。具体的,分配z操作数结果组成,其中,n个位表示z操作数的指数部分。此处的n来自于b操作数的换算,n的范围在2到5个位,表示的指数范围在2到31。进一步的,在一实施例中,对数/指数运算器将分配符号位以及指数位后剩余的数据位分配为尾数位,范围在26-29位之间。进一步的,在一实施例中,在对数/指数运算器取操作数a的绝对值并将绝对值左移的过程中,左移结果不能超过操作数b。进一步的,在一实施例中,对数/指数运算器通过操作数a的左移结果的最高位来判断是否需要规格化。具体的,对数/指数运算器在左移完成后判断移位后的操作数a的数据最高位是否为1;当数据最高位为1时,对数/指数运算器再次左移第一操作数一次并将临时指数部分加1,以临时指数部分加1后的结果为对数运算结果的指数部分,以操作数a的最终左移结果(再次左移一次后的结果)为对数运算结果的尾数部分;当数据最高位不为1时,以临时指数部分为对数运算结果的指数部分,以操作数a的左移结果为对数运算结果的尾数部分。进一步的,在一实施例中,在确定尾数部分的过程中,当操作数a的左移结果超过对数运算结果的尾数位分配结果时对操作数a的左移结果进行截取操作。进一步的,在一实施例中,当操作码对应对数/指数运算器的指数运算模式时:采用上述对数运算模式下的反向运算来对操作数a进行数据处理。进一步的,在一实施例中,在进行对数/指数运算操作时,操作数c为运算结果的数据格式。对应的,对数/指数运算器还配置为:根据操作数c对对数运算结果进行数据格式处理,其中数据格式处理包含取反、取负数以及保持不变。具体的,在一实施例中,操作数c“00”表示保持数据结果,“01”表示对结果数据进行取反操作,“10”表示对数据结果进行取负数操作。进一步的,在一实施例中,在对数/指数运算过程中,对状态标志位的影响是:“零标志位”,“负数标志位”,“规格化标志位”。以一具体的应用实例为例,如图5所示,在一实施例中,指令译码器接收对数运算指令(步骤s410);解析该运算指令后获取并输出对数运算操作码、操作数a取数地址、操作数b取数地址、操作数c取数地址以及操作数z写回地址(步骤s420)。寄存器根据操作数a取数地址、操作数b取数地址以及操作数c取数地址输出相应的操作数a、b、c。算术单元首先获取操作数a、b、c并锁存(步骤s430),然后根据对数运算操作码调用对数/指数运算器(并进入对数运算状态)对操作数a、b、c进行算术运算。对数/指数运算器分配z操作数结果组成,首先为操作数z分配n位的指数部分(步骤s441)。同时分配符号位为z操作数的符号位(步骤s442)。剩余的数据位为尾数位(步骤s443)。接下来,保存线性输入数据(操作数a)的符号位(步骤s450),同时取操作数a的绝对值(步骤s461),然后对操作数a的绝对值进行左移(步骤s462),直到最高位为1,停止左移。即在每左移一次(步骤s462)后判断最高位是否为1(步骤s463),如果为1,则不再左移。当最高位不为1,则继续判断左移是否会超过操作数b(左移次数是否会超过n)(步骤s464),如果不会,则继续左移(返回步骤s462)。如果超过,则不再左移。当左移停止后,判断是否进行规格化,即判断左移结果的最高位是否为1。由于在步骤s463已经进行过一次判断,因此,在本实施例中,在步骤s463中,当左移结果最高位为1时停止左移,并接下来计算操作数b减去左移次数再加1的结果(步骤s471),以该结果作为对数运算结果中的指数部分(步骤s472),然后再次左移一次操作数a(步骤s473),以该左移结果作为尾数部分(步骤s474)。进一步的,当步骤s463中判定最高位不为1,但步骤s464判定左移结果将超过操作数b时,停止进一步左移,计算操作数b减左移次数(步骤s481),以计算结果作为指数部分(步骤s482),并将左移结果作为尾数部分(步骤s483)。通常的信号处理的条件控制指令,如if/elseif/else不容易使用在音频处理器中,因为有了条件控制指令程序,执行的指令会和没有条件控制指令的程序不同,或者会由于条件控制指令的成立或不成立导致执行的指令大小不一样。但是,条件控制指令在音效处理中有着非常重要的价值。因此在本发明一实施例中,构造了特殊跳转指令。特殊跳转指令(sjmp)可以用于状态寄存器数据搬运,并且通过不执行指令来实现传统的指令跳转功能。不执行指令的含义是把sjmp指令条件成立下面的指令当做无效指令执行。基于该指令,条件控制指令的成立或者不成立不会对执行指令的大小造成影响。具体的,在一实施例中,处理器的算术单元至少包含特殊跳转运算器,特殊跳转运算器配置为在满足预设状态方程时将当前运算指令之后的n个运算指令标记为无效指令,n为非负整数。需要注意的是,在这里,无效指令为可接收但不执行的运算指令。即如果指令被标记为无效指令,处理器仍会接收到该指令(对于处理器而言,该指令仍然存在,因此执行指令的大小不会发生变化),但是对于处理器而言,标记为无效的指令执行效果为空(不被执行)。进一步的,在一实施例中,当运算指令对应特殊跳转运算时,操作指令解析单元输出的操作码对应特殊跳转运算器,操作数b为n(需要跳过的指令数),操作数c为预设状态方程选择参数。对应的,当算术单元接收到对应特殊跳转运算器的操作码时调用特殊跳转运算器。特殊跳转运算器判断是否满足操作数c所对应的状态方程,如果满足,则将之后的n(操作数b所指明的)个运算指令标记为无效指令。进一步的,在一实施例中,操作数a为跳转状态参数,每条运算指令执行时更新操作数a。具体的,操作数a包含了状态寄存器(进位,饱和位,符号位,为零位,规格化位),每条指令执行的时候都会更新这个状态寄存器。进一步的,在一实施例中,预设状态方程包含第一方程式以及第二方程式;特殊跳转运算器配置为根据操作数c确定预设状态方程的类型以及因子。具体的,预设状态方程由1个10位的因子组成,每个因子包含了标志的5个状态标志位以及状态标志位的取反。第一方程式为方程式因子的和运算,第二方程式为方程式因子的与运算。状态方式可以组成不同的跳转条件。通过c操作数,“1”表示选择方程式1,“2”表示选择方程式2。将状态标志位放入方程式进行运算,如果这个方程式的结果为“1”,表示处理器将跳过n条指令,这个n由于操作数b决定。跳过的概念是音频处理控制器还是继续取到指令,但得到的指令将作为一个无效指令执行。如果方程式结果为“0”,那么表示跳转条件不成立,指令继续执行。注意sjmp指令不会引起状态标志位的变化。以一具体应用实例为例,如图6所示,在一实施例中,指令译码器接收对数运算指令(步骤s510);解析该运算指令后获取并输出对数运算操作码、操作数a取数地址、操作数b取数地址、操作数c取数地址以及操作数z写回地址(步骤s520)。寄存器根据操作数a取数地址、操作数b取数地址以及操作数c取数地址输出相应的操作数a(状态寄存器)、b(计数值n)、c。操作数a包含了状态寄存器(进位,饱和位,符号位,为零位,规格化位),每条指令执行的时候都会更新这个状态寄存器。操作数b表示如果跳转条件成立,处理器将跳过的指令条数。c操作数为状态方程式选择控制。算术单元首先获取操作数a、b、c并锁存(步骤s530),然后将状态寄存器的数据搬运到操作数z执行的内存空间(步骤s540)。这样上一条指令的状态寄存器保存在内存中,在后面的操作中如果再次需要这个状态寄存器,它可以通过指令从内存空间里又读出来。接下来,根据操作数c选择方程式(步骤s550)。状态方程式1个10位的因子组成,每个因子包含了标志的5个状态标志位以及状态标志位的取反。方程式1是10位因子的和运算。方程式2是10位因子的与运算。状态方式可以组成不同的跳转条件。通过c操作数,“1”表示选择方程式1,“2”表示选择方程式2。将状态标志位放入方程式进行运算(步骤s560),如果这个方程式的结果为“1”,表示处理器将跳过n(由操作数b决定)条指令。跳过的概念是音频处理控制器还是继续取到指令,但得到的指令将作为一个无效指令执行。即,把特殊跳转指令后的n条指令当做空指令处理(步骤s570)。然后经过该n条空指令后继续正常执行之后的指令(步骤s580)。如果方程式结果为“0”,那么表示跳转条件不成立,指令继续执行(步骤s590)。进一步的,在一实施例中,以sjmp指令实现“if/else”,“if/elseif/else”的操作。具体的,通过多条sjmp跳转指令的组合实现此功能。进一步的,针对音频数据的处理,在一实施例中,处理器还构造有内插指令。其用来按照配置的比例对两个操作数进行线性内插操作运算。具体的,在一实施例中,处理器的算术单元至少包含内插运算器,内插运算器配置为对操作数a和操作数b按照配置的比例进行线性内插操作运算。具体的,在一实施例中,内插运算器配置为计算:第一操作数-第二操作数*(第一操作数-第三操作数)。进一步的,在一实施例中,通过内插指令实现一阶低通滤波器效果。具体的,操作指令解析单元配置为,当运算指令对应一阶递归低通滤波器时,在当前音频周期内将内插运算器的输出赋值给操作数a。在另一实施例中,操作指令解析单元还配置为,当运算指令对应一阶非递归低通滤波器时将内插运算器的输出延时一个音频周期后赋值给操作数a。具体的,如图7所示,在一实施例中,指令译码器接收内插运算指令(步骤s610);解析该运算指令后获取并输出内插运算操作码、操作数a取数地址、操作数b取数地址、操作数c取数地址以及操作数z写回地址(步骤s620)。寄存器根据操作数a取数地址、操作数b取数地址以及操作数c取数地址输出相应的操作数a、b、c。算术单元首先获取操作数a、b、c并锁存(步骤s630),然后通过并行的2个乘法运算,然后加上操作数a(步骤s640),最后将结果(操作数z)写入操作数z地址,使得指令在一个周期内完成。进一步的,如果将z操作数又从新赋值给a操作数,就构造了一个一阶递归的低通滤波器。这个操作的实现是使用内插指令并将设置a操作数的地址和z操作数的地址相同。如果a操作数比c操作数延时一个音频周期,那么就实现了一个非递归的一阶低通滤波器。这个操作是通过内插指令里的a操作数地址是c操作数延时一个时钟周期的数据的地址。进一步的,对于一个音效处理指令而言,最理想的状态是其为最小化多功能的指令集,一个单条的指令能够实现通用信号处理器操作,又能够处理特殊的音频处理操作。同时,通常的信号处理器对于程序的控制能力比较差,因此需要一个通用处理器的结构嵌套在这音效处理器中。进一步的,考虑到音频处理一般在48k里面要处理一个左右声道的音频数据,为了实现更好的音效处理,在考虑到功耗的同时也需要考虑信号处理的效率。因此,在本发明还提出了一种音效处理器系统,该系统包含两个音频数据处理器(dsp处理器),其中:两个处理器并行;两个处理器间通过流水线控制器进行指令的分配。具体的,在一实施例中,音效处理器系统基于两个并行的dsp处理核心(音频数据处理器)构造,两个dsp处理核心间通过流水线控制器进行指令的分配。进一步的,在一实施例中,每个dsp处理核心还配有一个精简指令集(rsic)控制单元,其中,rsic控制单元采用基于16个寄存器操作的结构的精简指令集。rsic控制单元主要提供音频数据搬运,以及音效控制机制方面的算法。risc控制单元是一个基于寄存器到寄存器的操作,通过加载和存储指令来搬运数据内存里面的数据。进一步的,在一实施例中,risc具体指令集如表3所示。表3进一步的,如图8所示,在一实施例中,rsic控制单元包含一个地址产生器,三个加法器,一个算术移位单元,一个算术逻辑单元,和一个寄存器组。进一步的,在一实施例中,如图9所示,音效处理器系统由两个dsp核/rsic控制单元(处理单元721以及处理单元722,每个处理单元为一个dsp核以及一个rsic控制单元的集合)构成,处理单元721以及处理单元722能够并行执行指令。流水线控制器730,主要是通过48khz信号来实现dsp核之间的运算流水,数据共享。通过流水线控制器730,以及软件上的数据规划,数字信号处理核心721以及722从数据内存710处读取数据并接收来自指令内存750的运算指令,从而最终实现音频算法。进一步的,在一实施例中,指令内存750包含了一个本地指令缓存740,能够保存八条指令。这样能够在循环指令时候,减少对内存的访问,来减少功耗。虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。本发明所述的方法还可有其他多种实施例。在不背离本发明实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变或变形,但这些相应的改变或变形都应属于本发明的权利要求的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1