Ejemplo n.º 1
0
        public bool Run(bool A, bool B, bool F0, bool F1, bool F2, bool carryIn, out bool carryOut)
        {
            bool M0, Output;

            bool[] RDE = new bool[8];
            RDE = DE.Run(F0, F1, F2);

            bool[] RLU = new bool[4];
            bool[] ILU = new bool[4];
            ILU[0] = RDE[0];
            ILU[1] = RDE[1];
            ILU[2] = RDE[2];
            ILU[3] = RDE[3];
            RLU    = LU.Run(A, B, ILU);

            bool RAD;

            bool[] IAD = new bool[2];
            IAD[0] = RDE[4];
            IAD[1] = RDE[5];
            RAD    = AD.Run(A, B, IAD, carryIn, out carryOut);

            M0     = P0.Ativa(RLU[0], RLU[1], RLU[2], RLU[3]);
            Output = P1.Ativa(RAD, M0);

            return(Output);
        }
Ejemplo n.º 2
0
        public bool Ativa(bool A, bool B)
        {
            bool M0, M1;

            M0 = P1.Ativa(P3.Ativa(A), B);
            M1 = P1.Ativa(A, P4.Ativa(B));
            return(P2.Ativa(M0, M1));
        }
Ejemplo n.º 3
0
        public bool[] Run(bool a, bool b, bool[] decoderOutput)
        {
            bool[] arraydevolta = new bool[4];

            arraydevolta[0] = P0.Ativa(decoderOutput[0], a, b);
            arraydevolta[1] = P1.Ativa(P2.Ativa(a, b), decoderOutput[1]);
            arraydevolta[2] = P1.Ativa(decoderOutput[2], P4.Ativa(a));
            arraydevolta[3] = P1.Ativa(decoderOutput[3], P4.Ativa(b));

            return(arraydevolta);
        }
Ejemplo n.º 4
0
        public bool Run(bool A, bool B, bool[] decoderOutput, bool carryIn, out bool carryOut)
        {
            bool res, sum, subtraction;
            bool R1 = P1.Ativa(A, B);

            res = P2.Ativa(carryIn, R1);

            bool R2 = P3.Ativa(A, B);
            bool R3 = P4.Ativa(carryIn, R1);

            carryOut = P5.Ativa(R2, R3);

            sum         = P6.Ativa(res, decoderOutput[0]);
            subtraction = P7.Ativa(res, decoderOutput[1]);

            return(P8.Ativa(sum, subtraction));
        }
Ejemplo n.º 5
0
 public bool Ativa(bool A, bool B, bool C, bool D, bool E, bool F, bool G, bool H)
 {
     M0 = P0.Ativa(A, B, C, D);
     M1 = P1.Ativa(E, F, G, H);
     return(P2.Ativa(M0, M1));
 }
Ejemplo n.º 6
0
 public bool Ativa(bool A, bool B, bool C, bool D)
 {
     M0 = P0.Ativa(A, B);
     M1 = P1.Ativa(C, D);
     return(P2.Ativa(M0, M1));
 }
Ejemplo n.º 7
0
        Or8 P7  = new Or8();      // A | B | C | D | E | F | G | H

        /*
         * OPCODES
         * F2	F1	F0	Saída
         * 0	0	0	A AND B
         * 0	0	1	A OR B
         * 0	1	0	A XOR B
         * 0	1	1	A'
         * 1	0	0	B'
         * 1	0	1	A Plus B
         * 1	1	0	A - B
         * 1	1	1	A = B
         */

        public int Ativa(bool A, bool B, bool[] F, bool Vem1, out bool Vai1)
        {
            bool D0, D1, D2, M0, M1, M2, M3, M4, M5, S;
            bool D4, M1a, M4a;
            int  saida;

            Vai1 = false;                                     // valor provisorio para retorno da Funcao Aritmetica, substituir depois de implementar o Somador completo
            D0   = false; D1 = false; D2 = false; D4 = false; // valores provisorios na saida decoder 3x8, retirar depois de completar a ALU

            if (!F[2] & !F[1] & !F[0])                        // teste provisorio, retirar depois de completar a ALU - Opode F2F1F0 = 000 AND
            {
                D0 = true;
            }

            if (!F[2] & !F[1] & F[0])             // teste provisorio, retirar depois de completar a ALU - Opode F2F1F0 = 001 OR
            {
                D1 = true;
            }

            if (!F[2] & F[1] & !F[0])             // teste provisorio, retirar depois de completar a ALU - Opode F2F1F0 = 010 XOR
            {
                D2 = true;
            }

            if (!F[2] & F[1] & F[0])               // teste provisorio, retirar depois de completar a ALU - Opode F2F1F0 = 011 NOT(A)
            {
                Console.WriteLine("\nOpode F2F1F0 = 011 nao implementado - Digite qualquer tecla para para voltar ao menu.");
                Console.WriteLine("----------------------------------------------");
                Console.ReadKey();
                saida = -1;
                return(saida);
            }

            if (F[2] & !F[1] & !F[0])             // teste provisorio, retirar depois de completar a ALU - Opode F2F1F0 = 100 NOT(B)
            {
                D4 = true;
            }

            if (F[2] & !F[1] & F[0])               // teste provisorio, retirar depois de completar a ALU
            {
                Console.WriteLine("\nOpode F2F1F0 = 101 nao implementado - Digite qualquer tecla para para voltar ao menu.");
                Console.WriteLine("----------------------------------------------");
                Console.ReadKey();
                saida = -1;
                return(saida);
            }

            if (F[2] & F[1] & !F[0])               // teste provisorio, retirar depois de completar a ALU
            {
                Console.WriteLine("\nOpode F2F1F0 = 110 nao implementado - Digite qualquer tecla para para voltar ao menu.");
                Console.WriteLine("----------------------------------------------");
                Console.ReadKey();
                saida = -1;
                return(saida);
            }

            if (F[2] & F[1] & F[0])               // teste provisorio, retirar depois de completar a ALU
            {
                Console.WriteLine("\nOpode F2F1F0 = 111 nao implementado - Digite qualquer tecla para para voltar ao menu.");
                Console.WriteLine("----------------------------------------------");
                Console.ReadKey();
                saida = -1;
                return(saida);
            }
            M0  = P0.Ativa(A, B);         // Funcao Logica AND(A,B) - F2F1F0 = 000
            M1  = P1.Ativa(A, B);         // Funcao Logica OR(A,B) - F2F1F0 = 001
            M1a = P1a.Ativa(A, B);        // Funcao Logica XOR(A,B) - F2F1F0 = 010
            M2  = P2.Ativa(B);            // Funcao Logica Not (B)  - F2F1F0 = 100
            M3  = P3.Ativa(M0, D0);       // Habilita saida funcao logica AND(A,B)
            M4  = P4.Ativa(M1, D1);       // Habilita saida funcao logica OR(A,B)
            M4a = P4a.Ativa(M1a, D2);     // Habilita saida funcao logica XOR(A,B)
            M5  = P5.Ativa(M2, D4);       // Habilita saida funcao logica NOT(B) -  Not (B)  - F2F1F0 = 100
            S   = P7.Ativa(M3, M4, M4a, false, M5, false, false, false);
            if (S)
            {
                saida = 1;
            }
            else
            {
                saida = 0;
            }
            return(saida);
        }