一种获取线性预测滤波器系数的装置的制作方法

文档序号:2829456阅读:823来源:国知局
专利名称:一种获取线性预测滤波器系数的装置的制作方法
技术领域
本发明涉及信号处理技术,尤其指一种获取线性预测滤波器系数的 装置。
背景技术
线性预测是语音处理中的核心技术之一,已成功地应用于语音识 别、合成及编码等方面。而线性预测中一个关键的内容是求解线性预测滤波器的系数,由于LD ( Levinson..Durbin,列文森-杜宾)算法在求解 线性预测滤波器的系数时采用递推迭代的处理方式,具有简单、方便、 快速有效等特点,所以被广泛使用。在Levinson-Durbin算法处理过程中,先输入自相关系数,然后进行 初始化,接着利用前一次迭代的结果进行下一次迭代,每一次迭代完成 后都会比前一次迭代多获得一个滤波器系数,因此通过一定次数如27次 迭代后,将获得27个新滤波器系数,而且初始化时得到的那个滤波器系 数在每次迭代中始终保持不变。图1给出了 Levinson-Durbin算法实现的流程图,为了便于说明,还 是以迭代次数为27进行说明,其中P(m)指滤波器系数(m指迭代次数, 取值可以是0、 1、 2……),P"/0具体指第m次迭代后产生的第K个滤 波器系数,P(O)或尸。(0)指初始化时得到的滤波器系数,Jmin指最小误差 值,/:具体指第m次迭代后产生的最小误差值。首先输入自相关系数后 进行初始化,此时m取初值O,得到系数P(0)和误差值J^,然后对迭代 次数加l,如果迭代次数还没有达到27次,先求取反射系数Tm值,接着求取各阶滤波器系数P(l).....p(m),随后求取最小误差值/:,并利用第m次得到的滤波器系数和最小误差值更新第m-1次得到的滤波器系数 和最小误差值;直到迭代次数达到27次后,保存滤波器系数P(O)、200610062992.6说明书第2/16页P(l)..... P(27)并作为最终结果输出。由于现有技术一般通过软件来实现Levinson-Durbin算法,从而获取 滤波器系数,从上述过程可以看出,对于一个m阶的线性滤波器,虽然 只需要求取《p阶滤波器系数,但为此必须先求出低于^的各阶预测系 数,由于该算法为递归解法,算法复杂,尤其是乘法、累加以及除法等 运算单元被重复调用,运算量巨大,因此很难在ASIC芯片中实现,不利 于在硬件中的推广。发明内容本发明的目的在于提供一种求取线形预测滤波器系数的装置,并且 该装置适用于求取各阶滤波器系数。本发明方案提供的装置根据多次迭代完成滤波器系数的求取过程, 包括自相关系数存储器、反射系数求取模块、误差值求取模块、滤波 器系数求取模块、滤波器系数存储器及顶层控制模块;所述自相关系数 存储器预先存储有用于迭代的自相关系数;反射系数求取模块,用于完 成每一次迭代中的反射系数值的求取;误差值求取模块,用于完成每一 次迭代中的最小误差值的求取;滤波器系数求取模块,用于完成每一次 迭代中的滤波器系数的求取;滤波器系数存储器,存储每次迭代完成后 得到的滤波器系数;顶层控制模块,用于产生上述各个模块和存储器的 读写控制信号,对各个模块和存储器进行读写调度;其中,所述反射系数求取模块根据所述自相关系数存储器中的自相 关系数、所述滤波器系数存储器中的上一次迭代的滤波器系数及所述误 差值求取模块提供的上一次迭代的最小误差值进行运算,得到本次迭代 的反射系数;所述误差值求取模块根据上一次迭代的最小误差值和所述 反射系数求取模块提供的本次迭代反射系数进行运算,得到本次迭代的 最小误差值;所述滤波器系数求取模块根据所述反射系数求取模块提供 的本次迭代反射系数及所述滤波器系数存储器中的上 一 次迭代的滤波 器系数进行运算,得到本次迭代的滤波器系数,并保存至所述滤波器系8数存储器中。所述滤波器系数存储器为滤波器系数更新模块,用于在存储滤波器系数时利用第N+1次迭代的滤波器系数更新第N次迭代的滤波器系数,N 为自然数。所述误差值求取模块包括误差值寄存器和误差计算单元,所述误差值寄存器接收到所述装置外部传送来的启动信号m一start后,从所述自相关系数存储器中读取第一个自相关值作为最小误差值的初始值;所述误 差计算单元根据所述反射系数求取模块提供的本次迭代反射系数和所述误差值寄存器中的上一次迭代的最小误差值得到本次迭代的最小误 差值并用来更新所述误差值寄存器中上一次迭代的最小误差值。所述误差计算单元包括反射系数模平方计算单元、第一D触发器、 乘法器B、第二D触发器、减法器及第三D触发器,其中反射系数模平方 计算单元的输出端与第一D触发器输入端相连,第一D触发器的输出端 与乘法器B的一个输入端相连;乘法器B的另一个输入端与所述误差值寄 存器相连,接收上一次迭代的最小误差值,乘法器B的输出端与第二D 触发器输入端相连;第二D触发器输出端减法器的一个输入端相连,减 法器的另一个输入端与所述误差值寄存器相连,接收上一次迭代的最小 误差值;减法器输出本次迭代的最小误差值,减法器输出端与第三D触 发器输入端相连,第三D触发器输出端与所述误差值寄存器相连,输出 本次迭代的最小误差值。所述反射系数求取模块包括乘法器C、第四D触发器、第一加法器、 第五D触发器、第二取共轭单元、除法器、第六D触发器及反射系数寄 存器,其中乘法器C的一个输入端与所述自相关系数存储器相连,另一 个输入端与所述滤波器系数存储器相连;乘法器C的输出端与第四D触发 器的输入端相连,第四D触发器的输出端与第一加法器的一个输入端相 连;第一加法器的输出端与第五D触发器的输入端相连,第五D触发器 的输出端与第一加法器的另一个输入端及除法器的一个输入端相连;第 二取共轭单元输入端与所述误差值求取模块相连,输出端与除法器的另 一个输入端相连,提供上一次迭代最小误差值的共轭,除法器在接收到 所述顶层控制模块传送来的除法器启动信号后进行除法操作,输出本次迭代的反射系数;第六D触发器输入端接收本次迭代的反射系数,输出 端与所述反射系数寄存器相连;所述反射系数寄存器保存本次迭代的反 射系数。所述滤波器系数求取模块包括第三取共轭单元、乘法器D、第七D 触发器、第二加法器、选择器及第八D触发器,其中第三取共轭单元的 输入端与所述滤波器系数存储器相连,输出端与乘法器D的一个输入端 相连;乘法器D的另一个输入端与所述反射系数求取模块相连,接收本 次迭代的反射系数,输出端与第七D触发器的输入端相连;第七D触发 器的输出端与第二加法器的一个输入端相连,第二加法器的另一个输入 端与所述滤波器系数存储器相连,接收上一次迭代的滤波器系数;选择 器的O输入端与第二加法器的输出端相连,l输入端与所述反射系数求取 模块相连,控制端接收述顶层控制模块传送来的选择信号sel,输出本次 迭代的滤波器系数;第八D触发器的输入端与选择器的输出端相连,输 出端与滤波器系数存储器相连。所述乘法器C和乘法器D可以利用一个复用乘法器来实现,所述复用 乘法器为时分复用乘法器,包括一个乘法单元和两个多路选择器,其中所述乘法单元为复数乘法器,用于实现复数相乘或实数相乘;所述两个多路选择器用于接收相同的控制信号,并分别输出 一 路信 号至所述乘法单元作为所述乘法单元的输入信号。所述一个选择器的控制端接收第一控制信号pp—flag, 0输入端接收 乒RAM输出的滤波器系数或1输入端接收乓RAM输出的滤波器系数;输 入读使能信号和输入读地址信号的两个反向选择器的控制端接收第一 控制信号,0输出端分别与兵RAM相连接或1输出端分别与乓RAM相连 接;输入滤波器系数、输入写使能信号和输入写地址信号的三个反向选 择器的控制端接收第二控制信号,0输出端分别与兵RAM相连接或1输出 端分别与乓RAM传相连接;且所述第一控制信号和第二控制信号互为反 信号。所述顶层控制模块包括第一计数器、第二计数器、第三计数器、自 相关系数读控制信号产生器和滤波器系数读写控制信号产生器,其中第 一计数器用于指示迭代次数,并根据第一计数器最低位产生控制信号卯—flag;第二计数器,用于当第一计数器计到新值时,开始倒计数,初 值为上一次迭代的第一计数器值,直至递减为0;第三计数器,用于当 第二计数器值为0后,开始累加计数.,直到本次迭代第一计数器的2倍值; 自相关系数读控制信号产生器,用于根据第一计数器和第二计数器的计 数值,产生访问自相关系数存储器的读使能信号和读地址信号;滤波器 系数读写控制信号产生器,用于根据第二计数器和第三计数器的计数 值,产生滤波器系数读写使能信号和读写地址信号。本发明技术方案在利用硬件实现线性预测滤波器系数的获取,实现 结构比较灵活,适应于求取各阶滤波器系数,且当自相关系数长度和滤 波器系数长度发生变化时也可适用;特别通过复用处理,利用一个时分 复用乘法器实现多个乘法器的功能,能够节省硬件资源消耗,有利于芯 片设计以及在硬件中的推广。


