Menu
Coddy logo textTech

Verici Tasarımı

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

challenge icon

Görev

Bu derste, yalnızca sabit bir 'A' harfi yerine herhangi bir baytı göndermek için shift register ekleyerek UART vericisini tamamlayacaksınız.

Vardiyalı kaydaç (shift register), tüm çerçeveyi (durdurma biti + 8 veri biti + başlama biti) yükler ve her seferinde bir bit olacak şekilde dışarı kaydırır.

Çerçeve Formatı

Stop (1)Data (8 bits)Start (0)
1data_in0

Örneğin, eğer data_in = 8'b01000001 ('A' harfi) ise, kaydırma kaydacı şu şekli alır: 1 01000001 0

Göreviniz

Size önceki dersteki durum makinesi verilmiştir (sabit bayt iletir). Bunu, data_in girdisinden gelen herhangi bir baytı gönderecek şekilde değiştirmeniz gerekiyor.

Yapılacaklar:

  1. Port listesine (parantezlerin içine) data_in adında bir input [7:0] ekleyin
  2. Parantezlerin dışına (modül gövdesinin içine, dahili bir sinyal olduğu için) shift_reg adında 10 bitlik bir reg ekleyin
  3. cnt == 0 ve start == 1 olduğunda:
    1. shift_reg değerini {1'b1, data_in, 1'b0} ile yükleyin
  4. cnt değeri 1 ile 8 arasında olduğunda:
    1. tx <= shift_reg[0] gönderin
    2. Sağa kaydırın: shift_reg <= shift_reg >> 1
  5. cnt == 9 olduğunda:
    1. tx <= shift_reg[0] gönderin
    2. Sağa kaydırın: shift_reg <= shift_reg >> 1

Kendin dene

module uart_tx (
  input clk,
  input start,           // NEW: iletimi başlatmak için start sinyali
  output reg tx,         // NEW: seri çıkış hattı
  output reg [3:0] cnt   // Test için output olarak tut
);

  initial begin
    cnt = 0;
    tx = 1;              // NEW: tx'i HIGH yap (idle durumu)
  end

  always @(posedge clk) begin
    // NEW: start koşulu ile sayaç mantığı
    if (cnt == 0 && start) begin   // NEW: iletime başla
      cnt <= 1;
    end
    else if (cnt > 0 && cnt < 9) begin   // NEW: iletim sırasında say
      cnt <= cnt + 1;
    end
    else if (cnt == 9) begin      // NEW: son bitten sonra sıfırla
      cnt <= 0;
    end
  end

endmodule

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