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