Introduzione Ai Microcontrollori e DSP
Introduzione Ai Microcontrollori e DSP
1
Obiettivi
2
Organizzazione del corso
PARTE 1
- Memorie e Interrupt.
PARTE 2
- Controllo velocità di rotazione di una ventola con ARDUINO: Generazione segnale analogico (o PWM) come input della ventola; Acquisizione del
segnale di feedback e valutazione frequenza di rotazione. Caratteristica IV statica e risposta al gradino.
- Controllo di un motore passo-passo con ARDUINO: controllo posizione; controllo di velocità di rotazione con inseguimento traiettoria.
3
Verifica Finale
4
Sistemi Digitali
Turbina eolica
Campi di applicazione:
5
Microcontrollore
Microcontrollore
- Presenza di numerose periferiche «on chip» (ADC, DAC, PWM, timer, porte di comunicazione, memorie).
- Basso costo.
6
Microcontrollore vs. DSP
DSP
- Attualmente, con i progressi tecnologici, la differenza tra i due è sempre meno netta.
7
Organizzazione Hardware
8
Organizzazione Hardware
Organizzazione di Harvard
Il bus indirizzi permette si selezionare il
dato (o l’istruzione) a cui accedere (in
Bus istruzione lettura o scrittura)
Memoria
istruzioni
Bus indirizzi Memorie dedicate per istruzioni e dati,
CPU con conseguente aumento di
complessità (banalmente il numero di
Bus dati bus raddoppia). Introduzione di
Memoria parallelismo: è possibile leggere una
dati istruzione e contemporaneamente
Bus indirizzi
prelevare i dati dall’altra memoria.
9
CPU
10
ALU
11
ALU
Altra caratteristica importante che differenzia non solo l’ALU, ma tutta l’architettura del
processore, riguarda il numero di bit.
12
Aritmetica dei processori
Numeri interi
Con n bit è possibile rappresentare 2n valori. Ad esempio:
n=8
unsigned: N = 0, 1, 2, … 255;
signed (complemento a 2) N = - 128, -127, …, -1, 0, 1, …, 126, 127;
Per rappresentare numeri (senza segno) superiori a 255 è necessario concatenare più locazioni
di memoria (o registri). Ciò comporta un tempo di calcolo maggiore (necessarie più letture da
memoria e più operazioni per eseguire semplici operazioni quali la somma).
char 8 bits.
Anche in questo caso, aumentando il numero di bit a disposizione è m: numero di cifre parte
possibile aumentare l’accuratezza della rappresentazione binaria. frazionaria
14
Aritmetica a virgola fissa
- Nel caso di somma è necessario allineare la virgola nei due addendi. Questo è possibile
operando degli shift a destra o a sinistra.
- Nel caso di moltiplicazione è necessario aggiustare a posteriori la posizione della virgola (si
veda la slide successiva).
15
Aritmetica a virgola fissa
X
(m1+m2 bit): (z1+z2).(n1+n2)
Esempio: formato
2.4
01.0010 X 00.1010 = 0000.10110100
z1=2 n1=4 z2=2 n2=4 z1+z2=4 n1+n2=8 16
Aritmetica dei processori
Numeri in virgola mobile (floating point)
IEEE 754
(−1)𝑆 ∙ 2𝐸−𝑘 ∙ 𝑀
La notazione floating point consente di rappresentare numeri molto grandi (2127) e numeri molto piccoli (2-126) utilizzando
lo stesso numero di cifre significative
17
Aritmetica dei processori
Per fare ciò, il compilatore (che traduce il linguaggio ad alto livello in linguaggio macchina)
trasforma una semplice operazione di prodotto/divisione in tante operazioni di
somme/sottrazioni e shift.
Questo ovviamente influenza notevolmente la velocità con cui sono eseguiti i calcoli e
quindi le prestazioni che si riescono ad ottenere con una data architettura interna.
18
Unità di Controllo
19
Banco di registri
I registri rappresentano perciò delle unità di memoria, costituiti da tanti bit quanti sono
quelli dell’architettura considerata, con cui si interfaccia solitamente l’ALU. Questo significa
che, ad esempio, affinché si possa eseguire la somma tra due dati essi devono essere
contenuti in appositi registri.
La velocità con cui sono eseguite le istruzioni in un processore è dettata dalla frequenza
di clock. Tuttavia nel valutare le prestazioni di un microcontrollore o DSP, il tempo
richiesto per l’esecuzione di un dato algoritmo è anche funzione del set di istruzioni (in
linguaggio macchina) proprie dell’architettura considerata.
21
Memorie
0
1
2 Memoria
0 N: rappresenta la dimensione della
2M x N
1 . wordline. Essa raggruppa tipicamente uno
. . 2M righe/indirizzi
o più byte.
Indirizzo
(M bit) . . N colonne/bit
M: il suo valore massimo coincide con il
. . numero di bit dell’architettura considerata.
M-1
.
Ad esempio M=32 4G di indirizzi
2M-1
dato a N bit
22
Memorie
24
Conversione A/D
Composta da tre fasi: campionamento, quantizzazione e codifica.
Frequenza di campionamento:
V(t)
1
𝑓𝑠 = Il segnale V(t) viene valutato
𝑇𝑠 in istanti di tempo prefissati
TS t
Banda (max frequenza)
del segnale
25
Conversione A/D
Valore quantizzato:
V0 V1 V2 V3 𝑉 𝑘𝑇𝑠
𝑉𝑑 𝑘𝑇𝑠 = 𝑉𝑞 ∙ 𝑟𝑜𝑢𝑛𝑑 = 𝑉𝑞 ∙ 𝑁
𝑉𝑞
Accuratezza Velocità
28
Timer
overflow
Caratteristiche principali:
29
Timer
Il valore massimo del conteggio può essere scelto arbitrariamente (nel range dei valori ammissibili). Questo è possibile
utilizzando un semplice comparatore (digitale) che confronta il valore di conteggio, con il valore impostato. Si ottiene
quindi una rampa la cui durata vale:
𝑐𝑜𝑢𝑛𝑡
𝑇= 𝑁 Possibilità di generare eventi di overflow con periodicità nota
𝑓𝑐𝑘
- Compare: definizione di un valore intermedio con cui confrontare il valore di conteggio. Il superamento di tale valore
non causa l’azzeramento del timer, ma è in grado di modificare uno specifico pin di uscita (generazione di impulsi).
- Input Capture: al verificarsi di un evento esterno (che solitamente coincide con il fronte di un segnale digitale), il timer
(che nel frattempo lavora in modalità free-run) memorizza il valore di conteggio. La distanza temporale tra due eventi
consecutivi può essere quindi stimata sottraendo i corrispondenti valori di conteggio.
rampa
duty
La rampa viene generata mediante un Timer,
Q t mentre duty rappresenta la parola binaria con
tON
𝑉𝑚𝑎𝑥 cui confrontare il conteggio.
TPWM t
31
PWM
𝑓𝑡 ≪ 𝑓𝑃𝑊𝑀
La scelta di ft (così come l’ordine del filtro) determina il ripple presente sul segnale a valle della
demodulazione.
- Conversione D/A (in tal caso è richiesta l’implementazione del filtraggio per garantire la
demodulazione).
32
Comunicazione Seriale
33
Comunicazione Seriale
UART USRT
Universal Asynchronous Receiver-Transmitter Universal Synchronous Receiver-Transmitter
Tx Rx
Tx Rx
Rx Tx
Periferica 1 Periferica 1 Periferica 1 Periferica 1
Rx Tx frame
clock
Nel caso di trasmissione asincrona, la comunicazione avviene senza che i clock di trasmettitore e ricevitore siano
sincronizzati tra loro.
D’altro canto la trasmissione sincrona, prevede la condivisone del clock.
34
Comunicazione Seriale
Lo standard fisico per la comunicazione seriale è RS232. Tuttavia, essendo esso sempre meno
presente nei PC, è comune utilizzare adattatori USB – RS232.
35
Interrupt
Il funzionamento delle periferiche di I/O non è «sincronizzato» con il funzionamento della CPU. Ogni qualvolta una nuovo
dato è disponibile (ad esempio nel caso di ADC o di periferiche seriali) o quando si vuole verificare il completamento di
un’operazione da parte di un determinata periferica è necessario prevedere un’opportuna operazione di sincronizzazione.
Si supponga ad esempio di voler generare un evento di overflow periodico con un timer, al fine di generare degli eventi
distanziati nel tempo di una quantità predefinita. Come è possibile segnalare alla CPU il raggiungimento dell’overflow?
𝑐𝑜𝑢𝑛𝑡
𝑇= 𝑁 overflow
𝑓𝑐𝑘
Arduino 2
La peculiarità di Arduino è legata alla semplicità con cui le
periferiche, anche complesse, possono essere programmate.
Tuttavia, la semplicità di programmazione non sempre si concilia
con lo sfruttamento delle piene potenzialità…
37
Arduino
39
Arduino
Alimentazione
• USB (5V).
ARM Cortex M3 • Tramite alimentatore esterno connesso al power jack
• 32bit (tensione consigliata 7V-12V). La tensione viene regolata
dalla scheda a 5V.
• 84MHz
• Le porte di I/O lavorano a 3.3V. La corrente massima
• Moltiplicazione hardware erogata (o assorbita) dipende dal pin considerato. Essa
a 32bit (tra numeri interi) non supera comunque 15mA in modalità source e 9mA in
in un singolo ciclo di clock modalità sink.
• Divisione Hardware a 32
bit (tra numeri interi) non
su singolo ciclo
40
Arduino
Link utili
41