Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso -...

28
Simone Buso - Microcontrollori e DSP - Lezione 13 1 Lezione 13 Sommario Temporizzazione Acquisizione dei dati Scelta dei fattori di scala Normalizzazione Effetti di quantizzazione Arrotondamento dei coefficienti Aritmetica a precisione finita Cicli limite Simone Buso - Microcontrollori e DSP - Lezione 13 2 Lezione 13 Materiale di riferimento 1. D. Glover, J.R. Deller, “Digital Signal Processing and the Microcontroller”, Prentice Hall, 1999. 2. A.V. Oppenheim, R.W. Schafer, J.R. Buck, “Discrete Time Signal Processing”, Second Edition, Prentice Hall. 3. K. Ogata, “Discrete Time Control Systems”, Prentice Hall, 1987.

Transcript of Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso -...

Page 1: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

1

Simone Buso - Microcontrollori e DSP - Lezione 13 1

Lezione 13Sommario• Temporizzazione• Acquisizione dei dati• Scelta dei fattori di scala• Normalizzazione • Effetti di quantizzazione • Arrotondamento dei coefficienti• Aritmetica a precisione finita• Cicli limite

Simone Buso - Microcontrollori e DSP - Lezione 13 2

Lezione 13Materiale di riferimento1. D. Glover, J.R. Deller, “Digital Signal

Processing and the Microcontroller”, PrenticeHall, 1999.

2. A.V. Oppenheim, R.W. Schafer, J.R. Buck, “Discrete Time Signal Processing”, Second Edition, Prentice Hall.

3. K. Ogata, “Discrete Time Control Systems”, Prentice Hall, 1987.

Page 2: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

2

Simone Buso - Microcontrollori e DSP - Lezione 13 3

Organizzazione di un controlloreQuando si decide di usare un mC o DSP per la realizzazione di un controllore digitale, ma anche di un semplice filtro numerico, si pongono immediatamente una serie di questioni di tipo pratico, che non hanno relazione con la progettazione del controllore e/o del filtro, che avviene in condizioni di assoluta idealità.Entrano infatti in gioco le caratteristiche del processore (e.g. la sua aritmetica, la sua lunghezza di parola) e delle periferiche (e.g. il convertitore A/D) che impongono di solito molti vincoli alla realizzazione effettiva.

Simone Buso - Microcontrollori e DSP - Lezione 13 4

Organizzazione di un controlloreSchematicamente, i problemi che si possono incontrare rientrano in una, o più (!), delle seguenti categorie:1. temporizzazione dell’algoritmo;2. acquisizione dei dati dal processo;3. gestione dei fattori di scala;4. effetti di quantizzazione in ingresso e in

uscita; 5. effetti della precisione finita

dell’aritmetica;6. insorgenza di cicli limite.

Page 3: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

3

Simone Buso - Microcontrollori e DSP - Lezione 13 5

TemporizzazioneLa gestione della temporizzazione, ossia della distribuzione temporale delle operazioni, in un controllo a catena chiusa digitale o anche in algoritmo di filtraggio numerico è un fattore critico.Ad esempio, le prestazioni di un sistema di controllo o di un filtro digitali sono fortemente dipendenti dalla frequenza di campionamento dei dati.Il requisito minimo per questo parametro è che, una volta fissato, esso rimanga costante.

Simone Buso - Microcontrollori e DSP - Lezione 13 6

TemporizzazioneSe è disponibile una periferica di acquisizione (convertitore A/D) on chip, mantenere la frequenza di campionamento costante è facile.Il problema della scelta del valore di tale frequenza è in generale complesso, perché coinvolge direttamente il progetto dei regolatori e dei filtri da realizzare (i loro coefficienti dipendono dalla frequenza).Nella pratica, la tendenza è quella di fissare la frequenza al valore più alto consentito dal convertitore A/D, ma non sempre questa è la scelta migliore!

Page 4: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

4

Simone Buso - Microcontrollori e DSP - Lezione 13 7

