Verici Tasarımı
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 89 / 90.
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) |
|---|---|---|
| 1 | data_in | 0 |
Ö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:
- Port listesine (parantez içine)
data_inadında birinput [7:0]ekleyin - Parantezlerin dışına (modül gövdesinin içine, çünkü bu dahili bir sinyaldir)
shift_regadında 10 bitlik birregekleyin cnt == 0vestart == 1olduğunda:shift_reg'i{1'b1, data_in, 1'b0}ile yükleyin
cnt1 ile 8 arasında olduğunda:tx <= shift_reg[0]gönderin- Sağa kaydırın:
shift_reg <= shift_reg >> 1
cnt == 9olduğunda:tx <= shift_reg[0]gönderin- 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
endmoduleTemeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı