Giugno

Transcript

Giugno
ESD - 10/06/2013
Nome: ...............……...…..... Cognome: …….........………...........
Sistema digitale con MSF
Progettare con il metodo ASM il sistema digitale rappresentato nella figura, un temporizzatore: il sistema attiva
l’uscita OUT per il numero di cicli di clock impostato tramite l’ingresso seriale LN.
La MSF-A riceve dall’esterno la linea LN: i dati ricevuti sono costituiti da pacchetti di sette bit, (1–T0–T1–T2–T3–
DB–0), sincroni con il clock del sistema. Ogni bit ha la durata di un periodo di clock. I pacchetti iniziano sempre
con il primo bit a "1" (bit di start) e terminano con il settimo bit a "0" (bit di stop).
I bit T0, T1, T2, T3, DB devono essere caricati, nell’ordine in cui si presentano, rispettivamente, nei Flip-Flop Q0,
Q1, Q2, Q3, Q4 (di tipo E-PET). Se il pacchetto seriale è ricevuto correttamente, la MSF-A attiva l’uscita GO per
un periodo di CK; altrimenti, se il bit di stop non è corretto, genera l’uscita ERR mentre attende che LN torni a
zero. Infine, la MSF-A ritorna in attesa di un nuovo dato.
La MSF-B ha il compito, ogni volta che riceve il segnale GO, di attivare ad uno l’uscita OUT per un numero di cicli
di clock uguale al valore del numero binario T3T2T1T0. Se DB è a uno, la MSF-B, genera OUT di durata doppia.
CNT è un contatore sincrono, indietro, a 4 bit. L'ingresso !CL, prioritario rispetto agli altri, asincrono, quando a
‘0’, azzera le uscite C3..C0. L'ingresso LD, sincrono e attivo alto, carica sulle uscite C3..C0, al fronte di salita del
clock CK, i valori impostati sugli ingressi P3..P0. L'ingresso EN, quando a ‘1’, abilita il conteggio. Se EN è a zero,
CNT mantiene invariate le sue uscite.
La durata di OUT è determinata dal contatore CNT: la MSF-B carica nel contatore il dato ricevuto nei Flip-Flop
Q3..Q0. La generazione di OUT termina a seguito dell’attivazione della linea CP del comparatore COMP: tramite
gli ingressi TC3..TC0 è possibile impostare il numero per il quale si attiva CP, in modo che la durata di OUT
corrisponda esattamente a quella richiesta dalle specifiche. Indicare il valore di TC3..TC0 scelto per il proprio
progetto.
Si chiede:
1. Il diagramma ASM delle due MSF (indicare lo stato di Reset per entrambe);
2. Il diagramma temporale che descrive il funzionamento del sistema progettato, completando la figura allegata
nella pagina successiva (indicare lo stato in cui si trovano le MSF in ogni periodo del clock).
ESD - 10/06/2013
Nome: ...............……...…..... Cognome: …….........………...........
ESD - 10/06/2013
Nome: ...............……...…..... Cognome: …….........………...........
Microcomputer
In figura è rappresentato l’hardware di un sistema basato
sul microprocessore DMC8, configurato con 32 Kbytes di
ROM, 32 Kbytes di RAM, e i dispositivi di I/O
rappresentati in figura.
Il porto parallelo di ingresso BUTTONS (indirizzo: 00h)
acquisisce otto pulsanti (B7...B0).
I tre porti paralleli di uscita LEDNOW, LEDPREV1 e
LEDPREV2 (indirizzi: 00h, 01h, 02h) pilotano ciascuno
un insieme di 8 LED.
Un Timer attiva ogni 20 mS la linea di richiesta di
interrupt !INT del processore: all’accettazione della
interruzione, la risposta del processore !INTA disattiva in
modo automatico la linea !INT.
Si chiede di scrivere, in linguaggio assembly, il
programma di gestione del sistema, rispettando le
specifiche riportate qui di seguito.
Il programma principale esegue le necessarie
inizializzazioni al RESET hardware, e quindi entra in un
ciclo infinito nel quale si occupa di aggiornare
continuamente i porti di uscita LEDNOW, LEDPREV1,
LEDPREV2, come specificato nel seguito.
Il programma di interruzione, ogni 20 mS, esegue la
lettura dello stato degli otto pulsanti, effettuando un
controllo anti-rimbalzo sullo stato degli stessi,
verificando che la configurazione letta sul porto dei
pulsanti sia identica a quella letta la volta precedente.
Se questo è verificato, lo stato dei pulsanti è
convalidato.
Più pulsanti possono essere contemporaneamente
premuti; a riposo, forniscono un livello alto sulla
corrispondente linea del porto. Il sistema controlla se la
configurazione dei pulsanti ora convalidata è cambiata
rispetto a quella precedentemente convalidata.
In particolare, il programma controlla se uno o più
pulsanti, dopo essere stati premuti, sono stati rilasciati,
ossia se sono stati osservate (a valle della eliminazione
dei rimbalzi), una o più transizioni in salita sulle linee
B7...B0 del porto BUTTONS.
Al rilascio di un determinato pulsante, quindi, il programma esegue l’inversione del corrispondente bit nella
variabile a 8 bit NOW, delegando il programma principale alla sua visualizzazione sul porto LEDNOW (per fare un
esempio, il rilascio del pulsante B3 produce l’inversione, nella variabile, del bit in posizione 3 della variabile
NOW).
Se il programma di interruzione modifica la variabile NOW, il suo valore precedente è trascritto nella “storia dei
valori”, rappresentata nelle due variabili PREV1 e PREV2.
La prima, PREV1, memorizza il valore assunto da NOW prima dell’ultimo cambiamento, mentre la seconda,
PREV2, contiene il valore assunto da NOW ancora in precedenza.
Le locazioni NOW, PREV1 e PREV2 sono poi ricopiate dal programma principale nei porti di uscite LEDNOW,
LEDPREV1 e LEDPREV2.
Nota: Il programma principale è eseguito automaticamente al RESET del sistema.