FIR滤波器设计.doc_第1页
FIR滤波器设计.doc_第2页
FIR滤波器设计.doc_第3页
FIR滤波器设计.doc_第4页
FIR滤波器设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

FIR滤波器设计徐威宁波大学、信息科学与工程学院、通信112班、116040040摘要:FIR滤波器是在数字信号处理中最常用的两种基本的滤波器之一。FIR是有限冲击响应的简称。有限冲击响应表明在滤波器中没有反馈。本次实验是利用FIR Compiler 进行设计FIR滤波器。再利用实验箱中的ADC和DAC,输入一个模拟信号,通过AD采集,数据输入给FIR滤波器进行滤波,然后输出,进行DA转换,通过示波器观察和验证实验结果。关键字:FIR、FIR Compiler、低通、ADC、DAC。1、 设计任务与要求设计任务,利用FIR Compiler 进行FIR滤波器的设计,要求:1) 滤波器采样率是1MHz。2) 滤波器的类型为低通滤波器,低通FIR滤波器的截至频率是0.15MHz。3) 滤波器的衰减是大于20dB的。4) 滤波器模块输入数据为8bit,模块输出为12bit,其他参数自行设置。2、 总体方案设计与论证利用FIR Compiler设计FIR滤波器,首先要对滤波器模块进行配置,然后在Quartus中调用设计好的模块,连接好相应的信号即可仿真和使用。先对该模块就行仿真,之后再利用实验箱中的ADC和DAC模块,输入一个波形,通过示波器观察滤波后的波形,验证滤波器的设计是否符合实验要求,再对滤波器模块适当的调整和改进。FIR滤波器模块通过调用FIR IP(FIR Compiler),运行quartus的tools中的MegaWizard Plug-In Manager建立该模块。对FIR滤波器的模块的配置有所了解后选择ADC和DAC的型号,然后完成设计。3、 单元电路的设计与论证3.1 FIR滤波器模块根据实验手册,FIR滤波器模块的设计过程如下。调用FIR IP(FIR Compiler)A.运行ToolsMegaWizard Plug-In Manager,建立一个新的模块.B.选择DSPFiltersFIR Compiler v8.0,选择HDL和模块nam. c.Next,弹出模块配置窗。D.按Step1,进行滤波器模块配置。 配置图解如图一。下面对图中的设置进行介绍。在初次配置时,先点击New Coefficient Set,设置新的滤波器系数。在程序调试时,可以点击Edit Coefficient Set对现有的滤波器系数已经设置进行更改。Filter Type(滤波器类型)选择“LowPass”,设置为低通滤波器;Window Type(窗口类型),根据实验要求的衰减进行选择,这里选择Hamming类型;Coefficients(滤波器阶数),这里选择默认的37;Sample Rate(采样率),根据实验要求的采样频率1MHz,填写“1.0E6”;Cutoff Freq(截止频率),填写“1.0E5”,即实验要求中的0.1MHz的截止频率;设置完成后点击“Apply”,应用之后,回到图一的设置界面;Input Number System(输入数据类型)中选择“Unsigned Binary”(不带符号数),因为根据实验箱,选择的ADC是八位并行输入,是不带符号数的;Output Number System(输出数据类型)中选择“Custom Resolution”(自定义),然后按照实验要求的选择十二位数据输出;MSB中设置“Truncate”,LSB设置为“round”,这里是设置输出数据的格式,可以查阅FIR IP的使用说明;其他设置保持系统默认不变,应用设置。E.单击“Step2”,进入仿真设置。Language选择“VHDL”语言;Simulation Clock Period(仿真时钟周期)选择20.0ns。F.完成后,单击“Step3”生成滤波器模块及相应的文件,并显示模块文件、引脚说明窗口: J.在Quartus II调用该模块,连接相应信号即可仿真和使用。 3.2 ADC(TLC5510A)模块根据实验箱的使用手册,我们选用的是采样率最高为20MHz的8位并行高速ADC TLC5510A。可编程芯片的PIO48输出信号控制ADC1的输出使能信号OE;PIO15为转换时钟信号CLK;AD转换结果送至PIO16PIO23,并且同时显示在数码管1和数码管2上。ADC1的模拟信号输入端在实验箱的左侧(见图17),允许输入05V的信号。 TLC5510A是CMOS、8位并行、20MSPS、低功耗模数转换器,它采用半闪速结构(semi-flash architecture),单电源5V供电,最大转换速率20MSPS,内含采样和保持电路,具有高阻抗的并行接口和内部基准电阻,转换数据的等待时间为2.5个时钟。该AD转换器速度快,精度高,可用于高速模数转换的场合。 TLC5510A工作时序图如图5所示,可以看出,N时刻输入电压在第一个CLK的下降沿被采样,经过2.5个时钟周期,在第四个时钟的输出,即信号从被采集到输出共需2.5个时钟周期。编程时可以在每个时钟周期的下降沿读取转换好的数据。ADC5510A的转换关系是:根据实验方案中的功能说明,这里ADC模块应该为FIR滤波器模块的上行模块。除了完成对输入的模拟信号进行采样和输出八位并行数据之外,还要将数据传送给FIR滤波器模块,对滤波器的相关引脚进行控制。下面用VHDL语言编写程序,完成以上功能。ADC模块的VHDL语言代码在附录中。下面对ADC模块的引脚进行说明。输入引脚:clkp:系统时钟1MHz,也是并行ADC5510A的工作时钟,采样率跟FIR滤波器模块保持一致。sink_ast_ready:根据FIR滤波器的管教说明,FIR滤波器的输出引脚ast_sink_ready,在当前周期内如果滤波器可以接受数据,该管脚会被置位。于是在此ADC模块中,在FIR滤波器模块可以接受数据时才会发送数据。即sink_ast_ready输入为“1”,输出ADC采集的八位并行数据。datain7.0:AD采集的八位并行数据输入。输出引脚:clk_lv:输出给FIR滤波器模块的同步时钟信号;reset_n:输出给FIR滤波器的同步时钟复位信号;sink_ast_data7.0:输出到FIR滤波器的ADC八位并行数据;sink_ast_valid:置位来通知FIR滤波器目前的输入数据是有效的;source_ast_valid:置位来通知FIR滤波器,下行DAC模块能够接受数据;oe:ADC5510A的输出使能位;clk_adp:ADC5510A的工作时钟;clk_for_da:FIR滤波器下行DAC模块的同步时钟。3.3 DAC(THS5651)模块DAC THS5651是转换率为100MHz的10位并行高速DAC,可编程器件的PIO49为DAC提供时钟信号;PIO38PIO47为DAC输入数据;转换后的模拟信号输出端口在实验箱的中部(见图1-15),并可通过电位器调节幅度。 THS5651是CMOS、10位并行、100MSPS 数模转换器,5V单电源供电,差分电流输出可达20mA,该DAC转换器速度快,精度高,可广泛适用于有线和无线信号发送,高速数模转换等场合。其工作时序图如下,可以看到在CLK的上升沿锁存数字信号,在下一个时钟将转换好的模拟信号输出。按实验箱电路接法,DA转换关系为: 可以通过调节电位器来改变输出电压幅度。在实验箱的模式3,ADC和DAC可以单独使用,试用于此系统。此DAC模块完成将FIR滤波器输出的数据转化为模拟信号。模块的VHDL语言在附录中。模块示意图如图9所示。下面是DAC模块的引脚说明。输入引脚:source_ast_data11.0:接收FIR滤波器输出的十二位数据;clk_da:输入的同步DAC工作时钟;source_ast_valid:接受FIR发送的置位信号,通知下行模块,即DAC模块输入数据是有效的。输出引脚:data_for_da:输出给DAC的十位并行数据,DA转化后成为模拟信号;clk_for_daa:DAC THS5651 同步工作时钟,“1MHz”。3.3系统示意图与引脚配置按照功能分析,完成系统的电路,并进行引脚配置。系统示意图与引脚配置如下。保存后进行编译程序,对程序的功能进行调试,在示波器中观察实验结果。4、 系统测试与分析按照实验要求,用正弦波测试验证截至频率和幅值衰减。实验结果如下图所示。观察实验波形,分析实验数据。图11是50KHz正弦波经过FIR滤波器后的波形,观察示波器,可知峰峰值为2.96V。是低通滤波器通带内能达到的最大峰峰值中的一个频率点。从图中也可以看出,在频率为50KHz时,一个周期内大约有20个数据点,满足实验要求中的0.1MHz采样率。图12是100KHz正弦波经过FIR滤波器后的波形,观察示波器,可知峰峰值为1.54V。一个周期中有十个数据点,也满足实验的0.1MHz的采样率要求。根据截止频率的定义,截止频率使输出信号将至最大值的0.707倍。跟实验数据1.54V存在较大误差。分析原因,可能是滤波器的窗口类型对此有影响。于是检查滤波器系数设置,见图16。从图16,就可以看出,在0.1MHz的截止频率处,衰减是大于的,看成有如下关系。与实验结果基本一致。图13是130KHz正弦波通过FIR滤波器后的波形,示波器测得的频率是不正确的,正确的频率计算过程如下。峰峰值在该频率点已经很小了。从图16,滤波器系统设置局部图中也可以看出的频率约为130KHz。所以,经过实验的验证,实验结果跟滤波器系数设置一致,但与实验要求的截止频率有所误差,要进一步改进,才可以达到实验要求。5、 实验结论从本次实验中,学会了用FIR IP对FIR滤波器模块的设计,过程简单清晰,降低实验程序开发难度。而且此模块设置完成后,通过此滤波器的滤波效果,经验证,是与设计时设置完全一致的。在调用过程中只需要对滤波器系数及其他配置进行合理设置即可。对实验箱模式三下的ADC(TLC5510A)和DAC(THS5651)的原理有所了解,学会了使用这两个模块,并达到预期目标。在实验的过程中也有写不足,如在对FIR滤波器模块的设置中,没有仔细查阅相关文献,对所有设置逐项进行了解,导致在输入数据类型中选择了带符号数,直接影响了实验结果。滤波器系数最终在截止频率的实验要求有所误差,也有待改进。需要进一步了解滤波器类型的相关知识。附录:1.ADC模块VHDL语言代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity parad isport(clkp :in std_logic; sink_ast_ready:in std_logic;datain:in td_logic_vector(7 downto 0); clk_lv :out std_logic;reset_n:out std_logic;sink_ast_data:out std_logic_vector(7 downto 0);sink_ast_valid:out std_logic;source_ast_ready:out std_logic;oe:out std_logic;clk_adp:out std_logic;clk_for_da:out std_logic);end parad;architecture behaveparad of parad issignal q:std_logic_vector(7 downto 0);signal ready:std_logic;beginreset_n=1;source_ast_ready=1;sink_ast_valid=1;clk_adp=clkp;clk_lv=clkp;oe=0;q=datain;ready=sink_ast_ready;clk_for_da=clkp;process(clkp,ready)beginif(ready=1) thenif(clkpevent and clkp=0) thensink_ast_data=q;end if;end if;end process;end behaveparad;2. DAC模块VHDL语言代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity parada isport(source_ast_data:in std_logic_vector(11 downto 0);clk_da:in std_logic;source_ast_valid:in std_logic;data_for_da:out std_logic_vector(9 downto 0);clk_for_daa:out std_logic);end parada;architecture behavparad of parada issig

温馨提示

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

评论

0/150

提交评论