为什么我不能读取整个文件?

Why can't I read whole file?

我正在尝试用 FPGA 进行一些图像处理,我的支持者希望我们用 Modelsim 展示一些模拟结果。

所以,基本上我们尝试在测试台中读取图像文件并将其写入另一个文件,但它在文件的一半处停止读取文件。这是我的源代码

module fileio1;
  integer in,out,r;
  reg [31:0]temp;
  reg clk;
  initial
  begin
    r=0;
    temp =0;
    clk = 0;
    in = $fopen("test120.bmp","r");
    out = $fopen("result.bmp","w");
  end

  always #1 clk = ~clk;

  always @(negedge clk)
  begin
    r = $fscanf(in,"%c",temp);
  end

  always @(posedge clk)
  begin
    if(~r) $fwrite(out,"%c",temp);
  end
endmodule

这是源代码,我们的输入文件是 120x180 大小的位图文件 (64kb) 但输出文件是 38kb。几乎一半的文件。我尝试使用 480x720 大小的位图文件 (1013kb),它的输出文件也几乎是原始文件的一半。 使用非常小的文件输入,我们可以获得正确的输出文件。

为什么会这样? input/output 文件有更好的功能吗?

你不应该在那种情况下使用 $fscanf$fscanf 跳过 white-space,包括空白行(就像 C 中的 fscanf() 函数)。

您应该使用 $fread 函数:

always @(negedge clk)
  begin
    r = $fread(temp,in);
  end