예제 #1
0
        /// <summary>Activa los elementos activos durante el subciclo 4.
        /// </summary>
        /// <param name="mic">La microinstrucción en ejecución.</param>
        /// <param name="vMBR">El valor del registro MBR.</param>S

        public void DibujarCiclo4(MicroInstruccion mic, short vMBR)
        {
            PintarMicro(mic);
            etiqueta_ciclos.SetText("Ciclo:" + instruccion + " Subciclo 4");
            bufferA.Apagar();
            bufferB.Apagar();
            mar.Apagar();
            mbr.Apagar();
            mbr.SetText("MBR " + Conversiones.ToHexString(vMBR));
            cable_bufferB_mar.Apagar();
            cable_bufferB_alu.Apagar();
            alu.Apagar();
            mux.Apagar();
            cable_bufferA_mux.Apagar();
            cable_alu_sh.Apagar();
            cable_mux_alu.Apagar();
            cable_mbr_mux.Apagar();
            //Escribir el dato de salida en la ALU.
            //Activar los cables de salida necesarios.
            if (mic.GetENC() == 1)
            {
                busC.Encender(mic.GetC());
                regs[mic.GetC()].Encender();
            }
            if (mic.GetMBR() == 1)
            {
                //Activamos el cable que va de SH a MBR
                cable_sh_mbr.Encender();
                mbr.Encender();
            }
            if ((!(mic.GetENC() == 1)) && (!(mic.GetMBR() == 1)))
            {
                sh.Apagar();
            }
            else
            {
                cable_sh.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());
        }