目录

  • FIR滤波器
    • 1、dB的含义
    • 2、滤波器的类型
    • 3、各种滤波器的特点(FIR、IIR)
    • 4、实现FIR滤波器
      • ①仿真实现正弦激励的输入(200KHz以及15MHz正弦波)
      • ②仿真FIR滤波器
      • ③Vivado配置
      • ④Vivado配置FIR滤波器
      • ⑤Vivado的Testbench文件
      • ⑥Vivado运行仿真文件

FIR滤波器

1、dB的含义

dB(分贝是一个表征相对值大小的单位),两种功率之比或者电压/电流/声量之比。
功率之比: d B = 10 l g X dB =10lgX dB=10lgX。由于 10 l g 0.5 = − 3 10lg0.5=-3 10lg0.5=−3,因此半功率点是-3dB,相当于功率下降为原来的1/2。
电压/电流/声量之比: d B = 20 l g X dB =20lgX dB=20lgX。原来在-3dB下变化为原来赋值增益的 2 / 2 \sqrt{2}/2 2 ​/2,也就是即 20 l g 2 / 2 = − 3 20lg\sqrt{2}/2=-3 20lg2 ​/2=−3.

2、滤波器的类型

类型 作用
高通滤波器 衰减或消除指定频率以下的频率
低通滤波器 衰减或消除指定频率以上的频率
带通滤波器 允许指定频率范围内的信号通过
带阻滤波器 去除指定范围内的信号频率

3、各种滤波器的特点(FIR、IIR)

1、IIR使用滤波器的输出作为输入;而FIR不使用。
2、相对于FIR滤波器,IIR能使用相对较低的阶数和项数。
3、FIR与IIR相比,IIR的计算速度更快,但同样具有稳定问题以及非线性相位的问题。因此,IIR多用于实时的滤波器应用。
4、FIR在不同频率下的延迟一致;IIR在不同频率的延迟不同。

4、实现FIR滤波器

①仿真实现正弦激励的输入(200KHz以及15MHz正弦波)

使用matlab仿真实现正弦激励的输入(200KHz以及15MHz正弦波),采样后激励波形的值,记录在txt文档中,供testbench文件进行读取。matlab代码如下所示:

%将一个频率大小为200k以及15M的波形进行合成,模拟得出采样后的波形大小,间隔采
%后输入testbench测试文件,当作激励输入。f1=200e3; %设置第一个波的频率为200KHz
f2=15e6;  %设置第二个波的频率为15MHzFs=50e6; %设置采样频率
L=1000; %数据长度大小为1000,采样点数
N=8; %数据位宽(决定每一个数据采集的精度)t=0:1/Fs:(L-1)*(1/Fs);%设置采样间隔;采样频率越高,采样的间隔越短y1= fix(63*(cos(2*pi*f1*t) + cos(2*pi*f2*t)));
%量化合成两种频率的波形(200KHz以及15MHz)plot(t,y1);
title('输入信号');
xlabel('时间');
ylabel('幅度');
fid=fopen('C:\路径\sin_data.txt','w'); %数据写入for k=1:length(y1)%二进制变换
B_s=dec2bin(y1(k)+((y1(k))<0)*2^N,N);
for j=1:N
if B_s(j)=='1'
tb=1;
else
tb=0;
end
fprintf(fid,'%d',tb);
end
fprintf(fid,'\r\n');
end
fprintf(fid,';');
fclose(fid);
②仿真FIR滤波器

参考文档: FIR滤波器的FPGA实现.
可以使用文中两种方式实现FIR滤波器,分别是直接实现,以及使用量化后的实现方式。下面放出自己使用matlab仿真后的效果图。(7阶的滤波器的8位量化的系数:4、28、46、61、61、46、28、4。)

滤波前的时域和频域:

滤波后的时域和频域:

③Vivado配置

Tips1:配置Vivado与vscode的联调环境,使用vscode作为Vivado的编辑器。
选择setting,选择文本编辑器为Custom Editor,并点击选中vscode安装目录下的Code.exe文件。


将路径输入Editor中:E:/路径/Code.exe [file name] -[line number],如下图所示。

