[基础]Verilog的$readmemx介绍

$readmemx的格式

$readmemx("./filename", <memname>, <<start_addr><,<finish_addr>>?>?);

 

简单的代码

module data_read;

reg [31:0] mem [0:11];
integer i;

initial $readmemh("./data.txt",mem);

initial begin
  for(i=0; i<12; i=i+1)
    $display("%d: %h", i, mem[i]);
end

endmodule

 data.txt

// Hexadecimal values for $readmemh demo
02328020  // can include comments with double forward slash (standard Verilog comment)
02328022  // second 32-bit value
02328024  // third value
02328025  // etc.

// can break up into related groups, insert comments, etc.

8e700002
ae700001
1232fffa
1210fff9  // last value

 

note: 

如果将mem的宽度调整为[15:0],则会产生错误,无输出

Warning: (vsim-PLI-3406) Too many digits (8) in data on line 2 of file "./data.txt". (Max is 4.)    : data_read.v(6)

如果将mem的宽度调整为[63:0],则结果变为

#           0: 0000000002328020
#           1: 0000000002328022

#           2: 0000000002328024 

这种比较可以看出,系统任务是按行读取的。

 

结论

这只是一个浅谈$readmemx设计的小例子。

http://blog.csdn.net/henhen2002/article/details/5350351 是一篇不错的介绍。

 

posted on 2012-05-22 06:49  单向度的人  阅读(3683)  评论(0编辑  收藏  举报

导航