論理回路

出典: フリー百科事典『ウィキペディア(Wikipedia)』

論理回路(ろんりかいろ)は論理演算を行う電気回路である。 "真" 又は "偽" や "1" 又は "0" という論理値を "Hi" 又は "Lo" というデジタル信号によって表現しブール代数を使って演算するデジタル回路である。単純な論理回路や以前の状態を記憶する論理回路、さらにそれらを組み合わせて時系列として複雑な動作をする回路によって構成される。「ロジック・サーキット」(Logic circuit)とも呼ばれる。

本記事では、基本となる論理回路の説明に加えて、汎用ロジックICで標準的に備わる論理回路も対象として説明する。ただし個別のICの型番までは言及しない。

目次

[編集] 表記法

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

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

[編集] 歴史

1960年台に登場した標準論理ICTI社、7400シリーズ)により論理回路の実装が、それまでの個別部品による方法から単純化されアナログ的な回路設計から論理設計が分離できるようになった。

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

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

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

[編集] 正論理・負論理

MIL記号を含めて通常の回路図では正論理負論理が混在して使用される。 正論理では信号線の意味が "Hi" で有効となり、負論理では信号線の意味が "Lo" で有効となる。 厳密には正論理の出力信号線は必ず正論理の入力に接続されねばならず、負論理出力は負論理の入力に接続されねばならないが、図面上の表記として必ず守られるとは限らない[1]

[編集] 組み合わせ回路

現在の入力のみで出力が決まる回路である。

  • 論理ゲート : 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の補数を得るために「補数器」で計算する時間を除くために、専用の減算回路を持つものがある。理論的には加算器と同様に全減算器(Full subtracter)と半減算器(Half subtracter)があるが、実際には全減算器しか無いといえる。
  • 乗算器(Multiplier):2進数の乗算を行うもの。過去にはALU上で加算とシフトの繰り返しで乗算を行っていたが、近年は多数のゲート回路によって一度に乗算してしまう専用乗算器が使用されている。
  • バレルシフタ(Barrel shifter):シフトレジスタによるシフト操作では移動のビット数分の回数だけクロックの動作時間が掛かるが、これを避けるためにマルチプレクサを複数組並べるのと同様に多数のゲート回路によって一度にずらすことで実現するものである。
  • 比較器(Comparator):「デジタル・コンパレータ」とも呼ばれ、概念としては一致回路や不一致回路、大小を比較する比較器もあり[1]、実際のロジックICでは4bitや8bitの比較器にこれら全ての信号が出力されるものが多い[2]

[編集] 順序回路

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

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

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

フリップフロップ(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チップパッケージには多段接続時に数珠繋ぎに延長できるよう、キャリアアウト出力とキャリアイン入力と云う桁上げ出力や桁借り出力などが備わっている[1]

[編集] その他

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

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

[編集] 用途

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

[編集] その他

  • 2進数で表現される10進数は、BCD(Binary Coded Decimal)という名前で示され、BCD10進カウンタやBCDエンコーダがある。BCDでは "0000" から "1001" まで使用され "1010" から "1111" は使用されない[4]
  • 完全同期式回路:全体で共有するクロック信号を利用して動作のタイミングをあわせる回路である(クロック同期設計)。とくに大規模な回路で広く用いられている。
    • 設計時に大規模な回路のシミュレーションが行いやすい。
    • 製造時に全てのラッチの 1, 0 が切り替わるかどうかのテストを行う試験機のプログラムを作成しやすい。
  • 通常論理回路の設計をする技術者は、数学の論理演算記号とは違う記号を用いて論理式を記述することが多い。

[編集] 出典

  1. ^ a b c d e f 松田勲著 『ディジタルIC回路の基礎』 技術評論社 2005年7月1日 初版第5刷発行 ISBN 4-7741-0804-9
  2. ^ 最新汎用ロジック・デバイス規格表 CQ出版社 2006年1月1日発行 ISBN 4-7898-4459-5
  3. ^ 西原主計編 『センシング入門』 オーム社 2007年3月20日第1版第1刷発行 ISBN 978-4-274-20378-7
  4. ^ 家村道雄監修 『入門 電子回路』 オーム社 2007年2月20日初版第1刷 ISBN 978-4-274-20365-7

[編集] 関連項目

ウィキメディア・コモンズ