Atrasos de Porta
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 68 de 90.
Na lição anterior, abordamos atrasos gerais usados como #10 a = b; — eles esperam antes de executar uma instrução.
Nesta lição, abordamos os atrasos de porta, que são específicos para primitivas de porta integradas como and, or e not. Um atraso de porta modela quanto tempo uma porta de hardware leva para produzir uma saída após a alteração de suas entradas.
No hardware real, as portas não respondem instantaneamente — há um pequeno atraso. Quando você usa primitivas de porta integradas, pode adicionar um atraso para simular o tempo de propagação da porta. A saída muda apenas após o atraso especificado.
Diferença entre Atraso Geral e Atraso de Porta
| Atraso Geral | Atraso de Porta | |
|---|---|---|
| Sintaxe | #10 a = b; | and #5 (out, a, b); |
| Posição | # antes de uma instrução | # dentro da primitiva de porta |
| Propósito | Aguardar antes de executar | Modelar o tempo de propagação da porta |
Sintaxe:
gate_type #(delay) (output, input1, input2, ...);O #(delay) especifica quantas unidades de tempo a porta leva para responder.
Exemplo Simples
and #5 (out, a, b);Esta porta AND leva 5 unidades de tempo para alterar sua saída após a ou b mudarem.
Atraso de Porta com Múltiplas Entradas
nand #8 (out, a, b, c, d); // NAND de 4 entradas com atraso de 8 unidades de tempoRegras Importantes
| Regra | Explicação |
|---|---|
| O atraso vem após o nome da porta | and #5 (out, a, b) |
| Valor do atraso em unidades de tempo | Baseado na diretiva timescale |
| Todas as entradas afetam a saída | Qualquer mudança na entrada aciona o atraso |
| Não sintetizável | Atrasos de porta são apenas para simulação |
Desafio
Adicione os atrasos de porta que faltam a este módulo. Use atrasos diferentes para cada porta.
O que fazer:
- Porta AND: atraso de 5 unidades de tempo
- Porta OR: atraso de 3 unidades de tempo
- Porta NOT: atraso de 2 unidades de tempo
Folha de consulta
Os atrasos de porta (gate delays) modelam o tempo de propagação em primitivas de porta integradas.
Sintaxe:
gate_type #(delay) (output, input1, input2, ...);Exemplos:
and #5 (out, a, b); // AND gate, 5 time unit delay
or #3 (out, a, b); // OR gate, 3 time unit delay
not #2 (out, a); // NOT gate, 2 time unit delay
nand #8 (out, a, b, c, d); // 4-input NAND, 8 time unit delayPontos-chave:
- O
#vem após o nome da porta, antes da lista de portas - Qualquer mudança na entrada aciona o atraso antes da atualização da saída
- Os atrasos de porta são apenas para simulação — não são sintetizáveis
Experimente você mesmo
module gate_delay_challenge;
reg a, b;
wire and_out, or_out, not_out;
// TODO: Adicione uma porta AND com atraso de 5 unidades de tempo (entradas a, b)
// TODO: Adicione uma porta OR com atraso de 3 unidades de tempo (entradas a, b)
// TODO: Adicione uma porta NOT com atraso de 2 unidades de tempo (entrada a)
initial begin
$monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b",
$time, a, b, and_out, or_out, not_out);
a = 1; b = 1;
#10 $finish;
end
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 ALU13Temporização e Atrasos
O que são AtrasosAtrasos de PortaAtrasos de AtribuiçãoDiretiva TimescaleGeração de ClockRecapitulação - Controle de Temporização2Tipos 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