EDA/SW/T&M
CO-DESIGN
per soddisfare i requisiti imposti dal progettista. Il semplice
rilascio (drop) del componente sulla pagina e l’esecuzione di
un doppio click sono le sole operazioni richieste per effettua-
re la selezione nell’editor.
Si consideri un UART (Fig. 2): trattandosi di un componente
essenzialmente di tipo firmware, l’editor fornisce le opzio-
ni di configurazione in modo da risultare immediatamente
comprensibili per l’utente che opera in questo campo. Non
è quindi necessaria alcuna opzione in termini di ingresso di
clock e di velocità di sovra-campionamento. La sola infor-
mazione richiesta è la baud rate (velocità di trasmissione)
e il tool genera automaticamente una sorgente di clock che
fornirà la frequenza appropriata al componente.
Un tool integrato
I dispositivi programmabili con CPU integrate richiedono il
supporto di tool capaci di gestire le attività di sviluppo har-
dware e software. Uno dei problemi dei tool silicon-centric
è rappresentato dal fatto che gli sviluppatori software sono
costretti a utilizzare strumenti ai quali non sono abituati e
che prevedono interfacce a livello di registri e di memorie.
In altre parole, in assenza di tool software adatti, un SoC pro-
grammabile tende a favorire il lavoro del progettista hardwa-
re a scapito di quello dello sviluppatore software. La sche-
dulazione dell’hardware è accelerata e i rischi minimizzati,
specialmente se confrontati con un flusso di sviluppo di un
circuito ASIC, ma l’onere di garantire il funzionamento in pra-
tica ricade sul team di sviluppo software.
Con PSoC Creator i progettisti non devono sviluppare le
interfacce specifiche per le funzionalità dei SoC e posso-
no scegliere l’ambiente IDE (Integrated Development Envi-
ronment) per lo sviluppo di applicazioni. Molti componenti
hanno un’interfaccia software (a eccezione dei componenti
di basso livello come LUT, porte logiche e multiplexer) che
semplifica il pilotaggio delle periferiche mediante codice C.
Invece di presentare un insieme di registri mappati in memo-
ria caratterizzati da campi di bit (bit field) complessi ed effetti
collaterali spesso poco documentati, i componenti raggrup-
pano le funzionalità tipiche in chiamate alle API in linguaggio
C. Per avviare il funzionamento di un timer è possibile ef-
fettuare una chiamata a un’API come Timer_1_Start(). Per la
lettura del valore effettivo è possibile utilizzare il valore for-
nito da Timer_1_ReadCounter(). Una volta assimilato lo stile
dell’API, un progettista è spesso in grado di ipotizzare i nomi