下のテキストエリアに回路構造をJavaScriptオブジェクト形式で記述し、「図を描画」ボタンを押してください。
回路構造の例は初期表示されています。
テキストエリアには、回路構造をJavaScriptのオブジェクトリテラル形式(JSON形式でも可)で記述します。全体の構造は以下のようになります。
{
"gates": [
{ /* ゲート1の定義 */ },
{ /* ゲート2の定義 */ },
// ...
]
}
"gates" 配列の各要素が、回路を構成する一つの要素(論理ゲートや入力)を定義するオブジェクトです。各ゲート定義オブジェクトは、通常以下のプロパティを持ちます。
"id" (必須):
そのゲートを回路内で一意に識別するための文字列です(例: `"G1"`,
`"in_A"`)。主に内部処理や、INPUTゲートの図に表示するために使われます。接続は信号名で行います。
"type" (必須):
その要素の種類を指定します。現在サポートされているのは "INPUT", "AND",
"OR", "NOT", "XOR" です。
"pos" (必須):
図を描画する際に、そのゲートの左上隅を配置する座標を指定するオブジェクトです。{ "x": 数値, "y": 数値 } (例: { "x": 100, "y": 50 })。
"inputs" ("INPUT" タイプ以外で必須):
そのゲートへの入力となる信号名の配列です。["信号名1", "信号名2", ...] (例: ["A", "B"])。"output"
で定義された信号名である必要があります。NOTゲートの場合は配列に1つの信号名を指定します。INPUTタイプには不要です。
"output" ("INPUT" タイプ、および後続に接続があるゲートで必須):
そのゲートからの出力信号名を指定する文字列です。"信号名" (例: "S1")。"inputs" で参照されることで接続されます。INPUTタイプのゲートはこのプロパティで信号名を定義します。
例として、初期表示されている定義は (A AND B) OR (NOT C) という論理式を表しています。
論理回路では、特定の論理演算を表すために標準的な図記号(シンボル)が使用されます。ここでは代表的な記号とその機能について、真理値表を用いて解説します。「0」は偽(Low)、「1」は真(High)を表します。
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| A | Y |
|---|---|
| 0 | 1 |
| 1 | 0 |
これらの基本的な論理ゲートを組み合わせることで、フリップフロップ、加算器、CPUといった複雑なデジタル回路を構成することができます。