总的来说,基于FPGA的数字滤波器在设计过程中需要配合MATLAB使用,能达到预期的设计效果。
基于Quartus II 的数字滤波器设计(FIR Compiler IP核)
摘要
针对模拟滤波器设计困难,不灵活的问题,提出使用FPGA设计高性能数字滤波器方案,使用MATLAB中APP(FDATOOL)设计滤波器系数,Python设计仿真波形输入,Quartus完成RTL的硬件设计,经验证相较于模拟滤波而言,性能指标更高,设计更灵活。
引言
随着时代的高速发展,数字电路的集成化越来越高,数字滤波器因其灵活性和低功耗,逐渐代替模拟滤波器,FPGA因为其并行和灵活的特点与数字滤波器相符合,所以使用FPGA进行数字滤波器的设计,在设计中使用FPGA自带的IP设计。
MATLAB设计滤波器
滤波系数
MATLAB中自带工具FDATOOL可以帮助我们设计数字滤波器
这里我们选择定点数,字长(word length)要与FPGA中的输入字长一致。
带通滤波器的参如下:带通范围:2000-4000Hz;低频过渡带:1400-2000Hz;高频过渡带:4000-4600Hz;采样频率:16000Hz;采用等纹波滤波器设计;要求阻带衰减大于60dB;
图中2是带通滤波器,3是等波纹滤波器设计,4是滤波器的通带范围,5是滤波器的阻带与通带的衰减指标。
将参数导出到MATLAB当中。
最后将导出的参数粘贴复制到TXT文档当中,以便后期FPGA使用,值得注意的是抽头系数的格式必须是上面这种用分行符隔开。波形数据
除了滤波器的抽头系数之外我们还需要有测试的仿真波形输入,这里我们使用Python将生成波形数据存储到TXT文档当中。
//代码片 import numpy as np import matplotlib.pyplot as plt f=1000 fs = 16000 Ts = 1/fs N = 1024 t = np.linspace(0,N-1,N)/fs y = (2**16-1)*(np.sin(2*np.pi*t*f)+1)/2 np.savetxt("./pass.txt",y.astype(np.uint32),delimiter = ' ',fmt="%x",newline = 'n') plt.figure() plt.plot(t,y) plt.show()
上面Python是生成的波形和相应的程序,上图为1000HZ的波形,当然使用MATLAB也是可以的。
Quartus II 程序设计
在Qurtus II 中我们需要使用到两个模块,一是PLL模块因为采样频率是16KHZ,所以我们需要PLL分出一个16KHZ的频率;二就是FIR comliper IP 核例化的数字滤波器模块。
RTL设计
PLL例化
PLL例化具体的不细说了,但是要强调一点,我们之前只是破解软件但是IP核是没有破解的,不影响我们使用但是仿真的时候需要IP核的破解权限,这个需要大家自行百度一下。PLL具体的例化就不说了,这种介绍FIR IP核。
FIR comliper
FIR IP核有两种,我们选择V13.1 版本。
首先第一部分是Parameterize
滤波系数设计有两种方法,其一是这个IP核自带的设计方法,二是导入由FDATOOL导出的参数(之前从MATLAB中导出的TXT文档)。
图中有三个要注意到的地方,1是Bit Width要和在FPGA中设定Fixed中设定的一样;二是输入变量要选择有符号数的二进制输入,这也意味着输入变量也需要转化为有符号数;三input bit width 位宽也要和图中1的保持一致。仿真图分析
由图中可知通带2000-4000HZ带通滤波器滤除了1000HZ与2000HZ叠加波中的1000HZ频段保留了2000HZ频段。总结
具体的工程代码//download.csdn.net/download/Joy__chen/12522835,如有需要请自取,有问题的话,也可以在讨论区留言,另外大家如果感觉本篇博客对自己有用的话,请大家,谢谢大家。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算