From: Daniel Kirschten Date: Sun, 18 Aug 2019 16:58:01 +0000 (+0200) Subject: Moved pins of RegCTInstrDecode to useful locations X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=f5b40760c0bdf0f249c75c800b09528c23449fdf;p=Mograsim.git Moved pins of RegCTInstrDecode to useful locations --- diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/RegCTInstrDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/RegCTInstrDecode.java index 1419905e..436eaffb 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/RegCTInstrDecode.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/RegCTInstrDecode.java @@ -21,23 +21,41 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent public RegCTInstrDecode(ViewModelModifiable model, String name) { super(model, name, "Instruction\ndecode"); - setSize(40, 40); - addPin(new Pin(this, "I", 6, 0, 20), Usage.INPUT, Position.RIGHT); - addPin(new Pin(this, "muSR_I1", 1, -1, -15), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR_IM", 1, -1, -14), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR_OVRRET", 1, -1, -13), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR_CINV", 1, -1, -12), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR__WEZ", 1, -1, -11), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR__WEC", 1, -1, -10), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR__WEN", 1, -1, -9), Usage.OUTPUT, null); - addPin(new Pin(this, "muSR__WEOVR", 1, -1, -8), Usage.OUTPUT, null); - addPin(new Pin(this, "MSR_1_Y_CINV__M", 1, -1, -7), Usage.OUTPUT, null); - addPin(new Pin(this, "MSR_mu_Y_SOC__M", 1, -1, -6), Usage.OUTPUT, null); - addPin(new Pin(this, "MSR_I_CINV_SOC__M", 1, -1, -5), Usage.OUTPUT, null); - addPin(new Pin(this, "CT_SRC", 2, -1, -4), Usage.OUTPUT, null); - addPin(new Pin(this, "CT_INV", 1, -1, -3), Usage.OUTPUT, null); - addPin(new Pin(this, "CT_MUX", 3, -1, -2), Usage.OUTPUT, null); - addPin(new Pin(this, "CT_EXP", 1, -1, -1), Usage.OUTPUT, null); + setSize(80, 80); + addPin(new Pin(this, "I", 6, 0, 40), Usage.INPUT, Position.RIGHT); + // muSR MUX: + // 00: 0 + // 01: 1 + // 10: M + // 11: I + addPin(new Pin(this, "muSR_MUX", 2, 80, 10), Usage.OUTPUT, Position.LEFT); + addPin(new Pin(this, "muSR_OVRRET", 1, 80, 20), Usage.OUTPUT, Position.LEFT); + addPin(new Pin(this, "muSR_CINV", 1, 80, 30), Usage.OUTPUT, Position.LEFT); + addPin(new Pin(this, "muSR__WEZ", 1, 80, 40), Usage.OUTPUT, Position.LEFT); + addPin(new Pin(this, "muSR__WEC", 1, 80, 50), Usage.OUTPUT, Position.LEFT); + addPin(new Pin(this, "muSR__WEN", 1, 80, 60), Usage.OUTPUT, Position.LEFT); + addPin(new Pin(this, "muSR__WEOVR", 1, 80, 70), Usage.OUTPUT, Position.LEFT); + // MSR MUX: + // 000: 0 + // 001: 1 + // 010: mu + // 011: Y + // 100: I + // 101: I, invert C + // 110: Swap OVR and C + // 111: _M + addPin(new Pin(this, "MSR_MUX", 3, 40, 0), Usage.OUTPUT, Position.BOTTOM); + // CT SRC MUX: + // 00: mu + // 01: mu + // 10: M + // 11: I + addPin(new Pin(this, "CT_SRC_MUX", 2, 10, 80), Usage.OUTPUT, Position.TOP); + // CT MUX: + // see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1) + addPin(new Pin(this, "CT_MUX", 3, 30, 80), Usage.OUTPUT, Position.TOP); + addPin(new Pin(this, "CT_INV", 1, 50, 80), Usage.OUTPUT, Position.TOP); + addPin(new Pin(this, "CT_EXP", 1, 70, 80), Usage.OUTPUT, Position.TOP); } @Override @@ -69,8 +87,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent { case 0: case 2: - readWriteEnds.get("muSR_I1").feedSignals(ZERO); - readWriteEnds.get("muSR_IM").feedSignals(ONE); + readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -79,8 +96,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO); break; case 1: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -89,8 +105,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO); break; case 3: - readWriteEnds.get("muSR_I1").feedSignals(ZERO); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -100,8 +115,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent break; case 6: case 7: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ONE); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE); readWriteEnds.get("muSR_OVRRET").feedSignals(ONE); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -110,8 +124,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO); break; case 8: - readWriteEnds.get("muSR_I1").feedSignals(ZERO); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -120,8 +133,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ONE); break; case 9: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -130,8 +142,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ONE); break; case 10: - readWriteEnds.get("muSR_I1").feedSignals(ZERO); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ONE); @@ -140,8 +151,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ONE); break; case 11: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ONE); @@ -150,8 +160,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ONE); break; case 12: - readWriteEnds.get("muSR_I1").feedSignals(ZERO); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ONE); @@ -160,8 +169,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ONE); break; case 13: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ONE); @@ -170,8 +178,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ONE); break; case 14: - readWriteEnds.get("muSR_I1").feedSignals(ZERO); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ONE); @@ -180,8 +187,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO); break; case 15: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ZERO); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ONE); @@ -195,8 +201,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent case 41: case 56: case 57: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ONE); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ONE); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -205,8 +210,7 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent readWriteEnds.get("muSR__WEOVR").feedSignals(ZERO); break; default: - readWriteEnds.get("muSR_I1").feedSignals(ONE); - readWriteEnds.get("muSR_IM").feedSignals(ONE); + readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE); readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); readWriteEnds.get("muSR_CINV").feedSignals(ZERO); readWriteEnds.get("muSR__WEZ").feedSignals(ZERO); @@ -217,34 +221,22 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent switch (IAsInt) { case 0: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ONE); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ONE); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ZERO); + readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ZERO); break; case 1: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ONE); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ZERO); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ZERO); + readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ZERO); break; case 2: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ZERO); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ONE); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ZERO); + readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ZERO); break; case 3: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ZERO); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ZERO); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ZERO); + readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ZERO); break; case 4: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ZERO); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ONE); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ONE); + readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ONE); break; case 5: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ONE); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ONE); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ONE); + readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ONE); break; case 8: case 9: @@ -254,17 +246,13 @@ public class RegCTInstrDecode extends SimpleRectangularHardcodedGUIComponent case 41: case 56: case 57: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ONE); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ZERO); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ONE); + readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ONE); break; default: - readWriteEnds.get("MSR_1_Y_CINV__M").feedSignals(ZERO); - readWriteEnds.get("MSR_mu_Y_SOC__M").feedSignals(ZERO); - readWriteEnds.get("MSR_I_CINV_SOC__M").feedSignals(ONE); + readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE); break; } - readWriteEnds.get("CT_SRC").feedSignals(IBits[0], IBits[1]); + readWriteEnds.get("CT_SRC_MUX").feedSignals(IBits[0], IBits[1]); readWriteEnds.get("CT_INV").feedSignals(IBits[5]); readWriteEnds.get("CT_MUX").feedSignals(IBits[2], IBits[3], IBits[4]); readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b1110) == 0b1110 ? ONE : ZERO);