毕业设计(论文)-基于FPGA的数字低通滤波器.doc

上传人:李主任 文档编号:3283005 上传时间:2019-08-07 格式:DOC 页数:24 大小:1,023.52KB
返回 下载 相关 举报
毕业设计(论文)-基于FPGA的数字低通滤波器.doc_第1页
第1页 / 共24页
毕业设计(论文)-基于FPGA的数字低通滤波器.doc_第2页
第2页 / 共24页
毕业设计(论文)-基于FPGA的数字低通滤波器.doc_第3页
第3页 / 共24页
毕业设计(论文)-基于FPGA的数字低通滤波器.doc_第4页
第4页 / 共24页
毕业设计(论文)-基于FPGA的数字低通滤波器.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《毕业设计(论文)-基于FPGA的数字低通滤波器.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于FPGA的数字低通滤波器.doc(24页珍藏版)》请在三一文库上搜索。

1、泉 州 师 范 学 院毕业论文(设计)题 目 基于FPGA的数字低通滤波器 物理与信息工程 学 院 电子信息科学与技术 专 业 07级学生姓名 学 号 指导教师 职 称 讲师 完成日期 2011年4月 教务处 制基于FPGA的数字低通滤波器物理信息工程学院 电子信息科学与技术专业指导老师:讲师【摘要】:低通滤波器是让某一频率以下的信号分量通过,而对该频率以上的信号分量大大抑制的电容、电感与电阻等器件的组合装置。数字滤波器能够满足对于相位特性跟幅度的严格要求,能够改善模拟滤波器无法解决的电压和温度漂移还有噪声等问题。利用FPGA,在QUARTUS平台上使用VHDL银剑描述语言改变滤波器的系数和阶

2、数,通过结合MATLAB工具软件的辅助设计,使低通滤波器具有快速、灵活硬件资源损耗少。【关键词】:FPGA;MATLAB;数字滤波器;QUARTUS目 录1引言42 EDA技术的主要内容42.1大规模可编程器件42.2硬件描述语言42.3软件开发工具42.4实验开发系统53 FPGA简介54 MATLAB简介65 数字滤波器的工作原理66低通滤波器的基本特性77用MATLTAB设计低通滤波器87.1在MATLAB中进行仿真设计87.2运用Quatus检验滤波效果107.3结果记录148结束语16致谢16参考文献:16附录:181引言 随着现在科学技术的高速发展,高精度集成电路的使用,生产力有了

3、大幅度的发展,快捷的EDA工具,使用集成化设计环境,需要更快的速度来开发出质量一流性能优良的电子产品,这对于EDA技术有了更高的要求了。未来的EDA技术将在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及开发操作平台等方面取得新的突破,向着功能强大、简单易学、使用方便的方向发展1。本次设计的基于FPGA的数字低通滤波器是围绕EP2C8Q208C8芯片添加输入和输出电路而成的。用户通过Quartus进行编程、仿真、下载到芯片实现相应的功能,简单方便,具有很高的实用价值。2 EDA技术的主要内容EDA (Electronic Design Automation)是指利用计算机完成电子系统的设

4、计,以计算机和微电子技术为先导,汇集了计算机图形学、逻辑学、微电子工艺和结构学以及计算数学等多种计算机应用学科最新成果的先进技术。EDA技术一般包括以下四个方面:1.大规模可编程逻辑器件;2硬件描述语言;3软件开发工具;4实验开发系统。2.1大规模可编程器件可编程逻辑器件(PLD)是一种由用户变成以实现某种逻辑功能的新型逻辑器件。FPGA和CPLD器件的应用广泛,随着EDA技术的发展成为电子设计领域的重要角色。FPGA包括可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分;而CPLD则包括可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。他们的最明显特点是高集成度、高速度和高可靠性

