ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:211.63KB ,
资源ID:5460785      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5460785.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的FIR滤波器课程设计报告.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的FIR滤波器课程设计报告.docx

1、基于FPGA的FIR滤波器课程设计报告FPGA课程设计报告设计题目:基于FPGA的FIR滤波器设计 专 业:信息类班 级:信息094班学 号:200900484425姓 名: 指导教师:杨艳2013年1月基于FPGA的FIR滤波器的设计报告 目 录1 概述32 课程设计要求43 设计内容53.1课程设计内容53.1.1 设计题目53.1.2 设计要求53.2 设计方案的确定.63.2.1滤波器的设计方法.63.2.2 滤波器设计实现方法.73.2.3方案确定.83.3 设计方案的实现.83.3.1利用FDATool工具设计FIR数字滤波器.83.3.2 FIR数字滤波器的FPGA实现.123.

2、4 仿真测试与分析.154 心得体会.175 参考文献.171 概 述我们学生通过这次的课设深入理解和消化了基本理论、进一步提高综合应用能力并且锻炼独立解决问题的能力,我们将数字信号处理、集成电路原理与应用和FPGA系统设计与应用几门课程融合在一起综合应用设计一个实用的数字FIR滤波器。本报告中首先讲解了这次设计的具体内容,以及所要求的数字FIR滤波器的技术指标。然后,数字滤波器的一些设计方法,并具体确定我这次设计所用的设计方案。滤波器在matlab中的设计方法应用。通过matlab得到所需滤波器的具体参数h(n),然后用这些所设计的参数,通过Quartus ii工具编程具体实现滤波器功能。这

3、次滤波器实现过程中,用到以下小模块:延时器,加法器,乘法器,减法器。报告中有具体的VHDL源码程序。仿真测试结果。2 课程设计要求及注意事项1 设计过程以小组为单位,各组设一个组长,负责组织和协调本小组的讨论、任务分工等;2 设计过程必须在本组内独立完成,不得跨组参考或抄袭,避免方案出现雷同;3 设计书一律采用专用报告纸,用统一封面装订;4 课程设计原则上在3周内做完;5 最后一周周五进行优秀设计方案评选,在各组推选代表进行方案介绍的基础上,推选出2-3个优秀设计方案。6 学有余力的学生在完成必做设计内容的基础上,可对内容进一步展开设计,以提高综合应用能力,锻炼独立解决问题的能力。3 课程设计

4、内容3.1 课程设计题目及要求3.1.1 设计题目:基于FPGA的FIR滤波器设计3.1.2 设计要求利用所学知识,采用MATLAB和FPGA相结合完成FIR滤波器的设计仿真。采用直接法或分布式算法实现FIR数字滤波器,了解两种算法的优缺点,选择其中一种算法,得出用它来实现FIR滤波器的硬件结构,对其实现方式进行研究,分别采用合适的方法来设计,最后利用FPGA器件实现FIR数字滤波器的硬件电路,并用Matlab对实现的结果进行仿真分析。设计指标:1)系统采样频率:10KHz 2)通带边缘频率:1KHz3)阻带边缘频率:2KHz4)通带最大衰减:1dB5)阻带最小衰减:47dB6)类型:FIR低

5、通7)输入序列位宽为8位的有符号数(最高位为符号位);8)输出序列位宽为16位的有符号数(最高位为符号位)。3.2 设计方案的确定3.2.1滤波器的设计方法:一般可分为时窗函数法和等波纹设计法。1. 时窗函数法一般设计步骤如下:A. 根据所需设计的数字滤波器类型(低通、高通、带通、带阻),确定线性相位数字滤波器类型。B. 根据滤波器阻带衰减,选择窗函数的类型,根据过渡带宽度确定时窗函数的长度,并根据线性相位条件进行修正。C. 确定理想数字滤波器的频率响应函数,其中为幅度特性函数,为相位特性函数。D. 计算理想滤波器的单位脉冲响应,即。E. 加窗得到设计结果,即。2. 等波纹设计一般步骤如下:A