图1是Levinson - Durbin算法的实现流程图;图2是本发明实施例中获取滤波器系数装置实现LD算法的时序图;图3是本发明实施例中获取滤波器系数装置的框图;图4是图3中所示自相关系数存储器的结构图;图5是图3中所示误差值求取模块的结构图;图6是图3中所示反射系数求取模块的结构图;图7是图3中所示滤波器系数求取模块的结构图;图8是图3中所示滤波器系数存储器的结构图;图9是图3中所示顶层控制模块的结构图;图IO是图9中所示3个计数器的产生过程;
图11是图9中所示3个计数器的时序图;图12是本发明实施例中时分复用乘法器的实现结构图。
具体实施方式
本发明采用串行设计方法,通过硬件来进行多次迭代,实现Levinson -Durbin算法,得到线性预测滤波器系数,且实现结构是一种通用结构, 即使当自相关系数长度和滤波器系数长度变化时也可适用。下面结合附 图及实施例,对本发明作进一步详细说明。图2给出了本发明实施例中获脱滤波器系数装置获取滤波器系数的 总体时序图,也就是实现LD算法的时序图。本实施例继续以迭代次数为 27进行说明。应当理解,本发明迭代次数并不限于27次这一种情况,根 据需要也可以选择其他的迭代次数。对这27次而言,每次又可以分为三 步来完成第一步计算反射系数值Tm,第二步计算滤波器系数值P,第 三步计算最小误差值Jmin。当接收到启动信号后,开始进行迭代,启动 信号可以是外部的输入信号,每次迭代按顺序依次完成反射系数Tm、滤 波器系数P( 1) ~ P(m)和最小误差值Jmin的计算,或者依次完成反射系数 Tm、最小误差值Jmin和滤波器系数.P(l) P(m)。由于本次迭代获得的最 小误差值Jmin总是用于下一次迭代,所以当进行最后一次迭代即第27次 迭代时,可以不进行Jmin值的计算,即当完成P(1) P(27)值的计算后就 可输出完成标志给外部模块,表示滤波器系数已经计算完成,外部模块 接收到完成标志后就可以读取滤波器系数P( 1) ~ P(27)。本发明实施例中所述获取滤波器系数的装置将软件完成的各部分 功能分别交由不同的硬件模块完成,最终生成滤波器系数并输出。请参 阅图3,该装置具体包括自相关系数存储器、误差值求取模块、反射系 数求取模块、滤波器系数存储器、滤波器系数求取模块和顶层控制模块 六个模块。其中自相关系数存储器用于存储已知的自相关系数x(0) x(27),在
接收到顶层控制模块发出的自相关系数读使能信号和自相关系数读地 址信号后,找到对应的自相关系数并输出给误差值求取模块及反射系数求取模;误差值求取模块用于完成每一次迭代中的最小误差值人m的求取, 并将最小误差值厶m传输给反射系数求取模块。初始的最小误差值即jL 来自于自相关系数存储器,令《 =1(0)(对应第一个自相关系数值,该 值为正实数),此时m-O,然后m值加l,之后最小误差值j;l由前一次 的最小误差值与反射系数求取模块提供的反射系数进行运算获得, 具体运算过程为反射系数求取模块用于完成每一次迭代中的反射系数值Tm的求取, 其输入来自于自相关系数存储器、滤波器系数存储器和误差值求取模 块,具体运算过程是滤波器系数求取模块用于完成每 一 次迭代中的滤波器系数P (m)的求 取,该模块的输入来自于反射系数求取模块和滤波器系数存储器,当k 等于0时,P(O)值为l,当k为其它值时,具体运算过程是尸m (" = J"—1 (" + L 1 (m — ")* , " 1,2,…,m — 1可以看出,滤波器系数的个数在每次迭代中逐步递增,即第l次迭 代获得P(l),第2次迭代获得P(1)、 P(2),依此类推,当迭代27次后,获得P(l)、 P(2)........ P(27),每次获得的滤波器系数都存放到滤波器系数存储器中;滤波器系数存储器用于存储每次迭代完成后得到的滤波器系数,除 初始化时得到的滤波器系数,(o)之外,每一次迭代获得的系数将会被下 一次迭代得到的滤波器系数覆盖,也就是说利用第N+1迭代得到的滤波
器系数更新第N次迭代的滤波器系数,其中N为自然数,例如第l次迭代 获得P1(1),这时滤波器系数存储器中保存P1(0)、 第2次迭代获得 P2(1)、 P2(2),这时滤波器系数存储器中保存的滤波器系数为P2(0)、 P2(1)、W(2);同理,第27次迭代后,滤波器系数存储器中保存的滤波器系数为尸27(0)、尸27(1)、尸27(2)、……、尸27(27),其中尸。(0)、尸1(0)、……尸"(0)相等。 顶层控制模块完成对上述5个模块和存储器自相关系数存储器、误差值求取模块、反射系数求取模块、滤波器系数存储器、滤波器系数求取模块的调度操作。下面将结合附图分别对各个模块进行具体说明。1、 自相关系数存储器请参阅图4,图4给出了自相关系数存储器的结构图,本实例给出 的是RAM,自相关系数事先被写入存储器,其中x—ren为自相关系数读 使能信号,x—radr为自相关系数读地址信号,这两个信号来自顶层控制 模块;x—rdata为自相关系数读数据,是自相关系数存储器的输出信号即 自相关系数。所述RAM深度可以是28,用于存放输入的28个已知自相关系数 x(0) x(27),在存储自相关系数时,每个地址对应的数据为相应标号的 自相关系数,即O地址对应x(O),l地址对应x(l), ...,27地址对应x(27), 自相关系数存储时的位宽可以根据输入而定。如果输入的自相关系数没 有28个时,则将后面的自相关系数都写0。例如只输入10个自相关系 数时,贝'j x(0) x(9)对应为输入的IO个自相关值,x(10)-x(27)都补0。自相关系数存储器接收到顶层控制模块发出的自相关系数读使能 信号x一ren和自相关系数读地址信号x—radr后,找到对应的数据也就是 自相关系数作为x—rdata信号输出给误差值求取模块及反射系数求取模 块。2、 误差值求取模块请参阅图5,图5给出了误差值求取模块的结构图,可以看出误差 值求取模块包括初始化单元和误差计算单元两部分。 其中初始化单元中设置有误差值寄存器。在接收到启动信号m一start 后,例如当m一start上升沿有效时,将自相关系数存储器中的第 一个自 相关值x(O)锁存到误差值寄存器中 > 完成初始化;误差计算单元中包括、乘法器A、第一取共轭单元、第一D触发器、 乘法器B、第二D触发器、减法器及第三D触发器。反射系数模平方计算单元可以由乘法器A及第一取共轭单元组成, 反射系数寄存器分两路输出反射系数, 一路经过第 一取共轭单元后到达 乘法器A,另一路直接到达乘法器A;乘法器A是复数乘法器,对这两 路进行相乘操作,得到反射系数模的平方KI2。然后反射系数模的平方I ^ 12传送给第一 D触发器;第一 D触发器接 收到的反射系数更新启动信号j—en有效后,将|rm |2锁存 一 个节拍并输出 给下一乘法器B;误差值寄存器中保存有最小误差值/^,并输出/^给 乘法器B和减法器。乘法器B对|7;|2和4进行相乘操作,并将乘积lz;「4通过第二 D 触发器再锁存一个节拍后输出给减法器;减法器利用误差值寄存器直接传送过来的最小误差值减去第二 D触发器输出的乘积|乙12 Jmin ,得到 本次迭代的最小误差值,然后输出给第三D触发器;减法完成后,误差 值更新完成指示信号j一end有效,第三D触发器将本次迭代得到的最小 误差值锁存到误差值寄存器中,并更新原来保存的最小误差值信号m—start、信号j—en、信号j一end三个信号在本实施例中均是单 脉冲有效信号,均为上升沿有效,并且都来自顶层控制模块。3、反射系数求取模块请参阅图6,图6给出了反射系数求取模块的结构图,反射系数求 取模块包括乘法器C、第四D触发器、第一加法器、第五D触发器、第 二取共轭单元、除法器、第六D触发器及反射系数寄存器。当进行第m次迭代时,已经获得m-l个滤波器系数,乘法器C接 收滤波器系数存储器输出的第m-l个滤波器系数和自相关系数存储器输 出的第l个自相关系数,并进行一'次乘法操作,得到第一个乘积,传送 给第四D触发器,然后继续对第m-2个滤波器系数和笫2个自相关系数 进行相乘,得到第二个乘积,依次类推,得到第m个乘积,也就是第0 个滤波器系数和第m个自相关系数的乘积;以第三次迭代为例,分别是 尸3(2)x(1),尸3(Dx(2),尸3(0)x(3)。第四D触发器将乘法操作得到的乘积锁存一个节拍后送至加法器;第五D触发器将加法器输出的信号锁存一个节拍后,分俩路传输, 一路 送至除法运算器, 一路反馈至第一加法器;第一加法器在累加使能信号 cc—en有效期间对第四D触发器输出的第二个乘积和第五D触发器反馈 回来的第一个乘积相加,得到的结果经第五D触发器反馈至第一加法 器,再和第三个乘积相加,依次类推进行累加操作,得到第1至第m个 乘积的相加之和/ 3(2、(1)+ ^①x(2H尸3(0、(3)。除法器接收第五D触发器锁存一个节拍后输出的累加结果,以及误 差值求取模块中误差值寄存器输出的最小误差值经第二取共轭单元后 的值,除法器启动信号dh^start到来时刻例如上升沿有效时刚好完成m 个乘积的累加,同时启动除法器,用累加结果除以最小误差值的共轭。 除法器采用移位相减的算法进行,被除数也就是最小误差值共轭的位宽 决定需要的拍数,当除法器运算完成后,得到反射系数^,并输出除法 器结束标志信号div—end至顶层控制模块,反射系数送至第六D触发器; 在反射系数更新完成指示信号t—eiid有效例如上升沿有效时第六D触发 器锁存反射系数到反射系数寄存器中。累加使能信号cc一en为多拍有效信号,除法器启动信号div—start, 反射系数更新完成指示信号t—end,除法器完成指示信号div—end,均是 单脉冲有效信号,并且除了 div一end信号输出至顶层控制模块外,其他 三个信号都是来自顶层控制模块。4、滤波器系数求取模块请参阅图7所示,图7揭示了滤波器系数求取模块的结构,滤波器 系数求取模块包括第三取共轭单元、乘法器D、第七D触发器、第二加 法器、选择器及第八D触发器。
滤波器系数存储器分别与第三取共轭单元及第二加法器相连,用于 输出上一次迭代保存的滤波器系数,输出第k个滤波器系数至第三取共轭单元,第m-k个滤波器系数至第二加法器,l<=k<=m-l。以通过第二 次迭代系数计算第三次迭代系数为例,这里具体为输出第1个系数P2(1) 至第三取共轭单元、第2个系数,(:2)至第二加法器, 一路送至第三取共 轭单元, 一路送至第二加法器;第三取共轭单元对滤波器系数p2(l)进行 取共轭操作,得到一(,))'、(尸2(2)丫,并将(尸2(0)'、(尸2(2))'送至乘法器D; 误差值求取模块中的反射系数寄存器分别与乘法器D和选择器相连,输 出本次反射系数7;给乘法器D;乘法器D对第1个滤波器系数的共轭 (p2(,))'、和反射系数7;进行相乘操作,乘积(尸2(,))'7;送至第七D触发器; 第七D触发器将乘积锁存一个节拍后送至第二加法器;第二加法器将该 延迟后的乘积与第2个滤波器系数/>2(2)相加,得到为(p、))'7; + p2(2)即第三次迭代滤波器系数尸3(2),输出第2个系数尸2(2)至第三取共轭单元、第1个系数w(l)至第二加法器,如此操作,可以得到本次迭代的又一个滤波器系数尸3(1),当然也可以根据需要依次得到P3(1)、 P3(2)。由于每一次迭代都会增加一个滤波器系数,对新增加的第m个滤波 器系数例如尸3(3),可以令其等于反射系数,此处为73;因此提供了一个 选择器,本实施例为二选一的选择器,0输入端接收第二加法器的输出 信号,1输入端接收反射系数寄存器输出的反射系数例如7;; sel为选择 信号,选择输出后的结果送至第八D触发器;第八D触发器在滤波器 系数更新输出使能信号p一en有效时锁存本次迭代得到的滤波器系数, 并送到滤波器系数存储器中,为了表达需要,这些最新写入滤波器系数 存储器中的滤波器系数被称为p—wdata,滤波器系数存储器利用p一wdata 更新上 一 次迭代保存的滤波器系数即利用尸3 (1) 、 (2)及P3 (3)替换P2 (1)和 尸2(2)。因而经过本次速代之后得到的滤波器系数为尸3(0)、尸3(1)、尸3(2)及 P3(3),选择信号sel及滤波器系数更新输出使能信号p—en均来自顶层控 制模块。5、滤波器系数存储器
请参阅图8所示,图8揭示了滤波器系数存储器的结构,滤波器系 数求取才莫块包括6个二选一选择器和兵乓RAM。兵RAM和乓RAM的 深度都根据第27次迭代后滤波器的个数设置为28,每个地址对应的数 据为相应标号的滤波器系数,即O地址对应P(O), 1地址对应P(l),..., m地址对应P(m),数据的位宽根据输出而定。由于计算本次迭代滤波器 系数时采用的是原先保存的滤波器系数,因此采用乒乓RAM结构来避 免滤波器系数更新时的滤波器系数读写冲突,假定本次迭代更新滤波器 系数值时是按顺序依次更新P(l)、 P(2)、…P(m),这样在第三次迭代中 计算滤波器系数时,由于此时需要保留的P(1) P(2)值不是上一次迭代 的值尸2(1)和尸2(2),而是经过本次迭代后更新过的值尸3(1) 、 P3(2),所以需 要采用乒乓RAM来存储滤波器系数值,使得用于本次迭代的滤波器系 数尸2(1)和尸2 (2)如果从兵(或乓)RAM读出时,新得到的滤波器系数尸3(1)、 P3 (2)写入乓(或兵)RAM 。而滤波器系数的初值P(0)是启动信号m—start 有效时就被同时初始化到兵RAM和乓RAM中,以后迭代中均不再做 更新。图8中pp_flag、 ~ pp—flag是乒乓RAM切换标志信号,p—wen为滤 波器系数写使能信号,p一wadr为滤波器系数写地址信号,p—wdata为滤 波器写数据,p—ren为滤波器系数读使能信号,p一radr为滤波器系数读 地址信号,p—rdata为滤波器系数读数据,其中除了 p—rdata为滤波器系 数存储器的输出信号,p—wdata来自滤波器系数求取模块,其他6个信 号均为输入信号并且都来自于顶层控制模块。当乒乓RAM切换标志信号 pp—flag为1时,右边的俩个反向选择 器和选择器1通道导通,根据滤波器系数读使能信号p—ren和滤波器系 数读地址信号p—radr从乓RAM中读出已存在的上一次迭代滤波器系数 例如第二次迭代产生的滤波器系数^(D和P2(2),作为信号p一rdata输出 用于进行第三次迭代;这时pp—flag为0,左边的三个反向选择器0通道 导通,根据滤波器系数写使能信号p_wen和滤波器系数写地址信号 p—wadr向乒RAM写入本次迭代产生的滤波器系数例如第三次迭代产生
的系数P3(l)、尸3(2)和尸3(3),这三个系数作为信号p—wdata写入乒RAM;; 第四次迭代时,pp—flag变为1, pp—flag变为0,这时左边的三个反向 选择器1通道导通,乓RAM用于存储新的迭代即第四次迭代产生的滤 波器系数P4 (1) 、 , (2)、尸4 (3)和P4 (4):这四个系数作为信号p—wdata写入 乓RAM,乒RAM继续保存第三次迭代产生的系数P3(1)、 W(2)和尸3(3), 并输出这三个系数作为信号p—rdata用于第四次迭代;进行第五次迭代 时,pp一flag重新变为0,这时乒RAM开始保存第五次迭代产生的系数, 而乓RAM继续保存第四次迭代产生的系数。不难思及,这里也可以采用寄存器存储滤波器系数,这样做对硬件 资源需求增多,时序上实现更加复杂;6、顶层控制模块顶层控制模块负责产生各个模块的时序控制信号,达到对各个模块 的调度。请参阅图9,图9揭示了顶层控制模块的结构图,顶层控制模 块包括三个计数器,自相关系数读控制信号产生器及滤波器系数读写控 制信号产生器;此外还包括多个D触发器。图9中计数器1为迭代次数计数器m一cnt[4:0],计数范围1~27,计 数器2为反射系数递减计数器t—cnt[4:0],计数范围为m_cnt[4:0]-l ~ 0, 计数器3为滤波器系数地址计数器p—cnt[5:0],计数范围为2~ 2*m_cnt[4:0],三个计数器都由算法启动信号m—start进行置初值。根据计数器1可以产生乒乓RAM切换标志pp—flag信号;根据计数 器1和计数器2,可以产生自相关系数读控制信号x—ren和x—radr;根 据计数器3可以产生输出选择信号sel,根据计数器2和计数器3可以 产生滤波器系数读写控制信号p_ren、 p—radr、 p—wen和p—wadr;根据从 反射系数求取模块送来的dh^end信号寄存器打一拍后获得t—end,然后 再打 一 拍产生j—en ,接着打两拍得的j—end信号。请参阅图10,图IO给出了 3个计数器的工作过程。首先计数器1 在算法启动信号m—start有效时,对计数器置1,在迭代次数累加使能信 号m next有效时加1,完成1~27的计数功能;计数器2在算法启动信
号n^start有效时,对计数器清0,在迭代次数累加使能信号m—next有 效时置数为m一cnt,这里m—cnt为上一次迭代的值,然后开始倒计数, 直到为0;计数器3在算法启动信号m—start有效时或者反射系数计算完 成信号t—end有效时置数为2,然后在累加使能信号p—cnt—add_en有效 时加l,完成2 2m一cnt计数的功能;累加使能信号当反射系数计算完成 指示信号t—end有效且m—cnt不为]时置1,当计数到2mjnt-l对或算 法启动信号有效时清0。自相关系数读控制信号产生器主要包括D触发器和减法器,如图 10中所示,T计算选数使能信号t一en可以用来于作为自相关系数读使能 信号x一ren, t—en可以利用该D触发器来获得,t—en它在算法启动信号 m—start有效或迭代次数累加使能信号m—next有效时置1,当t—cnt为0 时清0,其中m一next信号可以利用一个选择器获得,当m—cnt等于27 时,该选择器输出0 (用一个比特表示),否则输出j—end信号。t—en 的延迟信号作为累加使能信号cc—en;另外根据计数器1可以产生乒乓 RAM切换标志pp—flag信号,例如pp—flag可以根据利用m—cnt[O]值进 行切换的最低比特也就是m—cnt[O]作为pp—flag信号;根据计数器1和 计数器2,可以产生自相关系数读地址信号x—radr,例如利用迭代次数 计数器(计数器1)的值m一cnt减去反射系数递减计数器(计数器2) 的值t—cnt确定地址信号x_radr,(该减法器图中未示出)。滤波器系数读写控制信号产生器主要包括D触发器、选择器及逻辑 运算单元,如图10所示,P计算选数使能信号p—en当反射系数计算完 成指示信号t—end有效且m—cnt不等于1时置1,当p—cnt计数到2m_cnt-l 时清0;将p—en信号和t一en信号逻辑相或运算后产生滤波器系数读控 制信号p—ren信号,读地址信号p—.radr为p选择信号地址p—adr信号, p一adr信号需要通过3级选择器来产生,第一级通过p—cnt[O]来选定 p—cnt[5:l]还是m_cnt-p—cnt[5:l],笫二级通过p_en信号有效且p—cnt不 等于2m一cnt时来选定是O还是前一级选择输出值,第三级通过t一en信 号来选择是t一cnt还是第二级输出。滤波器系数写使能信号p—wen可以 冲艮据p—en和p_end 4言号来产生,例如p—en的延迟4言号和p_cnt的最4氐 4立p—cnt[O]逻寿尋与后再和p一end进4亍逻4尋或即可4寻到p_wen, 而p—end 信号根据p—en的延迟信号的下降沿来获得,写地址信号p一wadr根据高 5bit计数值p—cnt[5:l]的高5bit计数值也就是p—cnt[5:l]信号的延迟信号 来产生。请参阅图ll所示,图11揭示了各计数器的时序关系,m—start为算 法启动信号,m一end为算法结束信号。当算法启动信号m一start有效后, 开始对三个计数器置初值。当计数器m一cnt计到新值时,例如m_cnt的 值从2变成3时,计数器t_cnt也相应的开始倒计数,初值为计数器m—cnt 前一次的计数值也就时2,当计数器t一cnt倒计数到0后,开始启动p一cnt 计数器累加计数,p—cnt初值固定为2,累加值的上限值为2*m_cnt。在上面提到的6个模块中,有多处使用到乘法器,由于乘法器单元 在硬件资源中消耗较大,所以对模块中的乘法器进行复用,即通过将使 用乘法器的时刻都错开,完成时分复用。请参阅图12,图12揭示了本发明实施例中时分复用乘法器的实现 结构图,复用乘法器可以通过分时复用来代替乘法器A、乘法器B、乘 法器C和乘法器D这四个乘法器;或者代替其中两个或三个,例如替换 乘法器A和乘法器B,乘法器C和乘法器D予以保留;进一步地还可 以用两个复用乘法器来进行替换,每个复用乘法器各替换两个,例如一 个时分复用乘法器替换乘法器A和乘法器B,另一个时分复用乘法器替 换乘法器C和乘法器D。复用乘法器具体包括一个乘法单元、两个多路 选择器,多路选择器路数等于所替换的乘法器的个数,且这两个多路选 择器采用同 一个输入端选择控制信号。其中复用乘法器的输入选择控制 信号也就是两个选择器的选择控制信号来自顶层控制模块,这个信号需 要用到计数器1 (m_cnt[4:0])、计数器2 ( t—cnt[4:0])和计数器3 (p_cnt[5:0])的时序,通过输入选择控制信号来确定多路选择器中具体 一路通道的导通。假设需使用乘法器A时,通过输入选择控制信号选择 复用乘法器当前的两个输入端都对应为乘法器A的两个输入端,乘法单 元运算得出的结果就是乘法器A的结果,即可实现乘法器A的功能。本发明技术方案在利用硬件实现Levinson - Durbin算法时可以通过 ASIC (专用芯片)来实现,且实现结构比较灵活,适应于求取各阶滤波 器系数;特别通过复用处理,利用一个时分复用乘法器实现多个乘法器 的功能,能够节省硬件资源消耗,有利于芯片设计以及在硬件中的推广。对本发明,在实现中可以进一步采用多级流水实现,比如将计算误 差值Jmin和计算滤波器系数值P并行处理,多加一级流水,这样时序 延迟将降低,但是需要多增加乘法器。此外本发明中提到的硬件实现结构是一种通用结构,即使当自相关 系数长度和滤波器系数长度变化时也可适用。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱 离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本 发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动 和变型在内。
权利要求
1、一种获取线性预测滤波器系数的装置,其特征在于,包括自相关系数存储器,存储用于迭代的自相关系数;反射系数求取模块,用于完成每一次迭代中的反射系数值的求取;误差值求取模块,用于完成每一次迭代中的最小误差值的求取;滤波器系数求取模块,用于完成每一次迭代中的滤波器系数的求取;滤波器系数存储器,存储每次迭代完成后得到的滤波器系数;顶层控制模块,用于产生上述各个模块和存储器的读写控制信号,对各个模块和存储器进行读写调度;其中,所述反射系数求取模块根据所述自相关系数存储器中的自相关系数、上一次迭代的滤波器系数及所述误差值求取模块提供的上一次迭代的最小误差值进行运算,得到本次迭代的反射系数;所述误差值求取模块根据上一次迭代的最小误差值和所述反射系数求取模块提供的本次迭代反射系数进行运算,得到本次迭代的最小误差值;所述滤波器系数求取模块根据所述反射系数求取模块提供的本次迭代反射系数及所述滤波器系数存储器中的上一次迭代的滤波器系数进行运算,得到本次迭代的滤波器系数,并保存至所述滤波器系数存储器中。
2、 如权利要求l所述的装置,其特征在于,所述滤波器系数存储器 为滤波器系数更新模块,用于在存储滤波器系数时利用第N+1次迭代的 滤波器系数更新第N次迭代的滤波器系数,N为自然数。
3、 如权利要求l所述的装置,其特征在于,所述误差值求取模块包 括误差值寄存器和误差计算单元,所述误差值寄存器,用于接收所述装置外部传送来的启动信号 m—start,并从所述自相关系数存储器中读取第一个自相关值作为最小误 差值的初始值; 所述误差计算单元用于根据所述反射系数求取模块提供的本次迭 代反射系数和所述误差值寄存器中的上一次迭代的最小误差值得到本 次迭代的最小误差值并用来更新所述误差值寄存器中上一次迭代的最 小误差值。
4、 如权利要求3所述的装置,其特征在于,所述误差计算单元包括 反射系数模平方计算单元、第一D触发器、乘法器B、第二D触发器、减 法器及第三D触发器,其中反射系数模平方计算单元的输出端与第一D触发器输入端相连,第 一D触发器的输出端与乘法器B的一个输入端相连;乘法器B的另一个输入端与所述误差值寄存器相连,用于接收上一 次迭代的最小误差值,乘法器B的输出端与第二D触发器输入端相连;第二D触发器输出端减法器的一个输入端相连,减法器的另一个输 入端与所述误差值寄存器相连,用于接收上一次迭代的最小误差值;减法器输出本次迭代的最小误差值,减法器输出端与第三D触发器 输入端相连,第三D触发器输出端与所述误差值寄存器相连,用于输出 本次迭代的最小误差值。
5、 如权利要求l所述的装置,其特征在于,所述反射系数求取模块 包括乘法器C、第四D触发器、第一加法器、第五D触发器、第二取共轭 单元、除法器、第六D触发器及反射系数寄存器,其中乘法器C的一个输入端与所述自相关系数存储器相连,另一个输入 端与所述滤波器系数存储器相连;乘法器C的输出端与第四D触发器的输入端相连,第四D触发器的输 出端与第一加法器的一个输入端相连;第一加法器的输出端与第五D触发器的输入端相连,第五D触发器的 输出端与第一加法器的另一个输入端及除法器的一个输入端相连;第二取共轭单元输入端与所述误差值求取模块相连,输出端与除法 器的另一个输入端相连,用于提供上一次迭代最小误差值的共辄,除法 器在接收到所述顶层控制模块传送来的除法器启动信号后进行除法操 作,用于输出本次迭代的反射系数;第六D触发器输入端接收本次迭代的反射系数,输出端与所述反射 系数寄存器相连;所述反射系数寄存器用于保存本次迭代的反射系数。
6、 如权利要求5所述的装置,其特征在于,所述滤波器系数求取模 块包括第三取共轭单元、乘法器D、第七D触发器、第二加法器、选择 器及第八D触发器,其中第三取共轭单元的输入端与所述滤波器系数存储器相连,输出端与 乘法器D的一个输入端相连;乘法器D的另一个输入端与所述反射系数求取模块相连,接收本次 迭代的反射系数,输出端与第七D触发器的输入端相连;第七D触发器的输出端与第二加法器的一个输入端相连,第二加法 器的另一个输入端与所述滤波器系数存储器相连,用于接收上一次迭代 的滤波器系数;选择器的O输入端与第二加法器的输出端相连,l输入端与所述反射 系数求取模块相连,用于控制端接收述顶层控制模块传送来的选择信号 sel,输出本次迭代的滤波器系数;第八D触发器的输入端与选择器的输出端相连,输出端与滤波器系 数存储器相连。
7、 如权利要求6所述的装置,其特征在于,所述乘法器C和乘法器D 可以利用一个复用乘法器来实现,所述复用乘法器为时分复用乘法器, 包括一个乘法单元和两个多路选择器,其中所述乘法单元为复数乘法器,用于实现复数相乘或实数相乘; 所述两个多路选择器用于接收相同的控制信号,并分别输出 一 路信 号至所述乘法单元作为所述乘法单元的输入信号。
8、 如权利要求l所述的装置,其特征在于,所述滤波器系数求取模 块包括第三取共轭单元、乘法器D、第七D触发器、第二加法器、选择 器及第八D触发器,其中 第三取共轭单元的输入端与所述滤波器系数存储器相连,输出端与乘法器D的一个输入端相连;乘法器D的另一个输入端与所述反射系数求取模块相连,接收本次 迭代的反射系数,输出端与第七D触发器的输入端相连;第七D触发器的输出端与第二加法器的一个输入端相连,第二加法 器的另一个输入端与所述滤波器系数存储器相连,用于接收上一次迭代 的滤波器系数;选择器的O输入端与第二加法器的输出端相连,l输入端与所述反射 系数求取模块相连,用于控制端接收述顶层控制模块传送来的选择信号 sel,输出本次迭代的滤波器系数;第八D触发器的输入端与选择器的输出端相连,输出端与滤波器系 数存储器相连。
9、 如权利要求l所述的装置,其特征在于,所述滤波器系数存储器 包括一个选择器、五个反向选择器、乒RAM及乓RAM,其中所述一个选择器的控制端接收第一控制信号pp—flag, 0输入端接收 乒RAM输出的滤波器系数或1输入端接收乓RAM输出的滤波器系数;输入读使能信号和输入读地址信号的两个反向选择器的控制端接 收第 一控制信号,0输出端分别与兵RAM相连接或l输出端分别与乓 RAM相连接;输入滤波器系数、输入写使能信号和输入写地址信号的三个反向选 择器的控制端接收第二控制信号,0输出端分别与乒RAM相连接或1输出 端分别与乓RAM传相连"t妄;且所述第一控制信号和第二控制信号互为反信号。
10、 如权利要求l所述的装置,其特征在于,所述顶层控制模块包 括第一计数器、第二计数器、第三计数器、自相关系数读控制信号产生 器和滤波器系数读写控制信号产生器,其中第一计数器用于指示迭代次数,并根据第一计数器最低位产生控制 信号pp—flag; 第二计数器,用于当第一计数器计到新值时,开始倒计数,初值为上一次迭代的第一计数器值,直至递减为0;第三计数器,用于当第二计数器值为0后,开始累加计数,直到本 次迭代第 一 计数器的2倍值;自相关系数读控制信号产生器,用于根据第一计数器和第二计数器 的计数值,产生访问自相关系数存储器的读使能信号和读地址信号;滤波器系数读写控制信号产生器,用于根据第二计数器和第三计数 器的计数值,产生滤波器系数读写使能信号和读写地址信号。
全文摘要
一种求取线性预测滤波器系数的装置,根据多次迭代完成求取过程,包括自相关系数存储器、反射系数求取模块、误差值求取模块、滤波器系数求取模块、滤波器系数存储器及顶层控制模块;其中自相关系数存储器事先存入已知的自相关系数;反射系数求取模块根据自相关系数、上一次迭代的滤波器系数及上一次迭代的最小误差值进行运算,得到本次迭代的反射系数;误差值求取模块根据上一次迭代的最小误差值和本次迭代反射系数进行运算,得到本次迭代的最小误差值;滤波器系数求取模块根据本次迭代反射系数及上一次迭代的滤波器系数进行运算,得到本次迭代的滤波器系数;顶层控制模块用于产生上述各个模块和存储器的控制信号,对各个模块和存储器进行调度。
文档编号G10L19/14GK101154381SQ20061006299
公开日2008年4月2日 申请日期2006年9月30日 优先权日2006年9月30日
发明者全 孙, 罗木江, 马敬兴 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1