¿Cómo leer datos hexadecimales de un archivo de texto y escribir en la memoria en verilog?

5

Tengo un archivo de texto llamado "Hex_data.txt". Quiero cargar el contenido de Hex_data.txt en una RAM de nombre variable en verilog. Cuando intento esto, aparece un error que indica que no se puede encontrar el archivo de texto. ¿De dónde se carga este archivo?

El contenido de "hex_data.txt":

21           
a4         
2a         
26         
7a         
ff          
6f

Quiero crear un nombre de variable "RAM" definido como:

reg [6: 0] RAM; en el que el contenido de arriba guarda como:

RAM[0]=21    
RAM[1]=a4          
RAM[2]=2a            
RAM[3]=26           
RAM[4]=7a            
RAM[5]=ff            
RAM[6]=6f

Escribí un código:

module file_read;   
  reg [7:0] RAM [0:6];       
  initial $readmemh("Hex_data.txt", RAM);
  integer i;            
  initial begin               
    $display("data:");           
    for (i=0; i < 7; i=i+1)         
      $display("%d:%h",i,RAM[i]);           
  end                
endmodule     

Pero el código anterior no funciona. ¿Cómo puedo obtener la salida deseada?

    
pregunta Shine_flower

2 respuestas

5

Xilinx presentó este caso de uso en Sintesis de la Guía del usuario para Vivado UG901 en la página 126. Este ejemplo también funciona para la cadena de herramientas ISE de Xilinx, pero no conozco el número de la Guía del usuario.

La parte esencial del código es esta:

reg [31:0] ram [0:63];

initial begin
  $readmemh("rams_init_file.data", ram);
end

Hay dos funciones de lectura:
 - $ readmemb - > binario
 - $ readmemh - > hexadecimal

    
respondido por el Paebbels
2
module file_read;
reg [7:0] RAM [0:6];
initial
$readmemh("hex_data.txt", RAM);integer i;
initial begin for(i=0;i<7;i=i+1)             
$display ("RAM[%d]=%h",i,RAM[i]); end  endmodule           
    
respondido por el jaydeep

Lea otras preguntas en las etiquetas