硬件准备

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

AD-HP530ICE:ADI DSP通用仿真器

软件准备

Visual DSP++

算法功能

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

原理简介

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

系统函数:

其中 G(z)是低通滤波器,例如:

资源占用(MIPS, Memory requirement)

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

代码段(段名 LpIIRCombFilter_pmco),0x90 words (字长 48bits)
MFLOPS(处理 1 个输入数据): LpIIRCombFilter 函数,0.0009

相关函数

函数一:void InitLpIIRCombFilter( float *DlyBuf, int BufIndex, floatstate, int BufSize )

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

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

1.函数说明:对单声道的输入进行带低通的梳状滤波处理,用于模拟
有高频衰减的反射声。

2.输入参数:
in 输入数据指针。
*in 为单声道数据;
数据范围:int 类型表示的范围
DlyBuf 延时线指针。
DelayNum 延时线长度。
数据范围:在存储空间允许的范围内根据需要设定;
*state 存储低通滤波的中间数据
LpCoef 低通滤波器的系数指针

  • LpCoef b0; * (LpCoef + 1) b1; * (LpCoef + 2) a1; (注:a0 默认为 1,所以无须传递此系数)

3.输出参数:
out 输出数据指针。
*out 为单声道的输出数据;
数据范围:int 类型表示的范围

4.返回值: 无

应用举例

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

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

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

//对输入数据进行 Stero Chorus 处理
LpIIRCombFilter(&InputData, &OutputData, w, &DelayBufIndex, D, &v_state,
LpCoef);

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

SHARC音频DSP的算法详解(十三)Low Pass 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的算法详解(十二)IIR Comb Filter (IIR 梳状滤波器)算法的实现及代码详解

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

  4. opencv 高通滤波和低通滤波_一阶低通滤波原理详解

    在汽车标定中,使用最多的滤波算法即低通滤波,很多朋友可能知道怎么标定,但是不清楚具体的原理,因此本文将介绍一阶低通滤波的原理.算法建模仿真和优缺点: 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或 ...

  5. 一阶低通滤波器方程_一阶低通滤波原理详解

    在汽车标定中,使用最多的滤波算法即低通滤波,很多朋友可能知道怎么标定,但是不清楚具体的原理,因此本文将介绍一阶低通滤波的原理.算法建模仿真和优缺点:一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一 ...

  6. python低通滤波器_[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波

    [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波 发布时间:2019-04-28 20:35, 浏览次数:2739 , 标签: Python 该系列文章是讲解Python OpenCV ...

  7. [Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  8. 图像降噪算法——高斯低通滤波

    图像降噪算法--高斯低通滤波 图像降噪算法--高斯低通滤波 1. 基本原理 2. C++代码实现 3. 结论 图像降噪算法--高斯低通滤波 1. 基本原理 通过离散傅里叶变换对图像进行滤波流程作非常简 ...

  9. 单片机ADC采样算法----一阶低通滤波

    关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下:  y(n) = q*x(n) + (1-q)*y(n-1)     其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...

最新文章

  1. Builder Design模式和Factory Design模式之间有什么区别?
  2. nginx配置多个server
  3. python第二版第六章课后答案_《Python编程》第六章部分课后练习题
  4. 第八章 PX4-SDlog解析
  5. mariadb 最新精简压缩版 win64 解压即用
  6. 三菱fx3uplc恢复出厂设置_三菱fx3uplc解密过程与步骤分享
  7. ios 旋转屏幕试图切换_iOS增强现实应用(AR)设计指南(上)
  8. 无线策略服务器,无线网络中的分布式资源管理策略研究
  9. Python内置函数filter, map, reduce
  10. 微信支付v3 php 源码,求微信支付wxpayv3服务端完整代码
  11. ListControl
  12. rhino编程语言c井,Rhino插件开发:RhinoScript脚本教程(4):VBScript基础
  13. VS2010中常用的快捷键
  14. word/wps 实用技巧: 批量改大纲标题样式
  15. Tableau计算同比和环比任意天数据
  16. 微信内置浏览器打开所有页面空白解决方案
  17. c语言编写4个子函数用主函数调用,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  18. php 正则车架号,正则判断工具类 - 我的开源中国 - OSCHINA - 中文开源技术交流社区...
  19. 用duilib制作仿QQ2013动态背景登录器
  20. 使用BULK INSERT高效导入大量数据到SQL Server数据库

热门文章

  1. 如何有效的在 60 秒内进行 Linux 服务器性能故障分析
  2. 怎么删除win10的系统更新服务器,win10系统如何删除更新缓存文件
  3. 二维码扫码登录的项目实战(建议收藏)
  4. 机器人操作系统ROS(5)服务编程
  5. python3 [爬虫入门实战]scrapy爬取盘多多五百万数据并存mongoDB
  6. C#实现在现有图片的指定位置添加文字
  7. 微信视频号如何注销关闭?
  8. java中常见的限流算法详细解析
  9. 税务服务器管理系统登不上,网上税务局登录失败解决方案
  10. 超声波驱虫器,把蚊蟑鼠蚁全赶跑