Search in sources :

Example 66 with ElementAttributes

use of de.neemann.digital.core.element.ElementAttributes in project Digital by hneemann.

the class Splitter2Test method testMix.

public void testMix() throws Exception {
    ObservableValue a = new ObservableValue("a", 8);
    ObservableValue b = new ObservableValue("b", 8);
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "8,8").set(Keys.OUTPUT_SPLIT, "4,4,4,4"));
    splitter.setInputs(ovs(a, b));
    assertEquals(2, a.observerCount());
    assertEquals(2, b.observerCount());
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(4, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a, b).setOutputsOf(splitter);
    sc.check(0x00, 0x00, 0x0, 0x0, 0x0, 0x0);
    sc.check(0x10, 0x00, 0x0, 0x1, 0x0, 0x0);
    sc.check(0x01, 0x00, 0x1, 0x0, 0x0, 0x0);
    sc.check(0x00, 0x10, 0x0, 0x0, 0x0, 0x1);
    sc.check(0x00, 0x01, 0x0, 0x0, 0x1, 0x0);
    sc.check(0xf0, 0x00, 0x0, 0xf, 0x0, 0x0);
    sc.check(0x0f, 0x00, 0xf, 0x0, 0x0, 0x0);
    sc.check(0x00, 0xf0, 0x0, 0x0, 0x0, 0xf);
    sc.check(0x00, 0x0f, 0x0, 0x0, 0xf, 0x0);
    sc.check(0xff, 0xff, 0xf, 0xf, 0xf, 0xf);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 67 with ElementAttributes

use of de.neemann.digital.core.element.ElementAttributes in project Digital by hneemann.

the class Splitter64BitTest method test64Bit.

public void test64Bit() throws NodeException, PinException {
    ObservableValue a = new ObservableValue("a", 16);
    ObservableValue b = new ObservableValue("b", 16);
    ObservableValue c = new ObservableValue("c", 16);
    ObservableValue d = new ObservableValue("d", 16);
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "16,16,16,16").set(Keys.OUTPUT_SPLIT, "64"));
    splitter.setInputs(ovs(d, c, b, a));
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(1, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a, b, c, d).setOutputsOf(splitter);
    sc.check(0x0, 0x0, 0x0, 0x0, 0x00);
    sc.check(0x1, 0x1, 0x1, 0x1, 0x0001000100010001L);
    sc.check(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFFFFFFFFFFFFFFL);
    sc.check(0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFFFFFFFFFF0000L);
    sc.check(0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFFFFFF0000FFFFL);
    sc.check(0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF0000FFFFFFFFL);
    sc.check(0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000FFFFFFFFFFFFL);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 68 with ElementAttributes

use of de.neemann.digital.core.element.ElementAttributes in project Digital by hneemann.

the class SplitterHighZTest method testHighZEnabled.

public void testHighZEnabled() throws NodeException, PinException {
    ObservableValue a = new ObservableValue("a", 2).setToHighZ();
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "2").set(Keys.OUTPUT_SPLIT, "1,1"));
    splitter.setInputs(ovs(a));
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(2, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a).setOutputsOf(splitter);
    sc.check(0, 0, 0);
    sc.check(1, 1, 0);
    sc.check(2, 0, 1);
    sc.check(3, 1, 1);
    sc.checkZ(HIGHZ, HIGHZ, HIGHZ);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 69 with ElementAttributes

use of de.neemann.digital.core.element.ElementAttributes in project Digital by hneemann.

the class SplitterHighZTest method testHighZError.

public void testHighZError() throws NodeException, PinException {
    ObservableValue a = new ObservableValue("a", 1).setToHighZ();
    ObservableValue b = new ObservableValue("b", 1);
    Splitter splitter = new Splitter(new ElementAttributes().set(Keys.INPUT_SPLIT, "1,1").set(Keys.OUTPUT_SPLIT, "2"));
    splitter.setInputs(ovs(a, b));
    ObservableValues outputs = splitter.getOutputs();
    assertEquals(1, outputs.size());
    TestExecuter sc = new TestExecuter().setInputs(a, b).setOutputsOf(splitter);
    sc.check(0, 0, 0);
    sc.check(0, 1, 2);
    sc.check(1, 0, 1);
    sc.check(1, 1, 3);
    sc.checkZ(HIGHZ, HIGHZ, HIGHZ);
}
Also used : ObservableValues(de.neemann.digital.core.ObservableValues) ObservableValue(de.neemann.digital.core.ObservableValue) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Example 70 with ElementAttributes

use of de.neemann.digital.core.element.ElementAttributes in project Digital by hneemann.

the class FlipflopDTest method testFlipFlop.

public void testFlipFlop() throws Exception {
    ObservableValue d = new ObservableValue("d", 8);
    ObservableValue c = new ObservableValue("c", 1);
    Model model = new Model();
    FlipflopD out = model.add(new FlipflopD(new ElementAttributes().setBits(8)));
    out.setInputs(ovs(d, c));
    TestExecuter sc = new TestExecuter(model).setInputs(d, c).setOutputs(out.getOutputs());
    // D  C  Q  ~Q
    sc.check(0, 0, 0, 255);
    sc.check(1, 0, 0, 255);
    sc.check(1, 1, 1, 254);
    sc.check(1, 0, 1, 254);
    sc.check(0, 0, 1, 254);
    sc.check(7, 0, 1, 254);
    sc.check(7, 1, 7, 248);
}
Also used : ObservableValue(de.neemann.digital.core.ObservableValue) Model(de.neemann.digital.core.Model) ElementAttributes(de.neemann.digital.core.element.ElementAttributes) TestExecuter(de.neemann.digital.TestExecuter)

Aggregations

ElementAttributes (de.neemann.digital.core.element.ElementAttributes)87 ObservableValue (de.neemann.digital.core.ObservableValue)73 TestExecuter (de.neemann.digital.TestExecuter)61 Model (de.neemann.digital.core.Model)52 ObservableValues (de.neemann.digital.core.ObservableValues)16 BitsException (de.neemann.digital.core.BitsException)3 FanIn (de.neemann.digital.core.basic.FanIn)3 NodeException (de.neemann.digital.core.NodeException)2 Delay (de.neemann.digital.core.wiring.Delay)2 Circuit (de.neemann.digital.draw.elements.Circuit)2 And (de.neemann.digital.core.basic.And)1 Not (de.neemann.digital.core.basic.Not)1 Or (de.neemann.digital.core.basic.Or)1 Element (de.neemann.digital.core.element.Element)1 Key (de.neemann.digital.core.element.Key)1 FlipflopD (de.neemann.digital.core.flipflops.FlipflopD)1 FlipflopJK (de.neemann.digital.core.flipflops.FlipflopJK)1 Clock (de.neemann.digital.core.wiring.Clock)1 VisualElement (de.neemann.digital.draw.elements.VisualElement)1 ElementLibrary (de.neemann.digital.draw.library.ElementLibrary)1