Sei sulla pagina 1di 19

MicroControllori

ZAPPA F. – ACERBI F.
Microprocessore - Microcontrollore

• 1971: INTEL 4004 - primo microprocessore single-chip a 4 bit

• 1972: INTEL 8008 - primo microprocessore a 8 bit (14 bit address bus)
Consisteva di una ALU (Arithmetic & Logical Unit) per svolgere operazioni
logiche e matematiche e di una elementare CPU (Control Processing Unit) per
controllare il flusso di dati e indirizzi tra la ALU e i circuiti esterni di supporto.

• 1975: INTEL 8048 - primo “computer system on a chip”, o “microcontrollore”,


con RAM e ROM integrate sul chip.
Ai tempi venivano venduto in due varianti: con memoria programmi in EPROM
(più costosi) e con memoria programmi PROM.

• 1993: PIC 16x84 - microcontrollore con memoria programmi in EEPROM


Prototipazioni più rapide e In-System Programming (ISP)

Microcontrollers Hardware, Firmware and Software Design 2


Microprocessore - Microcontrollore

• Il Microprocessore richiede sempre delle unità esterne - memorie, gestori


di segnali e dispositivi periferici per poter dialogare e interagire con
l'esterno.

• Il Microcontrollore è invece un sistema completo, che integra in uno stesso


chip il processore, la memoria permanente, la memoria volatile e i canali
(pin) di I/O, oltre ad eventuali altri blocchi specializzati.

Caratteristica Microcontrollore Microprocessore


Velocità massima di clock 200Mhz 4GHz
Capacità elaborativa massima in MFLOPS 200 5000
Potenza minima dissipata in Watt 0.001 50
(in stato di elaborazione[2])
Prezzo minimo per singola unità in USD 0.5 50
Pezzi venduti annualmente (in milioni) 11,000 1,000

Microcontrollers Hardware, Firmware and Software Design 3


ST6x

Microcontrollers Hardware, Firmware and Software Design 4


Microcontrollori PIC

Microcontrollers Hardware, Firmware and Software Design 5


16F84

HIGH PERFORMANCE RISC CPU FEATURES CMOS ENHANCED FLASH/EEPROM


• Only 35 single word instructions to learn TECHNOLOGY
• Operating speed: DC - 20 MHz clock input • Low power, high speed technology
• 1024 words of program memory • Fully static design
• 68 bytes of Data RAM • Wide operating voltage range:
• 64 bytes of Data EEPROM - Commercial: 2.0V to 5.5V
• 14-bit wide instruction words - Industrial: 2.0V to 5.5V
• 8-bit wide data bytes • Low power consumption:
• 15 Special Function Hardware registers - < 2 mA typical @ 5V, 4 MHz
• Eight-level deep hardware stack - 15 mA typical @ 2V, 32 kHz
• Direct, indirect and relative addressing modes - < 0.5 mA typical standby current @ 2V
• Four interrupt sources:
- External RB0/INT pin
- TMR0 timer overflow SPECIAL MCU FEATURES
- PORTB<7:4> interrupt-on-change • In-Circuit Serial Programming™ (ICSP™)
• Power-on Reset, Power-up Timer,
Oscillator Start-up Timer
PERIPHERAL FEATURES • Watchdog Timer with On-Chip RC oscillator
• 13 I/O pins with individual direction control • Code protection
• High current sink/source for direct LED drive • Power saving SLEEP mode
- 25 mA sink max. per pin • Selectable oscillator options
- 25 mA source max. per pin
• TMR0: 8-bit timer/counter with 8-bit
programmable prescaler

Microcontrollers Hardware, Firmware and Software Design 6


16F84A

18-pin
Enhanced
FLASH/EEPROM
8-Bit Microcontroller

Microcontrollers Hardware, Firmware and Software Design 7


16F877A

•ADC
•USART
•TIMERs
•Data EEPROM

Microcontrollers Hardware, Firmware and Software Design 8


PIC 16: blocchi

Microcontrollers Hardware, Firmware and Software Design 9


Program Memory

• Il µC PIC può solamente eseguire le istruzioni


memorizzate in queste locazioni. Non può in alcun
modo leggere, scrivere o cancellare quanto in esse
contenuto.

• La prima locazione di memoria, all'indirizzo zero,


deve contenere la prima istruzione che il PIC dovrà
eseguire al reset (o all’accensione) e per questo
viene nominata Reset Vector.

• Nel caso si utilizzino gli interrupt, la locazione


all’indirizzo 0004h deve contenere la prima istruzione
della routine di gestione dell’interupt. Questa
locazione viene nominata Interrupt Vector.
Vector
Quando un interrupt interrompe il programma
principale, l’esecuzione riparte da questa locazione di
memoria.

Microcontrollers Hardware, Firmware and Software Design 10


Register File

• Il REGISTER FILE è un'insieme di


locazioni di memoria RAM ovvero
memorie con cui è possibile leggere e
modificare il contenuto.

• Contrariamente alla PROGRAM MEMORY


il REGISTER FILE perde il suo contenuto
quando il PIC viene spento per cui è
necessario re-inizializzare i valori di tutte
le sue locazioni prima di poterla usare.

