12. 簡易電卓を作る

1
論理回路学
12. 簡易電卓を作る
satoh.cs.uec.ac.jp/lecture/LogicDesign.html
佐藤証 ⻄9-613
[email protected]
2
機能設計
 ⼀桁の10進数の2つの数字の和を計算する電卓を作る
 ⼊⼒は0〜9の数字,クリア(C),プラス(+),イコール(=)
 表⽰は7セグメントLED,10の桁が0のときは表⽰しない
①
②
③
④
⑤
⑥
初期状態ではLEDに0を表⽰、Cキーで無条件に初期状態となる.
テンキーを押して1番⽬の数(例えば3)を⼊⼒すると、その値が表⽰される.
+を押すと加算モードに⼊る.表⽰は変わらない.
2番⽬の数(例えば9)を⼊⼒すると、その値が表⽰される.
=を押すと⼆つの数の和(12)が表⽰される.
操作に誤りがあるとエラー状態となりEが表⽰される.Cでリセットされる.
① クリアC
② 数の⼊⼒3
⑥ エラー表⽰
③ プラス+
⑤ 和の表⽰=
④ 数の⼊⼒9
機能分割とブロック図の作成
①
②
③
④
⑤
テンキー⼊⼒を4ビットの2進数に変換するエンコーダ
4ビットの2進数を保存する2つのレジスタ
2つのレジスタ出⼒の和を計算する加算器
レジスタか加算器を選んでデコーダに出⼒するマルチプレクサ
レジスタか加算器の出⼒を10進数に変換して7セグメントLEDに表⽰
するデコーダ
⑥ エラーを表⽰するデコーダ
⑦ 全体のステートマシン制御を⾏う制御回路
3
タイムチャート
 エンコーダ出⼒
- 押されたテンキーの値を出⼒
- 押されていなければ0
 レジスタ1
- テンキーが押されるとエンコー
ダ出⼒を取込む
- Cキーが押されると0を保存
 レジスタ2
- 前のレジスタ1の値を保存
 加算出⼒
- レジスタ1と2を加算
 MUX出⼒
- レジスタ1と加算出⼒を制御回
路出⼒SELで切り替える
 LED表⽰器
- MUX出⼒をデコーダで変換し
た信号に応じた数を表⽰
- 制御回路からERRが出⼒される
とEを表⽰
 CLK
- テンキーか「C」キーが押され
るとパルスを出す
 SEL
- 「=」キーが押されて加算が⾏
われると1となり、その他は0
 ERR
- 操作を誤ると1となる
4
エンコーダ
 テンキーI0~I9の1つが押されると対応する2進数B3B2B1B0を出⼒
 Inumはテンキーの1つが押されると1になる
B3
B2
B1
B0
=
=
=
=
I9+I8
I7+I6+I5+I4
I7+I6+I3+I2
I9+I7+I5+I3+I1
0
1
2
3
4
5
6
7
8
9
I9 I8 I7 I6 I5 I4 I3 I2 I1 I0 B3B2B1B0
0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 1
0 0 0 0 0 0 0 1 0 0 0 0 1 0
0 0 0 0 0 0 1 0 0 0 0 0 11
0 0 0 0 0 1 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0 0 1 0 1
0 0 0 1 0 0 0 0 0 0 0 1 1 0
0 0 1 0 0 0 0 0 0 0 0 1 1 1
0 1 0 0 0 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 0 0 1 0 0 1
以前勉強した10進→2進カウンタ
にInumが付いただけ
5
プライオリティエンコーダ
6
 今回の電卓は同時に複数のキーが押されたときの処理をサボっている
 プライオリティ(優先度)エンコーダは、決められた優先順位に従って
複数⼊⼒のエンコードを⾏う
 ⼊⼒あり/なしを⽰す信号が必要
