用于自适应非线性滤波的系统和方法 |
|||||||
申请号 | CN200880114456.3 | 申请日 | 2008-09-30 | 公开(公告)号 | CN101889389A | 公开(公告)日 | 2010-11-17 |
申请人 | 奥普蒂科伦公司; | 发明人 | R·G·巴特鲁尼; | ||||
摘要 | 自适应非线性滤波系统包含自适应 滤波器 模 块 ,该自适应滤波器模块配置成生成关于输入 信号 在输入范围内的相对 位置 的相对位置信息;至少部分地基于该相对位置信息来确定依赖输入的滤波器参数;至少部分地基于该依赖输入的滤波器参数来生成 输出信号 ;以及反馈反馈信号,该反馈信号至少部分地基于输出信号和目标信号而被生成。 | ||||||
权利要求 | 1.一种自适应非线性滤波系统,包含: |
||||||
说明书全文 | 背景技术图1A为说明典型系统的信号模型的框图。输入x发送到系统100,该系统对x应用函数F以生成输出y。由于该函数可能随时间变化,因此F也依赖于时间t。在许多系统中,期望系统函数F(x,t)是线性的。图1B为说明输入x、输出y和时间t之间的线性关系的三维(3-D)图。在这种理想情形中,输入和输出具有不随时间t改变的线性关系。因而,函数y=F(x,t)在该3-D图内形成平面。 然而,系统通常是非线性的。系统非线性存在许多可能的原因,这些原因包含非线性部件(诸如导体、电容器和晶体管)的特性、输入信号的频率子范围、历史和变化率(也称为″转换速率″)、以及诸如工作温度的外部因素。图1C为示出典型非线性关系的3-D图。在此示例中,不仅输入x和输出y之间的关系是非线性的,而且这个非线性关系随时间变化,如样本函数F1(x,t1)、F2(x,t2)和F3(x,t3)所说明的。因而,函数y=F(x,t)形成非线性流形(manifold)。可以实现这种类型的非线性函数的滤波器经常是有用的。然而,许多现有的非线性滤波器复杂、昂贵且不稳定。 附图说明 图1A为说明典型系统的信号模型的框图。 图1B为说明输入x、输出y和时间t之间的线性关系的三维(3-D)图。 图1C为说明典型非线性关系的3-D图。 图2为说明非线性自适应滤波器的实施例的框图。 图3为更详细说明图2的存储器组206a-206d的示例实施方式的图示。 图4A为说明简化的自适应非线性滤波器的另一实施例的框图。 图4B为更详细说明图4A的存储器组406a-406d的示例实施方式的图示。 图5为说明用于操作自适应非线性滤波器的过程的实施例的流程图。 图6为说明级联非线性滤波器的实施例的框图。 图7为说明自适应非线性滤波器的另一实施例的框图。 图8和9为说明分别处理偶次和奇次谐波失真的自适应非线性滤波器的实施例的框图。 图10A-10C为说明采用非线性自适应滤波器的多个示例应用的框图。 具体实施方式本发明可以按照多种方式来实现,包含实现为过程;设备;系统;物质组成;在计算机可读存储介质上实施的计算机程序产品;和/或处理器,诸如配置成执行耦合到该处理器的存储器上存储的指令和/或由该存储器提供的指令的处理器。在此说明书中,这些实施方式或者本发明可采取的任何其它形式可称为技术。大体上,所公开的过程的步骤的顺序在本发明的范围内可以改变。除非另外说明,诸如处理器或存储器的被描述为配置成执行任务的部件可以实现为在给定时间被临时配置成执行该任务的通用部件或者被制造成执行该任务的专用部件。如本文所使用,术语′处理器′是指一种或多种配置成处理诸如计算机程序指令的数据的装置、电路和/或处理核心。 在下文中提供对本发明的一个或多个实施例的详细描述以及说明本发明原理的附图。结合这些实施例来描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,且本发明涵盖许多备选、修改和等价方案。许多具体细节在下述描述中给出以提供对本发明的彻底理解。这些细节是出于示例的目的被提供且本发明可以根据权利要求来实践而无需部分或全部这些具体细节。为了清楚起见,在本发明相关技术领域中已知的技术材料未予以详细描述,以便不使得本发明被不必要地模糊。 公开了一种非线性自适应滤波器。在一些实施例中,非线性自适应滤波器包含用于接收输入信号和目标信号的接口。它进一步包含自适应滤波器模块,该自适应滤波器模块被配置成生成关于输入信号在可能输入范围内的相对位置的相对位置信息。温度计代码地址生成器在一些实施例中被用于生成相对位置信息。相对位置信息被用于确定依赖输入的滤波器参数。在一些实施例中,相对位置信息包含温度计编码地址矢量,其被用于从多个存储器组选择依赖输入的滤波器参数。在一些实施例中,依赖输入的滤波器参数包含用于生成输出信号的滤波器系数。至少部分地基于输出信号和目标信号生成反馈信号。所存储的依赖输入的滤波器参数基于反馈信号被修改。 图2为说明非线性自适应滤波器的实施例的框图。在此示例中,非线性自适应滤波器200实现非线性滤波器函数,该函数表示为: 其中Xn=[xn…xn-N+1]。 上述非线性滤波器函数具有系数为的滤波器抽头(filter tap),所述系数依赖于当前输入样本以及先前输入样本。在一些实施例中,每个系数被实现为常数加上该信号的非线性函数。如下文所详细讨论,这些系数是可修改的以获得期望的滤波器响应,诸如为非线性函数的滤波器响应。 方程[1]的替换表达为: 其中 上述方程表明,每个滤波器抽头系数可以表达为子抽头之和(即且每个子抽头进而为xn-j的不同函数。等价地,第k个滤波器抽头的系数可以表达为: 返回到图2,非线性自适应滤波器200包含:第一输入接口202,输入数字信号xn在该接口上被接收;以及第二输入接口204,目标信号ηn在该接口上被接收。如下文更详细所讨论的,滤波器修改其系数使得其输出跟踪(track)目标信号ηn。换言之,滤波器进行修改,直到其输出和目标信号ηn之间的差在预定值之内为止。 滤波器系数和的值均依赖于当前输入样本以及过去输入样本(有时也称为延迟输入样本或者输入信号的历史)。系数值至少部分地基于所选择的预存值之和来被计算。在此示例中,这些值选自多个存储器组内的恰当的存储位置。系统200包含存储器组206a、206b、206c和206d,这些存储器组分别对应于滤波器抽头0、1、2和3。尽管四个存储器组出于示例的目的被示出,但是存储器组的数目依赖于滤波器抽头的数目N且在其它实施例中可变化。存储器组可以使用一个或多个诸如寄存器、缓冲器、DRAM、SRAM等等的任何恰当类型的存储器装置来实施。存储器组代表用于存储滤波器参数的存储器的逻辑组织。在一些实施例中,存储器组使用M个物理存储器装置来实现,其中M不一定对应于N。例如,系统200中示出的所有四个存储器组可以使用诸如单个EEPROM或RAM芯片的单个存储器装置来实现。 根据此示例,每个存储器组存储对该N个滤波器系数有贡献的N组值(N=抽头数)。每组值被实现为包含S个元(entry)的系数矢量。S的值依赖于被实现的非线性函数的粒度(granularity)或精度。例如,如果非线性函数为使得对于所有输入值βmin<xn-j≤β0(其中βmin为最小预期输入值,以及β0为预定值),系数函数映射到(map to)一组矢量值,以及对于所有输入值β0<xn-j<βmax(其中βmax为最大预期输入值),系数函数映射到另一组矢量值,则该系数函数被说成具有粒度2且每组系数矢量包含两个元。在图2所示示例中,可能的输入被划分为四个子范围βmin<xn-j≤β0、β0<xn-j≤β1、β1<xn-j≤β2和β2<xn-j≤βmax,这四个子范围分别映射到四个可能的系数矢量和因而,系数函数具有粒度4且一个存储器组因此存储4个系数矢量和更通常而言,如果所有可能的输入值被划分为S个子范围且每个输入子范围映射到相应的系数矢量(即,粒度S),则存储器组中的每个矢量存储S个元。 温度计代码地址生成器208用于促进从存储器组选择恰当的系数矢量。温度计代码地址生成器指示输入信号在可能的输入信号范围内的相对位置。在一些实施例中,温度计代码地址生成器包含:一个或多个比较器,其将输入与特定预定子范围比较;以及一个或多个复用器,其将比较器的输出映射到恰当的地址矢量。地址矢量指示输入信号在可能的输入范围内的相对位置。在一些实施例中,地址矢量在任何两个相邻元之间具有至多一个符号变化。 温度计代码地址生成器配置成将可能的输入范围划分为S个子子范围(subsubrange)。这些子子范围内的值可以均匀地、以对数方式、指数方式或者任何其它恰当方式分布。一旦接收到输入值xn-j,温度计代码地址生成器应用下述编码函数以生成恰当的输出矢量: 基于温度计编码器输出,从存储器组选择与矢量中第一个正位置对应的那组值。温度计代码地址生成器的输出被延迟块210b、210c和210d延迟。延迟值被用于从相应存储器组选择恰当的所存储的系数矢量。在每个滤波器抽头n-j,从滤波器组选择的值(″子抽头″)被求和以生成相应的系数值在一些替换实施例中,温度计代码地址生成器直接确定应选择存储器组中的哪些系数值。 图3为更详细说明图2的存储器组206a-206d的示例实施方式的图示。该图给出如何计算系数的数值示例。在此示例中,存储器组206a-206d被实现为四个4×4矩阵。在其它实施例中,其它实施方式是可能的。矩阵的四行映射到4个输入子范围,这些输入子范围为[-1,0]、(0,1]、(1,2]和(2,3]。每行为具有4个元的矢量。在此示例中,xn=1.2,其落在子范围(1,2]内,并对应于温度计代码地址生成器输出[-1 -1 +1 +1]。因而,存储器组206a的第三行被选择。类似地,给定xn-1=0.7、xn-2=2.9和xn-3=-0.5,相应的温度计代码地址生成器输出分别为和存储器组206b的第二行存储器组206c的最后一行以及存储器组206d的第一行相应地被选择。 为了生成滤波器抽头的滤波器系数,来自所选择行的相应元被求和。在此示例中,所选择的行的第0个元(即,11.3、0.7、2.0、0.2)为被选择和求和以生成抽头0的系数的值。类似地,6.6、1.4、2.1和0.1为被选择和求和以生成抽头1的系数的值,以此类推。 返回到图2,输入样本与滤波器系数相乘,生成滤波器输出,该滤波器输出表达为: 目标信号ηn在接口204被接收。如何获得目标信号依赖于系统配置且在下面的图10A至10C中更详细描述。在示例系统200中,从目标信号ηn减去输出以获得误差εn。输入信号与该误差以及更新系数μ相乘,结果被反馈以修改滤波器系数。在一些实施例中,μ的初始值被任意选择。在修改过程中,根据诸如最小均方误差(LMSE)的技术,μ被持续调节以修改滤波器系数并减小输出误差。自适应滤波器200的更新函数表达为: 其中 是输入信号的温度计编码值。 实际上这意味着 其中在由索引的地址对存储器组j的列k的更新为误差εn乘以信号xn-k的函数,该列的输出在形成系数时对该信号xn-k有贡献。 针对存储器组206d中存储的系数的反馈回路在图2中详细说明。在所示反馈回路中,输入样本xn、xn-1、xn-2和xn-3均与μεn相乘。结果被延迟和加到存储器组206d中的系数矢量,该系数矢量是基于的当前存储器位置而被当前选择的。参考图3示出的详细实施方式示例,行中的值[0.2 0.1 2.4 0.5]基于更新函数[6]的结果被更新。类似地,其它存储器组中其它选定行中的值也被更新,不过反馈回路被略去以保持图示清楚。在下述讨论中,反馈回路有时从图中略去,即使在实践中包含有该反馈回路且相同的反馈和更新原理是适用的。 与200类似的滤波器系统是实现理论上最佳的伏尔泰拉(Volterra)级数展开以及包含存储器分散(memory dispersion)的Weiner-Hammerstein模型的成本有效的方式。在一些实施例中,具有N个抽头的滤波器被使用,其中每个抽头k具有方程[3]的形式,即,系数函数其中为变量xn-j的任意复杂的非线性函数。利用伏尔泰拉级数展开,可以使用xn-j的m阶多项式以任意精度来表达。类似地,抽头k中的所有xn-j(其中j=0,1,...N-1)也可以任意精度来表达。例如,系数可以写成5阶多项式 其中出于简化的原因,系数的权重假设为1,不过在实践中可以变化。相应地, 表达成方程[8]的第k个系数乘以xn-k,形成具有包含xn-k-j乘以xn-k的交叉项的多项式,j=0,1,...,N-1。因而,该非线性函数为真正的任意高度数(degree)的伏尔泰拉展开且具有存储器。例如,当k=0时,该函数包含xn的所有交叉项,以及对于k=1,该函数包含xn-1的所有交叉项,以此类推。 在一些实施例中,不是将所有系数存储在存储器内,而是使用包含诸如径向基函数(RBF)、三次样条函数或者正弦函数的构造函数(construction function)的滤波器系数函数来提供所述系数。构造函数包含加窗插值函数,其使用加权系数和与函数起源的距离来生成插入值。在构造函数中,离散样本值被求和以生成背景函数和样本点之间的值的平滑逼近。构造函数的一般格式为: 其中ci为RBF的中心以及wi为系数。 RBF的示例为: 其中γ为确定RBF的形状的常数。系数根据下述被修改: Wn+1=Wn+μεnEn 其中且 En=[Exp(-γ||xn-cl||)…Exp(-γ||xn-cL||)] 因而,该滤波器可以使用RBF部件来实现,而不是将方程[7]的多项式实现为真正多项式结构或者将系数存储在查找表中。这种实施方式允许在所需要的存储器数量和乘法数目之间进行折中。例如,让 在一些实施例中,中心的数目L依赖于所期望的精确度和乘法要求来被选择。 注意当信号x位于中心c时,系数w对应于存储器中存储的内容,因为Exp(||xn-ci||)=1。这意味着RBF可以结合所存储的值来使用,以提供x的量化水平之间的插值。由于仅少数相邻位置对在x处的插值结果有贡献,因此,这种情形中RBF所需的处理量小于不使用所存储的值的情形。 在与上述滤波器200相似的N抽头滤波器实施例中,使用需要N次乘法的卷积函数来获得输出。在一些实施例中,通过简化系数的表达式可以减少乘法的数目。图4A为说明简化的自适应非线性滤波器的另一实施例的框图。在简化滤波器400中,每个抽头k对应于信号xn-j的多项式函数,而没有与其它交叉项的相乘。简化的滤波器结构可以表达为: 输出表达为: 换言之,每个滤波器抽头k实现xn-k的相应函数滤波器函数[12]不需要任何乘法且在计算上不昂贵。为了实现该滤波器,基于期望的函数粒度/精度,可能的输入范围被划分为S个子范围。每个输入子范围k映射到相应函数存储器组406a-d在此示例中存储与子范围对应的函数,而不是如图3所示存储与子范围对应的矢量。例如,如果具有4个子范围,则函数和的4个值存储在第k个存储器组内。 在输入接口402上接收的输入xn被发送到温度计代码地址生成器404,该温度计代码地址生成器根据方程[4]生成恰当的输出矢量。该矢量用于定位存储器组406a中映射到该输入的值其中j0依赖于该输入所在的子范围。类似地,温度计编码和延迟输入样本用于分别在存储器组406b、406c和406d中定位函数值和 图4B为更详细说明图4A的存储器组406a-406d的示例实施方式的图示。在所示示例中,存储器组406a-406d被实现为四个4×1矩阵。存储在与该温度计编码输入地址相对应的行中的值被选择和求和。 返回到图4A,所选择的值被求和以生成输出。由于函数值是通过将输入映射到所存储的函数值来获得的,因此不需要乘法来生成该输出。从目标信号ηn减去该输出以获得误差信号εn。误差信号乘以更新系数μ,且结果被反馈以修改滤波器系数。自适应滤波器的更新函数表达为: 图5为说明用于操作自适应非线性滤波器的过程的实施例的流程图。过程500可以在诸如200或400的自适应滤波器系统以及下述其它实施例中实现。在502,接收输入信号和目标信号。在504,确定输入信号在可能的输入范围内的相对位置。例如,在实施例200和400中,由温度计代码地址生成器生成定位矢量。定位矢量指示输入信号的相对位置,其对应于该输入所在的子范围。在506,使用输入的相对位置信息,确定一个或多个依赖输入的滤波器参数。例如,在实施例200中,基于输入的相对位置,使用从存储器组选择的矢量来计算滤波器系数。在实施例400中,基于输入的相对位置,从存储器组选择函数或者其映射值。 在508,使用依赖输入的滤波器参数来生成输出信号。在实施例200中,例如,通过将滤波器系数乘以输入样本并对结果求和,生成输出信号。在实施例400中,通过对从存储器组选择的函数的结果求和,生成输出信号。在510,生成反馈信号并将其反馈到系统。反馈信号至少部分地基于输出信号和目标信号。在实施例200中,使用反馈信号更新存储器组中存储的系数。在实施例400中,使用反馈信号更新存储器组中存储的函数或函数值。 在一些实施例中,多个自适应非线性滤波器被级联以形成滤波器函数,所述滤波器函数为非线性函数的非线性函数。图6为说明级联非线性滤波器的实施例的框图。自适应非线性滤波器600包含第一自适应非线性滤波器602,其输出被发送到第二自适应非线性滤波器604的输入。在其它实施例中,可具有多于两个级联的自适应非线性滤波器。 使滤波器602表达为: 其中Xn=[xn…xn-N+1] 滤波器604表达为: 其中Yn=[yn…yn-N+1] 因而, 方程[16]中的xn-j对应于具有长度N的矢量。得到的级联滤波器函数wn为[xn…xn-2N+1]的非线性函数,其长度为2N-1。长度为2N-1的级联滤波器需要的存储器少于长度为2N的单个未级联滤波器。假设输入范围被划分为S个子范围,则诸如600的级联滤波器需要2N×S个系数。相反,长度为2N的单个未级联滤波器将需要2N×2N×S个系数元。因而,包含两个长度为N的滤波器的级联滤波器需要的存储器量是长度为2N的未级联滤波器所需的存储器量的1/2。更一般而言,包含L个滤波器抽头的级联滤波器需要的存储器为长度近似相等的未级联滤波器的1/L。 滤波器602和604的反馈回路类似于图2所示反馈回路。仅存储器组606d和608d的反馈回路在图示中说明,而其它存储器组的反馈回路未示出。级联滤波器根据下述来修改: 在一些实施例中,自适应非线性滤波器配置成处理复杂信号。图7为说明自适应非线性滤波器的另一实施例的框图。在此示例中,自适应非线性滤波器700包含正交分离器702,其将信号分离成同相(I)和正交相(Q)分量。自适应非线性滤波器700进一步包含并行配置的两个自适应滤波器模块用于处理I和Q分量。I和Q分量被发送到它们各自的温度计代码地址生成器。使用信号xIn-j的编码输出作为从存储器组706a-d选择矢量的存储器地址。类似地,使用信号xQn-j的编码输出从存储器组708a-d选择矢量来自I和Q分支的输出和由正交合成器704组合。 滤波器700表达为: 以及 分别从目标信号的I和Q分量ηIn和ηQn减去和以生成误差信号εIn和εQn。反馈该误差以更新所存储的系数。反馈回路与图2的反馈电路相似且在该图中未示出。 需要2N个乘法以生成输出项yIn,且与存储用于I分量的系数的存储器组相关联的更新需要另外2N个乘法。类似地,生成输出项yQn以及更新存储用于Q分量的系数的存储器组,也需要总共4N个乘法。 在一些实施例中,自适应非线性滤波器配置成处理目标信号中的偶次或奇次谐波失真。谐波失真是偶次还是奇次依赖于该失真相对于期望信号的频率位置,即该失真发生在期望频率的偶数倍还是奇数倍处。图8和9为说明分别处理偶次和奇次谐波失真的自适应非线性滤波器的实施例的框图。在所示示例中,滤波器800和900均包含耦合到它们各自输入端子的绝对值运算符(分别为802和902)。温度计代码地址生成器根据下述来生成输出: 滤波器800和900进一步分别包含符号运算符804和904。符号运算符提取输入的符号,输出-1或1。在这两个滤波器实施例中,输入的符号都乘以温度计代码地址,且乘法结果被用作从相应存储器组选择恰当系数矢量的地址。包含延迟元件和附加存储器组以提供用于附加滤波器抽头的系数。在偶次谐波滤波器800中,对从存储器组选择的值求和以生成恰当的滤波器系数。在奇次谐波滤波器900中,将所选择的值乘以它们相应的符号值,之后对它们求和以生成滤波器系数。这种类型的N抽头滤波器的一般表达式为: 其中对于诸如800的偶次谐波滤波器,sjn=1,以及对于诸如900的奇次谐波滤波器,sjn=Sign(xn-j)。800的收敛?输出信号具有与目标信号的偶次谐波近似相等的偶次谐波,不过其奇次谐波不一定接近目标的奇次谐波。900的结果输出信号具有与目标信号的奇次谐波近似相同的奇次谐波,不过其偶次谐波不一定与目标信号的偶次谐波相同。 滤波器系数根据下述来更新: 其中 并且。为逐个元素相乘的运算符。 在一些实施例中,偶次谐波滤波器和奇次谐波滤波器被组合以形成处理偶次和奇次谐波二者的复合滤波器。诸如绝对值运算符、温度计代码地址生成器和符号运算符的部件可以被奇次和偶次滤波器分支共享。 非线性自适应滤波器在许多应用中使用。图10A至10C为说明采用非线性自适应滤波器的几个示例应用的框图。许多其它系统和配置是可能的。在示例系统1000、1030和1060中,自适应滤波器模块1002、1032和1062可以使用任何上述自适应滤波器模块实施例来实现。模块1002、1032和1062耦合到非线性系统1004、1034和1064。非线性系统可以是任意类型的、其输出信号y为输入信号x的非线性函数的非线性系统,例如,诸如具有信道失真的通信信道的非线性信道,诸如处理和/或传播输入信号的电学和/或光学装置(比如放大器、收发器)的非线性部件,或者它们的组合。在一些实施例中,一个或多个模数转换器和/或数模转换器被包含,该非线性系统用以确保数字和模拟部件之间的兼容性。示例系统中的自适应滤波器模块以及它们相应的反馈回路依赖于所执行的功能而被不同地配置。 在图10A的示例系统1000中,自适应滤波器模块1002执行建模功能以对非线性系统1004的函数建模。在此示例中,系统1004的输入x也被发送到1002作为自适应滤波器的输入,系统1004的输出y被发送到滤波器1002作为目标信号。自适应滤波器模块1002修改其滤波器系数以驱动其输出接近y,形成这样的滤波器,该滤波器的滤波器函数近似于系统1004的非线性函数。换言之,基于反馈误差信号ε(其为非线性系统1004的输出y和自适应滤波器模块1002的输出之间的差),自适应滤波器模块1002持续修改其系数,直至该误差小于或等于预定值ε0为止。 在图10B的示例系统1030中,自适应滤波器模块1032执行失真后校正功能以补偿由非线性系统1034先前引入的失真。自适应滤波器模块1032的输入信号为系统1034的输出y。自适应滤波器模块1032的目标信号为系统1034的输入x。自适应滤波器模块1032修改其系数,驱动其输出接近目标信号x。因而,自适应滤波器模块的滤波器函数近似为非线性系统1034的逆函数,且由非线性系统1034引入的失真被校正。 在图10C的示例系统1060中,自适应滤波器模块1062执行预失真校正功能以补偿由非线性系统1064随后引入的失真。自适应滤波器模块1062的输入信号与整个系统的输入x相同。自适应滤波器模块的输出为非线性系统1064的输入。自适应滤波器模块的目标信号为非线性系统1064的输出。自适应滤波器模块1062修改其系数以驱动非线性系统1064的输出接近输入信号x。由于自适应滤波器模块的滤波器函数近似为非线性系统1064的滤波器函数的逆,输出信号y在被发送到非线性系统1064之前被预补偿,且由非线性系统引入的失真被校正。 已经描述了自适应非线性滤波。该技术允许非线性滤波器函数使用诸如存储器组和/或数学运算符的相对简单的元件来实现,且具有相对不昂贵的计算要求。 尽管前述实施例已经出于清楚理解的目的而在一些细节上被描述,但是本发明不限于所提供的细节。存在许多替换方式来实现本发明。所公开的实施例是说明性的而非限制性的。 其它专利申请的交叉引用 本申请主张于2007年10月4日提交的名称为″CANONICALNONLINEAR FILTER″的美国临时专利申请No.60/998,057的优先权,其仅仅是出于引用的目的而结合于此。 |