zoukankan      html  css  js  c++  java
  • Initialising Memories

     

    The file_name and memory_nameare memory_start and memory_finish are optional, it missed out they default to the start index of the named memory and the end of the named memory respectively.

    Memories can be stored in a file in the format shown below, the address is specified as @< address>, where the address is in hexadecimal.

            @003
            00000011
            00000100
            00000101
            00000110
            00000111
            00001000
            00001001
    

    With the above file it can be seen if the memory is large it would become very tedious to work out the address of a specific byte, so it is normally a good idea to use milestones along the memory file, so a larger file may look something like the following:

            @003
            00000011
            00000100
            00000101
            @006
            00000110
            00000111
            @008
            00001000
            00001001
    

    or if the data is contiguous, omit the address entirely.

    Now that a memory file exists to access it, it has to be initialised for memory reading. This can be done by the following.

            module testmemory;
               reg [7:0] memory [9:0];
               integer   index;
    
               initial begin
                  $readmemb("mem.dat", memory);
    
                  for(index = 0; index < 10; index = index + 1)
                  $display("memory[%d] = %b", index[4:0], memory[index]);
               end
            endmodule // testmemory
    

    with the file mem.data as

            1000_0001
            1000_0010
            0000_0000
            0000_0001
            0000_0010
            0000_0011
            0000_0100
            0000_0101
            0000_0110
            0000_0000
    

    EXERCISE

    Store the above data in a file and run the above programme

    Consider and understand the following code (run it to check):

            module fileDemo;
    
               integer   handle, channels, index, rand;
               reg [7:0] memory [15:0];
    
               initial begin
                  handle = $fopen("mem.dat");
                  channels = handle | 1;
                  $display("Generating contents of file mem.dat");
                  $fdisplay(channels, "@2");
    
                  for(index = 0; index < 14; index = index + 1) begin
                  rand = $random;
                  $fdisplay(channels, "%b", rand[12:5]);
                  end
    
                  $fclose(handle);
    
                  $readmemb("mem.dat", memory);
    
                  $display("
    Contents of memory array");
                  for(index = 0; index < 16; index = index + 1)
                  $displayb(memory[index]);
               end
    
            endmodule // fileDemo
    

    previous contents

  • 相关阅读:
    1112评论汇总
    二叉树前序中序后续(递归和非递归遍历)
    leetcode Best Time to Buy and Sell Stock III
    JNI(Java本地方法调用)
    中文分词工具介绍
    指针的引用
    Java变量方法初始化顺序
    Java数组与列表转换的java.lang.ClassCastException
    字符串或者数字数组全排列
    Hbase基本命令
  • 原文地址:https://www.cnblogs.com/touchblue/p/3537873.html
Copyright © 2011-2022 走看看