Menu
Coddy logo textTech

Primitivas de Portas Integradas

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 39 de 90.

O Verilog possui primitivas de porta integradas que permitem descrever circuitos lógicos usando símbolos de porta reais. Isso é chamado de modelagem estrutural — você constrói circuitos conectando portas, assim como ao desenhar um esquemático.

Primitivas de porta são palavras-chave predefinidas que modelam portas lógicas básicas. Em vez de escrever uma expressão como assign out = a & b, você instancia uma porta:

and(out, a, b);   // Porta AND com saída out, entradas a e b

Sintaxe Geral

gate_type (output, input1, input2, ...);
  • O primeiro argumento é sempre a saída
  • Os argumentos seguintes são entradas (1 ou mais, dependendo da porta)

Primitivas de Portas Disponíveis

Tipo de PortaPalavra-chaveNúmero de Entradas
ANDand2 ou mais
ORor2 ou mais
NOTnot1
NANDnand2 ou mais
NORnor2 ou mais
XORxor2 ou mais
XNORxnor2 ou mais

Como as Primitivas de Porta Funcionam

Quando você escreve and(out, a, b), o Verilog cria uma porta AND que aciona continuamente out com o resultado de a & b. Sempre que a ou b mudar, out atualiza imediatamente — exatamente como uma porta real.

Primitivas de Porta vs Atribuição Contínua

Ambos os métodos produzem o mesmo hardware:

// Primitiva de porta
and(out, a, b);

// Atribuição contínua (mesmo resultado)
assign out = a & b;

Primitivas de porta são úteis quando você deseja descrever um circuito como uma coleção de portas (estilo estrutural). A atribuição contínua é melhor para o estilo comportamental (expressões).

challenge icon

Desafio

O que fazer:

  1. Adicione a primitiva de porta correta para fazer este circuito funcionar. O módulo deve produzir a saída AND das entradas a e b. A porta de saída já está nomeada como c.

Folha de consulta

Primitivas de porta (Gate primitives) em Verilog permitem a modelagem estrutural através da instanciação direta de portas lógicas.

Sintaxe: O primeiro argumento é sempre a saída, seguido pelas entradas:

gate_type(output, input1, input2, ...);

Primitivas disponíveis:

PortaPalavra-chaveEntradas
ANDand2+
ORor2+
NOTnot1
NANDnand2+
NORnor2+
XORxor2+
XNORxnor2+

Primitivas de porta e assign produzem hardware equivalente:

and(out, a, b);       // structural (gate primitive)
assign out = a & b;   // behavioral (continuous assignment)

Experimente você mesmo

module gate_challenge (
  input a,
  input b,
  output c
);
  
  // TODO: Adicione a primitiva de porta correta
  // A saída c deve ser a AND b

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