タイミング操作
# このページは,学生実験用資料として筑波大学リコンフィギュラブルコンピューティングシステム研究室のwebページで公開されていたものを,許可を得て転載したものです.
遅延
処理を指定した時間だけ遅延させることができます。遅延は、シミュレーションのみ使用することができます。
以下に例を示します。
// 5単位時間ごとにクロックを反転
always #5 clock = ~clock;
|
イベントの発生
シミュレーションにおいて、イベントを発生させることができます。
まずイベントを宣言します。
イベントを発生させるためには、以下のように記述します。
以下に例を示します。
// イベントの宣言
event start_simulation;
initial begin
reset = 0;
#10 reset = 1;
// イベントの発生
-> start_simulation;
end
|
信号、イベントに同期
信号の変化時とイベントの発生時に、処理を実行させることができます。
信号の変化時に処理を実行させたい場合は以下のいずれかのようにトリガを記述します。posedgeは信号の立ち上がりに、negedgeは信号の立ち下がりに同期して処理を実行するよう指定します。
以下に例を示します。
event start_simulation;
initial begin
reset = 1;
#10 reset = 0;
// リセットが立ち下がったら、イベントを発生
-> start_simulation;
end
initial begin
in = 0;
// イベントが発生したら(リセットが立ち下がった)、入力信号を発生
@(start_simulation) in = 1;
end
// クロックの立ち上がりに同期して、カウンタを更新
always @(posedge clock) begin
counter <= (reset)? INIT: counter + 1;
end
|
戻る