Atrasos de Portas
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 68 de 90.
Na lição anterior, vimos atrasos gerais usados como #10 a = b;. Eles aguardam antes de executar uma instrução.
Nesta lição, abordamos os atrasos de porta, que são específicos de 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 mudança de suas entradas.
Em hardware real, as portas lógicas não respondem instantaneamente. Há um pequeno atraso. Quando você usa primitivas de portas lógicas integradas, pode adicionar um atraso para simular o tempo de propagação da porta. A saída muda somente 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 |
| Finalidade | Aguardar antes da execução | Modelar o tempo de propagação da porta |
Sintaxe:
gate_type #(delay) (output, input1, input2, ...);#(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 depois que a ou b muda.
Atraso da 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 depois do nome da porta | and #5 (out, a, b) |
| Valor do atraso em unidades de tempo | Com base na diretiva timescale |
| Todas as entradas afetam a saída | Uma alteração em qualquer entrada pode alterar a saída, mas somente após o atraso |
| Não sintetizável | Os atrasos das portas são usados apenas em simulações |
Desafio
Adicione os atrasos de porta que estão faltando neste 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
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. 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 ALU13Temporização e Atrasos
O Que São AtrasosAtrasos de PortasAtrasos de AtribuiçãoDiretiva de Escala de TempoGeração de ClockRevisão - Controle de Temporização2Tipos 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