首页 > 其他分享 >【FPGA】FIR数字滤波器设计心得

【FPGA】FIR数字滤波器设计心得

时间:2023-11-27 19:25:54浏览次数:36  
标签:FIR 滤波器 系数 FPGA 相乘 寄存器 输入

【FPGA】FIR数字滤波器设计心得

0 前言

学校的课程设计要求设计FIR滤波器,FPGA芯片是Xilinx的Artix 7,板卡是依元素科技有限公司做的拓展板,2017年的,目前搜不到了,估计是被迭代了。

本文作为课程设计的复盘和总结。

1 FIR滤波器设计

1.1 原理

输入输出特性: FIR(Finite Impulse Response)滤波器是其冲激响应为有限长度的滤波器,针对因果离散时间的N阶滤波器,输出序列的每一个值都是最近输入的加权和:

\[y[n]=h_0x[n]+h_1x[n-1]+···+h_Nx[n-N]=\sum_{i=1}^Nh_i x[n-i] \]

线性相位: 当FIR滤波器的抽头系数具有对称性(奇对称/偶对称)时,FIR滤波器的相频响应具有线性特征,即输入信号的各组份频率之间的相位关系经过滤波器后不发生改变。
线性相位FIR滤波器的系数存在四种情况,如下图(h[k]为抽头系数,M为阶数):

1.1 一般结构框图

1.2 简单分析

FIR滤波器的十分简单,从输入输出方程来看就是系数h和输入x之间的卷积操作,拆解开来就是,存储,相乘,相加。

1.2.1 存储

  • 对于M阶FIR滤波器,需要M+1个寄存器来暂存M+1个输入数据,并且这M+1寄存器需要组成一个FIFO。
  • 对于M阶FIR滤波器,需要M+1个寄存器来存储M+1个抽头系数,系数决定了滤波器的截止频率,通带特性等等。

1.2.2 相乘

相乘很简单,在verilog中就是两个寄存器值的相乘,值得一提的是,如果系数符合对称特性,我们可以通过对称式结构设计来减少一半的相乘操作,此外,还可以减少一半的抽头系数的存储。

1.2.3 相加

累加操作是比较消耗时间的,需要加的数越多,消耗的时钟周期就越多。一半单纯的累加,x个数据需要消耗x-1个时钟周期来完成,本次使用的是喜闻乐见的所谓多级流水线累加,即增加并行的加法语句,同周期内尽可能增加加法语句来缩短消耗的时间,代价是增加了相关的资源消耗。

1.3 设计结构框图

以阶数N=16为例,如图

以上是一个16阶的对称式FIR设计图,总的来讲,对于偶数阶N的FIR滤波器设计,需要N+1个移位寄存器暂存连续数据,需要N/2+1个乘法器用于数据相乘运算,以及若干加法器用于数据的累加,累加的结果即为FIR滤波的输出结果。

2 模数转换

2.1 ADC10080

ADC10080是板卡上的ad芯片型号,速率最高80MSPS,数字位宽10bits,并行输出。该芯片的理论输入电压规范是1.45V offset,2.00Vpp,输出数据符合Offset Binary格式,即输出数字为非负数,输入电压最小值对应0000000000,输出电压最大值对应1111111111 。

2.2 DAC900

DAC900是板卡上的da芯片型号,速率最高165MSPS,数字位宽10bits,并行输入。该芯片的理论输入数据是标准正二进制编码。需要留意,该芯片的Bit1管脚数据位是MSB(Most Significant Bit),即最高位。

3 系数生成

系数使用matlab的filter designer辅助设计并量化。

4 仿真

仿真输入数据为7.5MHz和250KHz的叠加波,具体滤波效果如下.
低通:

高通:

5 实测

低通:

高通:

6 尚留疑问

对于128阶的FIR滤波器,我发现滤波器的过渡带宽比较大,从通带到阻带大概有几百KHz,在不增加阶数的条件下,如何减小过渡带宽是一个问题。

参考资料:
https://blog.csdn.net/k331922164/article/details/117536723
https://www.runoob.com/w3cnote/verilog-fir.html

