![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 简单混响效果 | |||||
作者:Free 文章来源:本站原创 点击数: 更新时间:2008-2-29 ![]() |
|||||
|
混响效果的算法并不是太复杂,但是由于它需要大量的内存,在DSP上实现的时候只能靠扩展内存来实现。扩展内存的存取速度比DSP内部内存的速度慢很多,因此每个取样值需要多少次内存存取很大程度上影响混响算法的MIPS。 这里介绍一种简单的混响效果,适用于MIPS比较紧张的情况。本混响效果由三个全通滤波器(all pass filter)和一个低通滤波器组成。三个全通滤波器串连产生多重回声,然后通过低通滤波器滤掉回声中的高频噪声。全通滤波器的传递函数公式如下: H(Z) = Y(Z)/X(Z) = (-k + Z^(-m)) / ( 1 – k*Z^(-m))
其中m为回声延时取样数,k为反馈系数。 y(n)=-k*x(n) + x(n-m) + k*y(n-m)
可见其实际上是一个简单的IIR滤波器,时间n的输出由时间n的输入和m点之前的输入与输出计算而得。由于这个IIR滤波器的频率响应为水平直线,所以被称作全通滤波器。 每计算一个输出需要从内存中读取x(n-m)和y(n-m),并把y(n)和x(n)保存进内存。因此需要四次内存存取操作。双声道输入,每个声道通过三个 这样的滤波器,则计算一个取样点的输出需要 2*3*4 = 24次存取操作。若采用频率为200MHz的C5510进行计算,扩展内存的存取时间为70ns,取样频率为44100Hz的话,则计算一秒的数据需要占 用7.4%,14.8MIPS以上的CPU时间。扩展内存速度越慢,需要的时间越长。 仔细研究一下,可以把全通滤波器写成如下公式: w(n) = x(n) - k*w(n-m)
y(n) = w(n-m) + k*w(n-m) 请读者自行验证之。如果使用这个公式的话,那么内存中需要保存的就只是w(n)了,每次计算存取2次,比较上面直接计算性能提高一倍。再加上微不足道的加法 乘法运算,可以在大约8MIPS左右搞定回响中的全通滤波器部分。而低通滤波器如果使用16位二次IIR滤波器的话,计算量不会超过2MIPS,这样整个 回响效果在10MIPS之内实现. |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|