基于Quartus II 的数字滤波器设计(FIR Compiler IP核)

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)

摘要

  针对模拟滤波器设计困难,不灵活的问题,提出使用FPGA设计高性能数字滤波器方案,使用MATLAB中APP(FDATOOL)设计滤波器系数,Python设计仿真波形输入,Quartus完成RTL的硬件设计,经验证相较于模拟滤波而言,性能指标更高,设计更灵活。

引言

    随着时代的高速发展,数字电路的集成化越来越高,数字滤波器因其灵活性和低功耗,逐渐代替模拟滤波器,FPGA因为其并行和灵活的特点与数字滤波器相符合,所以使用FPGA进行数字滤波器的设计,在设计中使用FPGA自带的IP设计。

MATLAB设计滤波器

滤波系数

   MATLAB中自带工具FDATOOL可以帮助我们设计数字滤波器

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第1张图片
这里我们选择定点数,字长(word length)要与FPGA中的输入字长一致。

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第2张图片
带通滤波器的参如下:带通范围:2000-4000Hz;低频过渡带:1400-2000Hz;高频过渡带:4000-4600Hz;采样频率:16000Hz;采用等纹波滤波器设计;要求阻带衰减大于60dB;
图中2是带通滤波器,3是等波纹滤波器设计,4是滤波器的通带范围,5是滤波器的阻带与通带的衰减指标。

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第3张图片

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第4张图片
将参数导出到MATLAB当中。
基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第5张图片
最后将导出的参数粘贴复制到TXT文档当中,以便后期FPGA使用,值得注意的是抽头系数的格式必须是上面这种用分行符隔开

波形数据

     除了滤波器的抽头系数之外我们还需要有测试的仿真波形输入,这里我们使用Python将生成波形数据存储到TXT文档当中。

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第6张图片

//代码片
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

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第7张图片
FIR IP核有两种,我们选择V13.1 版本。
基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第8张图片
首先第一部分是Parameterize
基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第9张图片
滤波系数设计有两种方法,其一是这个IP核自带的设计方法,二是导入由FDATOOL导出的参数(之前从MATLAB中导出的TXT文档)。

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第10张图片
图中有三个要注意到的地方,1是Bit Width要和在FPGA中设定Fixed中设定的一样;二是输入变量要选择有符号数的二进制输入,这也意味着输入变量也需要转化为有符号数;三input bit width 位宽也要和图中1的保持一致。

仿真图分析

基于Quartus II 的数字滤波器设计(FIR Compiler IP核)_第11张图片
由图中可知通带2000-4000HZ带通滤波器滤除了1000HZ与2000HZ叠加波中的1000HZ频段保留了2000HZ频段。

总结

总的来说,基于FPGA的数字滤波器在设计过程中需要配合MATLAB使用,能达到预期的设计效果。
具体的工程代码//download.csdn.net/download/Joy__chen/12522835,如有需要请自取,有问题的话,也可以在讨论区留言,另外大家如果感觉本篇博客对自己有用的话,请大家点赞收藏,谢谢大家。

你可能感兴趣的:(FPGA,fpga,数字信号处理,matlab)