verilog的系统函数$readmemh的使用

Posted dennyTao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog的系统函数$readmemh的使用相关的知识,希望对你有一定的参考价值。

在verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”filename”中的路径要用反斜杠’/’,而不是斜杠’\’。如

$readmemh("F:/mydesigen/re_input.txt",re_input);

上面的语句是正确的,而如果用斜杠就有问题,如

$readmemh("F:\mydesigen\re_input.txt",re_input);

对于需要的txt文件,其格式为每行一个数据,例如用matlab产生文件则可以这样写

fid0 = fopen(‘F:\mydesigen\re_input.txt‘,‘w+‘);

fprintf(fid0,‘%x \n‘,real(info));

其中的换行符是必须的。同时,在matlab中,路径语句的斜杠’\’或是反斜杠’/’都没有问题。

module memory();
reg [7:0] my_mem [0:255];
initial
begin
        /*$readmemh("file",mem_array,start_addr,stop_addr);*/
        $readmemh("mem.list", my_mem);
        $display("0x00: %h", my_mem[8h00]);
        $display("0x01: %h", my_mem[8h01]);
        $display("0x55: %h", my_mem[8h55]);
        $display("0x56: %h", my_mem[8h56]);
end

endmodule
/*
        //comments are allowed
        0xab //addr 8‘h00
        0xba //addr 8‘h01
        @55  //jump to 8‘h55
        0x55 //addr 8‘h55
        0xaa //addr 8‘h56
*/

我常用的是:

a0=funcCensusOneImage(‘im0.pgm‘,3);

fid0=fopen(‘G:\data.txt‘,‘wt‘);

fprintf(fid0,‘%x\n‘,a0);

fclose(fid0);

向G:\data.txt文件写入经过ct变换的8位16进制数据,且每一个数据占一行,符合modelsim仿真时将data.txt数据读入存储器寄存器的规范。

以上是关于verilog的系统函数$readmemh的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何理解verilog HDL中的不定值(x)?

verilog modelsim 对文件进行仿真读写

system-verilog 动态数组的初始化

查询表look up table 用verilog怎么写呢?

verilog语言中任务和函数的区别

verilog中$disllay中的$是啥意思