请教一个关于verilog中$readmenh的问题
时间:10-02
整理:3721RD
点击:
高手们,我在module中使用$readmenh如下,为什么显示的out 为XXXXXXX?并且在modelsim报错** Error: E:/test/AFE8406D.dat(1): near "@": syntax error, unexpected '@'[/email], expecting "class"
代码
`include "E:/test/AFE8406D.dat"
module ttt;
reg clk;
reg [31:0] men [256:0];
reg [31:0] out;
reg reset;
integer i;
initial
begin
#0
$fopen("AFE8406D.txt");
i = 0;
clk = 0;
reset = 0;
#5
$readmemh("AFE8406D.dat",men);
#1000
reset = 1;
end
always #4 clk=~clk;
always@(posedge[/email] clk)
begin
if(!reset)
begin
out <= 0;
end
else
begin
out <= men;
i <= i+1;
$display("%h,%h",i,out);
if(i==256)
$stop;
end
end
endmodule
其中文件AFE8406D.dat的数据格式为
@0 00005050
@2 0000001a
@4 0000001a
@6 0000001a
@8 0000001a
@a 0000001a
@c 0000001a
@e 0000001a
@10 0000001a
@12 0000001a
@14 0000001a
代码
`include "E:/test/AFE8406D.dat"
module ttt;
reg clk;
reg [31:0] men [256:0];
reg [31:0] out;
reg reset;
integer i;
initial
begin
#0
$fopen("AFE8406D.txt");
i = 0;
clk = 0;
reset = 0;
#5
$readmemh("AFE8406D.dat",men);
#1000
reset = 1;
end
always #4 clk=~clk;
always@(posedge[/email] clk)
begin
if(!reset)
begin
out <= 0;
end
else
begin
out <= men;
i <= i+1;
$display("%h,%h",i,out);
if(i==256)
$stop;
end
end
endmodule
其中文件AFE8406D.dat的数据格式为
@0 00005050
@2 0000001a
@4 0000001a
@6 0000001a
@8 0000001a
@a 0000001a
@c 0000001a
@e 0000001a
@10 0000001a
@12 0000001a
@14 0000001a
不需要'include,把MEM文件放在工程目录下就可。
always@(posedge clk)中的out<=mem应改为out<=mem[i],就可以读出MEM
楼上解释正确
