論理回路

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

論理回路(ろんりかいろ 英:Logic circuit、ロジック・サーキット)は論理演算を行う電気回路及び電子回路である。真理値の「真」と「偽」、あるいは二進法の「0」と「1」を、電圧の正負や高低、電流の方向や多少、位相の差異、パルスなどの時間の長短、などで表現し、論理素子など[1]で論理演算を実装する。電圧の高低で表現する場合それぞれを "Hi", "Lo" 等という。基本的な演算を実装する論理ゲートがあり、それらを組み合わせて複雑な動作をする回路を構成する。状態を持たない組み合わせ回路と状態を持つ順序回路に分けられる。

ふつうはデジタル回路である。論理演算を行うアナログ回路、「アナログ論理」を扱う回路(どちらも「アナログ論理回路」)や、多値論理回路、電気(電子)的でないもの(たとえば流体素子光コンピューティングを参照)もあるが、以下では扱っていない。

目次

表記法 [編集]

論理回路の設計には、論理式真理値表が用いられる。さらに回路図的な表記手段としてMIL記号など論理素子記号が使われる。

負論理には正論理の信号名の上にオーバーバー(例: \overline{\mathrm{Q}} )を加えることで表現し、MIL記号では状態表示記号である小丸()で表現する[2]


正論理(左側)と負論理(右側)の論理ゲート
負論理のゲート(左側)は正負の変換を行なうNOT回路を付加することで(右側)内部に正論理のゲートが含まれる。
論理回路では正負の論理が混在する場合が考えられ、図の斜線部が負論理である。

正論理・負論理 [編集]

MIL記号を含めて通常のlogic diagramでは正論理と負論理が混在して使用される。

正論理では "Hi" を真偽値の「真」に、負論理では "Lo" を真偽値の「真」に対応ささせる。

厳密には正論理の出力信号線は必ず正論理の入力に接続されねばならず、負論理出力は負論理の入力に接続されねばならないが、図面上の表記として必ず守られるとは限らない[2]

組み合わせ回路 [編集]

組み合わせ回路combinational logic、「組み合わせ論理回路」ともいう)は、現在の入力のみで出力が決まる回路である。

  • 論理ゲート : AND(アンド)、OR(オア)、NOT(ノット)、XOR(Exclusive OR、エクスクルーシブ・オア) など基本となる論理演算を行うものである。
論理 論理式 回路記号(MIL記号) 回路記号(JIS記号)
NOT \overline{A} NOT NOT
OR A + B OR OR
AND A \cdot B AND AND
XOR A \oplus B XOR XOR
NOR \overline{A + B} NOR NOR
NAND \overline{A \cdot B} NAND NAND
  • エンコーダ(Encoder):複数の入力の内の1つが "真" になった時にそれに対応する2進数コードを出力するもの。
  • デコーダ(Decoder):2進数のコード入力に対応して、多数の出力線の内の1本だけを"真"にするもの。
  • マルチプレクサ(Multiplexer):2進コード入力に基づいて、複数の入力から1つを選んで出力するもの。「データセレクタ」(Data selector)とも呼ばれる。
  • デマルチプレクサ(Demultiplexer):2進コード入力に基づいて、1つの入力を複数の出力の内の1つに出力するもの。
  • 加算器 : 2進数の加算を行うもの。全加算器(Full adder)と半加算器(Half adder)があり、多桁の全加算器では桁上げの高速化の為に「キャリールックアヘッド回路」を備えるものもある。負の数の表現に2の補数を使っているのであれば、減算は2の補数を加算することで実現出来る。回路規模が大きくなってもわずかでも高速化したい場合、減算に対応するための論理反転の追加(XOR1段または、NOT1段+セレクタ1段)を避け、専用の減算回路を持つこともある。半減算器はXORであって半加算器と全く同じであるから、減算器には全減算器(Full subtracter)しか無い。
  • 乗算器(Multiplier):2進数の乗算を行うもの。過去にはALU上で加算とシフトの繰り返しで乗算を行っていたが、近年は多数のゲート回路によって一度に乗算してしまう専用乗算器が使用されている。
  • バレルシフタ(Barrel shifter):シフトレジスタによるシフト操作では移動のビット数分の回数だけクロックの動作時間が掛かるが、これを避けるためにマルチプレクサを複数組並べるのと同様に多数のゲート回路によって一度にずらすことで実現するものである。
  • 比較器(Comparator):「デジタル・コンパレータ」とも呼ばれ、概念としては一致回路や不一致回路、大小を比較する比較器もあり[2]、実際のロジックICでは4bitや8bitの比較器にこれら全ての信号が出力されるものが多い[3]

順序回路 [編集]

順序回路sequential logic)は過去の内部状態と取得時の入力信号とで出力が決まる回路である。 組み合わせ回路は、伝播遅延によって信号が遅れることを除けば、入力の組み合わせだけで出力が一意に決まるが、順序回路は入力信号とともに、内部に保持している過去の状態も出力の決定に関わる。