TemporizzazioneI mC e DSP, pensati per l’uso in sistemi di controllo embedded in tempo reale, includonosempre un convertitore A/D on chip.L’uso di questa periferica introduce vincolinella realizzazione del controllore o del filtro di interesse.I principali sono legati alla sua velocità di conversione e alla sua lunghezza di parola.Le velocità di conversione tipiche sono dell’ordine del µs, mentre le lunghezze di parola variano tipicamente tra 8, 10 e 12 bit.

Simone Buso - Microcontrollori e DSP - Lezione 13 8

TemporizzazioneLa velocità di acquisizione pone un limite superiore alla frequenza di campionamento (il limite inferiore è fissato dalla dinamica del processo o dalla banda passante richiesta al filtro).Una lunghezza di parola limitata provoca la distorsione dei dati in ingresso a causa della quantizzazione dei valori riproducibili.Questa è responsabile a sua volta di diversi possibili problemi, che verranno discussi nel seguito.

Page 5: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

5

Simone Buso - Microcontrollori e DSP - Lezione 13 9

TemporizzazioneLa presenza on-chip di un convertitore A/D rende piuttosto semplice garantire che il controllo o il filtro operino alla frequenza desiderata e che questa resti rigorosamente costante.Il metodo più usato consiste nel collocare l’algoritmo di controllo o di filtraggio all’interno della ISR associata al convertitore A/D. Questo può essere configurato per acquisire i dati ad una frequenza fissa, legata a quella del processore, e per generare una interruzione al termine della conversione.

Simone Buso - Microcontrollori e DSP - Lezione 13 10

Temporizzazione

InizializzazioneProgramma principale loop: nop

jmp loop

ISR A/D A/D: …

Il programma, dopo una fase di inizializzazionedi variabili, registri, periferiche etc., entra in un ciclo infinito di attesa.

Ogni volta che il convertitore A/D genera una richiesta di interruzione, viene eseguito il programma vero e proprio (regolatore o filtro)

ret

Page 6: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

6

Simone Buso - Microcontrollori e DSP - Lezione 13 11

TemporizzazioneIn questo modo, l’unico requisito è che la durata della ISR, tenendo anche conto dei tempi di latenza e delle altre eventuali interruzioni attive con priorità maggiore, risulti comunque inferiore al periodo di campionamento. Altrimenti, alcuni dati potrebbero andare perduti e, soprattutto, il controllo o il filtro potrebbero procedere a una frequenza non costante.Una buona regola è associare al convertitore A/D, ove questo sia possibile, la priorità di interruzione più alta.

Simone Buso - Microcontrollori e DSP - Lezione 13 12

TemporizzazioneSpesso non è facile stimare con esattezza la durata di un certo segmento di codice sulla carta, e.g. contando le istruzioni.Il metodo più sicuro consiste sempre nell’usare un pin in una porta di I/O del processore per segnalare l’inizio (asserendo il bit relativo) e la fine (de-asserendolo) del segmento di codice in questione.Ciò permette, con l’ausilio di un oscilloscopio, di misurare con precisione la sua durata e anche di scoprire sue occasionali variazioni(fenomeni di jitter o glitch).

Page 7: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

7

Simone Buso - Microcontrollori e DSP - Lezione 13 13

Acquisizione dei datiL’acquisizione dei dati dall’esterno si realizza interfacciando il convertitore A/D del mC o DSP con un trasduttore. Questo richiede, di solito, la realizzazione di opportuni circuiti di condizionamento del segnale che permettano di:a. adattare il livello del segnale trasdotto, in

modo da renderlo compatibile con le specifiche della porta di ingresso del convertitore A/D.

b. introdurre filtri per l’eliminazione di rumori o per impedire effetti di aliasing.

Simone Buso - Microcontrollori e DSP - Lezione 13 14

Acquisizione dei datiEntrambe le esigenze sono di solito soddisfatte ricorrendo a semplici circuiti basati su amplificatori operazionali. Ad esempio:

+-

R

C

C R

Ri

Ri

Va

Vb

Vo=(Vb-Va)· RRi· 11+sRC