配置完成后就可以自动使用vscode打开Vivado中的.v文件、仿真文件等,配置vscode中的相关代码补齐、高亮插件,编辑十分好用。

Tips2:使用vscode中的Testbench插件,直接生成仿真文件框架
安装testbench插件,使用ctrl+shift+p可以唤出。

运行Testbench后,可以直接在终端生成Testbench代码框架。对Testbench的使用十分方便。(如果遇到不能运行的情况,可以退出Vscode,并且在外面使用vscode打开.v文件,不适用Vivado的内部链接打开)

④Vivado配置FIR滤波器

具体代码可以参考参考文档: FIR滤波器的FPGA实现.
下面就不放出具体代码文本,本文参考直接实现的方式。将量化后的波形数据量,逐一输入至滤波器中,根据这个7阶的滤波器得其8位量化的系数:4 28 46 61 61 46 28 4。与系数相乘后,求和(相当于一次卷积操作)。得到滤波之后的结果。

⑤Vivado的Testbench文件
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2021/09/25 13:36:51
// Design Name:
// Module Name: tb
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//`timescale  1ns / 1psmodule tb_lpf_direct;// lpf_direct Parameters
parameter PERIOD  = 20;// lpf_direct Inputs
reg   clk                                 ;//时钟
reg   reset                               ;//复位信号
reg   [7:0]  x_in                         ;//输入信号// lpf_direct Outputs
wire  [24:0]  y_out;                        //输出信号integer i;initial begin clk = 0 ;reset = 0 ;x_in = 0 ;i = 0;
endinitial beginforever #(PERIOD/2)  clk=~clk; //产生时钟
endinitial begin#(PERIOD*2) reset  =  1; //复位信号
endparameter data_num = 32'd10000;
reg [7:0]  data_men[data_num:1];//采用的是8位的数字,并且数据的长度为10000initial begin$readmemb("C:/路径/sin_data.txt",data_men);  //每一个数据的读取
endalways @(posedge clk) begin //每一个时钟周期输入一个采样数据,放入x_in中x_in <= data_men[i];i <= i+1;
endlpf_direct  u_lpf_direct (.clk                     ( clk           ),.reset                   ( reset         ),.x_in                    ( x_in   [7:0]  ),.y_out                   ( y_out  [24:0] )
);endmodule
⑥Vivado运行仿真文件

1、选择波形为模拟波形显示,选择类型为有符号类型数据。


2、进行滤波仿真,x_in为输入的滤波波形数据,y_out为输出的滤波波形数据。
FIR仿真后的结果,低通滤波器将高频信号滤除,保留低频信号。

