Programmatori e
dispositivi
programmabili
Corso di introduzione ai dispositivi logici, formati
standard e relativa programmazione
Programma del corso
Nomenclatura dei packages comuni
Introduzione alle eprom, flash ed eeprom. Architettura delle
memorie
Introduzione ai micro, con particolare riferimento alla serie
Motorola. Architettura dei micro
Riconoscimento dei componenti base in una ECU generica.
Strategie di controllo della ECU
Programmazione dei dispositivi con programmatore generico
Programmazione dei dispositivi con UPA
Tecniche di dissaldatura e saldatura dei dispositivi (pratica)
Identificazione delle zone di crash nelle ECUs airbag (pratica)
Identificazione delle zone di contatore nei DASH (pratica)
Programmers & Devices – 2010 2
Formati standard micro e
memorie
Package
Con il termine package si intende il contenitore in cui
sono racchiusi i circuiti integrati del dispositivo. È la
forma esteriore con cui il componente si presenta.
L’identificazione del tipo di package avviene tramite
l’acronimo degli attributi che identificano il contenitore.
Programmers & Devices – 2010 4
Package
Si dividono in due grandi famiglie:
a montaggio tradizionale (Socket)
DIL (Dual InLine)
DIP (Dual Inline Package)
a montaggio superficiale (SMD)
SOIC (Small Outline Integrated Circuit)
PLCC (Plastic Leaded Chip Carrier)
PSOP (Plastic Small-Outline Package)
SSOP (Shrink Small-Outline Package)
TSSOP (Thin Shrink Small-Outline Package)
xQFP (Quad Flat Package)
BGA (Ball Grid Array)
Programmers & Devices – 2010 5
Package – Numerazione PIN
L’identificazione del PIN1 in genere è semplice, ma non sempre
immediata.
Il primo pin è identificabile tramite una U o un pallino incisi sul corpo
della memoria. In alcuni casi questi simboli sono sostituiti da una
svasatura, indicante il primo set di pin.
È importantissimo ricordare che la numerazione dei pin avviene in
senso antiorario.
Di seguito sono riportate le identificazioni del PIN1 per i formati
descritti precedetemente.
Programmers & Devices – 2010 6
Package – Socket – DIL/DIP
Dual InLine/Dual Inline Package
PIN1
Programmers & Devices – 2010 7
Package – SMD – SOIC
Small Outline Integrated Circuit
PIN1
Programmers & Devices – 2010 8
Package – SMD – PLCC
Plastic Leaded Chip Carrier
PIN1
Programmers & Devices – 2010 9
Package – SMD – PSOP
Plastic Small-Outline Package
PIN1
Programmers & Devices – 2010 10
Package – SMD – SSOP
Shrink Small-Outline Package
PIN1
Programmers & Devices – 2010 11
Package – SMD – TSSOP
Thin Shrink Small-Outline Package
PIN1
Programmers & Devices – 2010 12
Package – SMD – xQFP
Quad Flat Package
PIN1
Programmers & Devices – 2010 13
Package – SMD – xQFP
Quad Flat Package
ATTENZIONE!!! Su alcuni
dispositivi formato xQFP
potrebbero esserci due
pallini su angoli opposti.
Quello indicante il primo pin
è il più grande dei due
Programmers & Devices – 2010 14
Package – SMD – BGA
Ball Grid Array
PIN1
Programmers & Devices – 2010 15
Teoria e architettura
delle memorie
Memorie – Struttura
Sono composte da due macro-gruppi:
• Package
Come visto precedentemente è l’elemento esterno
che costituisce il contenitore in cui verrà alloggiato
il dispositivo vero e proprio
• Die
Meglio conosciuto con il nome di chip, è la sottile
piastrina di materiale semiconduttore
(generalmente silicio) sulla quale viene ricavato il
circuito elettrico dell’integrato.
Programmers & Devices – 2010 17
Memorie – Die
Programmers & Devices – 2010 18
Memorie – Struttura DIE
Si presenta come una grande matrice formata da Word
Line (WL) e Bit Line (BL), pilotate da multiplexer, a loro
volta controllati dagli ingressi sui PIN del package
Per comodità di gestione dei dati, questa grande
matrice è organizzata a blocchi, chiamati pagine
All’incrocio tra WL e BL è presente la cella di memoria.
A seconda della tipologia di questo elemento in cui
viene memorizzato il dato, le memorie vengono divise in
gruppi
Programmers & Devices – 2010 19
Memorie – Struttura DIE
Una cella di memoria è in grado di memorizzare 1 bit di informazione.
Sono sufficienti due linee per accedere alla cella.
La BL trasporta il dato da o verso la cella
La WL trasporta il segnale di selezione della cella
Programmers & Devices – 2010 20
Memorie – Struttura DIE
Logicamente, avere un solo dato per volta non è molto utile. Quindi per immagazzinare più
bit di informazione, da leggere o scrivere in un numero C per volta, si può usare
un’organizzazione a matrice.
L’informazione deve essere quindi contenuta in una matrice di dimensioni RxC dove:
R = 2N con N numero di indirizzi fisici
C = Numero di bit letti o scritti in parallelo
Programmers & Devices – 2010 21
Memorie – Struttura DIE
Il decoder di indirizzo o multiplexer, converte l’indirizzo espresso su N bit nella seleziona
di una sola WL. Più WL attive porterebbero alla distruzione immediata del dispositivo.
Programmers & Devices – 2010 22
Memorie – Struttura DIE
Il numero di righe risulta decisamente sproporzionato rispetto a quello delle colonne, quindi
per motivi costruttivi si preferisce allocare più gruppi di parole sulla stessa riga, controllati
da un secondo multiplexer
L’indirizzo sarà quindi diviso in due parti, la prima (indirizzo di riga) servirà ad abilitare una WL,
la seconda (indirizzo di colonna) permetterà di selezionare la parola all’interno della colonna
Programmers & Devices – 2010 23
Memorie – Celle di memoria
OTP-ROM (One Time Programmable Read Only
Memory)
UV-EPROM (UltraViolet Erasable Programmable Read
Only Memory)
EEPROM (Electrically Erasable Programmable Read
Only Memory)
FLASH EPROM (FLASH Erasable Programmable Read
Only Memory)
Programmers & Devices – 2010 24
Memorie – Celle di memoria
La cella di memoria deve garantire la permanenza del dato anche in assenza
di alimentazione esterna.
Il modo più semplice per realizzare una cella di memoria è un banale
cortocircuito tra WL e BL.
Tuttavia questa soluzione non permette
la programmazione del dispositivo sul
campo di funzionamento.
La programmazione deve essere fatta in
fase di costruzione, con costi
elevatissimi (non è ancora possibile
avere dei componenti standard).
Programmers & Devices – 2010 25
Memorie – Celle di memoria
Con l’aumento delle capacità tecnologiche e soprattutto con l’avvento dei
dispositivi MOS (Metal Oxide Semiconductor), si è pensato di creare un
transistor che sia in grado di “ricordare” la fase di programmazione.
Il funzionamento del transistor MOS
per applicazioni digitali è l’equivalente
di un interruttore che fa passare la
corrente dal Source S (sorgente) al
Drain D (pozzo), pilotato dal Gate G
(portale).
Una volta superata la tensione Vt
(threshold o soglia) sul Gate, il
transistor entra in conduzione.
Programmers & Devices – 2010 26
Memorie – Celle di memoria
Un esempio di funzionamento del
transistor MOS per pilotare un utilizzatore
Variando la tensione sul Gate, il transistor
si accende o si spegne, permettendo il
pilotaggio dell’utilizzatore
Programmers & Devices – 2010 27
Memorie – Cella OTP-ROM
0 Logico 1 Logico
Una OTP-ROM a fusibili può essere programmata sul campo dall'utente finale.
L'interruzione del collegamento equivale alla programmazione di un '1' all'interno della
cella corrispondente. Se il collegamento rimane, quando la WL si attiva il transistor si
accende e porta a livello basso la BL. Le ROM di questo tipo sono programmabili una
volta sola.
Programmers & Devices – 2010 28
Memorie – Cella UV-EPROM
1 Logico
0 Logico
Le celle di questo tipo possono essere programmate elettricamente in modo individuale
(portando ad una tensione elevata ad es. 12 V la WL e la BL corrispondenti). La
cancellazione è necessariamente collettiva e richiede l'esposizione del componente a
radiazione UV. Se il quarzo è oscurato, si ha una OTP-ROM.
Programmers & Devices – 2010 29
Memorie – Cella EEPROM
1 Logico
MOS di
0 Logico selezione
L'aggiunta di un transistor nMOS in serie al transistor a gate flottante permette la
cancellazione individuale per via elettrica delle celle. Lo svantaggio principale è che una
cella occupa un'area quasi doppia rispetto a quella di una EPROM, per cui si ottengono
componenti meno densi.
Programmers & Devices – 2010 30
Memorie – Cella Flash EPROM
La cella Flash combina la versatilità di un modulo EEPROM con la compattezza di una
struttura EPROM: le operazioni avvengono “on-system” elettricamente, non è necessario
alcun transistore addizionale per effettuare la selezione del bit, la procedura di
cancellazione può essere eseguita sull’intero chip, come per i moduli EPROM, oppure a
settori.
Programmers & Devices – 2010 31
Memorie – Flash – Scrittura
e- e- e- e-
Programmers & Devices – 2010 32
Memorie – Flash – Cancellazione
e- e- e-
Programmers & Devices – 2010 33
Memorie – Flash – Lettura
e- e- e-
e-
La BL
andrà a 0V
Programmers & Devices – 2010 34
Memorie – Tempo di accesso
Un fattore molto importante per valutare il
comportamento di una memoria di tipo ROM, qualsiasi
essa sia, è il tempo dopo cui il dato in uscita è
disponibile ed è affidabile.
Le WL ma soprattutto le BL sono paragonabili a dei
piccoli condensatori che accumulano una certa carica
parassita. Questa carica introduce un ritardo. È per
questo motivo che si cerca sempre di ridurre il più
possibile le dimensioni dei DIE.
Programmers & Devices – 2010 35
Memorie – Tempo di accesso
t1 = tempo di carica della WL
t2 = tempo di scarica della BL
t3 = tempo di assestamento
tacc = tempo di accesso al dato
tacc = t1+t2+t3
ATTENZIONE: È importante notare
che il tempo di accesso è maggiore
nel caso di cella di memoria non
programmata!!! Il dato dichiarato dal
costruttore si riferisce quindi al caso
peggiore.
Programmers & Devices – 2010 36
Memorie – Trasferimento dati
E’ possibile trasferire dati in ingresso o in uscita dal dispositivo
programmabile essenzialmente in due modi:
• Trasferimento di tipo seriale
• Trasferimento di tipo parallelo
E’ evidente che il sistema di comunicazione scelto condizionerà
l’intero circuito e la velocità massima di trasferimento raggiungibile.
Inoltre il trasferimento seriale necessita di regole ben precise per lo
scambio delle informazioni: queste regole vengono definite dai
PROTOCOLLI.
Quindi in base alla modalità scelta, si parlerà di memorie parallele e
memorie seriali.
Programmers & Devices – 2010 37
Memorie – Memoria parallela
Le memorie ad accesso parallelo sono adatta alla
memorizzazioni di una vasta mole di dati, oltre che a
garantire un’elevata velocità nel trasferimento dati.
Infatti il tempo di accesso massimo è rappresentato
sostanzialmente dal tempo di accesso alla cella di
memoria.
Non necessitano di protocolli di comunicazione
(trasmissione asincrona), ma per contro necessitano di
un bus imponente per il trasferimento dei dati. Infatti ad
ogni bit di indirizzo o output è associata una linea di
interconnessione al micro.
Programmers & Devices – 2010 38
Memorie – Memoria parallela
Programmers & Devices – 2010 39
Memorie – Memoria parallela
A questa categoria appartengono le memorie:
OTP e UV-EPROM
Contrassegnate dalla stringa 27C
EEPROM
Contrassegnate dalla stringa 28C
FLASH EPROM
Contrassegnate dalla stringa 28F, 29C o 29F
Programmers & Devices – 2010 40
Memorie – Memoria seriale
Le memorie ad accesso seriale o più comunemente
denominate “Serial Eprom” sono utilizzate per la
memorizzazione di pochi dati. Tuttavia il loro impiego è
vastissimo, in quanto lo scambio dei dati avviene su
almeno una linea, con un sistema denominato “bit-by-
bit”.
Per contro, necessitano di un protocollo specifico di
comunicazione univoco, e di una ulteriore linea,
denominata CLOCK, per la sincronizzazione dello
scambio dati (trasmissione sincrona)
Programmers & Devices – 2010 41
Memorie – Memoria seriale
Programmers & Devices – 2010 42
Memorie – Memoria seriale
Le serial eprom si distinguono in base al protocollo di
comunicazione:
SPI
Contrassegnate dalla stringa 25, 25C, 95 o 95P
MICROWIRE
Contrassegnate dalla stringa 93C, 93S
I2C
Contrassegnate dalla stringa 24C
Programmers & Devices – 2010 43
Memorie – SPI/Microwire
Il Serial Peripheral Interface o SPI è un sistema di
comunicazione tra un microcontrollore e altri circuiti
integrati o tra più microcontrollori.
È un bus standard di comunicazione ideato dalla Motorola
e sviluppato, in una sua variante, anche dalla National
Semiconductor con il nome di bus Microwire.
La trasmissione avviene tra un dispositivo detto master e
uno o più slaves (letteralmente dall'inglese padrone e
schiavo). Il master controlla il bus, emette il segnale di
clock, decide quando iniziare e terminare la
comunicazione.
Programmers & Devices – 2010 44
Memorie – SPI/Microwire
Il bus SPI si definisce:
di tipo seriale
sincrono per la presenza di un clock che coordina la
trasmissione e ricezione dei singoli bit e determina la
velocità di trasmissione
full-duplex in quanto il "colloquio" può avvenire
contemporaneamente in trasmissione e ricezione.
Programmers & Devices – 2010 45
Memorie – SPI/Microwire
Programmers & Devices – 2010 46
Memorie – SPI
L’architettura classica di una SPI:
SDI (Serial Data Input)
SDO (Serial Data Output)
CS# (Chip Selection)
CLK (Clock)
WP# (Write Protect)
HOLD (Hold)
Non vanno dimenticali i terminali di alimentazione Vdd
(+) e Vss (GND).
Programmers & Devices – 2010 47
Memorie – Microwire
L’unica differenza del protocollo Microwire è la
possibilità di trasferimento dati a 16bit anziché 8bit
Il terminale che gestisce l’organizzazione dei dati è
denominato
ORG (Organization)
che va a sostituire il terminale HOLD delle SPI
Programmers & Devices – 2010 48
Memorie – Comunicazione SPI
La trasmissione dei dati sul bus SPI si basa sul funzionamento dei
registri a scorrimento (shift register). Ogni dispositivo sia master che
slave è dotato di un registro a scorrimento interno i cui bit vengono
emessi e, contemporaneamente, immessi, rispettivamente, tramite
l'uscita SDO e l'ingresso SDI. Il registro può avere dimensione
arbitraria (ma uguale per i dispositivi master e slave) anche se
usualmente ha la dimensione di 8 bit. Il registro a scorrimento è
un'interfaccia completa mediante la quale vengono impartiti comandi
e trasmessi dati che arrivano in modo seriale ma che internamente
sono prelevati, a fine trasmissione, in modo parallelo. Ad ogni impulso
di clock i dispositivi che stanno comunicando sulle linee del bus
emettono un bit dal loro registro interno rimpiazzandolo con un bit
emesso dall'altro interlocutore.
Programmers & Devices – 2010 49
Memorie – I2C
I²C, acronimo di Inter Integrated Circuit è un sistema di
comunicazione seriale bifilare utilizzato tra circuiti
integrati. Questo bus è stato sviluppato dalla Philips.
Il classico bus I²C è composto anche in questo caso da
almeno un master ed uno slave.
Trattandosi di un protocollo seriale i vantaggi che offre
sono quelli di impegnare solo due linee.
Un suo limite importante è la velocità di
comunicazione.
Programmers & Devices – 2010 50
Memorie – I2C
Il protocollo hardware dell'I2C richiede:
Una linea bidirezionale per il trasferimento dei dati
Una linea per il clock
Va aggiunta una connessione di riferimento Vss (GND) e
una linea di alimentazione Vdd (+) a cui sono connessi i
resistori di pull-up. Le tensioni tipiche usate sono +5V o
+3,3V
Programmers & Devices – 2010 51
Memorie – I2C
Programmers & Devices – 2010 52
Memorie – I2C
L’architettura classica di una I²C:
SDA (Serial Data Line)
SCL (Serial Clock Line)
A2, A1, A0 (Device Select)
WP# (Write Protect)
Programmers & Devices – 2010 53
Memorie – Comunicazione I2C
Il master inizia lo scambio di informazioni inviando lo start bit (S) seguito
dall'indirizzo dello slave con cui vuole comunicare (B0, …, B6). Segue
un bit (B7) che indica se vuole trasferire informazioni allo slave
(scrivere, ammesso che il dispositivo permetta questa possibilità) o
ricevere informazioni (leggere). Nel primo caso il bit B7 tenuto basso dal
master nel caso voglia ricevere informazioni rilascerà la linea dati (alto
per la presenza del pull-up).
Se lo slave indirizzato (B0, ..., B7) esiste, esso prende il controllo della
linea dati sul successivo impulso alto del SCL e la forza a 0 logico. Il
master sa quindi che il dispositivo selezionato ha ricevuto la richiesta ed
è in attesa di rispondere. Gli indirizzi e i dati per convenzione del bus
sono trasmessi iniziando dal bit più significativo (B0) e terminando con il
bit meno significativo (B7 )
Programmers & Devices – 2010 54
Memorie – Identificazione
L’identificazione del dispositivo avviene per mezzo del
codice inciso o serigrafato sulla superficie del dispositivo
stesso.
La stringa è così composta:
Modello Tempo di
Eprom Accesso
XX XXX XXX XX XXX
ID Altre
Dimensione
Costruttore Informazioni
Programmers & Devices – 2010 55
Memorie – Identificazione
Descrizione del codice di identificazione
ID Costruttore
È una stringa a 1 o 2 caratteri che identifica univocamente il costruttore della memoria (p.e. AM
identifica la AMD, M identifica ST Microelectronics)
Modello Eprom
È uno dei codici visti precedentemente che descrive la natura della memoria
Dimensione
Espresso in kilo-bit o Mega-bit, individua lo “spazio” di memoria disponibile e quindi il numero di
transistor presenti
Tempo di accesso
Questa informazione è disponibile solo per le memorie ad accesso parallelo. Se si dovesse
procedere alla sostituzione della memoria, è fondamentale che il nuovo dispositivo abbia questo
tempo inferiore o uguale rispetto al vecchio
Altre Informazioni
Sono ad esempio informazioni riguardanti la temperatura massima di funzionamento e altre
informazioni secondarie
Programmers & Devices – 2010 56
Memorie – ID Dimensione
Stringa EPROM Struttura (bit) Dimensione (byte)
01* / 46* / 46(x16)* / 010* 128 x 8 / 128 x 8 / 64 x 16 / 128 x 8 128
02* / 56* / 56(x16)* / 020* 256 x 8 / 256 x 8 / 128 x 16 / 256 x 8 256
04* / 66* / 66(x16)* / 040* 512 x 8 / 512 x 8 / 256 x 16 / 512 x 8 512
08* / 76* / 76(x16)* / 080* 1024 x 8 / 1024 x 8 / 512 x 16 / 1024 x 8 1k
16* / 86* / 86(x16)* / 160* 2k x 8 / 2k x 8 / 1k x 16 / 2k x 8 2k
32 – 320* 4k x 8 4k
64 – 640* 8k x 8 8k
128 16k x 8 16k
256 32k x 8 32k
512 64k x 8 64k
1001 – 1024 – 010 128k x 8 128k
020 – 200 256k x 8 – 128k x 16 256k
040 – 400 512k x 8 – 256k x 16 512k
080 – 800 1024k x 8 – 512k x 16 1M
016 2048k x 8 – 1024 x 16 – 512k x 32 2M
* E2PROM Serial
Programmers & Devices – 2010 57
Memorie – ID Dimensione
Stringa EPROM Tempo di Accesso (ns – nanosecondi)
18 180
15 150
12 120
90 90
70 70
55 55
40 40
Programmers & Devices – 2010 58
Teoria e architettura
dei microcontrollori
MCU
I microcontrollori sono la forma più diffusa e più invisibile di computer.
Comprendono la CPU, un certo quantitativo di memoria RAM e
memoria ROM (può essere PROM, EPROM, EEPROM o FlashROM) e
una serie di interfacce di I/O (input/output) standard, fra cui molto
spesso bus (I²C, SPI, CAN, LIN).
Le periferiche integrate sono la vera forza di questi dispositivi: si
possono avere convertitori ADC (Analogic to Digital Converter) e
convertitori DAC (Digital to Analogic Converter) multicanale,
timer/counter, UART, numerose porte esterne bidirezionali bufferizzate,
comparatori, PWM.
La loro capacità di calcolo è molto limitata e di solito eseguono lo stesso
programma (firmware) per tutta la durata del loro funzionamento.
Programmers & Devices – 2010 60
MCU – Architettura
Porte: costituiscono le periferiche di base per la comunicazione da e verso
l'esterno. Possono essere configurate come ingressi o uscite digitali.
Memoria: permette di conservare dati anche in assenza di alimentazione e
contiene il codice programma
ADC: ad alcune porte del PIC è possibile applicare un ingresso analogico e
quantizzarlo con una risoluzione tipica di 10bit.
Timer: sono presenti sempre e vengono utilizzati spesso per generare
ritardi finiti o per la misurazione d'intervalli di tempo (ad esempio eventi
esterni).
PWM: permette, utilizzando un Timer di generare un segnale di comando
PWM.
Comunicazioni: consente l'interfacciamento attraverso protocolli standard
(I2C, UART, CAN, ... ) con altri dispositivi.
Programmers & Devices – 2010 61
MCU – Architettura
Programmers & Devices – 2010 62
MCU – Architettura
Per poter utilizzare le periferiche sono presenti dei REGISTRI che
servono a configurarle. Si tratta di locazioni di memoria di 1byte in cui
ad ogni bit è associato un significato specifico.
Ogni registro ha un nome riservato e l'elenco dei registri con la loro
funzione è presente nei data-sheet.
Ad esempio:
Ogni pin di una porta può essere configurato come ingresso o uscita
attraverso il registro TRISx.
Mentre il valore presente o inviato alla porta è scritto nel registro
PORTx
Le operazioni vere e proprie invece vengono eseguite all’interno della
ALU (Arithmetic Logic Unit)
Programmers & Devices – 2010 63
MCU – Architettura
Programmers & Devices – 2010 64
MCU – ALU
L'Arithmetic Logic Unit (ALU) è un'unità dedita allo svolgimento di
operazioni matematiche ed è formata da un insieme di porte logiche
opportunamente collegate. Queste porte logiche nel loro complesso
provvedono ad eseguire tutte le operazioni aritmetiche e logiche gestite
dal microprocessore.
Simboli di una ALU:
A e B segnali con gli addendi
R segnali con il risultato
F segnali di controllo
D segnale con l'eventuale
riporto/resto
Programmers & Devices – 2010 65
MCU – ALU
Le prime ALU erano in grado di eseguire nativamente solo
le operazioni più semplici (addizione, sottrazione e
shifting di bit ecc.) e le operazioni logiche booleane
(AND, OR, XOR e NOT).
Le operazioni più complesse come le operazioni di
moltiplicazioni o divisione venivano emulate utilizzato
ripetutamente somme o sottrazioni. Con l'evolvere
dell'elettronica si è riuscito a integrare nelle ALU anche le
operazioni di divisione e moltiplicazione.
Tuttavia per le strutture più semplici, come ad esempio i
microcontrollori, queste operazioni sono più che sufficienti
Programmers & Devices – 2010 66
MCU – ALU – Porte logiche
Le porte logiche sono delle semplici strutture in grado di
realizzare delle comparazioni tra due o più segnali in
ingresso.
L’algebra utilizzata è quella di BOOL, da cui prendono il
nome le operazioni, definite per l’appunto BOOLEANE
Le porte logiche vengono prevalentemente realizzate con
reti di transistor CMOS (Complementary Metal-Oxyde
Semiconductor) e lavorano con logica TTL (Transistor-
Transistor Logic).
Di seguito sono riportate le strutture basilari.
Programmers & Devices – 2010 67
MCU – ALU – Porte logiche
AND è una porta logica che riceve in ingresso 2 valori e
restituisce 1 se e solo se tutti e due i valori di ingresso
hanno valore 1.
Input Output
A B AeB
0 0 0
0 1 0
1 0 0
1 1 1
Programmers & Devices – 2010 68
MCU – ALU – Porte logiche
OR è una porta logica che riceve in ingresso 2 valori e
restituisce 1 se uno od entrambi i valori di ingresso hanno
valore 1.
Input Output
A B AoB
0 0 0
0 1 1
1 0 1
1 1 1
Programmers & Devices – 2010 69
MCU – ALU – Porte logiche
XOR (eXclusive OR) è una porta logica che riceve in
ingresso "n" valori e restituisce "1" in uscita se e solo se il
numero di ingressi che presentano il valore logico "1" è
dispari.
Input Output
A B oAoB
0 0 0
0 1 1
1 0 1
1 1 0
Programmers & Devices – 2010 70
MCU – ALU – Porte logiche
NOT è una porta logica che inverte il segnale in ingresso.
Questa porta logica ha un solo ingresso ed una uscita che
sarà 1 se l'ingresso è 0 o 0 altrimenti.
Input Output
A NOT A
0 1
1 0
Programmers & Devices – 2010 71
MCU – ALU
Ora proviamo a costruire una semplice ALU in gradi di
eseguire l’operazione di addizione.
Costruiamo prima di tutto la tabella della verità:
A B Riporto Somma
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Programmers & Devices – 2010 72
MCU – ALU
Conosciamo già queste due funzioni: in particolare la
somma è una funzione XOR, mentre il riporto è una AND.
Abbiamo realizzato una
semplice ALU in grado di fare
la somma di due numeri.
Programmers & Devices – 2010 73
MCU – Registri
I registri costituiscono il punto più alto della gerarchia della
memoria, e sono il meccanismo più rapido per il sistema di
manipolare i dati. I registri sono normalmente misurati in base al
numero di bit che possono contenere. Attualmente sono
implementati normalmente con file dei registri
Il termine è usato spesso per riferirsi esclusivamente al gruppo di
registri che possono essere direttamente indirizzati dalle istruzioni
di input e output del microprocessore. Più propriamente, queste
registri sono definiti "architected registers".
Possiamo immaginarli come dei contenitori in cui i dati vengono
depositati temporaneamente, o se si tratta di una programmazione,
in modo permanente
Programmers & Devices – 2010 74
MCU – Registri
Programmers & Devices – 2010 75
MCU – Firmware
Il firmware è il programma depositato all’interno della
memoria fisica. Il microprocessore eseguirà questo SW
per tutto l’arco del suo funzionamento.
Esso è memorizzato su una memoria non volatile ROM o
EEPROM.
Spesso esiste un altro componente software più semplice
e di livello più basso, che si occupa delle funzioni
minimali necessarie a gestire la memoria non volatile e a
caricare il firmware, denominato bootloader.
Programmers & Devices – 2010 76
MCU – Firmware – Boot
In alcuni microcontrollori, come ad esempio la serie
Motorola 68HC11, è possibile scegliere tramite due
terminale (MOD A e MOD B), quale boot caricare.
I boot multipli permettono di “spezzare” in più parti il
firmware, e quindi di conseguenza impostare le
periferiche in maniera differente, cosa che spesso
avviene durante la fase di programmazione
Programmers & Devices – 2010 77
MCU – Firmware – Boot
Questa particolare proprietà di variare l’utilizzo delle
periferiche, quindi la possibilità di variare a piacimento i
valori dei registri, rende particolarmente sicura e
semplice la riprogrammazione della memoria del micro
stesso.
Quindi, data l’impossibilità di variare un programma
mentre è in esecuzione, si preferisce delegare il tutto ad
un sottoprogramma, particolarmente stabile e snello (che
è sinonimo di velocità nell’esecuzione), che vada a
riscrivere il programma principale.
Programmers & Devices – 2010 78
MCU – Firmware – Boot
Programmers & Devices – 2010 79
MCU – Generatore di Clock
Fino ad ora sono state esaminate le varie unità che
compongono il microcontrollore. Tuttavia, non è stato
delineato ancora nessun dispositivo che sia in grado di
sincronizzare i vari sottogruppi.
Questo ruolo è affidato al generatore di clock, che
provvede a scandire un tempo standard di
funzionamento.
Programmers & Devices – 2010 80
MCU – Generatore di Clock
Programmers & Devices – 2010 81
MCU – Generatore di Clock
Il generatore di clock dunque provvede a sincronizzare:
trasferimento delle informazioni tra le varie unità
processare i dati all’interno di un sottogruppo
Questo segnale viene generato da un sistema di
oscillatori al quarzo o da un piccolo circuito integrato che
genera onde quadre.
Tuttavia il caso più frequente nonché estremamente
economico e affidabile è il primo.
Programmers & Devices – 2010 82
MCU – Generatore di Clock
Programmers & Devices – 2010 83
MCU – Generatore di Clock
ATTENZIONE!!! Il generatore di clock oltre che a
determinare il sincronismo, determina anche la velocità
con cui vengono effettuate le operazioni.
Questa proprietà dipende essenzialmente dal risonatore
al quarzo utilizzato e si misura in Hz (Hertz) o multipli
(più comunemente kHz o MHz).
Programmers & Devices – 2010 84
MCU – Reset
Il segnale di RESET è usato per riavviare tutti i blocchi,
quindi possiamo intenderlo come una specie di salto
incondizionato del SW.
Dopo il segnale di reset, tutte le unità si riportano nello
stato di default.
Programmers & Devices – 2010 85
MCU
Programmers & Devices – 2010 86
MCU
Programmers & Devices – 2010 87
MCU – Identificazione
È possibile identificare il microcontrollore tramite una
stringa apposta sulla superficie superiore. Ad esempio
possiamo trovare scritto:
MC68HC908AS60, che è il codice esteso del dispositivo.
Quasi mai si usa questa annotazione perché troppo lunga.
Si preferisce quindi identificare l’MCU tramite una stringa
maschera univoca.
Programmers & Devices – 2010 88
MCU – ID – Mask
La stringa maschera è composta nell’ordine da:
Numero (non sempre presente)
Lettera
Numero
Numero
Lettera
Indicheremo con # i numeri e $ le lettere.
Programmers & Devices – 2010 89
MCU – ID – Mask
Il mask (o maschera) sarà quindi:
(#) $ # # $
Nel caso del micro esaminato precedentemente avremo:
J74Y MC68HC908AS60
Il codice mask e l’equivalente è presente in apposite
tabelle.
Nel caso in cui non fosse presente nell’elenco,
l’identificazione avviene tramite data-sheet rilasciati dal
costruttore, osservando la corrispondenza dei PIN
Programmers & Devices – 2010 90
Composizione di un’unità
di controllo elettronico.
Sistema di
gestione e controllo
ECU – Ricerca componenti
Regole generali per identificare un dispositivo e la funzione che esso svolge
Microcontrollore o MCU:
Generalmente è il componente con il maggior numero di PIN
Ha collegati a se vari Bus Dati (ad es. con EPROM/FLASH o E2P)
È indispensabile in quanto unico elemento in grado di gestire il sistema di controllo
Formati tipici DIL/DIP (obsoleti) - PLCC - xQFP - BGA
EPROM/EEPROM/FLASH:
È situata nei pressi del micro e collegata ad esso tramite un Bus Dati
Ha in se le mappe di controllo motore, immobilizer e comunicazione diagnostica
Non è indispensabile in quanto la sua funzione può essere svolta dallo stesso Micro
Nel caso di architettura a 16bit è possibile una presenza doppia
Formati tipici DIL/DIP28 - DIL/DIP32 - PLCC32 - PLCC44 - PSOP44 - SSOP56
SERIAL EEPROM:
È situata nei pressi del micro e collegata ad esso tramite un piccolo Bus Dati (2 lines)
Ha in se le impostazioni del veicolo e il log-in (immobilizer)
Non è indispensabile in quanto la sua funzione può essere svolta dallo stesso Micro
Formati tipici DIL8 - SOIC8 - TSSOP8
Programmers & Devices – 2010 92
ECU – Logica di Controllo
Disturbo
IN + Controllore Impianto ++ OUT
Sistema
OPEN-LOOP
Programmers & Devices – 2010 93
ECU – Logica di Controllo
Sistema Disturbo
CLOSE-LOOP
IN + Controllore Impianto ++ OUT
-
La ECU valuta Trasduttore
gli errori!!!
Programmers & Devices – 2010 94
ECU – Logica di Controllo
Disturbo
+
+ Controllore Impianto +
-
Trasduttore
Programmers & Devices – 2010 95
ECU – Logica di Controllo
Sistema di controllo posizione (pedale acceleratore/valvola farfalla)
Programmers & Devices – 2010 96
ECU – Flusso dati
Condizionamento Condizionamento
Segnali Micro Segnali
Input
(Sensori)
Elettronica
Flash/ di Potenza
Eprom E2P
(MOS)
Output
(Attuatori)
Programmers & Devices – 2010 97
ECU – Layout Componenti
Bus Dati Micro
Eprom
E2P
Circuito di
potenza
Programmers & Devices – 2010 98
ECU – Layout Componenti
Coprocessore
Micro
Bus Dati
Flash
Eprom
Programmers & Devices – 2010 99
ECU – Layout Componenti
Coprocessore
Micro
Bus Dati
Programmers & Devices – 2010 100
ECU – Layout Componenti
Micro
Bus Dati
Flash
Eprom
Programmers & Devices – 2010 101
Programmazione dei
dispositivi con
programmatore generico
Programmer
Il programmatore permette la riprogrammazione del
dispositivo in seguito al distacco dal circuito.
La memoria o il microcontrollore devono essere collegati
solo ed esclusivamente alla piastra del programmatore
tramite adattatori (condizione non essenziale).
Una volta terminata la preparazione hardware, si passa
alla programmazione vera e propria.
Nell’illustrare le procedure di programmazione si farà
riferimento al programmatore Wellon VP680, ma il
ragionamento è estendibile a tutti i modelli e marche
Programmers & Devices – 2010 103
Programmer – Hardware
Il dispositivo da programmare o l’adattatore su cui
alloggerà il dispositivo va sempre rivolto con il PIN1
verso l’alto e appoggiato sul bordo inferiore.
PIN 1
Parte
bassa
Programmers & Devices – 2010 104
Programmer – Software
Menù dei
comandi
Logger
Status
Programmers & Devices – 2010 105
Programmer – Gestione file
Edita il
“buffer”
Carica file da
programmare
Salva file
letto dal
device
Programmers & Devices – 2010 106
Programmer – Buffer
Il buffer è il file letto dal dispositivo e trasposto in memoria
sul PC. Quindi è la copia del contenuto del dispositivo.
Visualizzazione Visualizzazione
in Byte in ASCII
Programmers & Devices – 2010 107
Programmer – Buffer
ATTENZIONE!!! Nel momento in cui si caricherà un
file da PC andrà a finire nel buffer e non nel
dispositivo.
Allo stesso modo un file salvato sul PC, sarà il
contenuto istantaneo del buffer
Programmers & Devices – 2010 108
Programmer – Buffer – Fill
La funzione Fill permette di riscrivere un intero settore del
buffer di qualunque dimensione con un determinato valore
Indirizzo
di start
Indirizzo
di stop
Valore
Programmers & Devices – 2010 109
Programmer – Buffer – Fill
Dopo l’esecuzione della funzione Fill, il buffer si presenta in
questo modo:
Programmers & Devices – 2010 110
Programmer – Buffer - Swap
La funzione Swap Byte permette di invertire i byte pari
con quelli dispari:
AA BB CC DD BB AA DD CC
Esiste anche una funzione, meno usata, chiamata Swap
Word che permette di invertire un’intera parola (4 Byte):
AA BB CC DD EE FF GG HH DD CC BB AA HH GG FF EE
Programmers & Devices – 2010 111
Programmer – Buffer - Swap
Buffer di riferimento:
Programmers & Devices – 2010 112
Programmer – Buffer - Swap
Buffer dopo Swap Byte:
Programmers & Devices – 2010 113
Programmer – Buffer - Swap
Buffer dopo Swap Word:
Programmers & Devices – 2010 114
Programmer – Buffer - Checksum
La funzione Checksum (o spesso indicato con CHKSUM)
esegue un algoritmo di verifica dell’inserimento dei dati
durante la scrittura.
Il checksum più semplice è la somma di tutti i byte presenti
nel buffer.
Nel calcolo del checksum è sufficiente individuare le ultime
4 cifre
Ad esempio:
01FDD6AC D6AC
Programmers & Devices – 2010 115
Programmer – Select device
Selezione
del
dispositivo
Programmers & Devices – 2010 116
Programmer – Select device
Il tasto select device permette la scelta del dispositivo:
Sotto-
Costruttore Modello gruppo
Info
Programmers & Devices – 2010 117
Programmer – Select device
ATTENZIONE!!! È essenziale che l’individuazione e
scelta del dispositivo venga eseguita prima di qualunque
operazione di lettura/scrittura.
Una inosservanza di questa regola potrebbe
danneggiare irrimediabilmente la memoria o il
microcontrollore in questione.
Programmers & Devices – 2010 118
Programmer – Operazioni
Blank
check Verifica
Programma Leggi Cancella
Programmers & Devices – 2010 119
Programmer – Program
Il tasto Prog permette la (ri)programmazione del
dispositivo scelto.
Con questa operazione, tutti i dati presenti nel buffer
verranno ricopiati esattamente così come sono nella
memoria.
Al termine della procedura, buffer e dispositivo avranno
gli stessi byte.
Sulle eprom possibile effettuarla se e solo se il dispositivo
è vuoto.
Programmers & Devices – 2010 120
Programmer – Blank check
Il tasto Blank check permette di verificare se la
memoria o il micro è vuoto (nei casi in questione il
dispositivo scelto sarà vuoto se tutti i byte sono ad FF)
Questa funzione agisce solo ed esclusivamente sul
dispositivo, quindi non intacca il buffer che rimarrà
invariato così com’è.
Programmers & Devices – 2010 121
Programmer – Read
Il tasto Read permette la lettura dei dati contenuti nel
dispositivo. Tutte le informazioni presenti nel buffer
andranno perse e sovrascritte, mentre la memoria non
subirà nessuna variazione.
Programmers & Devices – 2010 122
Programmer – Verify
È l’unica operazione che non causa la variazione dei dati
nel buffer e nella memoria.
Il tasto Verify esegue semplicemente una comparazione
tra il buffer e il dispositivo.
Al termine dell’operazione verrà restituito un messaggio
di ok se le due parti (buffer e device) coincidono,
altrimenti verrà segnalato un errore.
Programmers & Devices – 2010 123
Programmer – Erase
Il tasto Erase esegue la cancellazione dei dati nel
dispositivo (ove possibile). Tutti i byte vengono ripristinati
ad FF.
Questa operazione mantiene inalterati i dati presenti nel
buffer.
Programmers & Devices – 2010 124
Programmer – Logger
Nel logger vengono riportate tutte le operazioni eseguite
sul dispositivo e l’esito della funzione scelta:
Programmers & Devices – 2010 125
Programmer – Sintesi
Riassumendo, le fasi fondamentali per la LETTURA di un
dispositivo con programmatore generico sono:
• Identificazione del dispositivo e posizionamento sul
programmatore
• Scelta del dispositivo (Select Device)
• Lettura (Read)
• Verifica (Verify) – per n volte!!! –
• Esportazione del buffer su file (Save)
Programmers & Devices – 2010 126
Programmer – Sintesi
Invece, le fasi fondamentali per la SCRITTURA di un
dispositivo con programmatore generico sono:
• Identificazione del dispositivo e posizionamento su
programmatore
• Scelta del dispositivo (Select Device)
• Importazione del buffer da file (Load)
• Verifica possibilità di scrittura (Blank Check) – Solo per
dispositivi OTP –
• Programmazione (Program)
• Verifica (Verify) – per n volte!!! –
Programmers & Devices – 2010 127
Programmazione di
dispositivi con
programmatore UPA
UPA – Hardware
Composizione dell’hardware UPA
TMS
NEC
Adapter
Adapter
UPA
Programmer
Programmers & Devices – 2010 129
UPA – Hardware
Programmers & Devices – 2010 130
UPA – Hardware NEC/912 BDM
Programmers & Devices – 2010 131
UPA – Hardware NEC/912 BDM
Programmers & Devices – 2010 132
UPA – Hardware 912 BDM
La Motorola ha predisposto per i propri processori una
“porta di servizio” (il PIN contrassegnato con BKGD) per
effettuare il debug di tutti i sistemi in cui tali CPU sono
utilizzate. Nasce da questo concetto l'interfaccia BDM
(Background Debug Module), la quale permette di
monitorare il funzionamento del processore e tramite esso
di accedere a tutte le periferiche ad esso collegate.
Tramite questo supporto hardware ed appositi software è
possibile accedere alle memorie non volatili o flash nelle
quali è memorizzato il firmware.
Programmers & Devices – 2010 133
UPA – Hardware 912 BDM
Quale è la differenza tra la programmazione in BDM e
normale???
La programmazione in BDM è sempre possibile, mentre
quella normale in-circuit non è sempre consentita. In
particolare è possibile bloccare tale opzione con il
modulo BDM
Programmers & Devices – 2010 134
UPA – Hardware 912 BDM
ATTENZIONE!!! BDM non è sinonimo di
adattatore. Il BDM è uno strumento particolare di
riprogrammazione.
Programmers & Devices – 2010 135
UPA – Hardware TMS
Programmers & Devices – 2010 136
UPA – Hardware TMS
ATTENZIONE!!! I micro della famiglia TMS370Cx36 e
TMS370Cx42 PLCC44 richiedono degli adattatori
addizionali, non inclusi nel pacchetto UPA.
Programmers & Devices – 2010 137
UPA – Software
Menù dei
comandi
Logger
Programmers & Devices – 2010 138
UPA – Software
Avvia nuova
programmazione
Programmers & Devices – 2010 139
UPA – Software
Lista
dispositivi
Programmers & Devices – 2010 140
UPA – Software
Una volta selezionato il dispositivo si aprirà la finestra con
i menù classici di comando con il buffer.
Programmers & Devices – 2010 141
UPA – Software
Comandi
Buffer
Connessioni
Programmers & Devices – 2010 142
UPA – Software
Baud o
Frequency
Byte di
protezione
Programma
solo
modifiche
Programmers & Devices – 2010 143
UPA – Frequenza
È necessario impostare una Frequenza di funzionamento
del microcontrollore prima di qualsiasi altra operazione,
che altrimenti risulterà impossibile da effettuare
Nella serie Motorola (9)08 si parla di Baud, che è
l’analogo della frequenza. L’unica differenza sta nel fatto
che nel baud sono anche indicati i bit trasmessi ad ogni
colpo di clock.
Come detto precedentemente, la frequenza da impostare
è quella del risonatore al quarzo.
Programmers & Devices – 2010 144
UPA – Frequenza
Baud
Modalità
auto
Programmers & Devices – 2010 145
UPA – Frequenza
ATTENZIONE!!! Nella serie (9)08 è possibile settare il
baud rate in modo automatico tramite il tasto Auto baud
rate. Tuttavia questa funzione è di tipo puntuale a step
variabile.
È possibile dunque che ad esempio se si è in presenza di
un cristallo da 4000kHz, l’auto baud rate restituisca un
valore prossimo a tale frequenza (ad esempio 3840kHz).
Se si procede alla lettura del micro, in questo caso verrà
visualizzato il messaggio “Frame error”.
Programmers & Devices – 2010 146
UPA – Security byte
Programmers & Devices – 2010 147
UPA – Security byte
I security byte sono una protezione sia in lettura che in
scrittura del microcontrollore.
Se non si conosce questa sequenza di 8 byte, non è
possibile effettuare nessuna operazione.
Questa funzione è attiva solo ed esclusivamente sui
microcontrollori della serie (9)08.
È possibile riconoscere un processore protetto in seguito
ad un operazione di lettura, infatti nel buffer verranno
riportati tutti i byte al valore AD
Programmers & Devices – 2010 148
UPA – Program modified only
Questa funzione permette la riprogrammazione a settori
della sola parte modificata
Una volta attivata, tutte le modifiche al buffer verranno
riportate in rosso
Programmers & Devices – 2010 149
UPA – Program modified only
Programmers & Devices – 2010 150
UPA – Connection
Questa schermata è il cuore della riprogrammazione
con UPA.
In questa sezione vengono visualizzati i pin di
collegamento con il microcontrollore e lo stato delle
connessioni.
Nel caso di disturbi causati dal circuito, viene
segnalato il PIN da sollevare.
Programmers & Devices – 2010 151
UPA – Connection
Tensione
settata con J1 Tensioni e
pin
assegnati
Programmers & Devices – 2010 152
UPA – Connection
Programmers & Devices – 2010 153
UPA – Sintesi
Riassumendo, le fasi fondamentali per la LETTURA di un
dispositivo con programmatore UPA sono:
• Identificazione del dispositivo e connessione con cavo in
dotazione
• Scelta del dispositivo (Select Device)
• Scelta della frequenza di clock (Frequency o Baud
Rate) – solo per processori –
• Lettura (Read) – in caso di esito negativo consultare
sezione “CONNECTION” –
• Verifica (Verify) – per n volte!!! –
• Esportazione del buffer su file (Save as …)
Programmers & Devices – 2010 154
UPA – Sintesi
Invece, le fasi fondamentali per la SCRITTURA di un
dispositivo con programmatore UPA sono:
• Identificazione del dispositivo e connessione con cavo in
dotazione
• Importazione del buffer da file (Load)
• Scelta del dispositivo (Select Device)
• Scelta della frequenza di clock (Frequency o Baud
Rate) – solo per processori –
• Programmazione (Program) – in caso di esito negativo
consultare sezione “CONNECTION” –
• Verifica (Verify) – per n volte!!! –
Programmers & Devices – 2010 155