标签:FIR,滤波器,系数,FPGA,相乘,寄存器,输入
From: https://www.cnblogs.com/Baiyug/p/17860153.html

相关文章

  • firewalld区域
    firewalld动态防火墙常用名Trusted 允许所有数据包 Drop 拒绝所有流量Public 拒绝流入流量,除非与流出相关 如:ssh等则拒绝Firewalld服务名称1.Firewall-cmd命令行配置2.Firewall-config 图形化配置选择一个就行,不要同时配置实验查看生效的区域Firewall-cmd--get //tab补全fir......
  • Firefox 在 2023 变得更快了
    Mozilla官方博客最近发表文章,称2023年Firefox在提升用户体验方面取得了显著的进展,真实用户使用Firefox能感受到速度更快。据介绍,Firefox通过收集与页面加载、响应速度、启动等浏览器性能相关的匿名化时间度量指标来衡量用户体验。文章分享了一些对用户浏览器体验至关重......
  • 基于FPGA的图像指数对比度增强算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览      2.算法运行软件版本Vivado2019.2 matlab2022a 3.算法理论概述3.1图像指数对比度增强概述     图像指数对比度增强是一种常见的图像处理方法,主要是通过改变图像的像素值来增强图像的对比度。具体来说,它通常通过将原始图像......
  • firewall
    目录开放端口批量添加开放端口关闭端口重新加载防火墙配置查询防火墙中指定的端口是否开放查询开启的端口列表查看当前系统默认的作用区域列出当前开启的服务列表重启防火墙关闭防火墙查看防火墙状态工具firewall-cmd,该工具是Linux提供的专门用来操作firewall的。选项说明......
  • python 打开firefox
    Python打开Firefox介绍Python是一种强大的编程语言,它可以用于各种各样的任务,包括自动化测试、网络爬虫、数据分析等。在某些情况下,我们可能需要用Python打开Firefox浏览器,进行一些网页操作。本文将介绍如何使用Python打开Firefox浏览器,并且提供相应的代码示例。安装......
  • 什么是 Web 应用性能参数中的 First Contentful Paint
    "FirstContentfulPaint"(简称FCP)是一个非常重要的性能指标,用于测量我们的网页在用户的设备上渲染出第一片有意义内容的时间点。这个指标是Web性能用户体验的关键部分,因为它直接关系到用户对网站加载速度的第一印象。在互联网世界中,每一毫秒的延迟都可能影响用户的满意度,甚至影......
  • FPGA实现分频器
    1`timescale1ns/1ns23modulefpq_tb();456reg[0:0]sys_clk;7reg[0:0]sys_rst_n;8wire[0:0]clk_out;910initialbegin11sys_clk=1'b0;12sys_rst_n=1'b0;13#50;14sys_rst_n=1......
  • 基于FPGA的图像二值化处理,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览 将FPGA的数据导入到matlab进行显示   2.算法运行软件版本Vivado2019.2 matlab2022a 3.算法理论概述      基于FPGA(现场可编程门阵列)的图像二值化处理主要依赖于数字图像处理技术。其原理是将灰度图像转化为二值图像,使图像只剩下......
  • FPGA入门笔记006——状态机设计实例
    状态分析:状态1:等待“H”的到来,如果检测到“H”,进入状态2,检测“e”,否则一直等待“H”;状态2:检测当前字符是否是“e”,如果是“e”,跳转到状态3,检测“l”,否则,回到状态1,重新等待“H”;状态3:检测当前字符是否是“l”,如果是“l”,跳转到状态4,检测“l”,否则,回到状态1,重新等待“H”;状态4:......
  • Firefox developer tools truncates long network response, Chrome does not show
    Firefoxdevelopertoolstruncateslongnetworkresponse,ChromedoesnotshowFirefoxdevtoolsnetworkinspectorstilltruncatesresponsesto1MBbydefault.Youcanchangeordisablethelimitbynavigatingtoabout:configandchangingdevtools.netmonit......