2. 論理設計 (1)組合せ回路
1. 概説 アナログ装置では量や数を「電圧の大きさ」や「針 の振れる角度」などで表現している。それに対して, コンピュータなどのディジタル装置では量や数を2 進数で符号化し,表現している。我々人間は数を符 号化するために「0」「1」「2」…「9」という10通り の文字を用いているが,ディジタル装置の中では 「0」と「1」の2値しかなく,「0」と「1」の組み合 わせで量(一般には「情報」)を表している。例え ば,4ビットの2値符号を組み合わせた場合,24 =16 通りの量(情報)を表現できる。 コンピュータやディジタル装置の内部では数や 量だけでなく,文字や制御信号,命令なども2値符 号で表現している。表1は文字を表現するASCIIと 呼ばれる文字コードの一部である。この表にしたが って,英字,数字,記号(@, #, ?,…)を8個の2値符号 の列,すなわち8ビットの2進数で表現する。ディジ タル装置内のハードウェアでは,2値符号を表現す るのにスイッチがONかOFFか,トランジスタが導 通か非導通かなどの状態に対応させている。 このように2値に符号化されたデータ(ディジタルデータ)を処理するために,コンピュ ータやディジタル装置ではさまざまなディジタル演算素子(各種ゲート,フリップフロップ など)が使われている。この実験では,それら演算素子の動作を調べ,それらを組み合わせ ていろいろなディジタル回路やディジタル装置が実現できることを理解する。 2. ディジタル演算とブール代数 ディジタル装置内では,「0」と「1」の二つの値だけをとる2値変数の演算を組み合わせ て演算が行われる。2値変数を対象とした演算はブール代数(Boolean algebra)という数学に 基礎を置いている。ブール代数の基本演算には,論理積(AND,・),論理和(OR,+), 否定(NOT, ̄ )の演算があり,それぞれ次のように定義される。 z 論理積( AND,・ ) :すべての入力変数が1のとき結果が1となる。 0・0 = 0・1=1・0=0 1・1=1 z 論理和( OR,+ ) :入力変数が少なくとも一つ1であれば結果が1となる。 0+0 = 0 0+1 = 1+0 = 1+1 = 1 z 否定( NOT, ̄ ) :入力変数を反転させた値が結果となる。 0 = 1, 1 = 0 なお,論理演算の優先順位は,括弧>否定演算>論理積>排他的論理和>論理和の順である。 表1 ASCII コードの例 10 進 2 進 16 進 英数文字 … … … … 35 00100011 23 # … … … … 47 00101111 2F / 48 00110000 30 0 49 00110001 31 1 … … … … 57 00111001 39 9 58 00111010 3A : 65 01000001 41 A 66 01000010 42 B … … … … 90 01011010 5A Z … … … … 97 01100001 61 A 98 01100010 62 b … … … … 122 01111010 7A z … … … …ブール代数に関して,表2に示す基本則が成り立つ。これらの基本則はディジタル回路を 学ぶ上で必須の事項であるので,必ず理解しておかなければならない。 表2 ブール代数の基本則 (1) ベキ等則 (2) 相補則 (3) 対合則 (4) 単位元 (5) 零元 (6) 交換則 (7) 結合則 (8) 分配則 (9) 吸収則 (10) DeMorganド モ ル ガ ン則 X・X = X X・X=0 X=X X・1=X X・0=0 X・Y=Y・X (X・Y)・Z=X・(Y・Z) X・(Y+Z)=X・Y+X・Z X・(X+Y)=X+X・Y=X X・Y=X+Y X+X = X X+X=1 X+1=1 X+0=X X+Y=Y+X (X+Y)+Z=X+(Y+Z) X+(Y・Z)=(X+Y)(X+Z) X+(X・Y)=X・(1+Y)=X X+Y=X・Y 3. ディジタル演算と基本ゲート 論理積,論理和,否定などの論理演算を行なうハードウェア素子をゲート(Gate)といい, それぞれANDゲート,ORゲート,NOTゲートと呼ぶ(NOTゲートのことをインバータと 呼ぶこともある)。この他にも,NANDナ ン ドやNORノ ア ,EORイ ー オ ア(またはXOR,Exclusive OR) などの 基本ゲートがある。図1にそれら基本ゲートを示す。コンピュータ内部の演算回路や大小比 較,符号選択,データ切換えなど多種多様な回路はこれら基本ゲートを組み合わせて作るこ とができる。 注: 記号は NOT 演算を意味する。すなわち, は と等価である。 また 図1 基本ゲート 入力 出力 NOT 論理否定 Y A Y=A A 0 1 1 0 Y 1 1 1 入力 出力 Y AND 論理積 A B Y=A・B A B Y 0 0 0 0 1 0 1 0 0 1 1 1 A B Y 0 0 0 0 1 1 1 0 1 Y OR 論理和 A B Y=A+B EOR 排他的論理和 Y Y= ⊕A B A B Y 0 0 0 0 1 1 1 0 1 1 1 0 A B 真理値表 記号 式 名称 真理値表 記号 式 名称 A Y B Y=A+ B NOR A B Y 0 0 1 0 1 0 1 0 0 1 1 0 入力 出力 1 1 0 A Y B Y=A・B NAND A B Y 0 0 1 0 1 1 1 0 1 Y=A B = A + B であり, ・ と等価である。 は DeMorgan 則により,
ゲートには2入力だけでなく,多入力のゲートもある。それらも2入力のゲートによって 置き換えて考えることができる。例えば3入力のANDゲートは図2のように置き換えられる。 このような多入力の演算を考える場合,わざわざ真理値表を作成して出力結果を調べるより も,演算の意味を考えた方がわかりやすい。 4. フリップフロップ(Flip Flop) コンピュータのように逐次的に演算を行う装置の中では, データを一時的に保存する記憶素子が必要になる。フリップ フロップは1ビットのデータを記憶する素子である。 フリップフロップは,値を書き込む方法によってS-R型, J-K型,D型などのいくつかの種類がある。例えば,図3に示 す2個のNORゲートからなる回路はS-R型フリップフロップ と呼ばれる。S-R型フリップフロップには「S」(Setの意味) 及び「R」(Resetの意味)という入力端子があり,「Q」とい う出力端子がある(Q はQを反転した値を出力する)。 (S=1,R=0)とするとフリップフロップには「1」が記憶され,出力端子Qから「1」が出 力される。(S=0,R=1)とすると「0」が記憶され,出力端子Qから「0」が出力される。 また,(S=0,R=0)とすれば,直前にフリップフロップに記憶された値がそのままいつま でも保持される。このようにS-R型フリップフロッ プは「記憶」機能をもつ。 一方,図4に示す回路はD型フリップフロップと呼 ばれ,「D(Data)」および「CK(Clock)」という入 力端子があり,CKが0から1になる時点(立上りエッ ジ,図では の記号で表す)でDに入力されている 値を回路内部に記憶する。この記憶した値は,再び CKが0から1への変化が起こるまで保持される。図5 にD型フリップフロップ(7474)の動作とタイミン グ図を示す。R-S型フリップフロップ,D型フリップ フロップともに,1ビットのデータを記憶する機能は 同じであるが,回路内部の状態が時間的に推移する 順序回路(次回テーマ)では,フリップフロップに データを記憶する時刻(タイミング)を回路全体で統一したほうが,誤動作や不安定な動作 を防止できるため,一般的な論理回路の設計においては,回路全体を共通のクロック信号で 動作させる『同期型』と呼ばれる回路形態が使われる。D型フリップフロップは同期型回路 を実現する素子として利用される。 Q R S
( )
Q D CK Q (Q) 図3 S-R 型フリップフロップ回路 図4 D 型フリップフロップ回路 図2 3入力ANDゲートの例 A B C Y=A・B・C Y=(A・B)・C=A・B・C A B C5. 実験装置と使用部品 実験には扱いやすい TTL(Transistor-Transistor-Logic:トランジスタを利用した論理 演算素子)タイプの IC を用いる。IC の型番とピン接続は規格表で調べる。TTL-ICには, 消費電力や動作速度などの違いにより,LS,ALS,AS,Fなどのシリーズがあるが,論理 的な動作はすべて同じで,ピン配置も同じである。図6はALSシリーズの74ALS08の例であ るが,規格表でこのICを調べる場合は,7408の項を探せばよい。 IC間を接続する配線には,ICや配線材を差し込むだけで結線できる図7に示すテストボー ドを利用する。このテストボードには,+5V の電源,回路に「0」,「1」のデータを与える ためのスイッチ,回路の出力結果を表示するためのLEDが配置されている。 図5 D 型フリップフロップ(7474)の動作 D 型フリップフロップの動作表 PR CLR CK D Q Q 0 1 × × 1 0 1 0 × × 0 1 0 0 × × 1 1 1 1 0 0 1 1 1 1 1 0 (1) Q,Q (出力) Q と Q は特別の場合を除いて,互いに反転した値を出 力する。すなわち,Q=1 ならば Q=0,Q=0 ならば Q=1 (2) PR,CLR(厳密にはそれぞれ PR,CLR)(入力) ① PR(プリセット)に 0 を加えると Q=1 ② CLR(クリア)に 0 を加えると Q=0 これらの信号が入力されている間は,CK の 入力を無視し,解除(1 にする)した後もそ の状態を保持する。 ③ PR と CLR を同時に 0 にすると①,②が同時 に起こる(すなわちQ,Q は両方とも 1 にな る)。ただし一方を先に解除すれば①または② に従い,反対側の出力は0になる。同時に 解除した場合はQ,Q のうちどちらが 1 になるかは不定である(素子のバラツキ や負荷の大小によって決定される)。 (3) D(入力) PR,CLR が共に 1 のときに CK が 0 から 1 に なると( で表す),その瞬間の D の値(0 か 1) をQ に出力する。 (4) CK(入力) クロック入力。記号 は,信号の立ち上がりの 瞬間にだけ動作することを表す。動作表では上向 き矢印を付けている。 D CK Q CLR PR Q 図6 ICの型番の読みかた VCC +5V GND 1番ピン ICの型番(表面にプリントされている) 例: xx74ALS08N 製造メーカを示す記号 ALS シリーズを示す。 他にLS や AS, F などがある。 丸い「欠け」を 左に位置させる 入 力 端 子 CK に加わる信号 (クロック) 1 0 入力端子D に加わる信号 1 0 出力端子Q に現れる信号 1 0 D 型フリップフロップのタイミングチャート 時間 t1 t2 t3 t4 t5 t6 t7
6. 実験上の注意 z 製作した回路はかならずその場で記録せよ。後になってからでは正確に思い出せない。 z TTL は電源電圧5Vを供給しないと動作しない。テストボートから供給される電源(5V) とグランド(0V)を,それぞれすべてのICのVCC端子とGND端子に接続すること。 z 図8のようにTTL ICの出力端子と出力 端子を結んだり,出力端子を電源電圧端 子やグランドに直接つないだりしては いけない。正常に動作しないばかりか, ICを破壊させる恐れがある。例えば,出 力端子の一方が「0」で,もう片方が「1」 になった場合,出力端子間に許容量を越 えた電流が流れてしまい,ICが破壊される。 z ICの足は折れやすいので注意。とくにテストボードからICを取り外すときには必ず備 え付けの治具(ICピック)を使って,力が局部にかからないように十分注意して取り 外すこと。なおICを破損したときは,担当教員に申し出て新しいものと交換してもら うこと。そのまま放置しておくと,次の実験グループが迷惑する。ICを壊しても減点 の対象としないが,壊した後の処置が悪いときは減点する。 z 配線材(ジャンプワイヤ)の先端部分も折れやすいので注意。とくに,短い配線材で無 理に長い距離を接続しようとすると,必ず足を曲げてしまう。そのような場合には長い 配線材を用いるか,一度別のポイントで中継するかし,無理な使い方はしないこと。 z ICの抜き差しを行う場合は,必ずテストボードの電源を落として行うこと。 z 第1週目の実験の終了時点では,机上はそのままに放置してよい。しかし3日目終了後 は,部品類を初回のとおりに元に戻し,机上を整理すること。 図7 テストボード(ICの搭載部分) 出力端子は入力端子へ 出力端子は結ばない 図8 IC接続時の注意 溝をまたいでICをはめ 込む。接触不良に注意。 横につながっている。 5Vや0V(GND)の供給用。 縦につながっている。 IC間の接続に使用。
7. 実験課題I 基本回路と警報問題(多数決問題) =1日目の実験= この実験ではテストボードを使って実験を行う。入力はトグルスイッチ(DATAの部分)に 接続し,出力は赤のLED(発光ダイオード:INDICATORの部分)に接続して実験結果を 確認する。なお,トグルスイッチは下側に下げると0,上側に上げると1が出力される。ま た,赤色LEDは0で消灯し,1で点灯する。 (1)基本回路の動作確認 2入力AND(7408)、2入力OR(7432)および2入力EXOR(7486)の3ICをそれぞれ単独に入 力と出力を接続する。それぞれの基本回路の動作を確認し、真理値表を作成する。 (2) 警報問題(多数決問題)とはA,B,Cの三つのセンサーがあった時,その二つ以上のセ ンサーがオン(=1)になった時,アラームFをオン(=1)にする。 (3) 真理値表とカルノー図を作成し,最も簡単な論理式を作る。 F= 図9 真理値表の作成とカルノー図の作成 (4) 論理式から論理回路を作成する。 図10 論理式からの論理回路 A B C F 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
00
01
11
10
0
1
AB
C
● ● ●A
B
C
F
F=A・B+B・C+A・C
(5) ICを意識した論理回路を作成する。
図11 ICを意識した論理回路
この論理回路は7408(2 Input AND)と7432(2 Input OR)の二つのICで作成することができ る。論理回路図にICのピン番号を記入すると次の配線がスムーズに行く。 (6) ICの搭載と配線 テストボードにICを搭載し,配線を行う。入力はトグルスイッチ(DATAの部分)に接続し, 出力は赤のLED(発光ダイオード:INDICATORの部分)に接続して,真理値表の通りに 動作することを確認する。 図12 ICと実体配線図 ● ●
A
C
F
F=A・B+B・C+A・C
2 AND 論理積 2 AND 論理積 2 AND 論理積 2 OR 論理和 74327408
7432
7408 7408 2 OR 論理和 7432B
7408 ● 2 3 4 5 6 7 17408
7432
+5V
GND
INDICATOR 07
DATA07(A)
DATA06(B)
DATA05(C)
14 13 12 11 10 9 8 2 3 4 5 6 7 1 13 14 12 11 10 9 88. 実験課題 II 4ビット全加算器 =2日目の実験= この実験ではテストボードを使って実験を行う。入力はトグルスイッチ(DATAの部分)に接 続し,出力は赤のLED(発光ダイオード:INDICATORの部分)に接続して実験結果を確 認する。なお,トグルスイッチは下側に下げると0,上側に上げると1が出力される。また, 赤色LEDは0で消灯し,1で点灯する。 (1) 図13に示す回路は2進法加算における1桁分に相当する全加算器である。この真理値表 を作成しなさい。(A1とB1は入力データ。 C0 は下の桁からの桁上げ,C1 は上の桁への桁 上げ。Σ1は加算結果。) (2) 図13の1ビット加算器を4組作り,Carryを接続することによって4ビット全加算器を作 成する。使用するICは,7408(2 Input AND)が2個,7432(2 Input OR)が1個, 7486(2 Input EX-OR)が2個である。計5個のICで4ビット全加算器ができる。 (3) ICを意識した論理回路を作成し,論理回路図にICのピン番号を記入する。 (4) IC間の配線を行う。1ビットずつ結果を確認しながら配線するのが良い。 (5) 入力A,Bの各4ビットはトグルスイッチ(DATAの部分)に接続し,出力Σ(4ビット)は 赤のLED(発光ダイオード:INDICATORの部分)に接続して4ビット全加算器の動 作を確認する。(最上位のCarryもINDICATORに接続しておくこと) (4) とくに4ビットを符号付2進数とすると,7+(-7)=0であることを確認すること。 (-7を2の補数表示にすること。出力Σ(4ビット)が0000となり,最上位のCarryが1にな ること。) =2日目の実験終了= C0 A1 B1 Σ1 C1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 C1 C0 A1 Σ1 B1 図13 1 ビット加算器と真理値表
2. 論理設計 (2) 順序回路
1. 概説 ディジタル回路は,組合せ回路と順序回路とに大別される。組合せ回路とは,回路の出力 が現在の入力だけによって確定する回路形態である。一方,順序回路は,回路内部に「状態」 をもち,現在の入力と回路内部の状態とによって出力が確定する回路形態である。順序回路 では現在の入力が同じであっても,過去の入力の履歴によって異なる出力を与える。 一般に順序回路は図 1 に示すように組合せ回路部 分と過去の状態を記憶する記憶回路によって構成さ れる。さらに順序回路は,同期型順序回路と非同期 型順序回路とに大別できる。同期型順序回路は回路 全体が共通のクロック信号によって動作する回路形 態である。非同期型順序回路は異なる種類のクロッ クを使ったり,あるいは共通のクロックを使わず に,個別の出力を状態保持のためのクロックに使っ たりする回路形態である。典型的な順序回路として カウンタがある。カウンタはクロック入力の数を計 数する回路であり,過去に入力されたクロック数を 記憶し,新たにクロックが入るとそれをカウントア ップする(図 2)。カウンタはフリップフロップを使って容易に作ることができる。フリッ プフロップ1 個で 1 ビットの計数を行うことができ,n個接続すればn ビットの計数を行 うことができる。このように2 進で計数を行うカウンタをバイナリカウンタという。 カウンタを動作の上から分類すると,非同期型カウンタと同期型カウンタに分けられる。 図 3 に示す非同期型カウンタは,前段のフリップフロップの出力を次段のフリップフロッ プのクロック入力とする。これはリップルカウンタとも呼ばれ,構造が簡単であるが,各ビ ットの桁上がりが逐次的に伝搬される構造になっている。このためフリップフロップの遅れ を1 段あたりτ
dとすると,N ビットのカウンタ(N 段のフリップフロップ)では出力が確 定するのにNτ
dの遅れ時間を伴う。それに対し,図4 に示す同期型カウンタでは共通のク xn x1 x2 記憶回路 出力 入力 組合 せ 回 路 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ yn y1 y2 0 1 2 3 4 5 6 7 8 9 クロック QA QB QC (QCQBQA)= 001 010 011 100 101 110 111 000 … (桁上げアリ) 図2 3ビットカウンタのタイムチャート 図1 順序回路の一般的構成ロック入力に同期してカウントが行われる。同期型カウンタは各フリップフロップに共通の クロックを入力し,全ビットの出力を同時に確定する。同期型回路の構成は非同期型回路に 比べ複雑になるが,ハザード(伝達遅延による信号のばらつき)に伴う動作の不安定さを生 じることはなく,回路の動作が安定する。 2. 実験課題 III 順序回路の設計(同期型 3 ビットカウンタの設計) =3 日目の実験= (1) 3 ビットカウンタの真理値表を図 5 に示す。この表からカウントアップ後の QA,QB,QC に関するカルノー図を作成し,カルノー図から導かれる最も単純な論理式を書きなさ い。 図 5 3 ビットカウンタの真理値表 クロック QA Q D Q Q D Q Q D Q QB QC クロック QA Q D Q Q D Q Q D Q QB QC 【真理値表】 QC QB QA 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 カウントアップ後の値 QC QB QA 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 図3 非同期型カウンタの回路 図4 同期型カウンタの回路
(2) 論理式から論理回路の作成
最も単純な論理式を用いると,3ビットカウンタは3個のフリップフロップと1個の 2 Input AND および2個の 2 Input EX-OR で作成することができる。
【カウントアップ後のQB論理式】 QB← QBQA 0 1 00 01 11 10 【カウントアップ後のQBに関するカルノー図】 QC 【カウントアップ後のQC論理式】 QC← QBQA 0 1 00 01 11 10 【カウントアップ後のQCに関するカルノー図】 QC 【カウントアップ後のQA論理式】 QA← QBQA 0 1 00 01 11 10 【カウントアップ後のQAに関するカルノー図】 QC
(3) IC を意識した論理回路を作成し,論理回路図に IC のピン番号を記入する。フリップフ ロップはD型フリップフロップ(7474)を 2 個用いる。2 Input AND(7408) 1個と 2 Input EX-OR(7486) 1個の計4個のICで3ビットカウンタを実現する。 (4) テストボードに4個のICを配置して,IC のピンの配線を行う。 (5) D型フリップフロップ(7474)の CK はテストボードの CLK に接続する。CLOCK は 1Hz 側にしておく。またPR(プリセット)はテストボードの PULSE A の 側に接続し, CLR(クリア) もテストボードの PULSE B の 側に接続する。 (6) 3 ビットのフリップフロップの出力(QA, QB, QC)を INDICATOR に接続する。
(7) 電源(POWER)を入れ,テストボードの PULUSE B を押すと INDICATOR が000に なる。この後1秒間隔でカウントアップされることにより動作テストを確認する。
実験資料(使用 TTL ピン接続)
7400 (2 Input NAND) 7402 (2 Input NOR) 7404 (Inverter)
7408 (2 Input AND) 7410 (3 Input NAND) 7411 (3 Input AND)
7432 (2 Input OR) 7474 (D-FF with PR/CLR) 7486 (2 Input EX-OR) 実験資料(テスト サーキット ボックス) 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 4B 4A 4Y 3B 3A 3Y 1A 1B 1Y 2A 2B 2Y GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 4Y 4B 4A 3Y 3B 3A 1Y 1A 1B 2Y 2A 2B GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 6A 6Y 5A 5Y 4A 4Y 1A 1Y 2A 2Y 3A 3Y GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 4B 4A 4Y 3B 3A 3Y 1A 1B 1Y 2A 2B 2Y GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 1C 1Y 3C 3B 3A 3Y 1A 1B 2A 2B 2C 2Y GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 1C 1Y 3C 3B 3A 3Y 1A 1B 2A 2B 2C 2Y GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 4B 4A 4Y 3B 3A 3Y 1A 1B 1Y 2A 2B 2Y GND 2 3 4 5 6 7 1 13 14 12 11 10 9 8 Vcc 4B 4A 4Y 3B 3A 3Y 1A 1B 1Y 2A 2B 2Y GND CLR Q Q D CK PR CLR Q Q D CK PR 2 3 4 5 6 7 1 13 14 12 11 10 9 8 1 1D 1CK 1PR 1Q 1Q GND CLR 2 Vcc CLR 2D 2CK 2PR 2Q 2Q