6、.根据滤波器的设计指标要求:边界频率、通带最大衰减、阻带最小衰减等,计滤波器的长度,并确定幅度误差加权函数。B.采用雷米兹交替算法,获得所设计的滤波器的单位脉冲响应3.2.2 滤波器设计实现方法 一般有线性相位FIR直接型结构和分布式算法的设计。3.2.3方案确定经过多种方案的比较,本次设计最终的方案是:等波纹法的改进的直接型结构FIR数字滤波器利用MATLAB提供的FDATOOL滤波器设计工具,采用等波纹法的设计。设计的实现为线性相位FIR滤波器的直接结构。3.3 方案实现3.3.1 利用FDATool工具设计FIR数字滤波器FIR滤波器设计系数的确定等波纹法低通滤波器:阶数:15 采样频率

7、:10k 通带频率:1k 阻带频率:2k通带衰减1db 阻带衰减:47db滤波器类型:等波纹FIR滤波器幅频响应滤波器相频响应滤波器系数导出后的系数Num*(26)Columns 1 through 9 (括号内指在FPGA中不带负号的具体移位实现,) -0.5695(右移1位) -1.4400(原数+右移1位) -2.0498(左移1位) -1.1969(原数+右移2位) 2.0784(左移1位) 7.5634(左移2位+左移1+原数+右移1位) 13.5214(左移3位+左移2位+原数+右移1位) 17.4256(左移4位+原数+右移1位) 17.4256 Columns 10 throu

8、gh 16 13.5214 7.5634 2.0784 -1.1969 -2.0498 -1.4400 -0.56953.3.2 FIR数字滤波器的FPGA实现一,工程实现概述工程设计所用的模块有:顶层原理图文件: fir.qdf。底层vhdl文件: 延时器:suoc8。实现系数相乘的mult0mult7 。加法器:add889,add41415,add51516,减法器:sub16直接型结构的FPGA实现。顶层原理图如下: 我的原理说明是根据上面原理图的设计顺序逐步进行的。1 寄存器(延时器)。 原理图上标有suoc8的器件。输入8位数据,通过suoc8的D触发寄存器,达到延时的作用。2 第

9、一级加法器 数据通过add889,就是8位数字输入,9位数字输出加法器,完成第一级相加运算,因为本题是16阶FIR数字滤波器,它的滤波系数有对称的关系,所以采用上面的第一级加法器,达到简化运算的效果。3 乘法器 乘法器用来将数据乘以由matlab计算得到的滤波系数,各系数的结果是通过移位运算得到,节约了硬件乘法器资源。由系数可知: -0.5695(右移1位) -1.4400(原数+右移1位) -2.0498(左移1位) -1.1969(原数+右移2位) 2.0784(左移1位) 7.5634(左移2位+左移1+原数+右移1位) 13.5214(左移3位+左移2位+原数+右移1位) 17.425

10、6(左移4位+原数+右移1位) 前4个全为负,后4个全为正。因此前四个相加,后四个相加,再用后四个的结果减去前四个结果,即可得到有负号相乘的最终结果。但在乘法器设计时暂时没有考虑符号,符号问题由下面的减法器实现。4 第二级加 第二级加法器为add141415。Add141415就是说14位数据加14位数据输出15位数据。在乘法级时,我已将数据全都整理成14位输出,所以这级可用同一类型加法器。5 第三级加 与上一级大体相同的原理,加法器为add151516。6 减法器输出 输出通过减法器sub16:16位数减去16位数结果输出16位数。由于是向减,不会有溢出现象,因此没做符号位的扩展。 到此,整

