Menu
Coddy logo textTech

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.

challenge icon

Görev

Orta

Dö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;
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