Register Dizisi Depolama
Coddy'nin Verilog Journey'sinin RTL Tasarımı ve Doğrulama bölümünün bir parçası. Ders 22 / 38.
Paketlenmemiş bir dizi, donanım depolama sözcüklerini modelleyebilir. Saat kontrollü bir yazma, seçilen tek bir sözcüğü günceller; sürekli okuma ise okuma saati olmadan bir sözcük seçer. Sentez, küçük dizileri yazmaçlarla gerçekleştirebilir veya desteklenen kalıplar için bellek kaynaklarını çıkarabilir. Yazılmamış bir sözcüğün sıfırdan başladığını asla varsaymayın.
İlgili alıntı; çevredeki bildirimler ve bağlantılar görevde sağlanmıştır.
reg [7:0] mem [0:3];
always @(posedge clk)
if(we) mem[waddr] <= data;
assign q = mem[raddr];Yazma kenar tetiklemelidir, okuma ise seçilen depolanmış sözcüğü izler.
Yazma etkinleştirmeyi ve okuma zamanlamasını açıkça tanımlayın; belirtilmemiş initial bellek içeriğine güvenmeyin.
Görev
OrtaDört adet 8 bitlik kelime uygulayın. Yükselen kenarda we, veriyi mem[waddr] içine yazar. q, mem[raddr] değerinin asenkron kombinasyonel okumasıdır. Belleğin sıfırlaması veya initial içeriği yoktur; testbench, okumadan önce gözlemlenen her adresi yazar. Gözlemler kenardan sonra gerçekleşir; bu nedenle aynı adrese yapılan bir yazma q içinde görünür. Çıktı sütunları: q. Tüm denetimler ve veriler, her yükselen saat kenarından önce kararlıdır; sonuçlar daha 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 değerler kararlı hâle geldikten sonra çıktıları yazdırır. +CASE=1 gibi bir simülatör bağımsız değişkeni 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 içerir; değerler tek bir boşlukla ayrılır ve satır yeni satır karakteriyle biter.
Kendin dene
module dut (input clk, input we, input [1:0] waddr, input [7:0] data, input [1:0] raddr, output [7:0] q);
// Bu yer tutucuyu kendi tasarımınızla değiştirin.
assign 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