組み合わせ回路と異なり、多くの順序回路には同期式と非同期式の2通りの回路動作がある。同期式では非同期式に比べて信号の遅れやレーシングといった問題に起因する動作不良が減らせる、又は根絶できるが、回路規模が大きくなるので消費電力や回路コストが増す[2]。非同期式は単純な回路構成が採れるので低消費で回路コストも安くて済み、回路設計が最適化出来れば高速動作が可能になるが、設計マージンが小さくなる傾向があり小さなミスが動作不良に結びつく。

フリップフロップ [編集]

フリップフロップ(FlipFlop、略:FF)は制御信号により現在の入力信号の保持を行うものである。ラッチ(Latch)とも呼ばれる。論理回路ではフリップフロップと呼ぶものも、コンピュータ・システムでの回路名としては(通常は複数ビットの記憶回路を)レジスタと呼ぶ。

非同期式フリップフロップはクロック入力を持たず、その時点での入力の値に応じて出力が変化し、新たな入力信号が来るまで同じ状態を保持する。

  • 非同期式RS-FF(=RSラッチ):標準ではRとSが共に "真" は禁止されているが、セット優先、リセット優先のものでは両入力が共に "真" の時にはセットにだけ "真" の入力があったもの、またはリセットにだけ "真" の入力があったものとして扱われる設定が行なえるものがある。
  • 非同期式D-FF(=Dラッチ):RS-FFのS入力にストローブ入力(G)によるゲート制御が加わったものである。ストローブが "真" の間はD入力はQ出力にそのまま反映され、ストローブが "真"から"偽" に変わるとその変化時点(立ち上り、又は立ち下り)での入力を保持する。

同期式フリップフロップはクロック信号(CLK, CK等と表記)の立ち上がり(又は立ち下り)に同期してその時点での入力(D, S, J等)に対応する信号を出力する。この出力は次にクロックが立ち上がる(又は立ち下る)まで更新されない。

  • 同期式RS-FF:RSはResetとSetから付けられた。
  • 同期式D-FF:DはDataまたはDelayから付けられた。
  • JK-FF:RS-FFの動作に近いがRとSの両方が "真" の時は出力が反転するのでRとSに同じ入力を与えると同期式T-FFとして動作する。JとKに互いに反転した入力を与えればD-FFとなる。もちろんRS-FFとして使用できる。このため、JK-FFは色々な構成で使用される。内部には2段の非同期FFがマスター・スレーブ構成に並んでいて、同期動作を行なっている。
  • T-FF:クロックやクリア、プリセット以外の入力は持たず、クロックが入力されるたびに出力が反転する。TはToggleから付けられた。

カウンタ [編集]

カウンタ(Counter)回路は、特定の順序で出力の組み合わせが変化し、一定の周期で元の状態に戻るもので、フリップフロップとゲートとをいくつか組み合わせたものである。

  • シフトレジスタ:直列フリップフロップの入力と出力を直接接続したもので、クロックに合わせて各FFを1段ずつ横に送っていく(シフトしてゆく)動作をするもの。通常は初段と終段の間は接続されていない。
  • ジョンソン・カウンタ:シフトレジスタの初段と終段の間だけ入力と出力を反転して接続したもの。クロックに合わせて各FFを1段ずつ横に送っていく(シフトしてゆく)動作をするが、反転入力が移動してゆくのでn段ならば2n回目で一順するカウンタとなり、初期値が単純に"0"や"1"ばかりであればデューティ・サイクルが50%のデジタル波形信号が得られる。
  • リング・カウンタ:シフトレジスタの初段と終段の間も他の段同様、入力と出力を直接接続したもの。初期値で設定されたデジタル波形信号がn回目で一順するカウンタとなる。例えば4段リング・カウンタに"1000"と設定すれば"0100"→"0010"→"0001"→"1000"となって4回目で元に戻る。
  • バイナリ・カウンタ(2進カウンタ)
  • n進カウンタ:(同期式であれば)バイナリ・カウンタのリセット入力に"n-1"回目で"Hi"となるようにゲート回路で信号を接続する。"n"回目のクロック入力でリセットがかかり、全てが"0"に戻る。

また、全ての出力状態が使用されるものと出力状態の一部のみ使用されるものの差で次の2つのグループに分類出来る。

  • フィルド・コード・カウンタ(Filled Code Counter):全ての出力状態が使用されるもの。
    • 2ビットジョンソン・カウンタ
    • グレイ・コード・カウンタ、
    • バイナリ・カウンタ(2進カウンタ)
  • アンフィルド・コード・カウンタ(Unfilled Code Counter):出力状態の一部のみ使用されるもので、その他の状態になる時は動作不良のときであるもの。
    • 3ビット以上のジョンソン・カウンタ
    • リング・カウンタ
    • M系列発生器(LFSR: Linear Feedback Shift Register)

カウンタ回路はフリップフロップであるため、同期式と非同期式があり、非同期式カウンタは常に前段の結果によって次段の動作が左右されるため、多段になるほど終段の結果の確定は回路の伝播遅延による遅れが蓄積される。こうしたものは「非同期式リプルカウンタ」と呼ばれる。

