Lista czułości
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 48 z 90.
Lista czułości informuje blok always, kiedy ma się wykonać. Zapisuje się ją w nawiasach po symbolu @.
Lista czułości to zbiór sygnałów lub zdarzeń, które wyzwalają blok always. Gdy dowolny sygnał z listy ulegnie zmianie, blok zostanie wykonany.
Składnia:
always @(sensitivity_list) begin
// Kod wykonuje się, gdy zmieniają się sygnały na liście
endTypy listy czułości
| Typ | Składnia | Kiedy blok jest wykonywany |
|---|---|---|
| Wszystkie sygnały (kombinacyjnie) | always @(*) | Gdy zmieni się dowolny sygnał wewnątrz |
| Określone sygnały | always @(a or b) | Gdy zmieni się a lub b |
| Wyzwalanie zboczem (sekwencyjnie) | always @(posedge clk) | Na narastającym zboczu zegara |
| Wiele zboczy | always @(posedge clk or posedge reset) | Na zboczu zegara lub zboczu sygnału reset |
Opcja 1: Wszystkie sygnały (*)
Najbezpieczniejsza i najczęściej stosowana w logice kombinacyjnej.
always @(*) begin
out = a & b; // Wykonuje się, gdy zmienia się a lub b
end* automatycznie uwzględnia wszystkie sygnały odczytane w bloku.
Opcja 2: Konkretne sygnały
always @(a or b) begin
out = a & b; // Wykonuje się, gdy zmienia się a lub b
endJeśli zapomnisz o sygnale, wyjście nie aktualizuje się w symulacji, gdy ten sygnał ulega zmianie, więc symulacja przestaje odpowiadać zsyntezowanemu sprzętowi.
Opcja 3: Wyzwalanie zboczem (posedge)
always @(posedge clk) begin
q <= d; // Wykonuje się przy narastającym zboczu zegara
endUżyj posedge dla zbocza narastającego, a negedge dla zbocza opadającego.
Opcja 4: Wiele zboczy
always @(posedge clk or posedge reset) begin
if (reset)
q <= 0;
else
q <= d;
endWykonuje się przy zboczu zegara lub zboczu resetu.
Częste błędy
| Błąd | Dlaczego jest błędny |
|---|---|
always @(a or b or c), ale używa d | Brak d → wyjście staje się nieaktualne w symulacji (niezgodność symulacji i syntezy) |
always @(posedge clk or reset) | Brak posedge dla resetu |
always @(clk) | Dla przerzutników należy użyć posedge clk |
Wyzwanie
Co należy zrobić:
- Dodaj prawidłową listę czułości, aby ten przerzutnik działał. Blok powinien wykonywać się przy narastającym zboczu sygnału
clk.
Spróbuj swoich sił
module flipflop (
input clk,
input d,
output reg q
);
always @(______) begin
q <= d;
end
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Wprowadzenie
Czym jest VerilogSprzęt a oprogramowanieTwój pierwszy modułKomentarzePoziomy abstrakcji projektu4Operatory, część 1
Operatory arytmetyczneOperator moduloOperatory porównaniaPowtórka — prosta matematykaOperatory bitowe7Przypisania i bramki
Przypisanie ciągłePrzypisanie z operatoramiWbudowane prymitywy bramekBramki AND, OR i NOTBramki XOR i XNORPodsumowanie — układ z bramek logicznych10Podejmowanie decyzji
Instrukcja ifIf-elsePowtórka – prosty komparatorInstrukcja caseCaseX i CaseZPowtórka – projektowanie ALU13Odmierzanie czasu i opóźnienia
Czym są opóźnieniaOpóźnienia bramekOpóźnienia przypisańDyrektywa timescaleGenerowanie zegaraPodsumowanie — kontrola czasu2Typy danych
Typ WireTyp RegLiczby całkowite i rzeczywisteWektoryTabliceParametryPowtórka — deklarowanie sygnałów5Operatory — część 2
Operatory logiczneOperatory redukcjiOperatory przesunięciaOperator konkatenacjiOperator warunkowyPowtórzenie — wyzwanie z operatorami11Pętle
Pętla forPętla whilePętla repeatPętla nieskończonaInstrukcja wyłączaniaPowtórka — wzorce pętli3System liczbowy
Reprezentacja binarnaLiczby o określonej szerokościLiczby o nieokreślonej szerokościLiczby ujemneWartości specjalne X i ZPodsumowanie — formaty liczb6Moduły
Struktura modułuPorty wejściowe i wyjściowePorty dwukierunkoweInstancjonowanie modułuMapowanie portów według nazwMapowanie portów według kolejnościPodsumowanie — zbuduj moduł9Bloki proceduralne
Blok alwaysBlok initialLista czułościPrzypisanie blokującePrzypisanie nieblokującePodsumowanie — always a initial12Projekt multipleksera
Projekt multipleksera 2 do 1Projekt multipleksera 4 do 115Sterownik sygnalizacji świetlnej
Definiowanie stanówLogika maszyny stanówPoćwicz samodzielnie: Kompilator Verilog online