找回密码
 注册
关于网站域名变更的通知
查看: 358|回复: 1
打印 上一主题 下一主题

转——数据舍入算法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-9 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——数据舍入算法

. E2 F4 f5 E& G; P5 c5 v
3 @, f9 K3 K6 _: A在数字信号处理中,测量数据由于加法、乘法等运算位宽被扩大,但是资源利用上的考虑,在精度和误差有效范围内后续的处理并不需要这么大的位宽,因此对数据进行截断或者舍入处理是很有必要的。如图1所示为Xilinx FIR IPCore的参数配置界面,在FIR滤波器实现中必不可少的就是乘累加运算了,因此输出必有舍入处理,如图中Output Rounding Mode选项中就有很多种舍入算法。
图1
         关于舍入算法有多种,主要有Round Toward Nearest、Round Ceiling、Round Floor和Truncation:
* W9 Z0 l* T0 t5 Q8 w) d( a3 l( s* _' {       Round Toward Nearest
# i- z; v* A+ G. y' R- P9 d( v; |Rounding Toward Nearest就是通常所说的“四舍五入”,以5为有符号数为例,高3位为整数位(包含最高位符号位),低2位为小数位。如图2所示,对5为有符号二进制数进行了舍入处理,舍去小数位,其中小数位大于0.5,整数位进1,小于0.5时不进位,而等于0.5时,舍入后数据打了问号,因为对于0.5的舍入处理,又可分为4种处理算法:
' u) e: X, Y$ }" f0 t6 n1 h(1). Round Half Up
3 ]( _% ^* m# i! }0 n(2). Round Half Down
' p7 X4 k$ S* _; L(3). Round Half Even. I* v, T9 S, A2 r3 d
(4). Round Half Odd$ _# ?4 F: K4 F2 w
并且以上第(1)、(2)种算法对应分别有对称(Symmetric)和非对称(Asymmetric)2类。
. e9 L# z$ ]" o) l
图2
(1). Round Half Up
) n! A2 u/ a, l         Round Half Up算法对于0.5的舍入处理为向上取值,因此此例中整数位进1,而这仅对正数部分而言,对于负数部分可按照相对于0对称与否分为2类,如图3所示。
: _- c& Y! M/ H- c. {) U
图3
(2). Round Half Down
: U" k7 |2 v6 f+ ?Round Half Down算法对于0.5的舍入处理为向下取值,因此此例中整数位不进,而这仅对正数部分而言,对于负数部分可按照相对于0对称与否分为2类,如图4所示。' S/ |3 K! Y; s+ p$ W" z$ E+ X
图4
(3). Round Half Even
5 a: c* I& B: @* B* X* jRound Half Even算法根据有效位来判断是否进位,在此例中,舍去小数位,因此判断整数位即可,如果整数位为偶数,则不进位,奇数则进位,因此舍入处理后整数位肯定是个偶数。如图5所示,可以发现Round Half Even必然是Symmetric算法。& e5 ?8 k' J8 c( q+ H) N
图5
(4). Round Half Odd
) q, T* }. W- O, G" S& GRound Half Odd算法根据有效位来判断是否进位,在此例中,舍去小数位,因此判断整数位即可,如果整数位为奇数,则不进位,偶数则进位,因此舍入处理后整数位肯定是个奇数。如图6所示,可以发现Round Half Odd必然是Symmetric算法。
$ H) d$ S# v9 {
图6
       Round Ceiling
9 \# @1 q6 l7 C" ~8 S$ o# G$ ~5 k         Round Ceiling算法的舍入处理总是朝正无穷趋近,对于正数而言,只要舍去位大于0,就进位;对于负数则直接截断处理,如图7所示。
" U: S6 z0 t" d5 V
图7
Round Floor0 X3 {. ~; s6 d( f
Round Floor算法的舍入处理总是朝负无穷趋近,舍入处理与Round Ceiling相反,对于负数而言,只要舍去位大于0,就进位;对于正数则直接截断处理,如图8所示。
+ j& M, W2 H, Z7 N. k! d5 v  k
图8
Truncation
- J  ?. K5 H3 L! `Truncation是直接的截位处理,如图9所示。另外还有一种Round To Zero算法,舍入处理采用的也是简单的截断。; e5 ^3 o1 t+ p4 Q6 B- \3 @
图9

# f% D9 e1 ]+ m% n8 h( |8 I3 y$ k7 C

该用户从未签到

2#
发表于 2019-5-9 17:46 | 只看该作者
很棒的资料 值得学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 11:22 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表