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, sadece sabit 'A' harfini değil, herhangi bir baytı göndermek için kaydırmalı kaydediciyi (shift register) ekleyerek UART vericisini tamamlayacaksınız.

Kaydırmalı kaydedici, tam çerçeveyi (durdurma biti + 8 veri biti + başlatma biti) yükler ve her seferinde bir bit olacak şekilde dışarı kaydırır.

Çerçeve Formatı

Durdurma (1)Veri (8 bit)Başlatma (0)
1data_in0

Örneğin, eğer data_in = 8'b01000001 ('A' harfi) ise, kaydırmalı kaydedici şu hale gelir: 1 01000001 0

Göreviniz

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

Yapılacaklar:

  1. Port listesine (parantez içine) data_in adında bir input [7:0] ekleyin
  2. Parantezlerin dışına (modül gövdesinin içine, çünkü bu dahili bir sinyaldir) shift_reg adında 10 bitlik bir reg ekleyin
  3. cnt == 0 ve start == 1 olduğunda:
    1. shift_reg'i {1'b1, data_in, 1'b0} ile yükleyin
  4. cnt 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,           // YENİ: iletimi başlatmak için start sinyali
  output reg tx,         // YENİ: seri çıkış hattı
  output reg [3:0] cnt   // Test için çıkış olarak tutun
);

  initial begin
    cnt = 0;
    tx = 1;              // YENİ: tx'i HIGH (boşta durumu) yap
  end

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

endmodule

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