Verici tasarımı
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 89 / 90.
Görev
Bu derste, yalnızca sabit 'A' harfini değil, herhangi bir baytı gönderebilmek için kaydırma yazmacını ekleyerek UART vericisini tamamlayacaksın.
Kaydırma yazmacı tam çerçeveyi (stop biti + 8 veri biti + start biti) yükler ve bunu her seferinde bir bit olmak üzere dışarı kaydırır.
Çerçeve Biçimi
| Stop (1) | Veri (8 bit) | Start (0) |
|---|---|---|
| 1 | data_in | 0 |
Örneğin, data_in = 8'b01000001 ('A' harfi) ise kaydırma yazmacı şu hale gelir: 1 01000001 0
Görevin
Önceki dersteki durum makinesi sana verilmiştir (sabit bir bayt gönderir). Bunu, data_in girişinden herhangi bir baytı gönderecek şekilde değiştirmen gerekiyor.
Yapılacaklar:
- Port listesine (parantezlerin içine)
data_inadlı birinput [7:0]ekle - Parantezlerin dışına (dahili bir sinyal olduğu için modül gövdesinin içine)
shift_regadlı 10 bitlik birregekle cnt == 0vestart == 1olduğunda:shift_regdeğerini{1'b1, data_in, 1'b0}ile yükle
cnt1 ile 8 arasında olduğunda:tx <= shift_reg[0]gönder- Sağa kaydır:
shift_reg <= shift_reg >> 1
cnt == 9olduğunda:tx <= shift_reg[0]gönder- Sağa kaydır:
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 (boşta 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
endmoduleTemel Bilgiler bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi