Verici Tasarımı
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 89 / 90.
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) |
|---|---|---|
| 1 | data_in | 0 |
Ö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:
- Port listesine (parantezlerin içine)
data_inadında birinput [7:0]ekleyin - Parantezlerin dışına (modül gövdesinin içine, dahili bir sinyal olduğu için)
shift_regadında 10 bitlik birregekleyin cnt == 0vestart == 1olduğunda:shift_regdeğerini{1'b1, data_in, 1'b0}ile yükleyin
cntdeğeri 1 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, // 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
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ığı