Diagramma ASM ed implementazione VHDL Muller C-element

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

Avatar utente
Foto Utentefrankj
0 2
Messaggi: 8
Iscritto il: 14 set 2013, 12:14
0
voti

[1] Diagramma ASM ed implementazione VHDL Muller C-element

Messaggioda Foto Utentefrankj » 14 set 2013, 17:42

Salve,
non so se sia la sezione giusta...nel caso mi scuso in anticipo....ma dovrei fare il diagramma ASM e una implementazione VHDL dell'elemento C di muller...ma non riesco proprio a capire come strutturare il diagramma ASM #-o

la specifica dell'elemento c di muller è la seguente:

IN | OUT
a b |Y
00 |0
01 |Y(n-1)
10 |Y(n-1)
11 |1

grazie in anticipo

Avatar utente
Foto UtenteDrCox
2.738 2 8 12
Master EY
Master EY
Messaggi: 744
Iscritto il: 8 giu 2010, 21:42
1
voti

[2] Re: Diagramma ASM ed implementazione VHDL Muller C-element

Messaggioda Foto UtenteDrCox » 14 set 2013, 18:53

Innanzitutto va fissata una condizione iniziale. Se infatti all'inizio ti ritrovi subito come ingresso "10" oppure "01", quale valore considerare per Y_{n-1}? Ti ritroveresti un valore undefined.
Tale situazione può essere evitata in due modi:
- ipotizzare che il primo ingresso non possa mai essere "01" oppure "10"
- "resettare" il dispositivo, ovvero utilizzare un segnale di reset per forzare l'uscita ad esempio a 0 (senza introdurre ulteriori segnali al dispositivo, potresti inserire dei multiplexer prima degli ingressi A e B di modo che, quando si dovesse resettare il tutto, vengano selezionati valori forzanti pari a 0. Oppure il multiplexer potresti metterlo direttamente prima dell'uscita, senza andare a toccare gli ingressi e forzando lo zero direttamente come output)


Vediamo di strutturare una ASM chart.
Indichiamo con IN1 ed IN2 i registri in cui andare a scrivere gli ingressi da dare al dispositivo.
Indichiamo con OUT il registro in cui scrivere l'uscita.

STATO INIZIALE:
IN1 <= A; IN2 <= B;
OUT <= 0;

(non possiamo fare subito il test su IN1 ed IN2, in quanto impiegheranno un ciclo prima di essere scritti).

STATO1 (iniziamo ad elaborare)
IN1 <= A; IN2 <= B;

COMPARAZIONE:
A == B ? se si, vai a stato 2, se no vai a stato 3

STATO2
IN1 <= A; IN2 <= B;
OUT <= IN1 (o equivalentemente OUT <= IN2)
(nota che il valore IN1 che viene scritto è quello memorizzato allo stato precedente, non quello che stiamo memorizzando concorrentemente in questo medesimo stato)

[fai ritorno alla comparazione precedente]

STATO3
IN1 <= A; IN2<= B;
OUT <= OUT

[fai ritorno alla comparazione precedente]


_______________________________________________________


A questo punto lo schema dovrebbe essere semplice:

gli ingressi vanno rispettivamente sui registri IN1 ed IN2.
Le uscite di questi registri IN1 ed IN2 passano attraverso un comparatore.
L'uscita di IN1 va anche in un multiplexer1.
Il secondo ingresso del multiplexer1 sarà l'uscita del registro OUT.
L'ingresso di OUT è l'uscita del multiplexer2, il quale avrà due ingressi: l'uscita di multiplexer1 e la costante 0. Come segnale di selezione di multiplexer2 avrai il segnale di reset.
Come segnale di controllo del multiplexer1 può essere usata direttamente l'uscita del comparatore posta in N
"The past is not really the past until it has been registered. Or put another way, the past has no meaning or existence unless it exists as a record in the present."
John Archibald Wheeler


Torna a “Elettronica generale”