Appello 18.12.07 - esercizio D1

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
michele78.
00mercoledì 19 dicembre 2007 19:55
Tentativo...
E’ davvero dura trovare un’ altra soluzione dopo aver visto quella del Prof!!!
Ma sinceramente, in un primo momento sarei partito senza i due registri, salvo poi, come mi è successo, rendermi conto della partenza falsa. E avendo un po’ di tempo, mi sono cimentato a trovare una soluzione, ma più di questo “obbrobrio” non ho saputo fare.
Spero si capisca qualcosa, almeno l’ idea di fondo.

1) si potrebbe eliminare un registro, pilotando R verso X,Y con due tristate abilitati da altrettanti segnali di controllo.

2) La macchina sequenziale è sincronizzata su SYSCLK, quindi dovrò inserire un segnale di CLR che mi resetta il Counter nel momento in cui faccio entrare X,Y nel modulo.

Dopo il segnale Start azzero il Counter e abilito OEPx,y in modo da partire subito con il primo confronto aspettando 32 SYSCLK sullo stato 1;

se R=0 mi restituisce il valore Y, abilitando OEPy
se R=1 mi restituisce Z=1, abilitando XYE, RYE
se R<>0,1 per sostituire X,Y con Y,R abilito OEPy che mi entra in X, e contemporaneamente prelevo R e la posto in Y abilitando RYE.
Qui i problemi per pilotare R e Y sono tanti, non so se è giusto il meccanismo dei tristate che ho pensato.
Nello stato 2 aspetto i 32 CK e rifaccio la verifica, ma stavolta se R<>0,1 devo stare attento a pilotare la Y “passata” su X (quindi prima abilito RXE) e R verso Y “presente” (quindi abilito XYE e lo mando in uscita con RYE).
N.B. Il problema è che sul modulo si presenta prima la X e poi la Y, quindi per funzionare si dovrebbe poter azionare il Modulo quando ad esempio attivo CLR per azzerare il counter e il modulo deve poter sovrascrivere in entrata i dati se ancora non è abilitato ad eseguire le operazioni.


------------------------------------------------------------------

P.S.
Nella soluzione del prof. La transizione A->C con R=1 non dovrebbe abilitare OER e non OEP, così da mandare in uscita R=1 e non Y?
pma
00mercoledì 19 dicembre 2007 21:54
C'è un difetto di fondo, nella sua soluzione: se avviene più di una sostituzione (X,Y) <- (Y,R), il resto R generato in corrispondenza della prima viene perso (poiché non viene immagazzinato da nessuna parte, salvo il latch in basso, che però è temporaneo). Mettiamoci dal punto di vista del modulo REM, chiamiamo X(0), Y(0) i valori originali e assegniamo degli indici a seconda della iterazione in cui i resti vengono generati:

Fase 1: X(0) -> X, Y(0) -> Y, R = R(1)
Fase 2: Y(0) -> X, R(1) -> Y, R = R(2)
Fase 3: R(1) -> X, R(2) -> Y, etc

ma alla fine della fase 2 il latch contiene R(2), mentre R(1), che alla fase successiva dovrebbe finire sull'ingresso X, adesso non c'è più, perché appunto sostituito da R(2) nel latch. Occorre tener presente, che, in iterazioni successive, un resto R generato all'iterazione n-esima deve essere applicato due volte al modulo REM, un prima volta come operando Y nell'iterazione (n+1)-esima e una seconda volta come operando X nell'iterazione (n+2)-esima.

Quanto alla sua osservazione sulla transizione A -> C nella soluzione pubblicata: no, perché nello stato A (quindi, in una macchina di Mealy, su tutti i rami uscenti dallo stato A) devono comunque essere abilitate le uscite dei due latch-porte; nella transizione da A -> C, essendo attivo XIE, il valore 1 viene trasferito nell'Y-Register (incorrettamente, questo sì, chiamato nel disegno X-Register) e reso disponibile sul bus nello stato C (che si differenzia dallo stato D solo per quale sorgente, latch-porta o registro, viene avviato all'IODB).

Ma lei l'esame lo ha già fatto, com'è che ancora rimugina sui progetti? Non mi dica che la materia comincia ad appassionarla!
michele78.
00mercoledì 19 dicembre 2007 23:41
Re:
pma, 19/12/2007 21.54:

C'è un difetto di fondo, nella sua soluzione: se avviene più di una sostituzione (X,Y) <- (Y,R), il resto R generato in corrispondenza della prima viene perso



