/// <summary>Activa los elementos activos durante el subciclo 3. /// </summary> /// <param name="mic">La microinstrucción en ejecución.</param> /// <param name="vSH">El valor del registro SH.</param> /// <param name="vMAR">El valor del registro MAR.</param> /// <param name="vMBR">El valor del registro MBR.</param> /// <param name="valorC">El valor de la salida C de la ALU.</param> /// <param name="valorN">El valor de la salida N de la ALU.</param> /// <param name="valorZ">El valor de la salida Z de la ALU.</param> public void DibujarCiclo3 (MicroInstruccion mic, short vSH, short vMAR, short vMBR, int valorC, int valorN, int valorZ) { PintarMicro(mic); etiqueta_ciclos.SetText("Ciclo:" + instruccion + " Subciclo 3"); busA.Apagar(); busB.Apagar(); regs[mic.GetA()].Apagar(); regs[mic.GetB()].Apagar(); sh.Encender(); mbr.SetText("MBR " + Conversiones.ToHexString(vMBR)); mar.SetText("MAR " + Conversiones.ToHexString(vMAR)); sh.SetText("SH " + Conversiones.ToHexString(vSH)); et_s0.SetText("S2-S0 " + Conversiones.ToBinaryString(mic.GetSH(), 3)); et_a0.SetText("A0 " + Conversiones.ToBinaryString(mic.GetAMUX(), 1)); et_f0.SetText("F3-F0 " + Conversiones.ToBinaryString(mic.GetALU(), 4)); et_c.SetText("C " + valorC); et_n.SetText("N " + valorN); et_z.SetText("Z " + valorZ); if (mic.GetMAR() == 1) { //Activamos el cable que va de bufferB a MAR mar.Encender(); cable_bufferB_mar.Encender(); } if (mic.GetAMUX() == 1) { cable_mbr_mux.Encender(); mbr.Encender(); } else { cable_bufferA_mux.Encender(); } cable_bufferB_alu.Encender(); cable_alu_sh.Encender(); alu.Encender(); mux.Encender(); cable_mux_alu.Encender(); ActualizarTodo(); }
/// <summary>Establece el texto de etiqueta_rmc con el contenido /// de la microinstrucción que se le pasa como parámetro. /// </summary> /// <param name="mic">La microinstruccion a escribir.</param> private void PintarMicro(MicroInstruccion mic) { etiqueta_rmc.SetText( "mInst = " + mic.ToHexString() + "\nAMUX=" + Conversiones.ToBinaryString(mic.GetAMUX(), 1) + "\nCOND=" + Conversiones.ToBinaryString(mic.GetCOND(), 3) + "\nSH=" + Conversiones.ToBinaryString(mic.GetSH(), 3) + "\nMBR=" + Conversiones.ToBinaryString(mic.GetMBR(), 1) + "\nMAR=" + Conversiones.ToBinaryString(mic.GetMAR(), 1) + "\nRD=" + Conversiones.ToBinaryString(mic.GetRD(), 1) + "\nWR=" + Conversiones.ToBinaryString(mic.GetWR(), 1) + "\nENC=" + Conversiones.ToBinaryString(mic.GetENC(), 1) + "\nC=" + Conversiones.ToBinaryString(mic.GetC(), 4) + "\nB=" + Conversiones.ToBinaryString(mic.GetB(), 4) + "\nA=" + Conversiones.ToBinaryString(mic.GetA(), 4) + "\nADDR=" + Conversiones.ToBinaryString(mic.GetADDR(), 10) + "\nFIR=" + Conversiones.ToBinaryString(mic.GetFIR(), 1) + "\nALU=" + Conversiones.ToBinaryString(mic.GetALU(), 4)); }
public void TestGets() { MicroInstruccion mic = new MicroInstruccion(0x805300000400); Assert.AreEqual(1, mic.GetAMUX()); Assert.AreEqual(0, mic.GetCOND()); Assert.AreEqual(0, mic.GetSH()); Assert.AreEqual(0, mic.GetMBR()); Assert.AreEqual(0, mic.GetMAR()); Assert.AreEqual(1, mic.GetRD()); Assert.AreEqual(0, mic.GetWR()); Assert.AreEqual(1, mic.GetENC()); Assert.AreEqual(3, mic.GetC()); Assert.AreEqual(0, mic.GetB()); Assert.AreEqual(0, mic.GetA()); Assert.AreEqual(0, mic.GetADDR()); Assert.AreEqual(0, mic.GetFIR()); Assert.AreEqual(2, mic.GetALU()); }