Altifigence Academy

16 / 36 · 概念

フリップフロップとクロックイネーブル

リセット・許可・保持の優先順位を定めます。

学習目標

  • リセット・許可・保持の優先順位を定めます。

値の保持も動作の一部

フリップフロップはクロックエッジで保存します。en=1のときだけq<=dを実行するとen=0では保持します。これは任意の組合せ回路でクロックを切る操作とは異なります。if(rst)を先に書けばrstとenが同時でもリセットが優先します。

RTLコード抜粋
always_ff @(posedge clk) begin
  if (rst) q <= 1'b0;
  else if (en) q <= d;
end

順序回路と組合せ回路の違い

同期リセットはエッジがなければqを変えません。always_ffの条件付き未代入は保持を表せますが、always_combでは全経路に代入してラッチを避けます。rst/enを1/1、0/0、0/1にしてリセット・保持・取り込みを個別に試してください。

自分で考えてみましょう

q=1、d=0、rst=0、en=0の次のqは?

解説を見る

en=0なので以前のq=1を保持します。

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