Menu
Coddy logo textTech

Atrasos de Porta

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

Na lição anterior, cobrimos os delays gerais usados como #10 a = b; — eles aguardam antes de executar uma instrução.

Nesta lição, abordaremos os atrasos de porta (gate delays), 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 suas entradas mudarem.

Em hardware real, portas não respondem instantaneamente — existe um pequeno atraso (delay). 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 General Delay e Gate Delay

 General DelayGate Delay
Sintaxe#10 a = b;and #5 (out, a, b);
Posição# antes de uma instrução# dentro da primitiva de porta
PropósitoAguardar antes de executarModelar o tempo de propagação da porta

Sintaxe:

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

O #(delay) especifica quantas unidades de tempo o gate leva para responder.

Exemplo Simples

and #5 (out, a, b);

Esta AND gate leva 5 time units para mudar sua output depois que a ou b muda.

Gate Delay com Múltiplas Entradas

nand #8 (out, a, b, c, d);   // NAND de 4 entradas com atraso de 8 unidades de tempo

Regras Importantes

RegraExplicação
Delay vem depois do nome da gateand #5 (out, a, b)
Valor do delay em unidades de timeBaseado na diretiva timescale
Todos os inputs afetam a outputQualquer alteração no input dispara o delay
Não sintetizávelDelays de gate são apenas para simulação
challenge icon

Desafio

Adicione os atrasos de porta que faltam a este módulo. Use atrasos diferentes para cada porta.

O que fazer:

  1. Porta AND: atraso de 5 unidades de tempo
  2. Porta OR: atraso de 3 unidades de tempo
  3. 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 porta AND com atraso de 5 unidades de tempo (entradas a, b)
  
  // TODO: Adicione porta OR com atraso de 3 unidades de tempo (entradas a, b)
  
  // TODO: Adicione 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
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