Università degli studi di Enna
Facoltà di Ingegneria Telematica
Laboratorio di Elettronica
Sistemi Elettronici
integrati
[email protected]
Motivazioni
2
 Elettronica dilagante
• Crescita di esigenze computazionali;
• Intelligenza diffusa;
•Elaborazione e processamento di dati
in larga scala.
Basic Technologies:
•Sistemi Embedded
•Tecnologie di comunicazione
Definizione
3
 Sistema Embedded: qualsiasi dispositivo che include una logica
programmabile, ma che non risulti un general purpose computer;
 Un sistema embedded è costituito da una parte Software ed una Hardware;
 Risponde, monitora e controlla l’ambiente esterno usando sensori ed
attuatori.
Definizione (cont’d.)
4
 Da Wikipedia:
An embedded system is a computer system with a dedicated function within a
larger mechanical or electrical system, often with real-time
computing constraints. It is embedded as part of a complete device often
including hardware and mechanical parts. By contrast, a general-purpose
computer, such as a personal computer (PC), is designed to be flexible and to
meet a wide range of end-user needs. Embedded systems control many
devices in common use today.
CPU integrata
5
 Central Processing Unit integrata nel
dispositivo;
 L’embedded computer non è utilizzato
per computazioni general purpose;
 Il sistema integrato si interfaccia con
l’ambiente esterno, necessita di un
interfacciamento analogico.
Sistemi Embedded – Dove?
6
 Trasporti
• Automotive;
• Avionica;
• Treni.
Sistemi Embedded – Dove?
7
 Consumer
• Mobile
• Home
Sistemi Embedded – Dove?
8
 Industrial Automation
 Home Automation
Sistemi Embedded – Esempi
9
Prodotto: Spazzolino Elettronico
 Microprocessore: 8bit
 Velocità programmabile, timer e circuito
di ricarica
Sistemi Embedded – Esempi
10
Qualsiasi PC, Mouse tastiera o dispositivo
USB
 Solitamente microprocessore: 8bit
Sistemi Embedded – Esempi
11
Qualsiasi Stampante
 Solitamente microprocessore: Intel
Motorola o ARM a 32 bit RISC
Sistemi Embedded – Esempi
12
Oscilloscopio Agilent
 Microprocessore a 64 bit
 OS Windows XP
Sistemi Embedded – Esempi
13
BMW 745i
 Windows CE OS
 53 – 8 bit uP
 11 – 32 bit uP
 7 – 16 bit uP
 Reti Multiple
Sistemi Embedded – Esempi
14
 Wireless Sensor Networks
Solitamente sono caratterizzate da
una collezione più o meno
numerosa di dispositivi elettronici
costituiti da:
•Sensori;
•Radio transiver;
•CPU/Memory;
•Power source.
Caratteristiche Sistemi Embedded
15
 Potrebbero prevedere funzionalità
sofisticate
 Operazioni Real-Time;
 Basso costo di produzione;
 Basso consumo;
 Basso Time To Market.
Funzionalità complesse
16
 Spesso devono eseguire algoritmi
sofisticati o multipli.
• Fast Fourier Trasform;
• Encoder/Decoder Audio-Video
Spesso forniscono complesse
interfacce utenti
Operazioni Real-time
17
La computazione deve essere effettuata prima della
deadline.
•Hard real-Time: Missing deadline = Failure
•Soft Real Time: Missing deadline = degradation
Alcuni sistemi sono multi-rate: affrontano requisiti differenti in tempi differenti
Specifiche non funzionali
18
 Molti sistemi embedded sono dispostivi di massa che devono avere un
basso costo di produzione.
• Memoria limitata, potenza CPU, etc.
 Il consumo di potenza è un fattore critico in dispositivi alimentati a batteria.
• Consumo eccessivo –> Crescita costo dell’intero sistema anche in
sistemi non alimentati a batteria
Team di sviluppo
19
•Solitamente progettati da un ristretto Team
di sviluppatori;
• Spesso occorre soddisfare stringenti
deadline di sviluppo.
Team di sviluppo
20
P.M.
Architetti
SW/HW
Reference
SW/HW developer
Sistema Embedded: Cosa usa?
21
 Che tipo di CPU?
