論理回路のソースを表示
←
論理回路
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''論理回路'''(ろんりかいろ、{{lang-en-short|logic circuit}})とは、[[デジタル回路|デジタル]]な[[電子回路]]による、論理演算や記憶を行う回路である<ref group="注">[[継電器|リレー]]によるものは「電子回路」というよりは「[[電気回路]]」だが、この記事ではほとんど扱わない。また真理値が連続的な値をとる(アナログな)論理を扱う論理回路や、アナログ電子回路による論理回路、[[流体素子]]や[[光コンピューティング]]といった電気以外による論理演算の提案などについても、以下の説明では全く考慮していない。</ref>。 == 概要 == [[真理値]]の「真」と「偽」、あるいは[[二進法]]の「0」と「1」を、[[電圧]]の正負や高低、[[電流]]の方向や多少、[[位相]]の差異、[[パルス]]などの[[時間]]の長短、などで表現し、'''論理素子'''など<ref group="注">ワイヤードORなどは論理素子による実装ではない。</ref>で論理演算を[[実装]]する。電圧の高低で表現する場合それぞれを「{{読み仮名|H|ハイ}}」「{{読み仮名|L|ロー}}」等という。基本的な演算を実装する'''論理ゲート'''があり、それらを組み合わせて複雑な動作をする回路を構成する。状態を持たない組み合わせ回路と状態を持つ順序回路に分けられる。 ==表記法== 論理回路の設計には、[[論理式 (数学)|論理式]]や[[真理値表]]が用いられる。さらに[[回路図]]的な表記手段として'''[[MIL論理記号|MIL記号]]'''など論理[[素子]]記号が使われる。 [[負論理]]には正論理の信号名の上にオーバーバー(例: <math>\overline{\mathrm{Q}}</math> )を加えることで表現し、MIL記号では小丸(<small>○</small>)で表現する<ref name="ディジタルIC回路の基礎"/>。 [[ファイル:Negative-Positive Logic (AND gate, OR gate).PNG|class=skin-invert-image|thumb|250px|right|正論理(左側)と負論理(右側)の論理ゲート]] [[ファイル:Negative-Positive Logic (2 gates).PNG|class=skin-invert-image|thumb|250px|right|負論理のゲート(左側)は正負の変換を行なうNOT回路を付加することで(右側)内部に正論理のゲートが含まれる。]] [[ファイル:Negative-Positive Logic (5 gates).PNG|class=skin-invert-image|thumb|250px|right|正負の論理が混在する場合には、反転の小丸をその配線の端部に付けることで示す慣習がある<ref group="注">そのようにすると、たとえば図で、2入力1出力のANDの3個の端子全てに小丸が付いていた場合、負論理として見ると論理積の働きをしている(電気的にはORゲートである)ということがわかりやすくなり都合が良い。</ref>。この図では斜線で負論理の部分を示した。]] ==正論理・負論理== MIL記号を含めて通常のロジック・ダイアグラム<ref group="注">{{lang-en-short|logic diagram}}</ref>では[[負論理|正論理と負論理]]が混在して使用される。 正論理では「H」を真偽値の「真」に、負論理では「L」を真偽値の「真」に対応させる。 厳密には正論理の出力信号線は必ず正論理の入力に接続されねばならず、負論理出力は負論理の入力に接続されねばならないが、図面上の表記として必ず守られるとは限らない<ref name="ディジタルIC回路の基礎"/>(「厳密には」というよりは、図面の目的による。たとえば、論理的な動作を理解するための図であるのか、製造のための電子的な回路図に近い性格のものであるのか、結局のところケースバイケースであろう)。 ==組み合わせ回路== 組み合わせ回路<ref group="注">「組み合わせ論理回路」ともいう。</ref>は、現在の入力のみで出力が決まる回路である。 *論理ゲート: <pre>ANDゲート(AND,アンド)、ORゲート(OR,オア)、NOTゲート(NOT,ノット)、XORゲート(XOR,エクスクルーシブ・オア)</pre>など基本となる[[論理演算]]を行うものである。 {|class="wikitable skin-invert-image" |- !論理 !論理式 !回路記号({{lang|en|MIL}}記号) !回路記号({{lang|en|JIS}}記号) |- |[[NOTゲート|{{lang|en|NOT}}]] |<math>\overline{A}</math> |[[ファイル:Not-gate-en.svg|{{lang|en|NOT}}|128px]] |[[ファイル:IEC_NOT.svg|{{lang|en|NOT}}]] |- |[[ORゲート|{{lang|en|OR}}]] |<math>A + B</math> |[[ファイル:OR-gate-US.png|{{lang|en|OR}}]] |[[ファイル:IEC_OR.svg|{{lang|en|OR}}]] |- |[[ANDゲート|{{lang|en|AND}}]] |<math>A \cdot B</math> |[[ファイル:AND-gate-US.png|{{lang|en|AND}}]] |[[ファイル:IEC_AND.svg|{{lang|en|AND}}]] |- |[[XORゲート|{{lang|en|XOR}}]] |<math>A \oplus B</math> |[[ファイル:XOR-gate-US.png|{{lang|en|XOR}}]] |[[ファイル:IEC_XOR.svg|{{lang|en|XOR}}]] |- |[[NORゲート|{{lang|en|NOR}}]] |<math>\overline{A + B}</math> |[[ファイル:NOR-gate-US.png|{{lang|en|NOR}}]] |[[ファイル:IEC_NOR.svg|{{lang|en|NOR}}]] |- |[[NANDゲート|{{lang|en|NAND}}]] |<math>\overline{A \cdot B}</math> |[[ファイル:NAND-gate-US.png|{{lang|en|NAND}}]] |[[ファイル:IEC_NAND.svg|{{lang|en|NAND}}]] |} *[[エンコード|エンコーダ]]:複数の入力の内の1つが「真」になった時にそれに対応する2進数コードを出力するもの。 *[[デコーダ]]:2進数のコード入力に対応して、多数の出力線の内の1本だけを「真」にするもの。 *[[マルチプレクサ]]:2進コード入力に基づいて、複数の入力から1つを選んで出力するもの。「データセレクタ」<ref group="注">{{lang-en-short|data selector}}</ref>とも呼ばれる。 *デマルチプレクサ<ref group="注">{{lang-en-short|demultiplexer}}</ref>:2進コード入力に基づいて、1つの入力を複数の出力の内の1つに出力するもの。 *[[加算器]] : [[二進数|2進数]]の加算を行うもの。全加算器<ref group="注">{{lang-en-short|full adder}}</ref>と半加算器<ref group="注">{{lang-en-short|half adder}}</ref>があり、多桁の全加算器では桁上げの高速化の為に「キャリールックアヘッド回路」を備えるものもある。負の数の表現に2の[[補数]]を使っているのであれば、減算は2の[[補数]]を加算することで実現出来る。回路規模が大きくなってもわずかでも高速化したい場合、減算に対応するための論理反転の追加({{lang|en|XOR}}を1段または、{{lang|en|NOT}}を1段とセレクタを1段)を避け、専用の減算回路を持つこともある。<!-- *[[減算器]]:半減算器は存在する。半加算器との相違は、上位の桁へのキャリア出力の扱い(加算器では桁上げ、減算器では桁下げ)にある。全加算器と同様、全減算器は半減算器とOR回路の組み合わせで構成できる。 --> *[[乗算器]]:2進数の乗算を行うもの。過去にはALU上で加算とシフトの繰り返しで乗算を行っていたが、近年は多数のゲート回路によって一度に乗算してしまう専用乗算器が使用されている。 *[[バレルシフタ]]:シフトレジスタによるシフト操作では移動のビット数分の回数だけクロックの動作時間が掛かるが、これを避けるためにマルチプレクサを複数組並べるのと同様に多数のゲート回路によって一度にずらすことで実現するものである。 *比較器<ref group="注">{{lang-en-short|comparator}}</ref>:「ディジタル・コンパレータ」とも呼ばれ、概念としては一致回路や不一致回路、大小を比較する比較器もあり<ref name="ディジタルIC回路の基礎"/>、実際のロジックICでは4ビットや8ビットの比較器にこれら全ての信号が出力されるものが多い<ref>最新汎用ロジック・デバイス規格表 [[CQ出版社]] 2006年1月1日発行 ISBN 4-7898-4459-5</ref>。 *transmission gate: ([[:en:Transmission gate]])働きとしては入出力の間の電気的な直結あるいは絶縁の状態を切り替えるスイッチなので、ディジタルに限らずアナログにも使えるゲートだが、[[XORゲート]]の実装など論理回路にも有用な応用がある。 ==順序回路== <!-- {{重複|date=2022年12月10日 (土) 03:44 (UTC)|dupe=順序回路|section=1}} 順序回路に統合し概説+誘導の形に --> [[順序回路]]は過去の内部状態と取得時の入力信号とで出力が決まる回路である。組み合わせ回路は、伝播遅延によって信号が遅れることを除けば、入力の組み合わせだけで出力が一意に決まるが、順序回路はループにより内部に状態を保持しており、過去の入力に影響されるその状態も、出力の決定に関わる。入力信号の組み合わせによっては「不定」になる場合がある<ref>[http://www.tij.co.jp/document-viewer/jp/SN74HC74/datasheet/detailed_description#SCES7941982 TI SN74HC74 データシート]、[http://www.ti.com/jp/lit/ds/symlink/sn74ls279a.pdf TI SN74LS279A データシート]</ref>([[ラッチ回路#SRラッチの「不定」]])。 ===フリップフロップ=== {{seealso|フリップフロップ|ラッチ回路}} '''[[フリップフロップ]]'''は制御信号により現在の入力信号の保持を行うものである。[[ラッチ回路|ラッチ]]とも呼ばれる。論理回路ではフリップフロップと呼ぶものも、コンピュータ・システムでの回路名としては(通常は複数ビットの記憶回路を)'''レジスタ'''と呼ぶ。フリップフロップには[[クロック同期設計|クロック入力]]の有無により同期式と非同期式がある。 <!--'''非同期式フリップフロップ'''はクロック入力を持たず、その時点での入力の値に応じて出力が変化し、新たな入力信号が来るまで同じ状態を保持する。 *非同期式RS-FF(=RSラッチ):標準ではRとSが共に「真」は禁止されているが、セット優先、リセット優先のものでは両入力が共に「真」の時にはセットにだけ「真」の入力があったもの、またはリセットにだけ 「真」 の入力があったものとして扱われる設定が行なえるものがある。 *非同期式D-FF(=Dラッチ):RS-FFのS入力にストローブ入力(G)によるゲート制御が加わったものである。ストローブが 「真」 の間はD入力はQ出力にそのまま反映され、ストローブが「真」から「偽」に変わるとその変化時点(立ち上り、又は立ち下り)での入力を保持する。 '''同期式フリップフロップ'''はクロック信号(CLK、CK等と表記)の立ち上がり(又は立ち下り)に同期してその時点での入力(D, S, J等)に対応する信号を出力する。この出力は次にクロックが立ち上がる(又は立ち下る)まで更新されない。 *同期式RS-FF:RS は {{lang|en|reset}} と {{lang|en|set}} から付けられた。 *同期式D-FF:D は {{lang|en|data}} または {{lang|en|delay}} から付けられた。 *JK-FF:RS-FFの動作に近いがRとSの両方が「真」の時は出力が反転するのでRとSに同じ入力を与えると同期式T-FFとして動作する。JとKに互いに反転した入力を与えればD-FFとなる。もちろんRS-FFとして使用できる。このため、JK-FFは色々な構成で使用される。内部には2段の非同期FFがマスター・スレーブ構成に並んでいて、同期動作を行なっている。 *T-FF:クロックやクリア、プリセット以外の入力は持たず、クロックが入力されるたびに出力が反転する。Tは [[トグル|{{lang|en|toggle}}]] から付けられた。--> ===カウンタ=== {{seealso|カウンタ (電子回路)}} [[カウンタ (電子回路)|カウンタ]]回路は、特定の順序で出力の組み合わせが変化し、一定の周期で元の状態に戻るもので、フリップフロップとゲートとをいくつか組み合わせたものである。 *[[シフトレジスタ]]:直列フリップフロップの入力と出力を直接接続したもので、クロックに合わせて各FFを1段ずつ横に送っていく(シフトしてゆく)動作をするもの。通常は初段と終段の間は接続されていない。 *ジョンソン・カウンタ:シフトレジスタの初段と終段の間だけ入力と出力を反転して接続したもの。クロックに合わせて各FFを1段ずつ横に送っていく(シフトしてゆく)動作をするが、反転入力が移動してゆくので n 段ならば 2n 回目で一順するカウンタとなり、初期値が単純に「0」や「1」ばかりであれば[[デューティ比|デューティサイクル]]が50%のディジタル波形信号が得られる。 *リング・カウンタ:シフトレジスタの初段と終段の間も他の段同様、入力と出力を直接接続したもの。初期値で設定されたディジタル波形信号がn回目で一順するカウンタとなる。例えば4段リング・カウンタに <code>1000</code> と設定すれば <code>0100</code>→<code>0010</code>→<code>0001</code>→<code>1000</code> となって4回目で元に戻る。 *バイナリ・カウンタ(2進カウンタ) *n進カウンタ:(同期式であれば)バイナリ・カウンタのリセット入力に n-1 回目で「H」となるようにゲート回路で信号を接続する。n 回目のクロック入力でリセットがかかり、全てが <code>0</code> に戻る。 また、全ての出力状態が使用されるものと出力状態の一部のみ使用されるものの差で次の2つのグループに分類出来る。 *フィルド・コード・カウンタ<ref group="注">{{lang-en-short|filled code counter}}</ref>:全ての出力状態が使用されるもの。 **2ビットジョンソン・カウンタ **グレイ・コード・カウンタ、 **バイナリ・カウンタ(2進カウンタ) *アンフィルド・コード・カウンタ<ref group="注">{{lang-en-short|unfilled code counter}}</ref>:出力状態の一部のみ使用されるもので、その他の状態になる時は動作不良のときであるもの。 **3ビット以上のジョンソン・カウンタ **リング・カウンタ **M系列発生器([[線形帰還シフトレジスタ]]<ref group="注">{{lang-en-short|linear feedback shift register}}</ref>) カウンタには同期式と非同期式があり、非同期式カウンタは常に前段の結果によって次段の動作が左右されるため、多段になるほど終段の結果の確定は回路の伝播遅延による遅れが蓄積される。こうしたものは「非同期式リプルカウンタ」と呼ばれる。 多くのカウンタ回路には、加算と減算の動作選択、各段の初期値のプリセット、全段のリセットなどの機能を備えており、また、論理回路的な設計とは無関係であるが実際のICチップパッケージには多段接続時に数珠繋ぎに延長できるよう、キャリアアウト出力とキャリアイン入力と云う桁上げ出力や桁借り出力などが備わっている<ref name="ディジタルIC回路の基礎"/>。 ==同期と非同期・他== 以上の、組合わせ回路と順序回路という分類とは別に、以下のような分類もある。 ===同期=== {{seealso|クロック同期設計}} 同期式では非同期式に比べて信号の遅れやレーシングといった問題に起因する動作不良が減らせる、又は根絶できるが、回路規模が大きくなるので消費電力や回路コストが増す<ref name="ディジタルIC回路の基礎"/>。非同期式は単純な回路構成が採れるので低消費で回路コストも安くて済み、回路設計が最適化出来れば高速動作が可能になるが、設計マージンが小さくなる傾向があり小さなミスが動作不良に結びつく。 特に完全同期式回路は、全体で共有する[[クロック]]信号を利用して動作のタイミングをあわせる回路である([[クロック同期設計]])。大規模な回路で広く用いられている。設計時に大規模な回路のシミュレーションが行いやすい、製造時に全てのラッチの 1・0 が切り替わるかどうかのテストを行う試験機のプログラムを作成しやすい、といった利点がある。 ===非同期=== 同期式に対し、別に同期信号を持たないものが非同期式で、非同期論理・非同期回路([[:en:Asynchronous circuit]])と言う。[[電気試験所]]のETL Mark IとMark II、富士通の[[FACOM]] 128などのリレー式計算機に採用がある。[[マイクロプロセッサ]]では、商業的に販売されてはいないが[[AMULET]]や南谷研の「TITAC」がある。 ===動的と静的=== [[Dynamic Random Access Memory|DRAM]]のように、常に活動していなければ正常に動作しない論理回路を動的と言う。これに対し、[[Static Random Access Memory|SRAM]]のように、電圧の供給だけで働く論理回路を静的と言う。マイクロプロセッサのレジスタのように多くの記憶が必要な場合、素子数の点で有利な動的回路の場合があり、そういったマイクロプロセッサは動作周波数に下限があり、また、クロックを止めることができない。 論理演算に対しても、常に働く回路として論理演算をおこなうものを静的論理と言う。汎用ロジックICの多くなど、現在使われている多くの論理回路は静的である。これに対し、クロックに合わせ1クロックで1段階の論理演算を行うような方式もあり、動的論理([[:en:Dynamic logic (digital electronics)]])と言う。電気試験所の[[ETL Mark III|ETL Mark III・IV]]、[[パラメトロン]]の回路方式、[[トランスピュータ]]の内部回路などに実例がある。 ==その他== 論理回路というよりディジタル回路としての分類になるが、以下のようなデバイスがある。 *ワイヤード・オア<ref group="注">{{lang-en-short|wired OR}}</ref>:(TTLでは)複数の[[オープンコレクタ]]出力を使って便宜上のOR回路を構成する手法。通常は複数のディジタル出力をそのまま結線することは許されないが、オープンコレクタ出力により可能となる。[[プルアップ抵抗]]が必要。CMOSではオープンドレインとなる。 *バッファ<ref group="注">{{lang-en-short|buffer}}</ref>、バス・トランシーバ<ref group="注">{{lang-en-short|bus transceiver}}</ref>、ライン・ドライバ/レシーバ<ref group="注">{{lang-en-short|line driver/receiver}}</ref>:伝送路や多数のゲートを駆動する為に大きな出力の回路を持つもの。多くが4bit、8bit、16bitなどの複数本を並列にして扱われる。 *トライステート・バッファ<ref group="注">{{lang-en-short|3-state buffer}}</ref>:バッファの出力状態を「H」と「L」の他にハイ・インピーダンス<ref group="注">{{lang-en-short|high impedance}}</ref>の合計3つ持つもの。 *シュミット・トリガ<ref group="注">{{lang-en-short|Schmitt trigger}}</ref>:不安定な入力信号を安定的に波形整形して出力する為に、[[ヒステリシス]]特性を備えたアンプを持つ。インバータ回路などに多い<ref name="ディジタルIC回路の基礎">松田勲著 『ディジタルIC回路の基礎』 [[技術評論社]] 2005年7月1日 初版第5刷発行 ISBN 4-7741-0804-9</ref>。 *シーケンサ<ref group="注">{{lang-en-short|sequencer}}</ref>:外部状況の変化にしたがって定義された演算・動作を行うもので、カウンタ・外部信号のレジスタ・ゲートなどを組み合わせて製作される。 ==歴史== 電気による論理演算は、リレー(ことによってはソレノイドアクチュエータやモータと、スイッチ)による装置(たとえば[[ステップ・バイ・ステップ交換機|初期の電話交換機]]など)があった。しかし、[[ブール代数]]は[[19世紀]]中頃に考案されていたが、当時はそれらの装置と関連付けて考えられていなかった。 ディジタル回路と論理演算の対応付けは、[[中嶋章]]が1934年頃から研究、論文としては1936-1937年<ref group="注">2部構成</ref>に榛沢正男と発表した「継電器回路に於ける単部分路の等価変換の理論」を嚆矢とし、[[クロード・シャノン]]の1937年の研究とその発表が有名である(他にも相次いで発表されている)。後者の着想が独立かどうかは不明である<ref>山田昭彦、「[https://doi.org/10.1587/essfr.3.4_9 スイッチング理論の原点を尋ねて -シャノンに先駆けた中嶋章の研究を中心に-]」 『子情報通信学会 基礎・境界ソサイエティ Fundamentals Review』 2010年 3巻 4号 p.4_9-4_17, {{doi|10.1587/essfr.3.4_9}}</ref>。 個別部品時代もモジュール化はおこなわれていたが、[[1960年代]]に登場した[[汎用ロジックIC]]により、アナログ的な[[回路設計]]と論理設計をほぼ分離できるようになった。 小規模な場合は、論理素子記号などを使った手書きによる設計が可能であるが、大規模になると難しい。そのため、大規模な回路の設計には[[ハードウェア記述言語]](HDL)が多用されるようになった。 1990年代後半より、試作や少量生産の場合に論理がプログラマブルな(書き換え可能な)[[プログラマブルロジックデバイス|PLD]]やCPLD、[[FPGA]]などが使用されるようになった。大量生産または高性能が要求される場合は{{lang|en|[[ASIC]]}}も使用される。 ==その他== *[[十進法]]で表現された数を、整数値として2進に変換するのではなく扱う方法として[[二進化十進表現]]がある。<code>0000</code> から <code>1001</code> を使用し <code>1010</code> から <code>1111</code> は使用しないというよくある方法の他いくつかのバリエーションや、近年の十進浮動小数点で使われている10ビットに十進3桁を詰め込む {{lang|en|densely packed decimal}}、[[3増し符号]]、2-5進コード([[二五進法]])などがある。 ==脚注== {{脚注ヘルプ}} === 注釈 === {{Notelist2|2}} === 出典 === {{Reflist|2}} ==関連項目== {{Commonscat|Logic gates}} *[[集積回路]] *[[数理論理学]] *[[シーケンス制御]] *[[論理診断]] *[[ブール論理]] - [[ブール関数]] - [[ブール代数]] *[[選言標準形]] - [[連言標準形]] *[[負論理]] - [[正論理]] *[[標準ロジックIC]] *[[デジタル回路|ディジタル回路]] *[[CPU設計]] *[[プログラマブルロジックデバイス]] == 外部リンク == * [https://ocw.u-tokyo.ac.jp/course_11273/ 論理回路基礎(UTokyo OpenCourseWare)] {{論理演算}} {{論理ゲート}} {{authority control}} {{DEFAULTSORT:ろんりかいろ}} [[Category:論理ゲート|*]] [[Category:デジタル回路]] [[Category:制御工学]] [[Category:コンピュータの仕組み]] [[Category:計算機科学における論理]]
このページで使用されているテンプレート:
テンプレート:Authority control
(
ソースを閲覧
)
テンプレート:Commonscat
(
ソースを閲覧
)
テンプレート:Doi
(
ソースを閲覧
)
テンプレート:Lang
(
ソースを閲覧
)
テンプレート:Lang-en-short
(
ソースを閲覧
)
テンプレート:Notelist2
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Seealso
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:読み仮名
(
ソースを閲覧
)
テンプレート:論理ゲート
(
ソースを閲覧
)
テンプレート:論理演算
(
ソースを閲覧
)
論理回路
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報