5、2。2.2硬件描述语言VHDL:在电子科技工程领域里,作为IEEE的工业标准硬件描述语言,已成为通用的硬件描述语言。Verilog:比较使用RTL级和门电路级的描述,综合过程比VHDL简单一点,在高级描述语言方面没有VHDL好。2.3软件开发工具当前比较流行的EDA软件工具有Altera公司的quartus、Lattice 公司的ispexpert、Xilinx公司的foundation Series。本次设计所用的软件是quartus。Quartus II:支持原理图、VHDL和Verilog 语言文本文件以及波形与EDIF等格式的文件作为设计输入,并支持这些文件的任意形式混合设计。它具有门

6、级仿真器,可以进行功能仿真和时序仿真,能够产生精确的仿真结果。在适配之后,Quartus II生成供时序仿真用的EDIF、VHDL和Verilog这三种不同格式的网表文件3。它使用便捷,是最易学易用的EDA软件,并支持主流的第三方EDA工具,支持除APEX20K系列之外所有的Altera公司的FPGA/CPLD大规模逻辑器件4。2.4实验开发系统提供芯片下载电路及EDA实验/开发的外围资源,供硬件验证用。一般有以下几个: 在实验中或者开发所需要的各种类型的基本信号发生模块; CPLDFPGA输出信息显示模块,例如发光管的显示、数码的显示还有声响指示; 监控的程序模块,提供电路重构软配置; 目标

7、芯片适配座。3 FPGA简介FPGA(FieldProgrammable Gate Array)是现场可编程门阵列的简称,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的

8、基本特点一般有以下几个方面: 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片; FPGA可做其它全定制或半定制ASIC电路的中试样片;FPGA内部有丰富的触发器和IO引脚;FPGA是ASIC电路中设计周期最短、风险最小、开发费用最低的器件之一;FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。一般来说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一5。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。 加电时,FPGA芯片将EPROM中数据读入

9、片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。4 MATLAB简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB一般可以用来做数值分析、数

10、值和符号计算、控制系统的设计与仿真、工程与科学绘图、财务与金融工程、通讯系统设计与仿真、数字图像处理技术等。5 数字滤波器的工作原理数字滤波器一般包括无限冲激响应(IIR)系统和有限冲激响应(FIR)系统。假设输入序列是x(n),离散或者数字滤波器对单位的抽样序列的响应为h(n)。在时域离散信号里面和系统中起的作用是和单位冲激函数在时域连续信号和系统中所起的作用是一样的。如下图1所示。y(n)数字滤波器h(n),H(z)x(n)y(z)x(z) 图1 数字滤波器原理数字滤波器的序列y(n)是这两个序列的离散卷积,即 两个序列卷积的z变换等于个自z变换的乘积,即 Y(z)=H(z)X(z)用代入

11、上式,T为抽样周期,可得 Y()=H()X()式中X()和Y()分别为数字滤波器输入序列和输出序列的频谱,H()是单位抽样序列响应h(n)的频谱。因此输入序列的频谱X()经过滤波后,变为H()X(),按照X()的特点和处理信号的目的,选取适当的H()使得滤波后的H()X()符合所需要的要求。6低通滤波器的基本特性数字滤波器的差分方程表示为:系统函数为数字滤波器的特性通常用频率响应函数来描述的。本次设计用的是低通数字滤波器如下图2所示。f 图2 低通滤波器的频谱7用MATLTAB设计低通滤波器当前数字滤波器有很多现成的高级语言设计程序,但是因为运用MATLAB可以使得数字滤波的研究和应用更直观便

12、捷还有高效率。它具有融合计算、可视化、程序设计的一个交互式的环境,可以使得我们更直观而且更方便的进行研究和应用。7.1在MATLAB中进行仿真设计在利用MATLAB设计低通滤波器时,通过利用FDAFOOL工具可以非常方便的设计出数字低通滤波器,设计过程比较简单,编写的程序也不会很长,是很容易设计出来的。FDAFOOL是MATLAB中的一种图形用户工具,可以为设计提供一个综合简便的图形用户界面。本次设计的低通滤波器的指标为:模拟信号采样频率FS=3.1kHz,通带截止频率Fpass=0.8kHz,阻带截止频率Fstop=1.2kHz,在图3界面中设置好各项参数,选择FIR的Equiripple滤

