基于Matlab和FPGAD的FTR数字滤波器的设计Word文档下载推荐.docx
- 文档编号:17269798
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:18
- 大小:317.87KB
基于Matlab和FPGAD的FTR数字滤波器的设计Word文档下载推荐.docx
《基于Matlab和FPGAD的FTR数字滤波器的设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于Matlab和FPGAD的FTR数字滤波器的设计Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
5.1.1寄存器11
5.1.2加法器13
5.1.3减法器14
5.1.4乘法器15
5.2FIR滤波器整体电路仿真结果17
5.2.1设定输入信号17
5.2.2输出信号理论值17
六.心得体会18
七.参考文献18
基于Matlab和FPGA
的FIR数字滤波器的设计
一.引言
当今,数字信号处理[1](DSP:
DigtalSignalProcessing)技术正飞速发展,它不但自成一门学科,更是以不同形式影响和渗透到其他学科:
它与国民经济息息相关,与国防建设紧密相连;
它影响或改变着我们的生产、生活方式,因此受到人们普遍的关注。
数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号、雷达信号、通信信号、导航信号、射电天文信号、生物医学信号、控制信号、气象信号、地震勘探信号、机械振动信号、遥感遥测信号,等等。
上述这些信号大部分是模拟信号,也有小部分是数字信号。
模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。
大多数情况下一维模拟信号的自变量是时间,经过时间上的离散化(采样)和幅度上的离散化(量化),这类模拟信号便成为一维数字信号。
因此,数字信号实际上是用数字序列表示的信号,语音信号经采样和量化后,得到的数字信号是一个一维离散时间序列;
而图像信号经采样和量化后,得到的数字信号是一个二维离散空间序列。
数字信号处理,就是用数值计算的方法对数字序列进行各种处理,把信号变换成符合需要的某种形式。
例如,对数字信号经行滤波以限制他的频带或滤除噪音和干扰,或将他们与其他信号进行分离;
对信号进行频谱分析或功率谱分析以了解信号的频谱组成,进而对信号进行识别;
对信号进行某种变换,使之更适合于传输,存储和应用;
对信号进行编码以达到数据压缩的目的,等等。
二.设计目的
1.掌握FIR数字滤波器的步骤。
2.掌握MATLAB和FPGA(FieldProgrammableGateArray)的综合应用。
3.设计并实现基于MATLAB和FPGA的FIR数字滤波器。
三.FIR数字滤波器的工作原理
3.1.FIR数字滤波器的工作原理
在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,使之成为8bit的数字信号,一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。
FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。
工作原理框图图一;
四.FIR数字滤波器设计的方框图
4.1.FIR滤波器的参数计算
通常采用窗函数设计FIR滤波器方法简单,但是这些滤波器的设计还不是最优的。
首先通带和阻带的波动基本上相等,另外对于大部分窗函数来说,通带内或阻带内的波动不是均匀的,通常离开过渡带时会减小。
若允许波动在整个通带内均匀分布,就会产生较小的峰值波动。
因此考虑通过某种方法,对滤波器的结构进行优化。
对于线性相位因果FIR滤波器,它的系列具有中心对称特性,即h(i)=±
h(N-1-i)。
令s(i)=x(i)±
x(N-1-i),对于偶对称,代入式
(1)可得:
根据要求,要设计一个输入8位,输出8位的17阶线性相位FIR滤波器,所以采用图2(a)的方式,其中输入信号范围为:
[±
99,0,0,0,±
70,0,0,0,±
70,…],此滤波器Fs为44kHz,Fc为10.4kHz。
MATLAB设计计算滤波器系数过程如下:
图二参数设计界面
FIR滤波器参数设置,因为是17阶,所以Specifyorder处填16,h(0)=0.
可得FIR滤波器的参数为[-12-191330-14-541417025517014-54-143013-19-12
图三FIR滤波器的幅频响应
图四FIR滤波器的相频响应
图五FIR滤波器的冲激响应
图六FIR滤波器系数
图七Matable仿真图
图八仿真结果
图九Matable仿真图
图十仿真结果
图十一FIR滤波器系数
对FIR滤波器的系数进行调整,整数化可得FIR滤波器的参数为[-12-191330-14-541417025517014-54-143013-19-12]
4.2FIR滤波器的原理框图
图十二FIR滤波器的原理框图
5.FIR滤波器设计的仿真实现
5.1.模块电路设计
设计的FIR滤波器由19个小VHD文件和一个总体BDF文件组成,VHD文件可以分为以下四种模块:
寄存器、加法器、减法器、乘法器。
5.1.1寄存器
5.1.1.1寄存器原理
寄存器用于寄存一组二值代码,对寄存器的触发器只要求它们具有置1、置0的功能即可,因而本设计中用D触发器组成寄存器,实现寄存功能。
5.1.1.2寄存器要求实现的功能
在CP正跳沿前接受输入信号,正跳沿时触发翻转,正跳沿后输入即被封锁。
5.1.1.3寄存器的VHDL语言实现(8位)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdff8IS
PORT(clk:
INSTD_LOGIC;
clear:
Din:
INSTD_LOGIC_VECTOR(7DOWNTO0);
Dout:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDdff8;
ARCHITECTUREaOFdff8IS
BEGIN
PROCESS(clk,clear)
BEGIN
IFclear='
1'
THEN
Dout<
="
00000000"
;
ELSIFclear='
0'
IF(clk'
EVENTANDclk='
)THEN
Dout<
=Din;
ENDIF;
ENDPROCESS;
ENDa;
其中,clear为复位信号。
5.1.1.4寄存器的模块图
图十三寄存器模块图
5.1.1.5寄存器的波形仿真
图十四寄存器波形仿真
5.1.2加法器
5.1.2.1加法器的原理
在将两个多位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位3个数相加。
这种运算称为全加,所用的电路称为全加器。
多位加法器的构成有两种方式:
并行进位和串行进位。
并行进位加法器设有进位产生逻辑,预算速度较快;
串行进位方式是将全加器级联构成多位加法器。
并行进位加法器通常比串行级联加法器占用更多的资源。
随着为数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大,因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。
本次设计采用的是并行加法器方式。
5.1.2.2加法器要求实现的功能
实现两个二进制数字的相加运算。
当到达时钟上升沿时,将两数输入,运算,输出结果。
5.1.2.3加法器的VHDL语言实现
(以下以12位数加16位数生成16位数的加法器为例)
USEIEEE.STD_LOGIC_arith.ALL;
ENTITYadd121616is
PORT(clk:
inSTD_LOGIC;
Din1:
insigned(11downto0);
Din2:
insigned(15downto0);
ARCHITECTUREaofadd121616is
SIGNALs1:
signed(15downto0);
BEGIN
s1<
=(Din1(11)&
Din1(11)&
Din1);
PROCESS(Din1,Din2,clk)
ifclk'
eventandclk='
then
Dout<
=s1+Din2;
endif;
endprocess;
enda;
5.1.2.4加法器的模块图
图十四加法器模块图
5.1.2.5加法器的波形仿真
图十五加法器波形仿真
5.1.3减法器
5.1.3.1减法器的原理
减法器的原理与加法器类似,尤其是并行式的减法器也加法器的区别仅仅在于最后的和数为两数相减。
如:
Dout<
=Din2-s1;
5.1.3.2减法器要求实现的功能
由上面简化电路的需要,当乘法器常系数为负数的,可以取该数的模来作为乘法器的输入,其输出作为一个减法器的输入即可。
故减法器要实现两个二进制数相减的运算。
当到达时钟上升沿时,将两数输入,运算,输出结果
5.1.3.3减法器的VHDL语言实现
(以下以16位数减去14位数输出16位数的减法器为例)
ENTITYsub141616is
insigned(13downto0);
outsigned(15downto0));
ENDsub141616;
ARCHITECTUREaofsub141616is
=(Din1(13)&
Din1(13)&
5.1.3.4减法器的模块图
图十六减法器模块图
5.1.3.5减法器的波形仿真
图十七加法器的波形仿真
5.1.4乘法器
5.1.4.1乘法器的原理
从资源和速度考虑,常系数乘法运算可用移位相加来实现。
将常系数分解成几个2的幂的和形式。
下例为乘18电路设计,算法:
18=16+2
5.1.4.2乘法器要求实现的功能
实现输入带符号数据与固定数据两个二进制数的乘法运算。
5.1.4.3乘法器的VHDL语言实现
LIBRARYieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_arith.all;
ENTITYmult18is
PORT
(clk:
INSIGNED(8DOWNTO0);
OUTSIGNED(12DOWNTO0));
ENDmult18;
ARCHITECTUREaOFmult18IS
SIGNALs1:
SIGNED(12DOWNTO0);
SIGNALs2:
SIGNED(9DOWNTO0);
SIGNALs3:
P1:
process(Din)
s1(12DOWNTO4)<
=Din;
s1(3DOWNTO0)<
0000"
s2(9DOWNTO1)<
s2(0)<
='
ifDin(8)='
then
s3<
=('
&
s1(12downto1))+("
s2(9DOWNTO1));
else
1111"
P2:
PROCESS(clk)
=s3;
ENDPROCESS;
5.1.4.4乘法器的模块图
图十八乘法器模块图
5.1.4.5乘法器的波形仿真
图十九乘法器波形仿真
5.2FIR滤波器整体电路仿真结果
5.2.1、设定输入信号
根据设计要求,输入信号范围是:
70,…]
我们任意设定输入信号为:
X=[99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0,99,0,0,0,70,0,0,0]
5.2.2、输出信号理论值
由FIR数字滤波器的公式
结论验证:
图二十实验结果
六.心得体会
随着公元的第二十一个世纪的到来,今天我们进入了一个科技日新月异的时代。
在现代电子数字系统中,滤波器都以一个不可缺少的身份出现。
其中,FIR数字滤波器又以其良好的线性特性被广泛和有针对性的大量使用。
众所周知,灵活性和实时性是工程实践中对数字信号处理的基本要求。
在以往使用的各种滤波器技术中,不难发现有许许多多的问题。
但是,随着现代计算机技术在滤波问题上的飞跃,派生出一个全新的分支——数字滤波器。
利用可编程逻辑器件和EDA技术,使用FPGA来实现FIR滤波器,可以同时兼顾实时性和灵活性。
基于FPGA的FIR数字滤波器的研究势在必行
七.参考文献
[1]UweMeyer—Baese.DigitalSignalProcessingwithFieldProgrammableGateArrays.TsinghuaUniversityPress,2006.
[2]SanjitKMitra.DigitalSignalProcessing:
AComputer—BasedApproach.TsinghuaUniversityPress,2004.
[3]MichaelDCiletti.AdvancedDigitalDesignwiththeVerilogHDL[M].
PublishingHouseofElectronicsIndustry,2007.
[4]程佩清.数字信号处理教程[M].北京:
清华大学出版社,2003.
[5]郭晓宇.基于FPGA实现FIR数字滤波器的研究[D].武汉:
武汉大学,2004.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Matlab FPGAD FTR 数字滤波器 设计