Oltre l’elaborazione numerica del segnale

Dsp è l'acronimo di Digital Signal Processor, cioè la versione application specific del processore general prurpose (microprocessore o microcontrollore). Il Dsp, in questa natura originaria di processore capace di eseguire velocemente algoritmi molto complessi di elaborazione numerica del segnale, è stato impiegato in applicazioni come la telefonia digitale, il controllo automatico, l'acquisizione dati e controllo, come coprocessore di segnale. Da alcuni anni, questa natura originaria del Dsp come sistema software-programmabile viene contrastata da altre tecnologie di computing, tra cui la più importante è la logica programmabile, in particolare la Fpga. Ci sono voluti però alcuni anni per capire che queste due tecnologie di computing non sono antagoniste, bensì complementari. I processori Dsp hanno continuato a svilupparsi sfruttando al massimo il processo di integrazione microelettronico per ottenere potenze di calcolo crescenti come conseguenza della riduzione della geometria di integrazione. La logica programmabile ha invece sviluppato funzionalità hardware programmabili sempre più vicine alla natura computazionale del digital signal processing (per esempio le Mac come unità elementari hardware-programmabili).

Fpga e Dsp, sempre più vicini
La tecnologia SoC (System-on-Chip) sta svolgendo un importante ruolo unificante tra la soluzione software-programmabile dei processori Dsp e quella hardware-programmabile della logica Fpga. Diversi produttori di microelettronica sono infatti orientati a integrare su una singola piattaforma di silicio sia la tecnologia dei Dsp (a livello di core), sia quella Fpga (a livello di funzionalità Dsp dedicate). La natura classica del Dsp (basato sul modello computazionale Harvard) non è più identificativo del processore di segnale. Molti microcontrollori, per esempio, sono in grado di eseguire in tempo reale algoritmi di elaborazione numerica del segnale di bassa e media complessità, grazie all'integrazione nella loro architettura di funzionalità hardware che permettono di accelerare il processo di calcolo intensivo tipico di algoritmi di elaborazione del segnale, come per esempio la trasformata discreta di Fourier necessaria per l'analisi frequenziale. Oggi i Dsp si presentano allo sviluppatore in una forma molto più evoluta rispetto a quella del passato (dispositivo complesso, difficile da programmare). Ora questi dispositivi, grazie alla notevole potenza di calcolo che rendono disponibile, utilizzano uno strato software di sistema (gestione delle periferiche, gestione della memoria, ecc.) che consente allo sviluppatore di concentrarsi principalmente sulle problematiche più vicine alla natura della sua applicazione. Anche a livello applicativo la programmazione è stata resa più semplice. I linguaggi ad alto livello, in particolare C e a volte anche Java, sono sempre più spesso supportati. Inoltre è ormai frequente trovare kernel di sistemi operativi real-time disponibili per i processori Dsp più popolari. Anche a livello di dispositivi Fpga-Dsp, rispetto al passato è stato molto semplificato il processo di sviluppo. In questo caso, soprattutto all'introduzione della soluzione Fpga per il Dsp, la complessità dello sviluppo era decisamente elevata, in quanto richiedeva conoscenze sia della modellistica di elaborazione numerica del segnale, sia del processo di sviluppo di una applicazione su logica programmabile. Da alcuni anni però, soprattutto le Fpga orientate a supportare le applicazioni Dsp, sono state dotate di strumenti di sviluppo di alto livello, come i sistemi di modellazione tipo Matlab, e di linguaggi di programmazione di sistema ad alto livello come SystemC. Si tratta di strumenti di sviluppo che sostanzialmente evitano allo sviluppatore di affrontare le problematiche di sviluppo di basso livello come quelle della programmazione dell'hardware con linguaggi come Verilog o Vhdl.

