...

電子双六の製作 - 高知工科大学

by user

on
Category: Documents
13

views

Report

Comments

Transcript

電子双六の製作 - 高知工科大学
卒 業 研 究 報 告
題
目
電子双六の製作
指 導 教 員
原 央 教授
報 告 者
学籍番号 1040215
清家 将
平成
16 年
2 月
17 日
高知工科大学 電子・光システム工学科
卒業研究報告
目次
章
1、
題目
目的
項
3
2、
製作する回路
3
(1)
(2)
(3)
(4)
3、
詳細な回路
(1)
(2)
(3)
(4)
(5)
(6)
4、
14
発振回路 ………………………………………………………14
さいころ回路 …………………………………………………15
マス目制御回路 ………………………………………………19
70進アップダウンカウンタ ………………………………20
イベント回路 …………………………………………………24
全体回路図 ……………………………………………………27
回路の製作
(1)
(2)
(3)
(4)
(5)
5、
双六のルール ……………………………………………………3
動作目標 …………………………………………………………4
動作方式の検討 …………………………………………………5
結論 ……………………………………………………………13
28
製作において注意したこと …………………………………28
製作 ……………………………………………………………29
改良点 …………………………………………………………32
全体回路図(修正後) ………………………………………41
動作確認 ………………………………………………………43
まとめ
45
1
1.
目的
私はまず今まで作成した回路の中でもっとも複雑な回路を作成したいと考
えた。テーマは「自動化」とし、通常では手動で行われていることを基板
上で表現する。そのためのシステムを考え、さらに具体的にディジタル回
路として実現することにより、電子回路を設計する実践力を身に付けたい
と考えた。
目的とする機能は電子双六である。双六を構成するルールや要素を考察し、
それを回路上で忠実に再現する。あらゆる条件に応じた動作を実現するシ
ステムと回路を作成することにより、演算回路、組合せ回路の知識と応用力
も深める。
2.
作成回路
(1) 双六回路のルール
① 双六は、ゴールまでの距離が短いとあっさりと終了してしまう。また、
長すぎる場合も途中で飽きてしまう。ゴールまでにさいころを振る回数
が、15回から20回程度なら長すぎず短すぎない適切な長さであると
感じた。さいころを振ったときの目の平均は3から4であるので、さい
ころを20回振ればゴールに到達する距離 、60マスをゴール地点とし
た。
② 現実の双六はゴール地点に「到達」しても、さいころの目が残る場合は
「通過」し、逆戻りをする。(現在位置からさいころの目を足した結果が
60を越えた場合、越えた値の分60マス目から逆戻りをする。)
③ さらに双六を面白くするために、スタートからゴールまでの途中にイベ
ントを設けることにする。
以上を、双六を再現するための基本ルールとして設計する。イベント
2
とは、
「ある特定のマスに止まったとき、そのマスに設けられた命令に従
い強制的にマスを移動すること」である。イベントは「マスを進む」と
「マスを戻る」の 2 種類を設置する。
(2) 動作目標
現実の双六の基本動作を基に電子双六の動作を考察する。
現実の双六の基本動作は、
① さいころを振る。
② 出た目に従い、コマを進める。
③ 止まったマスでイベントがある場合、そのマスに設定された命令に従い、
強制的に行動する。
④ ①へ戻る。
これを基にした電子双六の基本動作は、
① さいころ用のスイッチを押す。
② コマを進ませるためのスイッチを押す。
③ 止まったマスでイベントに遭遇した場合は、信号のランプが点灯する。
その場合、イベント動作用のスイッチを押してイベントを実行する。
④ ①に戻る。
以上から、双六回路の基本構成を考えると、
① スイッチ回路
さいころ回路、マス目制御回路、イベント回路を起動させるスイッチを一つ
の基板上にまとめて使いやすくする。
② さいころ回路
スイッチ回路のさいころ回路用(SW1)のスイッチを押している間、さい
ころの目がルーレットする。スイッチを離すと止まり、値が決定する。
③ マス目制御回路
さいころ回路により決定した目をマスに反映させる。また、イベントが発生
した場合のマス進め(マス戻り)のための制御も行う。
④ イベント回路
マスに止まったときにイベントの判定を行う。
3
イベントがある場合、イベント用のスイッチを押すことによって、イベント
に応じた値をマス目制御回路に入力する。
⑤ 70進カウンタ
10進カウンタと7進カウンタによって構成。マス目制御回路から出力され
たパルスをカウントし、7セグメント表示器によって現在位置を表示する。
以上5つの回路の関係を図に表すと、
制御
制御
①スイッチ回路
制御
値を設定
②さいころ回路
値を設定
③マス目制御回路
④イベント回路
カウントパルス発生
⑤70進カウンタ
図2.1 双六回路の基本構成
となる。
(3) 動作方式の検討
図2.1が示すように、マス目制御回路は他の全ての回路の動作に影響す
る。この回路の動作が双六回路全体の動作方式を決定するため、最初に検討
する必要がある。
マス目制御回路はさいころの値を結果に反映させる。また、イベント回路
との関係も考える必要がある。次の3つの方式が考えられる。
4
①加算・減算方式
さいころで出た目の値を記憶しておき、加算によってマスを進ませる。60
を越えたときは、減算に切り替える。減算は1の位を2倍した値を元の値か
ら引く。
例、58+5=63、63−3×2=57
②状態遷移をコントロールする方式
現在の1の位の値とさいころの目から次に止まるマスを決定する。1の位の
状態遷移表を作成し(結果を表2.1に示す)、それを基に作成したカルノ
ー図を用いて式を簡単化する(表2.2に示す)。その式を基に論理回路を
作成する。
10の位は状態遷移表の桁上がり信号 C が1(H)のときに桁上がりを行う。
③アップダウンカウント方式
70進アップダウンカウンタでさいころの値を加算(減算)を行う方式。ゴ
ールマスに到達したとき、またはイベントによってダウンカウントが行われ
るときはダウンカウンタに切り替える。
3 つの方式の特徴を理解し、もっとも機能的に優れていると考えられる方式
を採用することにする。
①加算・減算方式
(長所)
加算回路・減算回路を用いるため、1つずつカウントアップする必要が無
い。そのため、カウントアップの途中にイベントマスを通過した場合の誤
作動が起きない。また、その対処のための回路を作成しなくても良いので、
イベント回路と組み合わせやすい。
(欠点)
ゴールマスを超えた場合の減算は1の位を2倍するため、乗算回路がその
ためだけに必要になる。
5
②状態遷移をコントロールする方式
(長所)
状態遷移を用いるので、原理的にはもっとも理解しやすい。
(欠点)
実際にカルノー図で簡単化を行ったところ(表2.2)、7変数のために簡
単化後も膨大な長さの式となった(式は示していない)。回路も非常に複雑
になる。
③アップダウンカウント方式
(長所)
パルスによって値を加算していくので、加算回路や減算回路が必要ない。ゴ
ールマスやイベントマスでの減算への切替が簡単で制御しやすい。回路の
素子数が3方式のなかでもっとも少ない。
(欠点)
カウンタを用いる方式のため、カウントの途中でイベントマスを通過する
ことがあり、イベント判定での誤作動を防ぐ必要がある。そのため、構成
する回路同士の組合せを3方式の中でもっとも気をつけなければならない。
※結論は11ページに記す。
6
表2.1
10 進数状態遷移表
入力 I
現在の状態Q
次の状態Q+
D2
D1
D0
Q3
Q2
Q1
Q0
0
0
0
0
0
0
0
0
0
0
桁上げ出力Co
Q3+ Q2+ Q1+ Q0+
Co
0
0
0
1
0
1
0
0
1
0
0
1
0
0
0
1
1
0
0
1
1
0
1
0
0
0
1
0
0
0
1
0
1
0
1
0
1
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
1
1
0
0
1
0
0
1
0
0
0
0
1
1
0
1
0
1
0
1
0
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
0
0
0
0
1
1
0
0
0
1
0
1
0
0
0
0
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
0
0
1
1
1
0
1
0
1
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
0
1
0
0
1
1
0
0
0
1
1
0
1
1
1
0
1
0
0
1
0
0
0
0
1
0
1
1
0
0
1
0
0
0
0
0
1
0
1
0
0
0
1
0
1
1
0
0
0
1
0
0
1
1
1
0
0
0
0
0
0
0
0
1
0
1
1
0
1
0
1
0
7
0
1
1
1
0
0
0
0
1
0
0
1
0
0
1
0
1
0
1
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
1
1
1
0
0
1
0
1
0
0
0
0
0
1
1
1
0
0
1
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
1
1
0
0
0
0
1
1
1
0
0
0
1
1
0
0
0
0
0
1
0
1
0
0
1
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
1
1
0
1
0
0
1
0
1
0
0
0
1
0
0
0
0
0
0
1
1
0
0
1
0
0
1
0
0
0
0
0
1
0
1
1
0
0
0
1
1
1
0
0
0
0
1
0
1
1
0
1
0
0
1
1
1
0
0
0
1
0
0
1
0
0
0
1
0
0
0
0
1
0
1
0
0
0
0
1
1
0
1
1
0
0
1
0
1
1
0
0
0
0
1
1
1
1
0
1
0
1
0
0
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
0
1
0
1
8
表2.2
10 進数状態遷移カルノー図
9
10
11
(4)結論
以上の特徴を踏まえて具体的に検討した結果、
加算・減算方式と状態遷移をコントロールする方式は、ともに使用する素
子数が多い。とくに②は簡単化した式から回路図を作成したが、素子数が
膨大な量となり現実的ではなかった。③のアップダウンカウント方式は、
素子数が少ないので作成後のチェックもしやすく実現しやすいと判断した。
12
3、詳細な回路
図2.1の基本構成をもとにして、双六回路を作成していく。
回路全体を動作させるためには、クロックが必要となるので発振回路を作成
する必要がある。なお、スイッチ回路は各構成回路を起動するスイッチを同
じ基板内に配置しただけである。すなわちスイッチを分散させるので、スイ
ッチ回路の説明は省略する。
(1)発振回路
今回は、CR発振回路を使用する。スイッチ回路のスイッチがONの間、
パルスを各回路のクロックに入力し続ける。さいころのルーレットは速い方
がよい。さいころ回路に比べて、7 セグメントで表示する現在マス表示のカウ
ントは比較的遅い方がよい。そのため、CR 発振器はさいころ回路用とマス目
制御回路、イベント回路用の 2 種類に分けて作成する。
図3.1発振回路(さいころ回路用)
さいころ回路用の発振回路の発振周波数は
R1=1MΩ、C1=0.01μFとすると、
発振周波数f1 = 1/(2.2×R×C)
(式3.1)
の式から、
f1=29.1 Hz
となる。また、周期は 0.034s である。
一方、マス目制御・イベント回路用の発振周波数は、2∼4Hz前後が適当
であると考えた。抵抗の値は 100kΩとし、C1に替わって配置するコンデン
サC3の容量を1μとする。
式3.1を用いて周波数を求めると、
13
f2 = 1/(2.2× 1μ × 100k)
= 4.5 Hz
となる。周期は 0.22s である。
(式、
(2)さいころ回路
さいころ回路は6進アップカウンタとデコード部、LEDで構成している。
(6進アップカウンタ)
さいころ回路の真理値表は表3.1で示している通りとなっている。
通常、
(2進)000=(10進)1 ∼ (2進)101=(10進)6
の方が、デコード部の素子数が少なく簡単な回路となる。しかし今回は、マ
ス目制御回路、70進アップダウンカウンタとの組合せの関係で、
(2進)001=(10進)1 ∼ (2進)110=(10進)6
で作成する方が都合が良いと分かった。くわしい理由はマス目制御回路の項
で説明する。
この方式の場合、強制リセット法を利用し
(2進)111
のとき、上位2桁(Q2、Q1)のみをリセットし、001とする。
(デコード回路)
表3.1からLEDを点灯させるための(式3.3)∼(式3.5)ができ
る。
(a、g)=
X+Y・Z
(式3.3)
(b、f)=
X・Y
(式3.4)
(c、e)=
_
X+Y・Z
(式3.5)
この式を基にデコード回路を作成する。
14
(LED表示部)
6進カウンタのカウント値の通りにサイコロの目(LED)が点灯する。
7つのLEDをそれぞれa∼gとし、サイコロの目が1∼6のときにそれぞ
れどのLEDが点灯するか(図3.2参照)を真理値表を用いて式をたてる
①
a○
e○
b○d●f○
c○
g○
②
a○
e●
b○d○f○
c●
g○
③
a●
e○
b○d●f○
c○
g●
④
a●
e●
b○d○f○
c●
g●
⑤
a●
e●
b○d●f○
c●
g●
⑥
a●
e●
b●d○f●
c●
g●
(○:消灯、●:点灯)
図3.2
LED点灯表
表3.1
6進カウンタ真理値表
点灯させるLED
さいころの目
a
b
c
1
d
c
カウンタ出力
f
g
X
Y
Z
0
0
1
0
1
0
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
0
1
2
1
3
1
4
1
1
5
1
1
6
1
1
1
1
1
1
1
1
※ (x、y、zはD−FFのQ2、Q1、Q0)
15
(LEDドライブ回路)
各LEDのドライバは2SC1815を使用する。
インバータ素子の7404でもドライブは可能である。
しかし、LEDのドライブには、強い光度を得るとき、5mAが必要になる。
電源電圧Vccを4.5Vの場合、74HC04の VoL は0.17V、出力
ピンの吸い込み電流は4mAである。同様に6Vの場合、7404の VoL は
0.18V、吸い込み電流は5.2mAである。今回使用する電圧は5Vで
あるので、吸い込み電流は5A弱であると予想できる。
LEDに流れる順電流を計算すると、
・R= 470Ω の場合
Vcc―V(LED)−V(7404)
=5−2−0.17
=2.83
V/R =(2.83/470)
= 6.02mA
・R= 560Ω の場合
V/R =(2.83/560)
=
5.05mA
・R= 680Ω の場合
V/R =(2.83/680)
=
4.16mA
となることから、680Ωでは満足な電流を得ることができず、560Ω以
下では7404では負担が大きく故障の可能性があることが分かった。その
ため、2SC1815を使用してドライブする方が良いといえる。
2SC1815を使用する場合、電流の値を5mAより多めに設定して余裕
を持たせたいので、抵抗の値を470Ωとする。
16
図3.3 さいころ回路
17
(3)マス目制御回路
マス目制御回路は、マスを進めるための回路である。そのため、さいころ
回路、イベント回路、70進アップダウンカウンタとすべての構成回路に影
響を与える。
D−FF3個を使用し、Q 出力を次段のクロック信号とすることでダウン
カウンタを構成している。プリセットされる値はさいころ回路で決定した値、
またはイベント回路で決定した値である。正確にプリセットを行うため、S
W1によって、3ビットすべての値をクリアしておく。
つまり、プリセット用スイッチ(PRE−SW)を押すことで、さいこ
ろの値がNAND、ANDを通じてプリセットされる。
プリセットされた値は、SW2によってクロックパルスが入力されダウン
カウントが行われる。
カウンタが(2進)000をデコードすると、AND入力がLとなりクロ
ックパルスを遮断する。
さいころ回路で
(2進)000=(10進)1 ∼ (2進)101=(10進)6
としなかった理由を説明する。
例えば,この(2進)101からダウンカウントをして、カウントの変化
時に6回のパルスを出すには、
101 → 100 → 011 → 010 → 001 → 000 → 111
と、111までダウンカウントをしなければならない。
この値では、イベント回路でイベントありと判定されたときに問題が生
じる。この条件では、新たにプリセットするためにSW3を押してイベント
を実行する前に、マス目制御回路を一度クリアする必要がある。
この111を000にクリアする手間を省くためには、さいころ回路のデ
コードを、
(2進)001=(10進)1 ∼ (2進)110=(10進)6
としておけばよい。
無駄にスイッチが増えて、双六のリズムを悪くさせないためというのがデ
コードを変更した理由である。
18
図3.4 マス目制御回路
(4)70進アップダウンカウンタ
70進アップダウンカウンタは、カウンタ部とダウンカウント判定部の2部
構成になっている。ダウンカウント判定部はRS−FFとJK−FFで構成
している。一方、カウンタ部はD−FFを1の位4個、10の位3個の非同
期式カウンタで構成している。
(ダウンカウント判定)
ダウンカウントに切り替わる条件は、以下のようになっている。
① ゴールマス(60マス目)に到達する。(ゴールの場合を含む)
② イベントが発生した場合のダウンカウント判定。
さいころ回路で決定した値が 偶数のときアップ
さいころ回路で決定した値が 奇数のときダウン
19
③ ①もしくは②の場合で、かつマス目制御用スイッチ(SW2)またはイ
ベント実行用スイッチ(SW3)がONの状態のときにダウンカウントに切
り替わる。
③はあくまでもスイッチを押しているとき(実行中)のみダウンカウントを
行うということである。したがって論理回路による制御を必要とするのは①
と②である。
アップダウンカウントの切り替えはJK−FFで制御している。
74109の真理値表(表3.2)からJ=0の場合(クロックパルス入力
中)、K(N)=0のときQ、Q(N)の値が反転することを利用した。
表3.2
74HC109真理値表
INPUT
OUTPUT
CLR(N)
PR(N)
J
K(N)
CK
Q
Q(N)
FUNCTION
0
1
X
X
X
0
1
CLEAR
1
0
X
X
X
1
0
PRESET
0
0
X
X
X
1
1
1
1
0
1
PE
Qn
Qn(N)
1
1
0
0
PE
0
1
1
1
1
1
PE
1
0
1
1
1
0
PE
Qn(N)
Qn
1
1
X
X
NE
Qn
Qn(N)
NO CHANGE
TOGGLE
NO CHANGE
※ (N)は否定(バー)、Xは Don’t Care
※ PE(NE)はポジティブ(ネガティブ)エッジ
※ 東芝セミコンダクター社データシートより抜粋
通常の状態、すなわち条件を満たしていない場合、カウントしていないと
きとカウントアップ中で J の値が変わる。カウントしていないときは入力
J=1、K(N)=1であるので、出力 Q=1と Q(N)=0となる。カウント
中は保持状態となるので、出力は同じである。
①の条件を満たすとき、10の位の6(110)をデコードするので K(N)
=0 になる。J は 70 進カウンタがカウント中のときは0、カウント終了時
は1になる。よって、カウントアップ中に60に到達した場合は、J=0、
K(N)=0 になり、出力は Q=0、Q(N)=1に切り替わる。
20
また、60でストップ(ゴール)した場合は出力が反転するので、Q=0、
Q(N)=1になる。RS-FF を用いると、このときに禁止状態になってしま
うため、JK-FF を用いる方がよい。
②の条件は、RS−FFを用いる。真理値表(表3.3)からマス目制御
回路にプリセットされる値(LSB) Qo を入力S(N)とし、SW1からの値
(OFF=1,ON=0)を入力R(N)とする。さらにイベントスイッチSW
3の否定(OFF=0,ON=1)と RS-FF の出力 Q との NAND をとるこ
とで、条件を満たすことができる。
(例)
さいころの値が奇数(NAND 出力は 0)のとき、PRE-SW をON(S
W1はOFF状態なので 1)にすると、S(N)=0、R(N)=1 になるので、
Q=1、Q(N)=0 となる。PRE-SW がOFFになっても、S=R=1のた
め Q、Q(N)は保持される。
その状態でSW3をON(信号は 1)にすると、Q との NAND 出力が
0 となるので、ダウンカウントに切り替わる。その後、SW1をONにす
ることで、S=1、R=0となるため Q=0となり、アップカウントに切り
替わる。
表3.3
S(N) R(N)
RS−FF回路真理値表
Q
Q(N)
0
0
禁止
0
1
1
0
1
0
0
1
1
1
保持
※Q(N)はQの否定(バー)
(桁上がり動作)
2進(Q3Q2Q1Q0:1010)をデコードし、10の位へのクロックパル
スとする。同時にQ3とQ1をクリアし、0000に戻す。
21
(桁下がり動作)
70 進カウンタの 10 の位(1111)をデコードすると NAND 出力が0
になり、10の位のD−FF3ビット(Q7Q6Q5)をダウンカウントに切り
替える。同時にクロックパルスを入力し、ダウンカウントを行う。ダウンカ
ウンタにパルスが入力される(クロックが1になる)と、デコードの反転出
力1との NAND 出力が 01 になる。この NAND 出力を Q2と Q1のクリ
アに入力し、1001にする。
図3.5 70 進アップダウンカウンタ
22
(5)イベント回路
イベント回路を設計するにあたり課題が生じる。
課題 1、イベントを増やしすぎない。イベント箇所を偏らせない。
イベント数が多すぎると、双六の大部分がイベントに左右されてしまう。
また、常にイベント発生の可能性を持たせたいので、イベント箇所が偏る
(例:1の位の1.2.3で発生する)ことも望ましくない。
課題 2、カウントアップ中にはイベントを発生させない。
1つずつカウントするので、何の対策も施さない場合、(イベントを含む)
カウントアップ中にイベントが発生してしまう。この状態は双六の機能の破
綻を意味するので、もっとも重要といえる。
課題 3、プリセット用など、余分なスイッチを増やさない。
使用時に作業を複雑にさせないため必要最小限のスイッチ数に留めたい。
以上の課題を解決する方法や論理を説明する。
(対策)
課題 1
イベント数は一桁平均 3 箇所とし、計18箇所とする。また、イベント判定
は70進カウンタの1の位3ビットをデコードすることで行う。
この条件を満たすのは、下位 2 ビット(Q1Q0)が01のときである。
さらにパターンを2つにするため、Q3 の値が0あるいは1でパルス発生数
を変える。
このパターンでは、約3マスに1回の割合でイベントが発生する。
課題 2
カウントアップごとにイベント判定を行っているため、イベントマスを通過
するごとにプリセットされてしまう。これを防ぐ案として、SW2またはS
W3がONの状態のときにはプリセットされないようにする。
(対策詳細)
23
図3.6のようにSW2、SW3の信号を EX−NOR(NAND構成)の入
力とすることによって、SW2とSW3が共にOFF状態のときにプリセッ
トがされる。
課題 3
イベント回路のプリセットのコントロールに D−FF を用いる。SW1 もしく
は SW2 を押すとクロックが発生する。つまり、
① SW1 を押す → クロックが発生し、Q(N)が0になる。後段の回路
を通してプリセットが遮断される。
② SW2 を押す → Q(N)が1になるので、プリセットされる。
SW1 または SW2 を押すごとにイベント回路1の D-FF のクロックが立ち
上がり、そのたびに PRE1,2がプリセット可能、不可能の状態が切り替
わる。SW1 と SW2 は「さいころを振る→マスを進める」というルール上、
①と②を交互に行うため、SW3 押すとき(イベントを行うとき)は必ずプ
リセット可能状態となっている。
SW2 を押している時は、ダウンカウント中であるが、SW2、3 を押してあ
る間は、ゲートによりプリセットを遮断しているので誤動作はない。
24
図3.6 イベント回路 1
図3.7 イベント回路 2
図3.7は 70 進カウンタの1の位 4 ビット Q2Q1Q0 の(101)または
(001)を AND を用いてデコードしている。デコードが1のときのみ図3.
6の回路を通じてマス目制御回路にプリセットが行われる。
25
(6)全体回路図
以上の回路をまとめると、図3.8のようになる。
」
図3.8 双六回路全体図
26
4、回路の製作
(1)製作において注意したこと
(ア)使いやすいこと
(イ)出来るだけ小さくすること
(ウ)外観のよいレイアウトにすること
今回、回路製作において「無駄の少なくする」という点を気をつけた。問
題なく動作することがもっとも大事なことではあるが、実際に使用するとい
う目的がある以上、使用者の目線に立ったレイアウトを心掛ける必要がある。
レイアウト図を図4.1 ∼ 図4.3に示す。
図4.1 スイッチ回路
図4.2 70 進アップダウンカウンタ回路
27
図4.3 さいころ・マス目制御回路、マス目表示部
(2) 製作
実際に回路図をもとに作成したところ、次の回路は正常に動作した。
・ 発振回路
・ さいころ回路
発振回路の周期を確認したところ、さいころ回路用は 0.038s、マス目制御用
は 0,37sであった。マス目制御用の周期が計算よりも遅いが、動作上は何の問
題も無い。さいころ回路は、図3.2のLED点灯表の通り、1から6のす
べてのパターンで点灯していた。さいころを止めたときのそれぞれの目の出
る割合もほぼ均等であった。そのため、正常の動作を行っていると判断した。
しかし、正常な動作を行っていない回路もあった。
・ マス目制御回路
・ 70 進アップダウンカウンタ
の2つの回路である。
マス目制御回路はさいころの目の数のクロックパルスを 70 進カウンタに入
力する回路である。したがって、さいころの目の数だけアップカウントしな
ければならないが、それ以上にアップカウントをしてしまうという問題が生
じた。また、70 進アップダウンカウンタの動作も、桁上げがおきると1の位
が0に戻ることなく4になるという問題が起こった。
28
以下に、その原因と問題点を考察した。
①マス目制御回路
(問題点)
さいころの目以上に 70 進カウンタにパルスを出力することがある。
(原因)
原因を追求したところ、プリセット時にすでに問題があった。例えば、さい
ころの目が1の場合、本来 Q2Q1Q0 の値は(001)となるはずである。し
かし、確認すると(111)となっていることが分かった。
カウンタの動作を最初から確認したところ、プリセットした値が次段の信号
になっていることが判明した。
(例)1(Q2Q1Q0:001)のプリセットを行った場合
プリセットされた値は Q に出力される。マス目制御回路はダウンカウンタで
あるために Q の出力が次段のクロック信号になる。
例の場合、Q0 が1になると次段へクロックが入ることになり Q1 が1になる。
さらに Q1 が1に立ち上がったことによって Q2 へのクロック信号が入力され
ることになる。結果 Q2Q1Q0 は111となり、予定通りにカウントが行われ
なくなる。
001の他、Q1 もしくは Q0 がプリセットされた場合は正常なプリセット結
果にならない。
(行った対処)
プリセットする値を反転し、カウント方式をアップカウントに変更する。
誤動作の原因は Q の立ち上がり信号がクロックになっていることである。そ
のため、Q の否定出力をクロックに入力するアップカウントなら、これを防
ぐことができる。
アップカウントにしたことで001からアップしてはパルスの数が変わって
しまう。そこで、さいころの目を NAND を通してプリセットしていたところ
を AND に変更する。
これにより、プリセットの値が反転し、001の場合110がプリセットさ
れることになる。これに伴い000ではなく、111をデコードしてクロッ
クパルスを遮断するように変更する。
29
(対処の結果)
対処法を行ったところ、プリセットの値が正確に反映され、正確にパルスを
刻むことが可能になった。ただ、変更によって新たな問題点が発生すること
となった。デコードを111としたことでマス目制御回路の値が000に戻
らず、イベントのためのプリセットができなくなった。クリア用スイッチを
増やすことは、双六のテンポを損ねるため行わない。
この問題の対処法として、クロック遮断デコード信号を000と111の場
合にし、111のときに全段にクリアを入力する方法を試みた。
結果はクリアは入力されるものの、Q の否定出力が1になるため後段にクロ
ック信号として入力され、000には戻らなかった。
②70 進アップダウンカウンタ
(問題点)
桁上がり時に1の位が0に戻らず4になる。
(原因)
(1)の例とは逆のクリア時に起こった誤動作である。
桁上がりは10(1010)をデコードした出力を10の位のクロックパル
スとすることで行っている。このとき、同時にQ3 とQ1 にクリア信号を出し
1 の位4ビットを0(0000)に修正している。
クリア信号が入ると、Q3 とQ1 は0に戻るが、Q3 とQ1 の否定からは1が
出力される。桁上がりはアップカウント時に起こることなのでQの否定出力
が次段のクロック信号になる。その結果、Q3否定の出力は影響を与えるこ
とはないが、Q1否定の出力がQ3のクロック信号となり、Q3の出力が1
になる。
1の位 4 ビットが0100となるために表示が4になっていたのである。
桁下がり時にもクリア信号を入力するが、ダウンカウントに切り替わっている
(クリアによって0になるQ出力がクロック信号になる)ために誤動作が起こ
こり得ない。
(行った対処)
桁上げの際に Q2 に対してもクリア信号を入力する。クリアのタイミングは
Q1、Q2、Q3 と徐々に遅らせていく。
30
(対処の結果)
4(0100)になることを防げたとしても、8(1000)になる場合が
多い。Q2 の立ち上がりを利用して Q3 を0に戻す方法もあるが、タイミング
のずれから4になる可能性がある。いずれにせよ確実に0に戻す方法がない
ため、理想的な動作は得ることができない。
(結論)
2つの問題はともに、使用したカウンタがいずれも非同期式であることから、
起こったことであると考えられる。
プリセットもしくはクリア信号によって立ち上がった、Q または Q の否定出
力がクロック信号となっていたことが原因である。
そこで、同期式アップダウンカウンタを作成する。出力を直接次段のクロッ
クとしない非同期式なら、プリセットやクリア信号の影響も考える必要がな
くなり、誤動作の可能性を少なくすることができるからである。
(3) 改良点
①同期式マス目制御回路
.
同期式 6 進カウンタを作成する。同期式にしたことからプリセットの影響を
考えなくても良い。イベント時のプリセットを考え、ダウンカウンタを作成
する。
真理値表からカルノー図を作成し、入力 D0∼D2 の式を導き出す。
表4.1 同期式7進ダウンカウンタ真理値表
カウント
現在の状態
次の状態
D の状態
Q2
Q1
Q0
Q2
Q1
Q0
D2
D1
D0
6
1
1
0
1
0
1
1
0
1
5
1
0
1
1
0
0
1
0
0
4
1
0
0
0
1
1
0
1
1
3
0
1
1
0
1
0
0
1
0
2
0
1
0
0
0
1
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
/
/
/
/
/
/
31
表4.2 同期式 7 進ダウンカウンタカルノー図
D1
D0
Q2 Q1
Q2 Q1
Q0 00 01 11 10
0
1
1
1
Q0 00 01 11 10
1
0
x
1
1
1
x
D2
Q2 Q1
Q0 00 01 11 10
0
1
1
x
1
※ (N)は否定
D0 = Q0(N)
(4.1)
D1 = (Q1・Q0)(N)+Q1・Q0
(4.2)
D2 = Q2・(Q1+Q0)
(4.3)
この式(4.1)∼(4.3)をもとに回路図(図4.1)を作成する。
32
図4.1 同期式マス目制御回路
この回路は、すべての段で発振回路からのパルスをクロック入力とする。
プリセットは NAND を通して行われ、さいころの目(Q2Q1Q0)を各段がそ
のまま Q0∼Q2 に出力する(例:さいころの目101のとき、各段(ビット)
の値は101にプリセットされる)。ダウンカウント動作は、真理値表(表4.
1)に表されている動作をプリセットされた値を基準として行う。
0(000)をデコードすると、NAND から 0 が出力され、クロックを遮断する。
②同期式 70 進アップダウンカウンタ
同期 70 進アップダウンカウンタ(UDC)は、同期式 10 進と同期式 7 進カ
ウンタの組み合わせで作成する。手順は、マス目制御回路と同様に真理値表
とカルノー図を用いて立てた式を基に設計する。
(同期式 7 進ダウンカウンタ
はマス目制御回路と同じ原理なので省く)
33
表4.3 同期式 10 進アップカウンタ真理値表
カウント
現在の状態
次の状態
D の状態
Q3
Q2
Q1
Q0
Q3
Q2
Q1
Q0
D3
D2
D1
D0
0
0
0
0
0
0
0
0
1
0
0
0
1
1
0
0
0
1
0
0
1
0
0
0
1
0
2
0
0
1
0
0
0
1
1
0
0
1
1
3
0
0
1
1
0
1
0
0
0
1
0
0
4
0
1
0
0
0
1
0
1
0
1
0
1
5
0
1
0
1
0
1
1
0
0
1
1
0
6
0
1
1
0
0
1
1
1
0
1
1
1
7
0
1
1
1
1
0
0
0
1
0
0
0
8
1
0
0
0
1
0
0
1
1
0
0
1
9
1
0
0
1
1
0
1
0
1
0
1
0
表4.4 同期式 10 進アップカウンタカルノー図
D0
D1
Q3 Q2
Q3 Q2
Q1Q0
Q1Q0 00 01 11
00
1
1
x
10
Q1Q0
Q1Q0 00 01 11
1
00
01
x
11
x
x
11
x
x
10
10
1
1
01
D2
x
1
1
1
1
x
x
x
x
x
11
10
1
D3
Q3 Q2
Q3 Q2
Q1Q0
Q1Q0 00 01 11
10
Q1Q0
Q1Q0 00 01
00
1
x
00
x
01
1
x
01
x
11
10
10
1
1
x
x
11
x
x
10
34
1
x
x
x
x
D0 = Q(N)
(4.4)
D1 = Q1・Q0(N) + Q1(N)Q0
(4.5)
D2 = Q2・(Q1・Q0)(N) + Q2 (N)・Q1・Q0
(4.6)
D3 = Q3 (N)・Q2・Q1・Q0
+ Q3・Q2・Q1・Q0 (N)
(4.7)
表4.5 同期式 10 進ダウンカウンタ状態遷移表
カウント
現在の状態
次の状態
D の状態
Q3
Q2
Q1
Q0
Q3
Q2
Q1
Q0
D3
D2
D1
D0
9
1
0
0
1
1
0
0
0
1
0
0
0
8
1
0
0
0
0
1
1
1
0
1
1
1
7
0
1
1
1
0
1
1
0
0
1
1
0
6
0
1
1
0
0
1
0
1
0
1
0
1
5
0
1
0
1
0
1
0
0
0
1
0
0
4
0
1
0
0
0
0
1
1
0
0
1
1
3
0
0
1
1
0
0
1
0
0
0
1
0
2
0
0
1
0
0
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
1
0
1
1
35
表4.6 同期式 10 進ダウンカウンタカルノー図
D0
D1
Q3 Q2
Q3 Q2
Q1Q0
Q1Q0 00 01 11
00
1
1
x
10
Q1Q0
Q1Q0 00 01 11
1
00
01
x
11
x
x
11
x
x
10
10
1
1
01
D2
x
1
1
1
1
x
x
x
x
x
11
10
1
D3
Q3 Q2
Q3 Q2
Q1Q0
Q1Q0 00 01 11
10
Q1Q0
Q1Q0 00 01
00
1
x
00
x
01
1
x
01
x
11
10
10
1
1
x
x
11
x
x
10
1
x
x
x
x
D0 = Q(N)
(4.8)
D1 = {Q1・Q0(N) + Q1(N)・Q0}(N)
(4.9)
D2 = Q2・(Q0+Q1) +
Q3・Q0(N)
D3 = Q3・Q0 + Q3(N)・Q2(N)・Q1(N)・Q0(N)
36
(4.10)
(4.11)
表4.7 同期式7進アップカウンタ真理値表
カウント
現在の状態
次の状態
D の状態
Q2
Q1
Q0
Q2
Q1
Q0
D2
D1
D0
0
0
0
0
0
0
1
0
0
1
1
0
0
1
0
1
0
0
1
0
2
0
1
0
0
1
1
0
1
1
3
0
1
1
1
0
0
1
0
0
4
1
0
0
1
0
1
1
0
1
5
1
0
1
1
1
0
1
1
0
6
1
1
0
0
0
0
0
0
0
表4.8 同期式7進アップカウンタカルノー図
D0
D1
Q2 Q1
Q2 Q1
Q0 00 01 11 10
0
1
1
1
1
Q0 00 01 11 10
1
0
x
1
1
1
1
x
1
D2
D0 = Q()(N)
Q2 Q1
(4.12)
Q0 00 01 11 10
0
1
1
1
1
x
1
D1 = Q1・Q()(N)+Q1(N)・Q() (4.13)
D2 = Q2 + Q1・Q0
以上の式(4.1)∼(4.14)を用いて回路図を設計する。
37
(4.14)
図4.2 同期式 70 進アップダウンカウンタ回路図
38
アップカウント動作、ダウンカウント動作はそれぞれ別の処理を行っており、
入力 D に入力する際に OR によってアップ処理、ダウン処理のどちらでも反映
することができる。反映するのはアップ、ダウンのどちらか一方のみで、アッ
プダウン制御信号が1のときはアップ、0のときはダウンとなる。ダウンカウ
ントの条件は P18∼20 と同じである。
桁上がりは1001をデコードすることで行われる。次のクロックで 10 の桁
は繰り上がる。1 の桁は1010になるが、デコード出力0を D3 と D1 に入力
することで、0000に修正される。
桁下がりは、ダウンカウント時に0000をデコードして次のパルスで行われ
る。その際、1の桁は1011となるが、桁上げ時と同様にデコード出力0を
D2 に入力することで、1001に修正される。
また、ダウンカウントによって0未満(マイナス)になる場合は、”0000000”
(全ビット0)をデコードすることで、クロックパルスを遮断している。
図 4.2 にある禁止入力防止 RS-FF は、表3.3のRS−FF回路真理値表の
禁止入力00を防止するため、図4.3のように S(N)、R(N)の NOR をとり、
出力を S(N)と OR をとる。この FF の場合、入力が00のとき、S(N)は NOR
出力が1になるので、入力は10となり Q=0、Q(N)=1となる。そのため、禁
止入力が防止される。
禁止入力防止型 RS-FF
図4.3
S(N) R(N)
Q
Q(N)
0
0
0
1
0
1
1
0
1
0
0
1
1
1
保持
※ Q(N)はQの否定(バー)
表4.9 禁止入力防止型 RS-FF 真理値表
39
(4)全体回路図(修正後)
以上の修正を加えて回路全体図を再設計したものを P40に示す。
この回路は修正前の回路(非同期式カウンタ)と比べ、
① プリセットやクリア時に前段の値(Qn-1、Qn-1(N))の影響されない。
② 遅延時間による誤動作を防ぐことができる。
という特徴を持つ。いずれも同期式への変更により、修正前の欠点を補ったも
のである。これにより、目標とする動作が可能と思われる。
40
図4.4 双六回路全体図(修正版)
41
(5)動作確認
製作した回路を動作別にチェックする。
① 発振回路の周波数はいくらか。
周期を確認したところ、27P での確認時と変わらず、さいころ回路用 0.038s
マス目制御、70UDC 用は 0.37s であった。
② さいころの目は1から6まで均等にでるか。
さいころ回路を 60 回動作して統計をとった。結果は以下のようになってい
る。
1 の目 ・・・ 15 回
2 の目 ・・・ 9 回
3 の目 ・・・ 11 回
4 の目 ・・・ 7 回
5 の目 ・・・ 10 回
6 の目 ・・・ 8 回
やや 1 の目に偏ったが、全体としてはほぼ均等である。
③ さいころの目の分だけマス目制御回路にプリセットされているか。
プリセットを行ったときの値をオシロスコープを用いて調べたところ、さい
ころの目と一致したことから、正常といえる。
④ 7進ダウンカウンタは正常にカウントしているか。
マス目制御回路に入力されるクロックの数を調べたところ、さいころの数の
分だけ入力されていた。それ以降はデコードによる遮断が行われているとい
える。
⑤ 70 進 UDC は正常にカウントしているか。
さいころの目の分だけカウントを行った
⑥ ダウン条件のときにダウンカウントに切り替わるか。
ダウンカウント判定部の動作をオシロスコープを用いて調べたところ、判定
出力はアップ化運と状態から切り替わっていた。
42
⑦ 60 マス目以降はダウンカウントされるか。
実験を行ったところ、60 マス目までは通常通りアップカウントを行っていた
が、60 マス目を境に 59、58・・・と、ダウンカウントを行った。
⑧ スタート地点以下(0 マス目)になるダウンカウントを遮断しているか。
実験の結果、00 を表示した後は、カウント数が残っているにも関わらず変化
が無かった。このことから、00 以降のクロックを遮断しているといえる。
⑨ イベントは動作するか。
実験の結果、アップカウント、ダウンカウントの両方のパターンを確認した。
その際のマス目制御回路のプリセットも正常であった。
以上から、双六回路として機能しているといえる。
43
5、まとめ
最初の動作不具合は、非同期式カウンタの動作を正確に理解していなかった
ことが原因である。非同期式の場合、アップカウント時は Q(N)が、ダウンカウ
ント時は Q が、次段のクロックになるという特徴を理解していながら、プリセ
ット時、クリア時の影響を考えていなかった。
とくに、70 進アップダウンカウンタの場合は桁上がり時に必ずクリアを行う。
仮に全段にクリアを行ったとしても、クリアは 1010 をデコードしたときのみ行
うものである。そのため、クリア信号がハザード化するので遅延時間の関係で
全段が 0 になることは無いと考えられる。その他に、自己修正型も考えられる手
段の一つであるが、アップダウンカウンタであったため、出力 Q を強制的に0に
することができなかった。
非同期式アップダウンカウンタでは、
(10 の位、1 の位の)2 段構成の 2 桁のカ
ウンタは実質不可能なことであった。
修正後の回路は、前述のとおり非同期式の欠点を無くしているので正常な動
作は可能であると考えた。実験も配線ミス、配線同士の短絡などでうまくいか
ない部分があったが、動作は正常に行われていることを確認した。
現段階で修正が必要であると考える箇所はすべて修正した。今後、改良を行
いたい箇所はイベント回路である。現在のイベントでは「進む」か「戻る」だ
けである。「1 回休み」や「はじめに戻る」など、より幅広いイベントも必要で
あると考える。それらを実現するための論理を考えなければならない。
今回の卒業研究で学んだことは、
① 初めて構想から設計、製作までを行ったこと
② カウンタの特徴
③ シミュレーションの必要性
である。
これまでは製作以外を行ったことが無かったため、構想段階から苦労した。
現在の力で双六をどの程度まで再現できるのかという点である。(4ページの)
3方式を検討し、最も適したものを選ぶために検証を行った。結局、カウンタ
を用いた方式となったが、それを考えた通りの動作が行えるように設計するこ
とはとても大変であった。
この一連の手順は非常に勉強になった。設計を行うことによって、設計におけ
る知識はもちろんのこと、構想段階の大切さも学ぶことができたからである。
44
今回では、動作方式の特徴を理解し、検討しなければ最も動作がイメージしや
すい加減算回路を用いた方式にしていた。実際は素子数がカウンタを用いたも
のより相当増えるため、とても効率的とはいえない。よい設計を行うためには、
回路の方向性を十分に検討することが大切であると感じた。
また、作成した双六回路はほとんどがカウンタである。設計前は演算回路を
用いたものも検討したが、もっとも効率的な設計法を利用するということでカ
ウンタを用いた回路に決定した。そのことから必然的にカウンタの特徴、ひい
てはFFの特徴を理解することがもっとも重要なことであった。
最終的には、最初に設計した非同期式がうまく動作せず、急遽同期式に変更する
という事態が起こってしまった。原因は、比較的原理が簡単な非同期式のカウ
ンタである。設計時、プリセットやクリア時に立ち上がった出力 Q(または Q(N))
の次段への影響をまったく考えていなかった。
このことから、やはりシミュレーションによる動作確認は怠ってはならない
と感じた。製作段階で気付いても修正が非常に困難になるからである。今回は、
非同期式を同期式に替えるだけで良かったが、根本的に間違っていた場合は大
変な時間のロスとなるので、必ずシミュレーションは行おうと考えている。
ただ、ミスによって非同期式の利点と欠点を学ぶことができたので、完全に
無駄というわけではなかったと考えている。桁上げ、桁借り動作が無い場合は
十分カウンタの役割を果たすことができる。
その他、基本的な回路でほとんど用いられる FF を 4 種類(D、RS、JK、T)使
用し、設計することで理解を深めることができた。実際、完成に至るまでには非
常に苦労した。しかし、この経験は他の回路を理解するとき、または設計する
ときに自然に生きてくるものと思う。今後、さらに設計と製作を行うことで経
験を積み、自らの実践力を高めていく考えである。
45
Fly UP