|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——数据舍入算法
! G9 C! U! z* Q- [6 A2 I
9 G1 K7 J4 I0 @$ B/ @/ g在数字信号处理中,测量数据由于加法、乘法等运算位宽被扩大,但是资源利用上的考虑,在精度和误差有效范围内后续的处理并不需要这么大的位宽,因此对数据进行截断或者舍入处理是很有必要的。如图1所示为Xilinx FIR IPCore的参数配置界面,在FIR滤波器实现中必不可少的就是乘累加运算了,因此输出必有舍入处理,如图中Output Rounding Mode选项中就有很多种舍入算法。图1 关于舍入算法有多种,主要有Round Toward Nearest、Round Ceiling、Round Floor和Truncation:% D. U l- B, u# N. W f) z. k
Round Toward Nearest
% U6 S5 Q. P. n- q; O: ~Rounding Toward Nearest就是通常所说的“四舍五入”,以5为有符号数为例,高3位为整数位(包含最高位符号位),低2位为小数位。如图2所示,对5为有符号二进制数进行了舍入处理,舍去小数位,其中小数位大于0.5,整数位进1,小于0.5时不进位,而等于0.5时,舍入后数据打了问号,因为对于0.5的舍入处理,又可分为4种处理算法:5 ?5 f, i. Q) L. o' k, ~1 w
(1). Round Half Up' J& n( M+ d' y( [' V* H4 ]
(2). Round Half Down
5 I$ Y4 n* q. u/ \6 Z* ?( W(3). Round Half Even$ x$ y1 j2 Q. J
(4). Round Half Odd
: o$ Y* Q& p: P并且以上第(1)、(2)种算法对应分别有对称(Symmetric)和非对称(Asymmetric)2类。
" O8 r2 k3 \" _- |$ d3 Q4 s图2 (1). Round Half Up1 T7 I! V. v/ h8 B6 p& {6 S; f
Round Half Up算法对于0.5的舍入处理为向上取值,因此此例中整数位进1,而这仅对正数部分而言,对于负数部分可按照相对于0对称与否分为2类,如图3所示。; B4 h* _* L: }! o
图3 (2). Round Half Down. K- n7 }, V. f) n( s
Round Half Down算法对于0.5的舍入处理为向下取值,因此此例中整数位不进,而这仅对正数部分而言,对于负数部分可按照相对于0对称与否分为2类,如图4所示。
' T- S: j: o5 x; n图4 (3). Round Half Even Y% b# F6 |& I9 `' s
Round Half Even算法根据有效位来判断是否进位,在此例中,舍去小数位,因此判断整数位即可,如果整数位为偶数,则不进位,奇数则进位,因此舍入处理后整数位肯定是个偶数。如图5所示,可以发现Round Half Even必然是Symmetric算法。% m2 t. m6 O/ P9 T* P1 [/ }
图5 (4). Round Half Odd
$ x1 x5 M. [' c( JRound Half Odd算法根据有效位来判断是否进位,在此例中,舍去小数位,因此判断整数位即可,如果整数位为奇数,则不进位,偶数则进位,因此舍入处理后整数位肯定是个奇数。如图6所示,可以发现Round Half Odd必然是Symmetric算法。
) K! c% z0 E, B; i图6 Round Ceiling K/ k! }- `6 q, L5 z# ^
Round Ceiling算法的舍入处理总是朝正无穷趋近,对于正数而言,只要舍去位大于0,就进位;对于负数则直接截断处理,如图7所示。! `3 o) N; S% q
图7 Round Floor- r. D3 F8 s k2 B# ^( ?- v* d* V- Y
Round Floor算法的舍入处理总是朝负无穷趋近,舍入处理与Round Ceiling相反,对于负数而言,只要舍去位大于0,就进位;对于正数则直接截断处理,如图8所示。5 ?, {3 x0 P; U; ^3 O
图8 Truncation: j4 G. M: i: q* U! e: T
Truncation是直接的截位处理,如图9所示。另外还有一种Round To Zero算法,舍入处理采用的也是简单的截断。
' z; D# a! }4 m- P& _# O9 _图9
9 Z9 x* ]: D% t |
|