From 47ef6e876d174b82d75325fb5d97b44478f47864 Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 23 Dec 2016 22:18:06 +0100 Subject: [PATCH] some minor changes to the interruptible processor. --- src/main/dig/processor/IntrExample.dig | 590 ++++++++++++++++++ src/main/dig/processor/ProcessorIntr.dig | 587 ++++++----------- .../digital/integration/TestExamples.java | 2 +- 3 files changed, 791 insertions(+), 388 deletions(-) create mode 100644 src/main/dig/processor/IntrExample.dig diff --git a/src/main/dig/processor/IntrExample.dig b/src/main/dig/processor/IntrExample.dig new file mode 100644 index 000000000..761a9d7bd --- /dev/null +++ b/src/main/dig/processor/IntrExample.dig @@ -0,0 +1,590 @@ + + + 1 + + + Description + Einfacher Prozessor, der an die MIPS-Architektur +angelehnt ist. Es handelt sich um eine Harvard +Single-Cycle CPU. Er verfügt über einen Interrupt +Controller, der gesteuert durch einen Zähler, alle +2048 Zyklen einen Interrupt auslöst, und dabei die +feste Adresse 0x1000 anspringt. +An dieser Adresse muss sich die ISR befinden. + + + + + /home/hneemann/Dokumente/Java/digital/src/main/dig/processor/Terminal.dig + + + + + Tunnel + + + rotation + + + + NetName + ioW + + + + + + Tunnel + + + rotation + + + + NetName + D + + + + + + Tunnel + + + rotation + + + + NetName + A + + + + + + Tunnel + + + rotation + + + + NetName + C + + + + + + /home/hneemann/Dokumente/Java/digital/src/main/dig/processor/GPO.dig + + + rotation + + + + + + + Tunnel + + + rotation + + + + NetName + ioW + + + + + + Tunnel + + + rotation + + + + NetName + D + + + + + + Tunnel + + + rotation + + + + NetName + A + + + + + + Tunnel + + + rotation + + + + NetName + C + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + LED + + + rotation + + + + + + + /home/hneemann/Dokumente/Java/digital/src/main/dig/processor/ProcessorIntr.dig + + + + + Tunnel + + + NetName + D + + + + + + Tunnel + + + NetName + A + + + + + + Tunnel + + + NetName + ioW + + + + + + Tunnel + + + NetName + ioR + + + + + + Clock + + + runRealTime + true + + + Label + C + + + Frequency + 500000 + + + + + + Tunnel + + + rotation + + + + NetName + C + + + + + + Tunnel + + + NetName + C + + + + + + Counter + + + Bits + 11 + + + + + + Tunnel + + + rotation + + + + NetName + C + + + + + + Ground + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Clock + Carry + Zero + Neg + PC + R0 + R1 + R2 + R3 + R4 + R5 + R6 + R7 + R8 + R9 + R10 + R11 + R12 + BP + SP + RA + + \ No newline at end of file diff --git a/src/main/dig/processor/ProcessorIntr.dig b/src/main/dig/processor/ProcessorIntr.dig index 2b4ca85cf..11d703a1c 100644 --- a/src/main/dig/processor/ProcessorIntr.dig +++ b/src/main/dig/processor/ProcessorIntr.dig @@ -7,9 +7,9 @@ Einfacher Prozessor, der an die MIPS-Architektur angelehnt ist. Es handelt sich um eine Harvard Single-Cycle CPU. Er verfügt über einen Interrupt -Controller, der gesteuert durch einen Zähler, alle -2048 Zyklen einen Interrupt auslöst, und dabei die -feste Adresse 0x1000 anspringt. +Controller: Eine steigende Flanke am Eingang intr +wird ein Interrupt ausgelöst. Dabei wird die feste +Adresse 0x1000 angesprungen. An dieser Adresse muss sich die ISR befinden. @@ -17,7 +17,7 @@ An dieser Adresse muss sich die ISR befinden. Register.dig - + Multiplexer @@ -306,7 +306,7 @@ An dieser Adresse muss sich die ISR befinden. 500000 - + Driver @@ -576,7 +576,7 @@ An dieser Adresse muss sich die ISR befinden. WE - + Tunnel @@ -724,7 +724,7 @@ An dieser Adresse muss sich die ISR befinden. C - + Tunnel @@ -766,7 +766,7 @@ An dieser Adresse muss sich die ISR befinden. C - + Tunnel @@ -926,20 +926,6 @@ An dieser Adresse muss sich die ISR befinden. - - Tunnel - - - rotation - - - - NetName - D - - - - Tunnel @@ -960,247 +946,6 @@ An dieser Adresse muss sich die ISR befinden. - - /home/hneemann/Dokumente/Java/digital/src/main/dig/processor/Terminal.dig - - - - - Tunnel - - - rotation - - - - NetName - ioW - - - - - - Tunnel - - - rotation - - - - NetName - D - - - - - - Tunnel - - - rotation - - - - NetName - A - - - - - - Tunnel - - - rotation - - - - NetName - C - - - - - - /home/hneemann/Dokumente/Java/digital/src/main/dig/processor/GPO.dig - - - - - Tunnel - - - rotation - - - - NetName - ioW - - - - - - Tunnel - - - rotation - - - - NetName - D - - - - - - Tunnel - - - rotation - - - - NetName - A - - - - - - Tunnel - - - rotation - - - - NetName - C - - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - LED - - - - - Counter - - - Bits - 11 - - - - - - Tunnel - - - rotation - - - - NetName - C - - - - - - Ground - - - - - Tunnel - - - NetName - A - - - - Tunnel @@ -1283,72 +1028,168 @@ An dieser Adresse muss sich die ISR befinden. + + Out + + + Description + Adressbus + + + Label + A + + + Bits + 16 + + + + + + Out + + + Description + Datenbus + + + Label + D + + + Bits + 16 + + + + + + Out + + + Description + io Read + + + Label + ioR + + + + + + Tunnel + + + rotation + + + + NetName + ioW + + + + + + Tunnel + + + rotation + + + + NetName + ioR + + + + + + Out + + + Description + io Write + + + Label + ioW + + + + + + In + + + Description + Interrupt Eingang. Geht diese Leitung auf high wird ein +Interrupt ausgelöst. Die ISR muss sich an Adresse +0x1000 befinden. + + + Label + intr + + + + + + Tunnel + + + rotation + + + + NetName + D + + + + + + Tunnel + + + NetName + A + + + + + + Tunnel + + + rotation + + + + NetName + D + + + + + + Tunnel + + + rotation + + + + NetName + A + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1366,8 +1207,8 @@ An dieser Adresse muss sich die ISR befinden. - - + + @@ -1377,6 +1218,10 @@ An dieser Adresse muss sich die ISR befinden. + + + + @@ -1406,8 +1251,8 @@ An dieser Adresse muss sich die ISR befinden. - - + + @@ -1442,7 +1287,7 @@ An dieser Adresse muss sich die ISR befinden. - + @@ -1450,8 +1295,8 @@ An dieser Adresse muss sich die ISR befinden. - - + + @@ -1494,29 +1339,25 @@ An dieser Adresse muss sich die ISR befinden. - - + + - - - - - - + + - - - - + + + + @@ -1525,10 +1366,6 @@ An dieser Adresse muss sich die ISR befinden. - - - - @@ -1587,7 +1424,7 @@ An dieser Adresse muss sich die ISR befinden. - + @@ -1597,6 +1434,10 @@ An dieser Adresse muss sich die ISR befinden. + + + + @@ -1609,18 +1450,6 @@ An dieser Adresse muss sich die ISR befinden. - - - - - - - - - - - - @@ -1630,13 +1459,9 @@ An dieser Adresse muss sich die ISR befinden. - + - - - - @@ -1687,16 +1512,12 @@ An dieser Adresse muss sich die ISR befinden. - + - - - - @@ -1714,7 +1535,7 @@ An dieser Adresse muss sich die ISR befinden. - + @@ -1731,11 +1552,7 @@ An dieser Adresse muss sich die ISR befinden. - - - - - + @@ -1801,10 +1618,6 @@ An dieser Adresse muss sich die ISR befinden. - - - - @@ -1889,6 +1702,10 @@ An dieser Adresse muss sich die ISR befinden. + + + + @@ -1905,10 +1722,6 @@ An dieser Adresse muss sich die ISR befinden. - - - - diff --git a/src/test/java/de/neemann/digital/integration/TestExamples.java b/src/test/java/de/neemann/digital/integration/TestExamples.java index 06ac9c56c..8b5ffd0d0 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(93, new FileScanner(this::check).scan(examples)); + assertEquals(94, new FileScanner(this::check).scan(examples)); assertEquals(43, testCasesInFiles); }