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.
Görev
OrtaSenkron 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;
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önlendirici2Bit Genişlikleri ve İşaretli Aritmetik
Taşıma Bitlerini Korumakİşaretli KarşılaştırmalarAritmetik Sağa KaydırmalarTaşma ve DoygunlukÖzet - İşaretli Fark5Bellek ve Arama Tabloları
Kombinasyonel ROM TablolarıRegister Dizisi DepolamaKayıtlı Okuma PortlarıOkuma-Yazma İletmeÖzet - Çift Okuma Bankası3Yeniden 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