fixed a bug in the power supply

This commit is contained in:
hneemann 2017-07-20 17:31:22 +02:00
parent 9ca0b2b84b
commit e4367eb1b0
4 changed files with 20 additions and 11 deletions

View File

@ -14,7 +14,7 @@ import static de.neemann.digital.core.element.PinInfo.input;
* Enforces a power supply * Enforces a power supply
* Created by hneemann on 15.07.17. * Created by hneemann on 15.07.17.
*/ */
public class PowerSupply implements Element { public class PowerSupply extends Node implements Element {
/** /**
* Enforces a power supply * Enforces a power supply
@ -24,6 +24,9 @@ public class PowerSupply implements Element {
.addAttribute(Keys.ROTATE) .addAttribute(Keys.ROTATE)
.addAttribute(Keys.LABEL); .addAttribute(Keys.LABEL);
private ObservableValue vcc;
private ObservableValue gnd;
/** /**
* Creates a new instance * Creates a new instance
* *
@ -34,13 +37,8 @@ public class PowerSupply implements Element {
@Override @Override
public void setInputs(ObservableValues inputs) throws NodeException { public void setInputs(ObservableValues inputs) throws NodeException {
check(inputs.get(0).checkBits(1, null, 0), 1); vcc = inputs.get(0).checkBits(1, null, 0).addObserverToValue(this);
check(inputs.get(1).checkBits(1, null, 1), 0); gnd = inputs.get(1).checkBits(1, null, 1).addObserverToValue(this);
}
private void check(ObservableValue val, int expected) throws NodeException {
if (!val.isConstant() || val.getValue() != expected)
throw new NodeException(Lang.get("err_errorInPowerSupply"), val);
} }
@Override @Override
@ -49,6 +47,15 @@ public class PowerSupply implements Element {
} }
@Override @Override
public void registerNodes(Model model) { public void readInputs() throws NodeException {
if (vcc.getValue() != 1 || vcc.isHighZ())
throw new NodeException(Lang.get("err_errorInPowerSupply", "VCC"), vcc);
if (gnd.getValue() != 0 || gnd.isHighZ())
throw new NodeException(Lang.get("err_errorInPowerSupply", "GND"), gnd);
} }
@Override
public void writeOutputs() throws NodeException {
}
} }

View File

@ -9,6 +9,7 @@ import de.neemann.digital.core.element.ElementAttributes;
import de.neemann.digital.core.element.Key; import de.neemann.digital.core.element.Key;
import de.neemann.digital.core.element.Keys; import de.neemann.digital.core.element.Keys;
import de.neemann.digital.core.io.In; import de.neemann.digital.core.io.In;
import de.neemann.digital.core.io.InValue;
import de.neemann.digital.core.io.Out; import de.neemann.digital.core.io.Out;
import de.neemann.digital.core.io.PowerSupply; import de.neemann.digital.core.io.PowerSupply;
import de.neemann.digital.core.memory.ROM; import de.neemann.digital.core.memory.ROM;
@ -732,6 +733,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
.setShapeFactory(shapeFactory) .setShapeFactory(shapeFactory)
.setAttribute(Keys.LABEL, "VCC") .setAttribute(Keys.LABEL, "VCC")
.setAttribute(Keys.PINNUMBER, maxNum) .setAttribute(Keys.PINNUMBER, maxNum)
.setAttribute(Keys.INPUT_DEFAULT, new InValue(1))
.setPos(new Vector(0, 0))); .setPos(new Vector(0, 0)));
list.add(new VisualElement(In.DESCRIPTION.getName()) list.add(new VisualElement(In.DESCRIPTION.getName())
.setShapeFactory(shapeFactory) .setShapeFactory(shapeFactory)

View File

@ -555,7 +555,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig?</string>
<string name="err_nameUsedTwice_N">Signal {0} wurde mehrfach verwendet!</string> <string name="err_nameUsedTwice_N">Signal {0} wurde mehrfach verwendet!</string>
<string name="err_errorParsingTestdata">Fehler beim Einlesen der Testdaten.</string> <string name="err_errorParsingTestdata">Fehler beim Einlesen der Testdaten.</string>
<string name="err_backtrackOf_N_isImpossible">Die Modelkomponente {0} kann nicht analysiert werden.</string> <string name="err_backtrackOf_N_isImpossible">Die Modelkomponente {0} kann nicht analysiert werden.</string>
<string name="err_errorInPowerSupply">Fehler in der Stromversorgung.</string> <string name="err_errorInPowerSupply">Fehler in der Stromversorgung an {0}.</string>
<string name="key_AddrBits">Adress-Bits</string> <string name="key_AddrBits">Adress-Bits</string>
<string name="key_AddrBits_tt">Anzahl der Adress-Bits die verwendet werden.</string> <string name="key_AddrBits_tt">Anzahl der Adress-Bits die verwendet werden.</string>

View File

@ -543,7 +543,7 @@ The names of the variables may not be unique.</string>
<string name="err_nameUsedTwice_N">Signal {0} is used twice!</string> <string name="err_nameUsedTwice_N">Signal {0} is used twice!</string>
<string name="err_errorParsingTestdata">Error parsing the test data.</string> <string name="err_errorParsingTestdata">Error parsing the test data.</string>
<string name="err_backtrackOf_N_isImpossible">The model component {0} can not be analysed.</string> <string name="err_backtrackOf_N_isImpossible">The model component {0} can not be analysed.</string>
<string name="err_errorInPowerSupply">Error in wiring of power supply.</string> <string name="err_errorInPowerSupply">Error in wiring of power supply at {0}.</string>
<string name="key_AddrBits">Address Bits</string> <string name="key_AddrBits">Address Bits</string>
<string name="key_AddrBits_tt">Number of address bits used.</string> <string name="key_AddrBits_tt">Number of address bits used.</string>