Veri ve Valid Boru Hattı
Coddy'nin Verilog Journey'sinin RTL Tasarımı ve Doğrulama bölümünün bir parçası. Ders 18 / 38.
Pipeline’lar işi register’lar arasında ayırır. Her veri öğesinin yanında bir geçerlilik bayrağı ilerler; böylece aşağı akış aşaması bir örneği boşluktan ayırt edebilir. Bloklamayan atamalarla, sonraki aşama aynı kenarda önceki aşamanın önceki değerini okur. Reset, işlem hâlindeki çalışmayı geçersiz kılmalıdır.
İlgili alıntı; çevredeki bildirimler ve bağlantılar meydan okumada sağlanmıştır.
always @(posedge clk) begin
stage <= data;
stage_valid <= in_valid;
result <= stage;
out_valid <= stage_valid;
endVeri ve geçerliliği, aynı sayıda yazmaçtan geçer.
Her işlem hattı aşamasında verileri ve geçerlilik sinyalini hizalayın ve sıfırlama sırasında geçerlilik durumunu temizleyin.
Görev
Ortaİki kayıt aşamalı bir ardışık düzen uygulayın. Sıfırlama yapılmayan her kenarda, birinci aşama a ve in_valid değerlerini yakalar. İkinci aşama, birinci aşamanın önceki değerlerini kullanır: out_valid eski geçerlilik değerine dönüşür ve geçerli olduğunda y, eski verinin bir eklenmiş hâlinin 256 modülündeki değerine dönüşür; aksi takdirde sıfır olur. Eşzamanlı rst her iki aşamayı ve çıkışları temizler. Çıkış sütunları: y, out_valid. Tüm denetimler ve veriler, yükselen her saat kenarından önce sabittir; sonuçlar bundan sonra gözlemlenir.
design.v dosyasını tamamlayın ve modül adlarıyla portlarını koruyun. Kilitli testbench.v, giriş değişikliklerini sağlar ve kararlı hâle geldikten sonra çıkışları yazdırır. +CASE=1 gibi bir simülatör argümanını kullanarak bir senaryo seçer; standart girdi gerekmez. Tasarıma yazdırma, gecikme veya simülasyon sonlandırma eklemeyin. Beklenen çıktı, her gözlem için bir satır ondalık değer olmalı, tek bir boşlukla ayrılmalı ve bir satır sonuyla bitmelidir.
Kendin dene
module dut (input clk, input rst, input in_valid, input [7:0] a, output reg [7:0] y, output reg out_valid);
// Bu yer tutucuyu kendi tasarımınızla değiştirin.
initial y = 0;
initial out_valid = 0;
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
RTL Tasarımı ve Doğrulama bölümündeki tüm dersler
1Güvenilir Kombinasyonel RTL
Varsayılanlar Latch'leri ÖnlerÖncelikli KodlayıcılarOne-Hot DoğrulamaGüvenli Case Kod ÇözmeÖzet - İstek Yönlendirici4Kontrollü Ardışıl RTL
Reset ve Enable ÖnceliğiDoyumlu SayaçlarVeri ve Valid Boru HattıÖrneklenmiş Kenarları AlgılamaÖzet - Olay Sayacı2Bit Genişlikleri ve İşaretli Aritmetik
Taşıma Bitlerini Korumakİşaretli KarşılaştırmalarAritmetik Sağa KaydırmalarTaşma ve DoygunlukÖzet - İşaretli Fark3Yeniden Kullanılabilir RTL
Kombinasyonel FonksiyonlarGenişlik Uyumlu ParametrelerGenerate DöngüleriKoşullu GenerateÖzet - Yeniden Kullanılabilir Bit Maskesi6Kendi Kendini Denetleyen Testbench'ler
Dört Durumlu DenetimlerYeniden Kullanılabilir Denetleyici GörevleriReferans Modelleri ve SkorlarSınır ve Kontrol KapsamıÖzet - Toplayıcı DenetimiKendi başına pratik yap: Online Verilog derleyicisi