Menu
CoddyTech

Port Baca Terdaftar

Termasuk bagian Desain dan Verifikasi RTL dalam perjalanan Verilog di Coddy. Pelajaran 23 dari 38.

Pembacaan terdaftar menangkap data memori pada tepi clock dan mempertahankan nilai tersebut setelahnya. Enable pembacaan dapat mempertahankan output sebelumnya pada siklus saat dinonaktifkan. Mengatur ulang register pembacaan tidak mengharuskan setiap word memori dihapus. Dengan assignment pembacaan dan penulisan nonblocking, ekspresi pembacaan melihat word sebelum tepi clock.

Kutipan yang relevan; deklarasi dan koneksi di sekitarnya disediakan dalam tantangan.

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

Register output hanya diperbarui pada tepi dan jalur aktif yang ditentukan.

Latensi pembacaan dokumen, perilaku saat pembacaan dinonaktifkan, dan status mana yang benar-benar dihapus saat direset.

challenge icon

Tantangan

Sedang

Implementasikan memori 8-bit dengan empat kata, penulisan sinkron, dan pembacaan terdaftar q. we menulis pada tepi naik. rst hanya menghapus q secara sinkron; jika tidak, re memuat q dari mem[raddr] sebelum tepi; re=0 mempertahankan q. Memori tidak direset, dan penulisan tidak bergantung pada rst. Jika pembacaan dan penulisan menggunakan alamat yang sama pada satu tepi, q menerima kata lama. Pengujian menginisialisasi kata sebelum pembacaan diaktifkan. Kolom output: q. Semua kontrol dan data stabil sebelum setiap tepi naik clock; hasil diamati setelahnya.

Lengkapi design.v dan pertahankan nama module serta port-nya. testbench.v yang terkunci memberikan perubahan input dan mencetak output setelah stabil. Testbench memilih skenario menggunakan argumen simulator seperti +CASE=1; input standar tidak diperlukan. Jangan tambahkan pencetakan, delay, atau penghentian simulasi ke design. Output yang diharapkan adalah satu baris nilai desimal untuk setiap pengamatan, dipisahkan dengan satu spasi dan diakhiri baris baru.

Coba sendiri

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);
    // Ganti placeholder ini dengan desainmu.
    initial q = 0;
endmodule
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Desain dan Verifikasi RTL

Latihan sendiri: Compiler Verilog online