組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

verilog記述のポイント:wireとregの違い

設計内容分類verilog記述
解決できる課題最適な信号

実現したい仕様・課題

Verilog初学者や、ソフトウェア出身の設計者が最初につまずきやすいのがwireとregの使い分けです。役割を誤ると合成エラーや、意図しないラッチ・順序回路の生成を招きます。データ型の本質を理解し、組み合わせ回路・順序回路を意図どおりに記述したいというのが課題です。

設計のポイント

“wire(ネット型)は物理的な配線に相当し、それ自身は値を保持しません。assign文やモジュールの出力など、常に何らかの駆動源から値が供給されることを前提とする型で、wireとreg、モジュール間を相互接続する配線や、定数ビット列への接続に用います。一方reg(レジスタ型)は、always文の中で値がセットされ保持される変数で、ソフトウェアの「変数」に近いイメージですが、記述の仕方によって順序回路(フリップフロップ)にも組み合わせ回路にもなる点に注意が必要です。always @(posedge clk)のようにクロックエッジで代入すればフリップフロップ(順序回路)となり、always @(*)で全入力に反応させて代入すれば組み合わせ回路となります。後者で分岐に抜けがあると意図しないラッチが生成されるため、全条件で値を確定させます。使い分けの基本は、「assignで駆動する信号やモジュール接続にはwire、always内で値を生成・保持する信号にはreg」と整理すると分かりやすいでしょう。なお論理合成上は、wire・regいずれも適切に駆動されていれば等価な回路になり、reg型であっても必ずしもレジスタ(記憶素子)になるとは限りません。型の名称と実際に生成される回路は別物であると理解しておくことが、誤解を避けるうえで重要です(SystemVerilogではlogic型で両者を統一的に扱えます)。

【コード例】
wire w;
assign w = a & b; // 組み合わせ回路。wireはassignで駆動する

reg [7:0] r;
always @(posedge clk) // クロックでセット → 順序回路(FF)になる
r <= r + 8’d1;”

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談お問合せ