論理回路2
第1章 はじめに
−簡単な電卓を設計するには−
井澤 裕司
1. 論理回路2を開講するにあたって
- この授業では、2年の授業
「論理回路1」
の後を受け、より高度で実践的な論理回路を学習します。
- 本章では、
「論理回路1」
の復習をかねて、
「最も単純な電卓」
を設計してみましょう。
- なお、この
「論理回路2」
では、2年で学習した
「組合せ回路」
や
「論理を簡略化する手法」
については
- 十分習熟し、そ
れらが自由に使いこなせるものとして
解説します。
- 理解が不足していたり、忘れてしまった項目については、各自資料
- http://www7b.biglobe.ne.jp/~yizawa/logic/index.html
- の該当する章を参照し、復習して下さい。
- それでは始めましょう。
2. 簡単な電卓を作ってみよう
- 2.1 電卓の機能
- 論理回路の具体的な設計手法を整理するため、
「1桁の10進数の和」
を計算する簡単な
- 電卓を設計してみましょう。
- 電卓の入力装置は、数字(
0-9
)やプラス(
+
)、イコール(
=
)等を入力する
テンキー
です。
- 10進数の
キーボード
や
テンキー
を押すと、それぞれのキーに対応する電気信号が
- 発生します。
-
- この電気信号を、10進数のキーに相当する2進数に変換します。これを
エンコーダ
- (符号器)
といいます。
1桁の10進数
は
4ビットの2進数
で表すことができます。
- 例えば、テンキーの”
7
”を押すと”
0111
”という2進数が生成され、この2進数を
レジスタ
- に記憶します。
- 次に、テンキーの”
+
”(プラス)押すと、上の”0111”という2進数が
加算器
の一方の
- 入力レジスタ
にセットされます。
- 次に、テンキーの”
3
”を押すと、”
0011
”という2進数が生成され、この2進数を
レジスタ
- に記憶します。
- テンキーの”
=
”(イコール)を押すと、2進数の”
0011
”が加算器のもう一方の
入力レジ
- スタ
にセットされます。
- 加算器
の出力は5ビットの2進数”
01010
”になります。この演算結果を10進数に変換
- します。この変換を行うのが
デコーダ(復号器)
です。
- デコーダ
の結果を人間の目に見える形で表示するのが
ディスプレイです
。電卓の場合、
- 液晶表示装置
になります。
- テンキーや ”
+
”、”
=
” 等のキーを押すと、
レジスタ
や
表示用デコーダ
の入力に、
- 適切な信号を選択して切り替える必要があります。これらは、
マルチプレクサ
と
- 呼ばれます。
- 以上の電卓の機能を、最も簡単な回路で実現してみましょう。
- キーになるのは、
エンコーダ
、
加算器
、
デコーダ
、
レジスタ
、
マルチプレクサ
です。
- 2.2 エンコーダの構成
- ここでは
エンコーダ
を設計します。この
エンコーダ
は、
0
から
9
までのキーのいずれか1つを押すと、
- これに相当する4ビットの2進数を出力する回路です。
- 下に設計した
エンコーダ
の回路を示します。テンキーを押すと、出力が変化しますので、いろいろ
- 試してみて下さい。
- この
エンコーダ
は簡単な組み合わせ回路です。10進数の”
10
”、”
11
”、”
12
”、”
13
”、”
14
”、”
15
”が
- 使用されていないことを利用して、論理を簡略化しています。具体的な簡略化手法に
「カルノー図」
が
- あります。この手法の具体的な内容については、
「論理回路1」の第5章
を復習して下さい。
- なお、この回路は1桁の入力を想定しています。実際には、10桁以上の入力を想定しなければなりま
- せん。この場合は、
2進化10進符号
を、2進数に変換する回路が必要になります。
- 2.3 加算器の構成
- ここでは、正の4ビットの
加算器
を設計します。
- この具体的な回路構成を以下に示します。
- なお、
FA
は
全加算器
、
HA
は
半加算器
です。これらの具体的な回路については、
「論理回路1」の第9章
を
- 参照して下さい。
- 入力の値をクリックすると、0と1の値を変えることができます。
- いろいろ操作して、正しい結果が得られるか確認して下さい。
- 加算器
の桁数を増やすには、
全加算器
をMSB側に増設します。
- また、
減算
の機能を追加するためには、マイナスの数を
補数表現
する必要があります。
- 1の補数
を用いた例を、
「論理回路1」第9章
の最後に紹介してありますので、参考にして下さい。
- 2.4 デコーダの構成
- 次に、
加算器
出力の2進数を10進数に変換して、液晶等の
7セグメント表示装置
で表示する
デコーダ回路
- について検討してみましょう。
- 一般の
電卓
では、2進数の計算結果を10進数に変換し、各桁ごとに数字の形状を
7つのセグメント
で表して
- 表示します。すなわち、10進数への変換と、表示用の変換操作が必要になるわけです。
- 1桁の10進数の加算の場合、表示すべき10進数は多くても2桁です。
- ここでは、回路の簡単化を図るため、5ビットの2進数を直接2つの
7セグメント表示装置
で表示することを考え
- てみましょう。なお、表示すべき10進数が1桁のときは、上位の桁には何も表示しないようにします。
- 通常の
組合せ回路
の設計手法にならい、
真理値表
を作成して、
論理式
を簡略化し、
MIL記号
で
回路図
を
- 作成します。ここで、「加算器の出力が、10進数で18を越えることはない」ということを用いて、論理を簡略化
- します。
- このようにして得られた回路図を下に示します。なお、途中の過程については、各自トレースして下さい。
- 2.5 電卓の構成
- これまで説明した
エンコーダ
と
加算器
、
デコーダ
に、
フリップフロップ(
DFF)
を用いた
レジスタ
、2組の信号の一方を
- 選択して出力
する
マルチプレクサ(
セレクタ
)
、そしてこれらを制御する
制御回路
を追加すると、下の
電卓
が完成します。
- なお、
エンコーダ
には、いずれかのキーが押された状態を識別するため、10個の入力の論理和をとる機能を
- 追加してあります。
- また、
デコーダ
には入力ミス等のエラーが生じた場合、誤りを示す”
E
”という文字を表示する機能を加えました。
- これは、内部に2組の入力(8入力)を切り替える
マルチプレクサ(セレクタ)
を組み込むことにより実現します。
- また、クリアキー”
C
”で、各回路の状態を
リセット
し、
初期状態
に戻します。
3 制御回路について
- それでは
制御回路
は、どのようにして実現するのでしょうか?
- 制御回路は、各キー入力の種類に応じて、
レジスタ
や
マルチプレクサ
の切り替え、エラー表示等を行う
順序回路
です。
- 以下、簡単に設計手順を説明しましょう。
- 始めに、電卓の操作方法を整理して、以下の
状態図
を描きます。
- なお、クリアのキー”
C
”を押した状態を”
ステージ0
”とし、3bitの2進数 [
000
] で表現しています。
- 次に数字のキーや、”
+
”、”
=
”のキーを押すごとに、
ステージ
が推移します。
- 次に、この
状態図
を基に、以下の
遷移表
を作成します。
- これより、各キー入力および
フリップフロップ
の入力と、
フリップフロップ
の出力の関係が明らかになります。
- 最後に、
3個のフリップフロップ(D-FF)
を使用し、その入出力の関係を
組合せ回路
を用いて表現し、簡略化します。
- 以下に、最終的な結果として得られた制御回路の回路図を示します。
- 今は、これらの内容がよく理解できなくても問題ありません。(これから学習するのですから)
- 次章では、ここで示した
状態図
、
遷移表
の表現法について学習します。
- これらをしっかり習得すれば、
電卓
やより高度な
プロセッサ(CPU)
などを設計することも可能です。
- 基礎をしっかり身に付け、それらの動作が頭の中でイメージできるよう努力して下さい
。
4. まとめ
- ここでは、
「最も単純な電卓」
を
論理回路
で構成する手法について、整理しました。
- ここで説明した
デコーダ
や
加算回路
は、2年で受講した
「論理回路1」
の知識を活用すれば、設計できる
- ことがわかりました。
- しかし、
制御回路
のような
順序回路
を、具体的に設計する手法については、
「論理回路1」
だけの知識では
- 十分ではありません。
- さらに高級な
プロセッサ(CPU)
や
誤り訂正回路
など、より高度な処理を行う
論理回路
を設計するためには、
- 順序回路
や
演算回路
の知識を身に付ける必要があります。
- 「論理回路2」
では、これらの内容について詳しく解説します。
論理回路2のトップページに戻る