自适应滤波器与智能天线阵的FPGA实现_第1页
自适应滤波器与智能天线阵的FPGA实现_第2页
自适应滤波器与智能天线阵的FPGA实现_第3页
自适应滤波器与智能天线阵的FPGA实现_第4页
自适应滤波器与智能天线阵的FPGA实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字信号处理课程设计自适应滤波器与智能天线阵的FPGA实现 20 13年 04 月 22 日目录一. 背景-1二自适应滤波器优势-1三. 课程设计的目的和任务-1四自适应滤波器算法原理-1 自适应滤波器的概念-1 组成及分类-2 自适应算法原理-2五LMS算法和编程-2 LMS算法原理-2 LMS算法的编程-36 智能天线阵-5 何为智能天线-5 智能天线的原理-5 波束赋形-5智能天线的程序分析及仿真结果-7 1、天线阵元的输入信号仿真产生程序-7 2、天线阵性能仿真程序-7 3、智能天线阵的FPGA实现-7 、确定运算字长及数据截位方法-7 、计算时钟频率并分配各步骤所需时钟周期-9 、自

2、适应天线阵的VHDL实现-9 、FPGA实现后的仿真测试-9七.总结-10附录-1114自适应滤波器与智能天线阵的FPGA实现一. 背景目前国内外的学术和科研机构都很重视智能天线的研究和开发,不仅进行理论研究,还建立了实验平台进行仿真,研究人员正在考虑在新的移动通信体制中引入智能天线技术。而自适应滤波器则是智能天线阵列研究的重点和关键。自适应滤波器在智能天线中的应用,主要体现在智能天线自适应波束形成技术中,自适应波束形成算法是自适应波束形成技术的核心,是决定系统性能的最重要的因素。人们已提出了很多智能天线算法,如LMS算法、RLS算法、SMI算法等,基于该算法而设计的各种形式的阵列天线已广泛地

3、应用于各种自适应天线系统,他们在改善天线系统性能方面发挥着重要的作用。在这里,将从原理、性能等方面对LMS类自适应滤波器算法的智能天线进行研究。二自适应滤波器优势在这之前我们所学的滤波器(如FIR滤波器、IIR滤波器)均属于常规滤波器滤波器的系数是固定的,滤波器的频率响应、结构等一经设计完成,均不能再进行改变。这就造成滤波器不能适应环境的改变。而自适应滤波器,在对输入信号的统计特性未知或知之甚少的情况下,利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,以适应信号与噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器自出现以后,发展非常快。由于设计简单、性能最佳,

4、自适应滤波器是目前数字滤波器领域是活跃的分支,也是数字滤波器研究的热点。在此我将就自适应滤波器在智能天线中的应用,进行分析其原理及优势。三. 课程设计的目的和任务目的:1.理解自适应滤波器算法原理;2.理解LMS算法和编程;3.理解智能天线阵的原理。任务:1.祥细注解智能天线阵算法的FPGA程序;2.画出FPGA程序波束仿真图并分析;3.完成课程设计报告撰写;4.通过上机验收,重点考察对算法和程序的理解。四自适应滤波器算法原理自适应滤波器的概念:自适应滤波器是一种能够自动调整本身参数的特殊维纳滤波器,在设计时不需要实现知道关于输入信号和噪声的统计特性的知识,它能够在自己的工作过程中逐渐“了解”

5、或估计出所需的统计特性,并以此为依据自动调整自己的参数,以达到最佳滤波效果。一旦输入信号的统计特性发生变化,它又能够跟踪这种变化,自动调整参数,使滤波器性能重新达到最佳。组成及分类:自适应滤波器由参数可调的数字滤波器(或称自适应处理器)和自适应算法两部分组成。根据自适应算法是否与滤波器输出有关,自适应滤波器可分为开环系统和闭环系统,如图1所示:图1 自适应滤波器原理图开环自适应滤波器的控制信号仅取决于系统输入,与输出无关:闭环自适应滤波器的控制信号则由系统输入、输出共同决定。由于闭环系统具有更好的性能,因此应用更为广泛。在闭环自适应滤波器中,输入信号通过参数可调数字滤波器后产生输出信号,将其与

