3

まえがき
手のひらのケータイがインターネットにつながり，ビーチでスキーヤと面と向かって会話できる．
ロボットのペットと遊ぶ．1 日分のテレビ番組をまるまる録画でき，宇宙からの映像さえも見ることができる．こんなことが「あたりまえ」と思えるようになりました．このようなことが実現できるようになった大きな要因の一つに，LSI の高性能化，高機能化が挙げられます．
新しいアイデアを形にするのはさまざまな方法で可能です．しかし，既存の製品より高機能，高性能が要求されるアイデアを実現するためには，「ハードウェア（LSI）」が必須です．
これまで LSI を作るということは，莫大な費用を必要としました．しかし，FPGA（field programmable gate array）や CPLD（complex programmable logic device）の登場により，LSI が身近なものになっています．近年，FPGA 技術は飛躍的に伸び，ASIC（application specific IC）にとってかわるまでの勢いをみせています．メモリやマイクロプロセッサなどが取り込まれた FPGA もあります．この夢のハードウェアを使いこなせれば，自分のアイデアを LSI 化できる時代がきているのです．
LSI 開発環境は，中小規模 FPGA 設計ツールを無償で利用できます．ちょこっと試してみるということができるようになっています．このことは教育という点においても大きな革命を起こしています．
FPGA と無償設計ツールを用いて実験講義を行う大学も続々と増えつつあります．さらに，企業での教育という点でも，コストを削減し，十分な人材育成を図ることも可能になっています．
このような背景から本書では，FPGA ボードを使いながら LSI 設計技術の基礎を学んでいく構成を採りました．LSI 設計の入門書と位置付けていますが，しごとで LSI 設計を始める人はもちろん，趣味
でおもしろいハードウェアを作る土台としても使えるものとしてまとめました．さらに，FPGA 設計
で避けては通れないハードウェア記述言語（HDL ； hardware description language）の書きかたを実際の回路を設計しながら理解できるようにもなっています．LSI 設計なんてまったくわからないという人でも本書を読めば簡単なゲームまで設計できるようになります．
ハードウェア設計技術は，書籍を読むだけでもある程度は身に付きます．しかし LSI を設計するのであれば，実際のチップとそれを動作させるためのボードがないと実感がわかないものです．さらに，正しく設計できたかどうかを実際に確認することが，理解の最短経路だと思います．本書には FPGAを搭載したボードと FPGA 設計ツールも付属しています．LSI 設計をはじめるための道具をすべて用意しています．本書とともに，パソコンの前に座れば準備完了です．
本書が，将来のトップ・エンジニア，ひいては新しい技術を生み出す引き金となることを願います．
2003 年 4 月

リスボンにて
山際伸一

4

本書の構成
目標── 野球ゲームを作る
本書では，プログラマブル・デバイスで動作する回路を設計しながら，HDL による LSI 設計の基礎について解説していきます．
付属の FPGA ボードで動作する「野球ゲーム」を作り上げることを最終目標にします．しかし，いきなり設計することはできません．最初はとても簡単な回路を HDL で記述し FPGA ボードで動作させてみます．回路を少しずつ拡張し，それを FPGA ボードで動作させながら HDL 設計を身に付けていきま
す．

特集の構成
読者のみなさんは，まず「野球ゲームを作る」という目標をしっかりと持ってください．ただ書籍を読もうとしてもなかなか意欲がわかないものですが，明確な目標があれば，がんばろうと思えるものです．
まず，第 1 章では，ハードウェア設計における手順について，アイデアが LSI になるまでの過程でどのようなことを考え進めていくかについて解説します．プログラマブル・デバイスと ASIC の違いについてもふれます．
第 2 章では，LSI 設計の流れを体験していただきます．付属の FPGA ボードを活用するために使用する開発ツール「Quartus Ⅱ Web Edition」の操作を説明します．ひととおりの操作を体験することにより，FPGA 開発ツールの使いかたが身に付きます．ここでは，VHDL の詳細には触れません．あらかじめ設計済みの回路を用意します．FPGA ボードが動作するのを見れば，きっと設計へのモチベーシ
ョンも高まると思います．
第 3 章では，VHDL による回路設計の基礎を固めます．非常に簡単な回路から，簡単なゲームを動作させるまで，少しずつステップアップしながら，実験を通して理解していきます．
第 4 章では，本書の最終目標である「野球ゲーム」の設計を行います．仕様の分析から開始し，機能分割，VHDL による回路の記述を行い，FPGA ボードでゲームを動作させるまで，機器の開発フローにしたがって

