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.