Search in sources :

Example 81 with ElementAttributes

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

the class ApplicationVHDLStdIOTest method extractParameters.

public ElementAttributes extractParameters(String code, boolean workExpected) {
    TestApp ta = new TestApp();
    ElementAttributes attr = new ElementAttributes();
    attr.set(Keys.EXTERNAL_CODE, code);
    assertEquals(workExpected, ta.ensureConsistency(attr));
    return attr;
}
Also used : ElementAttributes(de.neemann.digital.core.element.ElementAttributes)

Example 82 with ElementAttributes

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

the class FlipflopDAsyncTest method testFlipFlop.

public void testFlipFlop() throws Exception {
    ObservableValue set = new ObservableValue("set", 1);
    ObservableValue d = new ObservableValue("d", 8);
    ObservableValue c = new ObservableValue("c", 1);
    ObservableValue clr = new ObservableValue("clr", 1);
    Model model = new Model();
    FlipflopDAsync out = model.add(new FlipflopDAsync(new ElementAttributes().setBits(8)));
    out.setInputs(ovs(set, d, c, clr));
    TestExecuter sc = new TestExecuter(model).setInputs(set, d, c, clr).setOutputs(out.getOutputs());
    // set D  C  clr Q  ~Q
    sc.check(0, 0, 0, 0, 0, 255);
    // set
    sc.check(1, 0, 0, 0, 255, 0);
    sc.check(0, 0, 0, 0, 255, 0);
    // clr
    sc.check(0, 0, 0, 1, 0, 255);
    sc.check(0, 0, 0, 0, 0, 255);
    sc.check(0, 1, 0, 0, 0, 255);
    sc.check(0, 1, 1, 0, 1, 254);
    sc.check(0, 0, 0, 0, 1, 254);
}
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)

Example 83 with ElementAttributes

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

the class RAMDualPortTest method testRAM.

public void testRAM() throws Exception {
    ObservableValue a = new ObservableValue("a", 4);
    ObservableValue d = new ObservableValue("d", 4);
    ObservableValue str = new ObservableValue("str", 1);
    ObservableValue clk = new ObservableValue("clk", 1);
    ObservableValue ld = new ObservableValue("ld", 1);
    Model model = new Model();
    RAMDualPort out = model.add(new RAMDualPort(new ElementAttributes().set(Keys.ADDR_BITS, 4).setBits(4)));
    out.setInputs(ovs(a, d, str, clk, ld));
    TestExecuter sc = new TestExecuter(model).setInputs(a, d, str, clk, ld).setOutputs(out.getOutputs());
    // A  D  ST C  LD
    // def
    sc.checkZ(0, 0, 0, 0, 0, HIGHZ);
    // st  0->5
    sc.checkZ(0, 5, 1, 1, 0, HIGHZ);
    // def
    sc.checkZ(0, 0, 0, 0, 0, HIGHZ);
    // st  1->9
    sc.checkZ(1, 9, 1, 1, 0, HIGHZ);
    // rd  5
    sc.check(0, 0, 0, 0, 1, 5);
    // rd  5
    sc.check(1, 0, 0, 0, 1, 9);
}
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)

Example 84 with ElementAttributes

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

the class RAMSinglePortTest method testRAM.

public void testRAM() throws Exception {
    ObservableValue a = new ObservableValue("a", 4);
    ObservableValue d = new ObservableValue("d", 4);
    ObservableValue str = new ObservableValue("str", 1);
    ObservableValue clk = new ObservableValue("clk", 1);
    ObservableValue ld = new ObservableValue("ld", 1);
    Model model = new Model();
    RAMSinglePort out = model.add(new RAMSinglePort(new ElementAttributes().set(Keys.ADDR_BITS, 4).setBits(4)));
    out.setInputs(ovs(a, str, clk, ld, d));
    TestExecuter sc = new TestExecuter(model).setInputs(a, d, str, clk, ld).setOutputs(out.getOutputs());
    // A  D  ST C  LD
    // def
    sc.checkZ(0, 0, 0, 0, 0, HIGHZ);
    // st  0->5
    sc.checkZ(0, 5, 1, 1, 0, HIGHZ);
    // def
    sc.checkZ(0, 0, 0, 0, 0, HIGHZ);
    // st  1->9
    sc.checkZ(1, 9, 1, 1, 0, HIGHZ);
    // rd  5
    sc.check(0, 0, 0, 0, 1, 5);
    // rd  5
    sc.check(1, 0, 0, 0, 1, 9);
}
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)

Example 85 with ElementAttributes

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

the class RegisterTest method testRegister.

public void testRegister() throws Exception {
    ObservableValue d = new ObservableValue("s", 8);
    ObservableValue c = new ObservableValue("c", 1);
    ObservableValue en = new ObservableValue("en", 1);
    Model model = new Model();
    Register out = model.add(new Register(new ElementAttributes().setBits(8)));
    out.setInputs(ovs(d, c, en));
    TestExecuter sc = new TestExecuter(model).setInputs(d, c, en).setOutputs(out.getOutputs());
    // D  C  en  Q
    sc.check(0, 0, 0, 0);
    sc.check(7, 1, 1, 7);
    sc.check(9, 1, 1, 7);
    sc.check(9, 1, 0, 7);
    sc.check(9, 0, 0, 7);
    sc.check(9, 0, 1, 7);
    sc.check(9, 1, 1, 9);
    sc.check(0, 0, 0, 9);
    sc.check(0, 1, 0, 9);
    sc.check(0, 1, 1, 9);
    sc.check(0, 0, 0, 9);
    sc.check(0, 1, 0, 9);
    sc.check(0, 0, 1, 9);
}
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