微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教一个关于verilog中$readmenh的问题

请教一个关于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,把MEM文件放在工程目录下就可。
always@(posedge clk)中的out<=mem应改为out<=mem[i],就可以读出MEM

楼上解释正确

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top