作者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)
→ zxvc:抱歉,log2應該初值為1比較正確。 06/18 16:40
→ zxvc:其實我後來發現原網址的算法不能說有bug。只是它是用在"存一 06/18 16:43
→ zxvc:個數,最少要幾bits"。但它取名為log2,又它的log2(8) = 4, 06/18 16:44
→ zxvc:就有點奇怪。 06/18 16:44
→ zxvc:其實clog2 = celling of log base 2。 06/27 13:38