课程设计(论文)-基于分布式算法的FIR滤波器设计.doc

上传人:yyf 文档编号:3292706 上传时间:2019-08-08 格式:DOC 页数:25 大小:509.01KB
返回 下载 相关 举报
课程设计(论文)-基于分布式算法的FIR滤波器设计.doc_第1页
第1页 / 共25页
课程设计(论文)-基于分布式算法的FIR滤波器设计.doc_第2页
第2页 / 共25页
课程设计(论文)-基于分布式算法的FIR滤波器设计.doc_第3页
第3页 / 共25页
课程设计(论文)-基于分布式算法的FIR滤波器设计.doc_第4页
第4页 / 共25页
课程设计(论文)-基于分布式算法的FIR滤波器设计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《课程设计(论文)-基于分布式算法的FIR滤波器设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于分布式算法的FIR滤波器设计.doc(25页珍藏版)》请在三一文库上搜索。

1、基于分布式算法的FIR滤波器设计目录1绪论31.1概述31.2课题的研究目的和意义31.3国内外的研究现状42 FIR数字滤波器的设计62.1数字滤波器概述62.2传统的乘累加结构FIR数字滤波器基本理论72.3乘累加运算的分布式算法原理分析132.4 FPGA实现过程中查找表的构造方法142.5采用分布式算法实现FIR数字滤波器153具体实现过程和仿真波形184总结245参考文献25基于分布式算法的FIR滤波器设计摘要: 在利用FPGA实现数字信号处理方面,分布式算法发挥着关键作用,与传统的乘积-积结构相比,具有并行处理的高效性特点。详细研究了基于FPGA、采用分布式算法实现FIR数字滤波器

2、的原理和方法,并通过max-plus2进行了仿真。关键词: 分布式算法 DALUT FPGA FIR1绪论1.1概述随着数字技术日益广泛的应用,以现场可编程门阵列FPGA为代表的ASIC专用集成电路器件得到了迅速普及和发展,器件集成度和速度都在高速增长。FPGA既具有门阵列的高逻辑密度和高可靠性,又具有可编程逻辑器件的可编程特性,可以减少系统设计和维护的风险,降低产品成本,缩短设计周期。分布式算法是一种以实现乘加运算为目的的运算方法,它与传统算法实现乘加运算的不同在于执行部分积运算的先后顺序不同。简单地说,分布式算法在完成乘加功能时是通过将各输入数据每一对应位产生的部分积预先进行相加形成相应部

3、分积,然后再对各部分积进行累加形成最终结果,而传统算法是等到所有乘积产生之后再进行相加来完成乘加运算的。与传统算法相比,分布式算法可极大地减少硬件电路规模,很容易实现流水线处理,提高电路的执行速度。1.2 课题的研究目的和意义在数字信号处理中,FIR数字滤波器是最常用的单元之一。它用于将输入信号xn的频率特性进行特定的修改,转换成另外的输出序列yn。传统的FIR数字滤波器多采用诸如TMS320CXX系列的专用DSP芯片,根据输入采样的移位相乘累加编写软件,利用软硬件的相互结合完成滤波器的设计。但DSP芯片是基于哈佛体系结构的,它的顺序处理方式限制了数据的处理速度和吞吐量。由于在性能、成本、灵活

4、性和功耗等方面的优势,基于FPGA的数字信号处理器已广泛应用于图像、视频和无线通信领域。采用分布式算法的FPGA 滤波器采用纯硬件的方式实现FIR滤波,其突出的优点是:运算速度不再和滤波器的阶数正相关,而是与采样数据的宽度相关,特别适合于高阶高速FIR滤波器的设计。1.3 国内外的研究现状嵌入式系统是一个面向应用、技术密集、资金密集、高度分散、不可垄断的产业,随着各个领域应用需求的多样化,嵌入式设计技术和芯片技术也经历着一次又一次的革新。虽然ASIC的成本很低,但设计周期长、投入费用高、风险较大,而可编程逻辑器件(Programmable Logical Device)设计灵活、功能强大,尤其

5、是高密度现场可编程逻辑器件(Field Programmable Gate Array)其设计性能已完全能够与ASIC媲美,而且由于FPGA的逐步普及,其性能价格比已足以与ASIC抗衡。因此,FPGA在嵌入式系统设计领域已占据着越来越重要的地位。作为嵌入式系统的基础元件之一,FPGA的面貌正日新月异:逻辑单元不断增加、单位成本和功耗不断降低,而根本的设计灵活性和快速转换能力却始终未变。在变与不变的共同推动下,FPGA的价值发生了变化,它已从纯粹的建模工具发展成为适合中小批量生产的应用器件,而其应用也从早期的嵌入式通信系统扩展到了低成本的消费电子。FPGA之所以越来越多地在嵌入式系统中得到应用,

