よくわかるSystemCによるシステムデザイン入門

[表紙]よくわかるSystemCによるシステムデザイン入門

紙版発売

B5変形判/440ページ/CD1枚

定価4,048円(本体3,680円+税10%)

ISBN 4-7741-2333-1

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

本書は,C++ベースのハードウェア記述言語であるSystemCを使ってハードウェア設計を行うための入門書です。

ソフト・ハードの協調設計にこれから挑戦したいという方には好適な1冊です。本書掲載の全ソースリスト,論理合成結果を収録したCD-ROM付き。

こんな方におすすめ

  • 初級ハードウェア技術者
  • C言語の知識があって,ハードウェア設計に興味のある人

目次

第1章 SystemCによるシステム設計

  • 1-1 ハードウェアとソフトウェア
    • 1-1-1 コンピュータ導入によるハードウェアの設計
    • 1-1-2 システムの設計
  • 1-2 システムレベル設計言語SystemC
    • 1-2-1 SystemC言語のアーキテクチャ
    • 1-2-2 SystemCによる開発環境
    • 1-2-3 SystemCによるハードウェア/ソフトウェア協調設計

第2章 SystemCの開発環境設定

  • 2-1 SystemCで開発するプロジェクトのファイル構成
  • 2-2 SystemCの入手
    • 2-2-1 ログインアカウントの取得
    • 2-2-2 SystemCのダウンロード
    • 2-3 UNIX系環境におけるSystemCの開発環境
    • 2-3-1 Cygwinへのインストール
    • 2-3-2 Cygwin上でのSystemC環境設定
    • 2-3-3 新規プロジェクトのコンパイルと実行
  • 2-4 波形のトレース
    • 2-4-1 GTKWaveのダウンロード
    • 2-4-2 GTKWaveのインストール
    • 2-4-3 GTKWaveの動作確認
    • 2-4-4 GTKWaveの使用例
  • 2-5 Visual C++ 6.0によるSystemCの開発環境
    • 2-5-1 SystemCのダウンロードと解凍
    • 2-5-2 SystemCライブラリの作成
    • 2-5-3 新規プロジェクトのビルドと実行
    • 2-5-4 波形ビューアの利用
  • 2-6 Visual C++ .NETによるSystemCの開発環境
    • 2-6-1 SystemCのダウンロードと解凍
    • 2-6-2 SystemCライブラリの作成
    • 2-6-3 新規プロジェクトのビルドと実行
    • 2-6-4 波形ビューアの利用
    •  Column 設定に関するQ&A

第3章 SystemCによる回路記述 (1)組み合わせ回路

  • 3-1 SystemCによる回路記述
    • 3-1-1 ディジタル回路の基礎
    • 3-1-2 システムの構成とSystemCファイル書式
  • 3-2 単一構成システムの記述
    • 3-2-1 ヘッダファイルの記述
    • 3-2-2 インプリメンテーションファイルの記述
    • 3-2-3 記述の具体例
    • 3-2-4 データ型と演算子
    • 3-2-5 記述の具体例
    • 3-2-6 フロー制御関数
  • 3-3 複数プロセスシステムの記述
    • 3-3-1 ヘッダファイルの書式
    • 3-3-2 インプリメンテーションファイルの記述
    • 3-3-3 プロセスの同時並行処理とデルタ遅延
    • 3-3-4 プロセス型とイベント同期
    • 3-3-5 具体例
  • 3-4 子モジュールを含む構成の記述(階層モジュール)
    • 3-4-1 ヘッダファイルの記述
    • 3-4-2 全加算器の例
  • 3-5 システムファイルの記述方法
    • 3-5-1 システムファイルの基本書式
    • 3-5-2 システムファイルの具体例
    • 3-5-3 シミュレーションの記述方法
    • 3-5-4 シミュレーション入力信号の記述方法
    • 3-5-5 シミュレーション記述例

第4章 SystemCによる回路記述 (2)順序回路

  • 4-1 フリップフロップとクロック
    • 4-1-1 クロック信号の書式
    • 4-1-2 フリップフロップの記述
  • 4-2 レジスタとリセット
    • 4-2-1 レジスタとリセットの設計
    • 4-2-2 シフトレジスタと連接演算子
  • 4-3 カウンタとパラメタライズ
    • 4-3-1 バイナリカウンタ
    • 4-3-2 N進カウンタとパラメータ化
    • 4-3-3 プリセット付きN進同期カウンタ
    • 4-3-4 カウンタの階層設計

