Struktura modułu
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 30 z 90.
Moduł jest podstawowym elementem składowym w Verilogu. Każdy projekt składa się z modułów, które łączą się ze sobą, tworząc większe systemy.
Moduł to komponent sprzętowy z:
- Nazwą
- Wejściami (sygnałami wejściowymi)
- Wyjściami (sygnałami wyjściowymi)
- Logiką wewnętrzną (tym, co robi moduł)
Pomyśl o module jak o układzie z pinami i wewnętrznymi obwodami.
Podstawowa struktura modułu
Każdy moduł ma następującą strukturę:
module module_name (
input signals,
output signals
);
// Deklaracje wewnętrzne (przewody, rejestry itp.)
// Logika (instrukcje assign, bloki always itp.)
endmoduleCzęści modułu
| Część | Cel |
|---|---|
Słowo kluczowe module | Rozpoczyna definicję modułu |
module_name | Nazwa modułu |
( ) | Lista portów wejściowych i wyjściowych |
input / output | Deklaruje kierunek portu |
| Treść modułu | Logika wewnętrzna i połączenia |
endmodule | Kończy definicję modułu |
Przykład prostego modułu
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleTen moduł:
- Nazywa się
and_gate - Ma dwa wejścia (
a,b) - Ma jedno wyjście (
c) - Zawiera jedną instrukcję
assigndefiniującą logikę
Zasady struktury modułu
- Jeden moduł na plik to powszechna praktyka
- Nazwa modułu powinna opisywać jego funkcję
- Porty są wymienione w nawiasach po nazwie
- Wejścia zawsze są typu
input(nie można ich zapisywać wewnątrz) - Wyjścia są typu
output(mogą być typureglubwire) endmodulemusi zamykać moduł
Wyzwanie
Uzupełnij brakujące elementy, aby dokończyć ten moduł.
Co należy zrobić:
- Dodaj nazwę modułu
my_and - Dodaj
inputdlax - Dodaj
inputdlay - Dodaj
outputdlaz - Dodaj logikę wewnętrzną, używając
assign
Spróbuj swoich sił
module ______ ( // Dodaj nazwę modułu
input x, // Dodaj wejście
input y, // Dodaj wejście
output z // Dodaj wejście
);
// Dodaj tutaj instrukcję assign (z = x & y)
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