From acdb37945dfa6f22f2377a96725c2dde0057b2d9 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 13 May 2017 12:39:42 +0200 Subject: [PATCH] added some 74xx circuits --- src/main/dig/74xx/lib/74133.dig | 284 ++++ src/main/dig/74xx/lib/74260.dig | 254 ++++ src/main/dig/74xx/lib/7451.dig | 322 +++++ src/main/dig/74xx/lib/7474.dig | 806 +++++++++++ src/main/dig/74xx/lib/7476.dig | 772 +++++++++++ src/main/dig/74xx/lib/7483.dig | 1194 +++++++++++++++++ src/main/dig/74xx/lib/7486.dig | 258 ++++ src/main/dig/74xx/trafic.dig | 267 ++++ .../digital/integration/TestExamples.java | 4 +- 9 files changed, 4159 insertions(+), 2 deletions(-) create mode 100644 src/main/dig/74xx/lib/74133.dig create mode 100644 src/main/dig/74xx/lib/74260.dig create mode 100644 src/main/dig/74xx/lib/7451.dig create mode 100644 src/main/dig/74xx/lib/7474.dig create mode 100644 src/main/dig/74xx/lib/7476.dig create mode 100644 src/main/dig/74xx/lib/7483.dig create mode 100644 src/main/dig/74xx/lib/7486.dig create mode 100644 src/main/dig/74xx/trafic.dig diff --git a/src/main/dig/74xx/lib/74133.dig b/src/main/dig/74xx/lib/74133.dig new file mode 100644 index 000000000..0a938cb40 --- /dev/null +++ b/src/main/dig/74xx/lib/74133.dig @@ -0,0 +1,284 @@ + + + 1 + + + isDIL + true + + + Description + 13-input NAND + + + lockedMode + true + + + + + NAnd + + + Inputs + 13 + + + + + + Out + + + Label + Y + + + pinNumber + 9 + + + + + + In + + + Label + A + + + pinNumber + 1 + + + + + + In + + + Label + B + + + pinNumber + 2 + + + + + + In + + + Label + C + + + pinNumber + 3 + + + + + + In + + + Label + D + + + pinNumber + 4 + + + + + + In + + + Label + E + + + pinNumber + 5 + + + + + + In + + + Label + F + + + pinNumber + 6 + + + + + + In + + + Label + G + + + pinNumber + 7 + + + + + + In + + + Label + H + + + pinNumber + 10 + + + + + + In + + + Label + I + + + pinNumber + 11 + + + + + + In + + + Label + J + + + pinNumber + 12 + + + + + + In + + + Label + K + + + pinNumber + 13 + + + + + + In + + + Label + L + + + pinNumber + 14 + + + + + + In + + + Label + M + + + pinNumber + 15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/74260.dig b/src/main/dig/74xx/lib/74260.dig new file mode 100644 index 000000000..5de240591 --- /dev/null +++ b/src/main/dig/74xx/lib/74260.dig @@ -0,0 +1,254 @@ + + + 1 + + + isDIL + true + + + Description + DUAL 5-INPUT NOR GATE + + + + + NOr + + + Inputs + 5 + + + + + + In + + + Label + 1A + + + pinNumber + 1 + + + + + + In + + + Label + 1B + + + pinNumber + 2 + + + + + + In + + + Label + 1C + + + pinNumber + 3 + + + + + + In + + + Label + 1D + + + pinNumber + 12 + + + + + + In + + + Label + 1E + + + pinNumber + 13 + + + + + + Out + + + Label + 1Y + + + pinNumber + 5 + + + + + + NOr + + + Inputs + 5 + + + + + + In + + + Label + 2A + + + pinNumber + 4 + + + + + + In + + + Label + 2B + + + pinNumber + 11 + + + + + + In + + + Label + 2C + + + pinNumber + 10 + + + + + + In + + + Label + 2D + + + pinNumber + 9 + + + + + + In + + + Label + 2E + + + pinNumber + 8 + + + + + + Out + + + Label + 2Y + + + pinNumber + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/7451.dig b/src/main/dig/74xx/lib/7451.dig new file mode 100644 index 000000000..8234f5d40 --- /dev/null +++ b/src/main/dig/74xx/lib/7451.dig @@ -0,0 +1,322 @@ + + + 1 + + + isDIL + true + + + Description + 2-Input/3-Input And-Or invert Gate + + + + + Or + + + Inputs + 3 + + + + + + Or + + + Inputs + 3 + + + + + + NAnd + + + + + Out + + + Label + 1Q + + + pinNumber + 8 + + + + + + In + + + Label + 1A + + + pinNumber + 1 + + + + + + In + + + Label + 1C + + + pinNumber + 12 + + + + + + In + + + Label + 1D + + + pinNumber + 11 + + + + + + In + + + Label + 1F + + + pinNumber + 9 + + + + + + In + + + Label + 1B + + + pinNumber + 13 + + + + + + In + + + Label + 1E + + + pinNumber + 10 + + + + + + Or + + + + + Or + + + + + NAnd + + + + + Out + + + Label + 2Q + + + pinNumber + 6 + + + + + + In + + + Label + 2A + + + pinNumber + 2 + + + + + + In + + + Label + 2B + + + pinNumber + 3 + + + + + + In + + + Label + 2C + + + pinNumber + 4 + + + + + + In + + + Label + 2D + + + pinNumber + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/7474.dig b/src/main/dig/74xx/lib/7474.dig new file mode 100644 index 000000000..183804de1 --- /dev/null +++ b/src/main/dig/74xx/lib/7474.dig @@ -0,0 +1,806 @@ + + + 1 + + + isDIL + true + + + Description + Dual D flip-flop + + + lockedMode + true + + + + + NAnd + + + Inputs + 3 + + + + + + NAnd + + + Inputs + 3 + + + + + + Out + + + Label + 1Q + + + pinNumber + 5 + + + + + + Out + + + Label + 1~Q + + + pinNumber + 6 + + + + + + NAnd + + + Inputs + 3 + + + + + + NAnd + + + Inputs + 3 + + + + + + In + + + Label + 1~SD + + + pinNumber + 4 + + + Default + 1 + + + + + + NAnd + + + Inputs + 3 + + + + + + NAnd + + + Inputs + 3 + + + + + + In + + + Label + 1D + + + pinNumber + 2 + + + + + + In + + + Label + 1CP + + + pinNumber + 3 + + + + + + In + + + Label + 1~RD + + + pinNumber + 1 + + + Default + 1 + + + + + + NAnd + + + Inputs + 3 + + + + + + NAnd + + + Inputs + 3 + + + + + + Out + + + Label + 2Q + + + pinNumber + 9 + + + + + + Out + + + Label + 2~Q + + + pinNumber + 8 + + + + + + NAnd + + + Inputs + 3 + + + + + + NAnd + + + Inputs + 3 + + + + + + In + + + Label + 2~SD + + + pinNumber + 10 + + + Default + 1 + + + + + + NAnd + + + Inputs + 3 + + + + + + NAnd + + + Inputs + 3 + + + + + + In + + + Label + 2D + + + pinNumber + 12 + + + + + + In + + + Label + 2CP + + + pinNumber + 11 + + + + + + In + + + Label + 2~RD + + + pinNumber + 13 + + + Default + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/7476.dig b/src/main/dig/74xx/lib/7476.dig new file mode 100644 index 000000000..b60f6dd30 --- /dev/null +++ b/src/main/dig/74xx/lib/7476.dig @@ -0,0 +1,772 @@ + + + 1 + + + isDIL + true + + + Description + DUAL J-K FLIP-FLOPS WITH PRESET AND CLEAR + + + lockedMode + true + + + + + And + + + + + Not + + + + + And + + + Inputs + 3 + + + + + + And + + + Inputs + 3 + + + + + + NOr + + + Inputs + 3 + + + + + + NOr + + + Inputs + 3 + + + + + + In + + + Description + Set + + + Label + 1J + + + pinNumber + 4 + + + Default + 1 + + + + + + Out + + + Label + 1Q + + + pinNumber + 15 + + + + + + Out + + + Label + 1~Q + + + pinNumber + 14 + + + + + + Delay + + + + + In + + + Description + Clock + + + Label + 1CLK + + + pinNumber + 1 + + + + + + In + + + Description + Kill + + + Label + 1K + + + pinNumber + 16 + + + Default + 1 + + + + + + In + + + Description + not clear + + + Label + 1~C + + + pinNumber + 3 + + + Default + 1 + + + + + + Not + + + + + In + + + Description + not set + + + Label + 1~S + + + pinNumber + 2 + + + Default + 1 + + + + + + Not + + + + + And + + + + + Not + + + + + And + + + Inputs + 3 + + + + + + And + + + Inputs + 3 + + + + + + NOr + + + Inputs + 3 + + + + + + NOr + + + Inputs + 3 + + + + + + In + + + Description + Set + + + Label + 2J + + + pinNumber + 9 + + + Default + 1 + + + + + + Out + + + Label + 2Q + + + pinNumber + 11 + + + + + + Out + + + Label + 2~Q + + + pinNumber + 10 + + + + + + Delay + + + + + In + + + Description + Clock + + + Label + 2CLK + + + pinNumber + 6 + + + + + + In + + + Description + Kill + + + Label + 2K + + + pinNumber + 12 + + + Default + 1 + + + + + + In + + + Description + not clear + + + Label + 2~C + + + pinNumber + 8 + + + Default + 1 + + + + + + Not + + + + + In + + + Description + not set + + + Label + 2~S + + + pinNumber + 7 + + + Default + 1 + + + + + + Not + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/7483.dig b/src/main/dig/74xx/lib/7483.dig new file mode 100644 index 000000000..a7354a6fb --- /dev/null +++ b/src/main/dig/74xx/lib/7483.dig @@ -0,0 +1,1194 @@ + + + 1 + + + isDIL + true + + + Description + 4-bit binary full adder + + + lockedMode + true + + + + + In + + + Description + Der Übetrag vom Addierer welcher die +niederwertigeren Bits addiert. Werden die +niederwertigsten Bits addiert, ist dieser Eingang +Null. + + + Label + C0 + + + pinNumber + 13 + + + + + + In + + + Description + Das 0. Bit des ersten zu addierenden Wertes. + + + Label + B1 + + + pinNumber + 11 + + + Default + 1 + + + + + + Or + + + + + And + + + + + XOr + + + + + XOr + + + + + In + + + Description + Das 1. Bit des ersten zu addierenden Wertes. + + + Label + B2 + + + pinNumber + 7 + + + + + + Out + + + Description + Das 0. Bit der Summe. + + + Label + S1 + + + pinNumber + 9 + + + + + + In + + + Description + Das 2. Bit des ersten zu addierenden Wertes. + + + Label + B3 + + + pinNumber + 4 + + + + + + In + + + Description + Das 3. Bit des ersten zu addierenden Wertes. + + + Label + B4 + + + pinNumber + 16 + + + Default + 1 + + + + + + Or + + + + + And + + + + + And + + + + + Or + + + + + XOr + + + + + XOr + + + + + Out + + + Description + Das 1. Bit der Summe. + + + Label + S2 + + + pinNumber + 6 + + + + + + And + + + + + And + + + Inputs + 3 + + + + + + Or + + + Inputs + 3 + + + + + + XOr + + + + + Out + + + Description + Das 2. Bit der Summe. + + + Label + S3 + + + pinNumber + 2 + + + + + + In + + + Description + Das 0. Bit des zweiten zu addierenden Wertes. + + + Label + A1 + + + pinNumber + 10 + + + + + + In + + + Description + Das 1. Bit des zweiten zu addierenden Wertes. + + + Label + A2 + + + pinNumber + 8 + + + Default + 1 + + + + + + Or + + + + + And + + + + + XOr + + + + + And + + + + + And + + + Inputs + 3 + + + + + + And + + + Inputs + 4 + + + + + + Or + + + Inputs + 4 + + + + + + In + + + Description + Das 2. Bit des zweiten zu addierenden Wertes. + + + Label + A3 + + + pinNumber + 3 + + + Default + 1 + + + + + + In + + + Description + Das 3. Bit des zweiten zu addierenden Wertes. + + + Label + A4 + + + pinNumber + 1 + + + + + + Or + + + + + And + + + + + XOr + + + + + XOr + + + + + Out + + + Description + Das 3. Bit der Summe. + + + Label + S4 + + + pinNumber + 15 + + + + + + And + + + + + Or + + + Inputs + 5 + + + + + + Out + + + Description + Das Übertragsbit, welches an den Adiierer für die +nächst höherwertigen Bits weitergegeben wird. + + + Label + C4 + + + pinNumber + 14 + + + + + + And + + + Inputs + 3 + + + + + + And + + + Inputs + 4 + + + + + + And + + + Inputs + 5 + + + + + + Testcase + + + Testdata + + # A complete test of all 512 possible additions +# +# A line that begins with "repeat([i])" is repeated [i] times. +# In this case 256 times. Then the variable n goes from 0 to 255. +# So the values for the inputs are calculated depending on n. +# The function "bits([m],[v])" takes the lowest m bits from the value v. +# The expression "bits(4,n>>4)" takes the lowest 4 bits of the value +# n>>4. Then the resulting bits are used for the inputs A_3 to A_0. +# All created test vectors are shown in the result table. + + C0 A4 A3 A2 A1 B4 B3 B2 B1 C4 S4 S3 S2 S1 +repeat(256) 0 bits(4,n>>4) bits(4,n) bits(5,(n>>4)+(n&15)) +repeat(256) 1 bits(4,n>>4) bits(4,n) bits(5,(n>>4)+(n&15)+1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/lib/7486.dig b/src/main/dig/74xx/lib/7486.dig new file mode 100644 index 000000000..cf1a40067 --- /dev/null +++ b/src/main/dig/74xx/lib/7486.dig @@ -0,0 +1,258 @@ + + + 1 + + + isDIL + true + + + Description + quad 2-input XOR gate + + + lockedMode + true + + + + + In + + + Label + 1A + + + pinNumber + 1 + + + + + + In + + + Label + 1B + + + pinNumber + 2 + + + + + + Out + + + Label + 1Y + + + pinNumber + 3 + + + + + + In + + + Label + 2A + + + pinNumber + 4 + + + + + + In + + + Label + 2B + + + pinNumber + 5 + + + + + + Out + + + Label + 2Y + + + pinNumber + 6 + + + + + + In + + + Label + 3B + + + pinNumber + 10 + + + + + + In + + + Label + 3A + + + pinNumber + 9 + + + + + + Out + + + Label + 3Y + + + pinNumber + 8 + + + + + + In + + + Label + 4A + + + pinNumber + 12 + + + + + + In + + + Label + 4B + + + pinNumber + 13 + + + + + + Out + + + Label + 4Y + + + pinNumber + 11 + + + + + + XOr + + + + + XOr + + + + + XOr + + + + + XOr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/74xx/trafic.dig b/src/main/dig/74xx/trafic.dig new file mode 100644 index 000000000..c4273633e --- /dev/null +++ b/src/main/dig/74xx/trafic.dig @@ -0,0 +1,267 @@ + + + 1 + + + + 7476.dig + + + + + VDD + + + + + VDD + + + + + Clock + + + runRealTime + true + + + + + + LED + + + + + LED + + + Color + + 255 + 255 + 51 + 255 + + + + + + + 7400.dig + + + + + LED + + + Color + + 0 + 255 + 51 + 255 + + + + + + + Ground + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java index e6d2e60cd..bf97e0dd8 100644 --- a/src/test/java/de/neemann/digital/integration/TestExamples.java +++ b/src/test/java/de/neemann/digital/integration/TestExamples.java @@ -28,8 +28,8 @@ public class TestExamples extends TestCase { */ public void testDistExamples() throws Exception { File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig"); - assertEquals(129, new FileScanner(this::check).scan(examples)); - assertEquals(73, testCasesInFiles); + assertEquals(137, new FileScanner(this::check).scan(examples)); + assertEquals(74, testCasesInFiles); } /**