Componenti principali

Tutti i sistemi digitali (quindi anche quelli di tipo "embedded") sono costruiti attorno ad un "elaboratore" (processore), che ne rappresenta l'elemento più importante in grado di condizionare in modo decisivo il progetto e la realizzazione. Il sistema è poi completato da altri elementi tra cui in particolare memorie, generalmente organizzate in una gerarchia da quelle più veloci e costose a quelle più grandi e di basso costo, e un insieme di periferiche (come tastiera, spesso non necessaria nei sistemi embedded, video, stampanti, sensori,...). Tra queste periferiche un ruolo sempre più importate è giocato dai dispositivi per comunicazione, con o senza fili (cabled o wired, opposti a quelli wireless), a causa della crescente necessità di collegare il processore con diverse periferiche (a volte anche a grande distanza) e con altri sistemi, tipicamente mediante connessione "in rete" (internet).

1 Processori

L'elaboratore può essere di tipo standard oppure realizzato "ad hoc", in forma più o meno integrata sotto il profilo tecnologico. Dal punto di vista (generale) dell'architettura, il problema è quello già descritto in precedenza, nel senso che (quasi) tutte le applicazioni di interesse potrebbero essere affrontate con l'utilizzo di processori di tipo generale (Pentium, Power PC,...), ma questa soluzione risulta generalmente non conveniente (per quanto riguarda costo, consumo, ingombro,...) per cui occorre trovare soluzioni migliori. Esistono in proposito diverse alternative, da valutare in senso comparativo caso per caso. Tipicamente, la soluzione con "processori standard" si caratterizza per la possibilità di limitare il progetto al solo sviluppo di software (in linguaggio evoluto per la disponibilità di sistemi operativi avanzati), con il vantaggio di ridotti costi di sviluppo e corto Time-to-Market. Tuttavia, il costo unitario (di ogni replica del prodotto) è generalmente elevato e il grande eccesso di risorse disponibili rispetto a quelle strettamente necessarie porta tendenzialmente a grande ingombro, alto consumo e, spesso, anche a prestazioni insoddisfacienti. Per esempio, è chiaro sistemi dedicati a controllare una delle luci direzionali (freccia) di un'auto, l'illuminazione fornita da una lampada per uso domestico, o una lavatrice non sono adatti ad essere realizzati con un microprocessore Pentium, il cui costo, consumo ed ingombro non rientrano nella "maschera" accettabile dal mercato (in relazione alle possibili alternative). Opposto di quello che prevede processori di tipo generale, è il caso in cui si utilizza un processore sviluppato appositamente per l'applicazione di interesse. Con questa soluzione, naturalmente, si può cercare di eliminare tutto l'hardware non strettamente necessario, ottenendo benefici in termini di consumo, ingombro e prestazioni. Tuttavia, lo sviluppo di un processore "ad hoc" richiede un notevole sforzo di progetto, che porta ad alti costi di sviluppo e lunghi Time-to-Market (anche perchè spesso il software deve essere sviluppato in linguaggio macchina, assai meno conosciuto e di utilizzo meno immediato dei linguaggi di tipo evoluto,). Questa scelta, dunque, privilegia le prestazioni e il basso costo unitario (perchè il prodotto è "ottimizzato" per l'applicazione), ma penalizza il costo di sviluppo e il Time-to-Market. Inoltre, non utilizzando hardware standard, si possono incontrare anche problemi per quanto riguarda anche altri importanti caratteristiche dei prodotti (affidabilità, compatibilità elettromagnetica, compatibilità con standard affermati,...).

Per mitigare questi inconvenienti, la realizzazione di processori "ad hoc" non è (quasi) mai affrontata nel modo più diretto mediante una progettazione di tipo "full custom" su silicio (ovvero ottimizzata a livello del singolo blocco logico), perchè ciò avrebbe costi largamente eccessivi (i dispositivi a semiconduttore, infatti, diventano convenienti soltanto quando sono realizzati in milioni di esemplari per anno) e lo sforzo di progetto trascenderebbe le capacità della maggior parte delle imprese che producono sistemi embedded (in pratica quasi sempre occorrerebbe una forte collaborazione con un costruttore di semiconduttori). Come valide alternative, sono tate sviluppate delle tecnologie intermedie per consentire lo sviluppo di processori "per applicazioni specifiche" a partire da elementi hardware di tipo generale. Tra queste soluzioni è utile distinguere quelle che prevedono comunque un intervento progettuale su silicio (ad esempio di tipo "semi-custom" come gate-arrays o sea-of-gates), da altre di tipo "programmabile", ovvero che realizzano il dispositivo voluto configurando mediante segnali esterni un opportuno hardware già interamente realizzato (Programmable Logic Devices - PLD- Field Programmable Gate Arrays - FPGA). Accanto a queste soluzioni concettualmente di tipo opposto (processore di tipo generale oppure "dedicato"), ne esistono altre intermedie. In particolare, nel caso in cui il sistema richieda l'esecuzione frequente di alcune funzioni importanti, dal punto di vista architetturale è spesso conveniente affiancare il processore principale con altri "dedicati" a tali funzioni (ed ottimizzati rispetto ad esse), che assumono il ruolo di co-processori. Questi componenti, a loro volta, possono essere progettati "ad hoc", tuttavia esistono anche classi di funzioni specializzate ma di uso molto comune per le quali le case costruttrici di dispositivi al silicio hanno trovato conveniente sviluppare dispositivi "specializzati" da rendere disponibili sul mercato (come commodities). Tra questi, in particolare, co-processori grafici, per calcoli in virgola mobile, per elaborazione di segnali (DSP),... In alcune applicazioni molto specializzate, questi co-processori possono diventare il fulcro del sistema, in qualche raro caso addirittura senza necessità di un processore generale di gestione. In generale, dunque, il problema principale del progetto di un sistema embedded è quello di strutturarne l'architettura, decidendo quali funzioni affidare a componenti dedicati e quali, viceversa, a processori "abbastanza" o completamente generali. Inoltre, naturalmente, occorre organizzare le componenti di memoria (articolandole in memorie veloci - cache - RAM , ROM e di tipo non volatile - tipicamente Flash). Infine, bisogna progettare le componenti periferiche, con particolare riferimento a quelle dedicate alle comunicazioni (tra processori, periferiche e processori, con la rete,...). Un esempio notevole di questo tipo di progetto è dei micro-controllori, dispositivi di uso molto esteso, che rappresentano un tentativo di realizzare un intero sistema per "applicazioni specifiche" ma comunque di mercato adeguatamente vasto, in forma "intergrata" (su silicio in un singolo chip). In questo caso, dunque, si tratta di integrare insieme la parte di elaborazione con quella di memoria e con alcune periferiche di largo uso. Peraltro è evidente che la necessità di mantenere la complessità del chip entro limiti economicamente accettabili e quella di non specializzare eccessivamente il sistema (per non ridurne il mercato) impongono scelte abbastanza drastiche per quanto riguarda il tipo di processore, che per risultare semplice ed ad alte prestazioni deve essere anche abbastanza specializzato. Spesso i micro-controllori sono particolarmente adatti al controllo di pochi segnali come richiesto per applicazioni in campo industriale, nella robotica, negli elettrodomestici, nei gadgets,.. E' evidente, che la vasta gamma di applicazioni indirizzabili non può essere soddisfatta con un solo dispositivo. Da qui la grande varietà di micro-controllori sul mercato, anzi di "famiglie" di dispositivi simili ma di complessità e prestazioni differenziate, diverse l'uno dall'altra per casa produttrice, architettura, prestazioni, costo,... Nonostante i micro-controllori abbiano le caratteristiche per essere interi "sistemi" integrati su un singolo chip, è largamente prevalente il caso in cui sono utilizzati come "processore" principale di sistemi che si compongono anche di altri (co-)processori nonchè di altre periferiche, il tutto realizzato in forma di schede stampate.

