コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        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());
        }