Powtórka – projektowanie ALU
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 57 z 90.
Wyzwanie
ALU (Arithmetic Logic Unit, jednostka arytmetyczno-logiczna) to układ cyfrowy, który przyjmuje dwa wejścia, wykonuje na nich operację i generuje jedno wyjście. Wykonuje operacje arytmetyczne i logiczne na dwóch wejściach na podstawie sygnału wyboru. Sygnał select wybiera jedną operację do wykonania.
Jak to działa
| select | Operacja | Wyjście |
|---|---|---|
2'b00 | Dodawanie | a + b |
2'b01 | Odejmowanie | a - b |
2'b10 | Bitowe AND | a & b |
2'b11 | Bitowe OR | a | b |
Zbuduj prostą jednostkę ALU za pomocą instrukcji case.
Co zrobić:
- Utwórz moduł o nazwie
alu - Dodaj wejścia:
a(4-bitowe),b(4-bitowe),select(2-bitowe) - Dodaj wyjście:
result(4-bitowe, typu reg) - Dodaj blok
always @(*) - Wewnątrz dodaj instrukcję
case (select) - Dodaj cztery przypadki dla
2'b00,2'b01,2'b10,2'b11 - Dodaj przypadek
default, aby ustawićresult = 0 - Zakończ za pomocą
endcaseiendmodule
Spróbuj swoich sił
// TODO: Utwórz moduł alu
// TODO: Dodaj wejścia (a, b, select)
// TODO: Dodaj wyjście (result)
// TODO: Dodaj blok always @(*)
// TODO: Dodaj case (select)
// TODO: Dodaj case 2'b00: result = a + b;
// TODO: Dodaj case 2'b01: result = a - b;
// TODO: Dodaj case 2'b10: result = a & b;
// TODO: Dodaj case 2'b11: result = a | b;
// TODO: Dodaj default: result = 0;
// TODO: Dodaj endcase
// TODO: Dodaj endmoduleWszystkie 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