0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

频域滤波的C//C++软件化实现

冬至子 来源:雷达系统工程师 作者:忠于梦想 2023-07-04 15:17 次阅读

概述

前段时间用matlab仿真了一波基于FFT卷积的频域FIR滤波器,比如采样率12MHz,需要做一个如下图所示的500KHz低通滤波器(带外抑制仅60dBc),滤波器的阶数为326阶,以XC7K325T的DSP资源数约840作为参考,在12MHz的时钟下只能实现5个这样的滤波器,在采用高频时钟后可以减低DSP资源使用率,但是当归一化频率不变,采样率上升到120MHz,同样的系数滤波器的低通截止频率为5MHz,虽然系数不变,但此时将很难再大幅提高时钟频率复用资源来降低占用率了,一方面不同规格的FPGA芯片都有其自身的频率限制,另一方面逻辑设计本身也会存在时许限制。

图片

带外抑制60dbc的阶数=326

图片

带外抑制80dBc的阶数=399

图片

归一化频率不变,采样率提升到120MHz时(注意:滤波器系数是相同的)

C/C++软件化实现

以下为FFT卷积算法在Qt的C\\C++环境下的实现FIR滤波的效果

图片

图片

原始信号的FFT结果即为常见的信号频谱,该信号存在较强的高次谐波

图片

而滤波器系数FFT后得到的是滤波器的幅频特性曲线,这一点比较有意思,滤波器系数实际是该滤波器的时域冲击响应波形的离散采样

图片

以上为滤波后的频域结果,图中500Khz以外的频谱部分全部被抑制了大约60dBc;

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 低通滤波器
    +关注

    关注

    13

    文章

    453

    浏览量

    47072
  • FFT
    FFT
    +关注

    关注

    15

    文章

    428

    浏览量

    58807
  • C++语言
    +关注

    关注

    0

    文章

    147

    浏览量

    6897
  • fir滤波器
    +关注

    关注

    1

    文章

    92

    浏览量

    18892
  • FPGA芯片
    +关注

    关注

    3

    文章

    246

    浏览量

    39592
收藏 人收藏

    评论

    相关推荐

    为什么 C 语言没有被 C++ 取代?

    C++
    电路设计
    发布于 :2022年12月28日 19:17:25

    C++数据结构:插入排序代码实现

    C++
    电路设计
    发布于 :2023年01月05日 15:44:58

    C++数据结构:快速排序代码实现

    C++
    电路设计
    发布于 :2023年01月05日 15:46:16

    C++数据结构:队列的顺序存储框架实现

    C++
    电路设计
    发布于 :2023年01月05日 15:50:36

    C++游戏逆向辅助 CSGO_透视的实现

    C++
    电路设计
    发布于 :2023年01月10日 13:37:05

    C语言C++常见学习问题

    C++
    电路设计
    发布于 :2023年01月10日 14:07:23

    C++小白自学基础教程之类的实现和测试06

    C++
    电子学习
    发布于 :2023年01月12日 21:27:24

    C/ C++/ Java 程序设计经典教程》

    C语言的标准库 1.9 重要的软件发展趋势:面向对象的技术 1.10 C++语言以及C++编程 1.11 Java语言以及Java编程1.12 其他高级语言 1.13 结构
    发表于 11-13 11:22

    解压包包含了C语言入门经典教程和Visuak c++软件

    `【基本简介】Visual C++是一个功能强大的可视软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual
    发表于 11-13 14:02

    卡尔曼滤波c++代码

    卡尔曼滤波c++代码,基于mpu6050的,非常好使。亲测有效。
    发表于 04-18 14:32

    如何学习C++,如何学好C++

    最近,很多学员都给我发邮件问我应该如何学习C++,如何学好C++?那么作为一个从C语言小白摸爬滚打、入坑无数到成长为如今的高级C++游戏开发工程师、高级
    发表于 08-20 06:27

    C语言C++运用

    很多同学在大学都学过CC++,那么CC++就业怎么样?薪资高吗?小编今天就给大家详细解读一下。学c++ 好不好?
    发表于 11-25 10:47

    如何在ubuntu中用vscode编译调试C\C++

    vscode软件并进行安装:2.等待安装完成之后打开界面如下:2.在ubuntu中用vscode编译调试C\C++在vscode中安装C++的插件,按ctrl+p调出命令行,在上面输入
    发表于 12-14 07:11

    C/C++嵌入式远程调试怎么实现

    C/C++嵌入式远程调试怎么实现
    发表于 12-24 06:24

    学习C++的方法以及C++的就业方向

    (语法)嵌入式技术:在硬件平台移植操作系统嵌入式系统:软件(嵌入式应用软件)、操作系统(内核)、硬件C++做的软件应用到硬件中学习C++的方
    发表于 12-24 07:32