Verilogのcase文でいくつかの条件を生成しようとしています。Verilog alwaysブロックで 'generate'を使用する際の問題
私はMANT_WIDTHとして知られているパラメータとcase文での条件の数を持っているが、私は
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
を持っ例えばMANT_WIDTH
の値に依存
このコードではいくつかの条件があるかもしれません意味がない(不正なビット幅など)が、私がしようとしていることの要点はここにあります。
私が午前問題は、私は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