ロジックゲートダイアグラム

ロジックゲートダイアグラムについて

ロジックゲートダイアグラムは、ブール関数がハードウェアでどのように実装されるかを示します——入力が左から組み合わせ回路ゲートとフリップフロップを通って流れ、右側に出力を生成します。デジタル設計エンジニアはRTLの意図を文書化し、ゲートレベルのネットリストを検証し、ブール代数を教えるために使用します。Schematex はそのシンボルセットを IEEE Std 91-1984 / ANSI Y32.14(特徴的な形状のANSIシンボル、米国のデフォルト)と IEC 60617-12(統一矩形シンボル、国際デフォルト)から導出し、ダイアグラムごとに選択可能です。

DSLは機能的です:シグナルを宣言し、各ゲートの入力を名前で記述します。レイアウトと配線は依存グラフから自動的に計算されます——手動での座標指定は不要です。

logic-gate·§ IEEE 91-1984
↘ preview
100%
1-bit Full Adder Logic gate diagram with 5 gates, 3 inputs, 2 outputs XOR AND XOR AND OR A B Cin Sum Cout 1-bit Full Adder
UTF-8 · LF · 10 lines · 200 chars✓ parsed·3.4 ms·5.3 KB SVG

1. 最初のロジックゲートダイアグラム

最小限の有用なダイアグラム:入力2つ、ゲート1つ、出力1つ。

logic-gate·§ IEEE 91-1984
↘ preview
100%
NAND check Logic gate diagram with 1 gates, 2 inputs, 1 outputs NAND A B F NAND check
UTF-8 · LF · 4 lines · 53 chars✓ parsed·0.6 ms·3.0 KB SVG

使用方法の80%をカバーする4つのルール:

  1. キーワード logic で始め、オプションで引用符付きのタイトルと style: ansi または style: iec を続けます。
  2. inputoutput 行でポートを宣言します——カンマ区切りのシグナル名。
  3. 各ゲートは id = GATE_TYPE(input1, input2, …) です。id は名前付きシグナル線になります。
  4. ゲートの id と一致する output 名は自動的に配線されます。名前が異なる場合は OUTPUT <- gate_id を使用します。

コメントは独立した行で # または -- で始める必要があります(またはゲート行の最後のトークンの後)。


2. ゲートタイプ

2.1 組み合わせ回路ゲート

DSLキーワード関数ANSIシェイプIECシンボル
ANDA · BD字型ボディ矩形 + &
ORA + B曲線ボディ矩形 + ≥1
NOTĀ三角形 + バブル矩形 + 1 + バブル
NAND¬(A · B)AND + バブル矩形 + & + バブル
NOR¬(A + B)OR + バブル矩形 + ≥1 + バブル
XORA ⊕ BOR + 追加のアーク矩形 + =1
XNOR¬(A ⊕ B)XOR + バブル矩形 + =1 + バブル
BUFA(バッファ)三角形、バブルなし矩形 + 1
logic-gate·§ IEEE 91-1984
↘ preview
100%
Gate gallery Logic gate diagram with 5 gates, 3 inputs, 5 outputs AND OR XOR NAND NOT A B C Y_and Y_or Y_xor Y_nand Y_not Gate gallery
UTF-8 · LF · 8 lines · 174 chars✓ parsed·0.8 ms·6.3 KB SVG

2.2 特殊出力バッファ

DSLキーワード関数
TRISTATE_BUFトライステートバッファ——イネーブルがローのとき出力はZ
TRISTATE_INVトライステート反転バッファ
OPEN_DRAINオープンドレイン / オープンコレクタ出力(外部プルアップ必要)
SCHMITTシュミットトリガー——ボディ内のヒステリシスシンボル
logic-gate·§ IEEE 91-1984
↘ preview
100%
Special buffers Logic gate diagram with 3 gates, 2 inputs, 3 outputs EN TRISTATE_BUF EN OPEN_DRAIN SCHMITT A EN Y_tri Y_od Y_sch Special buffers
UTF-8 · LF · 6 lines · 141 chars✓ parsed·0.5 ms·4.4 KB SVG

