您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > fir滤波器的fpga实现
西南科技大学课程设计报告课程名称:设计名称:FIR滤波器的FPGA实现姓名:学号:班级:指导教师:起止日期:课程设计任务书学生班级:学生姓名:学号:设计名称:起止日期:指导教师:设计要求:利用MATLAB软件设计一数字频率10MHz的低通滤波器并用FPGA实现它,具体包括:1)阐述FIR的基本原理和基本结构;2)用MATLAB软件设计3dB带宽0.2,阻带抑制≥45dB的FIR滤波器;研究不同滤波器设计方法滤波器抽头数和滤波器平坦度、带外抑制度、过渡带宽等性能关系;选出符合要求抽头数最少的一种设计;对所设计的FIR系数进行8bit量化,并生成FPGA滤波器系数.coe文件;3)采用QuartusII或ISE等FPGA集成开发软件,通过调用IPcore设计滤波器,采用10MHz工作时钟和50MHz工作时钟两种方式分别实现2)中的滤波器功能;编写FPGA封装程序和功能测试程序;综合并比较2种设计的资源占用情况。参考书目:数字信号处理;ISE9.X使用手册;QuartusII7.X使用手册;软件IPcore自带pdf文档;精通MATLAB7.0课程设计学生日志时间设计内容11.17-11.22查阅相关资料11.23-11.25设计系统整体方案,分析功能及指标要求11.26-11.30完成FIR滤波器系数的设计12.1-12.4调用AlteraMegaCore实现FIR滤波器12.5-12.7调用AlteraDSPBuilder实现FIR滤波器12.8-12.9Simulink下实现FIR滤波器的算法级仿真12.10-12.14QuartusII下仿真FIR滤波器12.15-12.17撰写报告12.21答辩课程设计考勤表周星期一星期二星期三星期四星期五课程设计评语表指导教师评语:成绩:指导教师:年月日FIR滤波器的FPGA实现一、设计目的和意义FIR数字滤波器能够满足滤波器对幅度和相位特性的严格要求,避免模拟滤波器的温漂和噪声等问题,具有精确的线性相位、易于硬件实现和系统稳定等优点,可广泛应用于现代电子通信系统。实际信号处理应用往往要求系统兼具实时性和灵活性,而现有设计方案(如DSP)则难以同时达到这两方面要求。而使用具有并行处理特性的FPGA实现FIR滤波器,具有很强的实时性和灵活性,因此为数字信号处理提供一种很好的解决方案。本设计使用MATLAB软件和Altera公司的FPGA开发软件QuartusⅡ进行FIR滤波器的设计仿真,该设计方案能够直观检验滤波器的设计效果,提高设计效率,缩短设计周期。通过本次设计的主要目的在于:1、掌握ENA设计的基本流程及方法2、熟悉MATLAB工具箱及Simulink的使用3、熟悉QuartusII开发环境及其使用4、熟悉verilogHDL的使用二、设计原理有限长度滤波器(FIR)是线性滤波器的一种,它因原理及实现结构简单和很容易实现线性相位而在雷达、通信以及信号处理领域得到广泛应用。FPGA具有足够的硬件资源和足够的灵活性,可以几乎无限次修改验证设计和极大缩短研发周期,因而在现代电子系统设计和研发中具有无可替代的作用。2.1FIR滤波器的特点有限长度滤波器(FIR)具有以下特点:(1)系统的单位冲击响应h(n)在有限个n值处不为零;(2)系统函数H(z)在|z|0处只有零点,即有限z平面只有零点,而全部极点都在z=0处(因果系统);(3)结构上主要是非递归结构,没有输出到输入的反馈;FIR滤波器的系统函数为:(1))()(10NnnznhzH2.2FIR滤波器的基本结构FIR滤波器主要有:横截型(直接型,卷积型)、级联型、频率抽样型、快速卷积结构、线性相位结构;2.2.1横截型FIR滤波器的差分方程即卷积和公式,也是x(n)的延时链的横向结构,所以称为卷积型或横截型结构。按H(z)或差分方程直接画出结构图,故也称为直接型结构。横截型结构是FIR滤波器设计中应用最为普遍的一种结构,如图1所示。图1FIR滤波器的横截型结构2.2.2级联型将H(z)分解成实系数二阶因子的乘积形式图2FIR滤波器的级联型结构其中[N/2]表示取N/2的整数部分。若N为偶数,则N—1为奇数,故系数B2K中有一个为零,这是因为,这时有奇数个根,其中复数根成共轭对必为偶数,必然有奇数个实根;N为奇数时,FIR滤波器的级联结构,其中每一个二阶因子用图1的横型结构。这种结构的每一节控制一对零点,因而再需要控制传输零点时,可以采用它。但是这种结构所需要的系数k2(I=0,1,2,k,=1,2,...,[N/2])比卷积型的系数h(n)要多,因而所需的乘法次数也比卷积型的要多。2.2.3频率抽样型N个频率抽样H(k)恢复H(z)的内插公式:图3FIR滤波器的频率抽样型结构在频率抽样型结构中,调整H(k)就可以有效地调整频响特性,若h(n)长度相同,则网络结构完全相同,除了各支路增益H(k),便于标准化、模块化。有限字长效应可能导致零极点不能完全对消,导致系统不稳定,系数多为复数,增加了复数乘法和存储量。2.2.4快速卷积结构只要将两个有限长序列补上一定的零值点,就可以用圆周卷积来代替两序列的线性卷积。由于时域的圆周卷积,等效到频域则为离散傅立叶变换的乘积。因而,如果即将输入x(n)补上L-N1个零值点,将有限长单位冲激响应h(n)补上L-N2个零值点,只要满足L=N1+N2-1,则L点的圆周卷积就能代表线性卷积,即用DFT表示,则有Y(k)=X(k)H(k),其中Y(k)=DFT[y(n)],L点X(k)=DFT[x(n)],L点H(k)=DFT[h(n)],L点这样,我们就可得到快速卷积结构,当N1,N2足够长时,它比直接计算线性卷积要快得多。2.2.5线性相位结构FIR滤波器单位抽样响应h(n)为实数,10Nn,且满足偶对称)1()(nNhnh或者奇对称)1()(nNhnh,即对称中心在2/)1(N处,则这种FIR滤波器具有严格的线性相位。N为奇数时,令mNn1(4)N为偶数时,(5)三、详细设计步骤3.1整体设计思路首先使用MATLAB进行FIR滤波器的系数设计,然后在simulink中进行算法级仿真,验证设计的正确性,在QuartusII中进行门级仿真,验证硬件的正确性。3.2系统算法级设计及指标要求3.2.1FIR滤波器设计分析分析题目要求:设计数字频率10MHz,3dB带宽0.2,阻带抑制≥45dB的FIR滤波器;由3dB带宽0.2,则知需设计通带截止频率为2MHz;由奈奎斯特定律可知阻带起始频率应大于等于1/2被的数字频率,则阻带起始频率设置为3MHz可满足;阻带衰减≥45dB,阻带衰减为65dB的FIR滤波器即可满足要求。3.2.2利用“FilterDesigner&Analysis”设计FIR滤波器系数并导出到MATLAB工作区间打开MATLAB软件,打开start—ToolBoxes—FilterDesigner&Analysis,在Units框内选择“KHz”;在Fs内填写10000,即数字采样频率为10000KHz(10MHz);在Fpass内填写2000,即通带截止频率为2000KHz(2MHz);在Fstop内填写3000,即阻带起始频率为3000KHz(3MHz),Astop填65,即为阻带衰减65dB。如图4:图4FIR滤波器系数设计在“FilterDesigner&Analysis”下,打开File—Export…出现下图图5导出FIR滤波器系数到MATLAB工作空间点击“Export”将系数导出到MATLAB工作区间。在MATLAB命令窗口输入“Num”可显示刚刚设计的浮点数系数如下:Columns1through11-0.0011-0.0133-0.0319-0.02290.02480.0423-0.0299-0.09170.03390.31330.4648Columns12through210.31330.0339-0.0917-0.02990.04230.0248-0.0229-0.0319-0.0133-0.0011设计出的FIR滤波器的幅频及相频响应如图6:图6FIR滤波器的幅频、相频响应冲击响应如图7:图7FIR滤波器的冲击响应3.2.3将滤波器系数进行8位量化圆整在在MATLAB命令窗口输入“num=round(Num*(2^7))”对滤波器系数进行8位量化,量化后的系数如下:num=round(Num*(2^7))num=Columns1through180-2-4-335-4-1244059404-12-453-3Columns19through21-4-20经过8位量化圆整后的系数的幅频相频响应如图:图8FIR滤波器量化圆整后的系数的幅频相频响应3.2.4将系数以.coe文件输出在MATLAB命令窗口输入:freqz(num)fid=fopen('D:\work\firdata.coe','wt');fprintf(fid,'%d\n',num);fclose(fid);在D盘的“work”文件下生成系数文件。图9利用MATLAB生成.coe文件3.3调用DSPBuilder设计FIR滤波器在调用Altera的MegaCore之前,首先要安装Altera公司的DSPBuilder工具,同时DSPBuilder的版本要和QuartusII的版本一致,并且已装好MATLABR2007b以上版本。本次课程设计用的工具为QuartusII9.0、DSPBuilder9.0、MATLABR2008a。3.3.1调用DSPBuilder中的MegaCoreFunctions生成FIR滤波器装好DSPBuilder9.0后,打开Simulink,就会出现AlteraDSPBuilderBlockset文件夹。在AlteraDSPBuilderBlockset文件中找到MegaCoreFunctions,将“fir_compiler_v9_0”拖入已建好的模型文件中,如下图10:图10AlteraMegaCoreFunctions双击“fir_compiler_v9_0”将FIR滤波器的系数导入,如图11:图11MegaCore导入FIR滤波器系数然后生成IPCore,生成后的FIR滤波器如图12:图12利用MegaCore生成的FIR滤波器其中,reset_n是复位信号输入端口,低电平有效,ast_sink_data(7:0)是8位正弦波数据输入端口,ast_soure_ready是信源准备好信号输入端口,ast_source_data(16:0)是经FIR滤波器后的数据输出端口。加入signlecompiler和时钟并连接好电路后如图13:图13MegaCore电路模型图3.3.2使用DSPBuilder设计FIR滤波器由FIR滤波器结构可知,FIR滤波器累由乘法器和加法器组成,因此刚刚设计的FIR滤波器可由乘法器和加法器来完成。由于DSPBuilder提供的MultiplyAdd允许输入2、3、4个整形数据,因此,上述设计的21阶FIR滤波器可由7个3输入的MultiplyAdd来完成。(1)设计乘加子系统MultiplyAdd的设置按照下表进行,其中ConstantValues就是滤波器系数。Table1MultiplyAdd设置参数表参数名称MultiplyAddMultiplyAdd1MultiplyAdd2MultiplyAdd3MultiplyAdd4MultiplyAdd5MultiplyAdd6NumberofMultipliers3333333BusTypeSignedIntegerSignedIntegerSignedIntegerSignedIntegerSignedIntegerSignedIntegerSignedIntegerInput[numberofbit].[]16161616161616CounstantValues[0-2-4][-335][4-124][40594
本文标题:fir滤波器的fpga实现
链接地址:https://www.777doc.com/doc-3263026 .html