• Date le sue caratteristiche il REGISTER


FILE è la memoria normalmente utilizzata
per memorizzare le variabili di
programma, ovvero tutti quei valori il cui
contenuto varia durante l'esecuzione.

Microcontrollers Hardware, Firmware and Software Design 11


Register File

• Alcune locazioni del REGISTER FILE ed


in particolare quelle che si trovano agli
indirizzi più bassi (special function
register) vengono usate per il controllo
dell'hardware del PIC.

• Normalmente la locazione del REGISTER


FILE a cui accedere è contenuta nella
parola di codice (14 bit) che deve anche
contenere al suo interno l’operazione da
svolgere su quella determinata locazione.
La limitata dimensione della parola di
codice porta a un limitato range di
indirizzamento nel REGISTER FILE .
Per ovviare a tal problema si è suddiviso il
REGISTER FILE in banchi.
• Posso indirizzare soltanto lo spazio
contenuto nel banco corrente.
• Posso cambiare il banco corrente
modificando alcuni bit contenuti in un
registro particolare del REGISTER FILE.

Microcontrollers Hardware, Firmware and Software Design 12


Instruction Set
• The PIC16 instruction set is highly orthogonal and is comprised of three basic
categories:
 Byte-oriented operations
 Bit-oriented operations
 Literal and control operations

• Each PIC16 instruction is a 14-bit word divided into an opcode which specifies the
instruction type and one or more operands which further specify the operation of the
instruction.

Microcontrollers Hardware, Firmware and Software Design 13


Instruction Set

Microcontrollers Hardware, Firmware and Software Design 14


Instruction Set

Microcontrollers Hardware, Firmware and Software Design 15


Esecuzione delle istruzioni

• La iter di esecuzione di una singola istruzione è divisa in varie fasi e richiede un tempo totale per
l’esecuzione pari a 8 periodi di clock (in particolare 4 per il FETCH dell’istruzione e 4 per l’EXECUTE).
• Per velocizare l’esecuzione del codice i microcontrollori PIC utilizzano un’architettura Harvard al posto
della classica Von-Neumann. L’architettura Harvard presenta memorie separate per dati e programma
che vengono indirizzati tramite due bus distinti.
• Questa struttura permette, nella maggioranza dei casi, di ESEGUIRE una istruzione mentre si fa il
FETCH dell’istruzione successiva. Si tratta di una struttura di tipo PIPELINE a due livelli che permette di
ottenere un raddoppio del rate istruzioni/secondo.

Microcontrollers Hardware, Firmware and Software Design 16


Architetture

von-Neumann Architecture Harvard Architecture

Esempio: operazioni necessarie per


incrementare il valore di un registro.
1. Leggere la parte di programma che specifica • L’istruzione e il dato possono essere letti assieme.
l’azione da eseguire (ad esempio “incrementa il
registro”) • In una architettura Von-Neumann non posso
2. Leggere ancora per conoscere il dato sul quale conoscere a priori quanti byte occuperà il programma.
operare (ad esempio l’indirizzo del registro Nella maggior parte dei casi 1 istruzione  2 locazioni
SUM) di memoria (istruzione + dato).
3. Scrivere in memoria il risultato dell’operazione Nell’architettura Harvard 1 istruzione contiene sia
(ad esempio il valore letto e incrementato del istruzione che dato: 1 word  1 istruzione.
registro va scritto in memoria alla locazione del
registro SUM)

Microcontrollers Hardware, Firmware and Software Design 17


Istruzioni che impiegano 2 cicli

• La pipeline non funziona nel caso in cui il risultato dell’istruzione deve essere quello di modificare il
flusso di esecuzione del programma, ovvero quando l’istruzione modifica il Program Counter.
• È il caso in cui l’istruzione decide quale sarà la prossima istruzione da eseguire, come ad esempio
CALL, GOTO.

 Il fetch dell’istruzione 4 viene eseguito


durante l’esecuzione dell’istruzione 3.
L’esecuzione del firmware
 L’istruzione 3 è una Call. prosegue normalmente
 Il risultato del fetch è inutile dato che la
Call carica nel PC l’indirizzo di una
diversa successiva istruzione.
 Nel TCY4 non si esegue alcuna istruzione
(esegue una NOP).

Microcontrollers Hardware, Firmware and Software Design 18


Istruzioni che impiegano 2 cicli

Le istruzioni (in questa situazione) che durano 2 TCY sono:

CALL Classiche istruzioni di RETFIE Sono instruzioni che si


salto o di chiamata di utilizzano per tornare nel
GOTO una routine RETLW codice principale da una
sub-routine generica o da
RETURN
quella di gestione di
interrupt

Ci sono invece alcune istruzioni la cui durata dipende dall’esito di un test:

DECFSZ Incrementano o BTFSC Controllano lo stato di un bit di


decrementano un un registro. Viene saltata la
INCFSZ registro. Viene saltata BTFSS successiva istruzione a
la successiva seconda del valore del bit letto.
istruzione se il risultato
dell’operazione è 0

Microcontrollers Hardware, Firmware and Software Design 19