2 Memorie

Le memorie rappresentano un ingrediente fondamentale di tutti i sistemi digitali e uno dei componenti determinanti per quanto riguarda costo e prestazioni.

Sono necessari in tutti i sistemi elettronici:

Si prevede un incremento del mercato delle memorie.

Classificazione

Dal punto di vista della classificazione si possono assumere diversi punti di vista, tutti legittimi ed importanti perchè relativi a diversi aspetti del problema complessivo:

In particolare, le memorie possono essere:



RWM NVRWM ROM
Random Access Non Random Access EPROM EEPROM FLASH Mask-Programmed PROM
SRAM DRAM FIFO
LIFO
Shift Register
CAM

Naturalmente, le classificazioni che precedono non sono mutuamente esclusive, per cui, per esempio, una memoria cache è di tipo RAM, quindi volatile, a semiconduttore e di tipo embedded. La stessa considerazione vale per le altre memorie del sistema.

 

Architettura

ROM

Le ROM sono memorie programmabili una sola volta, che mantengono l' informazione per sempre;
possono essere divise in due categorie:

NVRWM


quindi riassumendo.....

 

EPROM EEPROM FLASH
Write Time >10 ms >1 ms 1-100 us
Erase Time >10 min >100 ms >100 ms
Data Retention 10 years >40 yaears >100 years

VRWM

Memorie a letture/scrittura volatili che:

Gerarchia delle memorie

Il costo delle memorie dipende essenzialmente dalla tecnologia (più o meno avanzata), dalla dimensione o capacità (numero di bit memorizzabili) e dalle prestazioni (tempo di accesso). Spesso questo tipo di componenti ha un'influenza determinante sul costo complessivo e sulle prestazioni del sistema. In generale, si ottengono grandi vantaggi (sia di costo che di dimensioni) quando, a parità di necessità di memoria totale, questa viene realizzata con un numero minore di dispositivi (più grandi). Da qui la spinta ad utilizzare memorie a maggior capacità possibile, dunque realizzate con la tecnologia dell'ultima generazione. Da questo punto di vista, vale anche la pena di ricordare che se anche il costo dei dispositivi cresce (poco) con l'utilizzo di tecnologie nuove e più avanzate, la capacità delle memorie cresce assai più velocemente passando da una generazione tecnologica alla successiva, con il risultato che il costo unitario (costo per bit memorizzato) cala continuamente (in modo esponenziale nel tempo, dimezzandosi circa ogni 18 mesi).

Divario di prestazioni tra CPU e Memoria.
Dato che la CPU attende molto tempo prima che arrivino i data dalla memoria, con la gerarchia delle memorie si cerca di minimizzare gli accessi alla memoria centrale.

Cache

Memoria on-chip alla quale la CPU accede con un unico ciclo di clock.
Tempo medio di accesso= HIT-RATE * HIT-TIME + MISS-RATE* MISS-TIME

  1. CORRISPONDENZA CACHE-MEMORIA PRINCIPALE


  2. STRATEGIE DI SCRITTURA


  3. POLITICA DI SOSTITUZIONE DELLE LINEE

I sistemi embedded, comprendono spesso tutti i tipi di memoria elencati in precedenza. Come ricordato, accanto al processore (di qualunque tipo) c'è comunque una memoria cache. Inoltre, se si utilizza un micro-controllore, questo contiene al suo interno memorie embedded di tipo sia RAM che ROM che Flash. Tuttavia, sempre nel caso dei processori di tipo generale ma spesso anche quando si utilizzano micro-controllori, le memorie embedded non bastano e i sistemi hanno bisogno di dispositivi di tipo stand-alone che costituiscono importanti componenti delle schede su cui è realizzato il sistema. Da questo punto di vista occorre tenere presente che più dispositivi di memoria di tipo "stand alone" possono essere combinati (su scheda) a formare "banchi di memoria" con caratteristiche superiori a quelle di ciascuno di essi. In particolare, la connessione "in parallelo" di diversi chip consente di aumentare la lunghezza delle parole della memoria risultante rispetto a quella di ogni singolo dispositivo, mentre la connessione "in serie" permette di memorizzare più parole di quelle di ciascun componente. Naturalmente i due tipi di connessione possono essere utilizzati insieme per formare "banchi di memoria" di capacità maggiore e per parole più lunghe rispetto alle caratteristiche dei componenti utilizzati.

Conclusioni

3 Periferiche

