2016-07-21 26 views
-1

Ich habe versucht, Binärdatei in SystemVerilog in meinem Testbench schreiben.binär schreiben SystemVerilog

int file = $fopen(path,"w"); 
if (!file) begin 
    $error("File could not be open: ", path); 
    return; 
end 
$fwrite(file, "%u", 32'h4D424D42); 
$fclose(file); 

Und bekommen Ergebnis: 02 0c 02 0c

I QuestaSum 10.2c verwenden. Warum bekomme ich dieses Ergebnis? Vielen Dank.

+0

Use% h, überprüfen Formatangabe http://www.csee.umbc.edu/portal/help/VHDL/verilog/system.html –

+1

Was erwarten Sie zu bekommen? Warum ist das ein Problem? Wie liest du deine Datei? – toolic

+0

Wenn ich% h verwende, werden die Daten als Text in die Datei gedruckt: "4D424D42". Ich versuchte caste 4-Zustand-Datentyp in 2-Zustand vor Aufruf $ fwrite Datentyp und erhalten korrekte Ergebnis: int tmp = int '(32'h4D424D42); $ fwrite (Datei, "% u", tmp); –

Antwort

1

% u fügt unformatierte Binärdaten in die Datei ein. Erwarte nicht, dass es in einem lesbaren Format ist. Stellen Sie sicher, dass Sie die Datei im Binärformat "rb" oder "wb" öffnen ... .Lesen Sie die Binärdaten zurück und Sie sollten den geschriebenen Wert anzeigen.

Sie können% z verwenden, wenn Sie 4 Statuswerte speichern möchten.

int rd; 
int file = $fopen(path,"wb"); // open in binary mode 
if (!file) begin 
    $error("File could not be open: ", path); 
    return; 
end 
$fwrite(file, "%u", 32'h4D424D42); 
$fclose(file); 
// read back binary data from file 
file = $fopen (path,"rb"); // open in binary mode 
if (!file) begin 
    $error("File could not be open: ", path); 
    return; 
end 
$fscanf(file,"%u",rd); 
$fclose(file); 
$display("%h",rd);