Menu
Coddy logo textTech

State Machine

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 88 / 90.

challenge icon

Görev

Durum makinesi, birkaç durumdan birinde bulunabilen bir devredir. UART için her bit adına farklı durumlarımız vardır: idle, start, 0-7 arasındaki data bitleri ve stop. Bit sayacı (cnt) hangi durumda olduğumuzu belirtir. cnt değerine bağlı olarak tx hattında hangi değeri göndereceğimize karar veririz.

Önceki dersten bit sayacına sahipsin. Bunu bir UART vericisi olarak çalışacak şekilde değiştirmen gerekiyor.

'A' harfi için gönderilecek bit değerleri

cnttx değeri
01
10
21
30
40
50
60
70
81
90
101

Yapılacaklar

  1. start adlı bir input ekle
  2. tx adlı bir output reg ekle
  3. initial bloğunda tx = 1 ayarla (idle high)
  4. Sayaç mantığını değiştir:
    • cnt == 0 ve start == 1 olduğunda, cnt <= 1 ayarla (gönderimi başlat)
    • cnt 1 ile 9 arasındayken artır: cnt <= cnt + 1
    • cnt == 10 olduğunda 0 değerine sıfırla

Kendin dene

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi