降低复杂度的自适应滤波器 【发明领域】
本发明通常涉及一种自适应滤波器,特别是一种诸如回波消除、降低噪音的应用的自适应滤波器,或者涉及一种在实施中使用相对较大FIR滤波器的任何其它自适应滤波系统。
【发明背景】
FIR(有限脉冲响应)滤波器是自适应滤波器的一个部件。它通常借助DSP(数字信号处理器),使用存储器和一组已存储的系数与预先存储的输入信号历史之间的内标积予以实现。由于主要成本和功率耗散归应于嵌入芯片中的存储器,人们希望在诸如回波消除的多信道应用中降低功率消耗和存储需求。因此存在一种降低使用FIR滤波器的回波消除和其它应用所需的存储器存储量的需求。
现有技术实施通常在FIR滤波器中使用一个用于每个系数的存储单元。图1中显示了一个实例。在该实例中,滤波器系数存储于系数RAM 10中,该系数RAM 10通常由128K字节(2K字节@128ms/信道)组成。有关数据存储于数据RAM 12中,地址计数器14用来供应地址,以顺序地从RAM 10中逐一地读出系数。
计数器地址还分成一个10比特段和一个6比特段。来自模计数器15的偏移被加到10比特地址段,以便在数据RAM 12中实施用于每个信道的循环缓存器。6比特地址段用来选择予以实施的用于每个信道的当前循环缓存器,以及选择用于每个滤波器输出的适当累加器21。
来自单元17的扩展G.711数据在卷积单元20中与系数卷积,以形成累加的滤波器输出。
某些现有技术实施试图通过消除零值系数来减少存储系数的数量,以便减少所需的存储器存储量。不幸的是,利用这些现有技术实施,在某些时候可能需要更多系数来模拟系统,这些系统多于每个特定信道可用资源能够处理的系数。
发明概述
本发明提供了一种实现电信网络地多信道语音回波消除的更有效方式。使存储器应用最佳化,同时不牺牲稀有而又更苛求的信道的性能。
根据本发明,提供了一种用于自适应多信道滤波系统的FIR滤波器,该滤波器包括:存储数据的第一存储器;存储滤波器系数的第二存储器,所述第二存储器仅存储非零值系数,或高于预定振幅阈值的系数,从而显著地减少了整个处理系数的数量。
根据本发明,当FIR滤波器用于多信道网络回波消除单元时,可以使滤波器系数的存储器的存储量大幅度降低,同时又不牺牲模拟更苛求回波路径(在统计上是稀缺的)的能力。
在一个优选实施例中,系数与关联每个系数的对应数据的存储器地址一起予以存储。
本发明的实施例允许可变数量的系数用于每个信道,并且可以不考虑系数顺序来存储系数。分离的累加器寄存器或存储单元,用于每个信道,利用与系数一同存储的对应地址,允许为每个卷积积(系数*数据)选择适当的累加器。
自适应滤波器可以利用商用DSP器件和软件制造,或者构建于ASIC或者FPGA装置的内部。本发明涉及对允许简化的某些应用更有效实施FIR滤波器。本发明尤其适用于语音电话网络的一个具体应用(网络回波消除),尽管本发明也适用于不总是需要所有滤波器系数的类似环境的其它应用。
附图简要说明
下面参照附图,通过实例方式详细说明本发明。
图1显示了使用用于每个系数的一个存储单元的多信道FIR滤波器的现有技术装置;
图2显示了用于具有相应的被标识的有效抽头值典型信道的脉冲响应的实施例;
图3显示了本发明一个实施例的32比特存储单元的内容;
图4是本发明优选实施例的方框图;
优选实施例的详细说明
首先回顾用FIR滤波器处理非零抽头的原理。众所周知,在电信(语音电话)网络中,所需的回波拖尾能力(echo tail capacity)最大约为128ms,尽管可能发现大于此的情况。术语“回波拖尾”是指回波路径的脉冲响应。通常,该回波拖尾包括脉冲的零值样值所代表的大网络延迟,和网络中混合电路造成的一个或多个短回波传递函数。混合回波响应的典型长度通常约为5ms。如果回波消除器提供128ms的回波拖尾能力,那么通常模拟回波的大部分滤波器系数在理想情况下将为零值。某些信道将需要比非零值系数的5ms大得多(的回波响应长度),这些情况在统计上很少出现,但是对适当处理仍然是重要的。当单一DSP或者ASIC器件必须实施成百条语音信道时,用于所有信道的非零值滤波器系数的总数明显小于最大可能数。
图2显示了两个反射器回波路径(是少有的),具有总数为1024系数中的被标识的共150个有效抽头(系数)值。如果实施把用于给定信道的系数值的最大数限制到例如205(20%),那么可能存在没有足够系数来模拟具有较大回波拖尾的信道的情况。
根据本发明的原理,只存储有效系数和与每个有效系数对应的“地址”。地址指向FIR滤波器中定位相应数据值的位置。尽管这需要更多存储器来存储系数和地址,但是与存储包括零值系数的所有系数的情况相比,将更全面提高存储器效率。这不是依赖于标识一些有窗口区域的“有窗口FIR”技术方案;而是标识所有非零系数的技术方案。
图3显示了根据本发明实施例的32比特存储单元的内容。每个存储单元包括系数字段30以及两个地址字段32、34。第一地址字段32是6比特累加器地址,用来标识系数归属的哪个信道。第二地址字段34提供用于特定信道的FIR滤波器内的系数位置的10比特地址。
两个地址字段均提供用于高达64个信道的PCM数据存储器(第二存储器用于先前输入信号历史)中绝对存储地址。所用地址字段的宽度用于优选实施例,并且可以随着实施或者其它应用的任何变化而适当改变。
图4显示了本发明的优选实施例。系数RAM的每个位置由16比特滤波器系数16和16比特地址指针18组成。16比特地址指针18用来定位PCM数据RAM12内的相应数据,该PCM数据RAM12由循环128ms缓存器组成,用于每个信道。地址由6比特信道号和10比特系数位置组成。信道号用来选择使用哪个数据RAM和哪个累加器。
循环缓存器通过模偏移计数器15每帧递增1来维持。这种安排的优点是,各信道可以被分配给所需的大小,而又不附加任何存储器管理复杂度。任何给定信道的系数可以被放置到系数RAM存储器的任何地方,或者在需要时,将其分布到存储器的不同区域中,即每个单个系数独立于别的系数的顺序,并且可以被放置到任何地方。这为信道的分配和再分配提供了不同的回波拖尾能力,并且当利用较多或较少所用系数分配新信道时,无需再安排存储器的复杂度。
滤波器系数16从通过管道寄存器26到达卷积单元20输出到临时寄存器25中。地址指针18从6比特段通过管道寄存器28,选择适当循环缓存器,到达累加器21和到达数据RAM 12,输出到临时寄存器25中。10比特段被传送给加法器27,在此与来自模计数器14的偏移相加。
尽管系数RAM 10明显小于具有全部FIR滤波器的多信道设计应当需要的系数RAM,但是如果回波消散时间只有5ms,则可用系数的数量仍然过分配并且平均为300%以上。利用该方法可能为回波拖尾分配高达128ms的消散。
因此,本发明有效于仅使用具有短消散的回波路径需要的存储器,但是本发明能够处理具有长消散的回波路径。本发明以每个信道为基础动态地降低了不需要回波拖尾能力的计算和存储,同时也考虑了平坦延迟。该实例中具有用于64个信道的总共8192个系数。
每个FIR输出的计算需要在系数RAM 10中对每个系数进行一次乘法运算。将计算终止于小于8192周期(即计算不大于8192周期)是可能的,因为平均只需要每信道处理约40个系数。在此情况下,滤波将终止于最小约2500个周期。这可以如此实现:把系数RAM 10的指针放置到数据RAM 12的最后可用地址上,并提供一个检测发生该放置的电路。对64个信道@128ms进行全FIR滤波所需的时钟周期的数量为65536个周期。该结构所需的时钟周期的数量将在2500至8192之间,或者4%到13%。这表示极大地降低了计算和功率消耗。
强力(全)型FIR滤波器实施的存储器为:1024×36比特=4.5kB/信道(用于128ms/信道)。对于该建议的结构,每信道的存储为:1.5kB/信道。所以该结构的效率约为全FIR结构的3倍。
该结构的附加优点是,系数/地址存储器内不需要排序。该存储器中的条目可以按任何顺序位于任何位置。不再需要处理的禁止(关断)信道可以把它们相应的位置消除。后台处理可以被容易地实施为简化存储器的使用,使无用的“孔”不被累加,以及可以在当前有效的最高地址之后加载新滤波器系数。
本发明另一个附加优点是,如果LMS(最小均方)型系数自适应适合于系数,则已更新系数不必被回写到存储器读出的相同位置中(只要贴上相同地址标签)。这简化了存储器控制器,同时适应管道化设计。
优选实施例中显示了6级管道,包括卷积单元内的两级管道(未示出)。其优点是,可以使用高速时钟。如果例如它被设计处理64个信道,并且每个信道使用回波拖尾的5ms平均值,则所需时钟为:2560周期/125毫秒=20.48Mhz。显然,可以适应更高的时钟速度和更多的信道处理,如优选实施例所示。
系数的自适应算法最好能够脱机运算,并且可以在适当时间(由外部装置确定)与所需的对应地址一起加载到系数RAM中。前台和后台滤波器可以按相同结构来实施。前台滤波器是当前用最熟知的一组系数来消除有效信道回波的滤波器。后台滤波器是不起眼并在后台快速搜索新的或更好系数组的滤波器。