还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
FIR滤波器设计徐威宁波大学、信息科学与工程学院、通信112班、116040040摘要FIR滤波器是在数字信号处理中最常用的两种基本的滤波器之一FIR是有限冲击响应的简称有限冲击响应表明在滤波器中没有反馈本次实验是利用FIRCompiler进行设计FIR滤波器再利用实验箱中的ADC和DAC,输入一个模拟信号,通过AD采集,数据输入给FIR滤波器进行滤波,然后输出,进行DA转换,通过示波器观察和验证实验结果关键字FIR、FIRCompiler、低通、ADC、DAC
1、设计任务与要求设计任务,利用FIRCompiler进行FIR滤波器的设计,要求1)滤波器采样率是1MHz2)滤波器的类型为低通滤波器,低通FIR滤波器的截至频率是
0.15MHz3)滤波器的衰减是大于20dB的4)滤波器模块输入数据为8bit,模块输出为12bit,其他参数自行设置
2、总体方案设计与论证利用FIRCompiler设计FIR滤波器,首先要对滤波器模块进行配置,然后在Quartus中调用设计好的模块,连接好相应的信号即可仿真和使用先对该模块就行仿真,之后再利用实验箱中的ADC和DAC模块,输入一个波形,通过示波器观察滤波后的波形,验证滤波器的设计是否符合实验要求,再对滤波器模块适当的调整和改进FIR滤波器模块通过调用FIRIPFIRCompiler,运行quartus的tools中的MegaWizardPlug-InManager建立该模块对FIR滤波器的模块的配置有所了解后选择ADC和DAC的型号,然后完成设计
3、单元电路的设计与论证
3.1FIR滤波器模块根据实验手册,FIR滤波器模块的设计过程如下调用FIRIP(FIRCompilerA.运行Tools\MegaWizardPlug-InManager,建立一个新的模块.B.选择DSP\Filters\FIRCompilerv
8.0,选择HDL和模块nam.c.Next,弹出模块配置窗D.按Step1,进行滤波器模块配置配置图解如图一下面对图中的设置进行介绍在初次配置时,先点击NewCoefficientSet设置新的滤波器系数在程序调试时,可以点击EditCoefficientSet对现有的滤波器系数已经设置进行更改FilterType(滤波器类型)选择“LowPass”,设置为低通滤波器;WindowType(窗口类型),根据实验要求的衰减进行选择,这里选择Hamming类型;Coefficients滤波器阶数),这里选择默认的37;SampleRate(采样率),根据实验要求的采样频率1MHz,填写“
1.0E6”;CutoffFreq截止频率),填写“
1.0E5”,即实验要求中的
0.1MHz的截止频率;设置完成后点击“Apply”,应用之后,回到图一的设置界面;InputNumberSystem(输入数据类型)中选择“UnsignedBinary”(不带符号数),因为根据实验箱,选择的ADC是八位并行输入,是不带符号数的;OutputNumberSystem输出数据类型)中选择“CustomResolution”(自定义),然后按照实验要求的选择十二位数据输出;MSB中设置“Truncate”,LSB设置为“round”,这里是设置输出数据的格式,可以查阅FIRIP的使用说明;其他设置保持系统默认不变,应用设置E.单击“Step2”,进入仿真设置Language选择“VHDL”语言;SimulationClockPeriod仿真时钟周期)选择
20.0nsF..完成后,单击“Step3”生成滤波器模块及相应的文件,并显示模块文件、引脚说明窗口J.在QuartusII调用该模块,连接相应信号即可仿真和使用
3.2ADC(TLC5510A)模块根据实验箱的使用手册,我们选用的是采样率最高为20MHz的8位并行高速ADCTLC5510A可编程芯片的PIO48输出信号控制ADC1的输出使能信号OE;PIO15为转换时钟信号CLK;AD转换结果送至PIO16~PIO23,并且同时显示在数码管1和数码管2上ADC1的模拟信号输入端在实验箱的左侧(见图1—7),允许输入0~5V的信号TLC5510A是CMOS、8位并行、20MSPS、低功耗模数转换器,它采用半闪速结构(semi-flasharchitecture),单电源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采集的八位并行数据datain[
7..0]AD采集的八位并行数据输入输出引脚clk_lv输出给FIR滤波器模块的同步时钟信号;reset_n输出给FIR滤波器的同步时钟复位信号;sink_ast_data[
7..0]输出到FIR滤波器的ADC八位并行数据;sink_ast_valid置位来通知FIR滤波器目前的输入数据是有效的;source_ast_valid置位来通知FIR滤波器,下行DAC模块能够接受数据;oe ADC5510A的输出使能位;clk_adp ADC5510A的工作时钟;clk_for_da FIR滤波器下行DAC模块的同步时钟
3.3DACTHS5651模块DACTHS5651是转换率为100MHz的10位并行高速DAC,可编程器件的PIO49为DAC提供时钟信号;PIO38~PIO47为DAC输入数据;转换后的模拟信号输出端口在实验箱的中部(见图1-15),并可通过电位器调节幅度THS5651是CMOS、10位并行、100MSPS数模转换器,5V单电源供电,差分电流输出可达20mA,该DAC转换器速度快,精度高,可广泛适用于有线和无线信号发送,高速数模转换等场合其工作时序图如下,可以看到在CLK的上升沿锁存数字信号,在下一个时钟将转换好的模拟信号输出按实验箱电路接法,DA转换关系为可以通过调节电位器来改变输出电压幅度在实验箱的模式3,ADC和DAC可以单独使用,试用于此系统此DAC模块完成将FIR滤波器输出的数据转化为模拟信号模块的VHDL语言在附录中模块示意图如图9所示下面是DAC模块的引脚说明输入引脚source_ast_data[
11..0]接收FIR滤波器输出的十二位数据;clk_da输入的同步DAC工作时钟;source_ast_valid接受FIR发送的置位信号,通知下行模块,即DAC模块输入数据是有效的输出引脚data_for_da输出给DAC的十位并行数据,DA转化后成为模拟信号;clk_for_daa DACTHS5651同步工作时钟,“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、实验结论从本次实验中,学会了用FIRIP对FIR滤波器模块的设计,过程简单清晰,降低实验程序开发难度而且此模块设置完成后,通过此滤波器的滤波效果,经验证,是与设计时设置完全一致的在调用过程中只需要对滤波器系数及其他配置进行合理设置即可对实验箱模式三下的ADC(TLC5510A)和DAC(THS5651)的原理有所了解,学会了使用这两个模块,并达到预期目标在实验的过程中也有写不足,如在对FIR滤波器模块的设置中,没有仔细查阅相关文献,对所有设置逐项进行了解,导致在输入数据类型中选择了带符号数,直接影响了实验结果滤波器系数最终在截止频率的实验要求有所误差,也有待改进需要进一步了解滤波器类型的相关知识附录
1.ADC模块VHDL语言代码libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_unsigned.all;entityparadisportclkp:instd_logic;sink_ast_ready:instd_logic;datain:intd_logic_vector7downto0;clk_lv:outstd_logic;reset_n:outstd_logic;sink_ast_data:outstd_logic_vector7downto0;sink_ast_valid:outstd_logic;source_ast_ready:outstd_logic;oe:outstd_logic;clk_adp:outstd_logic;clk_for_da:outstd_logic;endparad;architecturebehaveparadofparadissignalq:std_logic_vector7downto0;signalready: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;processclkpreadybeginifready=1thenifclkpeventandclkp=0thensink_ast_data=q;endif;endif;endprocess;endbehaveparad;
2.DAC模块VHDL语言代码libraryieee;useieee.std_logic_
1164.all;useieee.std_logic_unsigned.all;entityparadaisportsource_ast_data:instd_logic_vector11downto0;clk_da:instd_logic;source_ast_valid:instd_logic;data_for_da:outstd_logic_vector9downto0;clk_for_daa:outstd_logic;endparada;architecturebehavparadofparadaissignalvalid:std_logic;signaldatada:std_logic_vector9downto0;beginvalid=source_ast_valid;datada=source_ast_data10downto1;clk_for_daa=notclk_da;processvalidclk_dabeginifvalid=1thenifclk_daeventandclk_da=0thendata_for_da=datada;endif;endif;endprocess;endbehavparad;。