Strategie differenti
Anche se i vari produttori di logica programmabile hanno sostanzialmente gli stessi obiettivi relativamente all'offerta competitiva di soluzioni Fpga, la loro strategia di prodotti è sostanzialmente diversa. Gli sviluppatori che devono scegliere la soluzione Dsp basata sulla logica programmabile necessitano di conoscere abbastanza approfonditamente la natura della logica programmabile in quanto questa caratterizza la natura della soluzione Dsp offerta. Questo problema non sussiste a livello di dispositivi Dsp software-programmabili in quanto non sono necessarie conoscenze hardware specifiche, data la natura essenzialmente software dell'implementazione Dsp. Una terza linea di competizione nel campo Dsp è costituita dai microcontrollori Risc, dotati questi di moltiplicatori hardware e basati su architetture system-on-chip con una elevata componente mixed-signal. Queste soluzioni Dsp basate su architetture a microcontrollore soddisfano principalmente applicazioni a media-bassa complessità. Grazie a frequenze di clock più o meno elevate e soluzioni efficienti di accesso veloce alla memoria, questi microcontrollori-Dsp risultano una soluzione molto conveniente in svariate applicazioni di natura consumer, quindi caratterizzate da basso costo e bassi consumi.

Soluzioni su Fpga
Actel, come produttore di logica programmabile, offre funzionalità di natura signal processing sulle sue Fpga non volatili. CoreFir e CoreFft sono due soluzioni che utilizzano una metodologia ad aritmetica distribuita per implementare su Fpga filtri digitali Fir e la Fast Fourier Transform per l'analisi in frequenza dei segnali. CoreFir è implementabile su Fpga ProAsic3 e Rtax-S. Il filtro generabile come core può essere dimensionato da un minimo di due Tap a un massimo di 128 Tap.

Dsp finalizzati all'applicazione
Analog Devices offre un'ampia gamma di Dsp software-programmabili tra cui Blackfin, Sharc e TigerSharc, per coprire aree applicative abbastanza ampie come l'automotive, l'audio professionale, le misure, il medicale, ecc. Le architetture sono sia floating-point che fixed-point, e utilizzano un sottosistema di memoria e input/output che rende questi dispositivi particolarmente efficienti nell'implementazione di algoritmi computazionalmente intensivi. Interessanti sono le soluzioni Dsp finalizzate all'applicazione come i SigmaDsp e i Precision Analog Microcontroller. I SigmaDsp sono finalizzati alle applicazioni audio processing particolarmente sensibili ai costi. Si tratta di Dsp dimensionati sui requisiti delle applicazioni audio di qualità (16-24 bit di quantizzazione, 44100-48000 Hz di campionamento, multicanale). Questi processori utilizzano 28 bit di aritmetica di base, estendibile a 56 bit per la doppia precisione, spesso necessaria in queste applicazioni. L'architettura computazionale a 28 bit garantisce un margine superiore di dinamica (+24 dB), quando si utilizza la massima dinamica dei convertitori audio (24 bit). Ciò consente di eseguire senza riduzione della dinamica gli algoritmi che conferiscono variazioni dinamiche significative al segnale (tipicamente gli equalizzatori). Data la natura orientata alle applicazione audio, il Dsp integra sullo stesso chip anche i convertitori A/D e D/A.

Potenze computazionali per requisiti elevati
Freescale offre un'ampia gamma di Dsp, capace di soddisfare applicazioni in molti campi tra cui l'automotive, il consumer, l'industriale e la comunicazione. I Dsp sono tutti software-programmabili e, nelle versioni multicore, sviluppano potenze computazionali che soddisfano applicazioni ad elevati requisiti come il networking. Il Dsp MSC8156 integra sullo stesso dispositivo 6 core (StarCore SC3850) operanti a 1 GHz, quindi capace di sviluppare una velocità di calcolo equivalente a 6 GHz di clock, che equivale a 8000 Mmac per core, quindi un totale di 48000 Mmac per l'intero dispositivo. Realizzato in tecnologia di integrazione a 45 nanometri, la configurazione a 6 core parallela conferisce a questo Dsp un livello di parallelismo esecutivo particolarmente elevato. Oltre al parallelismo esecutivo ottenibile con i sei core paralleli, il MSC8156 dispone di altre risorse computazionali on-chip che enfatizzano ulteriormente le sue possibilità (Maple-B baseband accelerator, Dual-Risc Core Quicc engine operante fino a 500 MHz, ecc.). L'ampia disponibilità di memoria on-chip consente di sfruttare al massimo della potenzialità operativa la configurazione esecutiva dei core paralleli. Oltre ai Dsp ad elevate prestazioni, Freescale dispone anche di Dsc (Digital Signal Controller, ovvero di Dsp con funzionalità di microcontrollori a 16 bit, finalizzati alle applicazioni di automazione, di controllo motore e appliances.

