我尝试在Verilog的case语句中生成一些条件。在verilog中使用'generate'时出现问题总是阻止
我有一个称为MANT_WIDTH参数,并在case语句条件的数量取决于例如MANT_WIDTH
值我有
always @(*) begin
case (myvariable)
{MANT_WIDTH{1'b1}}:
begin new_variable = {1'b0, {MANT_WIDTH{1'b1}}}; end
genvar n;
generate
for (n = 2; n <= MANT_WIDTH-1; n = n+1) begin: NORMALIZE
{(MANT_WIDTH-n){1'b0}},{n{1'b1}}}:
begin new_variable = {{n{1'b1}},1'b0;
end
endgenerate
default:
begin new_variable = {(MANT_WIDTH+1){1'b0}}; end
endmodule
end
有可能在此代码中的一些条件没有意义(不正确的位宽等),但我想要做的是这里的主旨。
我遇到的问题是,我收到以下错误,当我尝试使用ncverilog模拟这种代码:
for (n = 2; n <= MANT_WIDTH-1; n = n+1) begin: NORMALIZE
|
ncvlog:* E,ILLPRI(fpmodule.v,278 | 6):非法表达初级[4.2(IEEE)
也是我获得非法左值语法[9.2 IEEE)
我需要前导零计数。我没有真正粘贴我的真实代码,我只需要一些方法来计算前导零,但我有一些特殊情况需要放在for循环之外。
非常感谢!
我需要前导零计数。我没有真正粘贴我的真实代码,我只需要一些方法来计算前导零,但我有一些特殊情况需要放在for循环之外。 – Veridian 2012-04-21 00:47:26