目標はしっかり持とう5
解説します．実際に手を動かし，記述を真似することで，VHDL および，FPGA 上での電子設計を習得していただけることを期待します．
本書により，読者のみなさんが VHDL による論理回路設計をマスタされ，すばらしい製品を生み出すことを願います．

使用する設計環境
本書では，米国 Altera 社の FPGA をターゲットにします．したがって設計環境については，このデバイスを用いる場合を想定して解説します．
ここでは使用する設計環境について，おおざっぱに説明しておきます．専門用語や固有名詞がいく
つか出てきますので，HDL 設計について予備知識がまったくない方は何を言っているのかわからない
かもしれません．とりあえず図や写真だけ眺めて，こんなツールを使うという程度のイメージだけ持っておいてください．詳しい説明は，後の章で行います．

FPGA ボード
本書では，付属の FPGA ボードで回路を動作させるための回路を設計することを前提として解説を進めます．
本書に付属の FPGA ボードには，Altera 社の「 ACEX 1K」フ ァ ミ リ の う ち ， 1 万 ゲ ー ト 規 模 の「EP1K10」を搭載しています．周辺機能には，単体
LED，7 セグメント LED，押しボタン・スイッチが用意されています．本書では，このボードのことを「FPGA ボード」と呼ぶことにします．仕様の詳細は，
付録 C を参照してください．

ACEX 1K 搭載の FPGA ボード

使用するソフトウェア・ツール
Altera 社の中小規模デバイスの開発では，無償版ツールを使用することができます．本書に付属のFPGA ボードも，無償版の設計ツール「Quartus Ⅱ Web Edition」を使用できます．この設計ツールは，本書に付属の CD-ROM に収録しています．また，最新版のツールは，Altera 社のホームページからダウンロード可能です．インストール方法は，付録 A を参照してください．使いかたを第 2 章で説明し
ています．

6

目

次

まえがき ………………………………………………………………………………………………………3
本書の構成 ……………………………………………………………………………………………………4

第 1 章 HDL による回路設計を始めるにあたって ……………………………………………9
1.1

システム設計と仕様策定 ………………………………………………………………………9
1.1.1

システム・レベルの設計 ………………………………………………………………………10

1.1.2

ボード・レベルの設計 …………………………………………………………………………10

1.1.3

LSI レベルの設計 ………………………………………………………………………………11

1.2

ASIC と FPGA ……………………………………………………………………………………11
1.2.1

ASIC とは ………………………………………………………………………………………12

1.2.2

プログラマブル・デバイスとは ………………………………………………………………12

1.2.3

ASIC と PLD の使い分け ………………………………………………………………………15

1.2.4

プログラマブル・デバイスの魅力 ……………………………………………………………15

1.3

LSI 設計の流れと開発環境 ……………………………………………………………………16
1.3.1

デザイン・エントリ ……………………………………………………………………………17

1.3.2

シミュレーション ………………………………………………………………………………18

1.3.3

論理合成と配置配線 ……………………………………………………………………………18

1.3.4

設計ツールの選定 ………………………………………………………………………………19

第 2 章 FPGA 開発を体験する ………………………………………………………………………21
2.1

Quartus Ⅱによる FPGA 開発の流れ …………………………………………………………21

2.2

Quartus Ⅱの基本操作 …………………………………………………………………………22
2.2.1

Quartus Ⅱの起動 ………………………………………………………………………………22

2.2.2

プロジェクトの作成 ……………………………………………………………………………23

2.2.3

設計エントリ ……………………………………………………………………………………27

2.2.4

コンパイル ………………………………………………………………………………………29

