CN111881081A - 基于序列机的fxlms算法的fpga实现模块及方法 - Google Patents
基于序列机的fxlms算法的fpga实现模块及方法 Download PDFInfo
- Publication number
- CN111881081A CN111881081A CN202010773146.5A CN202010773146A CN111881081A CN 111881081 A CN111881081 A CN 111881081A CN 202010773146 A CN202010773146 A CN 202010773146A CN 111881081 A CN111881081 A CN 111881081A
- Authority
- CN
- China
- Prior art keywords
- multiplier
- address
- weight
- sequentially
- sequencer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 12
- 238000001914 filtration Methods 0.000 claims abstract description 49
- 230000003044 adaptive effect Effects 0.000 claims description 38
- 101100328887 Caenorhabditis elegans col-34 gene Proteins 0.000 claims description 16
- 239000013598 vector Substances 0.000 claims description 15
- 102100031584 Cell division cycle-associated 7-like protein Human genes 0.000 claims description 10
- 101000777638 Homo sapiens Cell division cycle-associated 7-like protein Proteins 0.000 claims description 10
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 claims description 6
- 101150046378 RAM1 gene Proteins 0.000 claims description 6
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7817—Specially adapted for signal processing, e.g. Harvard architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Signal Processing (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
- Filters That Use Time-Delay Elements (AREA)
Abstract
本发明公开了一种基于序列机的FXLMS算法的FPGA实现模块及方法,该模块由基于D_RAM的输入信号延时模块、基于序列机的全并行运算模块组成;基于D_RAM的输入信号延时模块用于实现对输入信号x(n)的延时,基于序列机的全并行运算模块用于实现对所述输入信号延时模块发送的M个的数据的定系数滤波、自适应滤波及更新自适应滤波器权值。本发明以较低的的硬件消耗实现了FXLMS算法运算,节省了大量硬件资源,并基于严谨的线性序列机全并行的执行各运算步骤,提高了FPGA处理速度。
Description
技术领域
本发明属于信号处理技术领域,具体的说是一种基于序列机的FXLMS算法的FPGA实现模块及方法。
背景技术
20世纪80年代开始,在车内主动噪声控制方面涌现出了大量的研究成果和文献,其中大部分的主动噪声控制系统所采用的算法主要是FXLMS算法,而大部分的硬件平台都是基于DSP芯片进行设计的,DSP的优势在于数字信号处理和实现算法的能力较强,但FPGA相比于DSP的优势在于时序控制能力强,处理速度快,数据是并行进行处理的,所以处理速度比DSP快。由于FPGA的高度可编程性,可以快速反复地编程、修改、调试,可以对平台进行充分的设计开发与验证,以FPGA为模型而量产的ASIC专用芯片也非常适合降噪平台的推广普及,对车内主动降噪技术的市场化提供了思路。近年来逐渐有更多的学者研究该算法的FPGA实现,但其逻辑资源占用率、硬件乘法器占用率都较高,不利于该项技术的市场化推广。
现有的技术中,虽然有极少的方案为基于FPGA的优化资源配置的FXLMS算法的硬件实现,但没有方案是(1)对滤波器的时延进行资源优化配置(2)基于严谨的线性序列机实现该算法,以达到较高的运算速度。
发明内容
本发明为了克服现有技术存在的不足之处,提供一种基于序列机的FXLMS算法的FPGA实现模块,以期能进一步降低硬件资源消耗,并能实现较高的FPGA处理速度。
本发明为解决技术问题采用如下技术方案:
本发明一种基于序列机的FXLMS算法的FPGA实现模块的特点包括:基于D_RAM的输入信号延时模块、基于序列机的全并行运算模块;
所述基于D_RAM的输入信号延时模块接收外部的第n时刻输入信号x(n)并通过写指针写入第i个地址中,且0≤i≤M-1;读指针从第i个地址开始,依次按照第i-1个地址,第i-2个地址,……,第i+2个地址,第i+1个地址的顺序读出相应地址存储的数据并传递给所述基于序列机的全并行运算模块,从而实现对M列一维向量x(n)=[x(n),x(n-1),…,x(n-M+1)]的一次延时;
所述基于序列机的全并行运算模块依次接收所述输入信号延时模块发送的M个的数据,并依次对M个的数据进行定系数滤波处理,得到1行N列定系数滤波信号Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)];其中,Fx(n)表示第n时刻x(n)经定系数滤波得到的数据;再对定系数滤波信号Fx(n)进行自适应滤波处理,得到自适应滤波信号y(n);最后更新自适应滤波器权值w(n)=[wn(0),wn(1),…,wn(N-1)],其中,wn(N-1)表示自适应滤波器第n时刻的第N个权值;
本发明所述的FPGA实现模块的特点也在于,所述基于序列机的全并行运算模块包括3个D_RAM,4个乘法器和3个加法器:
第二D_RAM2以读地址Raddr2递增的方式将所存储的定系数滤波器的权值h(0)、h(1)···h(M-1)依次读出给第一乘法器Mult1;其中,h(M-1)表示定系数滤波器的第M个权值;
第一乘法器Mult1依次接收所述输入信号延时模块发送的M个的数据及定系数滤波器的权值h(0)、h(1)···h(M-1),并依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-M+1)*h(M-1);
第一加法器依次将所述第一乘法器的乘积结果累加后得到定系数滤波信号Fx(n);
第三D_RAM3将Fx(n)写入第j个地址中,且0≤j≤N-1,读指针从第j个地址开始,依次按照第j-1个地址,第j-2个地址,……,第j+2个地址,第j+1个地址的顺序读出相应地址存储的数据并传递给给第二乘法器Mult2,从而实现对一维向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)]的一次延时;
第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的N个权系数wn(0),wn(1),…,wn(N-1)依次读出给第二乘法器Mult2;
所述第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-N+1)*wn(N-1);
第二加法器逐次将所述第二乘法器Mult2的乘积结果累加后得到自适应滤波信号y(n);
第三乘法器Mult3计算FXLMS算法迭代步长u和输入误差信号e(n)的乘积u*e(n);
第四乘法器Mult4依次接收所述第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-N+1),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-N+1);
第三加法器将第四乘法器Mult4的乘积结果依次与N个自适应滤波器权值wn(0),wn(1),…,wn(N-1)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(N-1)],完成权值更新;其中,wn+1(N-1)表示自适应滤波器第n+1时刻的第N个权值;
第四D_RAM4将所述第三加法器的求得更新的权值以写地址递Waddr4递增的方式存入,从而完成一次循环运算。
本发明一种基于序列机的FXLMS算法FPGA实现方法的特点是应用于4个D_RAM,4个乘法器和3个加法器所组成的FPGA中,并按如下步骤进行的:
步骤1、第一D_RAM1写入第n时刻输入数据x(n)后,以读地址Raddr1递减的方式将M个输入数据x(n),x(n-1),…,x(n-M+1)依次读出,从而实现向量x(n)=[x(n),x(n-1),…,x(n-M+1)]的延时;
步骤2、第二D_RAM2以读地址Raddr2递增的方式将定系数滤波器的M个权值h(0)、h(1)···h(M-1)依次读出;其中,h(M-1)表示定系数滤波器的第M个权值;
步骤3、第一乘法器Mult1依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-M+1)*h(M-1);
步骤4、第一加法器逐次将所述第一乘法器的乘积累加后得到定系数滤波信号Fx(n);
步骤5、第三D_RAM3写入Fx(n)后,以读地址Raddr3递减的方式将N个数据Fx(n),Fx(n-1),…,Fx(n-N+1)依次读出,从而实现向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)]的延时;
步骤6、第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的N个权系数wn(0),wn(1),…,wn(N-1)依次读出;其中,wn(N-1)表示自适应滤波器第n时刻的第N个权值;
步骤7、第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-N+1)*wn(N-1);
步骤8、第二加法器逐次将所述第二乘法器Mult2的乘积累加后得到自适应滤波信号y(n);
步骤9、第三乘法器Mult3计算FXLMS算法迭代步长u和输入误差信号e(n)的乘积u*e(n);
步骤10、第四乘法器Mult4依次接收所述第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-N+1),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-N+1);
步骤11、第三加法器将第四乘法器Mult4的乘积结果依次与N个自适应滤波器权值wn(0),wn(1),…,wn(N-1)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(N-1)],完成权值更新;其中,wn+1(N-1)表示自适应滤波器第n+1时刻的第N个权值;
步骤12、第四D_RAM4将所述第三加法器的求得更新的权值以写地址递Waddr4递增的方式存入,从而完成一次循环运算。
与已有技术相比,本发明有益效果体现在:
1、本发明提出一种基于序列机的FXLMS算法FPGA实现模块及其FPGA实现方法,相较传统的实现方法,以较低的硬件消耗实现了FXLMS算法运算,节省了硬件资源,并且实现方式简单,适用于各种信号处理系统,如主动噪声控制系统;
2、本发明基于严谨的线性序列机实现,全并行的执行各运算步骤,从而提高了FPGA处理速度。
附图说明
图1为本发明基于D_RAM的输入信号延时实现原理图;
图2为本发明基于序列机的全并行运算模块图;
图3为本发明全并行运算模块中部分信号时序图。
具体实施方式
本实施例中,一种基于序列机的FXLMS算法的FPGA实现模块包括:基于D_RAM的输入信号延时模块、基于序列机的全并行运算模块;
基于D_RAM的输入信号延时模块,如图1所示,接收外部的第n时刻输入信号x(n)并通过写指针写入第i个地址中,且0≤i≤M-1;读指针从第i个地址开始,依次按照第i-1个地址,第i-2个地址,……,第i+2个地址,第i+1个地址的顺序读出相应地址存储的数据并传递给基于序列机的全并行运算模块,从而实现对M列一维向量x(n)=[x(n),x(n-1),…,x(n-M+1)]的一次延时;
具体实施中,设定定系数滤波器阶数为31,则M=32,D_RAM有0~31共32个地址。以i=7为例,该模块接收外部输入信号x(n)并通过写指针写入第7个地址中,读指针从第7个地址开始,依次按照第6个地址,第5个地址,……,第9个地址,第8个地址的顺序读出相应地址存储的数据并传递给所基于序列机的全并行运算模块,从而实现对M列一维向量x(n)=[x(n),x(n-1),…,x(n-31)]的一次延时;
基于序列机的全并行运算模块,如图2所示,依次接收输入信号延时模块发送的M个的数据,并依次对M个的数据进行定系数滤波处理,得到1行N列定系数滤波信号Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)];其中,Fx(n)表示第n时刻x(n)经定系数滤波得到的数据;再对定系数滤波信号Fx(n)进行自适应滤波处理,得到自适应滤波信号y(n);最后更新自适应滤波器权值w(n)=[wn(0),wn(1),…,wn(N-1)];其中,wn(N-1)表示自适应滤波器第n时刻的第N个权值;。
具体实施中,设定自适应滤波器阶数为15,则N=16。该模块依次接收输入信号延时模块发送的32个的数据,并依次对32个的数据进行定系数滤波处理,得到1行16列定系数滤波信号Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-15)];再对定系数滤波信号Fx(n)进行自适应滤波处理,得到自适应滤波信号y(n);最后更新自适应滤波器权值w(n)=[wn(0),wn(1),…,wn(15)]。
本实施例中,基于序列机的全并行运算模块包括3个D_RAM,4个乘法器和3个加法器:
第二D_RAM2以读地址Raddr2递增的方式将所存储的定系数滤波器的权值h(0)、h(1)···h(M-1)依次读出给第一乘法器Mult1;其中,h(M-1)表示定系数滤波器的第M个权值;
具体实施中,第二D_RAM2以读地址Raddr2递增的方式将所存储的定系数滤波器的权值h(0)、h(1)···h(31)依次读出给第一乘法器Mult1;
第一乘法器Mult1依次接收输入信号延时模块发送的M个的数据及定系数滤波器的权值h(0)、h(1)···h(M-1),并依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-M+1)*h(M-1);
具体实施中,第一乘法器Mult1依次接收输入信号延时模块发送的32个的数据及定系数滤波器的权值h(0)、h(1)···h(31),并依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-31)*h(31);
第一加法器依次将第一乘法器的乘积结果累加后得到定系数滤波信号Fx(n);
第三D_RAM3将Fx(n)写入第j个地址中,且0≤j≤N-1,读指针从第j个地址开始,依次按照第j-1个地址,第j-2个地址,……,第j+2个地址,第j+1个地址的顺序读出相应地址存储的数据并传递给给第二乘法器Mult2,从而实现对一维向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)]的一次延时;
具体实施中,以j=4为例,第三D_RAM3将Fx(n)写入第4个地址中,读指针从第4个地址开始,依次按照第3个地址,第2个地址,……,第6个地址,第5个地址的顺序读出相应地址存储的数据并传递给给第二乘法器Mult2,从而实现对一维向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-15)]的一次延时;
第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的N个权系数wn(0),wn(1),…,wn(N-1)依次读出给第二乘法器Mult2;
具体实施中,第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的16个权系数wn(0),wn(1),…,wn(15)依次读出给第二乘法器Mult2;
第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-N+1)*wn(N-1);
具体实施中,第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-15)*wn(15);
第二加法器逐次将第二乘法器Mult2的乘积结果累加后得到自适应滤波信号y(n);
第三乘法器Mult3计算FXLMS算法迭代步长u和输入误差信号e(n)的乘积u*e(n);
第四乘法器Mult4依次接收第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-N+1),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-N+1);
具体实施中,第四乘法器Mult4依次接收第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-15),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-15);
第三加法器将第四乘法器Mult4的乘积结果依次与N个自适应滤波器权值wn(0),wn(1),…,wn(N-1)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(N-1)],完成权值更新;
具体实施中,第三加法器将第四乘法器Mult4的乘积结果依次与16个自适应滤波器权值wn(0),wn(1),…,wn(15)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(15)],完成权值更新;
第四D_RAM4将第三加法器的求得更新的权值以写地址递Waddr4递增的方式存入,完成一次循环运算。
本实施例中,一种基于序列机的FXLMS算法FPGA实现方法是应用于4个D_RAM,4个乘法器和3个加法器所组成的FPGA中,并按如下步骤进行的:
步骤1、第一D_RAM1写入第n时刻输入数据x(n)后,以读地址Raddr1递减的方式将M个输入数据x(n),x(n-1),…,x(n-M+1)依次读出,从而实现向量x(n)=[x(n),x(n-1),…,x(n-M+1)]的延时;
具体实施中,第一D_RAM1写入第n时刻输入数据x(n)后,以读地址Raddr1递减的方式将32个输入数据x(n),x(n-1),…,x(n-31)依次读出,从而实现向x(n)=[x(n),x(n-1),…,x(n-31)]的延时;
步骤2、第二D_RAM2以读地址Raddr2递增的方式将定系数滤波器的M个权值h(0)、h(1)···h(M-1)依次读出;
具体实施中,第二D_RAM2以读地址Raddr2递增的方式将定系数滤波器的32个权值h(0)、h(1)···h(31)依次读出;
步骤3、第一乘法器Mult1依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-M+1)*h(M-1);
具体实施中,第一乘法器Mult1依次计算x(n)*h(0)、x(n-1)*h(1)、···、x(n-31)*h(31);
步骤4、第一加法器逐次将第一乘法器的乘积累加后得到定系数滤波信号Fx(n);
具体实施中,步骤1、2读出数据的过程为严格同步执行的,比如在第一D_RAM1读出x(n-k)的同时,第二D_RAM2也会读出h(k),然后将x(n-k)、h(k)同时传递给第一乘法器Mult1;步骤3比步骤1、2滞后一拍,比如在第一D_RAM1读出x(n-k)、第二D_RAM2读出h(k)的同时,第一乘法器Mult1在计算x(n-k+1)*h(k-1);步骤4比步骤3滞后一拍,比如第一乘法器Mult1在计算x(n-k+1)*h(k-1)的同时,第一加法器在计算x(n)*h(0)+x(n-1)*h(1)+…+x(n-k+2)*h(k-2)。
步骤5、第三D_RAM3写入Fx(n)后,以读地址Raddr3递减的方式将N个数据Fx(n),Fx(n-1),…,Fx(n-N+1)依次读出,从而实现向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)]的延时;
具体实施中,第三D_RAM3写入Fx(n)后,以读地址Raddr3递减的方式将16个数据Fx(n),Fx(n-1),…,Fx(n-15)依次读出,从而实现向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-15)]的延时;
步骤6、第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的N个权系数wn(0),wn(1),…,wn(N-1)依次读出;
具体实施中,第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的16个权系数wn(0),wn(1),…,wn(15)依次读出;
步骤7、第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-N+1)*wn(N-1);
具体实施中,第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-15)*wn(15);
步骤8、第二加法器逐次将第二乘法器Mult2的乘积累加后得到自适应滤波信号y(n);
具体实施中,步骤5、6读出数据的过程为严格同步执行的,比如在第三D_RAM3读出Fx(n-p)的同时,第四D_RAM4也会读出wn(p),然后将Fx(n-p)、wn(p)同时传递给第二乘法器Mult2;步骤7比步骤5、6滞后一拍,比如在第三D_RAM3读出Fx(n-p)、第四D_RAM4读出wn(p)的同时,第二乘法器Mult2在计算Fx(n-p+1)*wn(p-1);步骤8比步骤7滞后一拍,比如第二乘法器Mult2在计算Fx(n-p+1)*wn(p-1)的同时,第二加法器在计算Fx(n)*wn(0)+Fx(n-1)*wn(1)+…+Fx(n-p+2)*wn(p-2)。
步骤9、第三乘法器Mult3计算FXLMS算法迭代步长u和输入误差信号e(n)的乘积u*e(n);
步骤10、第四乘法器Mult4依次接收第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-N+1),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-N+1);
具体实施中,第四乘法器Mult4依次接收第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-15),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-15);
步骤11、第三加法器将第四乘法器Mult4的乘积结果依次与N个自适应滤波器权值wn(0),wn(1),…,wn(N-1)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(N-1)],完成权值更新;
具体实施中,第三加法器将第四乘法器Mult4的乘积结果依次与16个自适应滤波器权值wn(0),wn(1),…,wn(15)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(15)],完成权值更新;
步骤12、第四D_RAM4将第三加法器的求得更新的权值以写地址递Waddr4递增的方式存入,完成一次循环运算。
具体实施中,如图3所示,步骤9与步骤5写入数据的过程严格同步执行,即第三乘法器Mult3计算u*e(n)的同时,第三D_RAM3写入Fx(n);步骤10比步骤5滞后一拍,比如在第三D_RAM3读出Fx(n-q)的同时,第四乘法器Mult4在计算u*e(n)*Fx(n-q+1);步骤11比步骤10滞后一拍,比如第四乘法器Mult4在计算u*e(n)*Fx(n-q+1)的同时,第三加法器在计算wn+1(q-2)=wn(q-2)+u*e(n)*Fx(n-q+2);步骤12比步骤11滞后一拍,比如第三加法器在更新wn+1(q-2)的同时,第四D_RAM4将wn+1(q-3)写入对应地址,完成一次循环运算;此外,完成定系数滤波的步骤1~4与完成自适应滤波及权系数更新的步骤5~12这两大部分也是并行执行的,比如在执行步骤1~4得到定系数滤波信号Fx(n)过程中,同时也在执行步骤5~12得到自适应滤波信号y(n-1)及自适应滤波器权系数w(n)。
Claims (3)
1.一种基于序列机的FXLMS算法的FPGA实现模块,其特征包括:基于D_RAM的输入信号延时模块、基于序列机的全并行运算模块;
所述基于D_RAM的输入信号延时模块接收外部的第n时刻输入信号x(n)并通过写指针写入第i个地址中,且0≤i≤M-1;读指针从第i个地址开始,依次按照第i-1个地址,第i-2个地址,……,第i+2个地址,第i+1个地址的顺序读出相应地址存储的数据并传递给所述基于序列机的全并行运算模块,从而实现对M列一维向量x(n)=[x(n),x(n-1),…,x(n-M+1)]的一次延时;
所述基于序列机的全并行运算模块依次接收所述输入信号延时模块发送的M个的数据,并依次对M个的数据进行定系数滤波处理,得到1行N列定系数滤波信号Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)];其中,Fx(n)表示第n时刻x(n)经定系数滤波得到的数据;再对定系数滤波信号Fx(n)进行自适应滤波处理,得到自适应滤波信号y(n);最后更新自适应滤波器权值w(n)=[wn(0),wn(1),…,wn(N-1)],其中,wn(N-1)表示自适应滤波器第n时刻的第N个权值。
2.根据权利要求1所述的FPGA实现模块,其特征是,所述基于序列机的全并行运算模块包括3个D_RAM,4个乘法器和3个加法器:
第二D_RAM2以读地址Raddr2递增的方式将所存储的定系数滤波器的权值h(0)、h(1)···h(M-1)依次读出给第一乘法器Mult1;其中,h(M-1)表示定系数滤波器的第M个权值;
第一乘法器Mult1依次接收所述输入信号延时模块发送的M个的数据及定系数滤波器的权值h(0)、h(1)···h(M-1),并依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-M+1)*h(M-1);
第一加法器依次将所述第一乘法器的乘积结果累加后得到定系数滤波信号Fx(n);
第三D_RAM3将Fx(n)写入第j个地址中,且0≤j≤N-1,读指针从第j个地址开始,依次按照第j-1个地址,第j-2个地址,……,第j+2个地址,第j+1个地址的顺序读出相应地址存储的数据并传递给给第二乘法器Mult2,从而实现对一维向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)]的一次延时;
第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的N个权系数wn(0),wn(1),…,wn(N-1)依次读出给第二乘法器Mult2;
所述第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-N+1)*wn(N-1);
第二加法器逐次将所述第二乘法器Mult2的乘积结果累加后得到自适应滤波信号y(n);
第三乘法器Mult3计算FXLMS算法迭代步长u和输入误差信号e(n)的乘积u*e(n);
第四乘法器Mult4依次接收所述第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-N+1),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-N+1);
第三加法器将第四乘法器Mult4的乘积结果依次与N个自适应滤波器权值wn(0),wn(1),…,wn(N-1)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(N-1)],完成权值更新;其中,wn+1(N-1)表示自适应滤波器第n+1时刻的第N个权值;
第四D_RAM4将所述第三加法器的求得更新的权值以写地址递Waddr4递增的方式存入,从而完成一次循环运算。
3.一种基于序列机的FXLMS算法FPGA实现方法,其特征是应用于4个D_RAM,4个乘法器和3个加法器所组成的FPGA中,并按如下步骤进行的:
步骤1、第一D_RAM1写入第n时刻输入数据x(n)后,以读地址Raddr1递减的方式将M个输入数据x(n),x(n-1),…,x(n-M+1)依次读出,从而实现向量x(n)=[x(n),x(n-1),…,x(n-M+1)]的延时;
步骤2、第二D_RAM2以读地址Raddr2递增的方式将定系数滤波器的M个权值h(0)、h(1)···h(M-1)依次读出;其中,h(M-1)表示定系数滤波器的第M个权值;
步骤3、第一乘法器Mult1依次计算x(n)*h(0)、x(n-1)*h(1)···x(n-M+1)*h(M-1);
步骤4、第一加法器逐次将所述第一乘法器的乘积累加后得到定系数滤波信号Fx(n);
步骤5、第三D_RAM3写入Fx(n)后,以读地址Raddr3递减的方式将N个数据Fx(n),Fx(n-1),…,Fx(n-N+1)依次读出,从而实现向量Fx(n)=[Fx(n),Fx(n-1),…,Fx(n-N+1)]的延时;
步骤6、第四D_RAM4以读地址Raddr4递增的方式将自适应滤波器的N个权系数wn(0),wn(1),…,wn(N-1)依次读出;其中,wn(N-1)表示自适应滤波器第n时刻的第N个权值;
步骤7、第二乘法器Mult2依次计算Fx(n)*wn(0)、Fx(n-1)*wn(1)、···、Fx(n-N+1)*wn(N-1);
步骤8、第二加法器逐次将所述第二乘法器Mult2的乘积累加后得到自适应滤波信号y(n);
步骤9、第三乘法器Mult3计算FXLMS算法迭代步长u和输入误差信号e(n)的乘积u*e(n);
步骤10、第四乘法器Mult4依次接收所述第三乘法器的乘积和滤波信号Fx(n)、Fx(n-1)、…、Fx(n-N+1),并依次计算u*e(n)*Fx(n)、u*e(n)*Fx(n-1)、…、u*e(n)*Fx(n-N+1);
步骤11、第三加法器将第四乘法器Mult4的乘积结果依次与N个自适应滤波器权值wn(0),wn(1),…,wn(N-1)相加,得到w(n+1)=[wn+1(0),wn+1(1),…,wn+1(N-1)],完成权值更新;其中,wn+1(N-1)表示自适应滤波器第n+1时刻的第N个权值;
步骤12、第四D_RAM4将所述第三加法器的求得更新的权值以写地址递Waddr4递增的方式存入,从而完成一次循环运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010773146.5A CN111881081B (zh) | 2020-08-04 | 2020-08-04 | 基于序列机的fxlms算法的fpga实现模块及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010773146.5A CN111881081B (zh) | 2020-08-04 | 2020-08-04 | 基于序列机的fxlms算法的fpga实现模块及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111881081A true CN111881081A (zh) | 2020-11-03 |
CN111881081B CN111881081B (zh) | 2023-11-03 |
Family
ID=73211755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010773146.5A Active CN111881081B (zh) | 2020-08-04 | 2020-08-04 | 基于序列机的fxlms算法的fpga实现模块及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111881081B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170097810A1 (en) * | 2015-10-05 | 2017-04-06 | Altera Corporation | Methods and apparatus for sequencing multiply-accumulate operations |
CN109613821A (zh) * | 2018-11-23 | 2019-04-12 | 重庆邮电大学 | 一种基于ANC系统中FxLMS改进算法的FPGA硬件结构 |
CN110058201A (zh) * | 2019-04-22 | 2019-07-26 | 西安电子工程研究所 | 一种基于fpga资源复用实现多波形多速率时域脉压的方法 |
WO2020045730A1 (ko) * | 2018-08-29 | 2020-03-05 | 한국과학기술원 | 적응 제어 알고리즘을 위한 중앙처리장치-병렬처리장치 구조 기반의 데이터 처리 장치 및 그 방법 |
-
2020
- 2020-08-04 CN CN202010773146.5A patent/CN111881081B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170097810A1 (en) * | 2015-10-05 | 2017-04-06 | Altera Corporation | Methods and apparatus for sequencing multiply-accumulate operations |
WO2020045730A1 (ko) * | 2018-08-29 | 2020-03-05 | 한국과학기술원 | 적응 제어 알고리즘을 위한 중앙처리장치-병렬처리장치 구조 기반의 데이터 처리 장치 및 그 방법 |
CN109613821A (zh) * | 2018-11-23 | 2019-04-12 | 重庆邮电大学 | 一种基于ANC系统中FxLMS改进算法的FPGA硬件结构 |
CN110058201A (zh) * | 2019-04-22 | 2019-07-26 | 西安电子工程研究所 | 一种基于fpga资源复用实现多波形多速率时域脉压的方法 |
Non-Patent Citations (2)
Title |
---|
杨跃忠;阙沛文;李亮;: "自适应LMS滤波器在FPGA中的实现", 微计算机信息, no. 11 * |
赵栋;侯峰;李凯翔;庞彦斌;: "FXLMS主动降噪算法在定点DSP上的优化实现", 测控技术, no. 03 * |
Also Published As
Publication number | Publication date |
---|---|
CN111881081B (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109886400B (zh) | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 | |
Yepez et al. | Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks | |
CN107633297B (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
WO2019136764A1 (zh) | 卷积器及其所应用的人工智能处理装置 | |
CN112703511B (zh) | 运算加速器和数据处理方法 | |
CN113222101A (zh) | 深度学习处理装置、方法、设备和存储介质 | |
US20210065328A1 (en) | System and methods for computing 2-d convolutions and cross-correlations | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN108897716A (zh) | 通过存储器读写操作来缩减计算量的数据处理装置及方法 | |
CN111582465A (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN109446478B (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
CN112784951B (zh) | Winograd卷积运算方法及相关产品 | |
CN111881081A (zh) | 基于序列机的fxlms算法的fpga实现模块及方法 | |
CN110649912B (zh) | 空间滤波器的建模方法 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
Kalbasi et al. | A classified and comparative study of 2-D convolvers | |
Huang et al. | A low-bit quantized and hls-based neural network fpga accelerator for object detection | |
Wang et al. | An FPGA-based reconfigurable CNN training accelerator using decomposable Winograd | |
Tiwari et al. | High throughput adaptive block FIR filter using distributed arithmetic | |
WO2019136747A1 (zh) | 反卷积器及其所应用的人工智能处理装置 | |
CN110717145A (zh) | 基于对称稀疏矩阵技术的分段对称反向高斯-约当消元法 | |
CN112711013B (zh) | 一种基于分块矩阵的快速自适应波束形成方法 | |
CN111722834B (zh) | 一种面向机器人ekf-slam算法的加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |