Okuma-Yazma İletme
Coddy'nin Verilog Journey'sinin RTL Tasarımı ve Doğrulama bölümünün bir parçası. Ders 24 / 38.
Bir bellek arayüzü, aynı adresli okuma/yazma davranışını tanımlamalıdır. Forwarding, bir çakışma durumunda gelen yazma verisini açıkça seçerek yeni veri davranışı üretir. Bu bypass olmadan önceki nonblocking okuma şablonu eski veriyi yakalar. Aygıt bellek modları farklılık gösterdiğinden, yalnızca simülasyon semantiği belirli bir primitive eşlemesini garanti etmez.
İlgili alıntı; çevredeki bildirimler ve bağlantılar görevde sağlanmıştır.
if(re) begin
if(we && waddr==raddr) q <= data;
else q <= mem[raddr];
endBypass, yalnızca gerçek bir adres çakışması için gelen sözcüğü seçer.
Çakışma davranışını açıkça tanımlayın ve bunu seçilen donanım bellek moduna göre doğrulayın.
Görev
OrtaYeni verinin ileri yönlendirilmesini kullanan, kayıtlı okuma özellikli dört sözcüklü bir bellek uygulayın. Yazma ve sıfırlama/okuma etkinleştirme kuralları önceki dersle aynıdır. Etkinleştirilmiş bir okuma, aynı adrese yapılan etkinleştirilmiş bir yazmayla çakıştığında, q eski sözcük yerine gelen veriyi yakalar. Diğer okumalar için mem[raddr] değerini yakalar. Çıktı sütunları: q. Tüm denetimler ve veriler, her yükselen saat kenarından önce sabittir; sonuçlar sonrasında 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 çıktıları yazdırır. +CASE=1 gibi bir simülatör bağımsız değişkenini 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 ondalık değerlerden oluşan, tek bir boşlukla ayrılmış ve satır sonuyla biten bir satırdı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