Poziomy abstrakcji projektu
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 5 z 90.
W projektowaniu cyfrowym możemy opisywać ten sam układ z różnym poziomem szczegółowości. Verilog to język, w którym można opisywać układy na każdym z tych poziomów abstrakcji. To właśnie czyni go tak potężnym!
Oto poziomy:
Poziom 1: behawioralny
Ten poziom opisuje, co robi układ, a nie jak to robi. Skupia się na funkcji lub zachowaniu, takim jak „zliczaj w górę” lub „dodawaj dwie liczby”.
Wewnętrzne szczegóły tego, jak odbywa się liczenie lub dodawanie, nie są pokazane. Ten poziom jest najbliższy ludzkiemu sposobowi myślenia i łatwiej go zapisać.
Poziom 2: RTL
Ten poziom pokazuje, jak dane przemieszczają się między rejestrami i jakie operacje są na nich wykonywane. Możesz zobaczyć ścieżkę danych: dane przechodzą z rejestru do sumatora, a następnie wracają do rejestru.
To poziom, na którym pracuje większość projektantów układów cyfrowych, ponieważ zapewnia dobry kompromis między czytelnością a wystarczającą szczegółowością, by tworzyć sprzęt.
Poziom 3: poziom bramek
Na tym poziomie opisuje się obwód za pomocą podstawowych bramek logicznych, takich jak AND, OR i XOR. Każde połączenie jest wyraźnie pokazane.
Ten poziom jest bardzo szczegółowy i trudny do napisania ręcznie. Zwykle jest generowany przez narzędzia na podstawie opisów wysokiego poziomu, a nie pisany ręcznie.
Dlaczego to ma znaczenie
- **Wyższy poziom** = łatwiej pisać, mniejsza kontrola
- **Niższy poziom** = trudniej pisać, większa kontrola
- **RTL** to złoty środek w większości prac projektowych
Wyzwanie
Co zrobić:
- Uruchom ten kod i zobacz, jak ta sama operacja jest opisana na trzech różnych poziomach:
Spróbuj swoich sił
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
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