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

Durum makinesi (state machine), birden fazla durumdan birinde olabilen bir devredir. UART için her bir bit için farklı durumlarımız vardır: idle, start, data bitleri 0-7 ve stop. Bit sayacı (cnt), hangi durumda olduğumuzu bize söyler. cnt değerine göre tx hattında hangi değerin gönderileceğine karar veririz.

Önceki dersten 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
81
90
101

Yapılacaklar

  1. start adında bir input ekleyin
  2. tx adında bir output reg ekleyin
  3. initial bloğunda, tx = 1 ayarlayın (idle mantığında HIGH)
  4. Sayaç mantığını (logic) değiştirin:
    • cnt == 0 ve start == 1 olduğunda, cnt <= 1 yapın (transmitting başlatın)
    • cnt değeri 1 ile 9 arasında olduğunda artırın: cnt <= cnt + 1
    • cnt == 10 olduğunda, 0 değerine reset edin

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