作者zxvc (众生都是未来佛)
看板Electronics
标题Re: [心得] 用Verilog/SystemVerilog计算log2
时间Fri Jun 18 14:00:41 2010
: → TripleC:check whether your log2 can solve non-power-of-2 int 06/18
09:5
谢谢提醒,的确怪怪的。
这种写法:
for (log2=0; value>0; log2=log2+1)
value = value>>1;
会造成log2(8) = 4。
如果我们希望log2(8) = log2(7) = log2(6) = log2(5) = 3的话。
可以改成这样:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function automatic integer log2;
input integer in;
begin
for(log2 = 1; in > 2**log2; log2 = log2+1) begin
end
end
endfunction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
信佛的人要知道:佛绝不会说谎。但请把握时光。
法灭尽经:
http://www.cbeta.org/result/normal/T12/0396_001.htm
共勉之。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.73.168
※ 编辑: zxvc 来自: 140.115.73.168 (06/18 16:38)
1F:→ zxvc:抱歉,log2应该初值为1比较正确。 06/18 16:40
2F:→ zxvc:其实我後来发现原网址的算法不能说有bug。只是它是用在"存一 06/18 16:43
3F:→ zxvc:个数,最少要几bits"。但它取名为log2,又它的log2(8) = 4, 06/18 16:44
4F:→ zxvc:就有点奇怪。 06/18 16:44
5F:→ zxvc:其实clog2 = celling of log base 2。 06/27 13:38