si l' avevo pensato, per questo ho scelto di sincronizzare su SYSCLK e non su ICLK, pensando che il modulo mi generasse un nuovo resto dopo 32 SYSCLK quindi ho il tempo (3 cicli SYSCLK) di trasferire il primo resto R(1)->Y e confrontarlo con Y(0)->X (fase di avvio); in seguito (e qui forse ho preso la cantonata) ho visto il latch di appoggio in grado di mantenere su Q lo "stato presente" e su D lo "stato futuro" così da mantenerlo in entrata gestendo l'Enable e farlo uscire su Q solo dopo aver trasmesso Q!!![SM=g8077] (Dagli Appunti Parte 2 cit. "il Latch funziona come un FF quando G=1; altrimenti ricorda l'ultimo stato (commutazione inibita)")


perché nello stato A (quindi, in una macchina di Mealy, su tutti i rami uscenti dallo stato A) devono comunque essere abilitate le uscite dei due latch-porte; nella transizione da A -> C, essendo attivo XIE, il valore 1 viene trasferito nell'Y-Register (incorrettamente, questo sì, chiamato nel disegno X-Register) e reso disponibile sul bus nello stato C (che si differenzia dallo stato D solo per quale sorgente, latch-porta o registro, viene avviato all'IODB).


Perfetto, ci sono. Però il mio dubbio è che mandando IIRQ sul fronte i-esimo di ICLK e rendendo disponibile Z su i+1-esimo, quindi passano 32 SYSCLK, e il clock della CPU è sicuramente più veloce, il PD32 può richiedere il dato prima che sia disponibile.


Ma lei l'esame lo ha già fatto, com'è che ancora rimugina sui progetti? Non mi dica che la materia comincia ad appassionarla!


Beccato [SM=g8080]
ormai in due giorni è impossibile ripetere tutto il programma, e quindi, prima di iniziare a piantare antenne (almeno sulla carta, mi riferisco alla mia tesi), passo il tempo a cimentarmi con i progetti.
Comunque non voglio entrare nel solito discorso del tempo che bisogna dedicare a questo esame, ma è vero che più si entra nella materia e più piace.
pma
00giovedì 20 dicembre 2007 02:44
Re: Re:
michele78., 12/19/2007 11:41 PM:

Perfetto, ci sono. Però il mio dubbio è che mandando IIRQ sul fronte i-esimo di ICLK e rendendo disponibile Z su i+1-esimo, quindi passano 32 SYSCLK, e il clock della CPU è sicuramente più veloce, il PD32 può richiedere il dato prima che sia disponibile.


Questo non è possibile: IIRQ non è la richiesta di interrupt! Esattamente sullo stesso fronte di clock che trasferisce IIRQ su IRQ attraverso il flip-flop JK, e che cambia lo stato da A a C, viene anche trasferito R=1 entro Y-Register e da qui reso immediatamente disponibile su IODB: la CPU non può reagire prima di ricevere l'interrupt!
michele78., 12/19/2007 11:41 PM:

Comunque non voglio entrare nel solito discorso del tempo che bisogna dedicare a questo esame, ma è vero che più si entra nella materia e più piace.


È proprio questo il vero, autentico dramma di un corso compresso in due mesi...
michele78.
00giovedì 20 dicembre 2007 11:18
Re: Re: Re:
pma, 20/12/2007 2.44:


Questo non è possibile: IIRQ non è la richiesta di interrupt! Esattamente sullo stesso fronte di clock che trasferisce IIRQ su IRQ attraverso il flip-flop JK, e che cambia lo stato da A a C, viene anche trasferito R=1 entro Y-Register e da qui reso immediatamente disponibile su IODB: la CPU non può reagire prima di ricevere l'interrupt!


Ok, perfetto, adesso mi è tutto chiaro. Stavo ragionando senza avere lo schema completo davanti, e stavo dimenticando il FF-JK, e come giustamente mi ha fatto notare leggendomi nel pensiero, consideravo IIRQ come IRQ[SM=g8077] ...mi rimangio tutto...perfetto sincronismo [SM=g8119]


È proprio questo il vero, autentico dramma di un corso compresso in due mesi...


La ringrazio per il tempo che ci dedica (2.44 è impressionante [SM=g8091] ), ma questo Le assicuro rende il dramma meno dramma.
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 02:15.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com