Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso -...

22
Simone Buso - Microcontrollori e DSP - Lezione 17 1 Lezione 17 Uso del convertitore A/D del mC LP2129 per la realizzazione di un filtro numerico. Sommario Specifiche del filtro. Progetto del filtro. Configurazione del convertitore A/D. Configurazione delle interruzioni. Sviluppo e test del codice sul simulatore. Simone Buso - Microcontrollori e DSP - Lezione 17 2 Lezione 17 Materiale di riferimento 1. Datasheet del microcontrollore Philips LPC2129, disponibile sul sito web del corso in formato pdf. 2. Manuale di uso del microcontrollore Philips LPC2129, disponibile sul sito web del corso in formato pdf. 3. Simulatore del processore ARM7, disponibile sul sito del corso.

Transcript of Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso -...

Page 1: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

1

Simone Buso - Microcontrollori e DSP - Lezione 17 1

Lezione 17Uso del convertitore A/D del mC LP2129 per la realizzazione di un filtro numerico.

Sommario• Specifiche del filtro.• Progetto del filtro.• Configurazione del convertitore A/D.• Configurazione delle interruzioni.• Sviluppo e test del codice sul

simulatore.

Simone Buso - Microcontrollori e DSP - Lezione 17 2

Lezione 17Materiale di riferimento1. Datasheet del microcontrollore Philips LPC2129,

disponibile sul sito web del corso in formato pdf.

2. Manuale di uso del microcontrollore PhilipsLPC2129, disponibile sul sito web del corso in formato pdf.

3. Simulatore del processore ARM7, disponibile sul sito del corso.

Page 2: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

2

Simone Buso - Microcontrollori e DSP - Lezione 17 3

Filtro digitaleÈ richiesto di progettare e realizzare con il mC LP2129 un filtro digitale di tipo passa basso avente le seguenti specifiche:1. banda passante di 5 kHz;2. attenuazione di 20 ± 0.5 dB a 50 kHz;3. guadagno in banda pari a 1;4. segnale di ingresso proveniente da un

trasduttore con range di +/- 5V;5. clock del processore pari a 12 MHz.

Il codice deve essere scritto in linguaggio assembly e adeguatamente commentato.

Simone Buso - Microcontrollori e DSP - Lezione 17 4

Progetto del filtro digitaleDall’esame delle specifiche risulta chiaro che è sufficiente un filtro IIR del primo ordine.Abbiamo visto che una risposta equivalente si può anche realizzare in modo FIR.Abbiamo però visto che la mole di calcoli richiesta da una realizzazione FIR è sempre superiore a quella richiesta da un filtro IIR.Per contro, il filtro FIR non pone problemi di stabilità numerica, che possono invece verificarsi con il filtro IIR, a causa del feedback interno.

Page 3: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

3

Simone Buso - Microcontrollori e DSP - Lezione 17 5

Progetto del filtro digitaleLa realizzazione di tipo FIR potrebbe essere adottata se si stesse lavorando con un DSP,ovvero se fossero poste specifiche sullo sfasamento della risposta in frequenza del filtro (i filtri FIR possono avere fase lineare).L’uso di un mC, sebbene piuttosto potente, come quello indicato, e il fatto che non ci sono specifiche sullo sfasamento, portano a considerare la realizzazione di tipo IIR.Si tratta allora di realizzare l’algoritmo:

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

Simone Buso - Microcontrollori e DSP - Lezione 17 6

Acquisizione dei datiUna volta deciso l’algoritmo, è necessario scegliere come organizzare l’acquisizione dei dati. Il mC in esame possiede un convertitore A/D interno, il che semplifica molto le cose.Come tutte le periferiche dell’LP2129, anche questa è mappata in memoria.Bisogna quindi apprendere come programmarla e decidere una strategia di gestione (polling vsinterruzioni).È importante ricordare che per le applicazioni di signal processing la temporizzazione è essenziale.

Page 4: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

4

Simone Buso - Microcontrollori e DSP - Lezione 17 7

