m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序

news/2024/10/5 1:15:59

1.算法仿真效果

本系统进行了Vivado2019.2平台的开发,Vivado2019.2仿真结果如下:

 

整体仿真结果如下:

 

 

 

放大看,滤波效果如下:

 

 

 

对应的频谱如下:

 

 

 

FPGA的RTL结构如下:

 

 

 

最后用matlab对比仿真,结果如下:

 

 

 

 

 

 

可以看到,FPGA的滤波效果和频谱分析与matlab的结果一致。

 

2.算法涉及理论知识概要

       基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的数字低通滤波器实现和FPGA频谱分析是数字信号处理领域的重要应用,广泛应用于通信、音频处理、图像处理等多个行业。数字低通滤波器旨在允许低频信号通过而衰减高频信号,是信号处理中基础且重要的组件之一。其设计通常基于时域采样定理和滤波器设计理论,常见的实现方法有IIR(无限脉冲响应)滤波器和FIR(有限脉冲响应)滤波器。

 

 

 

       FPGA上实现FIR滤波器,主要通过配置硬件逻辑资源(如查找表LUTs、触发器等)来实现上述卷积运算。具体步骤包括:

 

系数存储:滤波器系数h[k]被存储在FPGA的块RAM中。

并行处理:利用FPGA的并行处理能力,将输入信号序列分块处理,每一块与滤波器系数进行并行卷积。

流水线设计:为了提高处理速度,设计中通常采用流水线技术,即每个运算步骤在不同的时钟周期完成,从而实现连续数据流处理。

      频谱分析是将信号从时域转换到频域,以观察其频率组成的技术。在FPGA上实现频谱分析,最常见的方式是使用离散傅里叶变换(DFT)或其快速版本——快速傅里叶变换(FFT)。

 

 

 

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/05/27 21:38:45
// Design Name: 
// Module Name: test
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module test();reg i_clk;
reg i_rst;
wire signed[15:0]o_x;
wire signed[15:0]o_y;
reg i_before_fft1;                 
reg i_last_fft1;   
reg i_enable1;  
wire             o_enable1;  
wire             o_enable2;  
wire signed[63:0]o_abs_ifft1;
wire signed[63:0]o_abs_ifft2;tops tops_U(
.i_clk (i_clk),
.i_rst (i_rst),
.o_x   (o_x),
.o_y   (o_y),
.i_before_fft1  (i_before_fft1),
.i_last_fft1    (i_last_fft1),
.i_enable1      (i_enable1),
.o_enable1      (o_enable1),
.o_enable2      (o_enable2),
.o_abs_ifft1    (o_abs_ifft1),
.o_abs_ifft2    (o_abs_ifft2)
);initial
begin
i_clk=1'b1;
i_rst=1'b1;
#100
i_rst = 1'b0;
end
always #5 i_clk=~i_clk;
reg [19:0]cnts2;
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begincnts2        <= 20'd0;i_before_fft1<=1'b0;i_enable1    <=1'b0;i_last_fft1  <=1'b0;end
else beginif(cnts2==20'd25000)cnts2  <= cnts2;elsecnts2  <= cnts2 + 20'd1;if(cnts2==20'd0)begini_before_fft1<=1'b1;i_enable1    <=1'b0;i_last_fft1  <=1'b0;endif(cnts2==20'd1)begini_before_fft1<=1'b1;i_enable1    <=1'b0;i_last_fft1  <=1'b0;endif(cnts2==20'd2)begini_before_fft1<=1'b1;i_enable1    <=1'b0;i_last_fft1  <=1'b0;endif(cnts2==20'd3)begini_before_fft1<=1'b1;i_enable1    <=1'b0;i_last_fft1  <=1'b0;endif(cnts2==20'd4)begini_before_fft1<=1'b0;i_enable1    <=1'b0;i_last_fft1  <=1'b0;endif(cnts2>=20'd5 & cnts2<=20'd4+2047)begini_before_fft1<=1'b0;i_enable1    <=1'b1;i_last_fft1  <=1'b0;endif(cnts2==20'd4+2048)begini_before_fft1<=1'b0;i_enable1    <=1'b1;i_last_fft1  <=1'b1;endif(cnts2>20'd4+2048)begini_before_fft1<=1'b0;i_enable1    <=1'b0;i_last_fft1  <=1'b0;endend
endendmodule
00_065m

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/44256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

ch6 信息商品

ch6 信息商品课程目标熟悉信息商品的形成和信息劳动价值理论 掌握信息商品的特征分析及信息商品的价格理论 运用信息商品价格理论分析和理解相关案例多看两眼 ppt 吧,这一部分考的很多 知识回顾 信息商品的概念信息成为商品的基本条件 不宜成为信息商品的信息产品类型 信息商品…

原始套接字

解析MAC数据包原始套接字-解析MAC数据包 原始套接字.c 套接字类型 原始套接字 1、一种不同于SOCK_STREAM、SOCK_DGRAM的套接字,它实现于系统核心 2、可以接收本机网卡上所有的数据帧(数据包),对于监听网络流量和分析网络数据很有作用 3、开发人员可发送自己组装的数据包到网…

http与cJSON练习

http与cJSON练习 /**************************************************************************************************** * weather_test.c * 练习tcp连接,与http协议,调用服务器接口,实现获取特定城市的天气信息…

多线程实现并发

多线程实现并发案例多线程并发服务器 架构 void* thread_fun(void* arg) {while(1){recv()/send()} }scokfd = socket() bind() listen() while(1){accept()//连上就创建线程pthread_create(, ,thread_fun, )pthread_detach() }案例 /* # Multi-process concurrent server…

IO多路复用

高性能并发IO多路复用详解IO多路复用什么是IO多用复路 IO多路复用(Input/Output Multiplexing)是一种在单个线程中管理多个输入/输出通道的技术。它允许一个线程同时监听多个输入流(例如网络套接字、文件描述符等),并在有数据可读或可写时进行相应的处理,而不需要为每个通…

利用聚合API平台的API接口,利用HTTP协议向服务器发送请求,并接受服务器的响应,要求利用cJSON库对服务器的响应数据进行解析,并输出到终端

目录题目分析代码结果 题目利用聚合API平台的API接口,利用HTTP协议向服务器发送请求,并接受服务器的响应,要求利用cJSON库对服务器的响应数据进行解析,并输出到终端 分析1.需从源代码网站GitHub或SourceForge代码网站下载cJSON库及阅读下载的README相关手册如何使用cJSON库…

[DP] [倍增优化] Luogu P1081 [NOIP2012 提高组] 开车旅行

[NOIP2012 提高组] 开车旅行 题目描述 小 \(\text{A}\) 和小 \(\text{B}\) 决定利用假期外出旅行,他们将想去的城市从 $1 $ 到 \(n\) 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 \(i\) 的海拔高度为\(h_i\),城市 \(i\) 和城市 \…

【esp32 学习笔记】让SD卡发光发热~

原理图:图 SD卡部分图 MCU中与SD卡相关的接口 连接关系如下:[ESP32 IO26 – CS MICROSD] [ESP32 IO23 – MOSI(DI) MICROSD] [ESP32 IO19 – MISO(DO) MICROSD] [ESP32 IO18 – SCK MICROSD] [ESP32 GND – GND MICROSD] [3.3V – VCC MICROSD] 软件: 我们将使用SD卡库…