Lo spazio totale di memoria indirizzabile consiste in 16 milioni di words da 32 bit (fig 3) di cui la parte residente nel chip si articola in due blocchi di RAM da 1Kx32 bits, una boot rom una cache da 64x32 bits e in registri dedicati al controllo delle varie periferiche e alla gestione degli interrupt; la parte rimanente viene sfruttata per indirizzare locazioni di memoria esterna utilizzabile per I/O o per la lettura di codice da una RAM esterna.
Una strategia utilizzata in molti DSP è quella di allocare in una zona di ROM (boot rom) interna, un piccolo programma (boot-loader) che consente di prelevare da una EPROM esterna (generalmente ad 8 bit e lenta rispetto ai tempi del DSP) del codice, caricarlo in memoria interna (ad accesso rapidissimo) ed eseguirlo. Questo permette di costruire applicazioni con un minimo uso di componenti (come è quella oggetto di questa tesi) che sfruttino appieno la velocità del DSP. La cache è una memoria veloce, in cui vengono copiate le istruzioni più usate, contenute in una memoria esterna più lenta in modo da facilitarne il prelevamento da parte della CPU. Attraverso un algoritmo, ogni volta che il DSP deve eseguire un fetch, la CPU controlla prima se la corrispondente istruzione da prelevare è già contenuta nella cache, se il riscontro è positivo, la lettura avverrà direttamente da quest’ultima e non dall’esterno; in caso contrario, dopo aver letto la locazione di memoria esterna, il suo contenuto verrà copiato nella cache al posto dell’istruzione non invocata da più tempo.
![]()
Fig 3 – Aree di memoria indirizzabili del DSP.
Come si può vedere dalla fig. 4 i bus per le aree di programma, dati e DMA sono separati, permettendo il prelevamento in parallelo di codici, lettura e scrittura di dati e operazioni del DMA. Per esempio la CPU in un singolo ciclo, può accedere a due dati in un blocco di RAM e prelevare del codice esterno, parallelamente al DMA che carica l’altro blocco di RAM.
![]()
Fig 4 – Architettura dei bus.
L’interfaccia con una memoria esterna e la porta seriale sono gestite da appositi registri mappati in memoria. Il primary-bus control register (fig 5) gestisce le modalità di comunicazione con dispositivi esterni, rendendo possibile lo scambio di informazioni con unità di memoria più lente rispetto ai tempi d’accesso del DSP, attraverso la generazione di un numero programmabile di wait state; inoltre la gestione dell’interfaccia è corredata da una serie di segnali che ne facilitano il suo uso:
-!STRB (O/Z): basso quando è in atto un accesso al bus esterno.
- R/!W (O/Z): fornisce informazioni sulle modalità di lettura o scrittura da parte della memoria.
-!HOLD (I): se lo si pone basso si inibisce l’accesso all’esterno e i precedenti segnali si portano in alta impedenza, insieme al bus indirizzi e dati.
-!HOLDA (O/Z): è l’hold acknowledge. Diviene attivo quando l’HOLD si porta basso.
-!RDY (I): indica che il dispositivo esterno e pronto per la comunicazione con il DSP.
![]()
Fig 5 - Primary-bus control register. Nella tabella è spiegato il significato dei vari bit in relazione ai loro valori.
Home | Precedente | Successivo