È necessario che i campioni siano acquisiti con una frequenza costante e nota.Inoltre, è necessario che l’elaborazione del dato acquisito si concluda entro il periodo di campionamento prefissato.Questi due fatti pongono vincoli sulle scelte dei parametri relativi al convertitore A/D.In altre parole, la scelta della frequenza di campionamento non dipenderà solo dalle specifiche del filtro, ma anche dalle qualità (numero di istruzioni, i.e. tempo di calcolo) del nostro algoritmo.

Acquisizione dei dati

Simone Buso - Microcontrollori e DSP - Lezione 17 8

Acquisizione dei datiDal manuale dell’LP2129 apprendiamo che l’ADC si gestisce attraverso due registri(ADCR e ADDR):

Il primo contiene l’insieme dei parametri di configurazione (modo di funzionamento, frequenza, …), il secondo il dato convertito a 10 bit ADDR[15:6] e il bit (ADDR[31]) di fine conversione.

Page 5: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

5

Simone Buso - Microcontrollori e DSP - Lezione 17 9

Acquisizione dei datiSi trova inoltre che la tensione di alimentazione dell’ADC, che rappresenta il fondo-scala per i dati in ingresso è di 3.3V.Noi però dobbiamo acquisire un segnale i cui valori possono essere compresi tra –5 e +5 V.Avremo quindi bisogno di un circuito di adattamento del segnale di ingresso, che lo trasli e attenui fino a renderlo compatibile con l’ADC.Il risultato della conversione rappresenta poi il rapporto tra la tensione di ingresso all’ADC e il fondo-scala di 3.3V.

Simone Buso - Microcontrollori e DSP - Lezione 17 10

Acquisizione dei dati

+- R

C

C R

Ri

Ri

Va

Vb

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

Ponendo Va = -5 V e scegliendo il rapporto R/Ri pari a 3.3/10, otteniamo l’adattamento necessario. Importante: l’uscita dell’OPAMP deve essere fisicamente molto vicinaall’ingresso dell’ADC.

Azione anti-aliasing

Page 6: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

6

Simone Buso - Microcontrollori e DSP - Lezione 17 11

Acquisizione dei datiA valle del circuito di acquisizione potremo quindi disporre di un segnale con valori compresi tra 0 e 3.3V. Chiaramente, i valori minori di 1.65V saranno corrispondenti a tensioni sul trasduttore negative, quelli maggiori a tensioni positive.Se mantenere l’informazione sul segno avesse qualche importanza, dovremmo provvedere a parte, e.g. all’interno del nostro programma di elaborazione.I dati in uscita dall’ADC avranno infatti sempre valore positivo.

Simone Buso - Microcontrollori e DSP - Lezione 17 12

Conversione A/DAl termine della conversione, l’ADC scrive il dato sul registro ADDR e pone il bit 31 a 1.Un eventuale routine di polling può quindi sfruttare questo fatto per rivelare il completamento della conversione.La lettura del registro, a conversione ultimata, corrisponde infatti alla lettura di un numero < 0 (il bit di segno è alto).Se la conversione è ancora in corso il numero letto è invece positivo (o nullo). La gestione della periferica in polling è quindi immediata.

Page 7: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

7

Simone Buso - Microcontrollori e DSP - Lezione 17 13

Conversione A/DIn realtà, al completamento della conversione, l’ADC invia sempre al VIC una richiesta di interruzione.Se il corrispondente bit del registro VICIntEnable è 1, questa richiesta viene inoltrata al processore, secondo le modalità previste dal programmatore ossia a seconda della configurazione del VIC stesso.In caso contrario la richiesta viene ignorata.E’ quindi possibile gestire la periferica anche per mezzo delle interruzioni.

Simone Buso - Microcontrollori e DSP - Lezione 17 14

Conversione A/DNel nostro caso il filtro è l’unica attività prevista per il mC. Questa è una situazione del tutto irrealistica, perché molto poco conveniente dal punto di vista economico.Nella realtà, il filtro potrà far parte di una serie più ampia di attività del mC, che dovrà quindi essere libero di svolgere anche altre funzioni.Sebbene possibile per noi, la gestione in polling non è quella che si adotterebbe in una applicazione reale, dove l’uso delle interruzionisarebbe la scelta obbligata.

