Cet exemple montre comment activer instantanément un bloc mémoire en utilisant la fonction LPM lpm_ram_dq. La ram variable utilise la fonction lpm_ram_dq de la bibliothèque LPM. Les ports sont initialement définis, puis mis en mappés sur les ports LPM, comme indiqué dans le texte rouge. Les valeurs des paramètres sont ensuite transmises avec le mot-clé defparam. Dans cet exemple, un bloc de RAM 16 x 256 est instantané ; vous pouvez utiliser un processus similaire pour instantanéiser les blocs de RAM d’autres tailles.
Le paramètre lpm_file fait référence au fichier d’initialisation de la mémoire (.mif) qui spécifie le contenu initial d’un bloc mémoire (RAM ou ROM). Un MIF est un fichier texte ASCII qui peut être créé manuellement ou enregistré à partir de la sortie d’une simulation. Dans un MIF, vous êtes tenu de spécifier les valeurs de profondeur et de largeur de la mémoire et, en option, vous pouvez spécifier les radixes utilisés pour afficher et interpréter les adresses et les valeurs de données. Ces valeurs sont indiquées en texte rouge dans l’extrait du fichier d’échantillons, map_lpm_ram.mif, qui est inclus ci-dessous. Un MIF est utilisé comme fichier d’entrée pour l’initialisation de la mémoire dans le compilateur et le simulateur MAX+PLUS II.
Pour plus d’informations sur l’utilisation de cet exemple dans votre projet, consultez :
RAMvmvmv.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
Extraire du fichier MIF
Télécharger 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;