X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=era.mi%2Fsrc%2Fera%2Fmi%2Flogic%2Fcomponents%2FTriStateBuffer.java;h=5c02a4e347b1ba984a67d6c0788943d9ee09610f;hb=18cf2f85ed378005aa93c8b88fe5fa055a108fad;hp=4000ae66e1778fbc506a61def85d0ce19ce681c7;hpb=49f569b513c36e8ad421fd5a547bf34bd830652a;p=Mograsim.git diff --git a/era.mi/src/era/mi/logic/components/TriStateBuffer.java b/era.mi/src/era/mi/logic/components/TriStateBuffer.java index 4000ae66..5c02a4e3 100644 --- a/era.mi/src/era/mi/logic/components/TriStateBuffer.java +++ b/era.mi/src/era/mi/logic/components/TriStateBuffer.java @@ -1,18 +1,25 @@ package era.mi.logic.components; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import era.mi.logic.Bit; import era.mi.logic.wires.WireArray; -import era.mi.logic.wires.WireArray.WireArrayInput; +import era.mi.logic.wires.WireArray.WireArrayEnd; -public class TriStateBuffer extends BasicComponent{ +public class TriStateBuffer extends BasicComponent +{ WireArray in, enable; - WireArrayInput outI; - - public TriStateBuffer(int processTime, WireArray in, WireArray out, WireArray enable) { + WireArrayEnd outI; + + public TriStateBuffer(int processTime, WireArray in, WireArray out, WireArray enable) + { super(processTime); - if(in.length != out.length) - throw new IllegalArgumentException("Tri-state output must have the same amount of bits as the input. Input: " + in.length + " Output: " + out.length); - if(enable.length != 1) + if (in.length != out.length) + throw new IllegalArgumentException( + "Tri-state output must have the same amount of bits as the input. Input: " + in.length + " Output: " + out.length); + if (enable.length != 1) throw new IllegalArgumentException("Tri-state enable must have exactly one bit, not " + enable.length + "."); this.in = in; in.addObserver(this); @@ -20,14 +27,26 @@ public class TriStateBuffer extends BasicComponent{ enable.addObserver(this); outI = out.createInput(); } - + @Override protected void compute() { - if(enable.getValue() == Bit.ONE) + if (enable.getValue() == Bit.ONE) outI.feedSignals(in.getValues()); else outI.clearSignals(); } + @Override + public List getAllInputs() + { + return Collections.unmodifiableList(Arrays.asList(in, enable)); + } + + @Override + public List getAllOutputs() + { + return Collections.unmodifiableList(Arrays.asList(outI.owner)); + } + }