Altifigence Academy

20 / 36 · 概念

以前の値から次の値を計算する

非ブロッキング代入とリセット優先度を読みます。

学習目標

  • 非ブロッキング代入とリセット優先度を読みます。

以前の値から計算する

count<=count+2'b01の右辺は更新前のcountです。01なら次は10です。<=は計算結果を非ブロッキング更新段階へ予約します。複数のレジスタも同じエッジの前後を分けて考えます。

RTLコード抜粋
always_ff @(posedge clk)
    if (rst) count <= 2'b00;
    else count <= count + 2'b01;

選ばれる分岐は一つ

rst=1ならifのリセット分岐だけで00を保存します。同じエッジでリセット後にelseの増加まで行うわけではありません。現在値、rst、選んだ分岐、次の値を表にすると優先度や折り返しを確認できます。

自分で考えてみましょう

count=11、rst=1の立上り後は00か01か?

解説を見る

00です。リセット分岐を選び、増加分岐には進みません。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。