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という階層が置かれるのが通常でしょ
う.
●インスタンス化
あるモジュールの下の階層として,別のモジュール
を配置する場合の記述方法をリスト1(b)に示します.
ここで重要な概念があります.一つのモジュールは,
あちこちで使いまわされることが一般的です.例えば,
デュアル・コアをもつLSIの場合は同じCPUが2個
あるでしょうし,2入力NANDゲートをモジュール
として定義すれば,LSI内で同じものが大量に使いま
わされます.
このとき,ある階層内に置く個々の下位階層モ
ジュールを区別するため,その階層内で固有となるイ
ンスタンス名を付けて,その下位階層モジュールを置
きます.これをモジュールのインスタンス化
(instantiation)といいます.インスタンス化というの
は「実体化・具体化」という意味です.
module
文に
記述するモジュール名は,定義名にすぎないことに注
意してください.
原則として各モジュールは必ずその上位階層でイン
スタンス化されます.それではLSIやFPGAの外部
入出力信号が置かれる階層(LSIやFPGAにとっての
第
17
章
論理設計の道具を自分のものにしよう
VerilogHDLによるRTL記述入門
※ 本稿は,『ARM PSoCで作るMyスペシャル・マイコン(開発編)』
(2014年1月,CQ出版社)の第19章「論理設計入門」の内容に大幅
加筆したものです.