我正在尝试从名为" 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但没有运气。任何帮助都很棒。 提前谢谢。
答案 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
,右侧数据是奇数元素。