論理回路
論理回路とは、デジタル
電子回路を用いて、
論理演算や記憶を行う回路のことです。デジタル回路の根幹をなすもので、コンピュータやその他の電子機器の動作を支えています。
概要
論理回路は、真理値の「真」と「偽」、あるいは
二進法の「0」と「1」を、
電圧の高低、
電流の方向や大小、
位相の差異、
パルスの
時間長などで表現します。これらの信号を用いて、論理素子(論理ゲート)で
論理演算を
実装します。基本的な論理ゲートを組み合わせることで、複雑な動作をする回路を構成できます。論理回路は大きく分けて、状態を持たない組み合わせ回路と状態を持つ順序回路の2種類があります。
表記法
論理回路の設計では、論理式や真理値表が用いられます。また、回路図的な表記には、MIL記号などの論理素子記号が使われます。負論理は、正論理の信号名の上にオーバーバーを付けるか、MIL記号では小丸(○)で表現します。
正論理と負論理
通常のロジック・ダイアグラムでは、正論理と負論理が混在して使用されます。正論理では「H」を真偽値の「真」に対応させ、負論理では「L」を真偽値の「真」に対応させます。厳密には、正論理の出力は正論理の入力に、負論理の出力は負論理の入力に接続されるべきですが、図面の目的によって異なる場合があります。論理的な動作を理解するための図なのか、製造のための回路図に近いものなのかによって、表記の厳密さは変わります。
組み合わせ回路
組み合わせ回路は、現在の入力のみで出力が決まる回路です。代表的な組み合わせ回路には以下のようなものがあります。
論理ゲート: ANDゲート、ORゲート、NOTゲート、XORゲートなど、基本的な論理演算を行う素子です。
エンコーダ: 複数の入力のうち1つが「真」になった時に、対応する2進数コードを出力します。
デコーダ: 2進数コードの入力に対応して、複数の出力線のうち1本だけを「真」にします。
マルチプレクサ: 2進コード入力に基づいて、複数の入力から1つを選んで出力します(データセレクタとも呼ばれます)。
デマルチプレクサ: 2進コード入力に基づいて、1つの入力を複数の出力のうち1つに出力します。
加算器: 2進数の加算を行います。全加算器と半加算器があり、多桁の全加算器には桁上げの高速化のためにキャリールックアヘッド回路が用いられることがあります。
乗算器: 2進数の乗算を行います。専用の乗算器が使用されることが多くなっています。
バレルシフタ: シフト操作を高速化する回路です。
マルチプレクサを複数並べることで実現します。
比較器: 2つの数値の大小を比較する回路です。
transmission gate: スイッチとして機能するゲートで、アナログ回路にも利用できます。
順序回路
順序回路は、過去の内部状態と現在の入力によって出力が決まる回路です。組み合わせ回路とは異なり、内部に状態を保持し、過去の入力にも影響されます。
フリップフロップ
フリップフロップは、制御信号により現在の入力信号の保持を行う素子で、ラッチとも呼ばれます。コンピュータ・システムでは、複数ビットの記憶回路をレジスタと呼びます。
非同期式フリップフロップ: クロック入力を持たず、入力の値に応じて出力が変化します。
非同期式RS-FF(RSラッチ): RとSの入力でセットとリセットを行います。
非同期式D-FF(Dラッチ): ストローブ入力によるゲート制御が加わったRS-FFです。
同期式フリップフロップ: クロック信号に同期して出力が変化します。
同期式RS-FF: RS入力でセットとリセットを行います。
同期式D-FF: D入力の値を保持します。
JK-FF: RS-FFの動作に似ていますが、RとSの両方が「真」の時に出力が反転します。
T-FF: クロック入力ごとに状態が反転します。
カウンタ
カウンタ回路は、出力の組み合わせが特定の順序で変化し、一定の周期で元の状態に戻る回路です。
シフトレジスタ: 直列に接続されたフリップフロップで、クロックに合わせてデータをシフトします。
ジョンソンカウンタ: シフトレジスタの出力を反転させて入力に戻したものです。
リングカウンタ: シフトレジスタの出力をそのまま入力に戻したものです。
バイナリカウンタ(2進カウンタ): 2進数でカウントアップするカウンタです。
n進カウンタ: n回ごとにリセットされるカウンタです。
カウンタには、全ての出力状態を使用するもの(フィルド・コード・カウンタ)と、一部のみを使用するもの(アンフィルド・コード・カウンタ)があります。また、同期式カウンタと非同期式カウンタがあります。
同期と非同期
組み合わせ回路と順序回路の分類とは別に、同期式回路と非同期式回路という分類もあります。
同期式回路: 全体で共有する
クロック信号を用いて動作のタイミングを合わせます。大規模回路で広く用いられます。
非同期式回路: 同期信号を持たず、信号の変化に応じて動作します。
動的と静的
動的回路: 常に活動していなければ正常に動作しない回路です。
静的回路: 電圧の供給だけで動作する回路です。
論理演算に関しても、常に演算を行うものを静的論理、クロックに合わせて演算を行うものを動的論理と言います。
その他
ワイヤード・オア: TTLのオープンコレクタ出力を使ったOR回路です。
バッファ、バス・トランシーバ、ライン・ドライバ/レシーバ: 大きな出力の回路を持つデバイスです。
トライステート・バッファ: 出力状態を3つ持つバッファです。
シュミット・トリガ: 不安定な入力信号を整形する回路です。
シーケンサ: 外部状況の変化に応じて動作する回路です。
歴史
電気による
論理演算は、リレーを使った装置が最初でした。1930年代に中嶋章や
クロード・シャノンが、
ブール代数と
電気回路の対応付けを研究し、論理回路の基礎を築きました。
1960年代には
汎用ロジックICが登場し、論理設計が容易になりました。現在では、ハードウェア記述言語(HDL)を用いた設計や、PLD、CPLD、
FPGAなどが利用されています。
その他
十進数を扱う方法として、二進化十進表現があります。また、近年では十進浮動小数点に用いられる densely packed decimal などがあります。