Page 8: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

8

Simone Buso - Microcontrollori e DSP - Lezione 17 15

Conversione A/D

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 l’algoritmo del filtro.

ret

Organizzazione del programma Filtro_PB

Simone Buso - Microcontrollori e DSP - Lezione 17 16

Conversione A/DIl dato convertito dall’ADC viene scritto sui 10 bit ADDR[15:6]. Il valore di fondoscala sarà quindi memorizzato come:ADDR = 0x0000FFC0

0CFF0000

8 “Done” bit

Dato convertito

1 1 11111111

Page 9: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

9

Simone Buso - Microcontrollori e DSP - Lezione 17 17

Progetto del filtro digitaleIl primo parametro che deve essere fissato nel progetto di un filtro è la frequenza di campionamento (fC).Talvolta questa è fissata per specifica, oppure perché vincolata da altri aspetti del progetto.Nel nostro caso, invece, è un grado di libertàdel progetto.Una prima stima si può basare sulla banda richiesta al filtro. Sappiamo che le tecniche di discretizzazione forniscono buoni risultati fino a 1/10 della frequenza di campionamento.

Simone Buso - Microcontrollori e DSP - Lezione 17 18

Progetto del filtro digitaleNel nostro caso si pone quindi un limite inferiore dell’ordine di 50 kHz, valore sotto il quale converrà non scendere.Il limite superiore è posto dalla potenza di calcolo del nostro mC. Infatti, dobbiamo essere in grado di completare i calcoli entro un periodo di campionamento.Questo significa che dovremo essere in grado di completare i nostri calcoli, e produrre un nuovo valore di y(k) al massimo entro 20 µs.Un altro limite superiore per fC potrebbe venire dagli effetti delle quantizzazioni.

Page 10: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

10

Simone Buso - Microcontrollori e DSP - Lezione 17 19

Progetto del filtro digitale

Dall’esame del datasheet vediamo che l’ADC del mC è capace di acquisire dati ad una frequenza massima di circa 400 kHz.Inoltre, il periodo di clock del processore è pari a circa 83 ns, il che comporta la disponibilità di circa 240 cicli di clock nel tempo massimo a nostra disposizione. Possiamo quindi contare su molte istruzioni (ma non moltissime!).

Simone Buso - Microcontrollori e DSP - Lezione 17 20

Progetto del filtro digitaleLa sommaria analisi appena condotta mostra che è possibile risolvere il problema assegnato in quanto la velocità di conversione dell’ADC e la frequenza di lavoro della CPU sono adeguatealla realizzazione del filtro.A questo punto possiamo scrivere un ipotetico codice e valutarne il tempo di esecuzione.Questo ci permetterà di capire qual’è la massima frequenza di campionamento fC cui possiamo effettivamente pensare di arrivare, senza perdere dati.

Page 11: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

11

Simone Buso - Microcontrollori e DSP - Lezione 17 21

Codice del filtro digitaleLDR r9, [r2] /* Leggo dato, indirizzo in r2 */

BIC r9,r9,#0x80000000 /* Pulisco bit fine conversione */

LDR r8, =PWMMR0 /* Locazione per il risultato */

Filtro: /* Il valore acquisito è in r9 */

LDR r10, =b_1 /* b_1 in r10 */

MUL r7, r9, r10

MOV r9, r7, LSR #16 /* b_1*x(k) in r9 */

LDR r10, =a_1 /* a_1 in r10 */

MUL r7, r5, r10 /* r5 = y(k-1) */

MOV r7, r7, LSR #16 /* a_1*y(k-1) in r7 */

ADD r5,r9,r7 /* r5 = y(k) */

L’algoritmo risulta molto semplice: appena 10 istruzioni.

Simone Buso - Microcontrollori e DSP - Lezione 17 22

