O que são
As portas lógicas são os blocos construtivos de computadores. A maioria das funções num computador, exceto certos tipos de memórias, são implementadas com portas lógicas.
Usadas numa escala de integração muito ampla. Por exemplo, um microprocessador, a principal parte de um computador, é construído com centenas de milhares ou ainda milhões de portas lógicas.
Porta Lógica NOT
A porta NÃO ou inversora (NOT) utiliza o operador de inversão. Para um determinado valor na entrada, a saída possui um valor contrário ao da entrada. Se a entrada for 1, a saída será 0. Se a entrada for 0, a saída será 1. Ou seja, para um valor na entrada a saída será seu complemento, ou o inverso do valor na entrada.
|
1 2 3 4 5 6 7 | module exemplo_INVERSOR ( a, b ); input wire a; output wire b; assign b = ~a; endmodule |
Porta Lógica AND
Para se explicar o funcionamento da porta E (AND) pode-se fazer um paralelo com um circuito com interruptores, como na figura abaixo. Para que a lâmpada acenda é preciso que os dois interruptores estejam ligados.
Analogia com a porta lógica AND |
As portas lógicas E (AND) utilizam-se do operador de produto lógico. A saída é igual a 1 se todas as entradas for 1. A saída é igual a zero se ao menos uma entrada for 0, se todas entradas não forem 1.
Porta Lógica AND |
1 2 3 4 5 6 7 | module exemplo_AND ( A, B, C ); input wire A, B; output wire C; assign C = A & B; endmodule |
Porta Lógica OR
Uma forma simples de se entender o funcionamento da porta OU (OR) é pensar em um circuito com interruptores em paralelo, como na figura abaixo. Para que a lâmpada acenda é preciso que um dos dois interruptores esteja ligado.
Analogia com a porta lógica OR |
A porta lógica OU (OR) utiliza-se do operador de soma lógica. A saída é igual a 1 se pelo menos uma das entradas for 1. A saída é igual a zero se nenhuma entrada for 1, todas forem zero.
Porta Lógica OR |
1 2 3 4 5 6 7 | module exemplo_OR ( a, b, c ); input wire a, b; output wire c; assign c = a | b; endmodule |
Porta Lógica NAND
A porta lógica NÃO E (NAND) utiliza-se do operador de produto lógico e o de inversão. A saída é igual a 0 se todas as entradas for 1. A saída é igual a 1 se ao menos uma entrada for 0, se todas entradas não forem 1.
Porta Lógica NAND |
1 2 3 4 5 6 7 | module exemplo_NAND ( a, b, d ); input wire a, b; output wire d; assign d = a ~& b; endmodule |
Porta Lógica NOR
A porta lógica NÃO OU (NOR) utiliza-se do operador de soma lógica e o de inversão. A saída é igual a 0 se pelo menos uma das entradas for 1. A saída é igual a 1 se nenhuma entrada for 1, todas forem zero.
Porta Lógica NOR |
1 2 3 4 5 6 7 | module exemplo_NOR ( a, b, d ); input wire a, b; output wire d; assign d = a ~| b; endmodule |
Porta Lógica XOR
As portas lógicas OU EXCLUSIVO (XOR) utilizam-se do operador de soma lógica, com um círculo. A saída é igual a 0 se as entradas forem iguais. A saída é igual a 1 se as entradas não forem iguais, se uma delas diferirem das outras.
Porta Lógica XOR |
Porta XOR em Verilog:
1 2 3 4 5 6 7 | module exemplo_XOR ( a, b, c ); input wire a, b; output wire c; assign c = a ^ b; endmodule |
Porta Lógica XNOR
As portas lógicas NÃO OU EXCLUSIVO (XNOR) utilizam-se do operador de soma lógica, com um círculo e o de inversão. Tem as saídas inversas da operação XOR. A saída é igual a 1 se as entradas forem iguais. A saída é igual a 0 se se as entradas não forem iguais, se uma delas diferirem das outras.
Porta Lógica XNOR |
Porta XNOR em Verilog:
1 2 3 4 5 6 7 | module exemplo_XNOR ( a, b, c ); input wire a, b; output wire c; assign c = a ~^ b; endmodule |
Fontes: Embarcados