6、参考信号进行比较,形成误差信号。通过自适应算法对滤波器参数进行调整,最终使满足最小均方误差准则。 自适应算法原理:从前面的介绍,可知自适应滤波器由参数可调的数字滤波器和自适应算法组成。自适应算法的最终目的是使得估计信号与期望信号的差值满足某种最佳准则,而最佳准则的种类正是自适应算法的性能及结构的决定性因素。自适应滤波器所采用的的最佳准则有很多种,其中最小均方误差(LMS)准则和递推最小均方(RLS)准则最为常用。在此,我采用的是LMS算法,LMS算法是基于集平均而设计的一种算法。假设观察到的信号为,期望信号为,最佳信号估计器的任务就是根据做出对期望信号的最好估计。采用的估计准则的不同,与可以是

7、线性关系,也可以是非线性关系。定义矢量 信号估计器的任务就是根据给定的观察矢量,寻找出一种函数关系以得到的最佳估计。现代数字信号处理采用的估计准则有四种:最大后验概率(MAP)准则、最大似然(ML)准则、均方误差(MS)准则、线性均方误差(LMS)准则,除了LMS外的其他三种估计都是非线性函数。五LMS算法和编程 LMS算法原理:LMS算法的判据是最小均方误差,即理想信号与滤波器输出之差的平方值的期望值最小,并且根据这个判据来修改权系数由此产生的算法称为最小均方算法(LMS)。LMS的数字模型如图2所示 图2 LMS的数字模型LMS算法可以用下面的一组递推公式来表示:式中,是滤波器系数向量,其

8、中是一个矩阵,是由输入信号组成的一组输入向量,是输出信号,是期望信号,是误差信号,为权矢量更新时的步长因子,越大,则算法收敛越快,但同时收敛后的误差信号也越大,越小,则算法收敛速度越慢,但同时收敛后的误差信号也相应减小,稳态性能更好。因此,可以通过调整步长因子的值来调整LMS算法的性能。在算法初始阶段采用较大的值加快收敛,当算法收敛后再采用较小的值来提高收敛后的稳态性能。 LMS算法的编程:LMS算法在MATLAB仿真中的编程如下: %LMS算法 for i=(k+1):N XN=xn(i-k+1):(i); y(i)=w*XN' e(i)=d(i)-y(i); w=w+u*e(i)&

9、#39;*XN; End最小均方差(LMS)算法的性能受到步长因子的影响,步长因子的数值变化将影响LMS算法的综合性能。使阵列的方向图,即形成的波束图受到影响。收敛速度,算法的稳定性受到影响。以下将从步长因子,收敛速度和算法稳定性之间的关系方面进行分析。下面的3幅仿真结果图显示的是步长因子分别为1/128、1/256、1/512时的LMS算法的误差信号曲线: 图31=1/128- 图42=1/256- 图53=1/512分析上面的三幅图中,可以发现算法收敛从快到慢的值为1/128、1/256,、1/512,而收敛后的误差信号从小到大的值为1/512、1/256,、1/128。即越大,算法收敛越

10、快但收敛后的误差信号也越大;反之,越小算法收敛越慢,同时收敛后的误差信号也越小,稳定性能越好。六智能天线阵 何为智能天线:智能天线是指采用天线阵列,根据信号的空间特性,能够自适应调整加权值,以调整其方向,形成多个自适应波束,达到抑制干扰、提取信号目的的天线。 智能天线的原理:智能天线的原理是将无线电的信号导向某个具体方向,产生空间定向波束,使天线波束对准用户信号到达方向,旁瓣或零陷对准干扰信号到达方向,达到充分高效利用移动用户信号并删除或抑制干扰信号的目的。智能天线以多个高增益的动态窄波束分别跟踪多个期望信号,来自窄波束以外的信号被抑制。采用自适应空间数字处理技术的智能天线阵,是利用数字信号处

11、理的算法去测量不同波束的信号强度的,能动态地改变波束,是天线的传输功率集中;且能使多个用户共同使用一个信道又增强了信号能力。在此是利用数字信号处理的方法,在基带部分模数转换之后进行波束成型来实现自适应天线阵。常用的等距直线阵结构的自适应天线阵的组成结构如图6所示,组成天线阵的单个阵元天线的方向图是全向的。图6 自适应天线阵结构图接收信号要满足以下两个条件:(1) 接收信号相对于阵列孔径是窄波带的(2) 单天线的发射极位于天线阵列接收机的远场。 波束赋形:智能天线的核心技术是波束赋形,使用智能天线可以在同一时隙,同一频率以及同一码道上利用空间特性进行信道分割,实现空分多址,从而提高系统容量和频谱

