まとめ - タイミング制御
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 72/90。
チャレンジ
このチャレンジでは、遅延、ゲート遅延、代入遅延、タイムスケール、およびクロック生成に関する理解をテストします。
やるべきこと:
1ns / 1psを指定したtimescaleディレクティブを追加してください- 5時間単位ごとにトグルするクロックを生成してください
- 3時間単位のゲート遅延を持つ AND ゲートを追加してください
- 代入遅延を使用して、2時間単位後に
aをbに代入してください(aは即座に読み取ります)
自分で試してみよう
// TODO: タイムスケール・ディレクティブを追加 (1ns / 1ps)
module timing_challenge;
reg clk;
reg a, b;
wire out;
initial begin
clk = 0;
end
// TODO: 5時間単位ごとに反転するクロックを生成
// TODO: 3時間単位の遅延を持つANDゲートを追加 (入力 a, b、出力 out)
initial begin
$monitor("Time %0t: clk=%b, a=%b, b=%b, out=%b", $time, clk, a, b, out);
a = 1;
// TODO: 代入遅延を使用して、2時間単位後に a を b に代入
// 今 a を読み取り、2時間単位後に b に代入
#20;
$finish;
end
endmodule