Con il termine generale di "periferiche" si definiscono un insieme di componenti collegati al processore che svolgono in modo ottimale compiti specifici e ben definiti. Proprio perchè "periferico", nessuno di questi elementi è strettamente indispensabile per il processore, anche se qualcuno di essi lo diventa in relazione all'applicazione specifica che si intende realizzare. L'elenco delle periferiche di interesse è molto lungo e qui ci si limiterà soltanto a quelle di uso più comune. Dal punto di vista generale, vale al pena di osservare come in linea di principio ogni periferica richieda un "driver", ovvero un elemento di interfaccia, che le permetta di dialogare senza problemi con il processore. Questi "drivers" a loro volta sono spesso sistemi "embedded" realizzati in forma di una scheda comprendente un micro-controllore e sono dotati di software specifico. In altri casi, specie quando il sistema è realizzato mediante un processore di tipo standard, i drivers si riducono al solo software, essendo le risorse hardware già parte del sistema principale.

Le periferiche di maggiore interesse per i sistemi digitali sono le seguenti.

Periferiche di input/output

Periferiche "di temporizzazione"

Si tratta di elementi che sono spesso presenti nei sistemi digitali e possono essere realizzati sia nella forma di dispositivi "stand alone" (detti anche "off-the-shelf", cioè disponibili sul mercato come prodotti standard), oppure in quella di tipo "embedded", ovvero integrate su silicio insieme con il processore. Questa ultima soluzione è particolarmente utilizzata nel caso dei micro-controllori che, come già menzionato, rappresentano (piccoli) "sistemi su singolo chip. Tra questo tipo di periferiche sono particolarmente comuni (ed importanti ):

Per approfondire: presentazione (formato ppt) 'Periferiche di Timing' .

Periferiche "di comunicazione"

Questi elementi svolgono una funzione essenziale in quanto preposti al collegamento del processore col "mondo esterno", quindi con periferiche di vario tipo, altri processori e con "la rete", consentendo di realizzare sistemi modulari e distribuiti in grado di utilizzare risorse di vario tipo. Poichè debbono mettere in comunicazione elementi diversi, queste periferiche necessitano di protocolli di comunicazione standardizzati, che possono essere facilmente implementati o sono già disponibili nei drivers sul mercato. Per le periferiche di comunicazione, la caratteristica più importante è la velocità, che si misura in bit rate (bit/ secondo) o in baud rate (numero di cambiamento dei segnali / secondo). Naturalmente a parità di trasmissione il valore in bit rate è maggiore di quello in baud rate.

Tra queste periferiche una particolarmente importante è quella denominata:

Nei moderni sistemi, tuttavia, si utilizzano anche altre periferiche di comunicazione, con i relativi protocolli, di tipo sia seriale che parallelo. Da un punto di vista generale, le periferiche di tipo seriale utilizzano un solo filo/ canale di trasmissione, mentre quelle di tipo parallelo ne richiedono uno per ogni bit delle parole del sistema. Per questo motivo le ultime sono più ingombranti e costose (anche se più veloci). Inoltre, soffrono intrinsecamente del problema del ritardo relativo tra la trasmissione dei bit sui singoli canali di trasmissione. Perciò le periferiche di tipo parallelo non sono adatte per comunicazioni a lunga distanza e sono tipicamente riservate per pochi casi particolari (come la connessione con le stampanti). Un'altra classificazione che ha assunto una fondamentale importanza con l'esplosione della elettronica di tipo "nomadico" (che cioè fa uso di dispositivi mobili) è quella tra periferiche di comunicazione con collegamento fisico ("cabled" o "wired ") o "senza fili" (wireless). Tra queste ultime occorre distinguere tra le periferiche che fanno uso di segnali all'infrarosso (Ir) da quelle basate sull'uso di radiofrequenze (RF). Le prime sono particolarmente economiche, a basso consumo ed hanno qualche vantaggio dal punto di vista dall'accettabilità da parte del pubblico (perchè non incidono sull'inquinamento elettromagnetico), ma sono adatte soltanto a collegamenti a breve distanze e richiedono l'allineamento "a vista" degli elementi collegati. Le seconde superano le difficoltà dovute alla distanza ed al posizionamento, ma sono più complesse (perchè necessitano di antenne e di elettronica analogica sia in ricezione che in trasmissione), consumano maggiore potenza, sono più costose e suscitano qualche perplessità per quanto riguarda l'inquinamento e la compatibilità elettromagnetica. Le principali periferiche/ protocolli di comunicazione "avanzata" sono disponibili nella forma di schede acquistabili sul mercato, che possono essere facilmente inserite nel sistema. Gli esempi più importanti di questo tipo sono i seguenti.

Periferiche a connessione "fisica" (wired or cabled)

Periferiche per connessioni senza fili (wireless)

Periferiche "speciali"

Convertitori Analogico/Digitali

Introduzione

Oggi i sistemi per l'elaborazione in forma numerica dei segnali sono sempre più diffusi.
In essi il processo di misura passa attraverso due fasi fondamentali: la conversione del segnale analogico in segnale numerico e la sua successiva elaborazione. Allo sviluppo e all'affermazione di questi apparati di misura hanno contribuito sia l'evoluzione dei convertitori (A/D e D/A), sia, soprattutto, quella dei processori per l'elaborazione numerica dei segnali.

L'ultimo stadio di questa evoluzione è rappresentato dai DSP (Digital Signal Processor), che costituiscono veri e propri microprocessori esclusivamente dedicati all'elaborazione numerica dei segnali.

Il ponte di collegamento teorico tra due discipline complementari quali sono l'elaborazione analogica e quella digitale dei segnali è il teorema di campionamento di Shannon, mentre il passaggio vero e proprio tra l'una e l'altra disciplina avviene attraverso i dispositivi di campionamento e di conversione A/D e D/A. Le prestazioni di questi convertitori determinano gli effettivi vincoli e i limiti di applicabilità del teorema di campionamento di Shannon e di conseguenza la "qualità" dei sistemi di elaborazione dell'informazione e il fatto che il campionamento del segnale analogico contenga tutta l'informazione di partenza.

Risulta quindi indispensabile un'analisi dei metodi di funzionamento e delle principali caratteristiche dei convertitori A/D e D/A.

Capitolo 1

Il teorema del campionamento

