Contoh ini menunjukkan cara meng-instantiate blok memori menggunakan fungsi LPM lpm_ram_dq. Variabel ram menggunakan fungsi lpm_ram_dq dari pustaka LPM. Port awalnya didefinisikan dan kemudian dipetakan ke port LPM, seperti yang ditunjukkan dalam teks merah. Nilai parameter kemudian dilewati dengan kata kunci defparam. Dalam contoh ini, blok RAM 16 x 256 diinisiasi; Anda dapat menggunakan proses serupa untuk menginisiasi blok RAM dengan ukuran lain.
Parameter lpm_file mengacu pada Berkas Inisialisasi Memori (.mif) yang menentukan konten awal blok memori (RAM atau ROM). MIF adalah berkas teks ASCII dapat dibuat secara manual atau disimpan dari keluaran simulasi. Dalam MIF, Anda harus menentukan nilai kedalaman dan lebar memori dan secara opsional Anda dapat menentukan radix yang digunakan untuk menampilkan dan menafsirkan alamat dan nilai data. Nilai ini ditampilkan dalam teks merah dalam ekstrak dari file sampel, map_lpm_ram.mif, yang disertakan di bawah ini. MIF digunakan sebagai berkas masukan untuk inisialisasi memori di MAX+PLUS II Compiler dan Simulator.
Untuk informasi lebih lanjut tentang penggunaan contoh ini dalam proyek Anda, kunjungi:
RAMveri.v
// instantiation of lpm_ram_dq, 16-bit data, 256 address location
module map_lpm_ram (dataout, datain, addr, we, inclk, outclk);
// port instantiation
input [15:0] datain;
input [7:0] addr;
input we, inclk, outclk;
output [15:0] dataout;
// instantiating lpm_ram_dq
lpm_ram_dq ram (.data(datain), .address(addr), .we(we), .inclock(inclk),
.outclock(outclk), .q(dataout));
// passing the parameter values
defparam ram.lpm_width = 16;
defparam ram.lpm_widthad = 8;
defparam ram.lpm_indata = "REGISTERED"
defparam ram.lpm_outdata = "REGISTERED"
defparam ram.lpm_file = "map_lpm_ram.mif"
endmodule
Ekstrak dari Berkas MIF
Unduh map_lpm_ram.mif
WIDTH = 16;
DEPTH = 256;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT BEGIN
0 : ffff;
1 : 0000;
2 : bbf3;
3 : 0000;
4 : 0000;
.
.
.
fb : 0000;
fc : 0000;
fd : 0000;
fe : 0000;
ff : 0000;
END;