Page 8: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

8

Simone Buso - Microcontrollori e DSP - Lezione 13 15

Acquisizione dei datiIl circuito permette di:a. acquisire un segnale in modo differenziale;b. acquisire un segnale in modo single ended;

bb. sommare al segnale un offset (utile per segnali con segno);

c. amplificare o attenuare il segnale;d. filtrare il segnale in modo passa-basso;

Può quindi essere usato per interfacciare un generico trasduttore ad un convertitore A/D. La sua bassa resistenza di uscita permette di ridurre al minimo ogni effetto di carico.

Simone Buso - Microcontrollori e DSP - Lezione 13 16

Acquisizione dei datiI circuiti di condizionamento sono di solito completati con opportune strutture di protezione che limitano in ogni casol’escursione dei segnali portati in ingresso al processore entro opportuni livelli.Ad esempio:

Vcc (alimentazione del mC)

porta del mC

circuito di condizionamento

Diodo Schottky (a bassa caduta)

Page 9: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

9

Simone Buso - Microcontrollori e DSP - Lezione 13 17

Fattori di scalaLa scelta dei fattori di scala da applicare ai dati oggetto di elaborazione in un controllore o in un filtro digitale rappresenta un problema da gestire con grande attenzione. Il problema esiste solo per processori a virgola fissa.Una scelta errata può infatti comportare o il cattivo sfruttamento dell’aritmetica a disposizione (il che a sua volta produce effetti indesiderati legati alla quantizzazione) oppure il verificarsi di fenomeni di overflow o saturazione (che di solito rendono del tutto inutilizzabile il codice).

Simone Buso - Microcontrollori e DSP - Lezione 13 18

Fattori di scalaIl problema è particolarmente serio nei sistemi di controllo, perché influisce sul guadagno della catena di regolazione.Inoltre, nel caso dei controllori, il cattivo usodell’aritmetica a disposizione può addirittura rendere instabile il sistema, anche a fronte di un progetto sostanzialmente corretto del regolatore.Un caso tipico si ha quando i coefficienti di un regolatore (e.g. un PI) presentano valori molto diversi (e.g. kP >> k’I). E’ essenziale gestire con opportuni cambi di scala queste evenienze.

Page 10: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

10

Simone Buso - Microcontrollori e DSP - Lezione 13 19

Fattori di scalaUn approccio corretto al problema comincia dal circuito di condizionamento dei segnali acquisiti.Questo deve fare in modo che la parola del convertitore A/D sia sfruttata al meglio i.e. che il massimo valore atteso per la grandezza acquisita (includendo il margine necessario a rivelare eventuali condizioni anomale) coincidacon il massimo intero rappresentabile dal convertitore A/D.In questa fase si deve tener conto della necessità di ricostruzione del segno del dato.

Simone Buso - Microcontrollori e DSP - Lezione 13 20

Fattori di scalaNormalmente la parola del processore ha più bit di quella del convertitore A/D. Il problema dell’allineamento può essere gestito in due modi:a. allineamento a destra, i.e. i due LSB

coincidono;b. allineamento a sinistra, i.e. i due MSB

coincidono (con attenzione al segno!);Ciascuno di questi induce un criterio di normalizzazione dei dati, che può essere di tipo intero (caso a) o frazionario (caso b).

Page 11: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

11

Simone Buso - Microcontrollori e DSP - Lezione 13 21

Normalizzazione

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

intero

frazionario 1.15

punto decimale implicito

bit di segno

Possibili formati di rappresentazione numerica nei processori a virgola fissa (caso a 16 bit). I negativi sono trattati con il complemento a 2.

Simone Buso - Microcontrollori e DSP - Lezione 13 22

NormalizzazioneSe si sceglie di normalizzare i dati in modo intero, si fissa implicitamente il punto decimale a destra dell’LSB. In pratica, con questa scelta, un algoritmo opererà solo su numeri interi con segno.Questa modalità è molto intuitiva, ma complica la gestione dei fattori di scala: spesso i coefficienti di filtri e regolatori sono quantità frazionarie. Per essere normalizzate ad interi devono quindi essere moltiplicate per opportuni fattori di scala. Questa operazione deve essere fatta con attenzione.

