Chisel3 - util - Math vs. CircuitMath

本文探讨了软件中Math库的对数辅助方法,包括log2Ceil、log2Floor等,以及硬件电路设计中CircuitMath的Log2算法实现。通过对比不同方法,深入解析对数运算在信息技术领域的应用。
 
 
对数相关的辅助方法,Math通过软件方法实现,CircuitMath通过硬件方法实现。
 
参考链接:
 
 
1. Math
 
1) log2Up
 
log2Ceil,建议使用log2Ceil。
 
2) log2Ceil
 
求对数,向上取整。
 
 
一方面:
1位二进制无符号数,表示的数值范围:0, 1
2位二进制无符号数,增加的数值范围:2, 3
3位二进制无符号数,增加的数值范围:4, 5, 6, 7, 即:2^(3-1) .. 2^3 - 1
...
n位二进制无符号数,增加的数值范围:2^(n-1) .. 2^n - 1
 
即是bitLength每增加1,增加的数值范围;
 
另一方面:
若log2(N)向上取整为n,则N的数值范围为:2^(n-1) + 1 .. 2^n;
则N-1的数值范围为:2^(n-1) .. 2^n - 1,这正是n位二进制无符号数所增加的数值范围;
 
所以:
(N-1).bitLength = n;
 
仅供理解,并非严谨证明。姑妄观之。
 
3) log2Down
 
log2Floor,建议使用log2Floor。
 
4) log2Floor
 
求2的对数,向下取整。
基于log2Ceil,把向上取整加的1减掉。如果没有加1,也就不需要减了。
 
5) isPow2
 
判断一个数字是否2的指数幂。
 
 
2. CircuitMath
 
生成一个计算某个数的2的对数值的电路。小数部分舍弃掉。
 
 
1) Log2
 
使用分治策略,若高位的一半有比特置1,则使用高位的一半进行后续计算。
 
3. 附录

转载于:https://www.cnblogs.com/wjcdx/p/10167517.html

/home/wsk/.foundry/bin/forge: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/wsk/.foundry/bin/forge) /home/wsk/.foundry/bin/forge: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/wsk/.foundry/bin/forge) /home/wsk/.foundry/bin/forge: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/wsk/.foundry/bin/forge) foundryup: command failed: /home/wsk/.foundry/bin/forge -V foundryup: use - /home/wsk/.foundry/bin/cast: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/wsk/.foundry/bin/cast) /home/wsk/.foundry/bin/cast: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/wsk/.foundry/bin/cast) /home/wsk/.foundry/bin/cast: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/wsk/.foundry/bin/cast) foundryup: command failed: /home/wsk/.foundry/bin/cast -V foundryup: use - /home/wsk/.foundry/bin/anvil: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/wsk/.foundry/bin/anvil) /home/wsk/.foundry/bin/anvil: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/wsk/.foundry/bin/anvil) /home/wsk/.foundry/bin/anvil: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/wsk/.foundry/bin/anvil) foundryup: command failed: /home/wsk/.foundry/bin/anvil -V foundryup: use - /home/wsk/.foundry/bin/chisel: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/wsk/.foundry/bin/chisel) /home/wsk/.foundry/bin/chisel: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/wsk/.foundry/bin/chisel) /home/wsk/.foundry/bin/chisel: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/wsk/.foundry/bin/chisel) foundryup: command failed: /home/wsk/.foundry/bin/chisel -V
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值