Menu
Coddy logo textTech

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):

about
000
010
100
111

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):

about
000
011
101
111

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:

aout
01
10

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 entradas

Portas 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)
endmodule
challenge icon

Desafio

Adicione as primitivas de porta lógica que faltam com base nas tarefas.

O que fazer:

  1. Crie uma porta AND com a saída and_result e as entradas p e q
  2. Crie uma porta OR com a saída or_result e as entradas p e q
  3. Crie uma porta NOT com a saída not_result e a entrada p

Folha de consulta

Portas lógicas básicas em Verilog usando primitivas de porta e atribuição contínua:

PortaPrimitivaAtribuição (Assign)A saída é 1 quando...
ANDand(out, a, b);assign out = a & b;Todas as entradas são 1
ORor(out, a, b);assign out = a | b;Pelo menos uma entrada é 1
NOTnot(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 entradas
module 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);
endmodule

Experimente 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)

endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos