Menu
Coddy logo textTech

Durum Makinesi

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

challenge icon

Görev

Bir durum makinesi, birkaç durumdan birinde olabilen bir devredir. UART için her bit için farklı durumlarımız vardır: boşta (idle), başlangıç (start), veri bitleri 0-7 ve durdurma (stop). Bit sayacı (cnt) hangi durumda olduğumuzu bize söyler. cnt değerine bağlı olarak, tx hattında hangi değerin gönderileceğine karar veririz.

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

Gönderilecek Bit Değerleri ('A' harfi için)

cnttx değeri
01
10
21
30
40
50
60
70
80
91
101

Ne yapmalı

  1. start adında bir giriş (input) ekleyin
  2. tx adında bir çıkış kaydı (output reg) ekleyin
  3. initial bloğunda, tx = 1 olarak ayarlayın (boşta yüksek - idle high)
  4. Sayaç mantığını değiştirin:
    • cnt == 0 ve start == 1 olduğunda, cnt <= 1 yapın (iletimi başlatın)
    • cnt 1 ile 9 arasında olduğunda artırın: cnt <= cnt + 1
    • cnt == 10 olduğunda, 0 değerine sıfırlayın

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