工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Verilog

非同期アクティブローリセット付きDフリップフロップの設計

Dフリップフロップの基本

Dフリップフロップは、クロックの指定エッジ(立ち上がり/立ち下がり)で入力dの値を取り込み、出力qに反映する順序回路の基本要素です。

設計 #1:非同期アクティブローリセット

リセット信号rstnがLow(0)になった瞬間に、クロックに関係なく即座に出力を0にクリアします。always @(posedge clk or negedge rstn)でクロック立ち上がりまたはリセット立ち下がりを感度リストに含めます。

module dff (
  input  d,
  input  rstn,   // アクティブローリセット
  input  clk,
  output reg q
);
  always @(posedge clk or negedge rstn) begin
    if (!rstn)
      q <= 0;      // 非同期リセット:クロックを待たず即座にクリア
    else
      q <= d;      // 通常動作:クロック立ち上がりでdを取り込み
  end
endmodule

ハードウェア回路図(非同期リセット版)

テストベンチ(非同期リセット版)

module tb_dff;
  reg clk;
  reg d;
  reg rstn;
  reg [2:0] delay;
  wire q;

  dff dff0 (
    .d(d),
    .rstn(rstn),
    .clk(clk),
    .q(q)
  );

  // クロック生成:20ns周期
  always #10 clk = ~clk;

  initial begin
    clk <= 0; d <= 0; rstn <= 0;
    #15 d <= 1;
    #10 rstn <= 1;   // リセット解除
    for (int i = 0; i < 5; i = i + 1) begin
      delay = $random;
      #(delay) d <= i;
    end
  end
endmodule

設計 #2:同期アクティブローリセット

リセットはクロック立ち上がりエッジでのみ有効になります。感度リストはposedge clkのみで、リセット条件はif (!rstn)としてブロック内で判定します。

module dff (
  input  d,
  input  rstn,
  input  clk,
  output reg q
);
  always @(posedge clk) begin
    if (!rstn)
      q <= 0;      // 同期リセット:クロックエッジでクリア
    else
      q <= d;
  end
endmodule

ハードウェア回路図(同期リセット版)

非同期 vs 同期リセットの使い分け

特性非同期リセット同期リセット
リセット応答速度即座(クロック不要)次クロックエッジまで待機
メタステーブリティリスクリセット解除タイミングで発生しやすい低い(クロック同期のため安全)
タイミング制約リセット除去リカバリ/リムーブ時間が必要通常のセットアップ/ホールドで扱える
主な用途システム全体の初期化、パワーオンリセットパイプライン内部、クロックドメイン内

テストベンチ(同期リセット版)

module tb_dff;
  reg clk;
  reg d;
  reg rstn;
  reg [2:0] delay;
  wire q;

  dff dff0 (
    .d(d),
    .rstn(rstn),
    .clk(clk),
    .q(q)
  );

  always #10 clk = ~clk;

  initial begin
    clk <= 0; d <= 0; rstn <= 0;
    #15 d <= 1;
    #10 rstn <= 1;
    for (int i = 0; i < 5; i = i + 1) begin
      delay = $random;
      #(delay) d <= i;
    end
  end
endmodule

まとめ

非同期リセットは即応性が高い一方、リセット解除時のメタステーブリティ対策(リセット同期化回路など)が必要です。同期リセットはタイミング収束が容易で、モダンなFPGA/ASIC設計では同期リセットが推奨される傾向にあります。用途に応じて使い分けてください。

Verilog

  1. PIDリセットワインドアップ防止:信頼性の高いプロセス制御のための戦略
  2. NANDベースのセットリセットフリップフロップ回路の構築
  3. 74LS74 デュアルDフリップフロップ:完全リファレンスとピンアウト
  4. CNCオペレータパネルのリセットボタン理解:機能と使用法
  5. 夏の成功に向けIT戦略をリチャージ、リセット、再構成する
  6. IT/OT融合:持続可能なデジタル変革のためのカルチャーリセット
  7. Verilog基礎:最初のANDゲートを設計する
  8. Verilogマスター:デジタル回路設計のための完全チュートリアル
  9. 4ビットカウンタ:0から15までの効率的なバイナリカウント
  10. Verilog Mod-Nカウンタ:パラメータ化モジュールとテストベンチ
  11. Verilogグレイカウンタ:4ビットグレイコード生成モジュール