2.2.5

ダウンロード ……………………………………………………………………………………33

2.3

Quartus Ⅱを使いこなす ………………………………………………………………………34
2.3.1

既存のプロジェクトを修正する ………………………………………………………………34

2.3.2

既存の設計データを利用する …………………………………………………………………36

7

第 3 章 VHDL による論理回路設計の基本テクニック ………………………………………37
3.1

practice1 ： LED の点灯と消灯 …………………………………………………………………37
3.1.1

ライブラリ宣言 …………………………………………………………………………………39

3.1.2

パッケージ呼び出し ……………………………………………………………………………39

3.1.3

エンティティ宣言 ………………………………………………………………………………39

3.1.4

アーキテクチャ宣言 ……………………………………………………………………………39

3.2

practice2 ：複数の LED でバイナリ値を表示する …………………………………………40

3.3

practice3 ： 7 セグメント LED に 16 進数を表示する ………………………………………41
3.3.1

デコーダ …………………………………………………………………………………………41

3.3.2

process 文 ………………………………………………………………………………………42

3.3.3

case 文 ……………………………………………………………………………………………44

3.3.4

ハードウェアの基本は同時処理 ………………………………………………………………44

3.4

practice4 ： 7 セグメント LED に表示する数字を変化させる ……………………………45
3.4.1

クロック …………………………………………………………………………………………45

3.4.2

if 文 ………………………………………………………………………………………………45

3.4.3

バイナリ・カウンタ ……………………………………………………………………………47

3.4.4

算術パッケージ …………………………………………………………………………………48

3.5

practice5 ：スイッチの ON/OFF に合わせて LED を点灯/消灯する ……………………48
3.5.1
3.5.2

3.6

チャタリング除去回路 …………………………………………………………………………50
generic 文 ………………………………………………………………………………………51

practice6 ：ルーレットを作る …………………………………………………………………51
3.6.1

ステート・マシンによる設計 …………………………………………………………………55

3.6.2

ミーリ型とムーア型 ……………………………………………………………………………55

3.7

practice7 ：スロットマシンを作る ……………………………………………………………57
3.7.1

階層設計 …………………………………………………………………………………………62

3.7.2

component 宣言 …………………………………………………………………………………62

3.7.3

ポートのマッピング ……………………………………………………………………………63

第 4 章 野球ゲームの設計 ……………………………………………………………………………65
4.1

野球ゲームの仕様策定 …………………………………………………………………………65
4.1.1

動作仕様を考える ………………………………………………………………………………65

8

4.1.2

ボードの仕様を考える …………………………………………………………………………67

4.2

機能分割 …………………………………………………………………………………………68

4.3

各モジュールの仕様策定 ………………………………………………………………………70
4.3.1

トップ・モジュール（baseball̲top） …………………………………………………………70

4.3.2

ルーレット管理モジュール（batting） ………………………………………………………70

4.3.3

ルーレットの出目パルス発生モジュール（batlatch）………………………………………72

4.3.4

ルーレット状態出力モジュール（batter̲led̲dec）…………………………………………72

4.3.5

アウト・カウント管理モジュール（outcount）………………………………………………73

4.3.6

出塁状態管理モジュール（base）………………………………………………………………73

4.3.7

加点パルス発生モジュール（score） …………………………………………………………73

4.3.8

得点/出塁状態管理モジュール（baseball̲led̲out）…………………………………………73

4.4

再利用性の高い機能ブロックの関数化 ……………………………………………………74

4.5

得点/出塁状態管理モジュールの設計 ………………………………………………………77

4.6

ルーレット状態出力モジュールの設計 ……………………………………………………80

4.7

アウト・カウント管理モジュールの設計 …………………………………………………81

4.8

ルーレット管理モジュールの設計 ……………………………………………………………83

4.9

ルーレットの出目パルス発生モジュールの設計 …………………………………………88

4.10

加点パルス発生モジュールと出塁状態管理モジュールの設計 …………………………91

4.11

クロック分周モジュールの設計 ………………………………………………………………99

4.12

トップ・モジュールの設計 …………………………………………………………………100

