17

24

20

16

23

18

25

21

19

22

論理機能のモジュール構造記述 301

●はじめに

 本章ではハードウェア記述言語の代表格,Verilog 
HDLによるRTL記述方法の基礎を説明します.本稿
の内容が理解できれば,ほとんどの論理回路は問題な
く記述できると思います.

ハードウェア記述言語

「Verilog HDL」とは

●Verilog HDLとは

 論理回路を抽象的に記述するためのハードウェア記
述言語としては,Verilog HDLとVHDLが有名です.
歴史的には,まずVHDLが米国国防総省によって開
発されました.VHDLは記述量が多いのですが,明
確に機能仕様を定義できる特徴があります.その後,
論理シミュレータと一体化した言語としてVerilogが
開発されました.Verilogは記述量がVHDLよりも少
なく手軽にコーディングできますが,論理シミュレー
タ側の視点で定義された言語であり,物理的な論理回
路を確実に記述する際には多少の注意が必要です.
 Verilogは歴史的に複数のバージョンが定義されて
きました.本稿ではVerilog 1995とVerilog 2001を
説明します.Verilog 2001はVerilog 1995の改良版で
す.現在では,さらに改良され多くの機能が加えられ
たSystem Verilogも普及しています.System Verilog
を使った機能検証方法については,本書内で改めて触
れる予定です.

●Verilog 1995とVerilog 2001

 基本的に,アルテラ社が提供する開発環境Quartus 
PrimeやModelSim-AlteraではVerilog 1995もVerilog 
2001も共に使えます.もちろんSystem Verilogもサ
ポートしています.
 本稿で解説するVerilog 1995とVerilog 2001の間
は,さほど大きな差はありませんが,Verilog 2001の
ほうが組み合わせ回路の記述方法が楽になる利点があ
ります.Verilog 1995型の記述とVerilog 2001型の記
述は,一つのRTL記述の中で混在可能です.Verilog 

1995とVerilog 2001の記述方法で意識すべき差異は,
この後に説明します.

論理機能のモジュール構造記述

●モジュール構造と階層構造の記述

 論理機能はモジュールという単位で記述します.
スト1
a)のように,論理機能は

module

文と

endmodule

文で挟み,入出力信号と内部機能を記

述します.
 モジュールは一般的に階層構造をもちます.例え
ば,一つのLSIの中にCPUやDMACが内蔵されて
いる場合,LSIという階層の下にCPUとDMACがあ
ります.さらにCPUの下にも,例えばDATAPATH
とCONTROLという階層が置かれるのが通常でしょ
う.

●インスタンス化

 あるモジュールの下の階層として,別のモジュール
を配置する場合の記述方法をリスト1b)に示します.
 ここで重要な概念があります.一つのモジュールは,
あちこちで使いまわされることが一般的です.例えば,
デュアル・コアをもつLSIの場合は同じCPUが2個
あるでしょうし,2入力NANDゲートをモジュール
として定義すれば,LSI内で同じものが大量に使いま
わされます.
 このとき,ある階層内に置く個々の下位階層モ
ジュールを区別するため,その階層内で固有となるイ
ンスタンス名を付けて,その下位階層モジュールを置
きます.これをモジュールのインスタンス化

(instantiation)といいます.インスタンス化というの

は「実体化・具体化」という意味です.

module

文に

記述するモジュール名は,定義名にすぎないことに注
意してください.
 原則として各モジュールは必ずその上位階層でイン
スタンス化されます.それではLSIやFPGAの外部
入出力信号が置かれる階層(LSIやFPGAにとっての

17

論理設計の道具を自分のものにしよう

VerilogHDLによるRTL記述入門

※ 本稿は,『ARM PSoCで作るMyスペシャル・マイコン(開発編)』

(2014年1月,CQ出版社)の第19章「論理設計入門」の内容に大幅

加筆したものです.