本报告分两部分:1由matlab计算FIR数字滤波器的滤波系数;2用VHDL语言设计逻辑电路,再通过QUARTUSII软件,将各个模块的电路封装成期间,在顶层设计中通过连线,完成整个系统。所有源程序在本文档同一文件夹下的fir文件中。
FIR数字滤波器的系数计算。
这里通过MATLAB的Fdatool软件实现。滤波类型为:带通FIR
滤波器设计分析器界面
滤波器参数设置界面
f滤波器参数结果
冲激响应图样
f量化过后图样
滤波器参数导出
滤波器参数结果
fIR数字滤波器的VHDL实现
根据作业要求,S
为9位,y
为10位的低通滤波器。数据:196293452592212212922545329619阶数:15,Beta05Fs48kHzFc108kHZ滤波类型为:直接型FIRFIR滤波器的原理图设计如下:
设计原理:
一概要
我的原理说明是根据上面原理图的设计顺序逐步进行的。1寄存器(延时器)。原理图上标有dff9的器件。输入9位数据,通过dff9的D触发寄存器,达到延时的作用。2第一级加法器数据通过add9910就是9位数字输入,10位数字输出加法器,完成第一级相加运算,因为本题是16阶FIR数字滤波器,它的滤波系数有对称的关系,所以采用上面的第一级加法器,达到简化运算的效果。3乘法器乘法器用来将数据乘以由matlab计算得到的滤波系数,本题的系数分别为:196293452592212。在乘法器设计时暂时没有考虑符号,符号问题由下面的减法器实现。即:若系数符号为负,那么在下一级用减法器减去乘法器所得的数据。所有的乘法器为:mult19multmult6
fmult29mult3mult45mult25mult92mult212。4第二级加,减法器第二级加法器主要有add111414add151415add161717。add111414就是说11位数据加14位数据输出14位数据,说有的都是相同的命名规则。减法器的作用是反映乘法器的负号的,对于负的滤波系数,在此相当于经过减法器相减。5第三级加,减法器与上一级大体相同的原理。6输出输出通过add141710,将上一级得到的14位和17位数据相加,再拿出相加结果的高十位作为输出。到此,整个FIR数字滤波器设计完毕,下面详细说明各个部分的具体实现。
二详细说明
我的说明是根据上面的概要逐一展开的。我的设计是先编写各个功能的vhdl源文件,再生成功能模块,最后在顶层用原理图的设计方法连线,组成整个系统。1寄存器(延时器)
设计中用D触发器组成寄存器,实现寄存功能。这里用来寄存一组9位的二进制数据。实现功能:在CP正跳沿前接受输入信号,正跳沿时触发翻转,正跳沿后输入即被封锁。源文r