書籍概要

CPU自作入門
HDLによる論理設計・基板製作・プログラミング~

著者
発売日
更新日

概要

本書ではオリジナルのCPUをゼロから設計することで,CPUの内部構造を理解するとともに,CPU設計の面白さを読者に伝えていきたいと考えています。

本書はCPUの設計をメインターゲットとしていますが,CPUだけでなく周辺機器を制御するためのI/Oやバスの設計を行い,SoCとしました。CPUだけでなく,ボードの設計やソフトウェアの設計までコンピュータに必要な要素を全てをカバーします。ハードウェアからソフトウェアまで全てを自分でゼロから設計・実装し,実機で動かします。CPUの設計から基板の設計,そしてソフトウェアの設計までを1冊の書籍で扱うことで,それぞれの関連性を包括的に理解することを可能にしています。

本書は大きく3つの章から構成されています。第1章ではCPUを中心に,プログラムやデータを格納するためのメモリや,外部との入出力を行うためのI/O,それらを繋ぐバスを作成し,簡単なコンピュータシステムを作成します。第2章では,このコンピュータシステムを実機で動作させるための基板を設計・製作します。第3章では,このコンピュータシステム用のプログラミングを行い,実機にて動作確認を行います。本書の最大の特徴は,コンピュータシステムをすべて自作可能ということです。

3つの章はそれぞれ独立しており,読者の興味に応じて好きな章のみを選択して読むことができます。

こんな方におすすめ

  • エンジニアを目指している学生
  • オリジナルアーキテクチャのCPUを設計・実装したい方
  • オリジナルFPGA基板を設計・製作したい方
  • アセンブラでのプログラミングをしたい方

追加情報

リファレンスボードの購入先

本書で設計・製作するものと同様のデザインのFPGA基板を,下記のWebショップから購入することができます。

目次

  • はじめに
  • 本書の読み方
  • 目次

第1章 CPUの設計と実装

  • 1.1 はじめに
  • 1.2 コンピュータについて
  • 1.3 デジタル回路の基礎
  • 1.4 Verilog HDL について
  • 1.5 本章で作成するもの
  • 1.6 バスの設計と実装
  • 1.7 メモリの設計と実装
  • 1.8 AZ Processorの設計と実装
  • 1.9 I/Oの設計と実装
  • 1.10 AZPR SoCの全体接続
  • 1.11 AZPR SoCのシミュレーション
  • 1.12 おわりに

第2章 基板設計と製作

  • 2.1 はじめに
  • 2.2 仕様策定
  • 2.3 部品選定
  • 2.4 回路設計
  • 2.5 レイアウト設計
  • 2.6 部品ライブラリの作成
  • 2.7 基板の3D表示
  • 2.8 感光基板による製作
  • 2.9 基板製造サービスへの注文
  • 2.10 部品実装
  • 2.11 動作確認
  • 2.12 おわりに

第3章 プログラミング

  • 3.1 はじめに
  • 3.2 開発環境
  • 3.3 シリアル通信
  • 3.4 プログラムローダ
  • 3.5 割り込みと例外
  • 3.6 7セグメントLED
  • 3.7 応用プログラムの作成
  • 3.8 おわりに
  • 索引
  • 謝辞
  • CPU自作入門 おわりに

サポート

ダウンロード

ダウンロードについて

以下の「ダウンロード」より,ファイル名をクリックしてください。

ご注意ください

ダウンロードされたファイルについて,万一障害が発生し,その結果いかなる損害が生じたとしても,小社および著者は責任を負いかねます。必ずご自身の判断と責任においてご利用ください。

再配布ついて

ダウンロードしたオリジナルのファイル,それらを改編したもの,ともに再配布する場合は無保証であることと,著作者を明記したうえでの再配布を可能といたします。なお,商用利用は不可とさせていただきます。

以上のことをご確認,ご了承の上,データをご利用願います。

【第1章】
仕様書:AZPR_datasheet_1.01.pdf
RTL:AZPR_RTL.zip
モジュール階層表
ファイル階層表

※2012年10月23日付けで,【第1章】の仕様書を差し替えました。それ以前にダウンロードされた方は,お手数ですが再度ダウンロードしていただきますよう,お願いいたします。

【第2章】
FPGA基板のEagleデータ:AZPR_FPGA.zip
電源基板のEagleデータ:AZPR_POW.zip
AZPR EvBoardの部品ライブラリ:lib.zip
Eagleファイルの使用方法
FPGA基板の3D表示:AZPR_3D.zip(2012年11月28日付けで追加)
【第3章】
ソースコード:Sample_Program.zip
アセンブラ:azprasm.zip
UrJTAGの設定ファイル:UrJTAG_Setting.zip
ダイアグプログラムのbit, mcs, svfファイル:AZRP_EvBoard_Diag.zip
制約ファイル:AZPR_EvBoard.ucf(2013年5月15日付けで追加)
【お試し版PDFファイル】
お試し版PDFファイル:978-4-7741-5381-0-otamesiban.pdf(2017年11月27日付けで追加)

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2013年9月2日更新)

P.30 2~3行目

「8進数では0から8で数値を表現します。」
「8進数では0から7で数値を表現します。」

P.46 図1-38の【例】

6'd111100
6'b111100

P.84 図1-76の【アドレスとメモリの対応】

CPU-84-go.jpg

CPU-84-sei.jpg

※クリックすると,画像を大きく表示できます。

P.112 上から3行目

MEMステージで実行さるため、
MEMステージで実行るため、

P.403 上から8行目

「AZPR_EvBoartd.ucf」
「AZPR_EvBoard.ucf」

P.403 合成オプションについて

ISEの論理合成時に面積重視のオプションを選択する必要がありましたが,必要な記載が漏れておりました。

「ISE Project Navigator」ウィンドウの左下にある「Synthesize」を右クリックし,「Process Properties」を選択します。

「Process Properties」ダイアログの「-opt_mode」の値を「Area」に変更してください。

その後は書籍の手順通り進めてください。

書籍の手順に沿ってFPGAにXC3S250Eを使用してAZPR EvBoardを製作された場合には,上記の手順が必要です。

なお,市販されているAZPR EvBoardに搭載されているFPGAはXC3S500Eで,充分な論理ブロックがあるため,上記の手順は不要です。

P.451 表3-10 ASCIIコード表

10進の「41」,「64」,「97」が飛んでおり,10進と16進,文字の対応がずれてしまっております。

修正した表を掲載いたしますので,こちらをご参照ください。

補足情報

ソフトのバージョンアップによる齟齬をきたした部分

(2013年3月21日更新)

P.76

  • Icarus Verilogによるコンパイルコマンド

最新版のIcarus Verilogでは、オプションを最初に記述して、ソースコードとテストベンチは最後に指定する必要があります。

本書に記載されているバージョン(ver.0.9.5)ではこの問題は起きません。

iverilog -s regfile_test -o regfile_test.out regfile_test.v regfile.v

商品一覧