Menu
Coddy logo textTech

Maszyna stanów

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 88 z 90.

challenge icon

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')

cntwartość tx
01
10
21
30
40
50
60
70
81
90
101

Co należy zrobić

  1. Dodaj wejście o nazwie start
  2. Dodaj wyjście typu reg o nazwie tx
  3. W bloku initial ustaw tx = 1 (stan bezczynności, poziom wysoki)
  4. Zmień logikę licznika:
    • Gdy cnt == 0 i start == 1, ustaw cnt <= 1 (rozpocznij transmisję)
    • Gdy cnt ma wartość od 1 do 9, zwiększ go: cnt <= cnt + 1
    • Gdy cnt == 10, wyzeruj go do 0

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

endmodule

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online