单片机与DSP中的滤波器算法误差
最严重的有限字长效应被称为算法误差。为说明算法误差的来源,考虑图1 所示的定点乘法-累加器(MAC)或SAXPY(S=AX+Y)单元。假设A和X为N bit数字字,二者被送入全精度乘法器,产生一个2N bit的乘积。这个2N bit的全精度乘积在送人T bit累加器之前被缩减为S bit,其中,T≥S且S≤2N。在不同MAC单元中这种缩减操作造成的舍人不同。如果T>S,则一般将其中的累加器称为具有扩展精度的累加器。T bit累加器的输出最终将被缩减成一个M bit的SAXPY输出,其中,M≤T。如果M<2N,一般设舍人误差为 其中,QF(q)表示实数q被量化后得到的数字,它具有F b 在单片机与数字信号处理器(DSP)中,滤波器算法是处理信号的重要环节,而算法误差则是其中的关键问题。这些误差主要源于有限字长的运算,即数据表示和计算过程中采用的位数有限,导致精度损失。本文将深入探讨这种被称为“算法误差”的现象及其来源。 算法误差的典型例子是定点乘法-累加器(MAC)或SAXPY单元的操作。在这个单元中,两个N bit数字A和X通过全精度乘法器相乘,产生一个2N bit的乘积。为了适应有限的存储空间和计算资源,这个乘积在进入T bit累加器之前会被截断为S bit,这里的S介于N和2N之间。不同MAC单元的截断策略可能不同,如果T大于S,那么累加器通常被视为具有扩展精度。最终,累加器的T bit输出会进一步减缩为M bit的SAXPY结果,而M必须小于等于T。 当M小于2N时,舍入误差便成为一个重要的考虑因素。我们可以用QF(q)来表示实数q经过量化后的数字形式,它具有F bit的分数精度。舍入误差的数学表示为: 误差方差可以表示为: 其中,Q = 2 - F,反映了由于分数精度丢失而引入的误差。 然而,仅关注舍入误差是不够的。在无限 impulse response (IIR) 滤波器中,算法误差的影响尤为显著,因为这些错误会在滤波器内部不断反馈和放大。这可能导致滤波器性能的严重退化,如振铃效应、频率响应失真等。 理解算法误差的重要性在于,设计者需要确保即使在有限精度的硬件条件下,滤波器仍能提供可接受的性能。这涉及到误差分析、量化策略优化以及可能的补偿技术,例如预加重、后加重或使用浮点运算。此外,选择合适的滤波器结构,比如使用更稳定的递归结构或增加额外的补偿计算,也可以帮助减轻误差的影响。 单片机和DSP中的滤波器算法误差是一个复杂而关键的问题,它涉及到数据表示、计算过程、误差传播以及滤波器设计等多个方面。通过深入理解算法误差的来源,并采取相应的措施进行优化,可以提高数字滤波器的精度和稳定性,从而实现更高质量的信号处理。
- 粉丝: 6
- 资源: 946
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助