Settembre
Transcript
Settembre
ESD - 09/09/2013 Nome: ...............……...…..... Cognome: …….........………........... Sistema digitale con MSF Progettare con il metodo ASM il sistema digitale rappresentato nella figura. La sua funzione è di incrementare o decrementare il contatore CNT dal valore in cui si trova fino a raggiungere quello codificato nel dato seriale ricevuto. La MSF-A riceve dall’esterno la linea LN: i dati ricevuti sono costituiti da pacchetti di sette bit, sincroni con il clock del sistema (1–UP–D0–D1–D2–D3–0). 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 UP, D0, D1, D2, D3 devono essere caricati, nell’ordine in cui si presentano, rispettivamente, nei flip-flop QUP, Q0, Q1, Q2, Q3 (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 di controllare il contatore CNT. La MSF-B attende l’attivazione a “1” dell’ingresso GO e quindi, se il bit QUP è a “1”, abilita in conteggio in avanti fino a raggiungere il valore Q3..Q0; se il bit QUP è a “0”, abilita il conteggio indietro fino a raggiungere il valore Q3..Q0. Al termine dell’operazione, il valore del conteggio C3..C0 deve corrispondere esattamente a quello impostato su Q3..Q0. Durante le operazioni di conteggio, la MSF-B attiva l’uscita WT (‘Wait’); al raggiungimento del numero, la MSF-B attiva, per la durata di un ciclo di clock, l’uscita STB. CNT è un contatore sincrono, avanti/indietro, a 4 bit. L'ingresso !CL, prioritario rispetto agli altri, asincrono, quando a “0”, azzera le uscite C3..C0. L'ingresso EN, quando a “1”, abilita il conteggio, in avanti se UPD = “1”, indietro se UPD = “0”. Se EN è a zero, CNT mantiene invariate le sue uscite. Il comparatore COMP confronta il valore attuale del conteggio con quello ricevuto dalla linea LN e immagazzinato sui flip-flop Q3..Q0. Si assuma che non si possa presentare un nuovo pacchetto su LN prima che il conteggio sia terminato. 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 - 09/09/2013 Nome: ...............……...…..... Cognome: …….........………........... ESD - 09/09/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 INDATA (indirizzo: 01h) acquisisce otto linee di dato (D7...D0). I porti paralleli di uscita SER_A e SER_B (indirizzi 03h e 02h) pilotano rispettivamente due linee seriali asincrone SA e SB, che collegano il nostro sistema con due sale di supervisione remota (SA è collegata al bit 7 di SER_A; SB, invece, al bit 0 di SER_B). Un Timer attiva ogni 0,1 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 non esegue nulla, delegando il controllo del sistema al programma di interruzione. Il programma di interruzione esegue tre compiti, tra loro correlati, ma in tempi differenti: la lettura del porto INDATA, la trasmissione dei bit sulla linea seriale SA e quella su SB. Ogni 10 mS controlla se il dato presente sul porto INDATA è cambiato rispetto alla precedente lettura. Solo se il dato è cambiato, prepara due pacchetti di bit: uno sarà trasmesso in modo seriale asincrono sulla linea SA, e l’altro sulla linea SB. Invece, se il dato non è cambiato, tutto è rimandato al successivo controllo. Il pacchetto da trasmettere sulla linea SA è composto, nell’ordine, da un bit di start, seguito dai quattro bit D3,D2,D1,D0 letti sul porto INDATA, e infine un bit di stop (il tempo di bit per la linea SA è pari a 0,1 mS). Il pacchetto da trasmettere sulla linea SB è composto, nell’ordine, da un bit di start, seguito dai quattro bit D4,D5,D6,D7 letti sul porto INDATA, e infine un bit di stop (il tempo di bit per la linea SB è pari a 0,5 mS). Il formato dei due pacchetti è rappresentato nella figura: si faccia attenzione all’ordine di trasmissione dei bit nei due casi. Nota: Il programma principale è eseguito automaticamente al RESET del sistema.