12、利用效率。智能天线的波束赋形图如图7所示:图7 智能天线的波束赋形图 MIMO系统波束赋形可以使得只有具有特定信道的用户才能接收并分离出自己所需信息,在期望用户的H0矩阵方向上形成“主波束”,而在其他矩阵方向上形成“零陷”。这时,同样可获得空间信道复用及空间分集的效果。如图8所示:图8 MIMO系统波束赋形原理图所谓波束赋形,就是对各个阵元的输出做复数加权,以调整该路信号的幅度和相位,再求和,即可得到波束形成器的输出。 其中复数权向量对基阵的各个阵元加权后,基阵响应可以表示为:对b()取模,得到波束图的定义:使波束指向的权为即波束图会在时取得最大增益,并且通过改变即可改变波束的指向。波束形成器

13、通过滤波器各个抽头上权值的更新来控制天线方向图,使方向图的主瓣对准期望信号的入射方向,而使零点对准干扰方向,这样就可以提取感兴趣的信号了。 智能天线的程序分析及仿真结果:对基于LMS算法的自适应均匀直线天线阵进行仿真。天线阵由4个全向天线组成,相邻阵元间隔为波长的一半。其中LMS算法的步长因子为1/128。1、天线阵元的输入信号仿真产生程序:%产生天线阵元的输入信号%output为10行2032列矩阵,每行代表一条支路输入信号%依次为:r1,i1,r2,i2,r3,i3,r4,i4,rr,ir function output=E7_4_AntennaSigProduce(SJNR,SNR,LE

14、N,M,JANGLE) tsign=randsrc(1,LEN); tjam=randsrc(1,LEN); sign=zeros(1,LEN*M); jam=zeros(1,LEN*M); for k=1:LEN %进行M倍采样 sign(k-1)*M+1):(k*M)=tsign(k); jam(k-1)*M+1):(k*M)=tjam(k); end 2、天线阵性能仿真程序根据输入信号仿真程序仿真产生的数据,采用LMS算法仿真天线阵的仿真程序的重点部分为:%LMS算法for k=1:LEN*M y(k)=w(:,k)'*x(:,k); e(k)=r(k)-y(k); aw(:,k