13、波器,然后点击Design Filter,就可以得到所设计滤波器的模型。从图中可以观察其幅度响应、相位响应,也可以观察到脉冲响应、阶跃响应、滤波器的零极点绘制图和系统函数的各个系数等指标。然后点击Targets选项中的GenerateHDL,会出现如图4的界面。将Filter target language设置为Verilog。点击OK就生成对位的文件,可以用quartus软件打开以上文件进行编译、综合,最后将其下载到FPGA中即可实现低通滤波器的功能。 图3 FDATool界面 图4 Genetate HDL界面7.2运用Quatus检验滤波效果用quartus打开设计好的文件如图5所示。

14、图5 fire原理图各个引脚锁定如图6所示。 图6 各引脚锁定图图5中运用的A/D转换模块是TLC549,D/A转换模块为TLC5615 图7 TLC549的引脚图 TLC各引脚功能如下【6】: REF:正基准电压输入端,2.5VREFVcc0.1。 REF:负基准电压输入端,-.1REF,且要求REF-REF。ANALOG IN:模拟信号输入端,ANALOG IN,当ANALOG INREF电压时,转换结果为全“”(),ANALOG INREF-电压时,转换结果为全“”(00)。 CS:芯片选择输入端,要求输入高电平VIN,输入低电平VIN0.8V。DATA OUT:转换结果数据串行输出端,

15、与电平兼容,输出时高位在前,低位在后。I/O CLOCK:外接输入输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。 Vcc:系统电源3VVcc6V。 图8 TLC5615引脚图引脚功能说明如下【7】:脚1DIN:串行数据输入端;脚2SCLK:串行时钟输入端;脚3CS:芯片选用通端,低电平有效;脚4DOUT:用于级联时的串行数据输出端;脚5AGND:模拟地;脚6REFIN:基准电压输入端;脚7OUT:DAC模拟电压输出端;脚8VDD:正电源端。TLC549和TLC5615的程序见附录。将之前用MATLAB生成的文件中的一段程序(如图10)加进去fir2.v程序里。 图9

16、MATLAB生成文件图的一部分因为后半端与前半段是对称的,只取一半。然后编译一下fir2.v文件,然后Create symbol files for current files.就会出现图5所示。再将fire.bdf置顶编译,下载到电路板上,电路板如图9所示。电路板跟函数信号发生器和示波器连接,我们可以观察示波器上的图形如图10、图11。 图10 173hz时的波形图 图11截止频率时候的波形图 7.3结果记录通过调节函数信号发生器输入不一样频率的波,来记录数据。所记录的数据如下图12所示。 图12 数据记录 8结束语 本次设计运用可编辑逻辑器件FPGA结合TLC549、TLC5615等芯片,

17、用Verilog语言,实现了数字低通滤波器。通过这次设计我在滤波器原理上有了更深的了解,掌握了用MATLAB来实现低通滤波器的仿真设计,在C语言的基础上重新学习了一门新的语言,还有学会用Quartus编译下载到芯片,实现对应的功能。对于以后工作中用到次软件有了一定的基础。致谢在本次设计中,吴老师为我们提供了实验室,以便能够尽快完成毕业设计,在设计中经常过来指导,还有解答在设计中遇到的问题,非常感谢吴老师的关心和帮助还有给过我建议的同学,使得我能够按时完成毕业设计。再一次表示对他们的深深的谢意。参考文献:1.丁嘉. 基于CPLD的开发板设计与实现J.宁波大红鹰职业技术学院学报,2006,2(2)

