精华内容
下载资源
问答
  • verilog中$readmemb和$readmemh的使用

    万次阅读 多人点赞 2018-03-18 11:19:20
    菜鸟一枚,只是分享一下在学习的过程,和这两个系统函数的简单用法,$readmemb和$readmemh用来从文件中读取数据到存储器中。读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六...

    菜鸟一枚,只是分享一下在学习的过程,和这两个系统函数的简单用法,

    $readmemb和$readmemh用来从文件中读取数据到存储器中。

    读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六进制的数字。

    数字中不能包含位宽说明和格式说明,其中readmemb要求每个数字是二进制数,readmemh要求每个数字必须是十六进制数字。数字中不定值x或X,高阻值z或Z,和下划线(_)的使用方法和代表意义与一般Verilog HDL程序中的用法一致。

    在Verilog语法中,一共有以下六种用法:

     

    (1)$readmemb("<数据文件名>",<存储器名>);

    (2)$readmemb("<数据文件名>",<存储器名>,<起始地址>);

    (3)$readmemb("<数据文件名>",<存储器名>,<起始地址>,<终止地址>);

     

    (4)$readmemh("<数据文件名>",<存储器名>);

    (5)$readmemh("<数据文件名>",<存储器名>,<起始地址>);

    (6)$readmemh("<数据文件名>",<存储器名>,<起始地址>,<终止地址>);

     

    这里只说一下最简单的第一种和第四种(因为我也只了解这两种,哈哈)

     

    (1)$readmemb的使用

    先在Verilog代码目录下准备一个文件file1.txt,存入二进制数据:

    1111 1010 0101 1x1z 1_1_ 1_111    

    或者

    1111

    1010 

    0101 

    1x1z 

    1_1_ 

    1_111

    存在一行每个用空格隔开,跟分行存,输出结果是一样的,但是若在一行中不用空格隔开会出错,编译器会试图

    把一整行数据存在一个四位的存储单元中。

    `timescale 10ns/1ns
    module test;
    reg[3:0] memory[0:7];//申请八个四位的存储单元
    reg[4:0] n;
    initial
    	begin
    		$readmemb("file1.txt",memory); //读取file1.txt中的数字到memory
    	for(n=0;n<=7;n=n+1)   //把八个存储单元的数字都读取出来,若存的数不到八个单元输出x态,程序结果中会看到
    		$display("%b",memory[n]);
    	end
    endmodule

    编译,仿真,运行之后的输出结果:

    # 1111
    # 1010
    # 0101
    # 1x1z              不定态和高阻态输出依旧为不定态和高阻态
    # 0011              文件中村的是1_1_,忽略下划线
    # 1111               忽略下划线
    # xxxx                文件中只有六个数据,剩下两个输出为不定态x
    # xxxx

     

    (2)$readmemh的使用

    准一个文件file2.txt,存入十六进制数据:

    1234 5678 9012

    代码:

    `timescale 10ns/1ns
    module test;
    reg set;
    reg[15:0] memory[0:7];    //注意这里每个存储单元的长度为16位,因为每个数字是四位十六进制数,换算成二进制数是16位
    reg[4:0] n;
    initial
    	begin
    		$readmemh("file2.txt",memory);
    	for(n=0;n<=7;n=n+1)
    		$display("%h",memory[n]);
    	end
    endmodule

    输出:

    # 1234
    # 5678
    # 9012
    # xxxx
    # xxxx
    # xxxx
    # xxxx

    # xxxx

     

    若以后会了其他用法再来补充吧

    展开全文
  • verilog中使用$readmemh

    万次阅读 2011-05-11 10:46:00
    verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”filename”中的路径要用反斜杠’/’,而不是斜杠’/’。

    在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中,路径语句的斜杠’/’或是反斜杠’/’都没有问题。

     

    转自:http://leehowal.blog.163.com/blog/static/45808713200972911029896/

    展开全文
  • verilog的系统函数$readmemh的使用

    千次阅读 2019-09-29 02:02:16
    verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”filename”中的路径要用反斜杠’/’,而不是斜杠’\’。如 $readmemh("F:/mydesigen/re_input.txt",re_input); 上面的语句是正确的,而...

    在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[8'h00]);
            $display("0x01: %h", my_mem[8'h01]);
            $display("0x55: %h", my_mem[8'h55]);
            $display("0x56: %h", my_mem[8'h56]);
    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数据读入存储器寄存器的规范。

    转载于:https://www.cnblogs.com/woshitianma/archive/2012/12/19/2825547.html

    展开全文
  • Verilog用$readmemh导入数据

    千次阅读 2018-11-09 19:50:40
    reg [31:0]test[10:0];... initial $readmemh("G:/vivadoproject/test2/rtl/hello.txt",test); //用绝对路径保稳点  integer i = 0;  initial begin  $display("hello verilog"); ...

           reg [31:0]test[10:0];
          initial $readmemh("G:/vivadoproject/test2/rtl/hello.txt",test);       //用绝对路径保稳点
            integer i = 0;
            initial begin


             $display("hello verilog");    //
             
            for(i=0;i<8;i=i+1)
            begin 
            $display("%d:%h",i,test[i]);   //
            end
            end

    展开全文
  • verilog语言中有两个系统任务$readmemb,$readmemh可以用来从文件中读取数据到存储器中。这两个任务可以在仿真的任何时刻被执行使用,其使用方法如下: $readmemb 1,$readmemb("<数据文件名(路径地址和...
  • Verilog HDL程序中有两个系统任务 $readmemb 和 $readmemh,并用来从文件中读取数据到存储器中。 $readmemb("&lt;数据文件名&gt;",&lt;存储器名&gt;); $readmemh("&lt;...
  • Verilog HDL程序中有两个系统任务$readmemb和$readmemh,用来从文件中读取数据到存贮器中。这两个系统任务可以在仿真的任何时刻被执行使用,其使用格式共有以下六种: 1) $readmemb("<数据文件名>",<...
  • verilog中两种传递例化文件中参数的方法: 当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1) defparam 重定义参数 语法:defparam ...
  • verilog中有$readmemh(“filename”, mem_name)命令,在使用这个命令时,”filename”中的路径要用反斜杠'/',而不是斜杠'\',切记!如$readmemh("F:/mydesigen/re_input.txt",re_input);上面的语句是正确的,而...
  • 博主我查了很多资料,虽然会使用Verilogreadmemhreadmemhreadmemh和readmemb函数,可是,在vivado软件中怎么用?文件放在哪里?没有一篇文章提及。 花了几个小时,终于研究明白了,特此记录下来,也希望为后来...
  • Verilog的$readmemb和$readmemh简介和使用

    千次阅读 2020-05-17 17:59:35
    $readmemx的格式: $readmemb("<数据文件名>",<存贮器名>) $readmemb ("<...$readmemh("<数据文件名>",<存贮器名>) $readmemh("<数据文件名>",<存贮器名>.
  • Verilog数字系统设计教程》夏宇闻著p448 语法: $readmemb(“File”,MemoryName[, StartAddr[, FinishAddr]]); $readmemh(“File”,MemoryName[, StartAddr[, FinishAddr]]); 起始地址可以省略。 $readmemb(“File...
  • readmemb和readmemh用来从文件中读取数据到存储器中。 读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六进制的数字。 数字中不能包含位宽说明和格式说明,其中readmemb要求...
  • 转载:https://blog.csdn.net/winson_cys/article/details/100175964?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute....Verilog编写testbench时,系统函数比较常用的一般为displ...
  • $readmemb和$readmemh用来从文件中读取数据到存储器中。 读取的内容只包括:空白位置(空格、换行、制表格(tab和form-feeds),注释行、二进制或十六进制的数字。 数字中不能包含位宽说明和格式说明,其中readmemb...
  • 数字中不定值x或X,高阻值z或Z,和下划线(_)的使用方法及代表的意义与一般Verilog HDL程序中的用法及意义是一样的。另外数字必须用空白位置或注释行来分隔开。 在下面的讨论中,地址一词指对存贮器(memory)建模的...
  • (2)被读取的文件中不能包含位宽书名和格式说明,对于$ readmemb系统任务,每个数必须是二进制,对于$readmemh系统任务,每个数必须是十六进制。数字中可以有不定值x或X和高阻值z或Z,还可以有下画线(_)。另外...
  • Verilog数字系统设计十 任务和函数实验2 文章目录Verilog数字系统设计十前言一、...1 使用系统任务readmemb或readmemh从数据文件初始化实验8所设计的ROM、RAM; 2 设计合适的测试程序对初始化后的ROM、RAM进行读出测
  • Verilog Using $readmem or $readmemh in Modelsim

    千次阅读 2014-01-19 23:00:01
    Verilog提供了$readmemb和$readmemh命令来读ASCII格式文件,以初始化存储器内容。这个命令也可以在仿真中用来初始化Xilinx的BlockRAM或者SelectRAM元件。其语法格式如下: $readmemb (“”,design_instance); MIF...
  • Verilog读写文件

    万次阅读 多人点赞 2018-04-05 16:36:51
    一.读写文件相关的系统任务 在进行FPGA模块的开发过程中,常常需要对数据的处理过程进行行为仿真,以验证FPGA的功能逻辑... Verilog中读写文件常用到的系统任务主要有以下几个:1.文件打开、关闭与定位操作:$fo...
  • readmemh函数

    2021-05-17 19:55:49
    ram仿真数据初始化: readmemh函数对应文件格式: 第一种: 第二种:vmem格式 关于mem文件也可以参考ug898 Embedded Processor Hardware Design:165页描述
  • verilog与matlab文件交换

    千次阅读 2019-10-18 22:02:35
    verilog与matlab数据文件的交换 下面的两个程序内容是,matlab先通过函数生成128点的16bit的正弦数据,然后以十六进制的格式输出到文件sinData.txt。matlab生成sinData.txt后,verilog程序读取sinData.txt中的数据,...
  • Verilog初级教程(5)Verilog中的多维数组和存储器

    万次阅读 多人点赞 2020-06-26 21:55:04
    本篇博文进一步延伸,Verilog中也存在多维数组,它对应的硬件逻辑可以是存储器,诸如RAM,ROM,以及FIFO等。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 689
精华内容 275
关键字:

readmemhverilog