From b9c5f6fd350eb6b333dfe591a9677d7de7abb13d Mon Sep 17 00:00:00 2001 From: hneemann Date: Sun, 20 Mar 2016 15:35:14 +0100 Subject: [PATCH] first version of a splitter --- .../de/neemann/digital/core/wiring/Bus.java | 42 ---------------- .../neemann/digital/core/wiring/Splitter.java | 4 +- .../neemann/digital/core/wiring/BusTest.java | 50 ------------------- 3 files changed, 2 insertions(+), 94 deletions(-) delete mode 100644 src/main/java/de/neemann/digital/core/wiring/Bus.java delete mode 100644 src/test/java/de/neemann/digital/core/wiring/BusTest.java diff --git a/src/main/java/de/neemann/digital/core/wiring/Bus.java b/src/main/java/de/neemann/digital/core/wiring/Bus.java deleted file mode 100644 index 6ecf1a82c..000000000 --- a/src/main/java/de/neemann/digital/core/wiring/Bus.java +++ /dev/null @@ -1,42 +0,0 @@ -package de.neemann.digital.core.wiring; - -import de.neemann.digital.core.BurnException; -import de.neemann.digital.core.NodeException; -import de.neemann.digital.core.ObservableValue; -import de.neemann.digital.core.Value; -import de.neemann.digital.core.basic.FanIn; - -/** - * @author hneemann - */ -public class Bus extends FanIn { - - private Value value; - - public Bus(int bits) { - super(bits); - value = new Value(bits); - } - - @Override - public void readInputs() throws NodeException { - ObservableValue found = null; - for (ObservableValue in : inputs) { - if (!in.isHighZ()) { - if (found != null) - throw new BurnException(in, found); - found = in; - } - } - if (found == null) { - value.set(0, true); - } else { - value.set(found.getValue(), false); - } - } - - @Override - public void writeOutputs() throws NodeException { - output.set(value); - } -} diff --git a/src/main/java/de/neemann/digital/core/wiring/Splitter.java b/src/main/java/de/neemann/digital/core/wiring/Splitter.java index 46569e4c9..55a419aa6 100644 --- a/src/main/java/de/neemann/digital/core/wiring/Splitter.java +++ b/src/main/java/de/neemann/digital/core/wiring/Splitter.java @@ -59,7 +59,7 @@ public class Splitter implements Element { } private Observer createObserverForInput(int i) throws NodeException { - Observer observer = outPorts.getSimpleTargetObserver(inPorts.getPort(i), inputs, outputs); + Observer observer = outPorts.getSingleTargetObserver(inPorts.getPort(i), inputs, outputs); if (observer == null) throw new NodeException("splitterMismatchError"); return observer; @@ -126,7 +126,7 @@ public class Splitter implements Element { * @param inputs * @param outputs */ - public Observer getSimpleTargetObserver(Port inPort, ObservableValue[] inputs, ObservableValue[] outputs) { + public Observer getSingleTargetObserver(Port inPort, ObservableValue[] inputs, ObservableValue[] outputs) { int pos = inPort.getPos(); int bits = inPort.getBits(); diff --git a/src/test/java/de/neemann/digital/core/wiring/BusTest.java b/src/test/java/de/neemann/digital/core/wiring/BusTest.java deleted file mode 100644 index 880bd3196..000000000 --- a/src/test/java/de/neemann/digital/core/wiring/BusTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.neemann.digital.core.wiring; - -import de.neemann.digital.TestExecuter; -import de.neemann.digital.core.BurnException; -import de.neemann.digital.core.Model; -import de.neemann.digital.core.ObservableValue; -import de.neemann.digital.core.basic.FanIn; -import junit.framework.TestCase; - -/** - * @author hneemann - */ -public class BusTest extends TestCase { - - public void testBus() throws Exception { - Model model = new Model(); - ObservableValue a = new ObservableValue("a", 1, true); - ObservableValue b = new ObservableValue("b", 1); - FanIn out = model.add(new Bus(1)); - out.setInputs(a, b); - - - TestExecuter te = new TestExecuter(model).setInputs(a, b).setOutputs(out.getOutputs()); - te.check(0, 0, 0); - te.check(0, 1, 1); - a.setHighZ(false); - b.setHighZ(true); - te.check(0, 1, 0); - te.check(1, 0, 1); - a.setHighZ(false); - b.setHighZ(false); - try { - te.check(0, 0, 0); - assertTrue(false); - } catch (BurnException e) { - assertTrue(true); - } - } - - public void testBusHighZ() throws Exception { - Model model = new Model(); - ObservableValue a = new ObservableValue("a", 1, true); - ObservableValue b = new ObservableValue("b", 1, true); - FanIn out = model.add(new Bus(1)); - out.setInputs(a, b); - - TestExecuter te = new TestExecuter(model).setInputs(a, b).setOutputs(out.getOutputs()); - assertTrue(out.getOutput().isHighZ()); - } -} \ No newline at end of file