首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» Matlab中滤波器的设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Matlab中滤波器的设计
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-9-19 21:39
|
只看该作者
Matlab中滤波器的设计
matlab
,
滤波器
,
绝对值
在matlab中有一个滤波器设计和分析工具FDAT,可以通过此工具来对滤波器进行设计。matlab中一些简单的命令:round(x)把x舍入到最近的整数(四舍五入) abs(x)计算x的绝对值 sqrt(x)计算x的平方值 fix(x)把x沿0的方向舍入到最近的整数值 floor(x)把x舍入到比x小的最近的整数 ceil(x)把x舍入为比x大的最近的整数要设计滤波器,首先要做的就是要知道各个系数。其实系数我们是可以通过matlab的FDAT工具来进行计算的。步骤如下:(1)先打开matlab,然后点击左下脚的start按钮,选择Toolboxes——>Filter Design ——>Filter Design &Analysis Tool,即可启动FDATool。也可在matlab中执行fdatool来启动FDATool。FDATool启动后如下图所示的窗口。
(2)按照要求自己设计滤波器。启动FDATool后的界面就是滤波器的设计界面,如上图所示,要从其它的界面进入滤波器的设计界面可以倒垃圾FDATool窗口坐下侧的一列工具按钮中的最下一个图标filter design ,即可进入设计界面。在该界面中要进行滤波器的设计。首先要选择滤波器的类型,滤波器的类型有高通、低通、带通和带阻,以及其它的好几种。选择好类型之后就要选择设计方法,设计方法从大类上有两种,一种是FIR,另一种是IIR。每一大类中又有很多种不同的方法。针对不同的设计方法,后面有不同的选项。然后就是滤波器的阶数(filter order),如果是11阶的滤波器则输入10就可以了。设置完这些就需要设置滤波器的频率特性和幅度特性了。其中Fs是采样频率,Fp是通带截止频率,Fs是阻带截止频率。后面的Apass是指通带内允许的最大衰减,Astop是指阻带内允许的最小衰减。设置完这些参数之后,按Design Filter就可以按要求设计出该滤波器了。
在本次举例中设置如下图:
(3)滤波器设计和性能分析设计完成后需要对滤波器进行性能分析,检查是不是符合要求。性能分析可通过单击Analysis菜单,下面有很多子菜单来进行。1、Magnitude Response(幅频响应)图略2、Phase Response(相频响应)3、相幅联合分析4、冲击响应(Analysis——>Impulse Response后可得到如下的图形)
5、滤波器的系数(这个是很重要的,也是我们想要的)Analysis——>Filter Coefficients之后会看到系数的。(图略)还有其他的分析,都省略了吧!(4)设置量化参数matlab在计算系数时只是追求高精度而没有考虑有限字长。我们在fpga中实现时字长是有限的,所以要对系数首先进行量化。点击左下脚的Set Quantization parameter就可以设置量化参数了。
默认时Turn quantization on是没有选中的,只有选中之后才可以设置后面的各个项。选中Convert coefficients to 就可以设置系数的格式了。因为我们要在fpga要实现,所以在此次选择定点数(fixed),如果选择定点数则就需要选择舍入模式,其中有round、fix、floor、ceil等各个的意义见开头提到的几个函数。也可在matlab中用help来查看各个命令的作用哦!(看看matlab是不是很人性啊!)后面是选择溢出模式和定点数的数据格式的。Format中有两个数字,前面一个呢是字的总长度,后面一个呢是小数的长度。如果你对某些选项还不太明白,那就找到这个选项对应的命令,然后help一下就可以了。设置完成后在Filter Coefficient窗口最下面还可以看到对应的命令呢!这是不是很令人兴奋啊!如下图:
量化之后,依然可以用前面说过的几种分析方法来对比量化前后的不同。(5)导出系数点击File——>export,出现如下对话框。可以将系数导出到workspace空间中,以变量Num的形式存在。
但是变量Num都是小于1的数,所以还是不能用fpga来进行处理,所以要把它进行扩大。那到底要扩大多少倍呢,通过看资料我的理解就是在fpga处理中你的系数是几位数就可以扩大多少倍。比如你的系数准备是9位数,那么你可以给Num乘以2的9次方。又查了一些资料才发现,系数的量化实际可以直接通过下面的命令来实现:coeff=round(Num*2^9),(或者也可以coeff=round(Num/max(abs(Num))*32767))这样得到的系数也是可以用的。如果要检查你得到的系数是否可用,可以通过在matlab输入这条指令:freqz(coeff,1,512)。输入这个指令以后会出现下图:
通过观察这个图就可以知道这个系数是不是正确了。得到系数之后在fpga中如何实现呢,这篇写的太长了,下篇继续吧!转自:
http://blog.csdn.net/jbb0523/article/details/6782800
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
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
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议