我正在尝试了解NoC仲裁代码。当我尝试使用Xilinx软件进行语法检查时,我收到错误“对于”localparam ARBITER_BIN_WIDTH = log2(ARBITER_WIDTH);“行,”常量表达式中不支持诸如'log2'之类的函数调用“。应该对这条线做什么改变? 我遇到问题的代码部分:
parameter ARBITER_WIDTH =4
input integer number; begin
log2=0;
while(2**log2<number) begin
log2=log2+1;
end
end
endfunction // log2
localparam ARBITER_BIN_WIDTH= log2(ARBITER_WIDTH);
答案 0 :(得分:0)
参见IEEE标准Verilog®硬件描述语言LRM,在10.2.5,他们描述了Log的功能
function integer clogb2;
input depth;
integer i,result;
begin
for (i = 0; 2 ** i < depth; i = i + 1)
result = i + 1;
clogb2 = result;
end
endfunction
你能否证实,它对你有用吗?