論理回路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のトップページに戻る