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.