Pregunta

De repente, se me pide que investigue algún código de banco de pruebas de Verilog que usa mucho $ readmemh y $ writememh. Entendí que básicamente leía en la memoria y escribía en la memoria. Me alegrará si puede señalar algunos recursos relacionados con esas rutinas. PD: busqué en google sin éxito. (Soy muy ... muy nuevo en Verilog)

¿Fue útil?

Solución

Estoy de acuerdo en que no es demasiado fácil encontrar algo sobre readmem / writemem. Puedes encontrar un poco aquí: http://fullchipdesign.com/index_files/readmemh.htm

De todos modos, no hay mucho que decir sobre estas funciones, la sintaxis es:

$readmem[hb]("File",ArrayName,StartAddr,EndAddr)
$writemem[hb]("File",ArrayName,StartAddr,EndAddr)

Verilog es muy exigente con el formato del archivo, la cantidad de bits en el archivo de texto debe coincidir con la cantidad de bits en la matriz.

Te recomiendo que juegues un poco definiendo una matriz, rellenándola con datos, escríbela con writememh / writememb e imprímela después.

Algo como esto debería ayudarlo a comenzar (¡no probado!).

integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries

initial begin
    for (i=0; i<16; i++) begin
        memory = i;
    end
    $writememb("memory_binary.txt", memory);
    $writememh("memory_hex.txt", memory);
end

¡Salud!

Otros consejos

Leer el archivo HEX funcionaría así:

integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries

initial begin
    for (i=0; i<16; i++) begin
        memory = i;
    end
    $readmemh("memory_binary.txt", memory);

end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top