Page 12: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

12

Simone Buso - Microcontrollori e DSP - Lezione 13 23

NormalizzazioneSupponiamo di dover calcolare:y = a·x + b, con a = 0.12, b = 60, x = 1350.Sappiamo che deve risultare y = 222.Se lavoriamo con normalizzazione agli interi,non possiamo usare il vero valore di a nel calcolo, perché esso è < 1, che è il minimo numero (non nullo) che possiamo rappresentare.Dobbiamo quindi pre-moltiplicare il valore di a per una costante che lo renda intero (con una certa approssimazione). Ad esempio scegliamo 1024.

Simone Buso - Microcontrollori e DSP - Lezione 13 24

NormalizzazioneNe risulta a’ = a·1024 ≅ 123. Eseguendo ora il calcolo troviamo:a’·x = y’ = 166050.Ora non possiamo sommare b, perché i due numeri non sono rappresentati nella stessa scala (il valore di un bit di b vale 1024 volte meno dello stesso bit di y’).Dobbiamo quindi dividere y’ per 1024 (che, opportunamente, è una potenza di 2) per ottenere y’’ = 166050/1024 ≅ 162.Di conseguenza otteniamo y = 162 + b = 222.

Page 13: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

13

Simone Buso - Microcontrollori e DSP - Lezione 13 25

NormalizzazioneNel procedimento seguito in questo esempio sono evidenti alcuni inconvenienti.Ogni moltiplicazione per a’ deve essere seguita da una operazione di shift aritmetico a destra di 10 bit, prima di eseguire la somma con b.Se però anche b fosse il risultato di un altro prodotto, eseguito con un fattore di scala diverso, sarebbe necessario, prima della somma, rendere uguale il peso dei bit di ciascun addendo.Ad ogni somma, ci si deve quindi chiedere se gli addendi sono sulla stessa scala!

Simone Buso - Microcontrollori e DSP - Lezione 13 26

NormalizzazioneUn ulteriore inconveniente, meno evidente, è l’errore di arrotondamento che si commette nella sostituzione del coefficiente esatto con la sua versione scalata.Questo può avere effetti molto pesanti sul comportamento di un filtro o di un regolatore, in quanto comporta uno spostamento della posizione dei suoi poli. In alcuni casi si possono avere comportamenti instabili.La contromisura consiste nell’usare il fattore di scala più grande possibile, facendo attenzione a non incorrere poi in problemi di overflow.

Page 14: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

14

Simone Buso - Microcontrollori e DSP - Lezione 13 27

NormalizzazioneSe si sceglie di usare la normalizzazione frazionaria, si fissa implicitamente il punto decimale a destra del MSB (bit di segno).Ciascun numero è quindi visto come una frazione, essendo 1 il massimo intero positivo rappresentabile, corrispondente, per esempio nel caso di 16 bit, alla configurazione 7FFF16.Tale normalizzazione prende anche il nome di 1.15 o Q15 ed è molto usata.La gestione delle quantità frazionarie non è quindi più un problema. Diventa invece più laboriosa la gestione degli interi > 1 (o <-1).

Simone Buso - Microcontrollori e DSP - Lezione 13 28

NormalizzazioneUsando la normalizzazione 1.15, il prodotto di due numeri deve sempre essere aggiustato con un shift a sinistra di un bit, perché il formato del risultato che si ottiene è 2.30. Molti processori, sia DSP che mC, eseguono questo shift automaticamente, in modo trasparente al programmatore. Talora si può settare un bit nel registro di stato per decidere se la moltiplicazione è di tipo intero (senza shift) o frazionario (con lo shift).Dopo lo shift il risultato è nel formato 1.31 e quindi è facile adattarlo agli altri dati.

Page 15: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

15

Simone Buso - Microcontrollori e DSP - Lezione 13 29