4.13

FPGA ボードで動作させる ……………………………………………………………………106

4.14

機能の拡張について……………………………………………………………………………107

付録 A FPGA 設計環境のセットアップ ……………………………………………………………109
付録 B トラブル・シューティング …………………………………………………………………116
付録 C 付属 FPGA ボードの概要 ……………………………………………………………………120

表紙・パッケージ・デザイン

奥村

恒夫

第1章

HDL による回路設計を始めるにあたって
この章では，ハードウェアの基本的な設計手順について説明します．まず仕様策定時に考える事項をまとめます．専用 LSI 開発の二つの選択肢である ASIC とプログラマブル・ロジックの違いを比較します．また，LSI 設計に必要な設計ツールについても説明します．

1.1

システム設計と仕様策定

一つの独立した機器（システム）を設計す

システム・レベル1 システム・コンセプト
2 個数と価格
3 使用する技術
4 必要な性能ることを考えてみましょう．設計者は，図1-1 に示すように，
1）システム・レベル
2）ボード・レベル
3）LSI レベルという順序で設計を進めていきます．あるボード・レベル過程で行き詰まった場合，最上位のシステ

1 LSI間の信号の入出力仕様
2 電源
3 汎用LSIか，ASICか，FPGAか？
4 ハードウェアか，ソフトウェアか
5 実装技術ム・レベルで検討し直すことも必要です．
LSI 設計者にとっては，仕様に沿った LSIを作り上げることがゴールですが，だからといってシステム・レベルのことを考えなくてよいというものではありません．設計する LSI は何らかの機器の一部として使わ

LSIレベル1 信号線の電気的仕様
2 IPコアを使うか？
3 動作周波数
4 セットアップ時間とホールド時間

れる部品だからです．つまり，図 1-1 に示
すような順序で，さまざまな制約事項を考慮して決められたものなのです．

図 1-1

仕様策定時の検討事項の例

10

第1章

HDL による回路設計を始めるにあたってとはいえシステム・レベルやボード・レベルの設計で必要な技術は非常に幅広く，また奥が深いものです．HDL 設計はじめるにあたって，すべてを理解しなければならないというものではありません．
ここではこれから HDL 設計を始める方であっても知っておいていただきたい基本的な解説だけ行います．より深い知識は，本書の内容をクリアしてから，さまざまな文献を参考にしながら身に付けてく
ださい．

1.1.1

システム・レベルの設計

システム設計では，何をさせるものを作るか，そのターゲットを絞り込み，プロジェクトの終点を見据えることが重要です．また，製造台数と価格を見積もる必要もあります．システム・コンセプト，
個数，価格まで決定すれば，あとは，どのような技術を使うかを考えなければなりません．使用する技術が独自技術であれば，設計期間に研究や技術開発の時間を含める必要があります．すでに標準化された技術を使う場合でも，ライセンス形態などを調査し，利用するための条件を十分に調べないと特許侵害などの問題に発展する場合があります．標準技術で設計資産があれば，設計期間を短縮できる可能性もあります．
システム・レベルの仕様策定で重要な事項は性能です．例えば，システムに何らかの信号を与えた
ときの応答時間はどれくらいかといった内容です．可能な限り高速なものでなければならないのか，
それとも，人がストレスを感じない程度の応答速度でよいのかによって実現方法が変わってきます．
これらさまざまな要素を考慮してシステム・レベルのブロック図を作りあげていきます．
この段階で，どの機能をどのように実現するかのイメージがあれば，後の工程をスムーズに進められるでしょう．すなわち，システム・レベルのブロック図をもとに，ボード・レベルの仕様策定を行うことになります．

1.1.2

ボード・レベルの設計