6、主要得益于它在低成本和低功耗两方面均取得了很好的进步,从而能够满足OEM日益紧迫的上市周期、不断缩减的成本结构和低功耗要求。“内外两个因素正驱动着这种以价值为基础的FPGA市场的高速发展。”Act公司中国区经理夏明威如是说,“内因是FPGA单位成本的急速下降。凭借半导体工艺技术的不断进步和制造效率的提高,FPGA已在很多对成本高度敏感的市场上与ASIC平分秋色。”市场分析师对可编程逻辑器件市场的预测也验证了这一趋势。首先据市场调研公司Gartner Dataquest预测,2003到2008年,整体可编程逻辑市场的复合年均增长率达38%;其次,他们预测这一增长是由汽车和消费电子应用驱动的。他们

7、还认为,FPGA在消费电子中的应用将于2008年超过10亿美元,即接近其2002年营收水平的10倍。增长的推动力主要来自全球数字和高解晰度广播电视传输标准、游戏和多媒体娱乐系统、LCD和等离子显示技术、以及家用DVR和DVD-W技术应用的不断上升;在汽车领域,FPGA将越来越多用于驾驶室内娱乐系统和GPS导航系统、信息、通信和安全系统。以FPGA为核心的PLD产品是近几年集成电路中发展得最快的产品。随着FPGA性能的高速发展和设计人员自身能力的提高,FPGA将进一步扩大可编程芯片的领地,将复杂专用芯片挤向高端和超复杂应用。目前FPGA的发展趋势主要体现在以下几个方面:1、向更高密度、更大容量的

8、千万门系统级方向迈进;2、向低成本、低电压、微功耗、微封装和绿色化发展;3、 IP资源复用理念将得到普遍认同并成为主要设计方式;4、 MCU、DSP、MPU等嵌入式处理器IP将成为FPGA应用的核心;5、 随着处理器以IP的形式嵌入到FPGA中,ASIC和FPGA之间的界限将越来越模糊,未来的某些电路版上可能只有这两部分电路:6、 模拟部分(包括电源和一块FPGA芯片,最多还有一些大容量的存储器)。2 FIR数字滤波器的设计2.1数字滤波器概述数字滤波器(digital filter)是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频

9、谱的目的。由于电子计算机技术和大规模集成电路的发展,数字滤波器已可用计算机软件实现,也可用大规模集成数字硬件实时实现。数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置)。应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换。数字滤波器输入信号的抽样率应大于被处理信号带宽的两倍,其频率响应具有以抽样频率为间隔的周期重复特性,且以折叠频率即12抽样频率点呈镜像对称。为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。数字滤波器在语言信号处

10、理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。数字滤波器有低通、高通、带通、带阻和全通等类型。它可以是时不变的或时变的、因果的或非因果的、线性的或非线性的。应用最广的是线性、时不变数字滤波器.2.2 传统的乘累加结构FIR数字滤波器基本理论2.2.1FIR滤波器基本原理FIR滤波器被称为有限长脉冲响应滤波器,与IIR数字滤波器相对应,它的单位脉冲响应h(n)只有有限个数据点。输入信号经过线性时不变系系统输出的过程是一个输入信号与单位脉冲响应进行线性卷积的过程,即:式中,x(n)是输入信号,y(n)是卷积输出,h(n)是系统的单位脉冲响应。可以看出,每次采样y(n)需要进行

11、L次乘法和L-1次加法操作实现乘累加之和,其中L是滤波器单位脉冲响应h(n)的长度。可以发现,当L很大时,每计算一个点,则需要很长的延迟时间。2.2.2乘累加运算的位宽分配DSP算法最主要的就是进行乘累加运算。假设采样信号的位宽用N来表示,则N位与N位的乘累结果需要2N位的寄存器来保存;如果两个操作数都是有符号数,则乘积只有2N-1个有效位,因为产生了两个符号位。为了使累加器的结果不产生溢出(计算结果超出了范围,产生了一个进位),需要对累加器进行冗余设计,也就是说要在累加器2N的位宽上多设计出K位,累加器的长度M计算方式如下(L为滤波器的长度):对于无符号数:M=2N+K=2N+log2 L对

