基于matlab和FPGA联合仿真的FIR低通滤波器设计报告_第1页
基于matlab和FPGA联合仿真的FIR低通滤波器设计报告_第2页
基于matlab和FPGA联合仿真的FIR低通滤波器设计报告_第3页
基于matlab和FPGA联合仿真的FIR低通滤波器设计报告_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、FIR低通滤波器设计报告1 .设计内容本设计是基于FPGA的一个 FIR低通滤波器设计,给定一段有高频干扰的信号Hnoise.wav ,要求使用 matlab设计出一个低通滤波器滤除其干扰频率,并取出 10000到 10160点进行时频分析.然后使用verilog 语言编写出滤波器,联合 modelsim进行编译仿真,并将结果与 matlab结果进行比照.2 .设计原理FIR滤波器响应(简称FIR)系统的单位脉冲响应 h(n)为有限长序列,系统函数H(z)在有限z平面上不存在极点,其运算结构中不存在反应支路,即没有环路.如果 h(n)的长度为N,那么它的系统函数和差分方程一般具有如下形式:根据

2、差分方程直接画出 FIR滤波器的结构,称为直接型结构.如下图:图2.1 FIR滤波器直接结构FIR滤波器的特点:单位脉冲响应序列为有限个;可快速实现;可得到线性相位;滤波 器阶数较高.对线性时不变系统保持线性相位的条件是:单位脉冲响应为偶对称或奇对称. 即:为设计线性滤波器,应保证 h(n)为对称的.1)假设N为偶数,其线性相位 FIR滤波器的对称结构流图:图2.2假设N为偶数线性相位FIR滤波器的对称结构流图图中:“ +1 对应偶对称情况,“ -1 对应奇对称f#况.当 n为奇数时,最后一 个支路断开.2)假设N为奇数,其线性相位 FIR滤波器的对称结构流图:图2.3 N为奇数线性相位 FI

3、R滤波器的对称结构流图在本设计中,我们采用线性FIR低通滤波器,所采用的阶数N=&所以是偶对称的,估采取图2.2的结构,其中“土 1 “取+ 1.3 .设计思路首先要用matlab对给定的信号进行时频分析来确定干扰信号的中央频率,然后再设计 出相应的数字滤波器进行滤波,最后要在FPGA实现FIR滤波器.首先要确定滤波器的抽头系数.其系数确实定,我们可以通过两种方法来实现:第一种就是通过matlab编写FIR滤波器程序,然后直接导出抽头系数 “h (n),另外一种方法就是使用matlab自带的FDATOOL简便地设计一个 FIR滤波器,然后导出系数.考虑到要更直观地描述FIR滤波器的设计,我采用

4、了第二种方法,用 fdatool设计滤波器并导出参数.设计好滤波器后,接着要用matlab对给定的信号进行采样,保存,量化,导出以供FPGA的FIR滤波器模块使用.做好准备工作后,就可以在QUARTUSII里面编写Verilog 代码了.由于是硬件描述语言, 所以设计的思路很简单,就是通过把输入序列移位,然后首位对称相加再乘以抽头系数,然后把相乘结果再相加最后给输出.其中涉及的难点是FPGA寸有符号小数的乘法处理局部.在QUARTUSII编写好模块之后,就要用到modelsim来对设计进行仿真.对于仿真信号的输入,我们直接使用系统函数 $readmemh()来读取matlab产生的信号采样值,

5、 然后通过时 钟的驱动一个一个输入到FIR滤波器模块,最后在 modelsim中显示滤波器的输出结果.验证的最后一步,就是要把modelsim输出的仿真结果用 matlab进行绘图,和之前matlab 程序的输出结果进行比拟,从而验证滤波器的设计是否成功.4 .设计过程1)对信号进行时频分析语音信号是非平稳的随机过程,频率会随着时间而变化.在语音信号处理研究领域,通常用短时间的傅里叶变换(STFT)来分析其时域和频率特性,也就是在20ms50ms以内,可以将语音信号看成是平稳的随机过程.平稳的随机过程是功率信号,可以用功率谱来描述.所加的噪声干扰是单音干扰,单音干扰是周期信号.这里提取了20m

6、s的语音信号来分析其时域和频域特性,由于采样频率是8000Hz,因此我们利用了 160个采样点,起始点在第10001 点,结束点在第 10160点.图4.1滤波前的时域图图4.2滤波前的频谱图通过上图可以看出信号在 3800Hz左右的地方受到严重的干扰.2)使用matlab设计FIR滤波器用matlab设计线性FIR滤波器,首先要确定其指标,在本设计里,我们规定滤波器的 指标如下:阶数 N=34,抽样频率fs=8000Hz,截止频率为3300用窗函数设计FIR滤波器, 窗函数选择汉明窗.其幅频响应如下:图4.3滤波器幅频响应可以导出滤波器抽头系数 h (n)为:由于FPGM支持浮点数的运算,所

