Testbench 文件读写

您所在的位置:网站首页 testbench文件 Testbench 文件读写

Testbench 文件读写

2023-01-18 23:55| 来源: 网络整理| 查看: 265

1.  读操作

读操作用到的语句是:$readmemb()或$readmemh()。

以$readmemb()为例,它的调用为

          $readmemb("file_name",memory)

           file_name:可以是.txt、.doc等格式的文件,但必须遵守ROM的规范,即其内容形式必须如下:           

   @00  01010_01001010010010101010

   @01  000010100101001001_0010010

        .......

   @0f  0010101010101_010010010010

         其中:@后紧跟的ROM单元的地址,它必须用十六进制表示。在ROM单元地址与其后  的二进制比特流串之间至少要有一个空格(亦可以有回车);比特流可以用"_"隔开,以增强程序的可读性。

           memory:memory的声明格式为:

           reg[WORD_LEN-1 : 0]  my_rom [WORD_NUM-1 : 0];

         其中:WORD_LEN代表的是每一个ROM向量的长度,即二进制流的长度;WORD_NUM代表的是ROM向量的个数。

         值得注意的是执行完$readmemb()指令后文件中的对应单元就一次性的存储到my_rom当中。在后续的处理中my_rom只能通过其地址访问,一次性地读取对应地址上的向量,如my_rom[k];而不能访问到具体的每一位或几位,如my_rom[k][n];如果要取其中的某一位,可通过将ROM得向量赋给以个寄存器组,再进行引用,需强调的是ROM单元存储文件中向量的时候,将文件二进制串前头的数据存于高位,将二进制串中末尾的数据存于低位。

一般情况下,可由matlab生成内存文件。

例如:以下是一个简单的.m文件,生成test.txt 后将该txt 文件保存到Quartus II 工程中的modelsim文件夹下,注意,不管testbench.v文件保存在哪里,该txt文件必须保存在modelsim文件夹下!!!

           clear all            clc            fid = fopen('test.txt','wt');              for i  = 0 : 63                     fprintf(fid,'@%x   %s\n',i,dec2bin(i,6));            end            fclose(fid); 

 

testbench.v code

integer read_addr; 

reg [7:0] mem[63:0]; // a 8-bit,

initial

begin

         $readmemb ( "test.txt", mem );

end

    always@(posedge clk_x2 or posedge reset) 

    begin 

        if(reset) 

        begin    

            read_addr



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3