論理回路の基礎

何事も基本が大切です。HDLを始める前に論理回路の基礎を確認しておきましょう。

もふねこ

「えっ、いきなりVerilogを書くんじゃないの?」って思った?🐾
実は、HDLを書く前に『AND・OR・NOT』といった論理回路の基本を知っておくのが、一番の近道なんだよ!一緒にサクッとおさらいしよう!

1. 論理演算子(AND・OR・NOT)

論理回路の動作は論理式で表すことができます。論理式の演算子には以下の3種類があります。

名前別名演算子動作
論理積 AND A・B(ドット) 両方の入力が1のとき1、それ以外は0。ドットは省略可。
論理和 OR A+B どちらかの入力が1であれば1、両方0のとき0。
論理否定 NOT Ā(Aバー) 0→1、1→0 に反転する。
💡
ポイント 組み合わせ回路の入力と出力の関係は、すべてこの3種類の演算子による論理式で表すことができます。

2. ブール代数の法則

論理式はブール代数の諸法則に従います。主な法則を以下にまとめます。

AND(論理積)に関する法則

法則名
0との積A・0 = 0
1との積A・1 = A
同一則A・A = A
補元則A・Ā = 0

OR(論理和)に関する法則

法則名
0との和A+0 = A
1との和A+1 = 1
同一則A+A = A
補元則A+Ā = 1

共通の法則

法則名AND形式OR形式
交換則A・B = B・AA+B = B+A
結合則(A・B)・C = A・(B・C)(A+B)+C = A+(B+C)
分配則A・(B+C) = A・B+A・CA+B・C = (A+B)・(A+C)
吸収則A・(A+B) = AA+A・B = A

ド・モルガンの法則

反転の範囲を変えることで、論理和と論理積を相互に変換できる重要な法則です。

法則
第1法則A・B の否定 = Ā + B̄
第2法則A+B の否定 = Ā ・ B̄
⚠️
覚えるポイント ド・モルガンの法則は「否定をとると AND⇔OR が入れ替わる」と覚えると分かりやすいです。詳細は後のページで扱います。
もふねこ

「法則がいっぱいあって覚えられない…」って心配しなくて大丈夫!🐾
実践のコード書きで一番よく使うのは『ド・モルガンの法則』だから、今は『こういうのがあるんだな』くらいでサラッと流してOKだよ。

3. 真理値表

真理値表とは、論理回路の入力と出力の関係を網羅的に示した表です。入力の全組み合わせに対して出力値を記述します。

AND・OR の真理値表

ABA・B(AND)A+B(OR)
0000
0101
1001
1111

ド・モルガンの法則を真理値表で証明する

「A・B の否定 = Ā + B̄」を真理値表で確認します。

ABA・BA・Bの否定(左辺)ĀĀ+B̄(右辺)
0001111
0101101
1001011
1110000

左辺と右辺が一致しており、ド・モルガンの第1法則が成立することを確認できます。

4. 回路記号

論理演算子は回路記号として図示できます。回路記号を線でつないだものが回路図です。

ゲート名MIL記法の形状JIS記法動作
ANDゲートD字型□に「&」全入力が1のとき出力1
ORゲート矢型□に「≥1」1つ以上の入力が1で出力1
NOTゲート(インバータ)三角+○□に「1」+○入力を反転して出力
NANDゲートAND+出力に○□に「&」+○AND出力の否定
NORゲートOR+出力に○□に「≥1」+○OR出力の否定
ルール 記号の出力側に「○」が付くと否定(NOT)を意味します。入力側の○は、入力を反転してからゲートに入力することを意味します。3入力・4入力のゲートも存在します。

5. タイミングチャート

タイミングチャートとは、時間の流れに沿って入出力信号がどう変化するかを示した図です。横軸が時間、縦軸が信号値(0または1)を表します。

タイミングチャートの読み方

時刻入力A入力B出力 A・B(AND)出力 A+B(OR)
T1以前0000
T1(Aが1へ)1001
T2(Bが1へ)1111
T3(Aが0へ)0101
T4(Bが0へ)0000

タイミングチャートは、論理式・真理値表・回路記号とともに論理回路設計に欠かせないツールです。

6. 真理値表から論理式を導く

真理値表が与えられたとき、出力Qが1になる行に着目して論理式を導きます。

手順(出力が1になる条件が1つの場合)

  1. 出力Qが1になる行を探す
  2. その行の入力条件をAND式で表す(例:A=1, B=1 → A・B)
  3. それが論理式になる(例:Q = A・B)

手順(出力が1になる条件が複数の場合)

Qが1になる条件が複数あるとき、それぞれのAND式をORでつなぎます。

ABQ条件式
000
011Ā・B
101A・B̄
111A・B

3つの条件をORでつなぐと:

Q = Ā・B + A・B̄ + A・B → 簡略化すると Q = A + B

別の方法:出力0の条件から導く 出力が0になる条件の否定をOR式で表し、ド・モルガンの法則で変形しても同じ結果が得られます。
もふねこ

ここ、ちょっと数学っぽくて難しく感じるかもしれないね🐾
でも、実際の回路設計ツール(論理合成ツール)がこの「簡略化」を自動でやってくれるから、今は『こうやって式ができるんだ』というイメージだけ掴めれば完璧だよ!

7. 組み合わせ回路と順序回路

🔵 組み合わせ回路

  • 出力 = 入力の関数
  • 内部に記憶素子なし
  • 真理値表・論理式で表現できる
  • 入力変化 → 出力変化(遅延あり)
  • 遅延時間は入力値・経路によって異なる

🟣 順序回路

  • 出力 = 現在の状態(記憶)+入力
  • 内部にフリップフロップなどの記憶素子をもつ
  • 出力変化はクロックに同期する
  • 遅延時間は記憶素子の遅延のみでほぼ一定

組み合わせ回路の遅延(具体例)

インバータ(遅延1ns)とANDゲート(遅延2ns)からなる回路で考えます。

変化のパターン経路遅延時間
B=0のときAが0→1A → ANDゲート → D2ns
Bが0→1B → インバータ(C) → ANDゲート(D)1ns + 2ns = 3ns

同じ回路でも、入力変化のパターンによって出力までの遅延時間が異なります。

順序回路の遅延(フリップフロップの場合)

フリップフロップ(遅延1ns)を追加した順序回路では:

  • CLKの立ち上がりエッジを検出し、そのときのD入力値をXに転送する
  • CLKが立ち上がってから1ns後にXの値が確定する(常にほぼ一定)
  • 組み合わせ回路の遅延値によらず、出力変化タイミングはCLK基準で揃う
もふねこ

お疲れさま!一番最初の「論理回路の基礎」を乗り越えたね🐾
組み合わせ回路と順序回路の違いは、Verilogを書く時に一番重要になるポイントだから、下のまとめでしっかり復習しておこう!

📌 まとめ

  • 論理回路設計は「論理式・真理値表・回路記号・タイミングチャート」の4つで行う
  • すべての論理式は AND(論理積)OR(論理和)NOT(論理否定) の3種類で表せる
  • AND演算子はドット(・)、OR演算子は +、NOT演算子はAの上に横棒(Ā)で表す
  • 回路記号にはMIL記法とJIS記法がある
  • 真理値表から論理式を導くには「出力が1になる行のAND式をORでつなぐ」
  • 組み合わせ回路の出力は入力の関数であり、真理値表や論理式で表現できる
  • 順序回路はフリップフロップなどの記憶素子をもち、出力はクロックに同期して変化する
  • タイミングチャートは横軸が時間、縦軸が入出力信号値を表す