2.3 フリップフロップとラッチ

DSLキーワードタイプ主要ピン
DFFDフリップフロップ(エッジトリガー)D、CLK、Q、Q̄
JKFFJKフリップフロップJ、K、CLK、Q、Q̄
SRFFSRフリップフロップS、R、CLK、Q、Q̄
TFFT(トグル)フリップフロップT、CLK、Q、Q̄
LATCH_SRSRラッチ(レベルセンシティブ、クロックなし)S、R、Q、Q̄
LATCH_DDラッチ(イネーブル=1のとき透過)D、EN、Q、Q̄
logic-gate·§ IEEE 91-1984
↘ preview
100%
Flip-flop gallery Logic gate diagram with 3 gates, 5 inputs, 3 outputs D Q DFF J K Q JKFF D E Q LATCH_D D J K CLK EN Q_dff Q_jk Q_latch Flip-flop gallery
UTF-8 · LF · 6 lines · 156 chars✓ parsed·0.6 ms·6.3 KB SVG

2.4 複合組み合わせ回路

DSLキーワード関数
MUXマルチプレクサ
DEMUXデマルチプレクサ
DECODERバイナリデコーダ
ENCODERプライオリティエンコーダ
logic-gate·§ IEEE 91-1984
↘ preview
100%
Combinational MSI Logic gate diagram with 2 gates, 3 inputs, 2 outputs I0 I1 I2 MUX I0 I1 DECODER A B S Y_mux Y_dec Combinational MSI
UTF-8 · LF · 5 lines · 114 chars✓ parsed·0.4 ms·4.3 KB SVG

2.5 順序回路(複合)

DSLキーワード関数
COUNTER汎用バイナリカウンター(CTR ラベル、CLK/RESET/Q0〜Q3)
SHIFT_REG汎用シフトレジスタ(SRG ラベル、CLK/SER/Q0〜Q7)
logic-gate·§ IEEE 91-1984
↘ preview
100%
Sequential MSI Logic gate diagram with 2 gates, 3 inputs, 2 outputs I0 I1 COUNTER I0 I1 SHIFT_REG DATA CLK RESET Q_cnt Q_sr Sequential MSI
UTF-8 · LF · 5 lines · 132 chars✓ parsed·0.3 ms·4.2 KB SVG

3. 入力と出力

3.1 ポートの宣言

input A, B, Cin          # 3つの入力ポート
output Sum, Cout         # 2つの出力ポート

input または output リストの各名前は、ダイアグラム全体で使用可能な名前付きシグナル線になります。

3.2 アクティブローの入力

入力リストでシグナル名の前に ~ を付けてアクティブローとしてマークします。レンダラーはポートシンボルにバブルを描画します。

input ~nRESET, CLK, DATA

アクティブロー表記はゲート入力リスト内でも機能します:

g1 = AND(~nRESET, CLK)

3.3 出力とゲートの配線

出力IDがゲートIDと一致する場合、接続は暗黙的です:

output Sum        # SumはゲートIDでもある → 自動配線
Sum = XOR(s1, Cin)

名前が異なる場合は明示的な代入演算子を使用します:

output F
q1 = NOR(A, B)
F <- q1           # Fはq1の出力から取得
logic-gate·§ IEEE 91-1984
↘ preview
100%
SR latch from NOR gates Logic gate diagram with 2 gates, 4 inputs, 2 outputs NOR NOR S R Qn Q Q Qn SR latch from NOR gates
UTF-8 · LF · 7 lines · 121 chars✓ parsed·0.4 ms·4.3 KB SVG

4. シンボルスタイル

ヘッダー行の style: オプションはシンボル標準を選択します。ダイアグラム内のすべてのゲートに適用されます。

