2015-05-16 70 views
2

我想用FPGA做一些圖像處理,我的支持者希望我們用Modelsim顯示一些模擬結果。因此,基本上我們嘗試讀取testbench中的圖像文件,並將其寫入另一個文件,但它停止讀取文件的一半文件。下面是我的源代碼爲什麼我不能讀整個文件?

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大小bitmapfile(64KB) 但輸出文件是38KB。文件的幾乎一半。我用480x720大小的位圖文件(1013kb)嘗試它,它的輸出文件幾乎是原始文件的一半。 使用非常小的文件輸入,我們可以得到正確的輸出文件。

這是爲什麼發生?輸入/輸出文件有沒有更好的功能?

回答

3

在這種情況下,您不應該使用$fscanf$fscanf跳過空格,包括空行(就像C中的fscanf()函數)。

你還是使用$fread功能:

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

謝謝! 有一個錯誤,所以我不先使用fread ....但它解決了問題// fread(temp,in)是正確的,所以它有一個錯誤 –

相關問題