Codice del filtro digitaleL’esame del nostro codice ipotetico ci mostra che il numero di istruzioni richiesto per il filtro passa basso è piuttosto basso.Nel caso peggiore, possiamo contare 3 cicli di clock per le istruzioni non MUL e 5 per le MUL (in realtà saranno meno) per un totale inferiore a 35 cicli di clock, ovvero, con il nostro valore di fclk (12 MHz), a 3 µs.Se fosse solo per l’algoritmo, la frequenza fCpotrebbe essere spinta fino a oltre 300 kHz.In realtà, converrà limitarsi a valori minori,per non esaltare gli effetti di quantizzazione.

Page 12: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

12

Simone Buso - Microcontrollori e DSP - Lezione 17 23

Progetto del filtro digitaleUna prima scelta di fC può essere la seguente:

fC = 100 kHz.È sufficientemente maggiore della banda richiesta al filtro e nello stesso tempo compatibile con il tempo di calcolo stimato e la velocità di conversione del nostro ADC.Possiamo ora trovare i valori dei coefficientidel filtro, per ottenere la banda desiderata. Un modo elementare di risolvere il problema è tramite discretizzazione di un filtro analogico equivalente.

Simone Buso - Microcontrollori e DSP - Lezione 17 24

Progetto del filtro digitaleIl filtro da discretizzare è:

F(s) = 11 + sTp

Tp = 3.183·10-5

Con la Z-form:

s = 1 - z-1

TC

Integrazione di Eulero, TC = 1/fC

Troviamo:

a_1 = Tp + TC

Tp b_1 = Tp + TC

TC

Page 13: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

13

Simone Buso - Microcontrollori e DSP - Lezione 17 25

Progetto del filtro digitaleSostituendo i valori otteniamo quindi:

a_1 = 0.760943 b_1 = 0.239057

N.B: ovviamente a_1 + b_1 = 1.Dobbiamo ora verificare che il nostro progetto sia corretto.A questo scopo possiamo ricorrere ad un programma come Matlab, per ricavare risposta in frequenza e al gradino del nostro filtro.Per il momento, trascuriamo tutti gli effetti di quantizzazione.

Simone Buso - Microcontrollori e DSP - Lezione 17 26

Progetto del filtro digitale

Frequency (Hz)

Phas

e(d

eg); M

agnitu

de(d

B)

10 10 10

-80

-60

-40

-20

0

3 4 5

-30

-20

-10

0

Page 14: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

14

Simone Buso - Microcontrollori e DSP - Lezione 17 27

Progetto del filtro digitaleLa nostra scelta di fC ha comportato un errore nell’attenuazione richiesta a 50 kHz.Per ridurre questo errore, mantenendo la struttura del filtro, è necessario aumentarela frequenza di campionamento.Ripetiamo il progetto diverse volte aumentando successivamente il valore di fC.Per fC = 180 kHz l’errore si riduce a meno di 0.5 dB, che si può ritenere accettabile.

Simone Buso - Microcontrollori e DSP - Lezione 17 28

Progetto del filtro digitale

Frequency (Hz)

Phas

e(d

eg); M

agnitu

de(d

B)

103

104

105

-80

-60

-40

-20

0

-30

-20

-10

0

Page 15: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

15

Simone Buso - Microcontrollori e DSP - Lezione 17 29

Progetto del filtro digitaleDobbiamo ora discutere la rappresentazione interna dei coefficienti del filtro.Il nostro mC dispone di aritmetica a 32 bit.Tuttavia, l’esecuzione di moltiplicazioni a 32 bit richiederebbe un accumulatore a 64 bit,che non è disponibile.Ne consegue che la rappresentazione dei dati in ingresso e dei coefficienti del nostro filtro deve essere al più su 16 bit.Possiamo inoltre sfruttare il fatto che elaboreremo solo numeri positivi.

Simone Buso - Microcontrollori e DSP - Lezione 17 30

Progetto del filtro digitaleI valori dei coefficienti (per fC = 180 kHz) sono:

a_1 = 0.851402 b_1 = 0.148598

Per rappresentarli su 16 bit senza segno,sfruttando così al massimo la risoluzione a disposizione, possiamo usare la relazione:

1-LSB = 216-1 = 65535 = FFFFOtteniamo allora:

a_1_16 = 0xD9F5 b_1_16 = 0x260A

Page 16: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

16

Simone Buso - Microcontrollori e DSP - Lezione 17 31

Progetto del filtro digitaleSe anche il contenuto della parte bassa del registro ADDR viene interpretato come dato intero a 16 bit (senza segno), il valore in Volt dell’LSB è:

3.3V/216 ≅ 50.35 µV.La risoluzione effettiva del nostro filtro sarà però molto più grossolana, a causa della quantizzazione in ingresso a 10 bit, che ci permette di distinguere al più variazioni pari a

3.3V/210 ≅ 3.2 mV.

Simone Buso - Microcontrollori e DSP - Lezione 17 32

Progetto del filtro digitaleSiccome usiamo 16 bit per tradurre i valori dei coefficienti nella loro rappresentazione binaria, non si hanno effetti visibili dovuti alla quantizzazione. La nostra risoluzione numerica è infatti pari a 1/216 = 1.53·10-5.I due diagrammi di Bode (ideale/quantizzato) risultano praticamente sovrapponibili.Qualche effetto si potrebbe comunque avere a causa del troncamento implicito nelle moltiplicazioni a virgola fissa, ma la sua valutazione può essere fatta direttamente con il sistema di sviluppo.

Page 17: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

17

Simone Buso - Microcontrollori e DSP - Lezione 17 33

Progetto del filtro digitale

Time (s)0 0.5 1 1.5 2 2.5 3 3.5 4

x 10-4

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Risposta al gradino attesa per il filtro

Simone Buso - Microcontrollori e DSP - Lezione 17 34

MoltiplicazioniLa scelta della rappresentazione dei dati ha effetto anche sulla esecuzione delle moltiplicazioni.Al temine di ogni moltiplicazione, bisogna riportare il risultato, che è su 32 bit, a 16 bit, rendendolo omogeneo con gli altri dati. Questo va fatto in modo da garantire che i bit abbiano sempre lo stesso “peso”, per salvaguardare la correttezza di eventuali somme calcolate successivamente.Nel nostro caso questo si ottiene spostando il risultato a destra di 16 bit.

Page 18: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

18

Simone Buso - Microcontrollori e DSP - Lezione 17 35

MoltiplicazioniAd esempio: moltiplichiamo 0x4000 (che rappresenta la frazione 0.25, su 16 bit senzasegno) per 0xA000 (che invece rappresenta la frazione 0.625 sempre nella stessa modalità).La moltiplicazione dei due numeri (che il processore tratta come interi con segno ma a 32 bit) è pari a 0x28000000 (ovviamente >0).Nella nostra notazione il risultato atteso sarà:0.25·0.625 = 0.1625 ovvero 0x2800.Il valore corretto, coerente con la nostra normalizzazione, si ottiene quindi con uno shift a destra del risultato di 16 posizioni.

Simone Buso - Microcontrollori e DSP - Lezione 17 36

MoltiplicazioniIn generale, questo tipo di normalizzazione è in effetti una pre-moltiplicazione degli operandi per un fattore di scala del tipo 2p.Invece di moltiplicare x e y, di fatto noi moltiplichiamo x·2p per y·2p ottenendo quindi

r = x·y·22p.Se shiftiamo a destra di p bit questo numero, otteniamo allora

r’ = x·y·2p,che si trova così sulla stessa scala degli operandi di partenza.

Page 19: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

19

Simone Buso - Microcontrollori e DSP - Lezione 17 37

Realizzazione del filtro digitalePer prima cosa dobbiamo configurare il sistema di acquisizione in modo che lavori su 10 bit e a 180 kHz. Le sequenze di bit:

.equ VPB_CFG, 0x00000001

.equ AD_CFG, 0x002F0501

producono appunto questo effetto. La prima, una volta scritta sul registro VPBDIV, impone una frequenza di clock per il bus delle periferiche (pclk) uguale a quella della CPU (cclk). La seconda, una volta copiata sul registro ADCR, configura l’ADC come segue.

Simone Buso - Microcontrollori e DSP - Lezione 17 38

1111 0 00 0

