Last Update 2022/07/11

ハードウェア記述言語の速習&実践
改訂 入門Verilog HDL記述

小林 優 著
B5変型判 256ページ
定価3,520円(税込)
JAN9784789833981
2004年6月1日発行
好評発売中!
改訂 入門Verilog HDL記述
 本書は,回路図ベースの設計からHDLによるトップダウン設計に移行したいという方,あるいは初めてHDLによるLSI設計に携わる方などに最適な「Verilog HDL」の入門書です.実例が豊富に掲載されており,FPGAやASICを設計するときの座右の書になることでしょう.
 1996年に発行され,多くの読者の支持を受けてきたVerilog HDL教科書の定番「入門Verilog HDL記述」を改訂しました.半導体理工学研究センター(STARC)が策定した「設計スタイルガイド」に準拠して,収録する記述例や解説を見直しました.

目次

第一部 入門編

第1章 やさしいVerilog HDL記述入門
 1.1 HDLって何だ?
  1.1.1 HDL記述と論理合成
  1.1.2 HDL設計のメリット/デメリット
  1.1.3 記述レベル
 1.2 加算回路のHDL記述
  1.2.1 加算演算子による加算回路
  1.2.2 フル・アダー呼び出しによる加算回路1――ポート・リスト順の接続
  1.2.3 フル・アダー呼び出しによる加算回路2――名まえによる接続
  1.2.4 セル呼び出しによる加算回路
 1.3 カウンタのHDL記述
  1.3.1 加算演算子によるバイナリ・カウンタ
  1.3.2 1ビットのカウンタ・ユニット呼び出しによるバイナリ・カウンタ
  1.3.3 セル呼び出しによるバイナリ・カウンタ
 1.4 シミュレーションしてみよう
  1.4.1 加算回路のシミュレーション記述
  1.4.2 加算回路のシミュレーション結果
  1.4.3 カウンタのシミュレーション記述
  1.4.4 カウンタのシミュレーション結果
 1.5 論理合成してみよう
  1.5.1 論理合成できるのはVerilog HDLの一部
  1.5.2 加算回路の論理合成
  1.5.3 カウンタの論理合成

第2章 もう少し進んだVerilog HDL記述
 2.1 電子サイコロ
  2.1.1 電子サイコロの仕様
  2.1.2 電子サイコロ回路概要
  2.1.3 電子サイコロのHDL記述
  2.1.4 電子サイコロのシミュレーション記述と結果
 2.2 電子錠
  2.2.1 電子錠の仕様
  2.2.2 電子錠の回路概要
  2.2.3 電子錠のHDL記述
  2.2.4 電子錠のシミュレーション記述と結果
 2.3 電子サイコロと電子錠の論理合成

第二部 回路記述編

第3章 文法概略と基本記述スタイル
 3.1 文法を少々
  3.1.1 モジュール構造
  3.1.2 論理値と数値表現
  3.1.3 データ型
  3.1.4 多ビット信号
  3.1.5 演算子と演算優先順位
  3.1.6 等号演算と関係演算
  3.1.7 連接演算
  3.1.8 リダクション演算
  3.1.9 回路記述に必要な構文
 3.2 回路記述早わかり
  3.2.1 assign文による組み合わせ回路
  3.2.2 functionによる組み合わせ回路
  3.2.3 always文による順序回路
  3.2.4 下位モジュール呼び出し

第4章 組み合わせ回路のHDL記述
 4.1 基本ゲート回路
  4.1.1 プリミティブ・ゲートを用いたゲート回路
  4.1.2 論理式を用いたゲート回路
 4.2 セレクタ
  4.2.1 2 to 1セレクタ
  4.2.2 4 to 1セレクタ
  4.2.3 3 to 1セレクタ
 4.3 デコーダ
  4.3.1 等号演算によるデコーダ
  4.3.2 if文によるデコーダ
  4.3.3 case文によるデコーダ
 4.4 エンコーダ
  4.4.1 if文によるエンコーダ
  4.4.2 casex文によるエンコーダ
  4.4.3 for文によるエンコーダ
  4.4.4 always文によるエンコーダ
 4.5 演算回路
  4.5.1 加算回路
  4.5.2 減算回路
  4.5.3 定数加算回路
  4.5.4 バレル・シフタ
  4.5.5 乗算回路
 4.6 比較回路
 4.7 組み合わせ回路で作るROM
 4.8 3ステート信号の記述
 4.9 組み合わせ回路の論理合成

