Twój pierwszy moduł
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 3 z 90.
Moduł jest podstawowym elementem składowym w Verilogu. Każdy fragment kodu Verilog znajduje się wewnątrz modułu.
Pomyśl o module jak o komponencie, który ma:
- Wejścia (sygnały, które do niego docierają)
- Wyjścia (sygnały, które z niego wychodzą)
- Zachowanie (to, co robi)
Składnia modułu
module module_name ( inputs, outputs );
// Wszystko wewnątrz tutaj
endmoduleKażdy moduł zaczyna się od module i kończy na endmodule.
Wejścia i wyjścia
module and_gate(
input a, // a wchodzi DO modułu
input b, // b wchodzi DO modułu
output c // c wychodzi Z modułu
);
// Tutaj należy opisać działanie
endmodule- input = sygnał wchodzi do modułu
- output = sygnał opuszcza moduł
Dodawanie zachowania
Teraz sprawimy, że moduł będzie coś robił:
module and_gate(
input a,
input b,
output c
);
assign c = a & b; // c ma wartość 1 tylko wtedy, gdy a i b mają wartość 1
endmoduleassignstale łączy prawą stronę z lewą&oznacza AND w Verilogu
Wyzwanie
W tym wyzwaniu musisz utworzyć prosty moduł wykonujący operację OR.
Co zrobić:
- Moduł powinien nazywać się
or_gate - Powinien mieć wejście o nazwie
x - Powinien mieć wejście o nazwie
y - Powinien mieć wyjście o nazwie
z - Wewnątrz modułu użyj
assign, aby ustawićznax OR y
Nagłówek modułu i jego trzy porty są już w edytorze. Musisz dodać linię z instrukcją assign wewnątrz modułu.
Uwaga: W Verilog OR zapisuje się za pomocą symbolu kreski pionowej |. Wynikiem jest 1 (prawda), jeśli co najmniej jedno z wejść ma wartość 1 (prawda).
Spróbuj swoich sił
// Nagłówek modułu i jego porty są już napisane za ciebie
module or_gate(
input x,
input y,
output z
);
// Twoja kolej: użyj assign, aby ustawić z na wynik x OR y
// W Verilogu OR zapisuje się jako |
endmodule
Ta 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