NormalizzazioneL’adattamento a valle della moltiplicazione si può effettuare considerando la sola parte alta del risultato (bit da 16 a 31).Attenzione: se la moltiplicazione è stata eseguita in modo intero, non si può procedere allo stesso modo. Il risultato andrà shiftato verso destra fino a ripristinare il corretto peso dei bit.Anche la modalità di normalizzazione 1.15 può dare luogo ad inconvenienti, quando si abbia a che fare con operandi in modulo maggiori di 1.

Simone Buso - Microcontrollori e DSP - Lezione 13 30

Supponiamo di dover calcolare:y = a·x + b, con a = 3.5, b = 0.2, x = 0.2.Sappiamo che deve risultare y = 0.9.Se lavoriamo con normalizzazione 1.15, non possiamo usare il vero valore di a nel calcolo, perché esso è > 1, che è il massimo numero positivo che possiamo rappresentare.Dobbiamo quindi pre-dividere il valore di a per una costante che lo renda frazionario.Scegliamo ad esempio il valore 4, che è ancora una volta, una potenza di 2.

Normalizzazione

Page 16: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

16

Simone Buso - Microcontrollori e DSP - Lezione 13 31

NormalizzazioneNe risulta a’ = a/4 = 0.875. Eseguendo ora il calcolo troviamo:a’·x = y’ = 0.175Ora non possiamo sommare b, perché i due numeri non sono rappresentati nella stessa scala (il valore di un bit di b vale 4 volte di più dello stesso bit di y’).Dobbiamo quindi moltiplicare y’ per 4 per ottenere y’’ = 0.175·4 = 0.7.Di conseguenza otteniamo y = 0.7 + b = 0.9.

Simone Buso - Microcontrollori e DSP - Lezione 13 32

NormalizzazioneNell’esempio appena visto non sembrano comparire errori di arrotondamento. Questo solo perché abbiamo, per comodità, rappresentato i numeri in forma decimale.Nel passaggio alla forma binaria, ciascun numero frazionario positivo deve essere moltiplicato per 32768, arrotondato all’intero e poi tradotto in binario. Quindi un errore di arrotondamento in effetti c’è. Tale errore è però al più pari a 1/65536, e quindi risulta di solito relativamente basso, sempre che non si abbia a che fare con numeri molto piccoli.

Page 17: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

17

Simone Buso - Microcontrollori e DSP - Lezione 13 33

NormalizzazioneLa notazione 1.15 è molto usata perché semplifica la gestione delle moltiplicazioni e introduce, anche senza particolari precauzioni, piccoli errori di arrotondamento.Tuttavia, nulla vieta che un programmatore organizzi il suo codice con una normalizzazione diversa (es. 5.11).È quindi essenziale che la scelta del metodo di normalizzazione sia dichiarata esplicitamentenel codice, per rendere le operazioni di allineamento pienamente comprensibili a chi lo debba interpretare.

Simone Buso - Microcontrollori e DSP - Lezione 13 34

OverflowUna volta scelto il metodo di normalizzazione preferito e aggiustati di conseguenza i coefficienti dei regolatori e/o filtri, bisogna comunque prendere in considerazione il problema dell’overflow.È essenziale che l’overflow non si verifichi mai in una routine che realizza un regolatore o un filtro, perché esso rende i risultati dell’elaborazione del tutto inutilizzabili.Il modo più semplice per evitare l’overflow nella moltiplicazione, è usare sempre la normalizzazione frazionaria 1.15.

Page 18: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

18

Simone Buso - Microcontrollori e DSP - Lezione 13 35

OverflowLe variabili che sono oggetto di ripetute addizioni, come ad esempio la parte integraledi un regolatore PI, sono talvolta realizzate con parola doppia.L’accumulatore, che, specialmente nelle unità MAC, ha spesso dimensione doppia rispetto alla parola del processore, viene quindi salvato nella sua interezza, usando due locazioni di memoria.Quando viene sommato ad una variabile a parola singola, viene utilizzata solo una delle due parti (quella alta, se uso 1.15).

