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