From 7ccc0645da19271365ea51919165a40b4434ac91 Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 1 Sep 2017 20:16:31 +0200 Subject: [PATCH] added 7480, fixed errors in 74163 and 74238 --- src/main/dig/lib/74xx/arithmetic/7480.dig | 531 ++++++++++++++++++ src/main/dig/lib/74xx/counter/74163.dig | 184 +++--- src/main/dig/lib/74xx/plexers/74238.dig | 71 ++- .../digital/draw/model/ModelCreator.java | 4 +- .../digital/integration/TestExamples.java | 4 +- 5 files changed, 683 insertions(+), 111 deletions(-) create mode 100644 src/main/dig/lib/74xx/arithmetic/7480.dig diff --git a/src/main/dig/lib/74xx/arithmetic/7480.dig b/src/main/dig/lib/74xx/arithmetic/7480.dig new file mode 100644 index 000000000..f18644bcc --- /dev/null +++ b/src/main/dig/lib/74xx/arithmetic/7480.dig @@ -0,0 +1,531 @@ + + + 1 + + + isDIL + true + + + Description + Gated Full Adder with Complementary Inputs +and Complementary Sum Outputs + + + lockedMode + true + + + + + Or + + + inverterConfig + + In_2 + In_3 + + + + Inputs + 3 + + + + + + And + + + + + In + + + Label + A1 + + + pinNumber + 8 + + + + + + In + + + Label + A2 + + + pinNumber + 9 + + + + + + In + + + Label + AC + + + pinNumber + 11 + + + + + + In + + + Label + A* + + + pinNumber + 10 + + + + + + Or + + + inverterConfig + + In_2 + In_3 + + + + Inputs + 3 + + + + + + And + + + + + In + + + Label + B1 + + + pinNumber + 12 + + + + + + In + + + Label + B2 + + + pinNumber + 13 + + + + + + In + + + Label + BC + + + pinNumber + 2 + + + + + + In + + + Label + B* + + + pinNumber + 1 + + + + + + XOr + + + + + And + + + + + And + + + + + XOr + + + + + In + + + Description + Übertragsbit der Vorgängerschaltung. + + + Label + Cn + + + pinNumber + 3 + + + + + + Out + + + Description + Übertragsbit + + + Label + ~Cn+1 + + + pinNumber + 4 + + + + + + Out + + + Description + Summe + + + Label + S + + + pinNumber + 6 + + + + + + Out + + + Description + Summe + + + Label + ~S + + + pinNumber + 5 + + + + + + Not + + + + + PowerSupply + + + + + In + + + Label + VCC + + + pinNumber + 14 + + + InDefault + + + + + + + In + + + Label + GND + + + pinNumber + 7 + + + + + + Testcase + + + Testdata + + B* A* Cn AC BC ~Cn+1 S ~S +1 1 0 1 1 1 0 1 +1 1 0 1 0 1 1 0 +1 1 0 0 1 1 1 0 +1 1 0 0 0 0 0 1 +1 1 1 1 1 1 1 0 +1 1 1 1 0 0 0 1 +1 1 1 0 1 0 0 1 +1 1 1 0 0 0 1 0 + + + + + + + + NOr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/dig/lib/74xx/counter/74163.dig b/src/main/dig/lib/74xx/counter/74163.dig index bcccb8930..ac3486939 100644 --- a/src/main/dig/lib/74xx/counter/74163.dig +++ b/src/main/dig/lib/74xx/counter/74163.dig @@ -60,11 +60,11 @@ Label - ~LD + ~PE pinNumber - 9 + 9 Default @@ -92,11 +92,11 @@ Label - ~CLR + ~SR pinNumber - 1 + 1 Default @@ -114,11 +114,11 @@ Label - CLK + CP pinNumber - 2 + 2 @@ -128,11 +128,11 @@ Label - RCO + TC pinNumber - 15 + 15 @@ -147,11 +147,11 @@ Label - ENT + CET pinNumber - 10 + 10 @@ -161,11 +161,11 @@ Label - ENP + CEP pinNumber - 7 + 7 @@ -214,14 +214,14 @@ Label - A + P0 pinNumber - 3 + 3 - + Splitter @@ -235,49 +235,49 @@ 4 - + In Label - B + P1 pinNumber - 4 + 4 - + In Label - C + P2 pinNumber - 5 + 5 - + In Label - D + P3 pinNumber - 6 + 6 - + Splitter @@ -298,11 +298,11 @@ Label - QA + Q0 pinNumber - 14 + 14 @@ -312,11 +312,11 @@ Label - QB + Q1 pinNumber - 13 + 13 @@ -326,11 +326,11 @@ Label - QC + Q2 pinNumber - 12 + 12 @@ -340,19 +340,39 @@ Label - QD + Q3 pinNumber - 11 + 11 + + Testcase + + + Testdata + + ~SR ~PE CP CET CEP P0 P1 P2 P3 Q0 Q1 Q2 Q3 + +# load +loop(i,4) +loop(n,16) +1 0 C bits(2,i) bits(4,n) bits(4,n) +end loop +end loop + + + + + + PowerSupply - + In @@ -363,14 +383,14 @@ pinNumber - 16 + 16 InDefault - + In @@ -381,17 +401,13 @@ pinNumber - 8 + 8 - + - - - - @@ -400,17 +416,17 @@ - - - - - - + + + + + + @@ -422,10 +438,6 @@ - - - - @@ -436,17 +448,25 @@ - - - - - - + + + + + + + + + + + + + + @@ -456,10 +476,6 @@ - - - - @@ -478,7 +494,7 @@ - + @@ -486,16 +502,16 @@ - + + + + + - - - - @@ -505,8 +521,8 @@ - - + + @@ -524,30 +540,30 @@ - - - - - - + + - - + + + + + + @@ -558,23 +574,23 @@ - + + + + + - + - - - - \ No newline at end of file diff --git a/src/main/dig/lib/74xx/plexers/74238.dig b/src/main/dig/lib/74xx/plexers/74238.dig index 3d7c97a1e..76677be99 100644 --- a/src/main/dig/lib/74xx/plexers/74238.dig +++ b/src/main/dig/lib/74xx/plexers/74238.dig @@ -49,7 +49,7 @@ pinNumber - 1 + 1 @@ -63,7 +63,7 @@ pinNumber - 3 + 3 @@ -77,7 +77,7 @@ pinNumber - 2 + 2 @@ -101,7 +101,7 @@ pinNumber - 6 + 6 @@ -120,7 +120,7 @@ pinNumber - 5 + 5 @@ -139,7 +139,7 @@ pinNumber - 4 + 4 @@ -149,11 +149,11 @@ Label - ~Y0 + Y0 pinNumber - 15 + 15 @@ -163,11 +163,11 @@ Label - ~Y1 + Y1 pinNumber - 14 + 14 @@ -177,11 +177,11 @@ Label - ~Y2 + Y2 pinNumber - 13 + 13 @@ -191,11 +191,11 @@ Label - ~Y3 + Y3 pinNumber - 12 + 12 @@ -205,11 +205,11 @@ Label - ~Y4 + Y4 pinNumber - 11 + 11 @@ -219,11 +219,11 @@ Label - ~Y5 + Y5 pinNumber - 10 + 10 @@ -233,11 +233,11 @@ Label - ~Y6 + Y6 pinNumber - 9 + 9 @@ -247,11 +247,11 @@ Label - ~Y7 + Y7 pinNumber - 7 + 7 @@ -270,7 +270,7 @@ pinNumber - 16 + 16 InDefault @@ -288,11 +288,34 @@ pinNumber - 8 + 8 + + Testcase + + + Testdata + + ~GA ~GB G A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 +1 X X X X X 0 0 0 0 0 0 0 0 +X 1 X X X X 0 0 0 0 0 0 0 0 +X X 0 X X X 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 0 0 0 0 0 0 0 +0 0 1 1 0 0 0 1 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 1 0 0 0 0 0 +0 0 1 1 1 0 0 0 0 1 0 0 0 0 +0 0 1 0 0 1 0 0 0 0 1 0 0 0 +0 0 1 1 0 1 0 0 0 0 0 1 0 0 +0 0 1 0 1 1 0 0 0 0 0 0 1 0 +0 0 1 1 1 1 0 0 0 0 0 0 0 1 + + + + + diff --git a/src/main/java/de/neemann/digital/draw/model/ModelCreator.java b/src/main/java/de/neemann/digital/draw/model/ModelCreator.java index e62eeceef..5860acd58 100644 --- a/src/main/java/de/neemann/digital/draw/model/ModelCreator.java +++ b/src/main/java/de/neemann/digital/draw/model/ModelCreator.java @@ -94,7 +94,9 @@ public class ModelCreator implements Iterable { Pins pins = ve.getPins(); ElementTypeDescription elementType = library.getElementType(ve.getElementName()); ElementAttributes attr = ve.getElementAttributes(); - if (attr.getCleanLabel().contains("*")) { + if (attr.getCleanLabel().contains("*") + && !ve.equalsDescription(In.DESCRIPTION) + && !ve.equalsDescription(Out.DESCRIPTION)) { attr = new ElementAttributes(attr); attr.set(Keys.LABEL, attr.getCleanLabel().replace("*", subName)); } diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java index d70a95815..aa89cb755 100644 --- a/src/test/java/de/neemann/digital/integration/TestExamples.java +++ b/src/test/java/de/neemann/digital/integration/TestExamples.java @@ -29,8 +29,8 @@ public class TestExamples extends TestCase { */ public void testDistExamples() throws Exception { File examples = new File(Resources.getRoot().getParentFile().getParentFile(), "/main/dig"); - assertEquals(200, new FileScanner(this::check).scan(examples)); - assertEquals(102, testCasesInFiles); + assertEquals(201, new FileScanner(this::check).scan(examples)); + assertEquals(105, testCasesInFiles); } /**