Simone Buso - Microcontrollori e DSP - Lezione 13 36

OverflowIn alcuni processori è disponibile una modalità di funzionamento in aritmetica saturata. Nel caso di overflow, al risultato dell’operazione, che sarebbe errato, viene sostituito il massimo (o il minimo, se negativo) numero rappresentabile (tipicamente 7FFF16 o 800016).Ciò equivale ad introdurre, a valle di ogni somma, un blocco non lineare che limita i risultati all’intervallo desiderato. Gli effetti di queste non linearità in un algoritmo complesso non sono facilmente prevedibili. Si ricorre spesso alla simulazione.

Page 19: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

19

Simone Buso - Microcontrollori e DSP - Lezione 13 37

QuantizzazioneIn un processore a virgola fissa effetti di quantizzazione intervengono in diversi momenti.Sono sede di errori dovuti a quantizzazione:a. la conversione A/D dei dati;b. il calcolo dei coefficienti di filtri e

regolatori;c. l’esecuzione dei prodotti quando il risultato

viene troncato (o arrotondato);d. la trasformazione del risultato

dell’elaborazione in un segnale (e.g. con una conversione D/A).

Simone Buso - Microcontrollori e DSP - Lezione 13 38

QuantizzazioneI fenomeni di quantizzazione introducono, nei sistemi in cui si verificano, delle non linearitàil cui impatto è, ancora una volta, difficilmente prevedibile sulla carta. Esistono metodi analitici di studio, ma sono di difficile applicazione ai casi reali. Ancora una volta possono essere molto utili strumenti di simulazione.Le cose si fanno particolarmente complicate nel caso di sistemi di controllo a catena chiusa, dove l’impatto delle quantizzazioni sulla stabilità del sistema può essere molto pesante.

Page 20: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

20

Simone Buso - Microcontrollori e DSP - Lezione 13 39

Quantizzazione

x

y

q/2

-q/2

12

2q 3q

-3q -2q

34

-1-2-3-4

Transcaratteristica di un quantizzatore “lineare” con arrotondamento.Ogni valore x tale che:(N-1/2)q < x <(N+1/2)qviene associato al numero N.Il parametro q è detto passo di quantizzazione.

Il passo di quantizzazione q rappresenta la minima variazione di x che sicuramente produce una variazione di y di un bit.

Simone Buso - Microcontrollori e DSP - Lezione 13 40

Quantizzazione in ingressoLa quantizzazione in ingresso, e.g. dovuta al convertitore A/D, può avere effetti pesanti,perché la parola del convertitore A/D è molto più corta di quella del processore. Il peso di q in termini di aritmetica interna è quindi alto.Un suo effetto immediato nei sistemi di controllo a catena chiusa è la generazione di un errore a regime (per riferimento costante) che può arrivare fino a q senza essere compensato.Conviene quindi che q sia più piccolo del massimo errore tollerabile, il che fornisce un criterio di scelta per il convertitore A/D.

Page 21: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

21

Simone Buso - Microcontrollori e DSP - Lezione 13 41

Quantizzazione in uscitaLa quantizzazione in uscita è dovuta alla trasformazione dell’uscita della elaborazione numerica in un segnale (DAC) o nel comando di un trasduttore. Anche questo processo può introdurre un errore a regime, in modo analogo a quello che accade per l’ingresso.Inoltre, è possibile l’insorgenza di un particolare tipo di instabilità, tipica dei sistemi non lineari, denominata ciclo limite.Anche in questo caso bisogna accertarsi che la risoluzione del trasduttore o convertitore A/D sia sufficientemente alta.

Simone Buso - Microcontrollori e DSP - Lezione 13 42

Quantizzazione dei coefficientiAnche l’arrotondamento dei coefficienti richiesto dalla lunghezza finita della parola del processore rappresenta un errore di quantizzazione.Il principale effetto di questo fenomeno è lo spostamento dei poli dei filtri o dei regolatori utilizzati nell’algoritmo di interesse.Un esempio semplice si ha considerando un filtro passa-basso di tipo IIR, come:

