Goertzel算法广泛用于检测给定信号输入中的若干频率。.pdfVIP

Goertzel算法广泛用于检测给定信号输入中的若干频率。.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
产品指南:Goertzel 算法在Blackfin DSP 上的高效定点实现 作者:Hazarathaiah Malepati 和Yosi Stein 本文中,我们将简要讨论Goertzel 算法流程,以及如何利用ADI Blackfin 的特殊算术模式在 Blackfin BF5xx 处理器上定点实现该算法。具体而言,我们将讨论如何在MAC 友好的 16 位Blackfin DSP 处理器上高效实现16.16 定点乘法。 Goertzel 算法算法 算法算法 Goertzel 算法广泛用于检测给定信号输入中的若干频率。 在给定N 个输入样本的情况下,虽然N 点快速傅里叶变换(FFT)算法可以有效计 算N 个离散傅里叶变换(DFT)系数,但有些如双音多频(DTMF)等应用并不需要 所有DFT 系数。此时,可以利用Goertzel 算法通过二阶线性滤波器高效计算输 入信号x[n] 的所需DFT 系数 (或频率)。 [Pro1992]从标准DFT 方程式导出计算第k 个DFT 系数的递归表达式: 现在,控制以上差分方程的Z 域传递函数可以表示为: 用于实现Goertzel 算法的最终表达式可以从以上系统函数得出: 根据公式(1), 由公式(4)可知,为了计算DFT 系数,我们只需关注无限脉冲响应(IIR)滤波器输 出。因此,我们无需计算每个输入样本sk 的有限脉冲响应(FIR)滤波器输出 Y [z]/S [z]。 k k 第k 个DFT 系数的幅度平方值可以从公式(4)得出: 对于每个样本,利用公式(3)计算s 只需要1 个乘法操作和2 个加法操作。在 k 2 DTMF 检测等应用中,我们只关心第k 个DFT 系数的幅度平方|X[k]| ,如公式(5) 所示。 与要求存储许多旋转因子的DFT 不同,Goertzel 算法不需要存储任何系数。计 算中,我们只使用一个系数(q = 2cos(2πk/N) ),可以利用单个数据寄存器保存 该系数。 定点定点实现实现 定点定点实现实现 对于第k 个音检测,我们利用Goertzel 算法计算第k 个DFT 系数的幅度平方, 然后将适当的阈值应用于该幅度平方值以检测该音。在这一实现方法中,我们将 使用公式(3)和(5)。 此应用中,k 和N 的值是事先已知的。因此,我们可以预先计算值q = 2cos(2πk/N) 。实现该算法实际很简单,仅涉及乘法、加法和更新操作,如下图图 图图 1 中的伪代码所示。 Figure 1: Pseudocode for Goertzel algorithm 图图1::Goertzel 算法的伪代码算法的伪代码 图图 :: 算法的伪代码算法的伪代码 在公式(3)的递归计算中,当信号含有第k 个频率成分时,s [n]的值会增大。因 k 此,对于s [n],我们不能使用1.15 或1.31 定点格式。 k sk[n]的最终幅度取决于块大小N。如果我们选择[n].[16-n]格式,利用乘法累积 (MAC)单元在Blackfin 处理器上高效实现乘法,则必须在迭代程序的中间按比例 缩小,以免寄存器溢出而导致输出精度损失。 为了更好地说明简单而高效的Blackfin 实现方法,我们将对所有系数、中间变量 和输入样本使用16.16 本机格式。 对[a].[b]和[c].[d]格式的两个定点数执行乘法时,输出为[a+c].[b+d]定点格式。这 意味着,当两个16.16 数相乘时,输出为32.32 格式。 这里,我们必须将乘法输出再归一化为16.16 格式,以执行其它算术操作。利用 Blackfin 的MAC 特殊算术模式[Abf2005]很容易实现这一点。 高性能Blackfin DSP 处理器只需4 个时钟周期就能

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档