優先度
⼤
⼩
I7 I6 I5 I4 I3 I2 I1 I0 X3X2X1X0
0 0 0 0 0 0 0 0 1 1 0 0 0
1 0 0 0 0 0 0 1 x 1 0 0 1
2 0 0 0 0 0 1 x x 1 0 1 0
3 0 0 0 0 1 x x x 1 0 1 1 ⼊⼒あり/なし
4 0 0 0 1 x x x x 1 1 0 0 はX3で判断
5 0 0 1 x x x x x 1 1 0 1
6 0 1 x x x x x x 1 1 1 0
7 1 x x x x x x x 1 1 1 1
Z 0 0 0 0 0 0 0 0 0 0 0 0
x:0でも1でもいいDonʼt care
プライオリティエンコーダ
X
X
X
X
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
∙I
I ∙I ∙I
I ∙I ∙I
I
I
∙I
I ∙I ∙I ∙I ∙I
I
I ∙I ∙I
I ∙I ∙I
∙I ∙I
I ∙I ∙I ∙I ∙I
∙I
I ∙I ∙I
I ∙I ∙I
I
∙I
∙I ∙I ∙I ∙I ∙I
I ∙I ∙I ∙I ∙I ∙I ∙I
∙I
0
1
2
3
4
5
6
7
Z
I7 I6 I5 I4 I3 I2 I1 I0 X3X2X1X0
0 0 0 0 0 0 0 11 0 0 0
0 0 0 0 0 0 1 x 1 0 0 1
0 0 0 0 0 1 x x 1 0 1 0
0 0 0 0 1 x x x 1 0 11
0 0 0 1 x x x x 11 0 0
0 0 1 x x x x x 11 0 1
0 1 x x x x x x 111 0
1 x x x x x x x 1111
0 0 0 0 0 0 0 0 0 0 0 0
7
8
演習1(解答)
 吸収則を⽤いて次の式を証明しなさい
C∙A
C ∙ A ∙B C ∙ A
C∙A
C∙A∙B
C∙B
C∙ A
A∙B
吸収則
C∙ A
A・(A+B)=A, A+A・B=A
A+A・B=A+B, A+A・B=A+B
B
C∙A
C∙B
 上の式を⽤いてプライオリティエンコーダのX0の式の簡略化の過
程を⽰しなさい
X
X
I
I
I
I
I
I
I ∙I ∙I
I ∙I ∙I ∙I ∙I
I ∙I ∙I ∙I ∙I ∙I ∙I
I ∙I
I ∙I ∙I
I ∙I ∙I ∙I
I
I
I
I
∙I ∙I
I
∙I
I ∙I
∙I
I ∙I
∙I
I ∙I
∙I ∙I ∙I ∙I
I ∙I ∙I ∙I ∙I ∙I ∙I
∙I ∙I
I ∙I ∙I ∙I ∙I ∙I
上の式
∙I
I ∙I ∙I ∙I ∙I
上の式
∙I
I ∙I ∙I ∙I
吸収則
9
演習2(解答)
 右の真理値表が⽰すプライオリティ
エンコーダの出⼒X2~X0の論理式と
回路図を書きなさい
0
1
2
Z
I2 I1 I0 X2X1X0
x x 1 1 0 0
x 1 0 1 0 1
1 0 0 1 1 0
0 0 0 0 0 0
レジスタと加算器
 D-FFを4つ使った4ビットレジスタを2つ⽤意
 加算器は2つのレジスタの値を加算する4ビットのリプルキャリー型
10
マルチプレクサ
 SEL=0:レジスタAの4ビット出⼒A3~A0を選択
 SEL=1:「=」キーが押されると5ビットの加算器⼒S4~S0を選択