y(k) = b·x(k) + (1-b)·y(k-1)

dove si supponga di richiedere b = 0.01.

Page 22: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

22

Simone Buso - Microcontrollori e DSP - Lezione 13 43

Quantizzazione dei coefficientiLavorando e.g. a 8 bit, C2, 1.7, il valore di b che può essere usato internamente è:bq = INT(b·27) = 1 = 000000012.Ne consegue un errore molto significativo rispetto al valore desiderato. E’ come se si usasse il valore 2-7 = 0.0078 invece di 0.01.Di conseguenza, il valore arrotondato di 1-b diventa 011111102 che equivale a 0.9922.A questo punto diventa possibile confrontare la risposta del filtro reale, con coefficienti quantizzati, rispetto a quello teorico, con coefficienti esatti.

Simone Buso - Microcontrollori e DSP - Lezione 13 44

Quantizzazione dei coefficienti

Risposta al gradino unitario dello stesso filtro con coefficienti esatti e arrotondati.Come si può notare i tempi di salita (al 90% del valore finale) passano da circa 220 cicli di calcolo a circa 300, con un aumento maggiore del 36% !!

100

k0 200 300 400 500

10.9

0

y

Effetto della quantizzazione dei coefficienti

Page 23: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

23

Simone Buso - Microcontrollori e DSP - Lezione 13 45

Quantizzazione dei coefficientiIl problema appena evidenziato è in realtà dovuto al fatto che si richiede una risposta al filtro piuttosto lenta rispetto al periodo di campionamento (tempo di salita superiore a 100 cicli).Paradossalmente, la situazione può migliorareriducendo la frequenza di campionamento,perché i valori dei coefficienti risultano meno sensibili agli arrotondamenti. Supponendo di ridurre la frequenza a 1/5 del suo valore originale, si richiederà ora un tempo di salita di circa 40 cicli di calcolo (⇒ b = 0.05, bq = 0.047).

Simone Buso - Microcontrollori e DSP - Lezione 13 46

10

k0 20 30 40 50

10.9

0

y

Quantizzazione dei coefficienti

60 70

Risposta al gradino unitario dello stesso filtro con coefficienti esatti e arrotondati e frequenza di campionamento ridotta.Come si può notare i tempi di salita (al 90% del valore finale) passano adesso da circa 42 cicli di calcolo a circa 46, con un errore intorno al 10%(quasi ¼ di prima).

Page 24: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

24

Simone Buso - Microcontrollori e DSP - Lezione 13 47

Quantizzazione dei coefficientiContrariamente a quanto si è portati a pensare, l’aumento della frequenza di campionamento non sempre migliora le caratteristiche di un filtro o di un regolatore digitale perché rende più critici gli effetti della quantizzazione dei coefficienti.E’ importante quindi che la frequenza di campionamento sia scelta in modo coerentecon la lunghezza di parola a disposizione.Alte frequenze di campionamento richiedono lunghezze di parola maggiori.

Simone Buso - Microcontrollori e DSP - Lezione 13 48

Aritmetica a precisione finitaAbbiamo più volte visto che l’esecuzione di un prodotto di due numeri a n bit porta ad un risultato di 2n bit. Si pone quindi il problema di rendere tale risultato compatibile con gli altri dati a n bit.Se la rappresentazione usata è del tipo 1.15, ciò si ottiene prendendo in considerazione solo la parte alta del risultato.Questa operazione corrisponde però ad un troncamento (o arrotondamento), cioè ancora una volta ad una quantizzazione interna all’algoritmo.

Page 25: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

25

Simone Buso - Microcontrollori e DSP - Lezione 13 49

Aritmetica a precisione finitaL’impatto di questo tipo di quantizzazione sul comportamento di un filtro o di un regolatore è il più difficile da analizzare.Infatti ogni moltiplicazione dell’algoritmo è sede di una quantizzazione per troncamento, quindi il numero di blocchi non lineari da prendere in considerazione diventa rapidamente molto grande (si pensi ad un filtro FIR, ad esempio).L’unica via percorribile è ricorrere alla simulazione del sistema con un opportuno tool (e.g. Fixed Point Blockset di Simulink).

