periferiche di timing. periferiche di timing i sistemi digitali sono caratterizzati dalla presenza...
TRANSCRIPT
PERIFERICHE DI TIMING
Periferiche di timing
• I sistemi digitali sono caratterizzati dalla presenza di un elaboratore, il processore, attorno a cui si distribuiscono altri dispositivi quali memorie e periferiche.
• Le periferiche rappresentano una serie di componenti collegati al processore che adempiono a compiti precisi e specifici in modo ottimale.
• Fra le periferiche di maggior interesse spiccano quelle di “timing”, che possono presentarsi sia come dispositivi “stand alone” (“off-the-shelf”), sia come dispositivi embedded, integrate su silicio assieme al processore (”on-chip”).
• Fra le periferiche di timing si analizzeranno: - timers - contatori - altri timer (interval timers, cascaded counters, timer con prescaler, watchdog
timers).
Timers
• Sono dispositivi che misurano lo scorrere del tempo o intervalli di tempo.
• Possono essere utilizzati per generare eventi ad intervalli di tempo specifici o per determinare l’intervallo di tempo che intercorre fra due eventi esterni, contando gli impulsi di un segnale di clock, avente periodo noto, in ingresso.
• Esempio di timer elementare realizzato da un contatore a 16 bit di tipo ‘up’.
• Il contatore quindi viene incrementato ad ogni impulso di clock (Clk).
• Cnt rappresenta il numero di impulsi di Clk contati dall’ultimo reset.
• I parametri caratteristici di un timer sono: – il range, cioè il massimo intervallo di tempo che il timer è in grado di
misurare; – la risoluzione, cioè il minimo intervallo che può misurare.
• Top indica il raggiungimento del massimo valore del contatore (va a 1 quando il contatore viene resettato).
Counters
• Si tratta di dispositivi che contano il numero di impulsi che si presentano in ingresso. A differenza dei timer non contano impulsi di clock ma eventi esterni.
• Contatore asincrono binario (uscita in forma binaria) a 4 bit (conta fino a ‘1111’).
• Realizzato utilizzando 4 stadi di flip-flop JK connessi in cascata.
• Gli ingressi J e K sono forzati a ‘1’: i flip-flop possano commutare lo stato ogni volta che un evento (impulso) si verifica.
• Asincrono, poiché i suoi flip-flop non ricevono l’impulso di temporizzazione simultaneamente (limitazione in velocità).
• Contatore sincrono binario a 4 bit.• Tale struttura permette la
temporizzazione contemporanea dei 4 flip-flop.
• Per questa regione prende il nome di contatore sincrono.
Timer/Counter
• Timer e contatori circuitalmente sono sinonimi.• E’ possibile concepire quindi un circuito che possa fungere da timer o da
contatore, aggiungendo ad un contatore a 16 bit un registro ad 1 bit ed un multiplexer .
• Clk è un impulso di clock.
• Cnt_in è un impulso esterno.
• Mode seleziona tramite il multiplexer l’input del contatore.
• Tramite il registro Mode tale dispositivo può essere programmato dall’utente.
• Clk_counter=Clk: il dispositivo funziona da timer, e conta gli impulsi di clock;• Clk_counter=Cnt_in: il dispositivo funziona da contatore, e conta gli impulsi su
Cnt_in.
Intel 8253 - 1
• L’Intel 8253 è un dispositivo programmabile “stand-alone”, progettato per essere utilizzato come periferica di timing per microcomputer Intel.
• Utilizza la tecnologia nMOS.• Package DIP a 24 pin.• Consta di tre contatori/timer
indipendenti da 16 bit di tipo ‘down’, ciascuno con una frequenza di conteggio superiore a 2Mhz.
• Sei modalità timer programmabili.• Data bus buffer: contiene la logica per il
trasferimento dei dati con il processore (bus a 8 bit) e con i registri interni (attraverso il bus interno).
• Read/Write logic: gestisce la lettura e scrittura dei registri di conteggio (A1 e A0 indicano quale dei 3 contatori leggere o scrivere).
• Control word register: contiene la parola di controllo (bit [D7…D0]) che il microprocessore invia al dispositivo per la sua programmazione.
Intel 8253 - 2• I bit [D7-D0] definiscono la parola di controllo con cui il processore programma l’8253.
• Mode 0: il contatore viene programmato ad un valore iniziale da cui inizia a contare fino a 0: quindi il relativo pin OUT va a 1 fino a nuovo conteggio o parola di controllo.
• Mode 1: come mode 1, ma il conteggio inizia al fronte di salita del segnale GATE. Durante il conteggio il segnale GATE è ignorato.
• Mode 2: dopo l’attivazione del conteggio, OUT resta alto finché il contatore non raggiunge 1, e quindi va a 0 per un solo impulso di clock.
• I bit D7 e D6 definiscono quale dei 4 contatori selezionare e programmare.
• I bit D5 e D4 indicano se, nel contatore selezionato, viene letto o caricato il byte più o meno significativo o entrambi.
• I bit D3, D2 e D1 settano la modalità di funzionamento dei contatori.
• Mode 3: come mode 2, ma OUT è alto per metà del periodo e bassa per l’altra metà.• Mode 4: all’attivazione del conteggio OUT resta alto finché il contatore non raggiunge 0,
quindi OUT va a 0 per un solo periodo di clock dopo di che ritorna alto.• Mode 5: come mode 4, ma il conteggio inizia quando GATE viene triggerato.
• Il bit D0 definisce se il conteggio è binario o decimale.
Microcontrollore ADuC836 - 1• Esempio di periferiche di timing “on chip”: microcontrollore ADuC836 di
Analog Devices.
• Basato su un core 8052 (Intel).• Tre timer/contatori a 16 bit. • Un watch-dog timer. • Un wake-up/RTC timer. • Ogni timer/contatore è
costituito da 2 registri ad 8 bit (THx e TLx, x=0,1,2) e può operare in quattro differenti modi (codificati da 2 “timer mode select” bit).
• In funzionamento timer, TLx viene incrementato ad ogni ciclo macchina.
• In funzionamento counter, vengono campionati i pin T0, T1, T2 (in base al timer).
Microcontrollore ADuC836 - 2• Modi del Timer 0: sono codificati dai bit 0 e 1 del registro TMOD.
• Mode 00: TH0 timer/counter ad 8 bit, TL0 prescaler (divisore del clock) a 5 bit.
• T0: input per il timer in modalità Counter.• INT0: utilizzato per attivare il Timer.• C/T: (bit 2 di TMOD) seleziona se counter o timer.• TR0: attiva il timer/counter (control). • GATE=0: si attiva il conteggio settando TR0.• GATE=1: si attiva il conteggio se TR0=1 e P3.2=1.• TF0: bit 5 di TCON, viene settato dall’hardware
quando si ha overflow, quindi genera un interrupt.
• Mode 01: funzionamento e schema analoghi al mode 00, con la differenza che il timer/counter è a 16 bit (TH0 e TL0 in cascata entrambi a 8 bit).
• Mode 10: TL0 è un timer/counter ad 8 bit con reload.
• Il valore di reload è programmato in TH0 e caricato in TL0 ad ogni overflow.
• L’overflow di TL0 setta TF0 (interrupt).• TH0 viene settato via software ed il suo contenuto non
viene modificato dall’overflow.
Microcontrollore ADuC836 - 3
• Mode 11: TL0 è un timer/counter ad 8 bit pilotato da TR0, TH0 è un timer ad 8 bit pilotato dai bit di controllo del Timer 1, quindi da TR1.
• Con Timer 0 in mode 3 si hanno 3 timer/contatori: timer TH0, timer/counter TL0 e il timer/contatore del Timer 1, che può funzionare a sua volta in mode 0, 1, 2.
• Modi del Timer 1: coincidono con quelli del Timer 0. Sono codificati dai bit 4 e 5 del registro TMOD. In mode 3, timer 1 mantiene il valore del registro, ma è disabilitato. Gli altri bit di Timer 1 servono per pilotare Timer 0.
• Modi del Timer 2:
• Timer/counter a 16 bit con “autoreload”: un segnale esterno può attivare il reload. • Timer/Counter a 16 bit con Capture: un segnale esterno provvede a trasferire il valore del
counter in due registri ad 8 bit. • Baud Rate generator per UART: può essere configurato per temporizzare i segnali di Rx e/o
Tx della UART.
Altri timers - 1• Interval timer: misura un intervallo di tempo.
• Si azzera e genera il segnale Top quando il timer raggiunge un valore assegnato.
• Se il valore del contatore è uguale a Terminal count, si resetta il timer generando un segnale su Top.
• Comparatore a 16 bit e registro programmabile (Terminal count) a 16 bit.
• Realizzazione alternativa: si utilizza un NOR a 16 bit (rileva tutti 0 sui 16 bit) in luogo del comparatore, e un contatore down.
• Number of clock cycles=Desired time interval/Clock period.
• Cascaded counters: connettendo in cascata più contatori si ottiene un modulo con capacità di conteggio maggiore.
• La struttura risulta quindi nel complesso seriale, quindi asincrona.
Altri timers - 2• Timer con prescaler: il prescaler è un circuito divisore di clock configurabile, in
grado quindi di abbassarne opportunamente la frequenza.
• Si utilizza quando si vuole campionare un segnale di clock ad una frequenza estremamente alta (più alta di quella che il timer può sopportare).
• Genera un impulso di clock ogni n impulsi ricevuti dal clock d’ingresso (“divide-by-n”).
• Il valore del registro Mode determina il valore della divisione: - Mode=0, Freq_out=Freq_in; - Mode=1, Freq_out=½Freq_in; - Mode=2, Freq_out=¼Freq_in; - Mode=3, Freq_out=1/8Freq_in.• Esempio: il timer è a 16 bit, la frequenza di clock è di 100MHz (10ns), quindi il
timer ha risoluzione di 10ns e range di 655.35μs. Se si attiva il prescaler con Mode=3 il timer ha risoluzione di 80ns, il range è 65535*80ns=5.24ms.
• Watchdog timer: nella sua forma più semplice è un contatore.
Altri timers - Watchdog timer - 1
• Quando tale contatore va in overflow, allora il watchdog porta alto il segnale di RESET del sistema e quindi il controllore si resetta.
• In condizioni di funzionamento normale, il codice che il controllore elabora azzera periodicamente il contatore del watchdog, quindi quest’ultimo non va in overflow (“watchdog hit”).
• Quando il controllore entra in un loop infinito, o commette errori nell’elaborazione di sequenze di istruzioni, il controllore fallisce la hit: quindi il watchdog va in overflow resettando di conseguenza il controllore.
• Il controllore grazie al reset può quindi tornare a funzionare correttamente, elaborando il codice.
Altri timers - Watchdog timer - 2
• Un watchdog timer può essere implementato utilizzando elementi discreti.
• Timer LMC555, che fa da oscillatore.• Contatore 74HC161. • Il blocco “Edge Detector” è utile affinché la linea di reset del watchdog sia
sensibile solo alle transizioni. • Soluzione costosa e che richiede molto spazio “on-board”.
Altri timers - Watchdog timer - 3
• Una implementazione più integrata è il “dedicated supervisor chip”: composto da - blocco monitoraggio della potenza; - blocco di generazione del reset; - blocco watchdog; - batteria di ripristino per lo spegnimento e SRAM.
• Un esempio di tale chip è l’ ADM691 di Analog Devices.
• Due periodi di timeout, uno lungo e l’altro corto (la differenza fra i due periodi è di un fattore pari a 3).
• L’iniziale timeout lungo sul watchdog garantisce al controllore o processore di teminare le necessarie inizializzazioni (variabili, stack, frame) e far partire le applicazioni.
• Quando il codice è ormai in esecuzione, azzererà periodicamente (hit), in condizioni di funzionamento corretto, il contatore prima di un suo overflow.
• Quando ciò avviene il watchdog si accorge che il codice sta girando correttamente e quindi passa ad un periodo di timeout corto.
• In generale i watchdog timer sono utilizzati nei sistemi embedded per garantire affidabilità riguardo errori software e hardware.