18、.2.刘爱荣,王振成.EDA技术与CPLD/FPGA开发应用简明教程.北京:清华大学出版社,2007.3 侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计M.西安:西安电子科技大学出版,1999:54-56.4. 徐志军,大规模可编程逻辑器件及其应用M.成都:电子科技大学出版社,2000.5.乐春峡,王雁平.基于FPGA的任意波形发生器J.现代电子技术,2008(01):51-53.6陈丽娟,陈家胜.A/D TLC549和水温水位测量实用电路设计,微计算机信息,2005(10).7TLC5615串行数模转换器在开关电源中的应用方案,21世纪电子网,2011(03).FPGA-based w

19、ave digital lowpass filter designInstitute of Physics and Information EngineeringElectronic Information Science and TechnologyZhikai Zhou 070303025Lecturer Zhiwei Wu【Abstract】Low-pass filter is to let some frequency signal components below, and on this frequency by more signal components of capacita

20、nce inductance and greatly restrain devices such as combination device resistance.Digital filter can meet with range for phase characteristic of strict requirement, can improve simulation filter cannot solve voltage and temperature drift and noise etc.In QUARTUS platform using the FPGA, silver sword

21、 use VHDL language change filter coefficients describing and order number, by combining MATLAB tool software aided design, make low-pass filter is fast flexible hardware resource depletion less.【Keywords】FPGA;MATLAB;digital filters;Quartus附录:TLC549模块的程序如下:module TLC549(clk,rst,data_out,ADC_flag,SPI_

22、clk,SPI_data,SPI_cs);inputclk,rst;output7:0data_out;/ADC数据输出outputADC_flag;/ADC转换完成outputSPI_clk,SPI_cs;inputSPI_data;/SPI总线/+/ 分频开始/+regADC_clk;reg3:0ADC_clk_cont;always(posedge clk or negedge rst)/25M 24分频beginif(!rst)/0.96usbeginADC_clk_cont=0;ADC_clk=0;endelsebeginif(ADC_clk_cont=4d11)beginADC_c

23、lk=ADC_clk;ADC_clk_cont=0;endelseADC_clk_cont=ADC_clk_cont+1b1;endend/-/ 分频 结束/-/+/ ADC转换开始/+reg ADC_flag;wire7:0data_out;reg7:0SPI_buff;/SPI缓存reg2:0SPI_cont;/SPI计数器reg1:0state;/输出状态机寄存器regSPI_cs;/SPI选择Wire SPI_clk;/SPI时钟regSPI_clk_mask;reg23:0samprate_counter;assign SPI_clk = SPI_clk_mask ? 1b0 : A

24、DC_clk; assignata_out=SPI_buff;always(posedge ADC_clk or negedge rst)beginif(!rst)beginsamprate_counter=0;state=0;SPI_clk_mask=1;SPI_cont=0;SPI_buff=0;ADC_flag=0;SPI_cs=24d30) samprate_counter=0;else samprate_counter=samprate_counter+1b1;case(state)2d0:/Start ConvertingbeginSPI_clk_mask=0;SPI_buff0=

25、SPI_data;SPI_buff7:1=SPI_buff6:0;SPI_cont=SPI_cont+1b1;if(SPI_cont=3d7) beginADC_flag=1;state=2d1;endend2d1: beginSPI_cs=1;SPI_clk_mask=1;ADC_flag=0;if(samprate_counter=24d25)/17usbeginstate=2d2;endend2d2:beginSPI_cs=0;SPI_cont=0;if(samprate_counter=24d0)beginstate=2d0;endenddefault: begin SPI_cs=0;

26、ADC_flag=0;SPI_clk_mask=1;samprate_counter=0;SPI_cont=0;state=2d0;endendcaseendend/-/ ADC转换 结束/-endmoduleTLC5615的程序如下:module TLC5615(clk,rst,data_in,DAC_start,SPI_clk,SPI_data,SPI_cs);Input clk,rst;Input 9:0data_in;/DAC数据输入Input DAC_start;/DAC开始转换outputSPI_clk,SPI_data,SPI_cs;/SPI总线/+/ 分频开始/+reg SPI

