无法读取verilog中的数据输入文件

Unable to read data input file in verilog

我正在尝试从 verilog rest bench 中名为 "data.in" 的外部文件中读取数据。我试图将文件中的数据存储在两个变量 data1 和 data2 中。这是输入文件的一部分。仅读取十六进制数据。不用看评论了。

// This is a generated input file.
//
//  rj
// Left      Right        No.
   003E      002E      // r1
   002E      0017      // r2
   0026      0030      // r3
   0005      002C      // r4
   0034      0015      // r5
   000B      0023      // r6
   0007      0021      // r7
   0028      0001      // r8
   0007      0012      // r9
    //
//  Coefficient u
   00D3      0034      // 1
   0116      01F2      // 2
   0016      0154      // 3
   01D0      002E      // 4

我已经尝试过 memread、fscanf,但没有成功。任何帮助都很棒。 提前致谢。

除非有限制阻止您这样做,否则最简单的方法是使用 $readmemh 到单个变量中,然后根据需要拆分数据:

  reg [15:0] data[26]; // Make this is total number of 16-bit values to read from the file
  reg [15:0] data1[13]; // Also make these as long as needed, which I assume they are already
  reg [15:0] data2[13];
  integer i;  
  ...
  initial begin
    $readmemh("data.in", data);
    for (i = 0; i < 26; i  = i + 1) begin
      if (i % 2) begin // Right
        data2[i / 2] = data[i];
      end
      else begin // Left
        data1[i / 2] = data[i];
      end
    end
  end

上面将把数据读入数组,左右数据分开。您始终可以跳过该步骤,因为您知道左侧数据位于 data 的偶数元素中,右侧数据位于奇数元素中。