Menu
Coddy logo textTech

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;
end

Veri 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.

challenge icon

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;
endmodule
quiz iconKendini test et

Bu 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

Kendi başına pratik yap: Online Verilog derleyicisi