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 obejmujący:
- Nazwę
- Wejścia (sygnały wejściowe)
- Wyjścia (sygnały wyjściowe)
- Logikę wewnętrzną (to, co robi moduł)
Wyobraź sobie moduł jako układ ze stykami 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 (wires, regs itd.)
// Logika (instrukcje assign, bloki always itd.)
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 | Określa 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 dotyczące struktury modułów
- Jeden moduł na plik to powszechna praktyka
- Nazwa modułu powinna opisywać jego funkcję
- Porty są wymienione w nawiasach po nazwie
- Wejścia są zawsze typu
input(nie można do nich zapisywać) - Wyjścia są typu
output(mogą być typureglubwire) <strong>endmodule</strong>musi zamykać moduł
Wyzwanie
Uzupełnij brakujące części, aby ukończyć ten moduł.
Co należy zrobić:
- Dodaj nazwę modułu
my_and - Dodaj
inputdlax - Dodaj
inputdlay - Dodaj
outputdlaz - Dodaj logikę wewnętrzną za pomocą
assign
Spróbuj swoich sił
module ______ ( // Dodaj nazwę modułu
input x, // Dodaj wejście
input y, // Dodaj wejście
output z // Dodaj wyjś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