VHDL no tiene capacidad incorporada para leer archivos binarios, ¿Verilog y SystemVerilog lo tienen?

1

La lectura y escritura de archivos binarios en VHDL no es sencilla, no estoy seguro de por qué esto es así. Creo que Verilog y SystemVerilog están más cerca de C. ¿Tienen capacidad incorporada para leer / escribir archivos binarios? Espero que SystemVerilog lo tenga ya que es un lenguaje de alto nivel destinado a la verificación. Sin embargo, no estoy seguro de Verilog en absoluto.

    
pregunta quantum231

1 respuesta

2

Nunca lo probé, así que acabo de abrir mi pequeña Guía de referencia dorada de Verilog del sistema para la sintaxis exacta. Encontré una descripción de $fopen pero también encontré algunas correcciones que hice al texto.

$fopen( "filename" , "mode [b] [+] ");

el modo puede ser r (leer), w (escribir), a (anexar).
 b es para binario
El + final está abierto para leer y escribir.

fd = $fopen("example","rb+");

Lo siguiente me funcionó devolviendo 0x0, 0x01 ... 0xFF de un archivo de prueba de 256 bytes:

reg [7:0] binv;
integer fd;
integer loop;

   initial
   begin
     fd = $fopen("C:\tmp\hex256.bin","rb");
     if (fd==0)
     begin
        $display("Could not open file '%s'","c:\tmp\test.bin");
        $stop;     
     end

     for (loop=0; loop<256; loop=loop+1)
     begin
        binv = $fgetc(fd);
        $display("0x%02X",binv);
     end
   end

También me hice una prueba rápida dejando la 'b' fuera. La lectura va desde 0x00..0x19. Después de eso produce 0xFF. A partir de eso, interpreto que 0x1A (Control-Z) se ve como un EOF. Sin embargo, como esa es una característica de Windows / DOS, bien podría ser que en un sistema Unix / Linux el programa funcionaría incluso en modo texto. Seguiría usando "rb", ya que lo hace compatible y también aclaro a otros lectores de su código, que está trabajando con archivos binarios

    
respondido por el Oldfart

Lea otras preguntas en las etiquetas