热度 18
2014-12-6 13:59
3625 次阅读|
0 个评论
在 verilog 中没有小数的概念,如果要有小数的计算,最普遍的办法是将小数按 2 的倍数增大计算完后缩小相同的倍数。按 2 的多少倍数增大是个关键。 例如需要将 0.2 变成整数计算,那么需要将 0.2x2 N 使之成为整数,如果没法成为真正的整数,那么就取误差范围相对于小的倍数。 如果 0.2 x 2 3 = 1.6, 那么 verilog 是取 1.6 中的整数进行计算,误差就是( 1.6-1 ) /1.6 = 0.38 左右; 如果 0.2 x 2 6 = 12.8, 那么 verilog 是用 12 进行计算,误差范围是 0.8/12.8 = 0.0625 ;相比之下增大倍数越大同倍数减少时误差范围越来越小,但是不需要夸张的增加放大倍数,通过实际情况,在合理的误差范围内就可以了。