FPGA学习记录(2)<一般FIR滤波器的FPGA实现>相关推荐

  1. 基于FPGA的FIR滤波器的实现(5)— 并行结构FIR滤波器的FPGA代码实现

    书接上回 三.并行结构的FPGA实现 设计实例 1.matlab参数与数据 2.使用Verilog编写并行结构的FIR滤波器 3.使用matlab将产生的程序进行仿真验证 三.并行结构的FPGA实现 ...

  2. FPGA学习记录(5)<低通带通FIR滤波器FPGA实现>

    目录 Matlab仿真低通的FIR滤波器BLACKMAN窗并使用FPGA实现 (1)FIR&IIR介绍 (2)FIR的FPGA实现与matlab仿真(FIR&BLACKMAN窗& ...

  3. (多图) 基于并行流水线结构的可重配FIR滤波器的FPGA实现

    1 并行流水结构FIR的原理 在用FPGA或专用集成电路实现数字信号处理算法时,计算速度和芯片面积是两个相互制约的主要问题.实际应用FIR滤波器时,要获得良好的滤波效果,滤波器的阶数可能会显著增加,有 ...

  4. 转置型FIR滤波器的fpga实现

    这一节主要讲解一下转置型FIR滤波器实现. FIR滤波器的单位冲激响应h(n)可以表示为如下式: 对应转置型结构的FIR滤波器,如图1所示,抽头系数与上一节中讲解直接型FIR滤波器的实例相同,滤波器阶 ...

  5. 直接型FIR滤波器的fpga实现

    FIR滤波器根据输入数据速率的不同可分为串行结构.半并行结构和全并行结构.串行结构的FIR滤波器是将并行数据串行输入,所需的DSP资源较少,但是数据吞吐率较低:而全并行结构的FIR滤波器数据是并行输入 ...

  6. 【DA算法】基于DA算法的FIR滤波器的FPGA实现

    1.软件版本 quartusii 2.本算法理论知识 DA算法的主要特点是,巧妙地利用查找表将固定系数的MAC运算转化为查表操作,其运算速度不随系数和输入数据位数的增加而降低,而且相对直接实现乘法器而 ...

  7. FIR数字滤波器的FPGA实现(二)-串行FIR滤波器设计(1)

    (二)FIR数字滤波器的FPGA实现-串行FIR滤波器设计 文章目录 (二)FIR数字滤波器的FPGA实现-串行FIR滤波器设计 0 串行FIR滤波器基本原理 1 基于移位寄存器的串行 FIR 滤波器 ...

  8. FIR数字滤波器的FPGA实现(二)-串行FIR滤波器设计(2)

    (二)FIR数字滤波器的FPGA实现-串行FIR滤波器设计 文章目录 (二)FIR数字滤波器的FPGA实现-串行FIR滤波器设计 0 串行FIR滤波器基本原理 1 基于移位寄存器的串行 FIR 滤波器 ...

  9. FPGA学习步骤(打算以后也转FPGA了,毕竟工资比硬件工程师高)

    学习FPGA,在不同层次的人明显有不同的答案.先说一句,说不要开发版的都是菜鸟级选手. 我把FPGA层次划分为,鸡蛋级别,菜鸟级别,老鸟级别,高手级别四类.我是鸡蛋级别的!啥也不会. 1)熟悉语法,其 ...

  10. 【FPGA学习笔记】 第一章: PLD/FPGA新手入门

    第一章          PLD/FPGA新手入门 1.       可编程逻辑器件的发展历程 当今社会是数字化的社会,是数字集成电路广泛应用的社会.数字集成电路本身在不断地进行更新换代.它由早期的电 ...

最新文章

  1. 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting
  2. 计算机表格最高分,excel表格里怎样算最高分 excel各个班的最高分
  3. 如何使用计算机中的导出,如何将iPhone手机中的音乐导出至电脑
  4. Actions require unique method/path combination for Swagger
  5. 使用函数指针实现父类函数调用子类函数的两种方式
  6. 越老越值钱,除了程序员!
  7. asp.net通过登录后修改个人信息_微信号终于可以修改了!快来改一个
  8. ArrayList和LinkedList使用不当,性能差距会如此之大!
  9. Mysql 面试常问4 -- 锁模块之事务并发访问产生的问题以及事务隔离机制 InnoDB支持事务
  10. Zen Cart 常用SQL命令
  11. 从代码中抽离数据的原则
  12. java序列化方式性能比较
  13. selenium 清空缓存
  14. 计算机工程师难度排名,【2018一级造价工程师考试各个科目的难度排行榜】- 环球网校...
  15. 小米pro蓝牙驱动linux,【小米笔记本蓝牙驱动下载】小米笔记本蓝牙驱动程序官方下载 V20.11 通用版-七喜软件园...
  16. RBM算法模型应用在推荐系统 Python代码实现
  17. FPGA学习笔记(七): DSB调制解调的仿真
  18. 计算机专业选什么笔记本cpu,笔记本电脑什么配置好?来看看这款硬核办公本
  19. IOS APP 隐私政策
  20. java hdms_网盘预研 - ZICK_ZEON的个人空间 - OSCHINA - 中文开源技术交流社区

热门文章

  1. Qt-登录界面到主界面的跳转
  2. python django mysql安装_Python的开发环境安装(MySQL、Django、PyCharm)
  3. 【Android知识笔记】图片专题(BitmapDrawable)
  4. SQLAlchemy【复习】
  5. 基于线性表的图书管理系统实验报告
  6. 供给云SAASS平台助力企业品牌构建私域生态
  7. apache-maven-3.6.3安装配置详细教程
  8. 连载| 为什么要走老路找一个数据分析师?(三)
  9. 华为显卡cnn推理环境部署
  10. 各种免费还很好用的网盘