Penyimpanan array register
Termasuk bagian Desain dan Verifikasi RTL dalam perjalanan Verilog di Coddy. Pelajaran 22 dari 38.
array yang tidak dikemas dapat memodelkan word pada penyimpanan perangkat keras. Penulisan yang dikendalikan oleh clock memperbarui satu word yang dipilih; pembacaan kontinu memilih sebuah word tanpa clock baca. Sintesis dapat mengimplementasikan array kecil menggunakan register atau menyimpulkan resource memori untuk pola yang didukung. Jangan pernah mengasumsikan word yang belum ditulisi dimulai dari nol.
Kutipan yang relevan; deklarasi dan koneksi di sekitarnya disediakan dalam tantangan.
reg [7:0] mem [0:3];
always @(posedge clk)
if(we) mem[waddr] <= data;
assign q = mem[raddr];Penulisan dipicu oleh tepi, sedangkan pembacaan mengikuti word tersimpan yang dipilih.
Tentukan pengaktifan penulisan dan waktu pembacaan secara eksplisit; jangan bergantung pada isi memori initial yang tidak ditentukan.
Tantangan
SedangImplementasikan empat word 8-bit. Pada tepi naik, we menulis data ke dalam mem[waddr]. q membaca mem[raddr] secara kombinatorial asinkron. Memori tidak memiliki reset atau isi initial; testbench menulis ke setiap alamat yang diamati sebelum membacanya. Pengamatan dilakukan setelah tepi, jadi penulisan ke alamat yang sama akan terlihat pada q. 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 menyediakan 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 pada desain. Output yang diharapkan adalah satu baris nilai desimal untuk setiap pengamatan, dipisahkan oleh satu spasi dan diakhiri dengan baris baru.
Coba sendiri
module dut (input clk, input we, input [1:0] waddr, input [7:0] data, input [1:0] raddr, output [7:0] q);
// Ganti kode sementara ini dengan desainmu.
assign 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