15、)=(1/64)*x(:,k)*conj(e(k); w(:,k+1)=w(:,k)+aw(:,k);endclc;%求取LMS算法中间变时的最大绝对值%abs表示实部,imag表示虚部mry=max(max(abs(real(y) miy=max(max(abs(imag(y)mre=max(max(abs(real(e) mie=max(max(abs(imag(e)mrw=max(max(abs(real(w) miw=max(max(abs(imag(w) 天线阵性能仿真程序的运行结果如图9所示,分析发现,基于LMS算法的天线阵能够较快的收敛,在信干比为-20dB、信噪比为0dB的恶劣

16、条件下,天线阵在算法收敛后所形成的方向图在干扰来向(60º)形成了明显的零陷(-48dB),在信号来向(0º)有最大的增益,达到了增强信号并抑制干扰的目的。3、 智能天线阵的FPGA实现关键点在于定点运算过程中小数点位置的确定、截位的处理,以及如何分配各运算步骤所需的时钟数量。接下来将对这几个关键点结合程序代码进行分析。、确定运算字长及数据截位方法:如右边的LMS算法公式,式1中 图9 自适应直线天线阵仿真结果为了y(n)的小数点位置与x(n)相同需要进行截位。根据复数乘法运算规则,复数乘法运算的结果为两个定点乘法运算结果的和或差,为保数据不溢出,需采用33比特存储复数的实

17、部和虚部。而小数点位定在符号位与次高位之间。因此,16比特的y(n)数据从复数乘法结果的3015比特数据截取。步长因子µ =1/128,则2µ =1/64,可通过右移6位来近似实现与2µ的乘法运算,即使最高位再扩展6位符号位。根据复数乘法运算规则及其IP核输出数据位数,33位比特的数据已包含了扩展的2位符号位,所以在扩展4位符号位即可实现乘以1/64的运算。因此,式子3中的截位方法为,取32位乘法结果的3221比特的数据,并扩展4位符号位作为最终的。式2和式3比较简单,直接对两个16比特的定点数据相减或相加。实现截位的相对应的程序代码如下: yr <= yr

18、t(30 downto 15); -计算权值更新量 udw1 : complexmultport map (xr1,xi1,ehrt(30 downto 15),ehit(30 downto 15),clk,rst,dwr1,dwi1); udw2 : complexmultport map (xr2,xi2,ehrt(30 downto 15),ehit(30 downto 15),clk,rst,dwr2,dwi2); udw3 : complexmultport map (xr3,xi3,ehrt(30 downto 15),ehit(30 downto 15),clk,rst,dwr3

19、,dwi3); udw4 : complexmultport map (xr4,xi4,ehrt(30 downto 15),ehit(30 downto 15),clk,rst,dwr4,dwi4);-1个数据周期内进行一次权值更新process(rst,clk)beginif rst='1' then wr1<="0100000000000000" wr2<="0100000000000000" wr3<="0100000000000000" wr4<="0100000000000

20、000" wi1<=(others=>'0'); wi2<=(others=>'0'); wi3<=(others=>'0'); wi4<=(others=>'0');elsif rising_edge(clk) then if count="111" then wr1<=wr1+dwr1(32 downto 21); wr2<=wr2+dwr2(32 downto 21); wr3<=wr3+dwr3(32 downto 21); w

21、r4<=wr4+dwr4(32 downto 21); wi1<=wi1+dwi1(32 downto 21); wi2<=wi2+dwi2(32 downto 21); wi3<=wi3+dwi3(32 downto 21); wi4<=wi4+dwi4(32 downto 21); end if;end if;end process;、计算时钟频率并分配各步骤所需时钟周期根据LMS算法原理,需要在一个数据采样周期内完成一次完整的权值更新过程。计算y(n)需要一次16×16复数乘法运算(采用ISE提供的复数乘法器IP核,最快需要3个时钟周期),计算也需

22、要一次16×16复数乘法运算,最后进行权值更新需要一次加法运算。由于两次复数乘法运算共占用了6个时钟周期,因此可以分配给两个加、减法各一个时钟周期,总共刚好为8个时钟周期。、自适应天线阵的VHDL实现详细的程序代码见附录。程序实现后,占用触发器1675个,四输入查找表1014个,乘法器IP核32个;当时钟约束条件设置为50MHz时,最高系统时钟频率可达51.018MHz。可知,自适应天线阵算法所需的逻辑资源是比较多的。图10 自适应天线阵FPGA仿真测试后的误差曲线及方向图、FPGA实现后的仿真测试FPGA实现后,用MATLAB分析处理程序运行结果如图10所示。比较图9和图10可知,

23、FPGA实现后的误差收敛速度与理论仿真结果相近,算法收敛后形成的天线阵方向图性能略低于MATLAB的理论仿真结果,这是因为FPGA实现过程中的有限字长引起的。7 总结 结论自适应滤波是信号处理的重要基础,近年来发展速度很快,在各个领域取得了广泛的应用。在实际问题当中,迫切需要研究有效、实用的自适应滤波算法。围绕这个课题,本文在阅读大量文献的基础上,对自适应滤波的多种算法进行了分析和研究,其中详细分析了LMS算法和自适应滤波器在智能天线阵上的应用。LMS算法结构简单、计算量小且稳定性好,因此被广泛地应用于自适应控制、雷达、系统辨识及信号处理等领域。它的主要限制是它的收敛速度慢,这归因于仅仅使用一

24、阶信息,影响它的收敛速度的主要因素:步长因子,较小时,自适应速率减慢,它等效于LMS滤波器有长的“记忆”。智能天线有很多处理技术、实现方法、组成结构,在这里只是对最基础、最常用的采用自适应处理技术的智能天线阵进行分析研究。 心得这次的课程设计因为没有学习相关的程序语言,对于MATLAB语言和VHDL语言的程序代码编写相对于我个人来说,难度很大。所以所用的代码是从数字滤波器的MATLAB与FPGA实现这本书上摘录过来的。所以,与其说是课程设计,倒不由说是“自学”。上学期学习数字滤波器的时候,一直觉得滤波器很难学,公式很难化解、理解,更不清楚这些公式是如何来的。现在,需要自己静下心来仔细的去了解自

25、适应滤波器及LMS算法的原理、理解程序代码。还没开始时:很恐惧上学期没怎么学好,软件也不是很熟悉,怎么办好呢,不会是要我整本书都看完才行吧?;刚开始:看完理论知识了,可是感觉不能和应用挂上钩;到后来,就觉得轻松了点,最起码心理已经有点底了。在这个过程中,遇到很多不懂或理解错误的地方,通过请教同学和翻看以前所学的知识来慢慢解决了。所以,在此感谢周老师的教导和舍友的帮助。参考文献数字滤波器的MATLAB与FPGA实现 杜勇 路建功 李元洲 编著附录:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use I

26、EEE.STD_LOGIC_SIGNED.ALL;-使用有符号数运算entity Antenna is Port ( clk,rst : in STD_LOGIC; -低电平有效 x1r,x1i : in STD_LOGIC_VECTOR (15 downto 0); x2r,x2i : in STD_LOGIC_VECTOR (15 downto 0); x3r,x3i : in STD_LOGIC_VECTOR (15 downto 0); x4r,x4i : in STD_LOGIC_VECTOR (15 downto 0); w1r,w1i : out STD_LOGIC_VECTOR

27、 (15 downto 0); w2r,w2i : out STD_LOGIC_VECTOR (15 downto 0); w3r,w3i : out STD_LOGIC_VECTOR (15 downto 0); w4r,w4i : out STD_LOGIC_VECTOR (15 downto 0); er,ei : out STD_LOGIC_VECTOR (15 downto 0); rrin : in STD_LOGIC_VECTOR (15 downto 0); yr : out STD_LOGIC_VECTOR (15 downto 0);end Antenna;architec

28、ture Behavioral of Antenna is -起始component complexmult -声明复数乘法器IP核port (ar: IN std_logic_VECTOR(15 downto 0); -16bit量化ai: IN std_logic_VECTOR(15 downto 0);br: IN std_logic_VECTOR(15 downto 0);bi: IN std_logic_VECTOR(15 downto 0);clk: IN std_logic;sclr: IN std_logic;pr: OUT std_logic_VECTOR(32 downto

29、 0);pi: OUT std_logic_VECTOR(32 downto 0);end component;-输入数据signal count: std_logic_vector(2 downto 0); -3位计时器signal ehrt,ehit: std_logic_vector(32 downto 0);signal xr1,xr2,xr3,xr4,xi1,xi2,xi3,xi4,rr: std_logic_vector(15 downto 0);-rr为权值,在这里是一个实数signal wr1,wr2,wr3,wr4,wi1,wi2,wi3,wi4,whi1,whi2,whi3

30、,whi4: std_logic_vector(15 downto 0);signal yrt1,yrt2,yrt3,yrt4,yit1,yit2,yit3,yit4,yrt: std_logic_vector(32 downto 0);signal dwr1,dwr2,dwr3,dwr4,dwi1,dwi2,dwi3,dwi4: std_logic_vector(32 downto 0);begin -3位计数器,计数周期为8,为输入数据速率 PCounter8:process(rst,clk)beginif rst='1' then -赋初值count<=(other

31、s=>'0');xr1 <= (others=>'0');xr2 <= (others=>'0');xr3 <= (others=>'0');xr4 <= (others=>'0');xi1 <= (others=>'0');xi2 <= (others=>'0');xi3 <= (others=>'0');xi4 <= (others=>'0');r

32、r <= (others=>'0');elsif rising_edge(clk) then -上升沿有效count<=count+1;if count="111" then xr1 <= x1r;xr2 <= x2r;xr3 <= x3r;xr4 <= x4r; xi1 <= x1i;xi2 <= x2i;xi3 <= x3i;xi4 <= x4i;rr <= rrin;end if;end if;end process Pcounter8;-取权值的共轭进行输出信号yn的运算whi1

33、<= -wi1;whi2<= -wi2;whi3<= -wi3;whi4<= -wi4; uy1 : complexmultport map (xr1,xi1,wr1,whi1,clk,rst,yrt1,yit1); uy2 : complexmultport map (xr2,xi2,wr2,whi2,clk,rst,yrt2,yit2); uy3 : complexmultport map (xr3,xi3,wr3,whi3,clk,rst,yrt3,yit3); uy4 : complexmultport map (xr4,xi4,wr4,whi4,clk,rst

34、,yrt4,yit4); -计算误差信号process(rst,clk)begin if rst='1' then ehrt <= (others=>'0');ehit <= (others=>'0');elsif rising_edge(clk) then ehrt <= rr-yrt1-yrt2-yrt3-yrt4; ehit <= yit1+yit2+yit3+yit4;-由于下面用到的是e(n)的共轭,所以在此不用加上“-”号 yrt <= yrt1+yrt2+yrt3+yrt4;end if;end process; yr <= yrt(30 downto 15); -对yrt进行截位 -计算权值更新量 “(30 downto 15)”右移6位,实现了乘以1/64的运算 udw1 : complexmultport map (xr1,xi1,ehrt(30 downto 15),ehit(30 downto 15),clk,rst,dwr1,dwi1); udw2 : complexmultport map (xr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论