Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 34
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 34 — #34
i
2.2. LIBRERIE UTILIZZATE
i
34
Package BRAMCore
Il package BRAMCore fornisce tipi, interfacce e moduli per supportare le BlockRam presenti sull’FPGA. La particolarità di questa classe sta nel fatto che durante il processo di sintesi questa non venga a far parte del disegno fisico della
fetta di silicio contenente le celle logiche, ma venga mappata in una delle RAM
presenti ai margini della board. Si tratta di memorie veloci, non veloci quanto
una cache ma di sicuro più efficienti di una normale DRAM presente in qualsiasi
computer, questo però comporta un costo elevato e quindi una quantità ridotta.
Nel package vengono definiti vari moduli, per il progetto BRAM_DUAL_PORT
è stato l’unico utilizzato, il quale consente di scrivere e leggere dalla memoria
attraverso ben due porte, in pratica è possibile eseguire due operazioni di scrittura o lettura sulla stessa ram nello stesso ciclo di clock grazie alla porta a e
alla porta b, aumentando così la velocità di processazione. L’unica difficoltà che
si affronta durante l’utilizzo di questo tipo di modulo è la complicatezza della
lettura, questa non può avvenire in meno di due cicli di clock. In un primo momento è necessario inoltrare la richiesta di lettura e solo successivamente quel
valore potrà essere utilizzato.
Algoritmo 2.4 Interfaccia BRAM_DUAL_PORT
1
2
3
4
interface BRAM_DUAL_PORT#(type addr, type data);
interface BRAM_PORT#(addr, data) a;
interface BRAM_PORT#(addr, data) b;
endinterface
Come si può ben vedere dall’interfaccia (Alg:2.4) per istanziare questo modulo
è necessario sapere il formato dell’indirizzo e il formato del tipo di dato, ad
esempio potremmo avere una RAM con indirizzo di tipo Bit#(5), e quindi
poter indirizzare fino a 32 locazioni da 0 a 31, e tipo di dato Bit#(10). Le
due porte sono due sotto-interfacce di tipo BRAM_PORT che necessitano degli
stessi parametri della sopra interfaccia.
Una volta che la BRAM è stata istanziata abbiamo a disposizione i metodi
presenti nell’interfaccia di BRAM_PORT (Alg:2.5).
Il metodo put attraverso il flag b determina se ci si trova di fronte ad un scrittura (True) oppure ad una richiesta di lettura (False) all’indirizzo passato come
argomento, il parametro data ha senso solo nel caso di una scrittura.
i
i
i
i