Dsc orientati al controllo
Infineon è particolarmente focalizzata nell'offerta di dispositivi Dsc orientati al controllo. Le architetture di suoi Dsc coprono sostanzialmente tutta la gamma di precisione, 8, 16 e 32 bit. La famiglia a 8 bit, XC800 si caratterizza per la capacità di calcolo vettoriale. La famiglia a 16 bit si caratterizza per l'integrazione di Mac e Pwm, e la famiglia a 32 bit si caratterizza per l'elevata potenza di calcolo, adatta a supportare applicazioni complesse come le applicazioni audio, la comunicazione, l'automazione.

Blocchi Dsp embedded programmabili
Lattice ha un'offerta di logica programmabile abbastanza articolata (Fpga, Cpld e mixed-signal), e in questa offerta colloca una serie di soluzioni orientate al Dsp basate su blocchi Dsp embedded programmabili. Questi sono utili per implementare funzioni Dsp di base come la moltiplicazione, la moltiplicazione con accumulo e la moltiplicazione combinata alla somma e alla sottrazione. Tra le varie soluzioni interessanti ci sono i dispositivi Fpga ECP2 ed ECP2M. Questi dispositivi includono una serie di blocchi Dsp embedded, di memoria, di look-up table e di moltiplicatori, tutti assemblabili in configurazioni di processing per l'implementazione di algoritmi Dsp ad elevato livello computazionale. Altre soluzioni orientate al Dsp sono i dispositivi XP2 e la recente famiglia ECP3 di Fpga caratterizzata da basso costo, basso consumo e funzionalità embedded. Questa Fpga contiene 320 moltiplicatori a precisione estesa (18 x 18) per l'implementazione di architetture Dsp a 16 bit. Oltre ai moltiplicatori, questa Fpga contiene fino a 149k Lut, fino a 586 I/O e 16 canali di comunicazione. I blocchi moltiplicatori possono operare a varia precisione, alta (36x36) e bassa (9x9) e a precisione mista (18x36).

Dsc con funzionalità avanzate
Microchip produce da molto tempo dispositivi microcontrollore ad architettura Risc-Harvard. Questa architettura è particolarmente efficiente per l'esecuzione di algoritmi Dsp come i filtri Fir e la Fast Fourier Transform. La versione dsPIC di questi microcontrollori a 16 bit, rappresenta una soluzione molto interessante per soddisfare applicazioni che necessitano contemporaneamente della funzionalità microcontrollore e delle risorse di computing Dsp. Le più recenti di queste soluzioni Dsc sono nella famiglia dsPIC32F, un 40 Mips controlloreDsp dotato di una serie di periferiche ottimizzate per le applicazioni di controllo motore. Oltre a periferiche orientate alle applicazioni, questi dispostivi integrano una consistente porzione di memoria flash (128 kbyte) e un convertitore in banda audio a 16 bit e doppio canale. Particolarmente ricca di funzionalità Dsp è la famiglia dsPIC33F, una serie di Msc orientati alle applicazioni di controllo embedded. Questi in particolare implementano funzionalità abbastanza sofisticate per un Msc, come l'aritmetica di saturazione, l'indirizzamento bit-reversed, l'indirizzamento modulo e il barrel shifter. Tali funzionalità, tipiche dei Dsp più avanzati, conferiscono a questi Dsc una efficienza esecutiva molto elevata per algoritmi ad elevato livello computazionale come i filtri Fir e la Fft.

Orientati all'applicazione
STMicroelectronics ha un'offerta di Dsp molto orientata all'applicazione. L'ST240 è un processore Dsp ad architettura Vliw capace di eseguire quattro istruzioni contemporaneamente alla velocità di 500 MHz di clock. È un processore a basso consumo (30 mW per MHz), è in grado di supportare in hardware l'aritmetica floating-point, di trattare dati a 64 bit e di eseguire l'aritmetica di saturazione.

