您现在的位置:首页 >> ★免费资源 >> 毕业论文下载 >> 内容

基于FPGA的FIR数字滤波器设计

时间:2017-5-2 4:51:45 点击:

  核心提示:基于FPGA的FIR数字滤波器设计...

1

1.1本课题研究意义

在现代通信信号处理领域中,随着各种精密计算和快速计算的发展对信号处理的实时性、快速性的要求越来越高。以往的模拟滤波器无法克服电压漂移、温度漂移和噪声等问题,从而带来了许多误差和不稳定因素。而数字滤波器具有稳定性高、精度高、设计灵活、实现方便等突出优点。

FPGA元器件在高速并行处理和数据传输中有独特优势,FPGA正在前端信号处理中越来越多地代替ASICDSP。我们需要的就是这种设计周期短,功能密度高,重组时间短的元器件。

本文在FPGA元器件的基础上,实现现代FIR数字滤波器功能。并且研究多种快速的FIR数字滤波器的理论设计思想和程序设计方法。

1.2国内外研究现状分析

1985XilinX公司生产出了第一块FPGA元器件,由于它有着集成度高、方便易用、开发和上市周期短的绝对优势,使得FPGA器件在数字设计和电子生产中得到迅速普及和应用,发展潜力十分巨大。现在FPGA已经发展到可以利用硬件乘加器、片内储存器、逻辑单元、流水处理技术等特有的硬件结构,高速完成FFT FIR 、复数乘加、卷积、三角函数以及矩阵运算等数字信号处理。这样可以完成信号处理的主要技术,如中频采样、参数估计、自适应滤波、脉冲压缩、自适应波束形成和旁瓣对消等。

1.3研究思路

通过对目前数字滤波器的几种实现方法的简单分析,本文认为基于FPGA的数字滤波器具有许多优点,本文考虑到信息技术的发展对于数字滤波器的要求越来越高,而目前FIR数字滤波器的性能还不完善,于是选择了基于FPGA的数字滤波器作为主要研究内容,通常滤波器在进行数据处理时用到了卷积运算,在设计中的解决这些乘法运算的思路是将它们转换成加减法,这是目前解决乘法运算的主流思想。设计初期在Matlab下对滤波器原理进行证明包括(零极点图、时域和频域分析图等),分析FIR数字滤波器的多种理论设计思想和窗函数选择方法,在设计后期对FIR数字滤波器的小数乘法问题进行单独论证。然后对分析出来的问题进行论证和解决,最后在QUARTUS中进行仿真验证。

1.4相关概念说明

数字滤波器(Digital filter)是由数字乘法器、加法器和延时单元组成的一种装置。其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。可认为是一个离散时间系统按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置FIRFinite Impulse Response )由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。当我们处理有限的离散数据时,线形系统的响应(包括对冲击的响应)也是有限的。若线性系统仅是一个空间滤波器,则通过简单地观察它对冲击的响应,我们就可以完全确定该滤波器。通过这种方式确定的滤波器称为有限冲击响应(FIR)滤波器。

 modulefix_mult ( clkrst_nin_ain_bx1x2x3x4x5x6x7y_out );

 

  inputclkrst_n;//时钟和复位信号

  input[31:0]   in_ain_b;//输入的被乘数和乘数

  output[31:0]   y_out;//输出的乘积

 /*寄存器类型变量 为了能更清楚的了解全处理过程,

 特地设计为输出的,不然仿真可能会被综合掉*/

 output[15:0]   x1x2x3x4;

 output[0:0]    x5;

 output[29:0]   x6;

 output[31:0]   x7;

/////////////////////////////////////////////////////

 reg[31:0]   y_out;

 reg[15:0]   x1x2x3x4;

 reg[0:0]    x5;

 reg[29:0]   x6;

 reg[31:0]   x7;

 always@ (posedgeclk )

 begin

 if(!rst_n )//复位时,全部寄存器变量清零

 begin

 x1<=16'b0;

 x2<=16'b0;

 x3<=16'b0;

 x4<=16'b0;

 x5<=1'b0;

x6<=30'b0;

 x7<=32'b0;

 y_out<=32'b0;

 end

 else/

 begin

 x1<=in_a[31:16];//截取16位被乘数,

 x2<=in_b[31:16];//截取16位乘数

 x3<=(x1[15]==0)?x1:{x1[15]~x1[14:0]+1'b1};  //据最高位判断是否为负数,

 //若负数则把补码转成原码

 x4<=(x2[15]==0)?x2:{x2[15]~x2[14:0]+1'b1};

 x5<=x3[15]^x4[15];//两数符号位相异或,得到乘积的符号位

 x6<=x3[14:0]*x4[14:0];//两数的数据位相乘

 x7<={x5x61'b0};  //乘积由1位符号位和30位数据位及1位无关组成;

 //因为是小数,往低位生长,所以无关位放置最低位

 y_out<=(x7[31]==0)?x7:{x7[31]~x7[30:0]+1'b1};

 end

 end

 endmodule 

 

Tags:FIR 
作者:FIR 来源:FIR
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
  • 上一篇:图像滤波方法的探讨及Matlab实现
  • 下一篇:没有了
  • 相关评论
    发表我的评论
    • 大名:
    • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做(www.hslogic.com) © 2018 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment