feat: editable labels for INPUT/OUTPUT/CLOCK gates
Double-click any INPUT, OUTPUT, or CLOCK gate to assign a custom label. Labels are shown inside the gate and used in waveform viewer instead of generic IN_0/OUT_0 names. Example circuits now ship with meaningful labels (S, R, D, EN, Q, Q̅, CLK). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,16 +20,16 @@ const GAP_Y = 100;
|
||||
function srFlipFlop() {
|
||||
const gates = [
|
||||
// Inputs
|
||||
{ id: 1, type: 'INPUT', x: 50, y: 80, value: 0 }, // S (Set)
|
||||
{ id: 2, type: 'INPUT', x: 50, y: 280, value: 0 }, // R (Reset)
|
||||
{ id: 1, type: 'INPUT', x: 50, y: 80, value: 0, label: 'S' },
|
||||
{ id: 2, type: 'INPUT', x: 50, y: 280, value: 0, label: 'R' },
|
||||
|
||||
// Cross-coupled NOR gates
|
||||
{ id: 3, type: 'NOR', x: 300, y: 80, value: 0 }, // Top NOR → Q
|
||||
{ id: 4, type: 'NOR', x: 300, y: 280, value: 0 }, // Bottom NOR → Q̅
|
||||
{ id: 3, type: 'NOR', x: 300, y: 80, value: 0 },
|
||||
{ id: 4, type: 'NOR', x: 300, y: 280, value: 0 },
|
||||
|
||||
// Outputs
|
||||
{ id: 5, type: 'OUTPUT', x: 550, y: 80, value: 0 }, // Q
|
||||
{ id: 6, type: 'OUTPUT', x: 550, y: 280, value: 0 } // Q̅
|
||||
{ id: 5, type: 'OUTPUT', x: 550, y: 80, value: 0, label: 'Q' },
|
||||
{ id: 6, type: 'OUTPUT', x: 550, y: 280, value: 0, label: 'Q̅' }
|
||||
];
|
||||
|
||||
const connections = [
|
||||
@@ -70,16 +70,16 @@ function srFlipFlop() {
|
||||
function srFlipFlopNand() {
|
||||
const gates = [
|
||||
// Inputs (active low for NAND SR)
|
||||
{ id: 1, type: 'INPUT', x: 50, y: 80, value: 1 }, // S̅
|
||||
{ id: 2, type: 'INPUT', x: 50, y: 280, value: 1 }, // R̅
|
||||
{ id: 1, type: 'INPUT', x: 50, y: 80, value: 1, label: 'S̅' },
|
||||
{ id: 2, type: 'INPUT', x: 50, y: 280, value: 1, label: 'R̅' },
|
||||
|
||||
// Cross-coupled NAND gates
|
||||
{ id: 3, type: 'NAND', x: 300, y: 80, value: 0 }, // Top NAND → Q
|
||||
{ id: 4, type: 'NAND', x: 300, y: 280, value: 0 }, // Bottom NAND → Q̅
|
||||
{ id: 3, type: 'NAND', x: 300, y: 80, value: 0 },
|
||||
{ id: 4, type: 'NAND', x: 300, y: 280, value: 0 },
|
||||
|
||||
// Outputs
|
||||
{ id: 5, type: 'OUTPUT', x: 550, y: 80, value: 0 }, // Q
|
||||
{ id: 6, type: 'OUTPUT', x: 550, y: 280, value: 0 } // Q̅
|
||||
{ id: 5, type: 'OUTPUT', x: 550, y: 80, value: 0, label: 'Q' },
|
||||
{ id: 6, type: 'OUTPUT', x: 550, y: 280, value: 0, label: 'Q̅' }
|
||||
];
|
||||
|
||||
const connections = [
|
||||
@@ -124,8 +124,8 @@ function srFlipFlopNand() {
|
||||
function dLatch() {
|
||||
const gates = [
|
||||
// Inputs
|
||||
{ id: 1, type: 'INPUT', x: 50, y: 100, value: 0 }, // D (Data)
|
||||
{ id: 2, type: 'INPUT', x: 50, y: 280, value: 0 }, // E (Enable)
|
||||
{ id: 1, type: 'INPUT', x: 50, y: 100, value: 0, label: 'D' },
|
||||
{ id: 2, type: 'INPUT', x: 50, y: 280, value: 0, label: 'EN' },
|
||||
|
||||
// NOT gate to invert D
|
||||
{ id: 3, type: 'NOT', x: 200, y: 340, value: 0 },
|
||||
@@ -139,8 +139,8 @@ function dLatch() {
|
||||
{ id: 7, type: 'NOR', x: 550, y: 340, value: 0 }, // → Q̅
|
||||
|
||||
// Outputs
|
||||
{ id: 8, type: 'OUTPUT', x: 750, y: 60, value: 0 }, // Q
|
||||
{ id: 9, type: 'OUTPUT', x: 750, y: 340, value: 0 } // Q̅
|
||||
{ id: 8, type: 'OUTPUT', x: 750, y: 60, value: 0, label: 'Q' },
|
||||
{ id: 9, type: 'OUTPUT', x: 750, y: 340, value: 0, label: 'Q̅' }
|
||||
];
|
||||
|
||||
const connections = [
|
||||
@@ -189,8 +189,8 @@ function dLatch() {
|
||||
function dFlipFlop() {
|
||||
const gates = [
|
||||
// Inputs
|
||||
{ id: 1, type: 'INPUT', x: 30, y: 100, value: 0 }, // D
|
||||
{ id: 2, type: 'CLOCK', x: 30, y: 350, value: 0 }, // CLK
|
||||
{ id: 1, type: 'INPUT', x: 30, y: 100, value: 0, label: 'D' },
|
||||
{ id: 2, type: 'CLOCK', x: 30, y: 350, value: 0, label: 'CLK' },
|
||||
|
||||
// CLK inverter (for master latch)
|
||||
{ id: 3, type: 'NOT', x: 170, y: 350, value: 0 },
|
||||
@@ -210,8 +210,8 @@ function dFlipFlop() {
|
||||
{ id: 13, type: 'NOR', x: 830, y: 240, value: 0 }, // Slave Q̅
|
||||
|
||||
// Outputs
|
||||
{ id: 14, type: 'OUTPUT', x: 1010, y: 60, value: 0 }, // Q
|
||||
{ id: 15, type: 'OUTPUT', x: 1010, y: 240, value: 0 } // Q̅
|
||||
{ id: 14, type: 'OUTPUT', x: 1010, y: 60, value: 0, label: 'Q' },
|
||||
{ id: 15, type: 'OUTPUT', x: 1010, y: 240, value: 0, label: 'Q̅' }
|
||||
];
|
||||
|
||||
const connections = [
|
||||
|
||||
Reference in New Issue
Block a user