12、于有符号数:M=2NK=2N+log2 L-12.2.3 FIR数字滤波器设计方法FIR滤波器设计方法:(1)窗函数法(2)频率采样法(3)切比雪夫逼近法1. 窗函数法的设计步骤与要点设为希望逼近的频响特性函数,为用窗函数法设计的实际滤波器的频响函数。通常取相应的理想频响特性作为。(1)希望逼近的理想滤波器频响函数的表达式。因为FIR数字滤波器一般要求设计成线性相位特性,所以必须满足上述线性相位FIR滤波器的频域特点。逼近理想低通、带通、高通和带阻滤波器频响函数的表达式如下:其中,为理想滤波器截止频率,和分别为理想带通滤波器的通带下截止频率和上截止频率。(为长度),这样才能确保线性相位的时域条

13、件,且为实序列。(2)熟悉各种常用窗函数的技术指标和加窗后对滤波器特性的影响,根据设计指标正确选择窗函数类型及其长度。表7.1列出了六种典型窗函数的基本技术指标参数。这六种窗函数均满足A类线性相位条件:。表7.1 六种窗函数的基本参数窗函数旁瓣峰值幅度/dB过渡带宽阻带最小衰减/dB矩形窗-134-21三角形窗-258-25汉宁窗-318-44哈明窗-418-53布莱克曼窗-5712-74凯塞窗()-5710-80设计过程中根据阻带最小衰减选择窗函数类型,再根据过渡带宽度指标选择窗函数长度N值。(3)检验设计结果(4)熟悉窗函数设计法的特点:设计过程简单、方便实用。但边界频率不易精确控制所以设

14、计完以后,必须检验结果。2. 用频率采样法设计FIR数字滤波器的设计步骤与要点1)频率采样设计法的概念及理论依据设计FIR数字滤波器就是寻求一种满足设计要求的滤波器单位脉冲响应或系统函数。根据频率采样理论,如果长度为,在单位圆上等间隔对采样点得到 (7.3)只要,则有 , (7.4) (7.5)由此可见,只要知道FIR数字滤波器频响函数在上的点等间隔采样,就可确定滤波器的单位脉冲响应或系统函数,这就是频率采样设计法的理论依据。频率采样法就是根据以上频域采样理论,由滤波特性指标构造希望逼近的滤波器频响函数,对其在上采样得到 , (7.6)然后,求得单位脉冲响应,或求得系统函数。这样,或就是FIR

15、数字滤波器的设计结果。2)用频率采样法设计FIR滤波器的设计步骤与要点(1)一般以实际设计的频响函数相应的理想频响特性作为希望逼近的,这样可使设计简化。(2)设计线性相位FIR对和的约束条件。如果,为幅度采样,表示相位采样,即,的表达式及对的约束条件: 为奇数时,为偶数时,由上述可见,设计线性相位FIR滤波器时,相位采样为一确定函数式,当为奇数时,幅度采样关于点偶对称,当为偶数时,关于点奇对称。应当注意,设计高通和带阻滤波器时,只能取奇数。(3)逼近误差及其改进措施,值的估计。逼近误差分析:由频域采样理论可知即所设计的FIR滤波器的单位脉冲响应是希望逼近的滤波器单位脉冲响应的周期延拓序列的主值

16、序列。如果为理想频响特性,则由于频域有间断点,使为衰减较慢的无限长序列。这时其周期延拓时,有较严重的时域混叠,所以,和相差较大,故和相差较大,即逼近误差较大。而且,由于为有限长序列,所以为连续无间断点函数,故在的间断点附近逼近误差最大,并形成倾斜过渡带和振荡,使阻带最小衰减不到20dB。在平滑区域逼近误差将较小。改进措施:在的间断点附近区间假如若干个过渡带采样点,这样就相当于使的间断点变平滑后再采样。即使变得衰减很快,从而周期延拓时混叠失真减小,即和误差减小,必然使频域和误差减小。频域采样点数估算:一般由过渡带宽度估算值。,为过渡采样点数目。所以,的估算公式为显然,越小,或越大都使值越大。3)

17、频率采样法的特点及设计结果检验这种设计方法的特点是:可以在频域直接涉及任意频响特性的FIR数字滤波器,概念清楚、直观。但边界频率不易控制。所以,设计时,要对进行检验,可通过加大采样点数来改善边界频率精度,但这会增加滤波器的成本和计算量。对于窄带滤波器,即使很大,通带内非零采样也较少,这样,其的内插公式(7.5)中有效项较少,从而使实现频率采样结构并联支路较少,使滤波器成本降低,运算量减少。因此,该设计法适合设计窄带滤波器。3. FIR滤波器的等波纹逼近设计法等波纹逼近设计法使用切比雪夫最佳一致逼近理论,可设计出实际滤波器频响与期望的频响之间的最大误差最小化的最佳拟合滤波器。这种方法设计的滤波器

