always_comb 程序块中带有 for 循环的优先级情况给出错误?
Priority case with for loop inside always_comb Procedural block gives error?
我正在尝试构建一个静态优先级编码器,例如,
0011101010------>0010000000
基本上最高值的索引应该是1,其他索引必须是0。
我已经用 modelsim 尝试了以下代码,它给出了错误提示:
** 错误:"for" 附近:语法错误,
意外
** 错误:语法错误,意外的 ')',期待 ';'
//代码****************************************** *
integer i;
always_comb begin
priority case (1'b1)
for ( i=0; i<16 ; i=i+1 )
begin
in[15-i] : out= 16'd2**(15-i);
end
endcase
end
在 for
循环中没有生成案例项的语法。你只需要 for
循环
always_comb begin
out = 0;
for (int i=15; i>=0 ; i-- )
if (in[i]) begin
out[i]= 1'b1;
break;
end
end
我正在尝试构建一个静态优先级编码器,例如, 0011101010------>0010000000
基本上最高值的索引应该是1,其他索引必须是0。
我已经用 modelsim 尝试了以下代码,它给出了错误提示:
** 错误:"for" 附近:语法错误,
意外** 错误:语法错误,意外的 ')',期待 ';'
//代码****************************************** *
integer i;
always_comb begin
priority case (1'b1)
for ( i=0; i<16 ; i=i+1 )
begin
in[15-i] : out= 16'd2**(15-i);
end
endcase
end
在 for
循环中没有生成案例项的语法。你只需要 for
循环
always_comb begin
out = 0;
for (int i=15; i>=0 ; i-- )
if (in[i]) begin
out[i]= 1'b1;
break;
end
end