一种协处理器的制作方法

文档序号:2837296阅读:353来源:国知局
专利名称:一种协处理器的制作方法
技术领域
本发明属于信息技术领域中超大规模集成电路SOC(System On Chip,片上系统)设计领域,特别涉及新一代嵌入式语音识别应用领域,尤其是一种基于HMM(Hidden Markov Models,隐含马尔可夫模型)的马氏距离计算和矢量乘累加运算的协处理器。
背景技术
嵌入式语音识别系统的研究一直是语音识别技术应用的重要的发展方向。它为移动式、小型化产品提供了良好的人机语音交互,如第三代智能化语言学习机、电话的语音拨号、mp3等娱乐产品的语音检索、车载的语音控制系统、智能玩具和家电语音遥控等。近几年来由于嵌入式MCU(Micro Controller Unit,微控制器)和DSP(Digital Signal Processor,数字信号处理器)处理性能的提高以及语音识别算法的改进;国内外已有嵌入式语音处理SOC实现,而且开始批量应用。但是高性能的语音识别算法是比较复杂的,现有芯片的识别性能,识别算法运算时间,功耗以及成本都不能很好地满足应用的需求。例如实现基于字词连续隐含马尔可夫模型(Hidden Markov Model,HMM)的中等词表识别任务,对16bit定点DSP(如TI的计数器2054系列)约需100MHz的时钟频率,对32bit的MCU芯片(如ARM9)约需200MHz的时钟频率,这些芯片的功耗大、成本高,难于在便携设备上普遍使用。
而硬件实现语音识别算法的速度很快,参见图1,将语音识别中的关键算法通过大规模集成电路作成语音识别关键运算模块来实现,将该语音识别关键运算模块作为协处理器,配合主控CPU工作或嵌入主控CPU中,这样可以使主控CPU在较低的时钟频率下完成语音识别处理的功能,进而降低功耗和成本。
参见图2,基于HMM的嵌入式语音识别算法包括三个基本步骤步骤11对原始数字语音进行特征提取,得到语音特征矢量。如MFCC(Mel-FrequencyCeptral Coefficients,Mel频率倒谱系数)特征矢量;步骤12根据语音特征矢量与声学HMM模型计算输出概率;步骤13利用得到的输出概率矩阵对识别网络进行网络搜索得到最终的识别结果。
其中,计算输出概率的运算量将占到整个系统运算量的70%以上,而计算输出概率的运算又以马氏距离计算为主,即使对算法进行优化后,仍然占整个运算量的55%。
为达到实时处理语音识别系统,现有技术只能用DSP进行马氏距离的计算。由于DSP是针对通用计算的目标优化的,其针对马氏距离中的乘乘加基本运算不能高效处理,因此,应用大规模集成电路实现马氏距离计算芯片对提高嵌入式语音识别系统的性能至关重要。