Realizzazione del filtro digitale

1

Configurazione del registro ADCR:

1050F200

000

Selezione canale di ingresso

0 00 01 10 0

Divisore di frequenza (n-1)

Risoluzione in bit = 10

10

Attivazione dell’ADC

Modalità “burst”048121620242831

Page 20: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

20

Simone Buso - Microcontrollori e DSP - Lezione 17 39

Realizzazione del filtro digitaleConfigurazione del registro ADCR.Dividendo la frequenza del clock per 6 e tenendo conto che la conversione richiede 11 cicli di clock, si ottiene che il convertitore A/D, funzionando in modalità “burst”, renderà disponibili i dati per l’elaborazione ad una frequenza pari a:

fC = fclk/66 ≅ 182 kHz

che è un valore sufficientemente prossimo a quello di progetto.

Simone Buso - Microcontrollori e DSP - Lezione 17 40

Realizzazione del filtro digitaleConfigurazione del registro ADCR.Sarebbe stato anche possibile far lavorare il convertitore A/D in modalità “single shot”, comandando l’inizio della conversione alla frequenza richiesta attraverso l’uso di un timer. A quel punto la conversione avrebbe dovuto essere molto più veloce, per lasciare spazio all’elaborazione.Questo è svantaggioso per la precisione della conversione e per il consumo di potenza. La soluzione adottata, inoltre, impegna meno risorse.

Page 21: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

21

Simone Buso - Microcontrollori e DSP - Lezione 17 41

Realizzazione del filtro digitaleConfigurazione delle interruzioni.E’ necessario assegnare all’evento di fine conversione una ISR, che deve essere allocata nella posizione corretta all’interno del vettore delle interruzioni. Copiando la sequenza di bit:

.equ VICInt_CFG, 0x00040000

sui registri VICIntEnable e VICIntSelect si ottiene l’attivazione dell’IR associata all’ADC e la sua classificazione come FIQ. Alle IR di questo tipo è riservata la locazione del vettore delle interruzioni 0x0000001C

Simone Buso - Microcontrollori e DSP - Lezione 17 42

Realizzazione del filtro digitaleConfigurazione delle interruzioni.Dovremo quindi allocare a quell’indirizzo la nostra ISR o per lo meno una istruzione di salto alla routine.Vectors: LDR PC, Reset_Addr

LDR PC, Undef_Addr

LDR PC, SWI_Addr

LDR PC, PAbt_Addr

LDR PC, DAbt_Addr

NOP /* Reserved Vector */

LDR PC, IRQ_Addr

LDR PC, FIQ_Addr

Vettore delle interruzioni.Vectors = 0x0000000, indirizzo 0 della memoria.

Page 22: Lezione 17 - dei.unipd.itpel/MicroC_e_DSP/Materiale_da_scaricare/Lezioni... · Simone Buso - Microcontrollori e DSP - Lezione 17 3 Filtro digitale ... verificarsi con il filtro IIR,

22

Simone Buso - Microcontrollori e DSP - Lezione 17 43

Realizzazione del filtro digitaleConfigurazione delle interruzioni.L’allocazione della routine all’indirizzo corretto è ottenuta nel modulo di configurazione del nostro programma. Qui avvengono le seguenti assegnazioni:

FIQ_Addr: .word FIQ_Handler

FIQ_Handler: B Isr_AD

che, una volta risolte dall’assemblatore,produrranno il salto alla nostra routine (ISR_AD) ad ogni occorrenza della Fast Interrupt reQuest.

Simone Buso - Microcontrollori e DSP - Lezione 17 44

Realizzazione del filtro digitaleProgrammazione della ISR.La ISR dell’ADC contiene il vero e proprio programma. L’algoritmo che realizza il filtro è quello presentato in precedenza.Ad esso si aggiunge un segmento di codice che permette di registrare i primi 512 valori della sequenza di uscita del filtro nella memoria del mC, in modo da poterne visivamente verificare il corretto funzionamento.A questo punto, il codice può essere provato e.g. tramite simulatore. Segnale di test: onda quadra (1.65, 1200).