硬件准备

ADSP-21489EVB:ADI 21489 DSP的开发板

AD-HP530ICE:ADI DSP通用仿真器

软件准备

Visual DSP++

算法功能

实现反馈延时功能,用于模拟反射声。声音信号经过该滤波器以后频谱幅度会出现梳状特性。

原理简介

下图是 IIR Comb 滤波器的网络结构:

其差分方程为:

系统函数:

资源占用(MIPS, Memory requirement).

Memory: 数据段(段名 IIRCombFilter_dmda) (D + 2)words (字长 32bits)
D 指延时线长度

代码段(段名 IIRCombFilter_pmco),0x6c words (字长 48bits)
MFLOPS(处理 1 个输入数据): IIRCombFilter 函数,0.0006

相关函数

函数一:void InitIIRCombFilter ( float *DlyBuf, int *BufIndex, int
BufSize );

1.函数说明:初始化函数,将延时线的数据置零。
2.输入参数:
*DlyBuf 延时线指针
*BufIndex 对延时线进行数据操作的索引值
BufSize 延时线长度
3.输出参数:无
4.返回值:无。

函数二:int IIRCombFilter (int *in, int *out, float *DlyBuf, int *BufIndex,
float *Gain, int DelayNum);

1.函数说明:对单声道的输入进行梳状滤波处理,用于模拟反射声。
2.输入参数:
in 输入数据指针。
*in 为单声道数据;
数据范围:int 类型表示的范围
DlyBuf 延时线指针。
Gain 增益系数
数据范围: 0 ≤ *Gain < 1
DelayNum 延时线长度。
数据范围:在存储空间允许的范围内根据需要设定;

3.输出参数:
out 输出数据指针。
*out 为单声道的输出数据;
数据范围:int 类型表示的范围
4.返回值:0 为正常;1 增益参数超范围

应用举例

首先将 IIRCombFilter.dlb, IIRCombFilter.h 两个文件拷贝到自己的工程目录下,然后将它们添加到工程中;然后在 LDF 文件中给数据段 IIRCombFilter_dmda、程序段IIRCombFilter_pmco 分配空间,接下来再写相关代码。

#include “IIRCombFilter.h”
/******************************************************************************

  • 调用 IIRCombFilter.dlb 库函数需定义的参数
    */
    #define D 4800 // 定义延时缓冲区大小 TD = D/fs = 4800/48000 = 0.1 sec */
    #pragma section (“IIRCombFilter_dmda”)
    int DelayBufIndex; // 往延时缓冲区写数据的索引值
    #pragma section (“IIRCombFilter_dmda”)
    float w[D + 1]; // 延时缓冲区
    #pragma section (“IIRCombFilter_dmda”)
    float GainCoef = 0.5; // 增益系数
    /
    /
    // 第一次调用延时函数的标志
    int FirstIIRCombFilterFlag = 1;
    // 输入输出数据的临时变量
    int InputLR;
    int OutputLR[2];
    int InputData;
    int OutputData;
    // 第一次调用全通滤波函数之前先做初始化工作
    if (FirstIIRCombFilterFlag)
    {
    InitIIRCombFilter ( w, &DelayBufIndex, D);
    FirstIIRCombFilterFlag = 0;
    }
    for (i=0; i<NUM_SAMPLES; i++)
    {
    //取左声道数据
    InputData = (block_ptr+2i); // block_ptr 是 A/D D/A 收发数据的指针

//对输入数据进行 Stero Chorus 处理
ReturnValue = IIRCombFilter (&InputData, &OutputData, w, &DelayBufIndex,
&GainCoef, D);

//将处理后的输出数据传给 D/A
(block_ptr+2i) = OutputData;

}

