没有合适的资源?快使用搜索试试~ 我知道了~
单片机与DSP中的基于FPGA的IIR数字滤波器的快捷设计
9 下载量 22 浏览量
2020-12-08
18:44:19
上传
评论
收藏 401KB PDF 举报
温馨提示
0 引言 IIR数字滤波器在很多领域中都有着广阔的应用。与FIR数字滤波器相比,IIR数字滤波器可以用较低的阶数获得较高的选择性,而且所用存储单元少,经济效率高。一个N阶IIR数字滤波器的系统函数为: 其线性常系数差分方程为: 用FPGA实现滤波的基本思想就是基于式(2)来实现的。如果知道了系统的输入序列(滤波器的输入),那么,只要根据所给的滤波器的指标,然后通过MATLAB仿真出系数矢量b和a,再采用递推算法求解差分方程,就能求出输出序列(滤波器的输出)。 1 滤波器的MATLAB设计 由于本文采用巴特沃斯滤波器,故需要在工具箱中调用的两个
资源推荐
资源详情
资源评论
单片机与单片机与DSP中的基于中的基于FPGA的的IIR数字滤波器的快捷设计数字滤波器的快捷设计
0 引言 IIR数字滤波器在很多领域中都有着广阔的应用。与FIR数字滤波器相比,IIR数字滤波器可以用较低的阶
数获得较高的选择性,而且所用存储单元少,经济效率高。一个N阶IIR数字滤波器的系统函数为: 其线性常系
数差分方程为: 用FPGA实现滤波的基本思想就是基于式(2)来实现的。如果知道了系统的输入序列(滤波器的输
入),那么,只要根据所给的滤波器的指标,然后通过MATLAB仿真出系数矢量b和a,再采用递推算法求解差分
方程,就能求出输出序列(滤波器的输出)。 1 滤波器的MATLAB设计 由于本文采用巴特沃斯滤波器,故需要在
工具箱中调用的两个
0 引言引言
IIR数字滤波器在很多领域中都有着广阔的应用。与FIR数字滤波器相比,IIR数字滤波器可以用较低的阶数获得较高的选择
性,而且所用存储单元少,经济效率高。一个N阶IIR数字滤波器的系统函数为:
其线性常系数差分方程为:
用FPGA实现滤波的基本思想就是基于式(2)来实现的。如果知道了系统的输入序列(滤波器的输入),那么,只要根据所给的滤
波器的指标,然后通过MATLAB仿真出系数矢量b和a,再采用递推算法求解差分方程,就能求出输出序列(滤波器的输出)。
1 滤波器的滤波器的MATLAB设计设计
由于本文采用巴特沃斯滤波器,故需要在工具箱中调用的两个函数buttord和butter的调用格式为:
其中N为滤波器阶数;wp和ws分别为通带截止频率矢量和阻带截止频率矢量,单位为π,一般需要模拟频率指标对采样频率的
一半作归一化;Rp和As分别为通带最大衰减和阻带最小衰减,单位dB;wc为3 dB边缘频率矢量;b和a即为方程(2)中的系数
矢量。
获得系数6和a之后,调用函数freqz(b,a,k,Fs)即可按照下式计算k点的复频率响应矢量H:
然后便可绘出K点的幅频和相频特性曲线,以用于检查计算出的系数是否满足所需要的滤波器指标。
2 编写编写VHDL语言代码注意事项语言代码注意事项
乘加运算过程中的数据是有符号的二进制补码,通常在Xilinx ISE集成开发环境下建立的VHDL源文件头部都会有“use
IEEE.STD_LOG-IC_UNSIGNED_ALL;”,如将其改为“use IEEE.STD_LOGIC_SIGNED.ALL;”即应该包含有符号数运算程
序包,这样就能保证代码中的所有std_log-ic_vector型数据按照有符号二进制补码的规则进行运算。
由于FPGA内部不能表示浮点数,因此只能用有限精度方法来实现数据的运算,即用数据(包括方程(2)的输入输出和系数)的整
数部分(截去小数部分)作近似运算,且需要std_log-ic_vector数据类型来表示数据整数部分的二进制补码形式,但这样会产生
截断误差。为了减小截断误差,应该将数据扩大适当的倍数(通常是2L倍,L为正整数),以使小数部分可以忽略不计。扩大的
倍数越大,截断误差就越小,得到的数据就越精确,但是,用来表示数据整数部分的std_logic_vector型数据长度会越大,这
样就会占用越多的FPGA内部资源,因此,适当的选择数据扩大倍数是个关键。此外,各种数据转换为std_logic_vector型数据
的长度选取至少应足以表示二进制补码(包括符号位)。若FPGA内部资源充足,可以通过增加std_logic_vector型数据长度来减
小截断误差,提高运算精度。
通常由MATLAB仿真得到的系数b都远小于1,因此要适当选择正整数L。运算时可给系数b和a(a的第一个系数除外)同乘以
2L,之后取整得到B=round(b*2L)和A=round(a*2L)<round()函数并对其实数四舍五人,然后将其带入函数freqz(),即在
MATLAB中仿真频率特性是否满足既定指标,若不满足则增大L,若满足则将B和A(系数A(1)指定为1不变)化为二进制补码,以
使其作为VHDL代码中std_logic_vector型的con-stant常量数据。
当前时刻输入的x(n)有时可能太小,为减小截断误差,应该选择适当的整数M,以给x(n)乘以2M,即给表示当前时刻输入的
资源评论
weixin_38640674
- 粉丝: 2
- 资源: 960
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Defender Control-禁止工具,一键永久关闭windows系统杀毒软件
- echarts中国省份数据.json
- DISC-Law-SFT-Triplet-released-Qwen
- ReduceMemory-windows内存释放工具(使用前建议将当前数据保存好)
- 清华大学 大学数学实验 实验内容及参考答案
- 音频人声分离,合成工具Audacity ,多轨音频编辑器
- Centos8.x通过RPM包升级OpenSSH9.6最新版 升级有风险,前务必做好快照,以免升级后出现异常影响业务
- Centos7.x通过RPM包升级OpenSSH9.6最新版 升级有风险,前务必做好快照,以免升级后出现异常影响业务
- Centos7.x通过RPM包升级OpenSSH9.9最新版 升级有风险,前务必做好快照,以免升级后出现异常影响业务
- Centos7.x通过RPM包升级OpenSSH9.8最新版 升级有风险,前务必做好快照,以免升级后出现异常影响业务
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功