次に，システム・レベルのブロック図をもとに，一つのボードに搭載する機能について検討していきます．まず，ハードウェアで実現する部分とソフトウェアで実現する部分を決定する必要があります．非常に複雑な処理，例えば，浮動小数点演算を含む処理などはソフトウェアで実現することのほうが容易で，安価に実現できることが多いようです．ハードウェアですべてを実現するのではなく，性能に見合う範囲でソフトウェアによる実現も考慮に入れておく必要があります．そして，機能の切り分けを行い，部品に汎用 LSI を使うのか，ASIC を設計するのか，FPGA を用いるのかといった選択を行います．
ボード・レベルにおける機能の切り分けが終わったら，切り分けた機能の依存関係を明らかにしておきます．例えば，LSI 間でデータを交換する場合，そのバス構成をどうするか，プロトコル（データ交換の手順）はどうするかといった入出力仕様を考えます．
ボード・レベルでは，プリント基板実装技術の知識も必要になります．つまり，ボードの層数やおおよそのレイアウトを考えておく必要があります．

第2章

FPGA 開発を体験する
米国 Altera 社の FPGA 設計は「Quartus Ⅱ Web Edition（以降，単に「Quartus Ⅱ」と呼ぶ）」ソフト
ウェアを使って進めていきます．ここではサンプル回路を使って FPGA 設計の一連の流れを体験していただきます．サンプル回路の詳細については，第 3 章で説明しますので，ここでは何も考えずに，
Quartus Ⅱの使いかたをマスタすることだけに集中してください．
この章を読み始める前に，あらかじめ Quartus Ⅱをインストールしておいてください．インストー
ル方法は付録 A で説明してあります．

2.1

Quartus Ⅱによる FPGA 開発の流れ

Quartus Ⅱによる FPGA 設計フローを図 2-1 に示します．
最初に，プロジェクトの作成を行います．これからコンパイルを行う設計データ，ターゲット・デ
バイスなどを指定します．次に，論理合成と配置配線を行い，FPGA のための回路データ（コンフィプロジェクト名の指定
設計ファイルの指定
プロジェクトの作成
サードパーティ・ツールの指定
ターゲット・デバイスの指定
デザイン・エントリ

論理合成

コンパイル

配置配線
コンフィグレーション・データ生成
プログラミング方式の指定

図 2-1
Quartus Ⅱによる FPGA
設計フロー

ダウンロードコンフィグレーション・ファイルの指定
プログラミングの実行

ピン配置指定22

第2章

FPGA 開発を体験する

グレーション・データ）を FPGA に書き込む（ダウンロードする）ことで，実機による動作確認を行う
ことができます．
1）プロジェクトの作成
プロジェクトとは，作成する回路を統括する設定のことです．Quartus Ⅱは，この設定をもとにコンフィグレーション・データを生成します．
プロジェクトには，HDL で記述した回路のソース・コード・ファイルとターゲット・デバイス，ピン・アサインなどのさまざまな情報が記録されます．設計をプロジェクトとして管理することで，設計変更や拡張の際に，細かな設定をやり直さずにすみます．
2）デザイン・エントリ
Quartus Ⅱには，HDL ソース・コードを入力するためのテキスト・エディタの機能があります．それを用いて，HDL デザインを入力していくことが可能です．
3）コンパイル
HDL ソース・コードの入力が完了したら，論理合成と配置配線を行います．この一連の処理を「コンパイル」と呼びます．
コンパイルでは，HDL ソース・コードの文法，回路規模などのチェックを行い，最終的にコンフィ
グレーション・データを生成します．
FPGA は I/O ピンの機能をある程度自由に決めることができます．Quartus Ⅱはピン配置を自動的に決めてくれますが，実際にはこれでは FPGA ボードの回路と合わないので所望の動作は期待できません．そこで，設計した回路の入出力を FPGA のどのピンに割り当てるかを指定します．
4）ダウンロード
コンフィグレーション・データを作成できたら FPGA に書き込みます．これを「ダウンロード」とい
います．

2.2

Quartus Ⅱの基本操作

それでは，Quartus Ⅱを使って，FPGA 設計の流れを体験してみましょう．

2.2.1

Quartus Ⅱの起動

Quartus Ⅱがインストールされていれば，デスクトップにアイコンが生成されているはずです．これをダブルクリックすると Quartus Ⅱが起動し，図 2-2 のような初期画面が開きます．デスクトップにアイコンがない場合は，Windows のスタート・メニューから「プログラム」→「Altera」→

