Maszyna stanów
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 88 z 90.
Wyzwanie
Maszyna stanów to układ, który może znajdować się w jednym z kilku stanów. W przypadku UART mamy różne stany dla każdego bitu: bezczynność, bit startu, bity danych 0–7 i bit stopu. Licznik bitów (cnt) informuje nas, w którym stanie jesteśmy. Na podstawie cnt decydujemy, jaką wartość wysłać na linię tx.
Masz licznik bitów z poprzedniej lekcji. Musisz go zmodyfikować, aby działał jako nadajnik UART.
Wartości bitów do wysłania (dla litery 'A')
| cnt | wartość tx |
|---|---|
| 0 | 1 |
| 1 | 0 |
| 2 | 1 |
| 3 | 0 |
| 4 | 0 |
| 5 | 0 |
| 6 | 0 |
| 7 | 0 |
| 8 | 1 |
| 9 | 0 |
| 10 | 1 |
Co należy zrobić
- Dodaj wejście o nazwie
start - Dodaj wyjście typu reg o nazwie
tx - W bloku
initialustawtx = 1(stan bezczynności, poziom wysoki) - Zmień logikę licznika:
- Gdy
cnt == 0istart == 1, ustawcnt <= 1(rozpocznij transmisję) - Gdy
cntma wartość od 1 do 9, zwiększ go:cnt <= cnt + 1 - Gdy
cnt == 10, wyzeruj go do0
- Gdy
Spróbuj swoich sił
module uart_tx (
input clk,
output reg [3:0] cnt
);
initial begin
cnt = 0;
end
always @(posedge clk) begin
cnt <= cnt + 1;
end
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