Menu
Coddy logo textTech

Opóźnienia bramek

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 68 z 90.

W poprzedniej lekcji omówiliśmy ogólne opóźnienia używane tak jak #10 a = b;. Wstrzymują wykonanie instrukcji.

W tej lekcji omawiamy opóźnienia bramek, które dotyczą wbudowanych prymitywów bramek, takich jak and, or i not. Opóźnienie bramki modeluje czas, jakiego bramka sprzętowa potrzebuje na wygenerowanie wyjścia po zmianie jej wejść.

W rzeczywistym sprzęcie bramki nie reagują natychmiast. Występuje niewielkie opóźnienie. Korzystając z wbudowanych prymitywów bramek, możesz dodać opóźnienie, aby symulować czas propagacji bramki. Wyjście zmienia się dopiero po upływie określonego opóźnienia.

Różnica między ogólnym opóźnieniem a opóźnieniem bramki

 Ogólne opóźnienieOpóźnienie bramki
Składnia#10 a = b;and #5 (out, a, b);
Pozycja# przed instrukcją# wewnątrz prymitywu bramki
CelOdczekanie przed wykonaniemModelowanie czasu propagacji bramki

Składnia:

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

#(delay) określa, ile jednostek czasu potrzebuje bramka, aby zareagować.

Prosty przykład

and #5 (out, a, b);

Ta bramka AND potrzebuje 5 jednostek czasu, aby zmienić swoje wyjście po zmianie a lub b.

Opóźnienie bramki z wieloma wejściami

nand #8 (out, a, b, c, d);   // 4-wejściowa bramka NAND z opóźnieniem 8 jednostek czasu

Ważne zasady

ZasadaWyjaśnienie
Opóźnienie podaje się po nazwie bramkiand #5 (out, a, b)
Wartość opóźnienia w jednostkach czasuZgodnie z dyrektywą timescale
Wszystkie wejścia wpływają na wyjścieKażda zmiana wejścia wyzwala opóźnienie
Nie nadaje się do syntezyOpóźnienia bramek służą tylko do symulacji
challenge icon

Wyzwanie

Dodaj brakujące opóźnienia bramek do tego modułu. Użyj różnych opóźnień dla każdej bramki.

Co zrobić:

  1. Bramka AND: opóźnienie 5 jednostek czasu
  2. Bramka OR: opóźnienie 3 jednostek czasu
  3. Bramka NOT: opóźnienie 2 jednostek czasu

Spróbuj swoich sił

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: Dodaj bramkę AND z opóźnieniem 5 jednostek czasu (wejścia a, b)
  
  // TODO: Dodaj bramkę OR z opóźnieniem 3 jednostek czasu (wejścia a, b)
  
  // TODO: Dodaj bramkę NOT z opóźnieniem 2 jednostek czasu (wejście 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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online