发明内容
为了提高运算效率及降低运算成本,本发明提供了一种协处理器。所述技术方案如下一种协处理器,所述协处理器包括存储模块、地址产生模块、寄存器组模块、控制电路模块和计算模块;所述存储模块通过内部地址总线与所述地址产生模块相连,通过外部地址总线、外部数据总线和外部控制总线与外部处理器相连,通过内部控制总线与所述控制电路模块相连,通过内部数据总线与所述计算模块相连,用于存储计算过程中的特征矢量、模型状态矢量和计算结果;所述地址产生模块通过内部数据总线与所述寄存器组模块相连,通过内部控制总线与所述控制电路模块相连,用于在所述控制电路的作用下产生所述存储模块中存储的特征矢量和计算结果的地址;所述寄存器组模块与所述存储模块统一编址,通过内部数据总线与所述计算模块相连,用于存储各个特征矢量和计算结果的起始地址;所述控制电路模块的输入端通过内部数据总线与所述寄存器组模块的输出端相连,用于通过读所述寄存器组模块中的各个寄存器的内容进行计数器初始化控制、矢量乘累加控制和矢量乘乘累加控制;所述计算模块与内部数据总线和内部控制总线相连,用于对所述存储模块中的特征矢量进行绝对值运算和乘乘加运算,并将计算的结果通过内部数据总线输出给所述存储模块。
所述存储模块包括第一选择器、输入数据端口、第二选择器、地址端口、第三选择器、控制端口、输出数据端口和存储单元;所述第一选择器与外部数据总线相连和内部数据总线相连;所述输入数据端口通过所述第一选择器与外部数据总线或内部数据总线相连,用于将收到的数据写入所述存储单元;所述第二选择器与外部地址总线或内部地址总线相连;所述地址端口通过所述第二选择器与外部地址总线或内部地址总线相连,为所述存储单元中的数据提供对应的地址;
所述第三选择器与外部控制总线或内部控制总线相连;所述控制端口通过所述第三选择器与外部控制总线或内部控制总线相连,控制所述存储单元的工作状态;所述输出数据端口的输入端与所述存储单元相连,输出端分别与外部数据总线和内部数据总线相连,用于通过外部数据总线向外部处理器输入数据或通过内部数据总线向所述计算模块输入数据;所述存储单元与所述输入数据端口、所述地址端口、所述控制端口和所述输出数据端口相连,用于存储特征矢量及计算结果。
所述地址产生模块包括多个计数器和一个选择器;所述多个计数器的输入端与内部数据总线相连,输出端与所述选择器相连,分别用于产生所述控制电路模块中的特征矢量的当前数据地址和产生所述计算模块的计算结果的地址;所述选择器的输出端与内部地址总线相连,用于将所述多个计数器产生的地址输出给内部地址总线。
所述寄存器组模块包括多个寄存器和译码器;所述多个寄存器的输出端与内部数据总线相连,输入端与外部数据总线相连,分别用于存放不同待计算矢量的起始地址、保护溢出设置和计算方式设置;所述译码器的输出端与所述多个寄存器的使能端相连,用于控制所述多个寄存器值的写入。
所述控制电路模块包括计数器、电路开关、计数器初始化控制单元、矢量乘累积运算控制单元和马氏距离运算控制单元;所述计数器为一向下计数器,与内部数据总线相连,用于根据所述寄存器组模块通过内部数据总线输出的设置状态控制循环计算的次数;所述电路开关有两个输入端,所述两个输入端分别与所述计数器和内部数据总线相连,用于根据所述计数器的输出值或内部数据总线输入的所述寄存器组模块的状态值控制电路模块开通或关闭;所述计数器初始化控制单元的输入端与所述电路开关的输出端和内部数据总线相连,用于当所述电路开关开通时,对所述计数器进行初始化控制,以及选通所述矢量乘累积运算控制单元或所述马氏距离运算控制单元;所述矢量乘累积运算控制单元的输入端与所述计数器初始化控制单元的输出端相连,用于控制所述计算模块进行乘累加运算,并将最终计算结果输出;所述马氏距离运算控制单元的输入端与所述计数器初始化控制单元的输出端相连,用于控制所述计算模块进行马氏距离运算,并将最终计算结果输出。
所述计算模块包括绝对值运算单元、乘乘加运算单元和输出端口;所述绝对值运算单元与内部数据总线相连,用于对输入的两个特征矢量进行绝对值运算,并将计算的结果输出到所述乘乘加运算单元;所述乘乘加运算单元具体包括两个选择器、移位器、乘法器和累加器,所述两个选择器分别与所述绝对值运算单元和内部数据总线相连,用于接收所述绝对值运算单元的计算结果和另一特征矢量;所述移位器的输入端与内部数据总线相连,输出端与所述两个选择器相连,用于对所述乘法器的运算结果进行移位;所述乘法器的输入端与所述两个选择器相连,用于对所述两个选择器中输出的特征矢量进行乘法运算;所述累加器与所述移位器和所述乘法器相连,用于对移位后的结果进行平方累加运算,将累加运算结果传输给所述输出端口;所述输出端口与所述乘乘加运算单元的输出端相连,用于将所述乘乘加运算单元的计算结果输出给内部数据总线,通过内部数据总线将计算结果传输给所述存储模块。
所述存储模块为标准静态随机存取存储器SRAM。
本发明提供的技术方案的有益效果是本发明提供的协处理器可以进行基于HMM语音识别算法的马氏距离计算和乘累加运算,能够提高嵌入式语音识别系统的性能,同时可完成通用DSP中的矢量乘累加运算,扩展了其通用性,具有提高性能,降低成本,降低功耗的优点。