7、以我们采用定点数的格式来量化抽头系数.对于16位的输入数据,我们这里采用 Q11的定点小数格式,即11位小数位,4位整数位,1位符号位.将抽头系数乘以 2A11可得:hn=1-34-1-6 15 -15 029 -52 4116 -102162 139-116162 -10216 41 -52 290-1515 -6 -14-31这样我们就得到了 34阶FIR滤波器的量化系数了.确定好FIR滤波器的系数了,我们用 matlab对信号进行滤波.图4.4滤波后的信号时域图图4.5滤波后的信号频谱图可以看出信号的干扰已被滤除,接下来,就先把信号的采样值进行移位量化处

8、理,然后保存到txt文件,供后续仿真使用,具体 matlab代码如下:值得一提的是此处还需要将数据转换成16进制的格式才可以由 modelsim直接读取.具体可以matlab里使用dec2hex语句进行转换.图4.6 matlba命令将数据导出到txt中3)用Verilog编写滤波器模块由于Verilog是一种行为描述语言,所以用来描述FIR的结构是很方便的,其关键程序就是 有符号小数的乘法处理模块.为了方便后续的仿真,整一个FIR滤波器程序可以分为两个部分:FIR滤波器主程序以及有符号小数的乘法模块.(2) FIR滤波器主程序:其主程序的变量定义如下:图4.7主程序变量其中输入数据和滤波器的

9、抽头系数,都是16位,所以相加结果仍然是 16位.相乘的结果用32位表示.为了预防相乘再相加后数据的溢出,我们在这里把存放相乘再相加的结果扩大了 2位,用到34位,然后最后的输出,在原来的根底上再扩大1位,35位的输出.在最后的输出中,可以把低位去掉,只保存假设干高位,但这里只需要仿真出结果便可,所以没 有进行截断处理,然而在实际工程中,由于数位的限制,还是要注意这点.FIR主程序就是描述图2.2的FIR滤波器结构,其行为描述,具体可以用以下代码实现:其中x1x34通过前一个值对后一个值的赋值,可以实现移位操作; 而s1s17是用来存放首位对称相加的结果;然后y1y17是乘法输出的结果, 通过

10、y1到y17的累加,最后输出 到结果out.其中乘法的运算,我们调用17次乘法模块(由于线性 FIR滤波器是对称结构,所以可以只进行34/2=17次的乘法运算.(3)乘法模块对于有符号的小数运算,在FPGA!面,其实是和有符号整数的运算是一样的. 只是定点数的小数点的位置,我们需要牢记,在最后输出结果的时候,要适当的进行移位.由于负数在Verilog中是以补码形式保存的,所以在输入16位有符号数的时候,在进行相乘之前,要把负数变为原码再相乘,而正数的补码就是其本身,所以不用转换.然后把符号位提出来,进行异或运算,得到输出的符号位,再把有效数位的原码进行相乘,最后得 到1位符号位和30位相乘结果

11、.为了补全 32位,可以在最低位加上一个无关位0.最终输出如果是负数,还需要把它变成补码的形式输出.至此,一个有符号的小数乘法运算就完成了.根据以上思路,我们可以写出出乘法模块的代码:5 .分析验证设计好以上模块后,可以进行编译综合了.最后的编译综合结果如下列图所示:图5.1编译结果从上图可以看出,最后编译成功,程序设计没有语法错误.但具体要测试其工作是否正常,我们接下来,就需要用到modelsim对其进行仿真.我们要写testbench文件,就需要三个输入,一个输出.其中一个输入是时钟,一个复位信号,还有随时钟变化的地址输入和最后的输出.根据此可以写出测试文件: 由于最后输出的数是补码,为了

12、能在modelsim的下方报告栏能显示出正常的十进制负数,我们定义了一个有符号存放器out1 ,然后通过$display 命令把结果根据时钟一个个输出到报告栏里.仿真得到的波形和结果如下列图所示:图5.2modelsim仿真波形Modelsim会自动把滤波结束的数据写入到一个fir_result 文件中去用于matlab绘图.图5.3 modelsim 产生的输出文件可以看到数据中出现了很多2147xxxxxx的数,这些数其实是补码的的十进制形式.运算的过程中出现的 bug,暂时还没法解决.但是可以用matlab将数据变成正常的形式.只要执行下面命令即可解决:由于我们没有对输出的 35位数据进行截断处理,所以在最后的输出结果, 我们要处以2A23.这是由于两个 Q11的小数相乘,其小数位扩大了11位,变成了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论