首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» IIR数字滤波器的Matlab和FPGA实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
IIR数字滤波器的Matlab和FPGA实现
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2015-9-18 15:53
|
只看该作者
IIR数字滤波器的Matlab和FPGA实现
仿真软件
,
滤波器
,
硬件
摘要:
提出一种通过两个二阶节级联构成四阶IIR数字椭圆滤波器的设计方法,并利用Matlab仿真软件设计了通带内波纹不大于0.1dB,阻带衰减不小于42dB的IIR数字滤波器。论述了一种采用可编程逻辑器件,通过VHDL硬件描述语言实现该滤波器的方法。给出了在QuartusⅡ软件下的仿真结果,并在FPGA器件上验证实现。实验证明,这种方法是切实可行的。
0 引言
数字滤波器具有比模拟滤波器精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配,以及能够实现模拟滤波器无法实现的特殊滤波功能等特点,因此数字滤波器被广泛应用于图像处理和识别、语音处理和识别、通信、雷达、人工智能、核技术等多个领域。
数字滤波器的实现方法很多,采用FPGA器件实现具有速度快、效率高、成本低、开发周期短等优点,而且还可以直接使用Altera公司提供的FIR/IIR IP core或采用LPM的设计方法进行设计,使数字滤波器设计变得简单、可靠。本系统通过一个实例说明如何通过Matlab设计并在FPGA器件上实现IIR椭圆函数滤波器。
1 IIR数字滤波器的Matlab设计
1.1 IIR数字滤波器设计要求
本系统的设计指标如下:模拟信号采样频率为2MHz,每周期最少采样20点,即模拟信号的通带边缘频率为fp=100kHz,阻带边缘频率fs=200kHz,通带波动Rp≤0.1dB(通带误差不大于5%),阻带衰减As≥42dB。换算为数字域指标为:Wp=0.1π,Ws=0.2π,Rp=0.1dB,As=42dB。
1.2 IIR数字滤波器设计方案
(1)根据设计要求确定滤波器数字域指标
换算为数字域指标为:Wp=0.1π,Ws=0.2π,Rp=0.1dB,As=42dB。
(2)采用Matlab软件设计滤波器系统函数
IIR滤波器系统函数是采用计算机辅助工程CAE工具进行设计的。系统函数H(z)的计算采用Matlab软件设计比较方便,其中有两个现成的函数可以使用:ellipord(Wp/pi,Ws/pi,Rp,As)函数用来计算数字椭圆滤波器的阶次N和3dB截止频率Wn;ellip(N,Rp,As,Wn)函数可以求得直接型椭圆IIR滤波器的各个系数。
根据要求,设计采用Matlab软件实现IIR滤波器的源程序如下:
利用Matlab软件可以得到如下结果:
这是一个四阶IIR系统,通过Matlab计算出该系统的频率响应如图1所示,可见能满足设计要求。
(3)确定滤波器网络结构
本设计如果采用直接型结构实现,则需用的乘法器和延迟单元相对较多,而且分子和分母的系数相差较大,需要较多的二进制位数才能实现相应的精度要求。
为了克服上述缺点,采用二阶级联实现。IIR滤波器采用级联型的网络结构既可以对各基本节的零点、极点方便地单独进行调整,又可以降低对二进制数位数的要求。
这里采用Matlab中的“二阶部分传递函数”tf2sos()完成IIR滤波器直接型网络结构到级联型网络结构的转换。
将IIR滤波器由直接型变为级联型的Matlab语言源程序如下:
可以看出,每个二阶节的分子、分母系数差异减少了。值得注意的是,在分配二阶节的增益时,要保证每个节不会发生运算溢出,可以先用Matlab软件分析计算来合理安排各节的增益。经过计算,本文采用第一级分配0.1626,第二级分配0.0658,可以保证在要求的输入范围,没有数据溢出发生。
(4)滤波器参数量化
差分方程的量化后各系数如表1所示,这里采用10位定点纯小数补码表示。
2 IIR数字滤波器的FPGA实现
2.1 总体设计方案
根据上述参数计算可知,需要设计的IIR滤波器为2个二阶节的系统级联形式,其二阶节系统函数的差分方程均为:
可以看出,一个二阶节的实现,需要五次乘法运算、四次加法运算(采用二进制补码将减法运算变为加法运算),两个二阶节共需要10次乘法运算,所有乘法运算均为无符号数的乘法运算,所以使用时需要先将两个补码乘数转换为无符号数相乘后,再将乘积转换为补码乘积输出,送入累加器求和。根据以上设计思想可知,一个二阶节系统均由控制模块、移位模块、求补模块、乘法模块和累加器模块等模块组成,其系统电路框图如图2所示。
由于IIR滤波器的两个节系统电路结构完全相同,只是系数不同,故另一个二阶节的设计与此类似。
2.2 主要功能模块的设计
控制模块主要用来产生对其他模块的时序控制。
累加模块的功能是将10位×1位乘法器的5个输出数据在10个时钟周期内累加后,并将结果输出。
移位模块主要完成数据交换功能,将输入数据送入输入寄存器x(n)中,同时将x(n)寄存器上一时刻的数据送入x(n-1)寄存器,同时又将x(n-1)寄存器上一时刻的数据送入x(n-2)寄存器。同理有y(n)→y(n-1)→y(n-2)。
求补模块主要根据每路乘法器2个输入数据的补码,判断输入数据的正负,设置该路乘积结果正负标志位,并对输入的负数进行求补运算,保证乘积是在2个无符号数之间进行,再根据该路乘积结果正负标志位,对乘积结果进行求补运算,保证送入累加器的数据为补码。
将设计好的各模块按照二阶节系统电路框图衔接,即可完成IIR滤波器其中一个二阶节系统的设计。只要修改差分方程的系数就可完成另一个二阶节系统的设计。
2.3 仿真结果
各功能模块设计、调测完成之后,按照总体设计方案完成IIR滤波器的实现,并下载到Altera公司的EP1C6Q240C8器件上验证,QuartusⅡ中的仿真结果如图3所示。
图3中:xn为输入信号,采用单极性方波周期信号;频率为100kHz,在采样频率为2MHz时,每个周期采样20个点,换算成数字域频率为0.1π;二次谐波的数字频率为0.2π;yn为滤波输出。观察仿真波形可知,所设计的IIR滤波器符合设计要求。为了更直观地观察IIR滤波器滤波后的输出结果,可将仿真波形文件转换为*.tbl文件,在Matlab中描绘波形。
3 结语
数字滤波器的应用十分广泛,实现方法很多,运用Matlab语言,能很容易地设计出具有严格指标要求的数字滤波器。采用FPGA器件实现数字滤波器的方法,大大缩短了设计周期,降低了成本,提高了设计的可靠性、灵活性,为数字滤波器的设计与实现提供了一种有效的方法。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议