Varie architetture di computing in un singolo dispositivo
Texas Instruments dispone di un'ampia offerta di Dsp software-programmabili. Ogni famiglia ha una sua specificità applicativa.
La famiglia C5000 è stata particolarmente ottimizzata per le applicazioni in cui il consumo di potenza elettrica è un fattore determinante. Capace di sviluppare fino a 600 Mips di potenza computazionale, questa famiglia di dispositivi fixed-point risulta particolarmente efficiente in applicazioni multimedia e di comunicazione portatili. L'architettura computazionale di questa famiglia di processori è la Harvard modificata. Questa architettura risulta particolarmente efficiente nell'esecuzione dei tipici algoritmi di elaborazione del segnale vocale e del segnale audio in applicazioni consumer come i riproduttori di musica portatili. Il consumo di potenza è molto efficiente, fino a 0,33 mA/MHz. Le altre famiglie di processori Dsp di Texas Instruments utilizzano differenti architetture di computing. La famiglia di processori Omap sono basati sull'architettura Arm (in particolare la famiglia Omap3530 è basata su Arm Cortex-A8) per ottenere prestazioni e funzionalità tipiche dei personal computer da tavolo in applicazioni di natura palmare (dispositivi di navigazione portabili, dispositivi medicali portatili, applicazioni basate sulla connettività internet, controllo intelligente, Pos, ecc.). La famiglia C6000 utilizza invece l'architettura di computing Vliw (Very Long Instruction Word) per ottenere prestazioni elevatissime grazie all'elevato parallelismo esecutivo che consente questa architettura. Questa famiglia di Dsp utilizza anche la tecnologia multicore (per esempio il C6474 integra nello stesso dispositivo 3 core a 1 GHz) per ottenere prestazioni computazionali sufficientemente elevate per soddisfare le applicazioni Dsp di fascia alta. Altre soluzioni integrano varie architetture di computing in un singolo dispositivo, come il Digital Media processor basato sulla tecnologia DaVinci finalizzato alle applicazioni digital video di fascia alta. Un esempio è il DM335 che integra nello stesso dispositivo un ARM926EJ-S e un sottosistema di elaborazione video. Un altro esempio è il DM357, basato su Arm e su una serie di codec tra cui H.264, G.711 e Mpeg-4. Il DM355 dispone di un evaluation module che consente di prototipare facilmente dispositivi video digitali. Questo modulo, oltre ad essere una realizzazione hardware subito disponibile, è anche dotato di software di sistema come Linux, di software di sviluppo come il compilatore C, l'assembler e il debugger, e di software applicativo come i driver delle periferiche.

Fpga per applicazioni Dsp ad elevate prestazioni
Xilinx produce essenzialmente logica programmabile Fpga. Da diversi anni ha integrato la sua offerta Fpga con dispositivi e ambienti di sviluppo orientati alle applicazioni Dsp ad elevate prestazioni. Recentemente ha introdotto una soluzione di natura riconfigurabile per applicazioni Dsp ad elevate prestazioni, in particolare le applicazioni video a basso costo.
Il tool di sviluppo che Xilinx ha particolarmente potenziato è XtremeDsp, utilizzabile in combinazione con l'ambiente di modellazione e sviluppo Matlab-Simulik. Questa combinazione consente non solo di modellare e simulare l'applicazione Dsp in maniera molto rapida ed efficiente, ma anche di generare il codice. Le prestazioni Dsp ottenibili sulle piattaforme Fpga sono considerevoli se paragonate a quelle offerte dai Dsp software-programmabili. Per esempio, Virtex-6 consente di ottenere una potenza computazionale dell'ordine del TeraMac, oltre a disporre di una elevata banda per l'accesso alla memoria e per I/O. Una delle innovazioni più interessanti sono le Dsp48 slice. Queste sono degli elementi computazionali di base per la maggior parte degli algoritmi Dsp che consentono allo sviluppatore di realizzare una funzionalità Dsp con il minimo ricorso alla logica programmabile di base. Le slice sono dei nuclei di calcolo elementari interconnettibili tra loro in accordo con la natura del flusso di calcolo dell'algoritmo Dsp cui lo sviluppatore sta facendo riferimento. Tra le funzioni di calcolo integrate in una slice ci sono la moltiplicazione e la moltiplicazione con accumulo, oltre a operazioni come la somma e le funzioni logiche dell'Alu.