11、个FIR数字滤波器设计完毕,下面详细说明各个部分的具体实现。二,详细说明 我的说明是根据上面的概要逐一展开的。 我的设计是先编写各个功能的vhdl源文件,再生成功能模块,最后在顶层用原理图的设计方法连线,组成整个系统。1 寄存器(延时器) 设计中用D触发器组成寄存器,实现寄存功能。这里用来寄存一组8位的二进制数据。实现功能: 在CP正跳沿前接受输入信号,正跳沿时触发翻转,正跳沿后输入即被封锁。 源文件:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY suoc8 IS PORT( clk : IN STD_LOGIC; clear : IN STD

12、_LOGIC; Din : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Dout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END suoc8; ARCHITECTURE a OF suoc8 IS BEGIN PROCESS(clk,clear) BEGIN IF clear=1 THEN Dout=00000000; ELSIF clear=0 THEN IF(clkEVENT AND clk=1) THEN Dout = Din; END IF; END IF; END PROCESS; END a;2 第一级加法器 实现两个二进制

13、数字的相加运算。当到达时钟上升沿时,将两数输入,运算,输出结果。源文件:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add889 isPORT(clk : in STD_LOGIC; Din1,Din2 :in signed (7 downto 0); Dout:out signed(8 downto 0);END add889;ARCHITECTURE a of add889 isSIGNAL s1: signed(8 downto 0);SIGNAL s2: signed(8 do

14、wnto 0);BEGIN s1=(Din1(7)&Din1); s2=(Din2(7)&Din2);PROCESS(Din1,Din2,clk)BEGINif clkevent and clk=1 thenDout=s1+s2;end if;end process;end a;3 乘法器 功能: 将数据乘以由matlab计算得到的滤波系数。总共有8个乘法器。 源文件(以mult1为例):LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult1 isPORT( clk : IN STD_

15、LOGIC; Din : IN SIGNED (8 DOWNTO 0); Dout : OUT SIGNED (13 DOWNTO 0);END mult1;ARCHITECTURE a OF mult1 ISSIGNAL s1 : SIGNED (13 DOWNTO 0);-SIGNAL s2 : SIGNED (10 DOWNTO 0);SIGNAL s3 : SIGNED (13 DOWNTO 0);BEGINP1:process(Din)BEGINs1(13 DOWNTO 5)=Din;s1( 4 DOWNTO 0)=00000;-s2(10 DOWNTO 1)=Din;-s2(0)=

16、0;if Din(8)=0 then s3=(00000&Din)+(000000&Din(8 DOWNTO 1);else s3=(11111&Din)+(111111&Din(8 DOWNTO 1);end if;end process;P2: PROCESS(clk)BEGINif clkevent and clk=1 thenDout=s3;end if;END PROCESS;END a;4 第二级加对于乘了滤波系数的数据,进行第二次的加和,以add41415为例源码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LO

17、GIC_arith.ALL;ENTITY add141415 isPORT(clk : in STD_LOGIC; Din1,Din2 :in signed (13 downto 0); Dout:out signed(14 downto 0);END add141415;ARCHITECTURE a of add141415 isSIGNAL s1: signed(14 downto 0);SIGNAL s2: signed(14 downto 0);BEGIN s1=(Din1(13)&Din1); s2=(Din2(13)&Din2);PROCESS(Din1,Din2,clk)BEGI

18、Nif clkevent and clk=1 thenDout=s1+s2;end if;end process;end a;5输出减法器乘法系数为正的各分支之和减去乘法系数为负的各分支。Din1接正,Din2接负。源码如下sub16:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY sub16 isPORT(clk : in STD_LOGIC; Din1,Din2 :in signed (15 downto 0); Dout:out signed(15 downto 0);END sub

19、16;ARCHITECTURE a of sub16 isSIGNAL s1: signed(16 downto 0);SIGNAL s2: signed(16 downto 0);SIGNAL s3: signed(16 downto 0);BEGIN s1=Din1(15)&Din1; s2=Din2(15)&Din2;PROCESS(Din1,Din2,clk)BEGINif clkevent and clk=1 thens3=s1-s2;end if;end process;Dout=s3(16 downto 1);end a;3.4 仿真测试与分析为了测试15阶等波纹FIR低通滤波器

20、的滤波性能,本设计加入了输入的信号,其中是叠加在上的噪声。如图4-4所示,假设抽样频率为1000,则经过抽样的输入序列为:,取n=0,139,由于为浮点数,本设计将扩大24倍,得到,然后再取整。具体如表4-4所示:表4-4 输入序列的处理n取整n取整n取整n取整016.00161032.00322016.001630001-13.49-1311-0.19021-18.50-1931-31.80-32220.94211231.21312211.0511320.7813-8.73-913-1.74-223-23.26-2333-30.25-30425.40251428.9429246.597343

21、.0535-4.68-415-4.6-525-27.31-2735-27.31-27628.94291625.4025263.053366.577-1.74-217-8.7-927-30.25-3037-23.26-23831.21311820.9421280.7813811.05119-0.19019-13.49-1329-31.80-3239-18.50-19抽样,放大取整后的40个输入数据如下:Din=16,-13,21 ,-9, 25,-4,29, -2, 31,0,32, 0, 31, -2,29, -5,25, -9, 21,-13,16,-19, 11,-23,7,-27,3,-

22、30, 1, -32,0, -32,1,-30, 3,-27,7,-23,11,-19滤波系数:h=-0.5,-1.4,-2.0,-1.2,2.0,7.5,13.5,17.4,17.4,13.5,7.5,2.0,-1.2,-1.4,-0.5Quartus II 仿真波形如下:如仿真图输出为:Dout=-4,-9,-11,-10,4,25,57,89,126,167,222,285,358,427,486,532,560,574,573,558,527,484,430,366,295,217,133,45,-45,-133,-217,-295,-366,-430,-485,-529,-560,-

23、576,-560,-525,-476,-418,-356,-299,-243,-191,-136,-82,-33,-1,17,12,5Matlab中卷积结果如下:y=round(conv(h,Din)/2)y = Columns 1 through 24 -4 -8 -12 -9 3 27 56 90 126 170 222 287 358 432 490 536 563 583 582 571 539 500 443 383 Columns 25 through 48 309 234 147 61 -34 -121 -210 -286 -363 -425 -486 -529 -566 -58

24、0 -585 -568 -539 -489 -434 -371 -315 -258 -207 -149 Columns 49 through 54-96 -45 -11 9 11 5仿真结果与matlab计算结果比较可知基本一样。在matlab中输出函数如图:t=0:.5:50;y=sin(0.05*pi*t)+cos(pi*t);plot(t,y);抽样40点x(n)如下:t = 0 : 1 : 39;y = sin(0.05*pi*t)+cos(pi*t);stem(t, y);仿真输出在matlab中杆状图表示:Dout=-4,-9,-11,-10,4,25,57,89,126,167,

25、222,285,358,427,486,532,560,574,573,558,527,484,430,366,295,217,133,45,-45,-133,-217,-295,-366,-430,-485,-529,-560,-576,-560,-525,-476,-418,-356,-299,-243,-191,-136,-82,-33,-1,17,12,5t=0:52;stem(t,Dout);滤波后有Dout得如下图:结论:比较仿真输出与matlab计算输出几乎完全一样,可得所设计是正确的。4 心得体会在这次的课程设计中,将以前的所学知识得到一个综合的应用和巩固学习。首先,这次课设能

26、够完全顺利的实现最终的结果,要感谢我们的指导老师杨艳老师:老师您辛苦了。然后,通过这次课设学习到了,具体滤波器的设计与应用。这次设计的是个低通滤波器,但可以举一反三的效果,以后无论是高通,带通,带阻滤波器都会设计应用。另外,这次课设让我重新熟悉到了,功能强大的matlab工具软件。通过课设现在可以进一步的对matlab中一些功能函数的运用。最后,对嵌入式FPGA的具体系统设计应用有了一个更加确切的认识与实践。5 参考文献1刘爱荣.EDA技术与CPLD/FPGA开发应用简明教程M. 北京:清华大学出版社,2007.2潘松.EDA技术实用教程M. 北京:清华大学出版社,2006.3薛年喜. MATLAB在数字信号处理中的应用M. 北京:清华大学出版社,2003.4程佩青. 数字信号处理教程M. 北京:清华大学出版社,2003.

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2