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); }
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)); }
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); }
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)); }
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)); }
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)); }
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); }