Portas AND, OR e NOT
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 40 de 90.
Esta lição cobre as três portas lógicas mais básicas: AND, OR e NOT. Essas portas formam a base do design de lógica digital.
Porta AND
A porta AND produz a saída 1 apenas quando todas as entradas são 1.
Tabela Verdade (2 entradas):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Primitiva de porta Verilog:
and(out, a, b);Equivalente de atribuição contínua:
assign out = a & b;Porta OR
A porta OR produz uma saída 1 quando pelo menos uma entrada é 1.
Tabela Verdade (2 entradas):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Primitiva de porta Verilog:
or(out, a, b);Equivalente de atribuição contínua:
assign out = a | b;Porta NOT
A porta NOT produz a saída oposta à sua entrada única. Ela também é chamada de inversor.
Tabela Verdade:
| a | out |
|---|---|
| 0 | 1 |
| 1 | 0 |
Primitiva de porta Verilog:
not(out, a);Equivalente de atribuição contínua:
assign out = ~a;Múltiplas Entradas
Portas AND e OR podem ter mais de 2 entradas:
and(out, a, b, c); // AND de 3 entradas (out = a & b & c)
or(out, x, y, z, w); // OR de 4 entradasPortas NOT sempre têm exatamente 1 entrada.
Exemplo de Código
module and_or_not (
input a, b,
output and_out,
output or_out,
output not_out
);
and(and_out, a, b); // porta AND
or(or_out, a, b); // porta OR
not(not_out, a); // porta NOT (inversora)
endmoduleDesafio
Adicione as primitivas de porta lógica que faltam com base nas tarefas.
O que fazer:
- Crie uma porta AND com a saída
and_resulte as entradaspeq - Crie uma porta OR com a saída
or_resulte as entradaspeq - Crie uma porta NOT com a saída
not_resulte a entradap
Folha de consulta
Portas lógicas básicas em Verilog usando primitivas de porta e atribuição contínua:
| Porta | Primitiva | Atribuição (Assign) | A saída é 1 quando... |
|---|---|---|---|
| AND | and(out, a, b); | assign out = a & b; | Todas as entradas são 1 |
| OR | or(out, a, b); | assign out = a | b; | Pelo menos uma entrada é 1 |
| NOT | not(out, a); | assign out = ~a; | A entrada é 0 |
AND e OR suportam mais de 2 entradas; NOT sempre tem exatamente 1 entrada:
and(out, a, b, c); // AND de 3 entradas
or(out, a, b, c, d); // OR de 4 entradasmodule example (input a, b, output and_out, or_out, not_out);
and(and_out, a, b);
or(or_out, a, b);
not(not_out, a);
endmoduleExperimente você mesmo
module gates_challenge (
input p,
input q,
output and_result,
output or_result,
output not_result
);
// TODO: Adicionar porta AND (and_result = p & q)
// TODO: Adicionar porta OR (or_result = p | q)
// TODO: Adicionar porta NOT (not_result = ~p)
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo