Dieses Beispiel zeigt, wie Sie einen Speicherblock mithilfe der LPM-Funktion lpm_ram_dq instanziieren. Die Variable RAM verwendet die lpm_ram_dq Funktion aus der LPM-Bibliothek. Die Ports werden zunächst definiert und dann den LPM-Ports zugeordnet, wie im roten Text dargestellt. Die Parameterwerte werden dann mit dem Schlüsselwort defparam übertragen. In diesem Beispiel wird ein 16 x 256-RAM-Block instanziiert; Sie können einen ähnlichen Prozess verwenden, um RAM-Blöcke anderer Größen zu instanziieren.
Der lpm_file Parameter bezieht sich auf die Memory Initialization File (.mif), die den ursprünglichen Inhalt eines Speicherblocks (RAM oder ROM) angibt. Ein MIF ist eine ASCII-Textdatei, die manuell erstellt oder aus der Ausgabe einer Simulation gespeichert werden kann. In einem MIF müssen Sie die Werte für die Speichertiefe und -breite angeben. Optional können Sie die Radixen angeben, die für die Anzeige und Interpretation von Adressen und Datenwerten verwendet werden. Diese Werte werden im Extrahieren aus der Beispieldatei map_lpm_ram.mifin rotem Text angezeigt, der unten enthalten ist. Ein MIF wird als Eingabedatei zur Speicherinitialisierung im MAX+PLUS II Compiler und Simulator verwendet.
Weitere Informationen zur Verwendung dieses Beispiels in Ihrem Projekt siehe:
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
Extrahieren aus der MIF-Datei
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;