图1是现有技术中的硬件实现语音识别算法的简单结构示意图;图2是现有技术中的基于HMM的嵌入式语音识别算法的流程图;图3是本发明实施例提供的协处理器的结构示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本实施例提供了一种协处理器,该协处理器采用标准SRAM(Static Random AccessMemory,静态随机存取存储器)接口,可与多种微控制器MCU配合使用。该协处理器通过寄存器编程控制,能够完成马氏距离运算和矢量乘累加运算。
参见图3,该协处理器由以下几部分组成存储模块100、地址产生模块200、寄存器组模块300、控制电路模块400和计算模块500,图中还包括内部地址总线A1,外部地址总线A2,内部数据总线B1,外部数据总线B2,内部控制总线C1,外部控制总线C2。
其中,存储模块100通过内部地址总线A1与地址产生模块200相连,通过外部地址总线A2、外部数据总线B2和外部控制总线C2与外部处理器相连,通过内部控制总线C1与控制电路模块400相连,通过内部数据总线B1与计算模块500相连,用于存储计算过程中的特征矢量、模型状态矢量和计算结果;地址产生模块200通过内部数据总线B1与寄存器组模块300相连,通过内部控制总线C1与控制电路模块400相连,用于在控制电路的作用下产生存储模块100中存储的特征矢量和计算结果的地址;寄存器组模块300与存储模块100统一编址,通过内部数据总线B1与计算模块500相连,用于存储各个特征矢量和计算结果的起始地址;控制电路模块400的输入端通过内部数据总线B1与寄存器组模块300的输出端相连,用于通过读寄存器组模块300中的各个寄存器的内容进行计数器初始化控制、矢量乘累加控制和矢量乘乘累加控制;计算模块500与内部数据总线B1和内部控制总线C1相连,用于对存储模块100中的特征矢量进行绝对值运算和乘乘加运算,并将计算的结果通过内部数据总线B1输出给存储模块100。
进一步地,存储模块100由1片可读写的单口SRAM组成,具体包括第一选择器101、输入数据端口102、第二选择器103、地址端口104、第三选择器105、控制端口106、输出数据端口107和存储单元108;其中,第一选择器101与外部数据总线B2或内部数据总线B1相连;输入数据端口102通过第一选择器101与外部数据总线B2或内部数据总线B1相连,当模块开始工作之前,第一选择器101一直选通外部数据总线B2通道,可保证外部数据的写入;当模块开始工作之后,在控制电路模块400的控制下,第一选择器101选通内部数据总线B1,可保证计算模块500的计算结果写入存储模块100的存储单元108中。
第二选择器103与外部地址总线A2或内部地址总线A1相连;地址端口104通过第二选择器103与外部地址总线A2或内部地址总线A1相连,当模块开始工作之前,第二选择器103一直选通外部地址总线A2通道;当模块开始工作之后,在控制电路模块400的控制下,第二选择器103选通内部地址总线A1通道。
第三选择器105与外部控制总线C2或内部控制总线C1相连;控制端口106通过第三选择器105分别与外部控制总线C2或内部控制总线C1相连,当模块开始工作之前,控制端口106受控于外部处理器;当模块开始工作之后,控制端口106受控于内部电路。
输出数据端口107的输入端与存储单元108相连,输出端分别与外部数据总线B2和内部数据总线B1相连,用于通过外部数据总线B2向外部处理器输入数据和通过内部数据总线B1向计算模块500输入数据;存储单元108与输入数据端口102、地址端口104、控制端口106和输出数据端口107相连,用于存储特征矢量及计算结果。
地址产生模块200在本实施例中具体包括第一计数器201、第二计数器202、第三计数器203、第四计数器204和第五计数器205共5个计数器,它们均为向上计数器。第一计数器201、第二计数器202和第三计数器203分别用于产生控制电路模块400中的特征矢量的当前数据地址,并且每组矢量存储的地址是连续的一段地址空间,第五计数器205用于产生计算结果的地址,第四计数器204用于备选。5个计数器的输出端接在第四选择器206的输入端上。根据实际需要,该模块中计数器的个数和功能可以进行变动。
第四选择器206,用于将上述计数器产生的地址输出给内部地址总线A1,第四选择器206的输出端与内部地址总线A1相连。
寄存器组模块300在本实施例中包括8个寄存器,8个寄存器的数据输入端与外部数据总线B2相连,本实施例分别为第一寄存器301、第二寄存器302、第三寄存器303、第四寄存器304、第五寄存器305、第六寄存器306、第七寄存器307和第八寄存器308,其功能和地址参见表1。
第一寄存器301、第二寄存器302、第三寄存器303、第四寄存器304、第五寄存器305和第六寄存器306的输出分别接入第六计数器401、第一计数器201、第二计数器202、第三计数器203、第四计数器204和第五计数器205的输入。
第七寄存器307为移位寄存器,输出接入计算模块500的移位器505。
第八寄存器308为状态寄存器,输出接入控制电路模块400。
表1

