Alla scoperta dei D.S.P. Terza puntata 2/4

microprocessori dsp

Concludendo, nella zona di memoria che prende il nome di Stack viene salvato sia il contenuto del PC che il contenuto dell’accumulatore. Attraverso le istruzioni di PUSH e POP è possibile interagire direttamente con lo Stack. Per la precisione, con il comando PUSH viene trasferito il contenuto dell’accumulatore nello Stack, mentre con il POP si sposta nell’accumulatore il dato presente nello STACK.

Quanto appena citato non differisce di molto dal funzionamento di un normale microprocessore se non per il fatto che nel TMS320C50, come in quasi tutti i D.S.P., congiuntamente al PC lavora anche il PAB (Program Address Bus). Quest’ultima sigla indica un particolare bus dati utilizzato dal D.S.P. ogni volta che deve leggere, codificare ed eseguire un’istruzione. Il PAB è essenziale quando si usano istruzioni come la TBLW (Table Write) e la TBLR (Table Read) che consentono di creare all’interno della zona RAM dedicata ai dati una tabella che può essere letta, in modo semplice ed immediato, attraverso il Program Address Bus.

Al fine di rendere il dispositivo più flessibile, sono disponibili delle istruzioni di salto condizionato (Branch) in grado di testare più di una condizione prima di essere eseguite.

La maggior parte di tali istruzioni lavora con l’accumulatore, ma ve ne sono alcune che testano anche i flag e il piedino di I/O denominato BIO. In ogni caso, la caratteristica di queste istruzioni sta nel fatto che si possono testare più condizioni contemporaneamente. Ad esempio, è possibile verificare l’overflow ed il segno dell’accumulatore con un’unica istruzione digitando: BCND SALTO, LT, NOV. In questo caso, con LT si verifica che il contenuto dell’accumulatore sia un numero minore di zero, mentre con il termine NOV si controlla l’overflow dell’accumulatore.

La parola SALTO indica la “label” alla quale il PC deve “puntare” dopo aver verificato le condizioni specificate. Anche le chiamate alle subroutine possono essere “condizionate”, possiamo cioè chiamare una subroutine solo se vengono rispettate le condizioni specificate dall’istruzione CC (Call Conditionally). Inoltre, nel codice di ritorno della subroutine è possibile specificare, con l’istruzione RETC (Return Conditionally), altre condizioni da testare.

LE ISTRUZIONI CONDIZIONATE

Un’altra caratteristica dei D.S.P. è quella di possedere delle istruzioni che racchiudono in sé diversi comandi. Ad esempio, nel TMS320C50X l’istruzione XC (Execute Conditionally) permette di eseguire l’operazione specificata solo se sono rispettate particolari condizioni. Quando la CPU trova un’istruzione di questo tipo deve dapprima eseguire il test che segue e, solo se quest’ultimo ha esito positivo, deve procedere con l’esecuzione del programma. In caso contrario, nel PC viene trasferito un secondo indirizzo. L’istruzione XC lavora come il gruppo “IF, THEN, ELSE” del BASIC e averla a disposizione nel linguaggio macchina rappresenta un grande vantaggio. Analizziamo una possibile applicazione di tale istruzione, supponiamo di voler realizzare il seguente algoritmo: con l’accumulatore maggiore di zero e non in overflow trasferisci il numero FF hex nella locazione identificata dalla label TEMP, in caso contrario trasferisci il valore 00 hex. Sarà sufficiente scrivere: “XC 2,GT,NOV – SPLK #0FFh,TEMP SPLK #00h,TEMP”. Il numero 2 nell’istruzione XC indica di quanto deve essere incrementato il Program Counter se le condizioni non sono verificate.

Il kit è disponibile da Futura Elettronica

STAMPA     Tags:

Leave a Reply