Questione : Giusto senso realizzare l'interfaccia di GPIO

Così dobbiamo fare due microprocessori comunicare l'un l'altro.  Uno è un padrone ed uno è uno schiavo e vogliamo rispedire lo stato attuale dallo schiavo al padrone (per esempio, init, pronto, occupato, errore, ecc).  Calcoliamo che il senso più semplice fare questo è con appena le linee normali dell'ingresso/uscita (GPIO), insiemi del micro dello schiavo una o più linee, micro scrutinio del padrone loro.  il

So molto, molto modo semplice di farlo è ogni perno indica un active dello state

Pin 0: Active di Init
Pin 1: Ready
Pin 2 Busy
Pin 3 Error

However potremmo conservare GPIO facendolo con due pins

Pin 0 inattivo, il Pin 1 inattivo: Init
Pin 0 inattivo, active di Pin 1: Active di Ready
Pin 0, Pin 1 inattivo: Active di Busy
Pin 0, active di Pin 1: Error

Note questo utilizza due perni anziché 4.  Tuttavia, penso nella seconda tecnica che corriamo il rischio di cattura della transizione.  Per esempio, le prove dello schiavo alla transizione da INIT alle condizioni in modo da ad esso di ERRORE cambia il primo perno da 0 a 1, quindi cambia il secondo perno da 0 a 1.  Tuttavia, se lo scrutinio matrice fra i due cambiamenti esso leggesse 01 o 10, che è PRONTO o OCCUPATO ed esso potrebbe prendere un action.

So che la risposta è probabilmente di utilizzare un terzo perno, che indica la validità degli altri due.  Gli insiemi dello schiavo che appuntano il livello basso, quindi fa i cambiamenti, quindi che li regola al livello ancora, significando che gli altri due bit sono validi. il

So questo prenderebbe tre perni, che è ancora risparmio più dei 4 richiesti dal primo approach.

Can che ottengo ad un controllo di sanità di mente sul tutto questo?  Il secondo metodo è preferibile, di destra, se usiamo la tecnica supplementare del perno?  Quella è destra necessaria?

Thanks per qualsiasi thoughts.
class= del

Risposta : Giusto senso realizzare l'interfaccia di GPIO

Praticamente lo siete ottenuto esattamente di destra, ma metterlo un po'diversamente per voi:

1) Il vostro primo ha proposto che il metodo lo lasciasse tenersi al corrente di quattro “variabili„ discrete, ciascuno in grado di intraprendere uno dei due valori differenti (alti o livello basso). Ciò utilizza quattro perni e ci sono 16 condizioni possibili della vostra linea di bus.

2) Il vostro secondo ha proposto che il metodo lo lasciasse tenersi al corrente di una singola “variabile„ che può intraprendere uno dei quattro valori differenti (00, 01, 10, o 11). Ci sono 4 condizioni possibili alla vostra linea di bus.

Che cosa avete descritto, vestiti di metodo #2 i vostri scopi da più meglio. Se lo fate il senso #1, avrete una linea di bus che ha 16 valori possibili, ma soltanto 4 dei 16 valori possibili hanno tutto il significato a voi (0001, 0010, 0100 e 1000). Tutto altrimenti è non valido. In modo che sia uno spreco di risorse. Ecco perché voi salvo le punte della coppia facendolo il senso di metodo #2.

Ora la cosa importante da notare è che nessuna materia che il metodo voi usa, #1 O #2, voi avrà sempre “l'edizione della condizione instabile„. Ci è sempre quel tempo infinitesimal in cui il padrone sta cambiando il valore sulla linea di bus e se lo schiavo legge a quel momento esatto otterrà una lettura errata.

Avete proposto “una sincronizzazione dell'orologio pungente„ che sia il padrone che lo schiavo ripartono. Avete denominato questo la punta di validità. La punta dell'orologio è regolata dal padrone ed è letta dallo schiavo. Il padrone assicura che sul bordo aumentare dell'orologio il valore sulle punte di dati sia stabile. Lo schiavo sa per leggere le punte di dati soltanto quando l'orologio passa ad ALTO. Ciò può essere fatta direttamente in fissaggi al livello di segnale (per esempio un verilog o circuito di VHDL programmato su un FPGA), o potete farli ad un di più alto livello (per esempio un microprocessore come un bordo di Altera che ha un'interruzione di fissaggi gettata quando quella punta di sincronizzazione passa ad ALTO).

Penso così fondamentale siate completamente corretto, appena realizziate che ancora avete conservato 2 perni di gpio, non appena 1, perché anche se la avete fatta il primo senso ancora avreste avuto bisogno della punta dell'orologio di sincronizzazione.
Altre soluzioni  
 
programming4us programming4us