根据实际需要,该模块中寄存器的个数和功能可以进行变动。其中,第八寄存器308为状态寄存器,其功能参见表2。
表2

寄存器组模块300还包括译码器309,该译码器309与外部地址总线A2相连,译码器309的输出接入上述8个寄存器的使能端。
控制电路模块400具体包括第六计数器401、电路开关402、计数器初始化控制单元403、矢量乘累积运算控制单元404和马氏距离运算控制单元405;其中,第六计数器401为一向下计数器,与内部数据总线B1相连,用于根据寄存器组模块300通过内部数据总线B1输出的设置状态控制循环计算的次数;电路开关402有两个输入端,两个输入端分别与第六计数器401和内部数据总线B1相连,用于根据第六计数器的输出值或内部数据总线B1输入的寄存器组模块300的状态值开通或关闭控制电路模块400;计数器初始化控制单元403的输入端与电路开关402的输出端和内部数据总线B1相连,用于当电路开关402开通时,读取第八寄存器308中低8位的信息,根据低6位的值对第六计数器401进行初始化控制,具体控制参见表2。根据第6位的值决定是进行乘累加运算还是进行马氏距离运算,以及选通矢量乘累积运算控制单元404或马氏距离运算控制单元405;矢量乘累积运算控制单元404的输入端与计数器初始化控制单元403的输出端相连,用于控制计算模块500进行乘累加运算,并将最终计算结果输出;马氏距离运算控制单元405的输入端与计数器初始化控制单元403的输出端相连,用于控制计算模块500进行马氏距离运算,并将最终计算结果输出。
计算模块500具体包括绝对值运算单元501、乘乘加运算单元502和输出端口508;其中,绝对值运算单元501与内部数据总线B1相连,用于完成绝对值运算,输入为矢量a、矢量b,这两组矢量数据在存储模块100的起始地址保存在第二寄存器302和第三寄存器303中。绝对值运算单元501将计算的结果输出到乘乘加运算单元502。
乘乘加运算单元502与所述绝对值运算单元和内部数据总线B1相连,具体包括第五选择器503、第六选择器504、移位器505、乘法器506和累加器507。该乘乘加运算单元502通过设置第八状态寄存器308完成马氏距离运算或乘累加运算。
当进行马氏距离运算时,该乘乘加运算单元502在2个时钟周期完成一次马氏距离运算。具体过程为在第一个时钟周期内,第五选择器503和第六选择器504分别接入绝对值运算单元501的输出和矢量c,矢量c在存储模块100中的起始地址保存在第四寄存器304内。
在第二个时钟周期内,第五选择器503和第六选择器504接入移位器505的输出,移位器505的输入是第一个时钟周期内乘法器506计算结果的输出,同时,通过流水线设计,累加器507可在第二个时钟周期内完成对上一维平方结果的累加运算。
当进行乘累加运算时,该部件可在1个时钟周期内完成一次乘累加运算,此时第五选择器503和第六选择器504分别接入矢量a和矢量b,在该时钟周期内,通过流水线设计,乘法器506完成矢量a和矢量b当前元素的乘法运算,累加器507完成上一时钟周期乘法结果的累加运算。结果产生单元主要是对计算结果进行防溢出控制。
输出端口508,用于将乘乘加运算单元502的计算结果输出给存储模块100的选择器101。
以应用上述协处理器进行马氏距离运算的过程如下如式(1)所示,ai,bi,ci为三个矢量,D为矢量维数。
Σi=1D(|ai-bi|·ci)2---(1)]]>在进行马氏距离运算之前,需将矢量ai,bi,ci的值事先写入存储模块100中,同一组. 矢量必须存放在连续的一段地址空间内。将维数D写入寄存器301中,将ai的首地址写入寄存器302,将bi的首地址写入第三寄存器303,将ci的首地址写入第四寄存器304,将存储模块100中存储单元108内存放的计算结果的地址写入第五寄存器305。通常在进行公式(1)的平方运算之前,需先将|ai-bi|·ci的值进行移位处理,可在第七寄存器307中提前预设移位数,若不对第七寄存器307进行设置,则默认为对其进行16位移位操作。最后对状态第八寄存器308进行设置,使电路按照预期目的工作。如将第八寄存器308设为0x00BF时,表示电路将开始进行马氏距离运算,将对第六计数器401、第一计数器201、第二计数器202、第三计数器203、第四计数器204和第五计数器205重新进行赋值,分别写入第一寄存器301、第二寄存器302、第三寄存器303、第四寄存器304和第五寄存器305中的值。
电路开始工作之后,地址产生模块200首先选通第一计数器201的输出,向内部地址总线A1输出矢量a首个元素的地址后使第一计数器201自增1,并通过内部数据总线B1向计算模块500输出矢量a首个元素的值。
在第二个时钟周期,地址产生模块200选通第一计数器201的输出,向内部地址总线A1输出矢量b首个元素的地址后使第二计数器202自增1,并通过内部数据总线B1向计算模块500输出矢量b首个元素的值,绝对值计算单元501随即开始进行运算。
在第三个时钟周期,地址产生模块200选通第三计数器203的输出,向内部地址总线A1输出矢量c首个元素的地址后使第三计数器203自增1,并通过内部数据总线B1向计算模块500输出矢量c首个元素的值,此时绝对值计算已经完成,计算模块中的第五选择器503和第六选择器504将分别选通绝对值计算单元501的输出和矢量c,电路开始进行乘法运算。
在第四个时钟周期,地址产生模块200将选通第一计数器201的输出,向内部地址总线A1输出矢量a第二个元素的地址后使第一计数器201自增1,并通过内部数据总线B1向计算模块500输出矢量a第二个元素的值,此时上一时钟周期内的乘法运算已经完成,其结果输入到移位器505,计算模块500中的第五选择器503和第六选择器504将选通移位器的输出,准备进行平方运算。
在第五个时钟周期,地址产生模块200选通第二计数器202的输出,向内部地址总线A1输出矢量b第二个元素的地址后使第二计数器202自增1,并通过内部数据总线B1向计算模块500输出矢量b第二个元素的值,绝对值计算随即开始进行,与此同时,上一周期的平方运算也已经完成,其计算结果输入累加器507准备进行累加运算。
在第六个时钟周期,地址产生模块200选通第三计数器203的输出,向内部地址总线A1输出矢量c第二个元素的地址后使第三计数器203自增1,并通过内部数据总线B1向计算模块500输出矢量c第二个元素的值,此时上一周期的绝对值计算和累加计算都已经完成,电路将对第六计数器401自减1,并针对绝对值计算结果进行乘法运算。
在随后的时钟周期里,电路将重复上述第四个时钟周期到第六个时钟周期的工作。当第六计数器401输出为0时,计算结束,计算模块500停止工作。输出端口508先将计算结果高16位写入内部数据总线B1,同时,地址产生模块200选通第五计数器205的输出,向内部地址总线A1输出计算结果高16位存放的地址后使第五计数器205自增1,控制电路模块400通过内部控制信号控制存储模块100将值写入相应位置;在下一个时钟周期,进行低16位的操作,不在复述。计算结果写入结束后,控制电路模块400将寄存器r7的第7位清0,等待下次调用。
以应用上述协处理器进行乘累加运算的过程如下如公式(2)所示,ai,bi为三个矢量,D为矢量维数。
Σi=1D(ai·bi)---(2)]]>在进行乘累加运算之前,需将矢量ai,bi的值事先写入存储模块100中,同一组矢量必须存放在连续的一段地址空间内。将维数D写入第一寄存器301,将ai的首地址写入第二寄存器302,将bi的首地址写入第三寄存器303,将片内存放计算结果的地址写入第六寄存器306。最后对第八寄存器308进行设置,使电路按照预期目的工作。如将第八寄存器308设为0x00E7时,表示电路将开始进行乘累加运算,并对第六计数器401、第一计数器201、第二计数器202、第五计数器205重新进行赋值,分别写入第一寄存器301、第二寄存器302、第三寄存器303、第六寄存器306中的值。
电路开始工作之后,地址产生模块200首先选通第一计数器201的输出,向内部地址总线A1输出矢量a首个元素的地址后使第一计数器201自增1,并通过内部数据总线B1向计算模块500输出矢量a首个元素的值;在第二个时钟周期,地址产生模块选通第二计数器202的输出,向内部地址总线A1输出矢量b首个元素的地址后使第二计数器202自增1,并通过内部数据总线B1向计算模块500输出矢量b首个元素的值,计算模块500中的第五选择器503和第六选择器504将分别选通矢量a和矢量b,电路开始进行乘法运算;在第三个时钟周期,地址产生模块200选通第一计数器201的输出,向内部地址总线A1输出矢量a第二个元素的地址后使第一计数器201自增1,并通过内部数据总线B1向计算模块500输出矢量a第二个元素的值,此时上一周期的乘法运算已经完成,其计算结果输入到累加器507中准备进行累加运算;在第四个时钟周期,地址产生模块将选通第二计数器202的输出,向内部地址总线A1输出矢量b第二个元素的地址后使第二计数器202自增1,并通过内部数据总线B1向计算模块500输出矢量b第二个元素的值,计算模块500中乘法器的第五选择器503和第六选择器504将分别选通矢量a和矢量b,电路开始进行乘法运算,此时上一时钟周期内的累加运算已经完成,将计数器401自减1;在随后的时钟周期里,电路将上述重复第三个时钟周期和第四个时钟周期的工作。当第六计数器401输出为0时,计算结束,计算模块500停止工作。计算结果在存储模块100中的写入方式与马氏距离运算模式下的写入方式相同,不在复述。计算结果写入结束后,控制电路模块400将第八寄存器308的第7位清0,等待下次调用。
本发明实施例提供的协处理器可将嵌入式语音识别中计算量约占50%的马氏距离计算用硬件逻辑实现。该协处理器大大提高嵌入式语音识别系统的性能,并进一步推动语音识别在便携设备上的广泛使用。此外,该协处理器有很强的可扩展性,可以作为单独运用在许多实时语音识别应用领域,如语言学习机、车载免提系统、声控MP3等。本协处理器的技术指标如表3所示。
表3

