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];
endRegister 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.
Tantangan
SedangImplementasikan 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;
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Desain dan Verifikasi RTL
1RTL Kombinasional yang Andal
Nilai Default Mencegah LatchEncoder PrioritasValidasi One-HotDekode Case yang AmanRangkuman: Router Permintaan2Lebar Bit dan Aritmetika Bertanda
Mempertahankan Bit CarryPerbandingan BertandaPergeseran Kanan AritmetikaOverflow dan SaturasiRangkuman, Selisih Bertanda5Memori dan Tabel Pencarian
Tabel ROM KombinasionalPenyimpanan array registerPort Baca TerdaftarPenerusan Baca-TulisRingkasan: Bank Baca Ganda3RTL yang Dapat Digunakan Kembali
Fungsi KombinasionalParameter yang Aman terhadap LebarGenerate loopGenerate dengan KondisiRingkasan: Masker Bit yang Dapat Digunakan Kembali6Testbench dengan Pemeriksaan Mandiri
Pemeriksaan Empat KeadaanTask Checker yang Dapat Digunakan UlangModel Referensi dan SkorCakupan Batas dan KontrolRangkuman: Audit PenjumlahLatihan sendiri: Compiler Verilog online