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

JKフリップフロップ:設計、実装、テストベンチ完全ガイド

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

JKフリップフロップは、JとKの2入力を持つ汎用的なフリップフロップです。クロック立ち上がりエッジで動作し、入力組み合わせに応じて保持・クリア・セット・トグルの4動作を行います。

module jk_ff (
  input  j,
  input  k,
  input  clk,
  output q
);
  reg q;

  always @(posedge clk) begin
    case ({j, k})
      2'b00: q <= q;     // 保持
      2'b01: q <= 0;     // リセット(クリア)
      2'b10: q <= 1;     // セット
      2'b11: q <= ~q;    // トグル(反転)
    endcase
  end
endmodule

ハードウェア回路図

JKフリップフロップの内部構造は、NANDゲートやNORゲートで構成されるラッチベースの回路として実装されます。ここでは論理合成ツールが最適化したゲートレベルネットリストが生成されます。

テストベンチ

全入力組み合わせ(00, 01, 10, 11)を順に与え、出力qの遷移を確認します。

module tb_jk;
  reg j;
  reg k;
  reg clk;
  wire q;

  // クロック生成:10ns周期(5nsごとに反転)
  always #5 clk = ~clk;

  // 設計インスタンス化
  jk_ff jk0 (
    .j(j),
    .k(k),
    .clk(clk),
    .q(q)
  );

  initial begin
    // 初期値設定
    j <= 0; k <= 0;
    #5  j <= 0; k <= 1;  // リセット
    #20 j <= 1; k <= 0;  // セット
    #20 j <= 1; k <= 1;  // トグル
    #20 $finish;
  end

  // 値変化を監視表示
  initial $monitor("j=%0d k=%0d q=%0d", j, k, q);
endmodule

動作確認のポイント

$monitorを使うことで、信号変化のたびにタイムスタンプ付きで出力されるため、波形ビューアなしでも動作確認が可能です。

Verilog

  1. 周波数インバータが産業運用のエネルギー効率を高める仕組み
  2. Verilog基礎:最初のANDゲートを設計する
  3. Verilogマスター:デジタル回路設計のための完全チュートリアル
  4. 包括的なASIC設計フロー:要件定義から量産まで
  5. 設計抽象化レイヤー:チップアーキテクチャを理解するための明確なガイド
  6. Verilog構文マスター:重要ルールとベストプラクティス
  7. Verilogデータ型:ビット、ワイヤ、ロジック値を完全理解
  8. Verilogスカラとベクトル:ビット、レジスタ、ネットタイプの理解
  9. Verilog Tフリップフロップ:RTL実装とテストベンチ完全解説
  10. Verilog Mod-Nカウンタ:パラメータ化モジュールとテストベンチ
  11. Verilogグレイカウンタ:4ビットグレイコード生成モジュール