本发明提供的协处理器完成了基于HMM语音识别算法的马氏距离计算和乘累加运算。进行同样维数的马氏距离计算,本发明需要的时间仅为用DSP计算需要的时间的20%,因此应用该协处理器可以大大提高嵌入式语音识别系统的性能,也省去了价格昂贵的DSP器件,同时可完成通用DSP中的矢量乘累加运算,扩展了其通用性,从而达到提高性能,降低成本,降低功耗的目标。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种协处理器,其特征在于,所述协处理器包括存储模块、地址产生模块、寄存器组模块、控制电路模块和计算模块;所述存储模块通过内部地址总线与所述地址产生模块相连,通过外部地址总线、外部数据总线和外部控制总线与外部处理器相连,通过内部控制总线与所述控制电路模块相连,通过内部数据总线与所述计算模块相连,用于存储计算过程中的特征矢量、模型状态矢量和计算结果;所述地址产生模块通过内部数据总线与所述寄存器组模块相连,通过内部控制总线与所述控制电路模块相连,用于在所述控制电路的作用下产生所述存储模块中存储的特征矢量和计算结果的地址;所述寄存器组模块与所述存储模块统一编址,通过内部数据总线与所述计算模块相连,用于存储各个特征矢量和计算结果的起始地址;所述控制电路模块的输入端通过内部数据总线与所述寄存器组模块的输出端相连,用于通过读所述寄存器组模块中的各个寄存器的内容进行计数器初始化控制、矢量乘累加控制和矢量乘乘累加控制;所述计算模块与内部数据总线和内部控制总线相连,用于对所述存储模块中的特征矢量进行绝对值运算和乘乘加运算,并将计算的结果通过内部数据总线输出给所述存储模块。
2.如权利要求1所述的协处理器,其特征在于,所述存储模块包括第一选择器、输入数据端口、第二选择器、地址端口、第三选择器、控制端口、输出数据端口和存储单元;所述第一选择器与外部数据总线相连和内部数据总线相连;所述输入数据端口通过所述第一选择器与外部数据总线或内部数据总线相连,用于将收到的数据写入所述存储单元;所述第二选择器与外部地址总线或内部地址总线相连;所述地址端口通过所述第二选择器与外部地址总线或内部地址总线相连,为所述存储单元中的数据提供对应的地址;所述第三选择器与外部控制总线或内部控制总线相连;所述控制端口通过所述第三选择器与外部控制总线或内部控制总线相连,控制所述存储单元的工作状态;所述输出数据端口的输入端与所述存储单元相连,输出端分别与外部数据总线和内部数据总线相连,用于通过外部数据总线向外部处理器输入数据或通过内部数据总线向所述计算模块输入数据;所述存储单元与所述输入数据端口、所述地址端口、所述控制端口和所述输出数据端口相连,用于存储特征矢量及计算结果。
3.如权利要求1所述的协处理器,其特征在于,所述地址产生模块包括多个计数器和一个选择器;所述多个计数器的输入端与内部数据总线相连,输出端与所述选择器相连,分别用于产生所述控制电路模块中的特征矢量的当前数据地址和产生所述计算模块的计算结果的地址;所述选择器的输出端与内部地址总线相连,用于将所述多个计数器产生的地址输出给内部地址总线。
4.如权利要求1所述的协处理器,其特征在于,所述寄存器组模块包括多个寄存器和译码器;所述多个寄存器的输出端与内部数据总线相连,输入端与外部数据总线相连,分别用于存放不同待计算矢量的起始地址、保护溢出设置和计算方式设置;所述译码器的输出端与所述多个寄存器的使能端相连,用于控制所述多个寄存器值的写入。
5.如权利要求1所述的协处理器,其特征在于,所述控制电路模块包括计数器、电路开关、计数器初始化控制单元、矢量乘累积运算控制单元和马氏距离运算控制单元;所述计数器为一向下计数器,与内部数据总线相连,用于根据所述寄存器组模块通过内部数据总线输出的设置状态控制循环计算的次数;所述电路开关有两个输入端,所述两个输入端分别与所述计数器和内部数据总线相连,用于根据所述计数器的输出值或内部数据总线输入的所述寄存器组模块的状态值控制电路模块开通或关闭;所述计数器初始化控制单元的输入端与所述电路开关的输出端和内部数据总线相连,用于当所述电路开关开通时,对所述计数器进行初始化控制,以及选通所述矢量乘累积运算控制单元或所述马氏距离运算控制单元;所述矢量乘累积运算控制单元的输入端与所述计数器初始化控制单元的输出端相连,用于控制所述计算模块进行乘累加运算,并将最终计算结果输出;所述马氏距离运算控制单元的输入端与所述计数器初始化控制单元的输出端相连,用于控制所述计算模块进行马氏距离运算,并将最终计算结果输出。
6.如权利要求1所述的协处理器,其特征在于,所述计算模块包括绝对值运算单元、乘乘加运算单元和输出端口;所述绝对值运算单元与内部数据总线相连,用于对输入的两个特征矢量进行绝对值运算,并将计算的结果输出到所述乘乘加运算单元;所述乘乘加运算单元具体包括两个选择器、移位器、乘法器和累加器,所述两个选择器分别与所述绝对值运算单元和内部数据总线相连,用于接收所述绝对值运算单元的计算结果和另一特征矢量;所述移位器的输入端与内部数据总线相连,输出端与所述两个选择器相连,用于对所述乘法器的运算结果进行移位;所述乘法器的输入端与所述两个选择器相连,用于对所述两个选择器中输出的特征矢量进行乘法运算;所述累加器与所述移位器和所述乘法器相连,用于对移位后的结果进行平方累加运算,将累加运算结果传输给所述输出端口;所述输出端口与所述乘乘加运算单元的输出端相连,用于将所述乘乘加运算单元的计算结果输出给内部数据总线,通过内部数据总线将计算结果传输给所述存储模块。
7.如权利要求1所述的协处理器,其特征在于,所述存储模块为标准静态随机存取存储器SRAM。
全文摘要
本发明公开了一种协处理器,属于集成电路设计领域。所述协处理器包括存储模块、地址产生模块、寄存器组模块、控制电路模块和计算模块。本发明提供的协处理器可以进行基于HMM语音识别算法的马氏距离计算和乘累加运算,能够提高嵌入式语音识别系统的性能,同时可完成通用DSP中的矢量乘累加运算,扩展了其通用性,具有提高性能,降低成本,降低功耗的优点。
文档编号G10L15/14GK101082859SQ200710118430
公开日2007年12月5日 申请日期2007年7月5日 优先权日2007年7月5日
发明者董明, 梁维谦, 李鹏, 智强, 刘润生 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1