From 4a363c9436c5e365eb323980d74d18a5389b9f85 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 14 May 2017 12:04:51 +0200 Subject: [PATCH] added some 74xx circuits --- src/main/dig/74xx/lib/74150.dig | 480 +++++++++++++++++ src/main/dig/74xx/lib/74151.dig | 353 +++++++++++++ src/main/dig/74xx/lib/74153.dig | 400 +++++++++++++++ src/main/dig/74xx/lib/74154.dig | 463 +++++++++++++++++ src/main/dig/74xx/lib/74157.dig | 394 ++++++++++++++ src/main/dig/74xx/lib/74244.dig | 482 ++++++++++++++++++ src/main/dig/74xx/lib/74253.dig | 374 ++++++++++++++ .../java/de/neemann/digital/gui/Main.java | 43 +- src/main/resources/lang/lang_de.xml | 8 +- src/main/resources/lang/lang_en.xml | 5 + .../digital/integration/TestExamples.java | 2 +- 11 files changed, 3000 insertions(+), 4 deletions(-) create mode 100644 src/main/dig/74xx/lib/74150.dig create mode 100644 src/main/dig/74xx/lib/74151.dig create mode 100644 src/main/dig/74xx/lib/74153.dig create mode 100644 src/main/dig/74xx/lib/74154.dig create mode 100644 src/main/dig/74xx/lib/74157.dig create mode 100644 src/main/dig/74xx/lib/74244.dig create mode 100644 src/main/dig/74xx/lib/74253.dig diff --git a/src/main/dig/74xx/lib/74150.dig b/src/main/dig/74xx/lib/74150.dig new file mode 100644 index 000000000..f1755800b --- /dev/null +++ b/src/main/dig/74xx/lib/74150.dig @@ -0,0 +1,480 @@ + + + 1 + + + isDIL + true + + + Description + 4-Line to 16-Line Data Selectors/Multiplexers + + + lockedMode + true + + + + + Splitter + + + Input Splitting + 1*4 + + + Output Splitting + 4 + + + + + + Multiplexer + + + Selector Bits + 4 + + + + + + Out + + + Label + W + + + pinNumber + 10 + + + + + + In + + + Label + A + + + pinNumber + 15 + + + + + + In + + + Label + C + + + pinNumber + 13 + + + + + + In + + + Label + B + + + pinNumber + 14 + + + + + + In + + + Description + Strobe + + + Label + S + + + pinNumber + 9 + + + + + + In + + + Label + E0 + + + pinNumber + 8 + + + + + + In + + + Label + E1 + + + pinNumber + 7 + + + + + + In + + + Label + E2 + + + pinNumber + 6 + + + + + + In + + + Label + E3 + + + pinNumber + 5 + + + + + + In + + + Label + E4 + + + pinNumber + 4 + + + + + + In + + + Label + E5 + + + pinNumber + 3 + + + + + + In + + + Label + E6 + + + pinNumber + 2 + + + + + + In + + + Label + E7 + + + pinNumber + 1 + + + + + + In + + + Label + E8 + + + pinNumber + 23 + + + + + + In + + + Label + E9 + + + pinNumber + 22 + + + + + + In + + + Label + E10 + + + pinNumber + 21 + + + + + + In + + + Label + E11 + + + pinNumber + 20 + + + + + + In + + + Label + E12 + + + pinNumber + 19 + + + + + + In + + + Label + E13 + + + pinNumber + 18 + + + + + + In + + + Label + E14 + + + pinNumber + 17 + + + + + + In + + + Label + E15 + + + pinNumber + 16 + + + + + + In + + + Label + D + + + pinNumber + 11 + + + + + + Or + + + + + Not + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74151.dig b/src/main/dig/74xx/lib/74151.dig new file mode 100644 index 000000000..5142a0d2d --- /dev/null +++ b/src/main/dig/74xx/lib/74151.dig @@ -0,0 +1,353 @@ + + + 1 + + + isDIL + true + + + Description + 3-Line to 8-Line Data Selectors/Multiplexers + + + lockedMode + true + + + + + Splitter + + + Input Splitting + 1*3 + + + Output Splitting + 3 + + + + + + Multiplexer + + + Selector Bits + 3 + + + + + + Out + + + Label + Y + + + pinNumber + 5 + + + + + + Out + + + Label + W + + + pinNumber + 6 + + + + + + Not + + + + + In + + + Label + A + + + pinNumber + 11 + + + + + + In + + + Label + C + + + pinNumber + 9 + + + + + + In + + + Label + B + + + pinNumber + 10 + + + + + + And + + + + + Not + + + + + In + + + Description + Strobe + + + Label + S + + + pinNumber + 7 + + + + + + In + + + Label + D0 + + + pinNumber + 4 + + + + + + In + + + Label + D1 + + + pinNumber + 3 + + + + + + In + + + Label + D2 + + + pinNumber + 2 + + + + + + In + + + Label + D3 + + + pinNumber + 1 + + + + + + In + + + Label + D4 + + + pinNumber + 15 + + + + + + In + + + Label + D5 + + + pinNumber + 14 + + + + + + In + + + Label + D6 + + + pinNumber + 13 + + + + + + In + + + Label + D7 + + + pinNumber + 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74153.dig b/src/main/dig/74xx/lib/74153.dig new file mode 100644 index 000000000..d8962c919 --- /dev/null +++ b/src/main/dig/74xx/lib/74153.dig @@ -0,0 +1,400 @@ + + + 1 + + + isDIL + true + + + Description + Dual 4-Line to 1-Line Data Selectors/Multiplexers + + + lockedMode + true + + + + + Multiplexer + + + Selector Bits + 2 + + + + + + Splitter + + + Input Splitting + 1,1 + + + Output Splitting + 2 + + + + + + In + + + Label + A + + + pinNumber + 14 + + + + + + In + + + Label + B + + + pinNumber + 2 + + + + + + And + + + + + Out + + + Label + 2Y + + + pinNumber + 9 + + + + + + In + + + Description + strobe + + + Label + 2G + + + pinNumber + 15 + + + + + + Not + + + + + In + + + Label + 2C0 + + + pinNumber + 10 + + + + + + In + + + Label + 2C1 + + + pinNumber + 11 + + + + + + In + + + Label + 2C2 + + + pinNumber + 12 + + + + + + In + + + Label + 2C3 + + + pinNumber + 13 + + + + + + Multiplexer + + + Selector Bits + 2 + + + + + + And + + + + + Out + + + Label + 1Y + + + pinNumber + 7 + + + + + + In + + + Description + strobe + + + Label + 1G + + + pinNumber + 1 + + + + + + Not + + + + + In + + + Label + 1C0 + + + pinNumber + 6 + + + + + + In + + + Label + 1C1 + + + pinNumber + 5 + + + + + + In + + + Label + 1C2 + + + pinNumber + 4 + + + + + + In + + + Label + 1C3 + + + pinNumber + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74154.dig b/src/main/dig/74xx/lib/74154.dig new file mode 100644 index 000000000..109ae7d53 --- /dev/null +++ b/src/main/dig/74xx/lib/74154.dig @@ -0,0 +1,463 @@ + + + 1 + + + isDIL + true + + + Description + 4-Line to 16-Line Decoders/Demultiplexers + + + lockedMode + true + + + + + Demultiplexer + + + Selector Bits + 4 + + + Default + 1 + + + + + + Splitter + + + Input Splitting + 1*4 + + + Output Splitting + 4 + + + + + + In + + + Label + A + + + pinNumber + 23 + + + + + + In + + + Label + C + + + pinNumber + 21 + + + + + + In + + + Label + B + + + pinNumber + 22 + + + + + + In + + + Label + D + + + pinNumber + 20 + + + + + + Out + + + Label + Y0 + + + pinNumber + 1 + + + + + + Out + + + Label + Y1 + + + pinNumber + 2 + + + + + + Out + + + Label + Y2 + + + pinNumber + 3 + + + + + + Out + + + Label + Y3 + + + pinNumber + 4 + + + + + + Out + + + Label + Y4 + + + pinNumber + 5 + + + + + + Out + + + Label + Y5 + + + pinNumber + 6 + + + + + + Out + + + Label + Y6 + + + pinNumber + 7 + + + + + + Out + + + Label + Y7 + + + pinNumber + 8 + + + + + + Out + + + Label + Y8 + + + pinNumber + 9 + + + + + + Out + + + Label + Y9 + + + pinNumber + 10 + + + + + + Out + + + Label + Y10 + + + pinNumber + 11 + + + + + + Out + + + Label + Y11 + + + pinNumber + 13 + + + + + + Out + + + Label + Y12 + + + pinNumber + 14 + + + + + + Out + + + Label + Y13 + + + pinNumber + 15 + + + + + + Out + + + Label + Y14 + + + pinNumber + 16 + + + + + + Out + + + Label + Y15 + + + pinNumber + 17 + + + + + + Or + + + + + In + + + Label + G1 + + + pinNumber + 18 + + + + + + In + + + Label + G2 + + + pinNumber + 19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74157.dig b/src/main/dig/74xx/lib/74157.dig new file mode 100644 index 000000000..74bcf1706 --- /dev/null +++ b/src/main/dig/74xx/lib/74157.dig @@ -0,0 +1,394 @@ + + + 1 + + + isDIL + true + + + Description + Quad 2-Line to 1-Line Data Selectors/Multiplexers + + + lockedMode + true + + + + + Multiplexer + + + Bits + 4 + + + + + + In + + + Description + select + + + Label + S + + + pinNumber + 1 + + + + + + Splitter + + + Input Splitting + 1*4 + + + Output Splitting + 4 + + + + + + Splitter + + + Input Splitting + 1*4 + + + Output Splitting + 4 + + + + + + In + + + Label + A1 + + + pinNumber + 2 + + + + + + In + + + Label + A2 + + + pinNumber + 5 + + + + + + In + + + Label + A3 + + + pinNumber + 11 + + + + + + In + + + Label + A4 + + + pinNumber + 14 + + + + + + In + + + Label + B1 + + + pinNumber + 3 + + + + + + In + + + Label + B2 + + + pinNumber + 6 + + + + + + In + + + Label + B3 + + + pinNumber + 10 + + + + + + In + + + Label + B4 + + + pinNumber + 13 + + + + + + In + + + Description + strobe + + + Label + G + + + pinNumber + 15 + + + + + + Splitter + + + Input Splitting + 4 + + + Output Splitting + 1*4 + + + + + + Out + + + Label + Y1 + + + pinNumber + 4 + + + + + + Out + + + Label + Y2 + + + pinNumber + 7 + + + + + + Out + + + Label + Y3 + + + pinNumber + 9 + + + + + + Out + + + Label + Y4 + + + pinNumber + 12 + + + + + + Multiplexer + + + Bits + 4 + + + + + + Ground + + + Bits + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74244.dig b/src/main/dig/74xx/lib/74244.dig new file mode 100644 index 000000000..50792da9f --- /dev/null +++ b/src/main/dig/74xx/lib/74244.dig @@ -0,0 +1,482 @@ + + + 1 + + + isDIL + true + + + Description + Octal 3-STATE Buffer/Line Driver/Line Receiver + + + lockedMode + true + + + + + DriverInvSel + + + + + Out + + + Label + 1Y1 + + + pinNumber + 18 + + + + + + In + + + Label + 1A1 + + + pinNumber + 2 + + + + + + In + + + rotation + + + + Label + 1~G + + + pinNumber + 1 + + + + + + DriverInvSel + + + + + Out + + + Label + 1Y2 + + + pinNumber + 16 + + + + + + In + + + Label + 1A2 + + + pinNumber + 4 + + + + + + DriverInvSel + + + + + Out + + + Label + 1Y3 + + + pinNumber + 14 + + + + + + In + + + Label + 1A3 + + + pinNumber + 6 + + + + + + DriverInvSel + + + + + Out + + + Label + 1Y4 + + + pinNumber + 12 + + + + + + In + + + Label + 1A4 + + + pinNumber + 8 + + + + + + DriverInvSel + + + + + Out + + + Label + 2Y1 + + + pinNumber + 9 + + + + + + In + + + Label + 2A1 + + + pinNumber + 11 + + + + + + In + + + rotation + + + + Label + 2~G + + + pinNumber + 19 + + + + + + DriverInvSel + + + + + Out + + + Label + 2Y2 + + + pinNumber + 7 + + + + + + In + + + Label + 2A2 + + + pinNumber + 13 + + + + + + DriverInvSel + + + + + Out + + + Label + 2Y3 + + + pinNumber + 5 + + + + + + In + + + Label + 2A3 + + + pinNumber + 15 + + + + + + DriverInvSel + + + + + Out + + + Label + 2Y4 + + + pinNumber + 3 + + + + + + In + + + Label + 2A4 + + + pinNumber + 17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74253.dig b/src/main/dig/74xx/lib/74253.dig new file mode 100644 index 000000000..9377da40c --- /dev/null +++ b/src/main/dig/74xx/lib/74253.dig @@ -0,0 +1,374 @@ + + + 1 + + + isDIL + true + + + Description + Dual Tri State 4-Line to 1-Line Data Selectors/Multiplexers + + + lockedMode + true + + + + + Multiplexer + + + Selector Bits + 2 + + + + + + Splitter + + + Input Splitting + 1,1 + + + Output Splitting + 2 + + + + + + In + + + Label + A + + + pinNumber + 14 + + + + + + In + + + Label + B + + + pinNumber + 2 + + + + + + Out + + + Label + 2Y + + + pinNumber + 9 + + + + + + In + + + Description + strobe + + + Label + 2G + + + pinNumber + 15 + + + + + + In + + + Label + 2C0 + + + pinNumber + 10 + + + + + + In + + + Label + 2C1 + + + pinNumber + 11 + + + + + + In + + + Label + 2C2 + + + pinNumber + 12 + + + + + + In + + + Label + 2C3 + + + pinNumber + 13 + + + + + + Multiplexer + + + Selector Bits + 2 + + + + + + Out + + + Label + 1Y + + + pinNumber + 7 + + + + + + In + + + Description + strobe + + + Label + 1G + + + pinNumber + 1 + + + + + + In + + + Label + 1C0 + + + pinNumber + 6 + + + + + + In + + + Label + 1C1 + + + pinNumber + 5 + + + + + + In + + + Label + 1C2 + + + pinNumber + 4 + + + + + + In + + + Label + 1C3 + + + pinNumber + 3 + + + + + + DriverInvSel + + + + + DriverInvSel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 618598680..d6a4e03c7 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -596,7 +596,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS String prefix = JOptionPane.showInputDialog(Lang.get("menu_addPrefix")); if (prefix != null && prefix.length() > 0) { - boolean modified=false; + boolean modified = false; for (Drawable d : circuitComponent.getHighLighted()) { if (d instanceof VisualElement) { VisualElement v = (VisualElement) d; @@ -604,7 +604,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS ElementAttributes attr = v.getElementAttributes(); String l = prefix + attr.getLabel(); attr.set(Keys.LABEL, l); - modified=true; + modified = true; } } } @@ -613,12 +613,51 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS } } }.setToolTip(Lang.get("menu_addPrefix_tt")).createJMenuItem()); + special.add(new ToolTipAction(Lang.get("menu_removePrefix")) { + @Override + public void actionPerformed(ActionEvent actionEvent) { + boolean modified = false; + for (Drawable d : circuitComponent.getHighLighted()) { + if (d instanceof VisualElement) { + VisualElement v = (VisualElement) d; + if (v.equalsDescription(In.DESCRIPTION) || v.equalsDescription(Out.DESCRIPTION)) { + ElementAttributes attr = v.getElementAttributes(); + String l = attr.getLabel(); + if (l.length() > 1) { + attr.set(Keys.LABEL, l.substring(1)); + modified = true; + } + } + } + } + if (modified) + circuitComponent.hasChanged(); + } + }.setToolTip(Lang.get("menu_removePrefix_tt")).createJMenuItem()); special.add(new ToolTipAction(Lang.get("menu_numbering")) { @Override public void actionPerformed(ActionEvent actionEvent) { new NumberingWizard(Main.this, circuitComponent).start(); } }.setToolTip(Lang.get("menu_numbering_tt")).createJMenuItem()); + special.add(new ToolTipAction(Lang.get("menu_removePinNumbers")) { + @Override + public void actionPerformed(ActionEvent actionEvent) { + boolean modified = false; + for (VisualElement v : circuitComponent.getCircuit().getElements()) { + if (v.equalsDescription(In.DESCRIPTION) || v.equalsDescription(Out.DESCRIPTION)) { + ElementAttributes attr = v.getElementAttributes(); + int p = attr.get(Keys.PINNUMBER); + if (p > 0) { + attr.set(Keys.PINNUMBER, 0); + modified = true; + } + } + } + if (modified) + circuitComponent.hasChanged(); + } + }.setToolTip(Lang.get("menu_removePinNumbers_tt")).createJMenuItem()); return special; } diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index f8864e170..9c33e872c 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -775,12 +775,18 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Zeigt am linken Rand des Fensters eine Baumansicht der verfügbaren Bauteile. Sonderfunktionen 74xx - IO-Präfix + IO-Präfix anfügen Alle selektierten Eingänge und Ausgänge mit einem Präfix versehen. Kann verwendet werden um die Bezeichnung der Ein- und Ausgänge nach dem Kopieren anzupassen. Dies vereinfacht die Erzeugung von 74xx Schaltungen. + IO-Präfix entfernen + Das erste Zeichen alle selektierten Eingänge und Ausgänge entfernen. + Kann verwendet werden um die Bezeichnung der Ein- und Ausgänge nach dem Kopieren anzupassen. + Dies vereinfacht die Erzeugung von 74xx Schaltungen. Pinnummerierung Wizard zur einfachen Nummerierung der Pins. + Pin Nummern entfernen. + Alle Pinnummern in der Schaltung werden entfernt. Digital diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 4b0c091fe..a3bdda3dc 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -769,8 +769,13 @@ The names of the variables may not be unique. Add IO-Prefix A prefix is added to all selected inputs and outputs. Is used to simplify the doubling of circuits within a 74xx circuit. + Remove IO-Prefix + The first character from the inputs and outputs labels are removed. + Is used to simplify the doubling of circuits within a 74xx circuit. Pin Numbering Wizard to apply pin numbers to the inputs and outputs. + Remove Pin Numbers + Remove all pin numbers in the circuit Digital diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java index 15e9eae83..fd7b7fb2e 100644 --- a/src/test/java/de/neemann/digital/integration/TestExamples.java +++ b/src/test/java/de/neemann/digital/integration/TestExamples.java @@ -28,7 +28,7 @@ public class TestExamples extends TestCase { */ public void testDistExamples() throws Exception { File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig"); - assertEquals(145, new FileScanner(this::check).scan(examples)); + assertEquals(152, new FileScanner(this::check).scan(examples)); assertEquals(74, testCasesInFiles); }