Dsp: facile o difficile?
l Dsp, pur essendo processori software-programmabile come i classici microcontrollori, sono stati fino a qualche anno fa considerati sistemi da specialisti da parte degli sviluppatori che non avevano alcuno skill relativamente alla progettazione di applicazioni di elaborazione numerica del segnale. Questa considerazione era giustificata dal fatto che queste architetture di computing, a differenza di quelle a microcontrollore, sono derivate direttamente dagli algoritmi di elaborazione numerica del segnale. Ciò implicava non solo conoscenze di programmazione, ma anche conoscenze di sistema e di metodologie poco presenti nel curriculum di studi dei progettisti elettronici e anche informatici. Negli ultimi anni questa prospettiva è cambiata in maniera significativa in quanto da una parte le conoscenze relative alle metodologie di trattamento numerico del segnale sono diventate parte delle conoscenze dei progettisti, e dall'altra parte i Dsp sono diventati sufficientemente potenti da consentire un livello di astrazione, rispetto all'architettura hardware, tale da evitare al progettista il complesso studio dell'architettura di computing in relazione all'algoritmo di elaborazione numerica del segnale da implementare. Gli ambienti di modellazione, spesso dotati di generatore di codice per le piattaforme di computing Dsp più diffuse, consentono a progettisti con poche conoscenze su tali architetture di affrontare lo sviluppo di applicazioni valorizzando soprattutto le proprie conoscenze specialistiche. La programmazione in linguaggio assembly dei dispositivi Dsp è ormai sempre più occasionale. Più ricorrente è la programmazione in linguaggio C, o addirittura non c'è vera e propria programmazione, ma solo modellazione con generazione automatica del codice.

Progettare modellando
La natura delle applicazioni Dsp è tale da richiedere conoscenze di natura molto eterogenea (elettronica, informatica, fisica, ecc.) e lo sviluppo dell'applicazione a sua volta richiede una considerevole quantità di risorse utili alla messa a punto di algoritmi e di processi di elaborazione numerica del segnale (strumenti di analisi, di misura e di presentazione dei dati di segnale). Ciò implica che, per mettere a punto un'applicazione di natura Dsp anche molto limitata, è necessario sviluppare una enorme quantità di funzioni e di strumenti che però non serviranno all'applicazione finale, contribuendo però a determinarne i costi. È ormai da diversi anni che ambienti di modellazione di natura generale, come per esempio Matlab-Simulink e LabView, si sono evoluti nella direzione del supporto allo sviluppo e alla progettazione di applicazioni di natura Dsp, mettendo a disposizione del progettista una serie di strumenti ad alto livello che permettono di modellare, simulare e, ove possibile, anche emulare l'applicazione sul target finale, senza che il target finale sia approfonditamente conosciuto dallo sviluppatore.
Ambienti di sviluppo come Matlab sono più orientati alla modellazione degli algoritmi piuttosto che del processo, utilizzando lo strumento della programmazione per modellare. La necessità di modellare a oggetti ha comunque indotto allo sviluppo di ambienti di modellazione grafica. Simulink è l'ambiente di modellazione grafica a oggetti che da diversi anni The Mathworks ha affiancato a Matlab in modo da soddisfare questa esigenza di maggiore astrazione da parte degli sviluppatori. LabView di National Instruments è un altro esempio di ambiente di modellazione grafica delle applicazioni Dsp. Anche questo ambiente di modellazione si è sviluppato nel tempo in modo da favorire principalmente le esigenze di astrazione dei progettisti in relazione alla crescente complessità delle applicazioni Dsp. La generazione automatica del codice per un ampio ventaglio di piattaforme target Dsp, sia software-programmabili che hardware-programmabili, è ormai abbastanza ricorrente e rappresenta un grosso vantaggio per lo sviluppatore perché ha la possibilità di esplorare le prestazioni di piattaforme di computing differenti e di prototipare in maniera rapida. Sotto certe condizioni, per esempio piccole serie o applicazioni ad elevato valore aggiunto, la generazione automatica della programmazione del target finale, e quindi del prodotto, può essere una soluzione vantaggiosa e non onerosa per lo sviluppatore.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome