Verilog のラボで作業していますが、タスクの 1 つで、2 つの異なるアドレスに異なるコンテンツを書き込むように指示されています。
これが私のコードです:
module labM;
reg [31:0] address, memIn;
reg clk, read, write;
integer i;
wire [31:0] memOut;
mem data(memOut, address, memIn, clk, read, write);
initial
begin
write=1;
memIn = 32'h12345678;
address = 16;
clk=1;
#1;
memIn = 32'h89abcdef;
address = 24;
#1;
write=0; read=1; address=16;
repeat(3)
begin
#1 $display("Address %d contains %h", address, memOut);
address = address + 4;
end
end
endmodule
mem は次のように機能します。
ワードを読み取るには、アドレスにそのアドレスを設定し、読み取りを設定します。少し遅れて、単語の内容は memOut で安定します。書き込みは memIn に書き込むデータを設定し、address に書き込み先アドレスを設定し、write を設定します。データは、clk の次の正のエッジでデスティネーションに書き込まれます。
上記の出力はアドレス 16 の正しい値ですが、アドレス 20 と 24 は "xxxxxxxx" です。
私はしばらくこれに固執しており、memIn を再割り当てできない理由がわかりません。
どんな助けでも大歓迎です。
ありがとう。