Home
Accesso / Registrazione
 di 

DSP: Cosa sono i Digital Signal Processor? Sesta Parte

DSP: Cosa sono i Digital Signal Processor?

DSP: Cosa sono i Digital Signal Processor?: Con la subroutine “Input” abbiamo letto dalla porta con indirizzo 50 hex una serie di 255 dati che sono stati poi memorizzati a partire dall’indirizzo 0F00h fino all’indirizzo 0FFFh.

Con la subroutine “Output” abbiamo inviato 255 dati disponibili in memoria alla porta con indirizzo 51 hex. Tra la subroutine di “Input” e quella di “Output” possiamo scrivere la sequenza di istruzioni necessaria per elaborare e per trasformare i dati in funzione dell’applicazione desiderata.

dsp_operazioni_indirizzamento

DSP: Istruzioni di indirizzamento

Un altro blocco di istruzioni disponibili nei DSP è quello relativo ai registri di indirizzamento dei dati in memoria, denominati registri ausiliari. Le istruzioni contenute in questo gruppo variano da un dispositivo all’altro, ma il loro utilizzo è comune a tutti poiché la funzione dei registri ausiliari è comune per tutti i DSP e consiste nel velocizzare la gestione dei dati residenti in memoria.

Tra le istruzioni principali di indirizzamento, relative al TMS320C50, possiamo rammentare la LAR (Load ARn) che consente di trasferire un dato all’interno di uno dei registri ausiliari disponibili, la MAR (Modify ARn) che permette di agire contemporaneamente su un registro ausiliario e sul puntatore dei registri ausiliari e la SAR (Store ARn) che trasferisce il contenuto di un registro ausiliario in una locazione della memoria dati.

Digital Signal Processor: Istruzioni della PLU

Una prerogativa dei DSP è la disponibilità di una unità logica parallela interna denominata PLU e di una serie di comandi dedicati a tale unità. Come sappiamo, le operazioni svolte dalla PLU sono sostanzialmente cinque di cui tre sono vere e proprie operazioni logiche tra un valore disponibile in memoria e registro DBMR (Dynamic Bit Manipulation Register), mentre le altre due sono istruzioni di comparazione tra dati presenti in memoria. In un normale microprocessore, una istruzione viene rappresenta da una sequenza di byte che contengono sia il codice operativo dell’istruzione stessa che i vari operandi necessari all’istruzione.

dsp_istruzioni_gestione_interruzioni

In un microprocessore DSP, invece, grazie all’unità PLU, il numero di byte utilizzato per rappresentare l’istruzione risulta inferiore e, nel caso del TMS320C50, non supera le due “word”. Ciò consente, nella fase di decodifica, di accelerare notevolmente i tempi di esecuzione da parte della CPU.

Per sfruttare nel miglior modo possibile l’unità PLU sono disponibili delle apposite istruzioni che consentono di eseguire delle operazioni logiche tra una locazione di memoria e il registro DBMR. Queste istruzioni eseguono, ad esempio, l’AND logico (APL, AND DBMR or constant with data memory value), l’OR (OPL, OR DBMR or constant with data memory value) e l’XOR (XPL, XOR DBMR or constant with data memory value) senza influenzare il lavoro della ALU e del registro accumulatore.

DSP: Istruzioni dedicate alla moltiplicazione

In tutti i DSP troviamo una serie di istruzioni dedicate alla gestione dei registri di prodotto: nel TMS320C50 sono state create per questo scopo ben 23 istruzioni diverse. Le istruzioni di “prodotto” servono per velocizzare il più possibile le operazioni di moltiplicazione e di manipolazione del risultato. L’istruzione principale di questo gruppo è la MADS (Multiply and accumulate both with source pointed at by BMAR and with data move) che esegue l’operazione di moltiplicazione vera e propria.

A ruota, seguono altre istruzioni secondarie necessarie per muovere velocemente i dati tra i vari registri o per trasferire il risultato della moltiplicazione in zone di memoria predefinite. A questo punto viene spontaneo domandarsi per quale motivo nei processori DSP sia così importante eseguire l’operazione di moltiplicazione in modo estremamente veloce.

La risposta va ricercata nelle applicazioni a cui il processore DSP è rivolto, applicazioni che devono elaborare una lunga sequenza di numeri binari. A tale proposito facciamo un esempio nell’ambito musicale: consideriamo un equalizzatore audio di nuova generazione in grado di esaltare alcune frequenze piuttosto che altre e di generare effetti particolari quali l’eco, il riverbero, il coro e il surround.

Tutti questi effetti sono realizzati da un DSP che filtra in modo digitale il segnale di ingresso: in pratica il DSP esegue delle operazioni di moltiplicazione tra il segnale digitalizzato e dei coefficienti opportunamente calcolati. Quando equalizziamo una frequenza non facciamo altro che variare i coefficienti di moltiplicazione di quella frequenza dando così maggiore o minore “peso musicale” alla frequenza stessa.

dsp_mnemonica_istruzioni_controllo

La realizzazione di un filtraggio digitale di questo tipo implica una quantità di calcoli piuttosto sostenuta, operazioni matematiche che vanno poi moltiplicate per il numero di filtri utilizzati nell’equalizzatore. Risulta ovvio che i calcoli devono essere eseguiti nel più breve tempo possibile per permettere di ascoltare immediatamente la modifica apportata al segnale. Chiarito così il perché i DSP debbono essere velocissimi nell’eseguire le moltiplicazioni, analizziamo nei dettagli l’istruzione che consente tale operazione, ovvero la MADS. Tale istruzione effettua la moltiplicazione dei dati contenuti in due locazione di memoria diverse individuate dal contenuto del registro dinamico BMAR e dall’operando dell’istruzione stessa. La MADS consente, se abbinata ad una istruzione di ripetizione, di moltiplicare tra loro intere zone di memoria utilizzando soltanto due word di programma.

Nel caso di indirizzamento diretto, la MADS è seguita dalla locazione di memoria in cui prelevare uno dei due fattori della moltiplicazione. Quando la CPU trova questa istruzione incrementa il Program Counter di una unità, trasferisce il valore del contatore di prefetch (PFC) in una zona di Stack denominata “Microcall Stack”, carica il PFC con il contenuto del registro dinamico BMAR, esegue il prodotto tra operando e fattore puntato da BMAR e, infine, riprende dallo stack il valore salvato in precedenza. Il risultato della moltiplicazione è salvato nel registro PREG.

DSP: Istruzioni di salto

In tutti i DSP le istruzioni di salto permettono oltre ai Branch (salti condizionati o incondizionati a delle label) anche delle chiamate condizionate ad una subroutine (CC, Call conditionally) e dei rientri condizionati dalle subroutine (RETC, Return conditionally) rendendo così più flessibile la programmazione.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 26 utenti e 64 visitatori collegati.

Ultimi Commenti