Product成功案例
成功案例
M6米乐最新下载地址FPGA数字信号处理-FIR滤波器及AM解调
发布时间:2024-05-01 02:21:15 来源:米乐m6网页版登录 作者:米乐m6登录米乐平台

  FIR滤波器是什么样的结构,有什么样的特性等等等为了避免大家烦我在这里就不抄课本了。接下来我们就简单的理解下FIR滤波器。

  注意本说法仅仅为新手入门了解。直观了解FIR滤波器的特性。许多定义和概念可能存在纰漏。希望广大读者理性参考。

  我们假设图中的n就为10。接下来我们抛开FIR这个概念。假设我就是要实现10个数字取个平均数。那么我只要让h(0),h(1),h(2)……h(9),均为0.1。那么每个数字进来被乘以0.1。然后把10个数字加起来。这就是一个均值滤波。(这种把两组数据对应相乘然后再加载一起的操作就是卷积的概念)。

  依据经验我们知道,当取的数字越多(即n越大)这个滤波器的输出值就更稳定。消耗的资源对应着也会越多。

  上述举得例子为求均值。但是假设说我们现在要做更复杂的需求,比如滤除一定频率的波形。那就需要更加准确的计算各个参数。所幸我们生于伟大的时代,有很多工具可以代替我们算出更合适的抽头系数。例如matlab的FDATools以及Filolutions 2015。

  打开Filter Solutions这个软件。选择数字滤波器(这个工具功能十分强大,可以设计有源,无源,微带线,数字等等不同种类的滤波器)。

  打开软件设置如下,因为再实现的时候FIR滤波器采用了完全对称的结构。我们选择一个125阶的FIR滤波器。选一个合适的窗函数,至于不同的窗函数有什么不同的性能表现在这里就不赘述了。

  点击选项卡的Vec选项,然后Copy Num/Den ,FIR滤波器的抽头系数就复制到剪切板上了。

  可以看到左侧的频率相应图。其中红色线为设计的参数。蓝色线为经过定点量化后的抽头系数的频率响应。图中的横坐标为归一化的频率(不知道什么叫归一化频率的自行百度),纵坐标为幅度的衰减。可以看到设计效果还是可以的。

  滤波器也可以选则抽取或者插值或者希尔伯特或者最简单的单速率滤波器。关于抽取核插值我会在后面更新的文章中写出,希望大家持续关注。

  为了节约资源我们可以设计成抽取滤波器。但是为了避免造成大家的困惑,本文中依然采用单速率的滤波器。

  接下来进行第三页的设置最上面的哪个就是抽头系数的相关设置,在这里我们可以调节量化(定点化)的参数。从而让前文提到的红线和蓝线更接近(即实现效果更接近设计效果)。当然调节不同的参数,其资源占用和性能表现也会有所不同。下面的几个选项大家可以自行研究。

  在implementation Details (实现细节中)可以看到数据的输出格式。其中定点数为[34:17]。也可以发现资源占用为63个乘法器,因为本设计中的FIR滤波器为对称结构。所以可以省下一半的资源。

  这部分的代码比较简单,我们讲上节课的Modout信号接出来后进行取绝对值。得到的信号是20bit的。我们选取其中的高16bit送入FIR滤波器。然后就可以得到输出了,FIR滤波器的输入输出信号还有一些有效,握手信号之类的,大家自行查阅手册了解。

  接下来进行仿真,仿真中我们把FIR输出的[33:17]位单独拿出来进行显示即可。最终效果如图。

  系统兼具实时性和灵活性,而现有设计方案(如DSP)则难以同时达到这两方面要求。而使用具有并行

  的设计方法有窗函数法、频率取样法、等波纹切比雪夫逼近法(也叫最优设计法)等等。以上所有的理论知识点在任意一本

  FAQ (基本知识问答) /

  的设计 /

  代码及仿真设计 /

  OpenHarmony语言基础类库【@ohos.util.HashMap (非线性容器HashMap)】



上一篇:矢量网络分析仪的工作原理及组成
下一篇:尝试设计有源滤波器?