多くのカウンタ回路には、加算と減算の動作選択、各段の初期値のプリセット、全段のリセットなどの機能を備えており、また、論理回路的な設計とは無関係であるが実際のICチップパッケージには多段接続時に数珠繋ぎに延長できるよう、キャリアアウト出力とキャリアイン入力と云う桁上げ出力や桁借り出力などが備わっている[2]

その他 [編集]

論理回路の通常の分類には含まれない物を以下に示す。

  • ワイヤード・オア(Wired OR):(TTLでは)複数のオープンコレクタ出力を使って便宜上のOR回路を構成する手法。通常は複数のデジタル出力をそのまま結線することは許されないが、オープンコレクタ出力により可能となる。プルアップ抵抗が必要。CMOSではオープンドレインとなる。
  • バッファ(buffer)、バス・トランシーバ(Bus transceiver)、ライン・ドライバ/レシーバ(Line driver/receiver):伝送路や多数のゲートを駆動する為に大きな出力の回路を持つもの。多くが4bit、8bit、16bitなどの複数本を並列にして扱われる。
  • スリーステート・バッファ(3-state buffer):バッファの出力状態を"Hi"と"Lo"の他に"ハイ・インピーダンス"(High impedance)の合計3つ持つもの。
  • シュミット・トリガ(Schmitt trigger):不安定な入力信号を安定的に波形整形して出力する為に、ヒステリシス特性を備えたアンプを持つ。インバータ回路などに多い[2]
  • シーケンサ(Sequencer):外部状況の変化にしたがって定義された演算・動作を行うもので、カウンタ・外部信号のレジスタ・ゲートなどを組み合わせて製作される。

用途 [編集]

すべてのデジタルと名の付く電子機器。コンピュータプログラマブルロジックコントローラ(PLC。工業用プロセス制御に用いられる)、CD機器、MD機器、DVD機器、フラットTV、ステレオ、PC、コピー機、プリンタ、デジタルカメラ、ビデオカメラ、家庭用ゲーム機、エアコン、携帯電話、電卓、時計、リモコンなど、今ではほぼすべての電気製品に論理回路が用いられている。他の例としてデジタル信号処理プロセッサなどもそうである。

歴史 [編集]

遡るならば、非電気的な、機械のみによる論理演算の処理、というものも考えられているが割愛する。

電気による論理演算は、リレー(ことによってはソレノイドアクチュエータやモータと、スイッチ)による装置(たとえば初期の電話交換機など)があった。しかし、ブール代数19世紀中頃に考案されていたが、当時はそれらの装置と論理をつなげて考えていなかった。

デジタル回路と論理の対応付けは、中嶋章が1934年頃から研究、論文としては1936-1937年[4]に榛沢正男と発表した「継電器回路に於ける単部分路の等価変換の理論」を嚆矢とし、クロード・シャノンの1937年の研究とその発表が有名である(他にも相次いで発表されている)。後者の着想が独立かどうかは不明である[5]

個別部品時代もモジュール化はおこなわれていたが、1960年代に登場した汎用ロジックICにより、アナログ的な回路設計と論理設計をほぼ分離できるようになった。

小規模な場合は、論理素子記号などを使った手書きによる設計が可能であるが、大規模になると難しい。そのため、1990年代より大規模な回路の設計にはハードウェア記述言語が用いられている。また、集積回路技術の進歩に対応できるように、どのような素子を使用するかに独立なビヘイビアモデル(動作記述)による設計が行われる。

1990年代後半より、試作や少量生産の場合に論理回路をプログラムで書き換え可能なPLDやCPLD、FPGAなどが使用されるようになった。大量生産または高性能が要求される場合はASICも使用される。

その他 [編集]

  • 十進法で表現された数を、整数値として2進に変換するのではなく扱う方法として二進化十進表現がある。"0000" から "1001" を使用し "1010" から "1111" は使用しないというよくある方法の他いくつかのバリエーションや、近年の十進浮動小数点で使われている10ビットに十進3桁を詰め込むDensely Packed Decimal、3増し符号、2-5進コード(二五進法)などがある。
  • 完全同期式回路:全体で共有するクロック信号を利用して動作のタイミングをあわせる回路である(クロック同期設計)。とくに大規模な回路で広く用いられている。
    • 設計時に大規模な回路のシミュレーションが行いやすい。
    • 製造時に全てのラッチの 1, 0 が切り替わるかどうかのテストを行う試験機のプログラムを作成しやすい。
  • 論理回路の設計においては、数学で使われているのと同様の記法を用いることもあるが、プレインテキストとの親和性が高いなどの理由で他の記法を用いることもある。

出典・脚注 [編集]

  1. ^ ワイヤードORなどは論理素子による実装ではない。
  2. ^ a b c d e f 松田勲著 『ディジタルIC回路の基礎』 技術評論社 2005年7月1日 初版第5刷発行 ISBN 4-7741-0804-9
  3. ^ 最新汎用ロジック・デバイス規格表 CQ出版社 2006年1月1日発行 ISBN 4-7898-4459-5
  4. ^ 2部構成
  5. ^ 山田昭彦「スイッチング理論の原点を尋ねて −シャノンに先駆けた中嶋章の研究を中心に−」 (PDF)

関連項目 [編集]