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の値に注意して、簡易電卓の 制御回路のタイムチャートを完成させなさい
© Copyright 2024