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

时间:2015-10-16 06:23:25

标签: verilog file-read

我正在尝试从名为" data.in"的外部文件中读取数据。在verilog休息台。我试图将文件中的数据存储在两个变量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但没有运气。任何帮助都很棒。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

$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 ,右侧数据是奇数元素。