FPGA vs DSP

Questi nomi sono sicuramente noti ai più. Nonostante sia la popolarità a distinguerli, il loro funzionamento viene spesso ignorato o non compreso. Attraverso questo articolo si cercherà di comprenderne in maniera chiara e schematica i concetti basilari, indispensabili per spiegarne il funzionamento. Di seguito verrà descritto in che modo questi dispositivi implementano i filtri FIR. Si tratta, senza dubbio di dispositivi ''relegati'' all’ambito professionale, questo non deve tuttavia spaventare nessuno: imparare ad utilizzarli potrá permettervi di realizzare progetti molto complessi coprendo un ampissimo spettro di possibilità di progettazione. La differenza sostanziale, che non si dovrà mai scordare, tra l'uno e l'altro è la seguente:
• Il DSP lavora nel tempo, esegue le istruzioni scandite dal clock.
• l’FPGA elabora i segnali nello spazio, composto da milioni di porte logiche.

 

Configural computing

Con questa dicitura si fa riferimento a tutte le architetture configurabili, dal momento dell’acquisto in avanti (in pratica ogni volta che se ne presenti il bisogno).
Arduino può esserne un semplice esempio: fa infatti parte di questa famiglia.
Una scheda Arduino non sarà mai vincolata al primo programma caricatovi (e meno male!), al contrario ogni volta che si vuole risulta possibile modificarne il codice, ciò in fase di prototipazione si traduce in un vantaggio consistente. Tra i dispositivi configurabili si trovano FPGA, DSP e microprocessori.

Fixed computing

Con questo termine si indicano invece i circuiti integrati in grado di eseguire una sola funzione stabilita in fase di creazione. I vantaggi di questa limitazione sono:

  • Prestazioni elevate.
  • Riduzione dello spazio occupato.

A scapito di:

  • Costi elevati: gli ASICs infatti vengono utilizzati (in genere) solo per grandi produzioni, tendenzialmente elettronica di consumo.

DSP

DSP

 

Il DSP (Digital Signal Processing) è un dispositivo che lavora in logica seriale, al suo interno sono presenti:

  • Una ALU in grado di eseguire un numero limitato di operazione ogni ciclo di clock
  • Una cache indispensabile per la gestione dei dati utilizzati maggiormente.

Il DSP nasce con il preciso obbiettivo di abbattere i tempi dell’operazione di moltiplicazione. La moltiplicazione tramite somma iterata rende estremamente lento il processo di filtraggio digitale, per il quale è necessario moltiplicare un numero di campioni per altrettanti parametri. Il DSP invece riesce a realizzare l’operazione di MAC (moltiplicazione e addizione) in un unico ciclo di clock, riducendo drasticamente i tempi.

Esso permette di lavorare ad alte frequenze (GHz), nettamente superiori ad Arduino (16 MHz), questa caratteristica consente di elaborare segnali audio ma soprattutto video in real time. In genere il segnale video è “corrotto” dal rumore impulsivo (simile all’effetto neve dei vecchi televisori), filtrarlo digitalmente in tempi molto brevi diventa fondamentale quando si parla di strumenti come fotocamere e videocamere.

Un ultima caratteristica del DSP (non trascurabile visti i tempi) è il prezzo, è infatti dispositivo molto economico. Seppure a causa delle alte frequenze in gioco, permanga il problema dell'energia dissipata, che costituisce un ribilanciamento dei costi contenuti in prima istanza.

Programmazione

Programmare il DSP non risulta particolarmente impegnativo in quanto tramite CCS (Code Composer Studio), l’ambiente di sviluppo di Texas Instruments, è possibile scrivere il codice da implementare in C oppure assembler.

Ma qual è il più conveniente?

Innanzituto è necessario considerare la difficoltà del progetto: più è complicato più si cercherà di evitare l’assembler. Inoltre, per coloro i quali lavorano in team, programmare in C rende di gran lunga più semplice la condivisione del codice.

A differenza dei microprocessori il DSP non è un dispositivo general pourpose. Questo significa che ogni DSP viene realizzato per eseguire al meglio una specifica funzione, tra le quali: image processing, spettroscopia oppure acceleratori grafici. Di conseguenza le prestazioni del dispositivo variano in base al settore in cui è specializzato. DSP dedicati all’image processing impiegano tempi ridotti nell’elaborazione dei pixel rispetto ad un microprocessore. Tuttavia sono sprovviste della virgola mobile, necessitano perciò di molto più tempo per realizzare operazioni aritmetiche, incompatibili con la loro “natura”.

Restando sul precedente esempio, un DSP dedicato all'image processing riesce ad effettuare l'operazione di somma satura in un solo ciclo di clock. Aumentare la luminosità di un pixel significa sommare una costante al suo valore (0-255 in caso di 8 bit), se il valore del pixel raggiunge 255, sommandovi una costante, a causa dell’overflow, tornerebbe ad un valore intorno allo zero, rendendo il pixel scuro. Ciononostante la somma satura permette di saturare il pixel a 255 in caso di overflow, risparmiando i cicli di clock dedicati al controllo del risultato della somma.

FPGA

Il dispositivo FPGA invece consente di elaborare i dati in parallelo, il flusso di dati scorre contemporaneamente. All’interno di un FPGA si trovano milioni di [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1997 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici e potrai fare il download in formato PDF eBook e Mobi per un anno. ABBONATI ORA, è semplice e sicuro.

2 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 1 luglio 2015
    • luigiraffaele22 27 luglio 2015

Scrivi un commento