2009-03-10 14 views
12

All'improvviso, sono costretto a esaminare un codice di verilog testbench che usa pesantemente $ readmemh e $ writememh. Ho capito che fondamentalmente legge nella memoria e scrive nella memoria. Sarò felice se puoi indicare alcune risorse relative a tali routine. PS: ho cercato in google per nessun successo. (Sono molto ... molto nuovo per Verilog)

+1

Tu non stai cercando abbastanza duro, allora! Prova a cercare qualcosa come "tutorial readmem". La documentazione per il tuo simulatore dovrebbe avere anche delle informazioni utili. – Marty

+0

@Marty, quando ho cercato "tutorial readmem" in google, questa pagina SO è il migliore ... ;-))) – Alphaneo

+1

Un IEEE gratuito 1800-2012 è ora disponibile: sezione 21.4 "Caricamento dei dati dell'array di memoria da un file ", ecc. – toolic

risposta

17

Concordo non è troppo facile trovare qualcosa su readmem/writemem. È possibile trovare un po 'qui: http://fullchipdesign.com/index_files/readmemh.htm

In ogni caso, non c'è troppo da dire su queste funzioni, la sintassi è:

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

Verilog è molto esigente sul formato del file, il numero di bit nel file di testo devono corrispondere al numero di bit nell'array.

Ti consiglio di giocare un po 'definendo un array, riempiendolo con i dati scrivilo con writemem/writememb e stampalo in seguito.

Qualcosa di simile dovrebbe iniziare (non provato!).

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 

Cheers!

0

lettura file HEX funzionerebbe in questo modo:

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 
Problemi correlati