Primitivas de Portas Integradas
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 39 de 90.
O Verilog possui gate primitives nativos que permitem descrever circuitos lógicos usando símbolos de gate reais. Isso é chamado de structural modeling — você constrói circuitos conectando gates, assim como ao desenhar um esquemático.
Gate primitives são palavras-chave predefinidas que modelam gates lógicas básicas. Em vez de escrever uma expressão como assign out = a & b, você instancia uma gate:
and(out, a, b); // Porta AND com saída out, entradas a e bSintaxe Geral
gate_type (output, input1, input2, ...);- O primeiro argumento é sempre a output
- Os argumentos seguintes são inputs (1 ou mais, dependendo da gate)
Primitivas de Portas Disponíveis
| Tipo de Porta | Palavra-chave | Número de Entradas |
|---|---|---|
| AND | and | 2 ou mais |
| OR | or | 2 ou mais |
| NOT | not | 1 |
| NAND | nand | 2 ou mais |
| NOR | nor | 2 ou mais |
| XOR | xor | 2 ou mais |
| XNOR | xnor | 2 ou mais |
Como Gate Primitives Funcionam
Quando você escreve and(out, a, b), o Verilog cria uma porta AND que continuamente aciona out com o resultado de a & b. Sempre que a ou b muda, out é atualizado imediatamente — exatamente como uma porta real.
Gate Primitives vs Continuous Assignment
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;Gate primitives são úteis quando você quer descrever um circuito como uma coleção de gates (estilo structural). Continuous assignment é melhor para o estilo behavioral (expressões).
Desafio
O que fazer:
- Adicione o
gateprimitivecorreto para fazer este circuito funcionar. Omoduleshouldtransmitir a saída AND dasinputsaeb. A porta deoutputjá está nomeada comoc.
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
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