Simone Buso - Microcontrollori e DSP - Lezione 13 50

Aritmetica a precisione finitaCome al solito, l’effetto della precisione finita dell’aritmetica è più critico nei sistemi a catena chiusa, dove può indurre oscillazioni persistenti dei bit meno significativi del risultato, detti cicli limite.I filtri FIR, di conseguenza sono protetti da questo tipo di problemi, in quanto non usanoretroazione interna (sono filtri non ricorsivi).Se però un filto FIR è usato come regolatorein un sistema a catena chiusa, l’insorgenza di cicli limite può ancora verificarsi.

Page 26: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

26

Simone Buso - Microcontrollori e DSP - Lezione 13 51

Cicli limiteEsiste una teoria che permette di stimare frequenza e ampiezza dei cicli limite prodotti dall’aritmetica a precisione finita (metodo di Tsypkin e metodo della funzione descrittiva).Si tratta di metodi di facile applicazione solo per casi estremamente semplici, quindi il modo migliore di riscontrare la presenza di un ciclo limite e valutarne ampiezza e frequenza è l’uso della simulazione.Una volta che si osservi la presenza di un ciclo limite è opportuno cercare di capire a quale quantizzazione esso sia dovuto.

Simone Buso - Microcontrollori e DSP - Lezione 13 52

Cicli limiteAttualmente, l’uso di mC a 8 bit per applicazioni di controllo real-time o signal processing è piuttosto raro. E’ invece comune l’uso di processori a 16 bit (mC o DSP).Per questa ragione, l’occorrenza di cicli limitedovuti all’aritmetica in sé è abbastanza rarae può essere di solito gestita con una scelta opportuna dei fattori di scala.Infatti, anche se il ciclo limite permane, è spesso possibile confinare il suo effetto ai bit inferiori della parola del processore.

Page 27: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

27

Simone Buso - Microcontrollori e DSP - Lezione 13 53

Cicli limiteL’uscita del filtro o del sistema di controllo ha spesso bisogno di un numero di bit inferiore rispetto alla parola del processore.Un allineamento opportuno delle due parole consente quindi di rimuovere gli effetti di un eventuale ciclo limite.

CPU word

DAC word…

I bit corrotti dal ciclo limite vengono scartati.

Simone Buso - Microcontrollori e DSP - Lezione 13 54

Cicli limiteAnche con un algoritmo di calcolo ideale, la risoluzione del quantizzatore di uscita può rendere impossibile il raggiungimento del punto di equilibrio del sistema.Se nel processo (sistema + controllore) non è presente un integratore, l’effetto di questo è un ciclo limite a frequenza nulla, ovvero un errore permanente dell’uscita rispetto al set-point.Se invece nel processo è presente almeno un integratore è tipico assistere ad un fenomeno oscillatorio persistente.

Page 28: Lezione 13 - DEIpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 13 25 Normalizzazione Nel procedimento seguito in questo esempio

28

Simone Buso - Microcontrollori e DSP - Lezione 13 55

Cicli limite

x

y

001

1

2

010 011

3

4set-point

e<0

e>0

t

y

3

2

Tcl

Il sistema non trova il punto di equilibrio richiesto e quindi oscilla tra i due valori dell’uscita più vicini, a causa dell’integrazione dell’errore (da parte del processo).

100

Simone Buso - Microcontrollori e DSP - Lezione 13 56

Cicli limiteLa frequenza del ciclo limite, come pure il tempo di permanenza nei due stati dipendono dalla dinamica del processo.La situazione appena rappresentata è tipica dei sistemi con controllo PWM digitale. In questi modulatori, i valori del duty-cycle sono quantizzati. Ogni volta che il duty-cycle di equilibrio non coincide con uno dei valori possibili, si assiste ad un ciclo limite di tipo oscillatorio. E’ molto importante disporre di una buona risoluzione sui valori del duty-cycle (almeno 8 bit).