オーム社の『マンガでわかるデジタル回路』を読んだ感想

📢 この記事は gemini-2.5-flash によって翻訳されました

はじめに

最近、『マンガでわかるデジタル回路』っていう本を読んだんだ。軽くまとめとくね。

本に書いてあったこと全部はここに書いてないよ。

前置き

デジタル回路は組み合わせ回路と順序回路に分かれるよ。

組み合わせ回路:今の入力情報の組み合わせで出力が決まる回路。

順序回路:『記憶』を持った回路。

MIL記号

論理回路の ANDゲートORゲート の記号は、複数の入力に対して1つの出力がある形に拡張されてるんだ。

  • 記号の意味

ANDゲート (ALL) :複数の入力が全部1のときに、出力が1になる。

ORゲート (EXIST) :どれか1つでも入力が1のときに、出力が1になる。

  • 配線

が付いてるのは低レベル (0、L)。

が付いてないのは高レベル (1、H)。

組み合わせ回路の作り方

多数決回路

複数人で投票して2つの結果から1つを選ぶ回路だよ。

  1. 真理値表を作る。つまり、ありうる全てのパターンを書き出す。

  2. 真理値表のH出力のところに下線を引く。

  3. 『入力の線』と『入力をNOTにする線』でフレームワークを組む。

    2列の縦方向の配線を用意して、2列目はNOT線、つまり1列目からNOTゲートを繋いで2列目にするんだ。

  4. ANDゲートに接続する。

    1. 入力がLのときは、入力をNOTにしたところ (2列目) から始める。

    2. 入力がHのときは、一番最初のところ (1列目) から線を引く。

    3. そして、ANDに繋ぐ。

    この手順を繰り返して、2番目で下線を引いたところを全部やる。

  5. ANDの全ての出力をORに接続する。

回路の簡略化

デジタル回路の設計フローは、問題整理 - 真理値表 - 簡略化 - 回路図作成、って感じ。

カルノー図を使って簡略化するよ。

  1. 真理値表をカルノー図に変換する。

    真理値表を作るときは、列を一番上から始める。例えば、[C、B、A] で、結果がZって感じ。

    カルノー図は二次元の真理値表で、一般的には0と1でレベルを表すんだ。

    もし入力が3つなら、行をB、A、列をCにして、その結果を二次元表に埋めていく。

  2. 簡略化の前に知っとくこと

    カルノー図の左右と上下は繋がってるんだ。横方向も縦方向もビット (1ビット) 単位で変化するからね。

  3. 簡略化

    1. 一緒になってる1をひとつの集合としてまとめていく。

    2. 行と列の共通点を探す。

    3. もし共通点が0だったら否定演算、つまり文字の上にバーを引く。

  4. 例えば

    C\BA00011110
    011
    1

    上の表で、共通点はCが0、Aが1だから、式は!C * Aになるね。

  5. 簡略化のルール

    • 集合の形は、縦横が1、2、4の長方形 (または正方形) しかダメ。

    • 集合は重ねていいよ。

    • 集合の数は少ないほど、面積は大きいほどいい。

    注:左右と上下はひとつの集合として見れるよ。もしこれ以上『集合を作れない』ってなったら、その回路はもうそれ以上簡略化できないってこと。


簡略化したら回路図を描くんだ。全ての式を、前の手順 (3番目から) で描けばOKだよ。

回路の無視 (ドンケア)

入力を決めるとき、バイナリ数の特性上、考慮しなくていい入力が出てくることがあるんだ。

例えば、入力が月だとして、4ビットのバイナリ数を使うと全部で16通りの入力があるけど、そのうち0、13、14、15なんかは考慮しなくていい入力だよね。

こういう入力は、カルノー図では『-』で代用できて、簡略化のときに集合体に入れちゃってもいいんだ。

順序回路の作り方

順序回路を作るには、組み合わせ回路とフリップフロップが必要になるよ。

順序回路の『記憶』についてだけど、例えば自動販売機でお金を投入するとき、今までの合計金額を記憶してるよね。もし記憶がなかったら、最後のコインの額面だけになっちゃう。

フリップフロップを導入するんだけど、例えばクロック (CLK) があって、CLKがトリガーされたときだけ、入力が出力に影響を与えるんだ。それ以外は出力は変わらないよ。


電子サイコロを作るのを例に見てみよう。

  1. 状態遷移図を描く。

    時間の変化に合わせて、電子サイコロがどう変わっていくか?

    もし停止が低レベルなら、1から6、そしてまた1に戻る。

    もし高レベルなら、どこかの点でずっと停止する。

  2. バイナリ数で状態を表す。

    それぞれの状況、つまり状態をバイナリ数で表して、それから状態遷移表を作るんだ。

    状態遷移表から回路図を描くには、Dフリップフロップを使って状態を記憶できるよ。

  3. 組み合わせ回路を設計する。

    『今の状態』から『次の状態』を決めるっていうのは、実は組み合わせ回路なんだ。

Visits Since 2025-02-28

Hugo で構築されています。 | テーマ StackJimmy によって設計されています。