第3章

VHDL による論理回路
設計の基本テクニック
本章では，VHDL による論理回路設計の基本を，付属 FPGA ボードを使いながら学びます．
ここで説明する内容は，最終目標である野球ゲームを設計するための基本技術要素でもあります．
野球ゲームでは LED，7 セグメント LED，スイッチの三つのキーとなる素子を FPGA で制御します．

3.1

practice1 ： LED の点灯と消灯

LED は光半導体素子の一つです．アノードとカソードの二つの端子を持ちます．ここに規定値以上の電圧がかかり，アノードからカソードに電流が流れると発光します．
図 3-1 に，付属 FPGA ボードの LED 周辺回路を示します．LED のアノードには，FPGA の I/O 電圧（V ccio）と同じ電圧がかかっています．したがって，FPGA の I/O ピンが L のときに LED が点灯します． H のときには消灯します．すなわち，LED の点灯と消灯を，ディジタル信号の L と H の 2値で表現できることになります．
FPGA ボード上の一つの LED だけを点灯する回路の VHDL ソース・コードをリスト 3-1（a）に示します．また，FPGA のピン配置を表 3-1 に示しま
3.3V

す．FPGA の 30 番ピンに接続されている LED（D9）D5 GREEN
D6

D4
GREEN

23
EP1K10を点灯させます．リスト 3-1（b）のように，出力す

D7RED

GREEN D8
RED

D9
RED

る論理値を 0 から 1 に変更すると，消灯にな
ります．

28
26
27
29

表 3-1 LED を点灯または消灯する回路のピン配置3075Ω×3（GREEN）
100Ω×3（RED）

図 3-1

付属 FPGA ボードの LED 周辺回路

ピンの名まえled_out

ピン番号
30

38

第3章

VHDL による論理回路設計の基本テクニック

リスト 3-1 LED を点灯または消灯する回路の VHDL ソース・コード
library ieee;use ieee.std_logic_1164.all;library ieee;use ieee.std_logic_1164.all;entity practice1 isentity practice1 isport (
led_out : out std_logic);

port (
led_out : out std_logic);end practice1;

end practice1;

architecture rtl of practice1 isarchitecture rtl of practice1 is

begin

begin

-- LED は LOW で点灯するように回路が構成され-- ているため std_logic 型の 0 を出力する．
-- これを 1 にすると消灯する．
led_out <= '0';
end rtl;-- LED は LOW で点灯するように回路が構成され-- ているため std_logic 型の 0 を出力する．
-- これを 1 にすると消灯する．
led_out <= '1';
end rtl;（b） LED を消灯する（a） LED を点灯する

ここで，VHDL 記述の基本的事項について説明しておきます．
VHDL の言語構造は図 3-2 のように，ライブラリ宣言とパッケージ宣言で始まり，エンティティ宣
言で入出力ポートを定義し，アーキテクチャ宣言に動作を記述していきます．
-- に続く文字列はコメントです．何を意図した記述かをコメントとして記述することで，保守性，再利用性が高くなります．
library ライブラリ名;
use ライブラリ名.パッケージ名.all;

ライブラリ宣言
パッケージ
呼び出し

entity エンティティ名 isport (
std_logic;
信号 1 : in
std_logic_vector(3 downto 0);
信号 2 : out
信号 3 : inout std_logic);end エンティティ名;

エ
ン
テ
ィ
テ
ィ
宣
言

architecture インプリメンテーション名 of エンティティ名 is--ノード宣言部
signal node1 : std_logic;
..
begin
動作記述部

end インプリメンテーション名;
アーキテクチャ宣言

図 3-2 VHDL の言語構造

第4章

野球ゲームの設計
いよいよ本書の最終目標である「野球ゲーム」の設計に入ります．野球ゲームの仕様を決め，その仕様を分析し，いくつかの機能モジュールに分割し，VHDL で記述していくようすを説明します．
VHDL による基本的な記述法は第 3 章で説明しました．しかしより大規模な回路になる野球ゲーム
では，これまで説明しなかった記述法を使うところがあります．これらについては，順次説明してい
きます．