11
12
7セグメントデコーダ
Y4 Y3 Y2 Y1 Y0
Za
Zb
Zc
Zd
Ze
Zf
Zg
頑張って作る
Zh
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Y4
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
Y3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
Y2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
Y1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Y0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Za
1
0
1
1
0
1
1
1
1
1
1
0
1
1
0
1
1
1
1
Zb Zc Zd Ze Zf Zg
1 1 1 1 1 0
1 1 0 0 0 0
1 0 1 1 0 1
1 1 1 0 0 1
1 1 0 0 1 1
0 1 1 0 1 1
0 1 1 1 1 1
1 1 0 0 1 0
1 1 1 1 1 1
1 1 1 0 1 1
1 1 1 1 1 0
1 1 0 0 0 0
1 0 1 1 0 1
1 1 1 0 0 1
1 1 0 0 1 1
0 1 1 0 1 1
0 1 1 1 1 1
1 1 0 0 1 0
1 1 1 1 1 1
x(以下使⽤せず)
Zh
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
エラー表示デコーダ
 キー操作が正しくない時に制御回路がERR=1を出⼒することで
セグメントLEDにEを表⽰させる回路
13
14
制御回路の状態遷移図
 制御回路は⼊⼒に応じて、各状態を遷移させながらレジスタ、加算器、
デコーダ等のデータ処理回路に制御信号を供給する
 シーケンサーとも呼ばれる
C
状態の定義と動作
Q 2Q 1Q 0
0 000
1 001
2 010
3 011
4 100
5 111
表⽰ 次動作
1番⽬
クリアC
0
の数字
1番⽬の数 1番⽬
+
字⼊⼒完了 の数字
1番⽬ 2番⽬
+⼊⼒完了
の数字の数字
2番⽬の数 2番⽬
=
字⼊⼒完了 の数字
加算
=⼊⼒完了
C
結果
エラー
E
C
9-0
状態0
状態
CLEAR
C
C
状態1
NUM1
C 9-0
以外
C
以外
C
状態5
C 9- 0
以外
ERROR
C
C
以外
+
状態4
EQUAL
C =
以外
=
C
状態3
NUM2
状態2
PLUS
9-0
15
制御回路の遷移表
P
P
P
I
I
I
I
Icr
I
∙ Q ∙Q ∙Q
Q ∙Q ∙Q
I ∙Q ∙Q ∙Q
I
∙Q ∙Q
I ∙Q ∙Q ∙Q
I
∙Q ∙Q ∙Q
I ∙Q ∙Q ∙Q
0が少ないのでP2-0=1
となる条件を考える
I ∙Q ∙Q ∙Q
I ∙Q ∙Q ∙Q
現在の状態
⼊⼒
状態
Inum Ips Ieq Q2 Q1 Q0
1
0
(x)
0
(x)
0
(x)
0
(x)
1
0
(x)
0
(x)
0
(x)
0
(x)
1
0
(x)
0
(x)
0
(x)
0
(x)
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
1
1
0
1
0
0
1
1
0
1
0
0
1
1
0
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
CLEAR
NUM1
PLUS
NUM2
EQUAL
ERROR
CLEAR
NUM1
PLUS
NUM2
EQUAL
ERROR
CLEAR
NUM1
PLUS
NUM2
EQUAL
ERROR
CLEAR
NUM1
PLUS
NUM2
EQUAL
ERROR
次の状態
P2
0
0
0
0
0
0
0
1
0
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
P1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
P0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
0
1
1
状態
CLEAR
CLEAR
CLEAR
CLEAR
CLEAR
CLEAR
NUM1
ERROR
NUM2
ERROR
ERROR
ERROR
ERROR
PLUS
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
EQUAL
ERROR
ERROR
16
制御回路
 P2〜P0の論理式を反転(図のNORゲート)させてP2〜P0を作る
 キー⼊⼒で作ったクロックCLKでD-FFにデータを取込むので、CLK
を遅延させないと正しく動作しない
 「=」キーが押されて状態EQUAL(100)になるとSEL=1となり加
算結果が表⽰される
正しい動作
遅延不⾜で誤動作
3をD-FFに取込めない
P
I
I
∙Q ∙Q
I ∙Q ∙Q ∙Q
P
I
I
∙Q ∙Q ∙Q
P
I
I ∙Q ∙Q ∙Q
I ∙Q ∙Q ∙Q
I ∙Q ∙Q ∙Q 演習3(解答)
 キーが押されてないときのP2〜P0の値に注意して、簡易電卓の
制御回路のタイムチャートを完成させなさい