Primitivas de Portas Integradas
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 39 de 90.
Verilog tem primitivas de portas integradas que permitem descrever circuitos lógicos usando símbolos reais de portas. Isso é chamado de modelagem estrutural. Você constrói circuitos conectando portas, assim como ao desenhar um esquema.
As primitivas de portas 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 bSintaxe 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 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 funcionam as primitivas de portas
Quando você escreve and(out, a, b), o Verilog cria uma porta AND que conduz continuamente out com o resultado de a & b. Sempre que a ou b muda, out é atualizado imediatamente, assim como em 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 portas são úteis quando você quer descrever um circuito como uma coleção de portas (estilo estrutural). A atribuição contínua é melhor para o estilo comportamental (expressões).
Desafio
O que fazer:
- Adicione a primitiva de porta correta para fazer este circuito funcionar. O módulo deve produzir o AND das entradas
aeb. A porta de saída já se chamac.
Experimente você mesmo
module gate_challenge (
input a,
input b,
output c
);
// TODO: Adicione o primitivo de porta correto
// 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. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
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ões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online