18、呈现等波纹频响特性,所以称之为等波纹逼近设计法。由于误差均匀分布于整个频带,对固定的阶数,可以得到最优良的滤波特性;通带最平坦,阻带最小衰减达到最大。因此,等波纹逼近法在FIR滤波器设计中得到广泛应用,特别是有现成的设计程序,从而使设计简单易行。所以,在建立上述概念的基础上,正确调用设计程序,设置合适的参数即可得到等波纹逼近FIR滤波器系数。2.3乘累加运算的分布式算法原理分析 得益于Xilinx FPGA查找表结构的潜能,分布式算法在滤波器设计方面显示出了很高的效率,自20世纪90年代初以来越来越受到人们的重要。分布式算法是基于查找表的一种计算方法,在利用FPGA实现数字信号处理方面发挥着重

19、要的作用,可以大大提高信号的处理效率。它主要应用于数字滤波、频率转换等数字信号处理的乘累加运算。分布式算法推导如下: 设Ak是已知常数(如滤波器系数、FFT中的正弦/余弦基本函数等),xk(n)是变量,可以看作是n时刻的第k个采样输入数据,y(n)代表n时刻的系统响应。那么它们的内积为: 其中,xk(n)变量可以写成下面的格式: 式中,B为数据格式的字长,xkb是变量的二进制位,只有“0”和“1”两种状态。将(2)式代入(1)式得: 2.4 FPGA实现过程中查找表的构造方法 根据以上论述,括号中的每一乘积项代表着输入变量的某一位与常量的二进制“与”操作,加号代表着算术和操作,指数因子对括号中

20、的值加权。如果事先构造一个查找表,该表存储着括号中所有可能的组合值,就可以通过所有输入变量相对应位的组合向量(XNb,X(N-1)b,.x1b)对该表进行寻址,该查找表称为DALUT。DALUT的构造规则如表1所示。 2.5 采用分布式算法实现FIR数字滤波器 为了说明问题,以一个三个系数的FIR数字滤波器为例设计分布式算法,字宽也设置为三位。设FIR数字滤波器系数为:h(0)=5,h(1)=2,h(2)=3。 相对的ADLUT表如表2所示:在进行FPGA设计时,该表以组件Component形式构建,设置为ROM结构,提供输入寻址端口table_in2.0,输出端口table_out3.0。F

21、PGA算法的结构图如图2所示。算法实现中的几个关键问题为: (1)采用状态机实现分布式算法的状态转移 状态机的实现如图3所示,设置三个状态s0、s1、s2 。状态s0完成数据的装入,数据寄存器需要成对出现,一个完成数据的延迟,另一个完成数据的移位,并将状态转移到s1;状态s1完成查找表功能、数据移位和分布式算法的乘累加运算,数据移位一个数据宽带后将状态转移到s2;状态s2完成数据的输出,并将状态转移到s0。利用状态机可以条理清楚地简化计算过程,在算法实现时发挥着关键的作用。 (2)系统时钟与数据输入时钟的关系 根据上述的状态转移关系,可以得出:每输入一个数据,在下一次数据输入之前,需要在状态s

22、1停留一个数据宽带(三位)的时钟时间,在s2停留一个时钟的数据输出时间。也就是说,系统时钟频率应是数据输入频率的5倍,即fclkock=5fxin。 (3)分布式算法中的乘累加式公推导及核心代表实现 设B是数据的字宽,Pn是分布式算法第n位的结果,则有: 有了该关系式,就可以通过for.loop循环,使用一条语句完成分布式乘累加算法。具体如下: for n in 0 to B-1 loop P:=p/2+tableout(n)*2B-1; End loop; FIR中,h(k)系数为N个,求y(n) 需要前面的N个x数据。(for example y(0)=h(0)*x(-1)+ h(1)*x

23、(-2) + h(2)*x(-3) N=3) x有M位(for example x(-1) = 1100 = 1*23+1*22+0*2+0) .+=.+只要h的值确定了,把输入数据x的各个位提取出来,做一个LUT,储存h(0)+h(N-1)的不同值,需要2N个register。DA大大简化了运算。3 具体实现过程和仿真波形程序1 该程序实现主要实现输入4位数查表得到其与固定系数的乘积,其中en_lut为查找表程序的使能信号,只有当该信号为高电平时才能在时钟触发沿上查表,而lut_low信号为查表地址控制信号,当它为一时选择输入数的第1到3位输入LUT模块,为0时选择输入数的第4到7位输入LU