第5章 インターフェースとチャネル

  • 5-1 チャネルの基本概念
    • 5-1-1 チャネルの基本要素
  • 5-2 プリミティブチャネルの使い方
    • 5-2-1 プリミティブチャネルの構成
    • 5-2-2 プリミティブチャネルの種類
    • 5-2-3 sc-bufferの使い方
    • 5-2-4 sc-fifoの使い方
  • 5-3 階層チャネルの使い方
    • 5-3-1 複数モジュール構成のシステムの書式
    • 5-3-2 インターフェースの書式
    • 5-3-3 チャネルの記述
    • 5-3-4 チャネルの使い方
  • 5-4 階層チャネルの例
    • 5-4-1 動作の流れ
    • 5-4-2 階層チャネルを使った記述

第6章 SystemCによるシステム設計

  • 6-1 時計の仕様
  • 6-2 32768[Hz]のクロック信号
  • 6-3 カウンタの基本動作
    • 6-3-1 2進カウンタ
    • 6-3-2 非同期式4進アップカウンタ
    • 6-3-3 同期式4進アップカウンタ
    • 6-3-4 非同期式32768進アップカウンタ
    • 6-3-5 同期式32768進アップカウンタ
  • 6-4 時計のブロック図
    • 6-4-1 ブロック図の説明
    • 6-4-2 時計数カウンタのBCD補正
  • 6-5 スタティックドライブ方式とダイナミックドライブ方式
    • 6-5-1 スタティックドライブ方式
    • 6-5-2 ダイナミックドライブ方式
    • 6-5-3 ダイナミックドライブ方式のタイムチャート
  • 6-6 ストリーク現象
    • 6-6-1 ストリーク現象の原因
    • 6-6-2 ブランキング信号の生成
  • 6-7 ダイナミックドライブ方式の回路図
  • 6-8 セグメントの周辺回路
    • 6-8-1 アノードコモンとカソードコモン
    • 6-8-2 カラムスイッチの動作
    • 6-8-3 セグメントスイッチの動作
    • 6-8-4 ダイナミックドライブ方式の動作
  • 6-9 内部リセット信号
  • 6-10 SystemCによるRTL記述
    • 6-10-1 32768進カウンタ
    • 6-10-2 10進カウンタ,6進カウンタ,24進カウンタ
    • 6-10-3 7セグメントデコーダ
    • 6-10-4 16進→BCDコンバータ
    • 6-10-5 セレクタ
    • 6-10-6 カラムデコーダ
    • 6-10-7 ブランキング信号の生成
    • 6-10-8 内部リセット信号の生成
    • 6-10-9 時計モジュール(トップモジュール)のヘッダファイル「myclock.h」
    • 6-10-10 時計モジュール(トップモジュール)のインプリメンテーションファイル「myclock.cpp」
  • 6-11 シミュレーション
    • 6-11-1 とりあえずシミュレーションした結果
    • 6-11-2 各モジュールの信号に初期値を設定したシミュレーション
  • 6-12 テスト機能を搭載したシミュレーション
  • 6-13 SystemCの各記述と抽象度
  • 6-14 sc_signalチャネルによるBCA記述
    • 6-14-1 テストベンチ「main_myclock_bca.cpp」
    • 6-14-2 モジュールA(計数モジュール)「myclock_cnt_bca.h」,「myclock_cnt_bca.cpp」
    • 6-14-3 モジュールB(表示モジュール)「myclock_disp_bca.h」,「myclock_disp_bca.cpp」
    • 6-14-4 静的センシティビティと動的センシティビティ
    • 6-14-5 シミュレーション結果
  • 6-15 sc_bufferチャネルによるTF記述
    • 6-15-1 テストベンチ「main_myclock_tf.cpp」
    • 6-15-2 モジュールA(計数モジュール)「myclock_cnt_tf.h」,「myclock_cnt_tf.cpp」
    • 6-15-3 モジュールB(表示モジュール)「myclock_disp_tf.h」,「myclock_disp_tf.cpp」
    • 6-15-4 モジュールA(計数モジュール)とモジュールB(表示モジュール)の動作確認
    • 6-15-5 シミュレーション結果
  • 6-16 sc_bufferチャネルによるTF記述で「表示部→計数部アクノリッジ」を省略
  • 6-17 sc_bufferチャネルによるUTF記述
  • 6-18 sc-fifoチャネルによるUTF記述(ノンブロッキング・アクセス)
    • 6-18-1 テストベンチ「main_myclock_utf_fifo_nblk.cpp」
    • 6-18-2 モジュールA(計数モジュール)「myclock_cnt_utf_fifo_nblk.h」,「myclock_cnt_utf_fifo_nblk.cpp」
    • 6-18-3 モジュールB(表示モジュール)「myclock_disp_utf_fifo_nblk.h」,「myclock_disp_utf_fifo_nblk.cpp」
  • 6-19 sc_fifoチャネルによるUTF記述(ブロッキング・アクセス)
    • 6-19-1 テストベンチ「main_myclock_utf_fifo_blk.cpp」
    • 6-19-2 モジュールA(計数モジュール)「myclock_cnt_utf_fifo_blk.h」,「myclock_cnt_utf_fifo_blk.cpp」
    • 6-19-3 モジュールB(表示モジュール)「myclock_disp_utf_fifo_blk.h」,「myclock_disp_utf_fifo_blk.cpp」