4.1

野球ゲームの仕様策定

まずは，設計しようとする野球ゲームの仕様を策定します．仕様を作るためには，作ろうとするモノに対するイメージをしっかりと持つ必要があります．具体的にユーザが想定されているときには，お互いが持つ製品イメージに違いがないかといったすりあわせも必要です．

4.1.1

動作仕様を考える

はじめに野球ゲームの動作を考えます．
電源投入後，リセット・スイッチを押すことでゲームが始まります．最初の状態は，チーム 0 の攻撃になります．当然，ノー・アウト，ランナーなしです．
打撃スイッチを 1 回押すと，打撃ルーレットが回り始めます．もう一度，打撃スイッチを押すこと
で，打撃ルーレットが止まります．このときの出目に従い，アウト，ヒット，2 塁打，3 塁打，ホーム
ランのいずれかが決まります．
打撃ルーレットの出目に従ってランナーの進塁を行います．盗塁やタッチアップなど複雑なルールはなしとします．ランナーは塁打どおりに進塁すると仮定します．例えば，1 塁打が出たときは，ランナーは 1 塁となります．そのあと 2 塁打が出たときは，ランナーは 1 塁と 3 塁にいる状態にします．
イチローのような強肩野手，または，俊足ランナーは存在しないことにします．得点が入ると，チーム 0 の得点がホームインしたランナー数に従って加算されます．
出目がアウトだった場合，アウト表示が 1 アウトの状態になります．3 アウトになると，チーム 0 の攻撃は終了し，チーム 1 の攻撃となり，先ほど説明したチーム 0 の例のように，攻撃が始まります．

66

第4章

野球ゲームの設計

表示は LED を使用する．ランナーの出塁状態を表す LED を三つ，アウト・カウントを表す LED を二つ，打撃ルー
レットのための 7 セグメント LED を一つ，点数表示のための 7 セグメント LED を二つ使用する．
● 得点表示は 16 進数 1 けたで0 から F までとする．
● スイッチとして，リセット・スイッチと打撃スイッチをそれぞれ一つずつ使用する．
● チームは 2 チームとする．点数表示用 7 セグメント LED のドット表示で表現する．
● ルーレットの出目の種類と表示は，アウトが0 ，1 塁打が 1 ，2 塁打が 2 ，3 塁打が 3 ，ホームランがH とする．
● ルーレットは打撃スイッチを 1 回押すことでスタートし，もう 1 回押すことでストップする．
● リセット・スイッチを押すと，得点表示は両チームとも 0，ルーレットはストップ状態，チームは 0 の攻撃状態，
アウト表示用 LED はすべて OFF（ノー・アウト），出塁状態 LED はすべて OFF（ランナーなし）とする．
● ルーレットが停止した際にアウトが出たら，アウト・カウントを＋ 1 し，アウト表示用 LED を 1 アウトの場合は一つ，2 アウトの場合は二つ表示する．
● アウト表示用 LED が二つとも ON のとき（2 アウトのとき）にアウトが出たら，チームを変更し，アウト表示用
LED，出塁状態を表す LED をすべて OFF にする．
● 出塁状態 LED は進塁状態により ON/OFF する．例えば，ランナーが 1 塁，3 塁の場合は，1 塁と 3 塁の LED を ONにし，2 塁の LED を OFF にする．
● ランナーは塁打数どおりに自然に変更する．例えば，1 塁にランナーがいる際に 2 塁打が出ると，出塁状態は 2 塁，
3 塁となる．
● ホームインしたランナーの数に応じて，点数を加算する．例えば，2 塁，3 塁にランナーがいる場合に 2 塁打が出た
ときは 2 点が加算され，ランナー 2 塁となる．
●

図 4-1 野球ゲームの概略仕様

チーム0の得点

チーム1の得点

打撃
ルーレット

出塁表示

3アウト・
チェンジ

打撃スイッチ

写真 4-1

野球ゲームの動作イメージ

リセット・スイッチ

アウト表示

攻撃中表示