·IR滤波器的定标 scaling方法 ◆由于滤波器系数的量化引入舍入误差用定点法实 现IR滤波器时推荐使用多个二阶基本节级联组 成,这样可以减小高阶滤波器对误差的频率响应灵 敏度。另外避免溢出对IIR滤波器也非常重要。 ◆可以通过把中间结果保存在处理器累加器来避免 节间数据溢出。为防止在第k阶内部发生数据溢出 需要用增益系数对滤波器的单位脉冲响应(前馈通 道)定标。G=∑afm),G1=∑(abf(m)2 ◆动态定标 scaling方法。在每个阶段若检测到溢出 滤波器内部状态定标都被减半以提高指令周期 换取为代价提高了结果的精度
⚫ IIR滤波器的定标scaling方法 ◆ 由于滤波器系数的量化引入舍入误差,用定点法实 现IIR滤波器时, 推荐使用多个二阶基本节级联组 成, 这样可以减小高阶滤波器对误差的频率响应灵 敏度。另外避免溢出对IIR滤波器也非常重要。 ◆ 可以通过把中间结果保存在处理器累加器来避免 节间数据溢出。为防止在第k阶内部发生数据溢出, 需要用增益系数对滤波器的单位脉冲响应(前馈通 道)定标。 ◆ 动态定标scaling方法。在每个阶段若检测到溢出, 滤波器内部状态,定标都被减半, 以提高指令周期 换取为代价提高了结果的精度。 k n G abs(f (n)) , = 2 1/2 k n G (abs(f (n)) ) = 20
●FFT的定标方法 右移1位即÷2,20logm2=6) ◆在FFT操作里,每次蝶形运算后数据平均增加一位。 输入定标需要移位g2N(FFT长度为N这会导致在 计算FFT之前就衰减60g2NdB。 ◆在固定定标中,每级蝶形运算输出除以2这是最常用 的FFT定标方法,因为它简单而且有比较好的信噪比。 但是对于大的FFT这种定标可能会使信息丢失。 另一种方法是动态定标,即在输出溢出时再除以2。在 这种情况下会在这个过程中指定一个变量,每定标 次变量的值加1计算结束后根据变量的值把结果乘以 个系数。动态定标的信噪比最好,但会增加FFT循环 次数 21
⚫ FFT的定标方法 ◆在FFT操作里,每次蝶形运算后数据平均增加一位。 输入定标需要移位 (FFT长度为N), 这会导致在 计算FFT之前就衰减 6 dB。 ◆在固定定标中, 每级蝶形运算输出除以2, 这是最常用 的FFT定标方法, 因为它简单而且有比较好的信噪比。 但是, 对于大的FFT, 这种定标可能会使信息丢失。 ◆另一种方法是动态定标, 即在输出溢出时再除以2。在 这种情况下, 会在这个过程中指定一个变量, 每定标一 次变量的值加1, 计算结束后根据变量的值把结果乘以 一个系数。动态定标的信噪比最好, 但会增加FFT循环 次数。 log 2 N log 2 N 21 (右移1位即÷2, log ) 10 20 2=6
第7章应用程序设计 内容提要 ■71定标与溢出处理 ■72基础算术运算 73FIR滤波器 ■74IIR滤波器 75快速傅里叶变换(FFT) 76 DSPLIB的使用
第7章 应用程序设计 内容提要: ◼ 7.1 定标与溢出处理 ◼ 7.2 基础算术运算 ◼ 7.3 FIR滤波器 ◼ 7.4 IIR滤波器 ◼ 7.5 快速傅里叶变换(FFT) ◼ 7.6 DSPLIB的使用 22
72基础算术运算 ■721加减运算 722乘法运算 723除法运算 724小数乘法
7.2 基础算术运算 ◼ 7.2.1 加减运算 ◼ 7.2.2 乘法运算 ◼ 7.2.3 除法运算 ◼ 7.2.4 小数乘法 23
721加减运算 在数字信号处理中,加减运算是常见的算术运算。 般使用16位或32位加减运算,数值分析、浮 点运算和其它操作可能需要32位以上的运算。 C55X有直接完成16位或32位加减运算的指令, 但没有能直接完成多字加减运算的指令。要进行 多字加减运算,需要通过编程方法实现。 24
7.2.1 加减运算 ⚫ 在数字信号处理中,加减运算是常见的算术运算。 一般使用16位或32位加减运算,数值分析、浮 点运算和其它操作可能需要32位以上的运算。 ⚫ C55x有直接完成16位或32位加减运算的指令, 但没有能直接完成多字加减运算的指令。要进行 多字加减运算,需要通过编程方法实现。 24