第7章 論理シミュレータおよび論理合成ツール

  • 7-1 シミュレーションおよび論理合成の手順
  • 7-2 Visual Eliteの使い方
    • 7-2-1 入手方法
    • 7-2-2 インストール
    • 7-2-3 ライセンスファイルの登録
    • 7-2-4 起動と初期設定
    • 7-2-5 ライブラリ作成
    • 7-2-6 SystemCによる設計
    • 7-2-7 Verilogファイルへの変換
  • 7-3 ISE WebPACKの使い方
    • 7-3-1 ISE WebPACKの概要
    • 7-3-2 入手方法とインストール
    • 7-3-3 開発の方法
    • 7-3-4 プロジェクトの作成
    • 7-3-5 論理合成の実行
    • 7-3-6 ピン配置設定
    • 7-3-7 書込みと動作確認
  • 7-4 Precision Synthesisによる論理合成
    • 7-4-1 入手方法および評価ライセンスの取得
    • 7-4-2 論理合成作業の流れ
    • 7-4-3 RTL Schematicの表示
    • 7-4-4 Technology Schematicの表示
    • 7-4-5 Area Reportの表示
    • 7-4-6 論理合成オプションの指定

第8章 C++入門

  • 8-1 C++の基礎知識
    • 8-1-1 オブジェクト指向とは
    • 8-1-2 C++プログラムの構成
    • 8-1-3 クラス
    •  COLUMN メンバ変数とメンバ関数
    • 8-1-4 クラスの設計
    •  COLUMN ストリームIO
    • 8-1-5 クラスを使う
    •  COLUMN インスタンス化とは
    • 8-1-6 アクセス制御
    • 8-1-7 コンストラクタとデストラクタ
    • 8-1-8 継承と派生
    •  COLUMN 定数引数の多重定義
    • 8-1-9 テンプレート
  • 8-2 SystemCによる回路機能の記述

付録

  • CD-ROMについて

索引

著者プロフィール

並木秀明(なみきひであき)

日本工学院八王子専門学校 ITスペシャリスト科教授。

ディジタル回路デザイン,ハードウェア記述言語,マイクロコンピュータなどのハードウェア系科目を担当。入職前は,プリンタ,テレビ局や新聞社向けなどの組込みシステムのハードウェア開発・設計に従事。

著書「よくわかるSystemCによるシステムデザイン入門」「改訂新版ディジタル回路とVerilogHDL」「改訂版VHDLによるディジタル回路入門」「Excelではじめるディジタル信号処理」他

著書


後閑哲也(ごかんてつや)

1947年生まれ。子供のころに電子工作に魅了され,大学,仕事とすべて電子の世界を歩む。この子供のころからの電子工作の趣味の世界と,仕事としているコンピュータの世界を融合した遊びの世界をホームページや書籍で紹介し続けている。