特定のタイプのビットレベル操作は、インデックスと新しい値を指定して、マルチビット値の 1 つの単一ビットを設定またはクリアすることで構成されます。この操作は、次のインターフェイスを持つ BitSet 回路によってハードウェアに実装できます。
- 入力 x は、元の値を表す 4 ビット値です。
- 出力 y は、ビット セット操作後の変更された値を表す 4 ビット値です。
- 入力インデックスは、0 ~ 3 の範囲の 2 ビット値で、変更するビットのインデックスを示します。
- 入力値は 0 または 1 に設定された 1 ビット値で、ビット インデックスが出力 y でとるべき値を示します。y の 1 つおきのビットは、x の対応するビットと一致する必要があります。
クラスの例から取ったコードは次のとおりです。
module BitSet(input [3:0]x,
input [1:0]index,
input value,
output [3:0]y);
always@(x,index,value);
begin
if (index = 2'b00)
y[0] = value;
if(index = 2'b01)
y[1]=value;
if(index = 2'b10)
y[2]=value;
if(index=2'b11)
y[3]=value;
end
endmodule
テストベンチは次のとおりです。
module BitSet_tb();
reg [3:0]x;
reg [1:0]index;
reg value;
wire [3:0]y;
BitSet uut(
.x(x),
.index(index),
.value(value),
.y(y)
);
initial begin
$monitor ("%d %b %b %b %b", $time, x, index, value, y);
x=4'b0000;
index=2'b00;
value=1'b0;
#10 x=4'b0001;
index=2'b01;
value=1'b0;
#10 x=4'b1111;
index=2'b10;
value=1'b0;
#10 x=4'b1111;
index=2'b11;
value=1'b0;
#10 $finish;
end
endmodule
コンパイル時に、次のエラーが発生します。
bitset.v:10: syntax error
bitset.v:12: error: invalid module item.
bitset.v:13: syntax error
bitset.v:14: error: invalid module item.
bitset.v:15: syntax error
bitset.v:16: error: invalid module item.
bitset.v:17: syntax error
bitset.v:18: error: invalid module item.
bitset.v:19: syntax error
これが私が望むことをするかどうかさえわかりませんが、誰かがエラーを手伝ったり、プログラムを修正して要求されたことを実行する方法を教えてくれますか?