24、T模块。输出信号sign是将输入数的正负输出到下一级,注意这个模块的输入数in为9位二进制原码。module XIANGZILUT(out,sign,clk,rst_n,in,lut_low,en_lut);input 8:0 in;input rst_n,lut_low,en_lut,clk;output 10:0 out;output sign;reg 10:0 out;reg sign;always(posedge clk)beginif(!rst_n)out=11b0;elseif(en_lut)begincase(lut_low?in3:0:in7:4)4b0000: out=11d

25、0;4b0001: out=11d21;4b0010: out=11d42;4b0011: out=11d63;4b0100: out=11d84;4b0101: out=11d105;4b0110: out=11d126;4b0111: out=11d147;4b1000: out=11d168;4b1001: out=11d189;4b1010: out=11d210;4b1011: out=11d231;4b1100: out=11d252;4b1101: out=11d273;4b1110: out=11d294;4b1111: out=11d315;default: out=11d0

26、;endcasesign=in8;endelseout=11d0;endendmodule程序2该程序是实现控制功能。这个模块有许多的输出信号,它们分别是其它三个状态时的信号,分别来控制模块是否工作。模块的输入只有时钟信号和复位信号rst,只有在复位信号有效时状态跳到初始信号,其实都在时钟的触发沿时进行状态依次跳变。module state(en_sum,en_proadd,In_able,en_lut,lut_low,low,en_acc,en_input_lut,clk,rst);input rst,clk;output en_sum,en_proadd,In_able,en_lut,lu

27、t_low,low,en_acc,en_input_lut;reg en_sum,in_able,en_proadd,en_lut,In_able,lut_low,low,en_acc,en_input_lut;reg 1:0 state;parameter IDLE=2b00,INPUT_ACC=2b01,SHIFT_LOW=2b10,PROADD_HIGH=2b11;always(negedge clk)if(!rst)beginstate=IDLE;In_able=0;en_lut=0;lut_low=0;low=0;en_acc=0;en_proadd=0;en_sum=0;endel

28、sebegincase(state)IDLE:beginstate=INPUT_ACC;endINPUT_ACC:beginstate=SHIFT_LOW;In_able=1;en_input_lut=0;en_lut=1;lut_low=1;en_acc=0;en_sum=1;endSHIFT_LOW:beginstate=PROADD_HIGH;In_able=0;en_proadd=1;lut_low=0;en_acc=1;low=1;en_sum=0;endPROADD_HIGH:beginstate=INPUT_ACC;en_proadd=0;en_input_lut=1;en_lu

29、t=0;en_sum=0;enddefault:state=IDLE;endcaseendendmodule程序3该程序实现将查找表所得的部分积进行相加。程序在中间求和时就对部分积缩小,对它的低9位舍掉,只对高10位以上求和,这样可以达到求速度且节省资源的目的。不足之处是右移9位取整后导致最终结果存在一定的误差。输出的信号位数减少主要在中间求和时对部分积缩小了512倍。module yuADD(out1,out2,out4,out21,out49,out80,out100,clk,rst,en_add,in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,

30、in12,in13,in14);input 7:0 in1,in2,in3,in4,in5,in6,in7,in8,in9,in10,in11,in12,in13,in14;input rst,clk,en_add;output 8:0 out1,out2,out4,out21,out49,out80,out100;wire 8:0 out1,out2,out4,out21,out49,out80,out100;add add1(out1,clk,rst,en_add,in1,in14);add add2(out2,clk,rst,en_add,in2,in13);add add4(out4,

31、clk,rst,en_add,in3,in12);add add21(out21,clk,rst,en_add,in4,in11);add add49(out49,clk,rst,en_add,in5,in10);add add80(out80,clk,rst,en_add,in6,in9);add add100(out100,clk,rst,en_add,in7,in8);endmodulemodule add(out,clk,rst,en_add,ina,inb);input 7:0 ina,inb;input rst,clk,en_add;output 8:0 out;reg 8:0ou

32、t;always(posedge clk)if(!rst)out=9b0;else if(en_add)out=ina7,ina+inb7,inb;endmodulemodule aec(sum,rst,clk,low,en_acc,sign,in);input 10:0 in;input rst,clk,low,en_acc,sign;output 7:0 sum;reg 7:0 sum;always(posedge clk)beginif(!rst)sum=0;else if(en_acc)begin if(low)beginsum1:0=in10:9;sum6:2=5b0;sum7=sign;endelsebeginsum6:0=sum6:0+in10:5;sum7=sign;endendelse sum 实现小型声纳的片上系统集成.电子技术应用,20005. 卢毅.VHDL与数字电路设计.北京:科学出版社,20026. 褚振勇.FPGA与应用. 西安: 西安电子科技大学出版社.20027. 程佩青.数字信号处理教程.北京: 清华大学出版社,2000第 25 页 共 25 页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1