標準使用場面
ansi(デフォルト)IEEE Std 91——特徴的な曲線形状米国の教育、ハードウェアドキュメント
iecIEC 60617-12——統一矩形 + 機能ラベル国際、欧州産業
logic "ALU slice" style: iec
logic-gate·§ IEEE 91-1984
↘ preview
100%
1-bit Full Adder Logic gate diagram with 5 gates, 3 inputs, 2 outputs =1 & =1 & ≥1 A B Cin Sum Cout 1-bit Full Adder
UTF-8 · LF · 10 lines · 199 chars✓ parsed·0.4 ms·5.3 KB SVG
logic-gate·§ IEEE 91-1984
↘ preview
100%
Gate gallery — IEC style Logic gate diagram with 5 gates, 3 inputs, 5 outputs & ≥1 =1 & 1 A B C Y_and Y_or Y_xor Y_nand Y_not Gate gallery — IEC style
UTF-8 · LF · 8 lines · 185 chars✓ parsed·0.4 ms·6.3 KB SVG

5. モジュールブロック

module を使用してゲートをラベル付きのサブ回路ボックスにグループ化します。モジュールブロックは階層的な設計を文書化するのに便利です——各モジュールはそのメンバーゲートを囲む名前付き矩形としてレンダリングされます。

logic "Hierarchical adder"
input A, B, Cin
output Sum, Cout

module "Half Adder" {
  s1 = XOR(A, B)
  c1 = AND(A, B)
}

Sum = XOR(s1, Cin)
Cout = OR(c1, AND(s1, Cin))

モジュール構文のルール:

  • module "Label" { — モジュールを開く(引用符付きラベルまたは裸の識別子)。{module と同じ行に必要です。
  • 独立した行の } は最近開いたモジュールを閉じます。
  • モジュールはネストできます。

6. ラベルとコメント

  • ダイアグラムタイトル: logic "Full Adder" — 最初の行のみ。
  • ゲートシグナル名: id = GATE(…)id がゲート名と出力線名の両方になります。
  • 出力ラベル: output Sum — 出力ポートラベルはデフォルトでシグナル名と一致します。
  • アクティブローマーカー: ポートまたはゲート入力の ~ プレフィックス。
  • コメント: 行頭または行の最後の意味のあるトークンの後に # または --

7. 予約語とエスケープ

行頭で予約: logic(ヘッダー)、inputoutputmodule}

予約演算子トークン — シグナル名にこれらを使用しないでください:=(),<-~

シグナル名のルール: [a-zA-Z_][a-zA-Z0-9_]* に一致する必要があります。小文字と大文字の両方が受け入れられます。ゲートタイプのキーワード(ANDOR など)はパーサーで大文字・小文字を区別しません。


8. よくある間違い

記述した内容パーサーのメッセージ修正方法
f = and(A, B)(小文字ゲート)受け入れ——ゲートタイプは大文字・小文字を区別しないANDand も機能する
output F その後 F <- q1 だが q1 が未宣言LogicParseError: Unknown signal "q1"参照前に q1 をゲートとして宣言する
input A B C(スペース区切り、カンマなし)パーサーは A のみ取得;BC は無視されるカンマを使用:input A, B, C
F = BUFFER(A)LogicParseError: Unknown gate type: BUFFERBUF を使用する
module FullAdder {{ ブレースなし)行がモジュールパターンに一致しない——サイレントにスキップmodule と同じ行に開き { が必要
ヘッダーの style: IEEE不明なスタイル値——サイレントに ansi にデフォルトstyle: ansi または style: iec を使用する

9. 文法(EBNF)

document    = header statement*

header      = "logic" ( WS quoted-string )? ( WS "style:" WS style )? NEWLINE
style       = "ansi" | "iec"
quoted-string = '"' any-char-but-quote* '"'

statement   = blank | comment | input-decl | output-decl | gate-def | assign | module-block

comment     = ( "#" | "--" ) any NEWLINE

input-decl  = "input" WS port-list NEWLINE
output-decl = "output" WS port-list NEWLINE
port-list   = port-id ( "," WS? port-id )*
port-id     = "~"? id

gate-def    = id WS "=" WS gate-type "(" input-list ")" NEWLINE
input-list  = ( "~"? id ) ( "," WS? ( "~"? id ) )*

assign      = id WS "<-" WS id NEWLINE

module-block = module-open ( statement | module-block )* module-close
module-open  = "module" WS ( quoted-string | id ) WS? "{" NEWLINE
module-close = "}" NEWLINE

gate-type   = "AND" | "OR" | "NOT" | "NAND" | "NOR" | "XOR" | "XNOR" | "BUF"
            | "TRISTATE_BUF" | "TRISTATE_INV" | "OPEN_DRAIN" | "SCHMITT"
            | "DFF" | "JKFF" | "SRFF" | "TFF"
            | "LATCH_SR" | "LATCH_D"
            | "MUX" | "DEMUX" | "DECODER" | "ENCODER"
            | "COUNTER" | "SHIFT_REG"
            // すべて大文字・小文字を区別しない

id          = [a-zA-Z_] [a-zA-Z0-9_]*

権威ある情報源:src/diagrams/logic/parser.ts。これがパーサーと異なる場合はパーサーが優先されます——Issueを立ててください。


10. 標準への準拠

Schematex のロジックゲートダイアグラムは IEEE Std 91-1984 / ANSI Y32.14(特徴的な形状のシンボル)と IEC 60617-12(関数修飾子付き矩形シンボル)に従います。

現在実装されているもの:

