采用单独输入和输出端口的 Verilog HDL 参数 RAM

author-image

作者

此示例展示了如何使用 LPM 函数 lpm_ram_dq 对内存模块进行实例化。变量 RAM 使用 LPM 库中的 lpm_ram_dq 函数。端口经过初值定义,然后映射到 LPM 端口,如红色文本所示。然后通过关键字 defparam 传递参数值。此示例对一个 16x256 RAM 模块进行了实例化;可以按照类似流程对其它大小的 RAM 模块进行实例化。

lpm_file 参数指的是指定了内存模块(RAM 或 ROM)初始内容的内存初始化文件 (.mif)。MIF 是可以手动创建或从仿真输出中保存的 ASCII 文本文件。在 MIF 中,需要指定内存深度和宽度值,还可以选择指定用于显示和解释地址和数据值的基数。这些值在示例文件 map_lpm_ram.mif 的摘录中以红色文本显示,如下所示。在 MAX+PLUS II Compiler and Simulator 中,MIF 用作内存初始化的输入文件。

有关在项目中使用此示例的更多信息,请访问:

如何使用 Verilog HDL 示例 ›

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

MIF 文件的摘录

下载 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;