SHARC音频DSP的算法详解(十二)IIR Comb Filter (IIR 梳状滤波器)算法的实现及代码详解相关推荐

  1. SHARC音频DSP的算法详解(一)数字信号里的定点数和浮点数

    作者的话 ADI的音频DSP里,SHARC是现阶段最高端的型号,在汽车座舱的前装后装.音响.调音台等一切音频相关的应用中,都得到了广泛的应用.我在前面的文章中写过一个经典的型号:21489,这个系列就 ...

  2. SHARC音频DSP的算法详解(七)Reverb Delay混响和回声效果的实现及代码详解

    作者的话 延时是非常常见的一种音频上的算法,而在ADI的SAHRC DSP中,可以很好的去实现,我们来看看是怎么做的. 硬件准备 ADSP-21489EVB:ADI 21489 DSP的开发板 AD- ...

  3. SHARC音频DSP的算法详解(十三)Low Pass IIR Comb Filter (带低通滤波的 IIR 梳状滤波器)算法的实现及代码详解

    硬件准备 ADSP-21489EVB:ADI 21489 DSP的开发板 AD-HP530ICE:ADI DSP通用仿真器 软件准备 Visual DSP++ 算法功能 实现反馈延时功能,用于模拟反射 ...

  4. Linux内核Thermal框架详解十二、Thermal Governor(2)

    本文部分内容参考 万字长文 | Thermal框架源码剖析, Linux Thermal机制源码分析之框架概述_不捡风筝的玖伍贰柒的博客-CSDN博客, "热散由心静,凉生为室空" ...

  5. 支付宝支付 第十二集:狂神、飞哥支付宝支付配置代码(免费资源,拿走不谢)

    支付宝支付 第十二集:狂神.飞哥支付宝支付配置代码(免费资源,拿走不谢) 一.资源 链接:https://pan.baidu.com/s/1S-VAAMxiaPkgb2XZMQYEjA 提取码:091 ...

  6. 攻防世界杂项(misc)--新手练习区(详解十二道题完结,附件做题过程中使用到的各种工具和网站)

    攻防世界杂项(misc)–新手练习区(详解) 第一题:this_is_flag 题目描述:Most flags are in the form flag{xxx}, for example:flag{ ...

  7. 【Java数据结构与算法】第十二章 哈夫曼树和哈夫曼编码

    第十二章 哈夫曼树和哈夫曼编码 文章目录 第十二章 哈夫曼树和哈夫曼编码 一.哈夫曼树 1.基本术语 2.构建思路 3.代码实现 三.哈夫曼编码 1.引入 2.介绍 3.代码实现哈夫曼编码综合案例 一 ...

  8. Qt开发技术:Q3D图表开发笔记(二):Q3DBar三维柱状图介绍、Demo以及代码详解

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130150728 各位读者,知识无穷而人力有穷,要么改需 ...

  9. 数字音频总线A2B开发详解十二(A2B一Master板做音效处理-31段EQ,高中低音分频等)

    作者的话 从板B上,我们把Master板上直通过来的音频信号,通过板子上的ADAU1761进行调音,可以让每一块从板都发出自己的声音,那么可不可以从源头,我们在Master上就把声音分配好,高音你去B ...

最新文章

  1. 人工智能不确定性推理,柯南看的懂么?
  2. 日期时间类,按特定格式显示日期时间
  3. SSM中进行Junit单元测试时无法注入service
  4. 自己在windows下第一次安装pygame成功的经历
  5. 802.11MAC基础
  6. 【网络编程】之二、socket API学习
  7. AppFabric客户端的一些配置(Microsoft.Web.DistributedCache)
  8. Effective java 读书笔记
  9. 【基于狂神Docker双响曲】:2、Docker进阶
  10. java代码如何整合_Java如何合并两个PPT文档?
  11. python绘制动态Julia集,超炫酷
  12. 世界500强公司要求员工必须熟练掌握的七种工作方法
  13. 毛头小子初学Java
  14. 计算机打印unknow,系统安装打印机驱动提示unknown device解决方法
  15. 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L
  16. 58 同城 iOS 客户端 IM 系统演变历程
  17. MATLAB-网页访问与关闭
  18. 打开从网络访问计算机,u盘启动大师Win7如何设置允许或拒绝从网络中访问本地电脑...
  19. wireless-tools源码分析-iwpriv
  20. ClassNotFoundException:org.exolab.castor.xml.XMLException

热门文章

  1. C语言-递归法求斐波拉切数列
  2. P2P技术基础: UDP打洞原理
  3. 飞硕家的宠物商店——需求分析
  4. IE浏览器下载APK变成zip的解决方案
  5. 高速缓冲存储器Cache
  6. Java 23种设计模式全归纳 | 已打包请带走
  7. 行业知识:关于发电量与碳排放和等效植树的换算关系
  8. axure小程序模板_小程序模板消息能力调整通知
  9. A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms
  10. JavaScript中的单引号和双引号的区别