基于fpga的fir滤波器的程序设计8阶 大学论文.docx
《基于fpga的fir滤波器的程序设计8阶 大学论文.docx》由会员分享,可在线阅读,更多相关《基于fpga的fir滤波器的程序设计8阶 大学论文.docx(19页珍藏版)》请在冰豆网上搜索。
基于fpga的fir滤波器的程序设计8阶大学论文
题目基于FPGA的FIR滤波器的程序设计
学生姓名
专业班级
学号
院(系)
指导教师
完成时间
课程设计任务书
题目基于FPGA的FIR滤波器的程序设计
专业、班级学号姓名
主要内容、基本要求、主要参考资料等:
主要内容:
要求学生使用硬件描述语言(Verilog或者VHDL)设计基于FPGA的FIR滤波器的源程序。
FIR滤波器的阶数为8;FIR滤波器的类型为低通,截止频率可以自行设计;FIR滤波器的系数可借助MatlabFDAtool给出。
基本要求:
1、学会quartusII的使用,掌握FPGA的程序设计方法。
2、学会MATLAB的使用,掌握MatlabFDAtool的使用。
3、掌握硬件描述语言语法。
4、程序设计完成后要求在quartusII中实现功能仿真。
主要参考资料:
1、周润景.基于QuartusⅡ的FPGA/CPLD数字系统设计实例[M].电子工业出版社.2007,8
2、褚振勇.FPGA设计及应用(第三版)[M].西安电子科技大学出版社.2012,4
3、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:
电子工业出版社.2008,1
完成期限:
2015.6.21—2015.6.28
指导教师签名:
课程负责人签名:
2015年6月18日
基于FPGA的FIR滤波器的程序设计
摘要
在现代通信领域中,FIR数字滤波器以其良好的线性特性被广泛使用,属于数字信号处理的基本模块之一。
在实践中,往往要求对信号处理有实时性和灵活性,而已有的一些软件和硬件的实现方式则难以同时到达这两方面的要求。
随着可编程逻辑器件和EDA技术的发展,使用FPGA来实现FIR滤波器,既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用FPGA器件来实现FIR滤波器。
本设计利用MATLAB软件中MatlabFDAtool设计一个FIR低通滤波器,导出所设计滤波器的系数,再利用QuartusⅡ软件,Verilog语言编写程序。
程序设计完成后在quartusII中实现功能仿真。
关键词MatlabFPGAFIR低通滤波器
目录
中文摘要
1概论2
1.1课题的目的和意义2
1.2FPGA技术的发展及应用3
1.3FPGA软件设计工具QuartusII4
2FIR数字滤波器的设计方法理论部分5
2.1引言5
2.2FIR数字滤波器的基础6
2.3数字滤波器的设计原理7
2.4Matlab直接FDAtool设计方式解析8
2.5FDAtool设计模板及设计结果图9
3FIR数字滤波器的设计方法程序分析部分13
3.1QuartusⅡ及VerilogHDL介绍13
3.2实际滤波器程序设计(8阶FIR数字低通滤波器)14
3.2.1VerilogHDL的实现15
3.2.2quartusII中功能仿真19
4总结20
参考文献21
附录22
1概论
1.1课题的目的和意义
数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号要求的输出离散时间信号的转换为所特定功能装置)。
应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换。
数字滤波器输入信号的抽样率应大于被处理信号带宽的两倍,其频率响应具有以抽样频率为间隔的周期重复特性,且以折叠频率即1/2抽样频率点呈镜像对称。
为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。
数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。
数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。
它涉及到的领域很广,如通信系统,系统控制,生物医学工程,机械振动,遥感遥测,地质勘探,故障检测,电力系统,航空航天,自动化仪器等。
数字滤波器的好坏对相关的众多工程技术领域影响很大,一个好的数字滤波器会有效的推动众多的工程技术领域改造和学科发展。
所以对数字滤波器的工作原理,硬件结构和实现方法进行研究具有一定的意义。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件。
与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
1.2FPGA技术的发展及应用
FPGA正处于高速发展时期,新型芯片的规模越大,成本也越来越低,低端的FPGA已逐步取代了传统的数字元件,高端的FPGA将会成为今后竞争的主流。
自1985年问世以来,FPGA从集成电路与系统家族一个不起眼的小角色逐渐成为电子设计领域的重要器件。
它极大地提高了设计灵活性并缩短了产品上市时间,在通信、工业控制、航空领域中广泛应用。
FPGA行业集中度很高,几家美国公司掌握着行业的“制空权”。
特别是在航空航天及军工等特殊领域,美国等少数国家对先进的技术保持封锁。
因此,发展国内FPGA产业不是要不要的问题,而是怎么发展的问题。
国内IC企业介入FPGA的时间并不长,多数公司还处于学习阶段。
Altera公司和Xilinx公司为代表的FPGA厂商,除了在FPGA产品线上不断推陈出新之外,也在不懈地提高开发软件的设计能力,他们的软件产品在很多方面一点也不逊色于专业的EDA厂商,所以从这个角度来说,FPGA厂商也是EDA公司。
这里的代表性产品就是Altera公司的QuartusII开发软件和Xilinx公司的ISE开发软件。
Altera的FPGA开发工具已经经历了四代。
从最初的基于DOS的A+Plus,发展到Max+Plus,1991年推出基于Windows的开发工具Max+PlusII。
Max+PlusII在FPGA设计工具里是一个划时代的产品,它提供了一种与结构无关的图形化设计环境,功能强大,使用方便。
设计者无须精通器件内部的复杂结构,而只需要使用自己熟悉的设计输入工具(如原理图或者HDL语言)把自己的设计输入到计算机中,Max+PlusII就会自动把这些设计转换成最终结构所需的格式,用户只要把最后生成的配置数据通过下载电缆下载到芯片中,即完成了所有的工作。
QuartusII是Altera公司在2001年推出的第四代开发工具,是一个集成化的多平台设计环境,能够直接满足特定设计需要,在FPGA和CPLD设计各个阶段都提供了工具支持,并为可编程片上系统(SOPC)提供全面的设计环境,是一个系统级的高效的EDA设计工具。
而且,随着器件结构和性能的不断提高,器件集成度的不断扩大,Altera始终能够同步推出与之相适应的开发工具,满足了设计者的要求,近年来一直保持着一年一个新版本的更新进度。
1.3FPGA软件设计工具QuartusII
Altera公司和Xilinx公司为代表的FPGA厂商,除了在FPGA产品线上不断推陈出新之外,也在不懈地提高开发软件的设计能力,他们的软件产品在很多方面一点都不逊色于专业的EDA厂商,所以从这个角度来说,FPGA厂商也是EDA公司。
这里的代表性产品就是Altera公司的QuartusII开发软件和Xilinx公司的ISE开发软件。
Altera的FPGA开发工具已经经历了四代。
从最初的基于DOS的A+Plus,发展到Max+Plus,1991年推出基于Windows的开发工具Max+PlusII。
Max+PlusII在FPGA设计工具里是一个划时代的产品,它提供了一种和结构无关的图形化的设计环境,功能强大,使用方便。
设计者无需精通器件内部的复杂结构,而只需要使用自己熟悉的设计输入工具(如原理图或者HDL语言)把自己的设计输入到计算机中,Max+PlusII就会自动把这些设计转换成最终结构所需的格式,用户只要把最后生成的配置数据通过下载电缆下载到芯片中,即完成了所有的工作。
QuartusII是Altera公司在2001年推出的第四代开发工具,是一个集成化的多平台设计环境,能够直接满足特定的设计需要,在FPGA和CPLD设计各个阶段都提供了工具支持,并为可编程片上系统(SOPC)提供全面的设计环境,是一个系统级的高效的EDA设计工具。
而且,随着器件结构和性能的不断提高,器件集成度的不断扩大,Altera始终能够同步推出与之相适应的开发工具,满足了设计者的要求,近年来一直保持这一年一个新版本的更新进度。
Altera公司的QuartusII软件是一种集编辑,编译,综合,布局布线,仿真与器件编程于一体的集成设计环境。
QuartusII软件支持基于VHDL与VerilogHDL等硬件描述语言的设计和基于图形的设计,内部嵌有VHDL和VerilongHDL的逻辑综合器,也支持利用第三方的综合工具进行逻辑综合。
进行设计仿真时,既可以利用QuartusII软件自己的仿真工具,也可以利用如ModelSim等第三方仿真工具。
QuartusII软件除了进行基于FPGA的一般的数字系统开发外。
还可以与MATLAB和DSPBuilder结合,进行基于FPGA的DSP系统开发;使用内嵌的SOPCBuilder设计工具,配合NiosIIIDE集成开发环境,进行基于NiosII软核处理器的嵌入式系统开发。
QuartusII软件的设计流程遵循典型的FPGA设计流程,包括设计输入,综合,布局布线,时序分析,仿真验证,编程配置等设计步骤,以及与布局布线有关的功耗分析,调试,工程更改管理,与时序分析和仿真验证有关的时序逼近。
2FIR数字滤波器的设计方法理论部分
2.1引言
数字滤波器的功能一般是用来变换时域或者频域中某些要求信号的属性,滤除信号中某一部分频率分量。
经过数字滤波器的信号是让其频谱与数字滤波器的频率响应相乘从而得出新的结果。
经过一个线性卷积过程,从时域上输入信号与滤波器的单位冲击响应作一个卷积和。
下面是卷积定义式:
(1)
LTI数字滤波器在一般情况下分为有限脉冲响应(Finiteimpulseresponse)和无限脉冲响应(Infiniteimpulseresponse),FIR数字滤波器的设计方法和IIR滤波器的设计方法有很大的差别。
因为其设计方向是选择有限长度的h(n),使频率响应函数H(e
)满足指标。
数字滤波器正在用直接的电子计算机规范和算法进行分析的方式来逐渐代替传统的模拟滤波器的RLC元器件和放大电路。
2.2FIR数字滤波器的基础
首先介绍FIR数字滤波器基本原理,通常情况下一般数字滤波器的N阶FIR数字滤波器基于输入信号x(n)的表达式为:
(2)
这个公式给我们了一个非常明了的直接型网络结构,该结构表现出N个乘法器,每次采样y(n)的内容是n次乘法和n-1次加法,然后做乘累加之和。
如图2-1所示:
图2-1FIR滤波器直接型网络结构
从DSP的介绍中,第一类线性相位对h(n)的约束条件:
(3)
(4)
由公式(3),(4)我们可以推出:
(5)
移相并利用三角公式化简得到:
(6)
从数字信号处理学科中知道函数
关于求和区间的中心(N-1)/2奇对称,于是我们要求
和h(n)满足如下条件:
其中对应的有
(7)
图2-2线性相位FIR滤波器结构
若h(n)呈现对称特性,即此具有线性相位的滤波器是FIR数字滤波器。
滤波器的基础网络结构可以相互进行转换。
在前面本文已经讨论过,FPGA的实现中将对各种方法进行比较,找出最优设计方式。
从而达到减少资源占有和提高系统作业速度的目的,更好的体现实时性的数字滤波器优势。
2.3数字滤波器的设计原理
在数字信号处理技术的研究中,一般是使用的三种设计方法:
窗函数法,FDATool直接设计法,程序编译法。
本文首先使用窗函数和Matlab软件共同进行设计。
随着软件技术的不断发展,Matlab软件能给设计者带来的数字信号处理工作已经非常的完善和多样了,设计者可以利用Matlab软件进行数字滤波器的设计和仿真,而且还可以用这款软件进行设计的优化。
数字滤波器的一般设计步骤如下:
1.指标的确定
做任何工程或者设计,设计者都必须要有一个期望的指标用来限制设计范围。
在很多的实际应用中,设计者常常都是使用数字滤波器做选频的工作。
因此,指标的形式一半在频域中给出相位响应和幅度。
相位响应的指标形式,一半是指系统在通频带中药有线性相位。
幅度指标:
绝对指标,它给出对幅度响应函数的要求,一般用于FIR滤波器的设计。
相对指标,以分贝值的形式给出具体限制。
2.逼近目标
设计者做高频的时候大概都有一个模式,就是首先得到技术指标,然后利用我们的技术和工具让我们的产品去逼近这个指标。
同理我们首先建立以个目标的数字滤波器模型。
一般情况下都是采用理想的数字滤波器模型,然后去逼近我们想要的目标数字滤波器参数。
3.计算机仿真和性能优化分析
在工作中我们发现通过
(1)、
(2)之后本文会得到以差分、系统函数或者冲击响应这三种方式描述的滤波器。
这个时候设计者可以利用计算进行仿真,在系统中分析技术指标和滤波结果是否是希望得到的结果。
图2-3各种理想数字滤波器的幅度频率响应
2.4Matlab直接FDAtool设计方式解析
FDATool(FilterDesign&AnalysisTool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(FilterDesignToolbox)。
FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。
它操作简单,方便灵活。
FDATool界面总共分两大部分,一部分是DesignFilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
DesignFilter部分主要分为:
FilterType(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。
DesignMethod(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、ChebyshevTypeI(切比雪夫I型)法、ChebyshevTypeII(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。
FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括SpecifyOrder(指定阶数)和MinimumOrder(最小阶数)。
在SpecifyOrder中填入所要设计的滤波器的阶数(N阶滤波器,SpecifyOrder=N-1),如果选择MinimumOrder则MATLAB根据所选择的滤波器类型自动使用最小阶数。
FrenquencySpecifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。
它的具体选项由FilterType选项和DesignMethod选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
2.5FDAtool设计模板及设计结果图
FIR8阶低通滤波器总体设计参数
图2-5FIR8阶低通滤波器总体设计参数
滤波器幅频响应
图2-5-1滤波器幅频响应
滤波器相频响应
图2-5-2滤波器相频响应
滤波器的幅频和相频响应
图2-5-3滤波器的幅频和相频响应
冲击响应
图2-5-4冲击响应
阶跃响应
图2-5-5阶跃响应
零点响应
图2-5-6阶跃响应
滤波器系数Export对话框
图2-5-7滤波器系数Export对话框
滤波器系数
图2-5-8滤波器系数
3FIR数字滤波器的设计方法程序分析部分
3.1QuartusⅡ及VerilogHDL介绍
QuartusII属于Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
VerilogHDL是目前应用最为广泛的硬件描述语言。
VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。
该语言适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述。
VerilogHDL进行设计最大的优点是其工艺无关性。
这使得我们在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。
VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数字电路而用来描述ASIC和FPGA的设计之用。
VerilogHDL的设计者想要以C编程语言为基础设计一种语言,可以使工程师比较容易学习。
3.2实际滤波器程序设计(8阶FIR数字低通滤波器)
FPGA实现FIR滤波器,首先进行指标选定和Matlab软件参数仿真,然后执行基于Verilog方法的硬件实现中用移位方法代替了乘法运算。
设计要求:
(1)采样频率Fs=4.8KHz
(2)截止频率Fc=10.8KHz
(4)窗口类型为kaiser窗,
=0.5
(5)滤波器长度为8
3.2.1VerilogHDL的实现
这个方法的实现中,使用了移位代替乘法运算来实现滤波器乘加的方法。
由于滤波器系数都是小数,所以我们先左移7位(即放大128倍),再用相应的移位来近似这些系数,最后经过乘加运算得到结果,对这个结果再右移7位(即缩小128倍)即可得出正确的结果。
各个系数的移位情况如下:
其中2表示左移1位,1表示不移位,0.5表示右移1位,其他依次类推:
128×h(0)=128×0.036=0.4608=0.5-0.03125
128×h
(1)=128×0.0127=1.6256=1+0.5+0.125
128×h
(2)=128×0.0417=5.3376=4+1+0.25+0.625+0.03125
128×h(3)=128×0.0878=11.2384=8+4-1+0.25
128×h(4)=128×0.1318=16.8704=16+1-0.125
128×h(5)=128×0.8500=108.800=128-16-4+0.25+0.0625
得到:
sum<=(t3<<6)-(t3<<3)+t3+{t3[7],t3[7],t3[7:
2]}
+(t2<<4)+(t2<<3)+{t2[7],t2[7:
1]}+{t2[7],t2[7],t2[7:
2]}+{t2[7],t2[7],t2[7],t2[7],t2[7:
4]}
-(t1<<2)-(t1<<1)-{t1[7],t1[7:
1]}-{t1[7],t1[7],t1[7],t1[7],t1[7],t1[7:
5]}
-(t0<<3)-(t0<<2)+t0-{t0[7],t0[7:
1]}-{t0[7],t0[7],t0[7],t0[7],t0[7],t0[7:
5]};
//64-8+1+0.25=57.262
//16+8+0.5+0.25+0.0625=24.8192
//4+2+0.5+0.03125=6.5536
//8+4-1+0.5+0.03125=11.5328
//-0.0901,-0.0512,0.1939,0.4474,0.4474,0.1939,-0.0901,-0.0512
//-11.5328,-6.5536,24.8192,57.2672,57.2672,24.8192,-6.5536,-11.5328,
根据以上所有思想我们可以得出以下8阶FIR数字滤波器的Verilog程序如下:
modulefir(clk,rst,x,y);
inputclk,rst;
input[7:
0]x;
output[7:
0]y;
reg[7:
0]y;
reg[7:
0]tap0,tap1,tap2,tap3,tap4,tap5,tap6,tap7;
reg[7: