词条 | BlockfloatingFFT |
释义 | BlockfloatingFFT又称为块浮点FFT运算。 在FFT的硬件实现中,必须解决数据的动态范围问题.可以采用以下不同的数据格式来解决这一问题: 1)采用定点运算方案; 2)采用浮点运算方案; 3)采用块浮点运算方案. 定点运算,实现结构简单,存储空间少,运算速度快,但因受到字长的限制,数据动态范围小,舍入误差会降低最终处理结果的精度. 浮点运算,可以消除动态范围局限的问题,输出信号平均信噪比较高,但运算电路复杂,存储空间大,运算速度慢,系统造价较高,而且在加法和乘法中都会产生舍入误差. 块浮点介于浮点和定点之间,是2种表示法的结合.在这种表示法中,一组数据具有一个----共同的指数,这个指数是这组数中绝对值最大的那个数的指数.这样,在对数据块执行加法和乘法运算时,无需进行额外的指数操作,仅对尾数进行加法和乘法运算即可,与定点运算一样方便.在运算过程中,逐级进行溢出判断和移位选择,实现动态范围扩展E引。 把一个数表示为尾数部分和指数部分,则称该数为浮点数(floating point number)。例如十进制数为+63.8写成浮点数则为0.638×102,其中+0.638是尾数部分,102是指数部分。对浮点数进行的算术运算称为浮点运算。 下面介绍一下在Altera公司提供的FFT IPCORE中与此概念相关的内容: Altera 提供的FFT Megacore 提供三个有关信号的输出,也就是实部幅值,虚部幅值和指数 值(exp)。FFT 采用 Block Floating Point (bfp)的数字表达方式。所谓的BFP 是介于定点数和浮点数之间的一种数字表示方法。众所周知,每个浮点数由尾数(mantissa)和指数(Exponent) 共同 组成。如果要计算的数多了,额外的指数寄存器就会让一些系统吃不消了。一个解决办法就 是,一批要被同样的算法处理的数,假设把 n 个这样的数叫做一个 block,让他们共享一个 指数寄存器,数与数的区别仅在其尾数项。在运算的时候幅值最大的那个数的最高位成为敏 感位,如果它要溢出,那么指数寄存器记录一次(如果用符号表示溢出一次,原来指数寄存 器的值为-1,则新值应该为-2),同时尾数向右移一位(LSB 被丢弃,MSB前面补符号位), 这样尾数就不会溢出。到最后综合计算结果的时候,尾数的值向左移n位(如果指数(exp)最后值 为-n的话),或者说尾数乘上2的n次方才对应真正的输出。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。