Che sistema operativo?
Che linguaggio di Programmazione?
Indagine di mercato di sviluppatori ingegneri appartenenti ad EETimes e Embedded System
Design Magazine
CPU bit- size
22
Numero di CPU
23
Perché un sistema operativo
24
 Supporto per multitasking, scheduling e sincronizzazione;
Supporto per un ampio range di dispositivi di I/O;
Supporto per il networking;
Supporto per la gestione della memoria;
Supporto per display grafico;
Sicurezza (accesso alle risorse) e gestione della potenza.
Perché un sistema operativo (2)
25
 Solitamente la licenza per OS sono di qualche dollaro per dispositivo.
Sistemi Embedded semplici non necessitano di un Sistema Operativo. Ma i
nuovi dispositivi diventano sempre più complessi.
Uso di un sistema operativo
26
Sistemi operativi commerciali
27
Linguaggi di programmazione
utilizzati
28
Memoria in SE
29
 Occorre sia memoria non volatile che volatile;
 Il Sistema Operativo e l’applicativo memorizzati in FLASH
 Boot dalla Flash all’accensione;
 Flash molto più lento della RAM.
• codice copiato nella ram interna
Quindi …
30
 SE si possono trovare ovunque ed in qualsiasi numero;
 La maggior parte dei nuovi dispositivi utilizza processori a 32 bit;
 Dispositivi con sistema operativo, usano un commercial OS.
 La famiglie di linguaggio C (C, C++, C#) è la più utilizzata per la
programmazione di SE.
Esigenze tecniche e di mercato
31
Le richieste di flessibilità ed integrazione hanno generato la necessità di
raggruppare:
•Parallelismo delle operazioni;
•Numero delle variabili di controllo;
•Modularità del sistema;
•Affidabilità del controllo;
•Flessibilità dei componenti.
• Reti Logiche
• Logiche programmabili
• Controlli digitali e analogici
RIDUZIONE DIMENSIONI, COSTI, FLESSIBILITA’, PROGRAMMABILITA’
Microprocessore
32
Il microprocessore diventa indispensabile quando il numero delle
variabili da controllare diventa elevato.
Comunica con l’esterno;
Esegue esclusivamente operazioni logiche, aritmetiche e di controllo
Elabora sia dati prodotti internamente che provenienti da dispositivi
esterni;
Totalmente dipendenti da elementi periferici;
Non presenta elementi per la memorizzazione non
volatile dei dati.
Microcontrollore
33
Il microcontrollore racchiude tutte le caratteristiche del microprocessore
aggiungendo le possibilità di:
• Comunicazione diretta con dispositivi esterni integrando periferiche
interne;
• Memorizzazione di dati o programmi;
• Effettuare operazioni di controllo, ricezione ed elaborazione segnali;
In generale non necessitano ulteriori aggiunte di memoria RAM oltre a
quella integrata.
Eseguono esclusivamente le operazioni legate al firmware con il
quale sono stati programmati
Microcontrollore vs Microprocessore
34
Microcontrollore:
Microprocessore:
 Microprocessore;
 Unità di calcolo
 Linee I/O;
 Unità di controllo
 Memoria Flash;
 Memoria istruzioni e
 Convertitore A/D;
calcolo
 Timer;
 USART;
 SPI;
 PWM;
 I2C;
...
Microcontrollore vs Microprocessore
35
Microcontrollore vantaggi
36
L'integrazione delle periferiche su un singolo chip porta vantaggi
legati a:
• Minor numero di dispositivi discreti per la realizzazione di un sistema
• Dimensioni ridotte del sistema
• Costi inferiori
• Sistema nel complesso più affidabile
• Protezione dalle copiature
• Risparmio energetico
• Ri-programmabilità del sistema
• Comunicazione diretta con altri sistemi
Microcontrollore MCU
37
I
sistemi
embedded
a
microcontrollore
realizzano
una
logica
di
ottimizzazione del rapporto prezzo/prestazioni.
Hanno un elevato campo di impiego che può spaziare dai più semplici
oggetti di utilizzo quotidiano a complesse architetture in ambito medicale e
industriale.
Ha una capacità di calcolo relativamente limitata ed esegue esclusivamente
il set di istruzioni definiti nel firmware.
Architettura del Microcontrollore
38
I microcontrollori si distinguono tra loro per:
 Set di istruzioni: CISC/RISC
 Organizzazione della memoria: Van Neumann/Harvard
 Frequenza di clock
 Numero di dispositivi di I/O e di periferiche intergrate
 Consumo
 Numero di bit: 4/8/16/32
Prestazioni CPU
39
TCPU= Nistr * CPI * T
Dove:
N istr è il numero di istruzioni del programma;
CPI è il numero medio di cicli di clock per istruzioni macchina;
T= 1/fck è il periodo di clock.
Prestazioni CPU
40
•NISTR dipende dal set di istruzioni resi disponibili dal MCU. Una CPU
RISC riduce il Nistr;
•CPI dipende dall’architettura. Un set di istruzioni semplici permette di
eseguire istruzioni in pochi cicli di clock e di sfruttare un elevato pipeline
(RISC) riducendo CPI
•T = 1/fCK dipende dalla tecnologia elettronica e dall’architettura.
Istruzioni complesse richiedo frequenze di clock più basse.
CPU CISC
41
CISC = Complex Instruction Set Computer
 L’insieme di istruzioni macchina è molto vasto, e quindi si riduce il gap tra
linguaggio ad alto livello e linguaggio macchina;
In alcuni casi è possibile avere istruzioni ad hoc, più potenti di quelli
esprimibili in linguaggio ad alto livello. Ciò aumenta la complessità del
compilatore;
Sono necessari più cicli di clock per completare un’istruzione;
Numero di registri ridotto  numero elevato di scritture in memoria;
CPU RISC
42
RISC = Reduced Instruction Set Computer
 L’insieme di istruzioni macchina è molto piccolo, e quindi aumenta il gap
tra linguaggio ad alto livello e linguaggio macchina;
Le istruzioni hanno tutte lo stesso formato e la stessa lunghezza e molte
son eseguite in un solo colpo di clock;
Unità di controllo semplice e bassa latenza;
Elevato numero di registri interni;
Avere un formato unico di istruzioni agevola l’utilizzo di stadi di pipe
Frequenze di clock più elevate;
Numero di registri elevato  numero ridotto di scritture in memoria, utilizzo
registri interni
PIPELINE
43
Operazioni:
Instruction Fetch;
Instruction decode;
Data Fetch;
Instruction execution
Esecuzione senza pipeline
44
Esecuzione con pipeline
45
Memoria
46
Van Neumann
• Adottata in microcontrollori di fascia bassa;
•Svantaggi legati all’utilizzo di un’unica memoria sia per le variabili volatili
che per il codice del programma;
Harvard
• Separazione dei bus per i dati e gli indirizzi;
•Vantaggi legati all’accesso contemporaneo a codice e dati, diminuendo i
tempi di esecuzione
Harvard vs Van Neumann
47
Harvard
Van Neumann
PIC24FJ256GB108
48
PIC24FJ256GB108
49
PIC è una famiglia di circuiti integrati a semiconduttore con funzione di
microcontrollore. Microchip technology non usa il termine PIC come
acronimo; Il suo nome aziendale è PICmicro.
Il PIC24F è un microcontrollore a 16 bit e ha a disposizione una
settantina di istruzioni;
L’esecuzione delle istruzioni è scandita da un segnale di clock, cioè un
onda quadra a frequenza costante.
PIC24FJ256GB108
50
PIN: 80;
CPU: RISC;
Memoria: Harvard;
Program Memory: 128 kBytes;
Data Memory: 16 kBytes;
Timer a 16 bit: 5;
Uscite PWM: 9;
UART: 4;
SPI: 3;
I2C: 3;
10-BIT ADC: 16
PIC24FJ256GB108 periferiche
51
 Porte: Periferiche di base per la comunicazione verso il mondo esterno,
possono essere configurate come ingresso o uscite digitali. Alcune come
ingressi analogici (Porta B);
 Memoria: FLASH e RAM;
 ADC: 16 Ingressi, risoluzione a 10 bit;
 Timer: usati per generare ritardi o per chiamare routine periodicamente;
 PWM: permette di generare un onda quadra con duty cycle variabile;
 Comunicazioni: permette interfacciamento per mezzo di protocolli
standard, quali (I2C, UART, CAN, …) con altri dispostivi.
 66 Sorgenti di interrupt;
52
Interrupt
53
Un meccanismo molto potente nella programmazione dei microcontrollori è la
gestione delle interruzioni (interrupt).
•In risposta ad eventi esterni, il micro sospende l’esecuzione del programma
principale, esegue apposite routine di servizio, e poi ritorna all’esecuzione
principale
•Es. Posso programmare una periferica Timer (contatori) per generare un
interrupt ogni secondo. Il micro può ad es. avere un programma principale in cui
legge dati continuamente da un sensore con l’ADC e, ogni secondo grazie
all’interrupt, aggiornare un display con l’indicazione dell’ora.
Interrupt
54
• Al RESET il micro esegue l’istruzione
contenuta alla locazione 0000H (detta reset
vector);
• Il RESET vector causa un salto all’entry
point main 0020H, il programma inizia ad
essere eseguito;
• Se durante l’esecuzione si verifica un
interrupt a bassa priorità il micro
automaticamente salta all’indirizzo 0018H ed
esegue l’istruzione ivi contenuta;
• Un nuovo salto ci porta all’indirizzo 0040H
dove risiede la procedura di gestione degli
interrupt;
• Verificando i FLAG è possibile capire quale
periferica ha fatto scattare l’interruzione, per
poi eseguire la routine corrispondente;
• Terminata la routine di gestione il micro
ritorna al punto del programma in cui era
stato interrotto.
Compilazione
55
Nel momento in cui si progetta un'applicazione per tali sistemi, si utilizza un
ambiente
di sviluppo che permette di farli comunicare
con il PC, detto Host.
Il Target identica la piattaforma su cui verrà
eseguita l'applicazione; mentre l'host e la
macchina su cui si sviluppa il programma.
In generale e possibile programmare tutti i
processori in un linguaggio a basso livello
come l'Assembler, permettendo la massima efficienza a scapito, però, della
portabilità. Infatti, ogni famiglia di processori prevede delle proprie “istruzioni
macchina", cosicché il codice scritto per una famiglia di processori non può
essere valido per un'altra. Il linguaggio utilizzato più versatile e il C. Fermo
restando che e importante conoscere l'assembler perche delle volte occorre
implementare delle funzioni obbligatoriamente in tale linguaggio.
Compilazione
56
Un progetto software solitamente e costituito da uno o piu file.c e file.h; i primi
sono i file sorgenti, mentre gli altri sono gli header file, vale a dire i file di
intestazione. Ai fini dei processi di compilazione, queste due tipologie di file
risultano identici mentre, dal punto di vista della buona pratica di
programmazione, occorre usarli diversamente. Il criterio da utilizzare è quello di
non inserire costrutti C che generino codice negli header file ma solo delle
dichiarazioni, al contrario di quanto accade nei source file.
Costruite le due tipologie di file si passa alla generazione del codice eseguendo
tre principali operazioni:
1. Pre-processing Si tratta di un'operazione testuale consistente in una
sostituzione letterale del codice; ad esempio la stringa #include xxx.h fa sì che il
file in questione venga sostituito così com'è in quella porzione di codice;
2. Compilazione Si ha la conversione dei file xxx.c in codice macchina
producendo dei file oggetto (.o);
3. Linking Partendo dai differenti file oggetto generati, li si “linka" tra di essi.
Cross-Compilazione
57
Con il termine cross-compiling ci si riferisce ai flussi di processo che
permettono di ottenere un eseguibile, per mezzo dei tre passi descritti
precedentemente, in grado di “girare" su di un target differente dalla
piattaforma in cui e stato sviluppato.
Si fa uso di questo al fine di garantire la portabilità delle applicazioni
sviluppate su le più svariate piattaforme, lavorando sempre con lo stesso
ambiente di programmazione.
Il compilatore, quindi, e abile, a partire da una serie di source file, a
generare i file oggetto che, opportunamente linkati, permettano di
ottenere un eseguibile.
Programmazione
58
JTAG: protocollo standard di test funzionale che
permette di effettuare debug sul firmware.
Il programma viene memorizzato in
una specifica area di memoria del
microcontrollore definita bootloader. Il
microcontrollore all'avvio esegue le
istruzioni contenute in questa area di
memoria
Ambiente di sviluppo
59
Ambiente multi-piattaforma MPLAB X IDE v 2.00 o superiori.
Compilatore xC16.
Scaricabili da:
http://www.microchip.com/pagehandler/en-us/family/mplabx/
Ambiente di sviluppo
60