27、_clk;/SPI时钟always(posedge clk or negedge rst)/25M二分频beginif(!rst)beginSPI_clk=0;endelsebeginSPI_clk=SPI_clk;endend/-/ 分频 结束/-/+/ DAC转换开始/+reg15:0SPI_buff;/SPI输出缓存reg3:0SPI_cont;/SPI输出计数器reg1:0state;/输出状态机寄存器regSPI_cs;/SPI选择Wire SPI_data;assignSPI_data=SPI_buff15;/SPI数据always(negedge SPI_clk or neged

28、ge rst)beginif(!rst)beginSPI_buff=0;SPI_cont=0;state=0;SPI_cs=1;endelsebegincase(state)2d0:beginif(DAC_start)/开始转换把数据放入buff,进入第二个状态beginSPI_buff15:12=4b0000;SPI_buff11:2=data_in;SPI_buff1:0=2b00;SPI_cont=0;SPI_cs=0;state=2d1;endend 2d1:beginSPI_buff15:1=SPI_buff14:0;/右移输出,输出16个进入第三个状态SPI_cont=SPI_co

29、nt+1b1;if(SPI_cont=4d14)state=2d2;enddefault:begin SPI_cs=1;/输出完成,进入第一个状态if(DAC_start)state=2d0;endendcaseendend/-/ DAC转换 结束/-Endmodule滤波程序:module FIR2(out,x,clk,star);input star;output9:0 out;input7:0 x;input clk;reg7:0 x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,

30、x23,x24,x25,x26,x27,x28,x29,x30;reg7:0 s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15;wire25:0 yfirst,ysecond,ythird,yfourth,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15;reg9:0 out;reg25:0 out1,out2,out3,out4;/定义滤波器系数parameter signed 15:0 coeff1 = 16b0000000000100000; /sfix16_En15 parameter signed 15:

31、0 coeff2 = 16b0000000001011011; /sfix16_En15 parameter signed 15:0 coeff3 = 16b1111111101101011; /sfix16_En15 parameter signed 15:0 coeff4 = 16b1111111111100010; /sfix16_En15 parameter signed 15:0 coeff5 = 16b0000000101001010; /sfix16_En15 parameter signed 15:0 coeff6 = 16b1111111100000011; /sfix16_

32、En15 parameter signed 15:0 coeff7 = 16b1111111010001000; /sfix16_En15 parameter signed 15:0 coeff8 = 16b0000001100011100; /sfix16_En15 parameter signed 15:0 coeff9 = 16b1111111110111110; /sfix16_En15 parameter signed 15:0 coeff10 = 16b1111101011010001; /sfix16_En15 parameter signed 15:0 coeff11 = 16

33、b0000010101000001; /sfix16_En15 parameter signed 15:0 coeff12 = 16b0000010010010000; /sfix16_En15 parameter signed 15:0 coeff13 = 16b1111000010100100; /sfix16_En15 parameter signed 15:0 coeff14 = 16b0000011010111010; /sfix16_En15 parameter signed 15:0 coeff15 = 16b0100001010110101; /sfix16_En15 alwa

34、ys(posedge star) begin /该begin-end语句块实现滤波器的延时处理,8级缓存 x1 = x; x2 = x1; x3 = x2; x4 = x3; x5 = x4; x6 = x5; x7 = x6; x8 = x7; x9 = x8; x10 = x9; x11 = x10; x12 = x11; x13 = x12; x14 = x13; x15 = x14; x16 = x15; x17 = x16; x18 = x17; x19 = x18; x20 = x19; x21 = x20; x22 = x21; x23 = x22; x24 = x23; x25 = x24; x26 = x25; x27 = x26; x28 = x27; x29 = x28; x30 = x29; endalways(posedge clk) begin s1 = x1+x30; s2 = x2+x29; s3 = x3+x28; s4 = x4+x27; s5 = x5+x26; s6 = x6+x25; s7 = x7+x24; s8 = x8+x23; s9 = x9+x22; s10 = x10+x21; s11 = x11+x20; s12 = x12+x19; s13 = x13+x18;

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

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


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