verilog memory

memory 定义

命名规则:reg[n-1:0] 存储器名[m-1:0]

说明:这是m个n位的存储器,该存储器的地址范围是0-(m-1)

eg:

reg[7:0]  data_rd[99:0];//100个8位的存储器,地址范围0~99

赋值:memo[200] = 4'b1010;

说明:给第200地址单元赋值4'b1010;

精确到位:memo[56][2]

说明:第56地址的第2位数据

赋值:wire data=memo[56][1];

说明:把memo中第56地址的第1位数据赋值给data;

赋值:wire data=memo[56][31:0];

说明:把memo中第56地址的前32位数据赋值给data;

memory 初始化赋值

(1)

$readmemh("data.txt",data_rd);//16进制为存储器赋值

$readmemb("data.txt",data_rd);//16进制为存储器赋值

这些系统任务从指定的文本文件中读取数据并加载到存储器。文本文件必须包含相应的二进制或者十六进制数。

eg:

initial
begin
$readmemh("data.txt",data_rd);//16进制为存储器赋值
for(n=0;n<=99;n=n+1)
$display("%h",data_rd[n]);
end

(2)分别对存储器中的每个字赋值。例如:
     reg [0:3] Xrom [1:4];
     Xrom[1] = 4'hA;
     Xrom[2] = 4'h8;
     Xrom[3] = 4'hF;
     Xrom[4] = 4'h2;

原文地址:https://www.cnblogs.com/p1332668050/p/13339861.html