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

Verilog Tフリップフロップ:RTL実装とテストベンチ完全解説

Tフリップフロップの設計

Tフリップフロップ(トグルフリップフロップ)は、入力tが1のときクロックエッジで出力を反転し、0のときは保持するシンプルな順序回路です。カウンタや分周器の基本構成要素として広く使われます。

module tff (
  input  clk,
  input  rstn,   // アクティブローリセット(同期)
  input  t,      // トグル入力
  output reg q
);
  always @(posedge clk) begin
    if (!rstn)
      q <= 0;
    else if (t)
      q <= ~q;     // t=1 で反転
    else
      q <= q;      // t=0 で保持(明示的記述)
  end
endmodule

テストベンチ

ランダムなトグル入力を与え、出力波形を確認します。$monitorで時系列変化をログ出力します。

module tb;
  reg clk;
  reg rstn;
  reg t;
  wire q;

  tff u0 (
    .clk(clk),
    .rstn(rstn),
    .t(t),
    .q(q)
  );

  always #5 clk = ~clk;  // 10ns周期

  initial begin
    {rstn, clk, t} <= 0;
    $monitor("T=%0t rstn=%0b t=%0d q=%0d", $time, rstn, t, q);
    
    repeat(2) @(posedge clk);  // リセット保持
    rstn <= 1;                 // リセット解除
    
    for (integer i = 0; i < 20; i = i + 1) begin
      reg [4:0] dly = $random;
      #(dly) t <= $random;     // ランダムなタイミングでトグル入力変更
    end
    #20 $finish;
  end
endmodule

シミュレーション結果

ncsim> run
T=0  rstn=0 t=0 q=x
T=5  rstn=0 t=0 q=0
T=15 rstn=1 t=0 q=0
T=19 rstn=1 t=1 q=0
T=25 rstn=1 t=1 q=1   // t=1で反転
T=35 rstn=1 t=1 q=0   // 再び反転
T=43 rstn=1 t=1 q=0
T=47 rstn=1 t=1 q=1
T=55 rstn=1 t=0 q=1   // t=0で保持
T=59 rstn=1 t=1 q=1
T=65 rstn=1 t=1 q=0
T=67 rstn=1 t=0 q=0
T=71 rstn=1 t=1 q=0
T=75 rstn=1 t=0 q=1
T=79 rstn=1 t=1 q=1
T=83 rstn=1 t=0 q=1
T=87 rstn=1 t=1 q=1
T=95 rstn=1 t=0 q=0
Simulation complete via $finish(1) at time 115 NS + 0

波形観測のポイント

応用例

Tフリップフロップをカスケード接続すると、2進カウンタやクロック分周器が簡単に構築できます。例えば、T入力を常に1に固定したT-FFをN段直列に繋ぐと、Nビットのバイナリカウンタになります(各段のクロックは前段の出力q)。

Verilog

  1. Verilogマスター:デジタル回路設計のための完全チュートリアル
  2. Verilog連結マスター:実践ガイド
  3. Verilog代入文の理解:種類、構文、ベストプラクティス
  4. Verilogブロッキング代入とノンブロッキング代入:違いを徹底解説
  5. Verilog関数のマスター:効率的なRTL設計のために
  6. Verilogタスクの理解:関数との違い、構文、使用法
  7. Verilogクロックジェネレータ:設計と実装ガイド
  8. Verilog数学関数のマスター:効率的なハードウェア設計のために
  9. Verilog $timeformatのマスター:精度と表示制御
  10. 任意のスコープでのVerilog timescale理解と表示
  11. VerilogファイルI/Oの完全ガイド:オープン、読み取り、書き込み、クローズ