Menu
Coddy logo textTech

Kayıtlı Okuma Portları

Coddy'nin Verilog Journey'sinin RTL Tasarımı ve Doğrulama bölümünün bir parçası. Ders 23 / 38.

Kayıtlı bir okuma, bir saat kenarında bellek verilerini yakalar ve bu değeri sonrasında tutar. Bir okuma etkinleştirme sinyali, devre dışı çevrimlerde önceki çıktıyı koruyabilir. Okuma kaydını sıfırlamak, her bellek sözcüğünü temizlemeyi gerektirmez. Bloklamayan okuma ve yazma atamalarıyla, okuma ifadesi kenar öncesindeki sözcüğü görür.

İlgili alıntı; çevredeki bildirimler ve bağlantılar görevde sağlanmıştır.

always @(posedge clk) begin
    if(we) mem[waddr] <= data;
    if(rst) q <= 0;
    else if(re) q <= mem[raddr];
end

Çıkış yazmacı yalnızca belirtilen kenarda ve etkinleştirilmiş yolda güncellenir.

Belge okuma gecikmesi, devre dışı bırakılmış okuma davranışı ve hangi durum sıfırlamasının gerçekten temizlediği.

challenge icon

Görev

Orta

Senkron yazmalı ve kayıtlı okuma q'lu dört kelimelik 8 bitlik bir bellek uygulayın. we, yükselen kenarlarda yazma işlemi gerçekleştirir. rst, yalnızca q'yu senkron olarak temizler; aksi hâlde re, q'yu kenar öncesindeki mem[raddr] değerinden yükler; re=0 olduğunda q değerini korur. Bellek sıfırlanmaz ve yazma işlemleri rst'den bağımsızdır. Bir kenarda okuma ve yazma aynı adresi paylaşırsa q eski kelimeyi alır. Testler, etkinleştirilmiş okumalardan önce kelimeleri başlatır. Çıktı sütunları: q. Tüm denetimler ve veriler, her yükselen saat kenarından önce kararlıdır; sonuçlar kenardan sonra gözlemlenir.

design.v dosyasını tamamlayın ve modül adlarıyla bağlantı noktalarını koruyun. Kilitli testbench.v, giriş değişikliklerini sağlar ve oturduktan sonra çıktıları yazdırır. Bir simülatör bağımsız değişkeni (örneğin +CASE=1) kullanarak bir senaryo seçer; standart giriş 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; değerler tek bir boşlukla ayrılır ve satır yeni satır karakteriyle sonlanır.

Kendin dene

module dut (input clk, input rst, input we, input re, input [1:0] waddr, input [1:0] raddr, input [7:0] data, output reg [7:0] q);
    // Bu yer tutucuyu kendi tasarımınızla değiştirin.
    initial q = 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