  • ✅ 8種類すべての組み合わせゲート:AND、OR、NOT、NAND、NOR、XOR、XNOR、BUF
  • ✅ 特殊出力バッファ:TRISTATE_BUF、TRISTATE_INV、OPEN_DRAIN、SCHMITT
  • ✅ 4種類のエッジトリガーフリップフロップ:DFF、JKFF、SRFF、TFF
  • ✅ 2種類のラッチ:LATCH_SR、LATCH_D
  • ✅ 組み合わせ回路MSI:MUX、DEMUX、DECODER、ENCODER
  • ✅ 順序回路MSI:COUNTER、SHIFT_REG
  • ✅ 入力とポートのアクティブロー(~)表記
  • ✅ ANSIとIECのシンボルスタイル、ダイアグラムごとに選択可能
  • ✅ モジュールグループ化ブロック
  • ✅ 自動DAGレイアウト(トポロジカルソート、左から右へのシグナルフロー)
  • ⏳ 明示的なファンアウト配線ルーティング(ジャンクションドット付きの共有ネット)
  • ⏳ マルチビットバス表記(線への /N スラッシュアノテーション)
  • ⏳ フリップフロップのアクティブロークロック入力

参考文献:

  • IEEE Std 91-1984 / ANSI Y32.14: IEEE Standard Graphic Symbols for Logic Functions
  • IEEE Std 91a-1991: Supplement to IEEE Std 91
  • IEC 60617-12: Graphical symbols for diagrams — binary logic elements

11. 関連するサンプル

logic·§ IEEE 91
1-bit Full Adder Logic gate diagram with 5 gates, 3 inputs, 2 outputs XOR AND XOR AND OR A B Cin Sum Cout 1-bit Full Adder
1-bit full adder
1-bit full adder built from XOR, AND, and OR gates — the foundational building block of every arithmetic logic unit, from a functional description.
education

12. ロードマップ

計画中——まだパース不可。 今日生成された DSL ではこれらを使用しないでください。パーサーが拒否または無視します。

  • 明示的なファンアウト / ジャンクションドット — 複数のゲート入力で共有される名前付き線、分岐点にジャンクションドット付きでレンダリング。
  • マルチビットバス表記 — N ビットシグナルグループを示す線への bus N アノテーション。
  • アクティブロークロック — フリップフロップ入力リストの ~CLK、クロック三角形にバブルをレンダリング。
  • フィードバックアーク — ゲート出力から前のゲート入力への明示的な線、メインシグナルパスの上にルーティング。
  • パラメータ化されたゲートファンインAND(A, B, C, D) を直接4入力ANDゲートとしてレンダリング。

これらが早期に必要な場合はGitHubのIssueでトラックしてください。

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.