Il campionamento di un segnale analogico tempo-continuo x(t) è il processo che porta al segnale tempo-discreto x*(t). Questo assume i valori del segnale analogico negli istanti di campionamento. Solitamente i campioni vengono prelevati ad intervalli costanti ΔT = Tc. In questo caso si parla di campionamento uniforme e x*(t) = x(KTc) con k ε ]-∞, +∞[. Tale operazione può essere schematizzata nel circuito di figura 1.1

Dal punto di vista matematico l'operazione di campionamento uniforme è rappresentata dal prodotto del segnale da campionare con degli impulsi di Dirac intervallati di Tc:

Il teorema di Shannon garantisce che tutto il contenuto informativo del segnale analogico sia mantenuto a valle del campionamento e che quindi questo sia totalmente reversibile.

L'enunciato del teorema è il seguente:
un segnale e(t) a banda limitata può essere ricostruito correttamente a partire dai suoi campioni solo se essi sono stati prelevati con una frequenza di campionamento 1/Tc maggiore o uguale al doppio della frequenza massima del segnale.

Per comprendere l'enunciato del teorema occorre analizzare i segnali e(t) ed e*(t) nel dominio delle frequenze. Consideriamo E(f) e E*(f) le trasformate rispettivamente di e(t) ed e*(t), cos da poter ottenere dalla precedente relazione nel dominio del tempo la seguente nel dominio delle frequenze:

Lo spettro E*(f) coincide, a parte il fattore di scala moltiplicativo, con la ripetizione periodica dello spettro E(f) con periodo fc = 1/Tc. L'operazione di campionamento, quindi, fa comparire, nel dominio delle frequenze, una serie di spettri secondari, detti alias, proporzionali al segnale e(t) come riportato in figura 1.2.

Per ottenere lo spettro del segnale di partenza e(t) è necessario eseguire un'operazione di filtraggio sullo spettro del segnale e*(t). E' evidente che mediante un filtro ?H(f) ? passa-basso ideale, si ottiene il risultato desiderato a patto che la massima frequenza del segnale non sia superiore ad fc/2. Nel caso in cui, invece, questa condizione non sia soddisfatta, ovvero quando la frequenza di campionamento 1/Tc è minore del doppio della massima frequenza del segnale, allora si verifica la condizione riportata in figura 1.3 e non si può ricostruire il segnale analogico tempo-continuo partendo dai suoi campioni.

In questa situazione gli spettri secondari si sovrappongono tra di loro e anche con quello originale e in queste zone di sovrapposizione le componenti spettrali risultano irrimediabilmente perse; anche utilizzando il filtro passa-basso ideale non si può ricavare lo spettro di e(t). Questo effetto è detto aliasing.

Bisogna sottolineare come l'effetto descritto sia puramente teorico, in realtà l'aliasing è dovuto anche ad alcuni aspetti più pratici.
Il primo è che è impossibile applicare in modo rigoroso il teorema del campionamento in quanto questo necessiterebbe di infiniti campioni su tutto l'asse dei tempi, mentre il campionamento avviene sempre in intervalli temporali finiti. Questo comporta un troncamento del segnale iniziale e(t) e quindi inevitabili approssimazioni.>br> Un secondo aspetto è dovuto al fatto che, nella realtà, un segnale non presenta mai una frequenza massima sopra la quale ha componenti tutte nulle. Da un punto di vista pratico, quindi, questo comporta che il fenomeno dell'aliasing sia sempre presente. Per ovviare a questo problema si aggiunge, spesso, nella catena di conversione (vedi figura1.4), un filtro detto di anti-aliasing che limita lo spettro del segnale alla sola banda di interesse, determinando così la frequenza massima. In questo modo si evitano fenomeni di aliasing dovuti a frequenze spurie presenti nel segnale originale. Si può osservare un esempio di tale filtro in figura 1.5.

Le caratteristiche di questo filtro devono essere che in banda passante sia minima l'attenuazione per non attenuare in maniera differente le varie componenti spettrali del segnale, e che abbiano una caratteristica di fase il più lineare possibile con la frequenza per assicurare un ritardo costante a tutte le componenti . Al di fuori della banda passante è richiesta una grande attenuazione per ridurre fortemente il fenomeno dell'aliasing. Il problema è che le caratteristiche di forte attenuazione fuori banda e di trasparenza in banda sono in antitesi tra loro. Proprio per questo il compito di progettare un buon filtro anti-aliasing è così delicato.

Nella catena si osserva un blocco campionatore tra il filtro e il blocco di conversione. Questo offre maggiore banda al segnale di ingresso. Tale blocco può essere o un sample and hold (SH) oppure un track and hold (TH). Entrambi sono delle memorie di tipo analogico che campionano il valore che il segnale assume in un breve intervallo di tempo e lo memorizzano rendendolo disponibile per un intervallo di tempo maggiore. Una semplice schematizzazione di queti campionatori è quella di figura 1.6.

L'interruttore si chiude nella fase di sample per un SH o nella fase di track in un TH, le armature si caricano fino ad arrivare alla tensione del segnale di ingresso. Quando l'interruttore viene aperto ( fase di hold) la tensione sulle armature si mantiene costante, indipendentemente dall'ingresso. La differenza tra SH e TH è che nel primo la fase di sample è breve rispetto all'intero periodo, mentre nel secondo la fase di track è molto lunga rispetto al periodo.
Infine bisogna osservare che la ricostruzione del segnale originale a partire dai campioni passa attraverso un' operazione di filtraggio. Tale filtro lo abbiamo ipotizzato ideale, in realtà non è così e non consente una copia esatta dello spettro desiderato.

Capitolo 2

La conversione A/D e D/A

Solitamente i fenomeni che si osservano in natura sono caratterizzati da segnali che si definiscono analogici, ovvero che mostrano tre caratteristiche:

•  Variano in modo continuo nel tempo

•  Possono assumere infiniti valori

•  Tutti i valori assunti sono significativi

Per poter trattare l'elaborazione numerica di tali segnali, è necessaria la loro conversione in forma digitale. La caratteristica univoca di un segnale digitale è la seguente:

•  Può assumere solo i valori binari 1 e 0

Risulta quindi necessario costruire un sistema in grado di ricevere un segnale analogico, elaborarlo e, infine, restituirlo nuovamente in forma analogica. Tale sistema è schematicamente rappresentato nella figura 2.1.

L'interfaccia analogico-digitale converte i segnali analogici in segnali digitali per permetterne l'elaborazione da parte dell'unità digitale ( ad esempio DSP), mentre l'interfaccia digitale-analogica converte i segnali digitali in segnali analogici adatti per gli attuatori da controllare. E' indispensabile ricordare che ad ogni conversione si commette un errore.

Il segnale digitale è costituito da una sequenza ordinata formata da un determinato numero finito di cifre; il segnale analogico di partenza è rappresentato, quindi, con una certa risoluzione strettamente legata proprio al numero di cifre stesso. Il processo di conversione A/D può essere suddiviso in due fasi distinte: nella prima si campiona il segnale analogico rispettando il teorema del campionamento e stabilendo, quindi, il giusto intervallo di campionamento T c ; nella seconda si attribuisce al valore campionato quello più simile a al valore numerico discreto disponibile. Questa operazione è detta quantizzazione. Tali fasi sono riportate in figura 2.2.

Analizziamo, ora, più in dettaglio, la conversione A/D.
Si è già detto che il segnale di partenza analogico è caratterizzato da un andamento continuo nel dominio del tempo e da uno spettro nel dominio delle frequenze, come indicato in figura

Ora applichiamo l'operazione di campionamento al segnale analogico, ovvero scelto T c , associamo al segnale analogico, per tutto T c , il valore iniziale del segnale d'origine. Ovviamente il segnale campionato è caratterizzato dal fatto che cambia il suo valore a tutti gli istanti multipli di T c . La situazione descritta è osservabile in figura 2.4.

In realtà, affinchè il valore del segnale negli istanti di campionamento e(kTc) sia utilizzabile dall'elaboratore è necessario che sia espresso in codice binario, quindi approssimiamo il suo valore appartenente all' insieme dei numeri reali con quello corrispondente ad un numero di cifre limitato (livelli di discretizzazione, vedi tabella 2.1).

Tabella 2.1:ndi bit vs livelli di discretizzazione

Bit del convertitore

Livelli di discretizzazione

8

256

10

1024

12

4096

Proprio questa è la fase di quantizzazione che è riportata in figura 2.5.
Con il tratto rosso è rappresentato il segnale campionato, mentre con il tratto blu è rappresentato il segnale quantizzato.

Ovviamente il segnale discretizzato dipende dalla regola di discretizzazione che si utilizza ed in particolare l'errore che si commette sarà tanto più piccolo quanto più sono i livelli di dscretizzazione.

Al segnale discretizzato viene associato un segnale digitale con una codifica univoca di ogni valore possibile. Per m valori possibili sono necessari un numero di bit n tali che

m = 2 n

Un esempio di codifica è riportato in figura 2.6.

La differenza tra il valore quantizzato e il valore analogico di partenza è definita come errore di quantizzazione . Il processo di quantizzazione presenta, quindi, un errore intrinseco. Nel processo di conversione duale invece, cioè quello digitale-analogico, ad un valore numerico del campione si fa corrispondere un definito e preciso valore analogico, esiste una corrispondenza univoca, non esiste quindi l'errore di quantizzazione.

Una rappresentazione dell'errore di quantizzazione è riportata in figura 2.7.

Oltre all'errore intrinseco di quantizzazione un convertitore A/D può presentare altri errori: errori di offset, di guadagno e di non linearità.

L'errore di offset è uno spostamento comune a tutti gli intervalli, tanto che si può riscontrare uno scostamento lungo l'asse delle ascisse dell'intera caratteristica. Tale errore può essere rilevato e compensato. Una sua rappresentazione è quella di figura 2.8a.
L'errore di guadagno, invece, è rappresentato da una pendenza della caratteristica reale rispetto a quella ideale ed il suo effetto è quello di amplificare proporzionalmente tutti gli intervalli. L'effetto massimo, pertanto, si ottiene nel fondo scala. Tale effetto può essere riscontrato in figura 2.8b

Anche questo tipo di errore può essere rilevato ed eliminato con un'operazione di taratura dello strumento.
Infine l'errore di non linearità si divide in due particolari tipologie: l'errore di non linearità differenziale e l'errore di non linearità integrale.
Per quanto riguarda quello differenziale questo consiste nella variazione della larghezza effettiva dell'intervallo di quantizzazione. Si possono verificare due casi limite che portano entrambi alla scomparsa di un livello, detta missing code , ovvero la larghezza tende a zero, o viceversa, tende a raddoppiare. La situazione è rappresentata in figura 2.9.

L'errore integrale è in relazione con il concetto di "migliore retta interpretativa". Questa è la retta che meglio approssima quella ideale che dovrebbe passare dai punti medi di ogni intervallo. Tale retta può essere determinata con metodi numerici, ad esempio con il metodo dei "minimi quadrati". L'errore integrale è la distanza massima tra la retta ideale e quella che l'approssima.
Gli errori definiti servono per caratterizzare la caratteristica statica del convertitore. Per quanto riguarda la caratterizzazione dinamica dei convertitori, questa si basa su alcune prove che mirano a determinare:

•  la distorsione armonica totale (THD) del convertitore, infatti a causa delle non linearità lo spettro del segnale d'uscita presenta oltre alla fondamentale anche alcune armoniche spurie. Il fattore THD valuta proprio il rapporto tra la somma delle potenze delle armoniche rispetto alla potenza della fondamentale:

Una possibile variante al THD è la valutazione contemporanea del THD stesso e del rumore sommando la sua potenza a quella delle armoniche

•  il margine presente tra la componente di segnale e l'ampiezza della più alta componente di disturbo (SFDR, spurious free dynamic range)

•  la valutazione della distorsione di intermodulazione (IMD), ovvero quanto una componente del segnale, per effetto delle non linearità, può modulare altre componenti.

L' accuratezza di un convertitore è definita in base a questi errori e deve essere indicata dal costruttore (ad esempio in parti per milione o in rapporto ai bit meno significativi LSB).
La risoluzione , invece, è indipendente da questi errori e dipende univocamente dal numero dei bit presenti all'uscita digitale.
Per la maggior parte delle applicazioni, oggi, il parametro fondamentale risulta però la velocità che è inversamente proporzionale al tempo di conversione.

Anche per i convertitori D/A valgono molte considerazioni già fatte. Esaminiamo in particolare gli errori della conversione digitale-analogica.
L'errore di offset è definito come un valore della grandezza di uscita (tensione o corrente) non nullo in corrispondenza di un codice binario nullo. L'effetto è la traslazione della caratteristica (vedi figura2.10a).
Anche l'errore di guadagno dei D/A è definito come quello dei A/D, ovvero è la variazione della pendenza della caratteristica di uscita (vedi figura2.10b). Entrambi questi errori possono essere compensati.
Infine l'errore dovuto alle non linearità nei D/A si traduce come la variazione della tensione di uscita rispetto a quella ideale al variare del codice di ingresso, come rappresentato in figura 2.11.

Capitolo 3

Presentazioni di alcuni convertitori

In questo capitolo descriveremo ed analizzeremo alcuni convertitori soffermandoci sulle loro caratteristiche principali.

Prima di considerare, però, particolari configurazioni elettriche e circuitali riassumiamo quelli che sono i parametri su cui ci si basa per scegliere il convertitore più utile per la situazione con cui si ha a che fare. Bisogna ricordare che spesso alcune esigenze sono in antitesi tra loro, quindi bisogna raggiungere dei trade-off. In particolare si riportano le caratteristiche dei convertitori A/D che spesso devono soddisfare specifiche più stringenti rispetto a quelli D/A:

Coefficienti di temperatura : specificando l'instabilità dei vari parametri al variare della temperatura. Quest'ultimo è il parametro meno significativo qualora il convertitore lavori in un range attorno alla T ambiente come solitamente avviene.

Convertitori A/D con comparatori in parallelo

Un convertitore di questo tipo con uscita a n bit è costituito da 2 n -1 comparatori e da un codificatore. Il segnale Va da convertire viene applicato agli ingressi non invertenti dei comparatori; l'ingresso invertente di ciascun comparatore è connesso ad una rete resistiva che ripartisce la tensione di riferimento in 2 n fasce in modo da fissare i livelli di riferimento. Ciascun comparatore commuta la sua uscita a 1 quando Va supera il rispettivo livello di riferimento.
Questo tipo di convertitore consente elevate velocità di conversione (dell'ordine di 10ns) e non richiede generalmente l'impiego di circuiti S/H. L'incoveniente di questo tipo di convertitore è l'elevato numero di comparatori richiesti per alte risoluzioni. Il suo schema circuitale è riportato in figura 3.1.

Convertitori ad approssimazioni successive

Questo metodo di conversione è il più diffuso in quanto consente un buon compromesso fra velocità di conversione e risoluzione. Si basa sullo stesso principio che viene utilizzato per determinare il peso di un oggetto con una bilancia di precisione a due piatti. Si supponga di dover pesare un oggetto di peso inferiore ad 1Kg, disponendo solo di una serie di pesi campione di valore decrescente, pari ciascuno alla metà del precedente: Kg, Kg, ecc. Posto l'oggetto su un piatto della bilancia, sull'altro vengono aggiunti i pesi campione in ordine, partendo dal maggiore. Ogni volta che l'aggiunta di un peso fa inclinare la bilancia dalla parte dei pesi, lo si sostituisce con il peso immediatamente inferiore. Il peso dell'oggetto è dato dalla somma dei pesi campione rimasti sul piatto. Associando ai pesi campione le corrispondenti cifre binarie si può esprimere il peso dell'oggetto in forma digitale. Il funzionamento è il seguente: dopo il comando di conversione (SOC) il registro SAR si trova nello stato 1000. Questo dato immesso nel DAC fornisce il primo livello analogico da confrontare con il segnale Vi. Se Vi > Vy il bit più significativo rimane alto, altrimenti si porta a 0. Al segnale di clock viene portato ad 1 il secondo bit e si ripete il procedimento per tutti i bit. La fine della conversione viene segnalata dal blocco di temporizzazione con EOC e l'uscita può essere letta. Con questa tecnica si richiedono n cicli di clock per convertire una tensione di ingresso in un dato ad n bit. In figura 3.2 si può osservare una rappresentazione a blocchi del circuito.

Convertitori ad approssimazioni successive

Un convertitore a conteggio è composto da un contatore binario, un convertitore D/A e un comparatore, oltre che alla logica di controllo e temporizzazione (vedi figura 3.3). Il suo funzionamento è il seguente: il comando di conversione SOC inizializza il sistema azzerando il contatore tramite l'ingresso di clear (reset) e abilitando successivamente, tramite la porta AND, il conteggio degli impulsi di clock. L' uscita del contatore, convertita dal DAC, fornisce una tensione V y crescente con andamento a gradinata (vedi figura 3.4), per questo motivo viene anche chiamato convertitore a rampa digitale.

Quando questa tensione raggiunge e supera lievemente il valore di V i , il comparatore commuta portando V i a 0 e disabilitando il conteggio. Il numero di impulsi conteggiati dal contatore è proporzionale a V i e il tempo di conversione dipende dal valore di V i . Per una data frequenza di campionamento e per un dato numero di bit d'uscita, il convertitore a conteggio richiede una frequenza di clock molto più elevata di quella utilizzata da un convertitore ad approssimazioni successive. Per n bit di uscita occorre prevedere un tempo di conversione pari a 2 n cicli di clock. Perciò i convertitori a rampa digitale si prestano per applicazioni in cui la frequenza di campionamento sia inferiore a 100 kHz. Tutte le fasi del funzionamento del convertitore sono riportate in figura 3.4.

Un miglioramento al convertitore a conteggio è l'impiego di un convertitore avanti-indietro ; si ottiene così un convertitore a rampa digitale continua o servo-convertitore ( track converter ). Il contatore conta in avanti o indietro a seconda che l'uscita del comparatore sia il valore logico 1 oppure 0 e quindi a seconda che V i sia maggiore o uguale a V y . Questo convertitore non necessita dell'azzeramento del contatore ad ogni ciclo di conversione; perciò il contatore manterrà il numero conteggiato da una conversione alla successiva, incrementandolo o decrementandolo al variare di V i .
Il servo-convertitore richiede circa la metà dei conteggi e può quindi impiegare una frequenza circa doppia.

Convertitore ad integrazione

Esistono due tipi di convertitori ad integrazione: convertitori ad una rampa e quelli a doppia rampa. Esaminiamo prima il convertitore ad una rampa riportato in figura 3.5. Questo convertitore viene anche chiamato convertitore tensione-tempo dal momento che, contando i cicli di clock, fornisce la misura dell' intervallo di tempo T, proporzionale a Vi.

Il suo funzionamento, le cui fasi sono riportate in figura 3.6, è il seguente: il segnale analogico V i da convertire è confrontato con il segnale a rampa generato da un circuito integratore a cui è applicata una particolare tensione di riferimento costante - V ref . Finchè la tensione incognita V i è maggiore a V ¹, l'uscita del comparatore è a livello alto e abilita il conteggio del contatore binario ad n bit, a cui viene inviato un segnale di clock a frequenza fissa. Quando V ¹ supera V i , il comparatore commuta e il contatore si blocca, mantenendo memorizzato il numero conteggiato. L'interruttore S , comandato da un opportuno segnale di controllo o di Reset , chiudendosi, provvede a scaricare velocemente il condensatore portando a 0 l 'uscita ¹ . Lo stesso segnale di Reset disabilita il conteggio e azzera il contatore.  Poichè l'uscita dell'integratore è espressa come :

V ¹ = V ref * T/(RC)

e la commutazione avviene quando V i = ¹ , il numero l a cui arriva il contatore nell'intervallo T sarà proporzionale a V i secondo la relazione:

λ = f clk T = f clk V ¹ / (V ref ) *RC

La precisione e la stabilità sono piuttosto limitate dal momento che i valori forniti da questo convertitore dipendono dalla frequenza di clock, la costante di tempo RC dell'integratore, la tensione di riferimento V ref.

Gli inconvenienti appena enunciati vengono superati ricorrendo al convertitore a doppia rampa di figura 3.7.
Il funzionamento del convertitore è il seguente: all'inizio del processo di conversione, dopo che il sistema è stato inizializzato, il commutatore S 1 si trova nella posizione A e la tensione campionaria V i , in questo caso positiva, è applicata all'ingresso dell'integratore. La tensione di uscita di quest'ultimo è una rampa negativa V o = -Vi*t/(R*C) .

L'uscita del comparatore si mantiene quindi alta e abilita il conteggio degli impulsi di clock, di periodo T Ck , da parte del contatore binario ad n stadi. Il conteggio prosegue per 2 n cicli di clock, finchè la commutazione a zero di tutte le uscite del contatore non porta ad uno l'uscita del flip-flop. A questo punto S 1 viene commutato nella posizione B e all'ingresso dell'integratore si presenta la tensione di riferimento -V ref , di polarità opposta a quella di V i . L'uscita dell'integratore, che ha raggiunto il valore V o = -Vi*T 1 /(R*C) , comincia a salire con pendenza V ref /R*C . L'andamento della tensione V o è riportato in figura 3.8.

Il contatore conta fino a quando l'uscita dell'integratore, raggiungendo il valore 0, fa commutare il comparatore così da ristabilire il segnale di clock.

Il numero λ memorizzato nel contatore è proporzionale al valore di V i . Si noti, infatti, che durante la rampa positiva la pendenza è fissa e indipendente dal valore di V i ; la durata di questa rampa T 2 -T 1 =λ *T Ck , dipende però dal valore di tensione a cui è scesa in precedenza l'uscita dell'integratore, ovvero da V i .Più precisamente, poichè l'escursione di V i durante le due rampe è la stessa, si avrà :

Ricordando che T 1 = 2 n T Ck e T 2 -T 1 =  l T Ck, si ottiene

Il sistema funziona correttamente se V i < V ref ; se poi V ref è proporzionale a 2 n , allora l indica indirettamente il valore numerico di V i . Naturalmente alla fine del conteggio il dato digitale  l viene memorizzato in un registro di uscita, mentre il contatore e il flip flop vengono azzerati e il condensatore C scaricato mediante la chiusura di S 2 . Il sistema è così pronto per una nuova conversione. Questo convertitore offre notevole precisione e stabilità se la tensione di riferimento è precisa e stabile; non è invece critica la frequenza del segnale di clock, deve solo essere stabile durante ciascun ciclo di conversione. Inoltre si deve osservare che l'integrazione del segnale da convertire consente una notevole riduzione dei disturbi ad esso sovrapposti.

L'inconveniente di questa soluzione circuitale per realizzare il convertitore è un tempo di conversione elevato e dipendente dall'entità del segnale analogico di ingresso; viene perciò usato in sistemi di misura dove la velocità non è un parametro di primaria importanza.

Le principali limitazioni del convertitore descritto sono dovute alle correnti di perdita degli interruttori, alla tensione di offset e alle correnti di polarizzazione dell'operazionale. Gli effetti di questi errori possono essere ridotti adottando tecniche di conversione più sofisticate come la conversione a tre rampe o a quattro rampe (quad slope converter).

Convertitori A/D a sommatore

Prima di analizzare il convertitore D/A a sommatore è opportuno definire bene il ruolo di un convertitore digitale-analogico.
Il convertitore D/A converte un gruppo di n bit in un segnale elettrico, tipicamente una tensione V u , dato un segnale di riferimento, tipicamente V R .

Utilizzando la notazione posizionale, si può scrivere:

Considerando il fatto che i segnali digitali possono assumere solo i valori logici "1" o "0" allora si ottiene in parentesi una funzione termini costanti. Per poter usufruire della notazione posizionale in una configurazione elettrica, ci si basa su delle reti resistite dette a pesiera. Proprio tali reti a pesiera sono gli elementi principale del convertitore D/A . Un tipo di rete può essere realizzato utilizzando resistori di valore progressivo.

In figura 3.9 è rappresentata una rete a pesiera di questo tipo per la conversione di un numero a 4bit.  Gli interruttori S 0 , S 1 , S 2 e S 3 vengono collegati verso massa se il bit corrispondente vale 0, verso Vr se vale 1.  Ad ogni schema elettrico come quello di figura 3.9 corrisponde una tabella (si veda tabella 3.1) di conversione attraverso la quale si riporta il valore della tensione V u in funzione della tensione di riferimento V R al variare dello stato degli interruttori.

Tabella 3.1:conversione di VR in Vu al variare degli interruttori

S 3 S 2 S 1 S 0

V u

0 0 0 0

0

0 0 0 1

1/16*V R

0 0 1 0

2/16*V R

1 0 0 0

1/2*V R

1 1 1 0

14/16*V R

1 1 1 1

15/16*V R

Una possibile applicazione di questa rete a pesiera si ha nel circuito asommatore di figura 3.10. In questo caso un registro ad n bit contiene un dato in forma digitale. Ogni bit determina l'apertura o la chiusura del corrispondente interruttore.

La relazione che lega V R a V u è la seguente:

Convertitori D/A R-2R

La rete a pesiera vista nel circuito a sommatore necessita di resistori di valore anche molto diverso tra loro; ciò risulta non facilmente realizzabile nei circuiti integrati, a meno di notevoli perdite di precisione. La rete a pesiera R-2R, pur basandosi sullo stesso principio di funzionamento della rete del circuito sommatore, invece, richiede due soli valori resistivi dello stesso ordine di grandezza ed è perciò facilmente integrabile mantenendo livelli di precisione più elevati. Un circuito che si basa su questa rete resistiva è quello di figura 3.10. La relazione che lega V u a V R è la seguente: 

Casella di testo: Vu = VR/3( bn-1 + 1/2bn-2 + 1/4bn-3 + ... + 1/2n b0 )

Capitolo 4

Convertitori sul mercato

Nel capitolo 3 si è visto come i convertitori A/D e D/A, a seconda della loro realizzazione circuitale, siano caratterizzati da una molteplicità di parametri. Un parametro interessante da affiancare alle caratteristiche elettroniche dei convertitori, spesso fondamentale ai fini del rispetto delle specifiche economiche di un progetto, è anche il loro costo.

Si è fatta una piccola ricerca sui prodotti presenti attualmente sul mercato e sulle prestazioni da loro offerte, anche se, per analizzare nel dettaglio tutte le caratteristiche dei convertitori bisogna consultare i datasheet delle rispettive case costruttrici. In particolare si sono analizzati un convertitore D/A, il DAC0800 e uno A/D, l'ADC0808.

4.1 DAC0800

•  Piccoli tempi di assestamento 100 ns

•  Errore su tutta la scala ± 1/2 LSB

•  Non linearità dovuta a variazioni termiche ± 0,1%

•  Uscite in corrente complementari

•  Direttamente interfacciabile con la famiglia TTL, CMOS e altre

•  Vasto campo delle tensioni di alimentazione da ± 4,5V a ± 5V

•  Basso assorbimento di potenza 33mW a ± 5V

•  Sovraccarico termico (circa 10 s di saldatura) 300°C

4.2 ADC0808

•  Risoluzione 8 bit

•  Errore totale non compensato ±1LSB

•  Tempo di conversione 100 ns

•  Multiplexer ad 8 canali con latch per gli ingressi di controllo

•  Singola alimentazione 5V DC

•  Facilmente interfacciabile con tutti i microprocessori

•  Uscite adatte agli specifici livelli di tensione TTL

•  Intervallo delle tensioni analogiche di ingresso da 0V a 5V con singola alimentazione di 5V

•  Intervallo di temperatura ottimale -40°C a +85°C, al limite, -55°C a +125°C

•  Basso consumo di potenza, circa 15mW

•  Uscite di tipo latch e tri-state

•  Sovraccarico termico (circa 10 s di saldatura) 300°C

4.3 Alcuni convertitori in National-Semiconductor

Di seguito vengono riportate alcune tabelle che riassumono le principali caratteristiche dei convertitori D/A (tab 4.1)e A/D (tab 4.2). I dati sono relativi a prodotti della national-semiconductor.

Tabella 4.1:alcuni convertitori D/A

DEVICE

PRICE

PINS

RESOLUTION

INTERFACE

TYPE

SETTLIG

TIME

ERROR

Dac0800

0.58$

16

8 bits

Parallel

100 ns

½ LSB

Dac0802

0.57$

16

8 bits

Parallel

100 ns

½ LSB

Dac0808

0.67$

16

8 bits

Parallel

150 ns

½ LSB

Dac0830

3.31$

20

8 bits

Parallel

1000 ns

½ LSB

Dac0832

1.5$

20

8 bits

Parallel

1000 ns

½ LSB

Dac14135

5.1$

48

14 bits

Parallel

30 ns

½ LSB

Tabella 4.2:alcuni convertitori A/D

DEVICE

PRICE

PINS

RESOLUTION

INTERFACE

TYPE

CONVERSION

TIME

Adc081s021

0.69$

6

8 bits

Serial

5 us

Adc081s101

1.15$

6

8 bits

Serial

1 us

Adc102s021

1.30$

8

10 bits

Serial

5 us

Adc101s101

1.83$

6

10 bits

Serial

1 us

Adc121s101

2.2$

6

12 bits

Serial

1 us

 

 

Periferiche "di controllo"

Per pilotare "elementi" esterni di uso abbastanza generale sono state sviluppate delle apposite periferiche che sono rese disponibili sul mercato. Tra queste i controllori di tastiera, di display a cristalli liquidi (LCD), di motori passo-passo (per utilizzo nei controlli industriali ed in robotica).

4 Elettronica di completamento

Oltre al processore alla memorie e alle periferiche discusse in precedenza, i sistemi embedded richiedono spesso altri elementi, come: dispositivi passivi (resistenze, capacità, induttanze), trasformatori, interruttori,.... Tra questi un ruolo particolarmente importante è giocato da eventuali altri blocchi di circuiti elettronici digitali che servono per il "completamento" del sistema. Per questi esistono diverse soluzioni perseguibili, non tutte in pratica sempre perseguibili. Una prima strada percorribile è quella di comporre la logica che serve mediante componenti a medio/ basso livello di integrazione disponibili sul mercato. Questa soluzione comporta normalmente bassi tempi di sviluppo ma anche grande occupazione di area e prestazioni ridotte (a causa dei molti chip che possono essere necessari). Una seconda possibilità è quella di realizzare i circuiti che servono mediante dispositivi di tipo "programmabile" (per esempio FPGA), il che comporta costi e tempi di sviluppo più elevati, ma anche prestazioni ed ingombro generalmente assai migliori. Infine, una terza soluzione adatta a sistemi a più alte prestazioni prevede la realizzazione della elettronica di completamento mediante dispositivi di tipo semi-custom (ad esempio gate-arrays), che hanno costi e tempi di sviluppo molto più altri delle soluzioni precedenti, ma portano a migliori prestazioni e a più bassi costi unitari (di produzione).

Per approfondire: presentazione (formato ppt) 'Sensori di pressione integrati' .