第5章 順序回路のHDL記述
 5.1 非同期型フリップフロップ
  5.1.1 SRフリップフロップ
  5.1.2 Dラッチ
  5.1.3 Dフリップフロップ
  5.1.4 非同期セット/リセット付きDフリップフロップ
  5.1.5 非同期セット/リセット付きJKフリップフロップ
  5.1.6 非同期リセット付きTフリップフロップ
 5.2 同期型フリップフロップ
  5.2.1 同期SRフリップフロップ
  5.2.2 同期セット/リセット付きDフリップフロップ
  5.2.3 同期セット/リセット付きJKフリップフロップ
  5.2.4 同期リセット付きTフリップフロップ
  5.2.5 同期設計用フリップフロップの構成
 5.3 各種カウンタ
  5.3.1 バイナリ・カウンタ
  5.3.2 アップ/ダウン・カウンタ
  5.3.3 グレイ・コード・カウンタ
  5.3.4 手抜きグレイ・コード・カウンタ
  5.3.5 ジョンソン・カウンタ
  5.3.6 不正ループ対策版ジョンソン・カウンタ
  5.3.7 リング・カウンタ
  5.3.8 ディバイダ(分周回路)
 5.4 シフト・レジスタ
  5.4.1 シリアル・パラレル変換
  5.4.2 シリアル・パラレル変換:NG編その1
  5.4.3 シリアル・パラレル変換:NG編その2
  5.4.4 究極のシリアル・パラレル変換
  5.4.5 パラレル・シリアル変換
 5.5 レジスタ・ファイル
 5.6 ステート・マシン
  5.6.1 ステート・マシンの目的
  5.6.2 ステート・マシンの構成法
  5.6.3 ステート・マシンの記述例
 5.7 順序回路の論理合成

第三部 シミュレーション&応用編

第6章 シミュレーション・モデル
 6.1 シミュレーション・モデルの必要性
  6.1.1 論理回路シミュレーションの今昔
  6.1.2 シミュレーション・モデルとは
 6.2 シミュレーション・モデルの記述例
  6.2.1 ROMシミュレーション・モデル
  6.2.2 RAMシミュレーション・モデル
  6.2.3 A-D変換シミュレーション・モデル
  6.2.4 D-A変換シミュレーション・モデル
 6.3 タスクによるシミュレーション・モデル
 6.4 シミュレーション・モデルの使いかた

第7章 シミュレーション記述
 7.1 シミュレーション記述概要
  7.1.1 シミュレーションの入力記述
  7.1.2 シミュレーションの出力記述
  7.1.3 論理合成後のシミュレーション
  7.1.4 シミュレーションの流れ
  7.1.5 モジュール・アイテムとステートメント
  7.1.6 initial文とalways文
 7.2 ステートメント
  7.2.1 for文
  7.2.2 while文
  7.2.3 repeat文
  7.2.4 forever文
  7.2.5 タイミング制御
  7.2.6 wait文
  7.2.7 イベント宣言とイベント起動
  7.2.8 begin〜endとfork〜join
 7.3 タスク
  7.3.1 CPUによるRead/Writeモデル
  7.3.2 各種タスク・テクニック
 7.4 システム・タスク
  7.4.1 ファイル Read/Writeシステム・タスク
  7.4.2 表示用システム・タスク
  7.4.3 フォーマットされたファイル出力システム・タスク
  7.4.4 値を返すシステム・タスク
  7.4.5 シミュレーションの実行を制御するシステム・タスク
 7.5 その他のシミュレーション記述
  7.5.1 force文とrelease文
  7.5.2 さまざまな遅延
  7.5.3 階層アクセス
  7.5.4 コンパイラ指示子
  7.5.5 コメント

第8章 電子錠の拡張
 8.1 回路仕様
 8.2 クロック生成部
 8.3 キー入力部
 8.4 電子錠本体
 8.5 表示部
 8.6 回路検証
 8.7 FPGAによる動作確認

AppendixI Verilog HDL文法概要
 I.1 Verilog HDL文法
  I.1.1 ソース・テキスト
  I.1.2 宣言
  I.1.3 プリミティブ・インスタンス
  I.1.4 モジュール・インスタンス生成
  I.1.5 UDP宣言とインスタンス生成
  I.1.6 動作記述
  I.1.7 specify記述
  I.1.8 式
  I.1.9 一般事項
  I.1.10 予約語一覧
 I.2 文法要約
  I.2.1 モジュール構造
  I.2.2 モジュール構成要素
  I.2.3 ステートメント
  I.2.4 式
  I.2.5 識別子

AppendixII Verilog-2001
 II.1 回路記述向きの拡張
  II.1.1 宣言の拡張
  II.1.2 構文の拡張
  II.1.3 配列や演算の拡張
 II.2 テストベンチ向きの拡張
 II.3 コンパイル時の拡張

コラムA 信号名の付けかた
コラムB ライブラリって何種類ある?
コラムC 組み合わせ回路と順序回路
コラムD always文は重要
コラムE always文による組み合わせ回路
コラムF functionかalwaysか
コラムG 代入記号の使い分け
コラムH case文のdefaultの役割
コラムI 論理合成がうまくいかない例
コラムJ ブロッキング代入文とノン・ブロッキング代入文
コラムK 「HDL流」記述スタイル
コラムL 順序回路の初期化は非同期リセット
コラムM specifyブロック
コラムN 乱数を入れちゃえ
コラムO 呪われたシミュレーション
コラムP 厳密より現実 〜セット/リセット付きD-FFは正確に表現できない〜