IL DSP - Digital Signal Processor
Processore dei segnali digitali
1. Generalità
Il Digital Signal Processor (DSP, processore di segnali digitali) è un particolare tipo
di microprocessore, ottimizzato per eseguire in maniera estremamente efficiente
sequenze di istruzioni molto ricorrenti.
I DSP sono classificati a seconda dell'ampiezza e del tipo di dato che sono in grado di
processare: si parla ad esempio di DSP a 32 bit, 24 bit, 16 bit, con aritmetica a virgola
fissa o mobile.
Ogni DSP è adatto ad applicazioni specifiche: ad esempio, i DSP a 16 bit a virgola fissa
sono impiegati per il condizionamento di segnali vocali e trovano il loro principale
campo di applicazione nella telefonia (fissa e mobile), mentre i DSP a 32-bit in virgola
mobile, avendo una dinamica molto superiore, sono principalmente impiegati nell'
elaborazione di immagini e nella grafica tridimensionale.
Altri campi di applicazione sono la robotica, i sistemi wireless, la navigazione, i
radar, i GPS, l’ elaborazione audio, gli algoritmi nel dominio delle frequenze.
I processori DSP possono essere raggruppati in due distinte categorie:
1. virgola mobile (floating-point);
2. virgola fissa (fixed-point).
I DSP a virgola fissa hanno un costo minore perché richiedono un numero minore di
silicio e presentano un numero inferiore di pin. La frequenza di clock è elevata e
permettono risposte molto rapide.
E’ importante però notare che la frequenza di clock elevata non garantisce a priori
elevata velocità in quanto bisogna anche considerare quante istruzioni si riescono ad
eseguire per periodo di clock.
L’inconveniente dell’architettura a virgola fissa è dato dall’overflow: infatti, se
consideriamo un processore a 16 bit possiamo rappresentare ad esempio i numeri tra
-32768 a +32768, con precisione di pari a 1. Pertanto, sono utilizzati dove è limitata la
dinamica dei valori da trattare.
I DSP a virgola mobile, sono più recenti ed esprimono i numeri impiegando una
mantissa combinata con un esponente. Questo metodo di rappresentazione comporta
una serie di vantaggi: intervallo di rappresentazione dei dati dinamico, errore
relativamente piccolo, bassa probabilità che occorra l’overflow. Permettono l’uso di
linguaggi ad alto livello e possono essere utilizzati quando sono richieste grandi
quantità di memoria.
Hanno però lo svantaggio di avere un costo maggiore rispetto ai DSP a virgola fissa.
Il primo DSP lanciato sul mercato nel 1978 è stato l'Intel 2920 e i suoi 2.5 MIPS (milioni
di istruzioni per secondo) effettivi erano all'epoca una velocità altissima.
Pag 1 di 6
2. Architettura
I DSP sono caratterizzati da una architettura di Harvard e dalla presenza di un
moltiplicatore accumulatore hardware (MAC).
L'architettura Harvard è un'architettura che separa la memorizzazione dei dati da
quella delle istruzioni. Il processore è quindi in grado di accedere in modo
indipendente a dati e istruzioni, permettendo in questo modo un considerevole aumento
della velocità di elaborazione. Questo aumento viene però compensato dalla presenza
di circuiti più complessi all'interno del processore.
ALU
Memoria
PROGRAMMI
Unità di
controllo
Memoria
DATI
I/0
Le caratteristiche generalmente comuni ai diversi processori progettati secondo
un'architettura Harvard sono quelle di seguito riportate:
1. doppio spazio di memoria (uno per i dati ed uno per le istruzioni del
programma);
2. doppio bus (uno per l’area dati ed uno per le istruzioni del programma);
3. unità aritmetico logica centrale;
4. unità aritmetico logica secondaria usata mentre è occupata l'unita' centrale;
5. porta seriale per comunicazioni ad alta velocità con eventuali altri DSP;
6. implementazione della memoria sul chip per evitare i frequenti accessi alla
memoria esterna che rallenterebbero l'intero sistema.
3. Il moltiplicatore-accumulatore (MAC)
I DSP devono comunemente svolgere un numero molto elevato di moltiplicazioni e
addizioni, perché la maggior parte degli algoritmi per l'elaborazione dei segnali
richiedono un’operazione di moltiplicazione ed addizione cosi schematizzata:
( A * B ) + C.
Questa operazione è tipicamente menzionata col nome MAC (Multiply ACcumulate).
Nei processori general purpose la funzione di addizione (e sottrazione) non comporta
grossi sforzi realizzativi (a livello hardware) e può essere eseguita in un singolo ciclo
di clock mentre la funzione di moltiplicazione necessita di alcune centinaia di cicli di
clock, poiché può essere vista come una serie di funzioni di addizione.
Pag 2 di 6
I DSP implementano a livello hardware una funzione che realizza la moltiplicazione tra
due numeri in un singolo ciclo di clock e completano il loro compito con un'addizione
aggiuntiva, realizzando cosi l'operazione MAC in un solo ciclo di clock.
Per effettuare questa operazione il DSP si avvale appunto del MAC, una circuiteria
specifica in grado di eseguire moltiplicazioni e somme in tempi molto brevi.
Le operazioni all’interno MAC sono eseguite a 32 bit per evitare le conseguenze
dell’arrotondamento. I risultati delle moltiplicazioni sono sommati e accumulati
nell’accumulatore, da cui passano al bus dati tramite il registro di uscita. Lo schema a
blocchi del MAC è riportato nella seguente figura.
Dato A
Dato B
Registro
A
Uscita
Moltiplicatore
Registro
Accumulatore
Registro
Registro
B
4. Differenti tipologie di DSP
DSP convenzionali
Sono basati su una architettura di tipo tradizionale, caratterizzata dalla presenza di
una memoria dati, da una memoria programma e da un moltiplicatore accumulatore.
Hanno un basso costo e bassi consumi e sono utilizzati in quelle applicazioni che
richiedono velocità operative non elevate e funzioni non complesse. A questa
categoria appartengono i seguenti tipi:
- TMS320C5X della Texas Instruments;
- ADSP21XX dell’Analog Devices;
- DSP560XX della Motorola.
DSP enhanced-conventional
Sono un potenziamento dei DSP convenzionali, ottenuto senza introdurre innovazioni
strutturali. Hanno un più ampio bus dati, maggiore memoria, set di istruzioni più
ricco, istruzioni cache (utilizzo di una memoria ad accesso rapido), unità di calcolo
parallelo, bassa potenza dissipata.
Un esempio è la famiglia TMS320C54X.
DSP multi-issue
Sono caratterizzati da tecniche di elaborazione parallele che consentono un aumento
delle prestazioni del DSP. Le tecniche più utilizzate sono le seguenti:
1. architettura VLIW (very large instruction word): così detta perché impiega ampie
istruzioni, dove ogni istruzione è l’insieme di istruzioni più brevi, che sono eseguite
contemporaneamente in unità multiple.
Pag 3 di 6
2. architettura superscalare: è caratterizzata dall’avere più unità di esecuzione e
quindi diverse istruzioni eseguite contemporaneamente; è durante l’esecuzione del
programma che si stabilisce quali istruzioni devono essere eseguite
contemporaneamente;
3. architettura SIMD (single instruction multiple data): è caratterizzata dall’avere
istruzioni singole che possono operare su più dati, permettendo così l’elaborazione di
blocchi di dati; è realizzata con diverse unità di esecuzione e diversi bus dati.
5. Programmazione software
Per la programmazione dei DSP si usa comunemente il linguaggio assembler, il
linguaggio C o una combinazione di entrambi.
Il linguaggio assembler permette di avere una maggiore velocità di esecuzione dei
programmi ed è quindi utilizzato quando la frequenza di campionamento è elevata
oppure quando è necessario eseguire molte operazioni in poco tempo.
Il linguaggio C, essendo ad alto livello e strutturato, consente di facilitare la stesura e
la comprensione del programma e di adattare in modo relativamente facile il
programma scritto a diversi tipi di DSP.
Quando si vuole conciliare la velocità di esecuzione con la facilità di lettura si usano
entrambi i linguaggi, limitando l’uso dell’assembler alle soli parti di programma che
richiedono alta velocità.
6. Caratteristiche di un DSP: TMS320C50
Il TMS320C50 è un DSP a 16 bit in virgola fissa con caratteristiche tali di
performance, memoria e gestione della potenza che lo hanno reso uno standard
industriale. Lo schema a blocchi è quello seguente.
PROGRAM DATA
RAM
SCAN-BASED
EMULATION
PROGRAM
ROM
POWER
MANAGMENT
SERIAL PORT
MULTIPLIER
16 x 16
ARITMETIC
LOGIC UNIT
PARALLEL PORT
ACCUMULATOR
ARUXLIARY
REGISTER
TDM
STATUS
REGISTER
PARALLEL LOGIC
UNIT
TIMER
SW WAITS
BUS
Program/Data RAM e Program ROM
La figura che segue mostra l’organizzazione della memoria in due aree distinte e
separate: sezione programmi e sezione dati. La sezione dedicata alle istruzioni del
programma inizia con il Bootloader che carica sulla memoria Program/Data RAM un
Pag 4 di 6
programma nominato Kernel che permette l'inizializzazione della comunicazione con
l'host PC tramite la porta seriale RS232.
Alcune sezioni della memoria possono essere configurate sia per contenere dati sia
istruzioni del programma, rendendo in tal modo il sistema adattabile alle diverse
caratteristiche dei programmi. Se un programma necessita di un gran numero di dati, si
alloca più memoria per essi e meno per le istruzioni, nel caso contrario si adotta la
soluzione duale.
Multiplier (16x16)
Veloce moltiplicatore in virgola fissa che effettua con grande efficienza le
fondamentali operazioni per l'elaborazione dei segnali digitali. Esegue una
moltiplicazione tra due numeri binari di 16 bit restituendo un numero binario a 32
bit con segno.
Unità Aritmetico Logica (ALU)
L'ALU a 32 bit unitamente al registro accumulatore si comporta in modo analogo ad un
processore general purpose che esegue operazioni aritmetiche (addizione e
sottrazione) e operazioni logiche (and e or). L'uscita dell'unita' aritmetico logica è
passata all'accumulatore.
Shifter
Esegue lo shift destro e sinistro, ponendo i bit meno significativi col valore zero.
Accumulatore
L'accumulatore è un registro general purpose a 32 bit completo di buffer. È utilizzato
dal moltiplicatore, dalla memoria, dall'ALU e dallo shifter per una spedita
memorizzazione dei dati.
Registri ausiliari
Questo modello di DSP è dotato di otto registri ausiliari che possono essere
configurati come registri di memorizzazione temporanei o come registri per
l'indirizzamento indiretto.
Registri di stato e controllo
Sono quattro e servono per governare le funzionalità del processore.
PLU (Parallel Logic Unit)
L’unità logica parallela effettua operazioni sui dati senza influire sul contenuto del
registro accumulatore.
Emulazione Scan-Based
La logica di scansione è usata solo per scopi di test ed emulazione e può essere usata
per testare la connettività pin a pin ed anche test su dispositivi periferici.
Porta seriale
La porta seriale di I/O connette il processore con i dispositivi esterni ad esso, quali
ad esempio convertitori A/D o D/A, frequentemente utilizzati nelle applicazioni con DSP.
TDM (Time Division Multiplexed)
Pag 5 di 6
La TDM costituisce una porta seriale usata per i sistemi multi-processori. Essa
consente la comunicazione con un massimo d'altri sette processori TMS320C50.
Timer
Il processore incorpora un circuito temporizzatore programmabile dall'utente.
Stati d’attesa software
La possibilità di generare stati d'attesa via software permette di interfacciarsi ai
dispositivi di memoria più lenti senza il bisogno di un hardware esterno
Porte parallele di I/O
Il processore TMS320C50 possiede 64K di porte parallele I/O indirizzabili.
Gestione della potenza
Il processore riesce a gestire il consumo d'energia elettrica in modo intelligente,
portandosi in uno stato inattivo quando esso non è usato, caratteristica di
fondamentale importanza per aumentare in modo considerevole la vita delle
batterie d'alimentazione.
Pag 6 di 6