Domanda:
In che modo un latch determina il suo stato iniziale?
Lightyear Buzz
2012-01-25 08:12:54 UTC
view on stackexchange narkive permalink

In che modo un latch ottiene il suo stato iniziale? Immagino che dipenda dalle condizioni di gara e quale condizione si verifichi per prima, questo è lo stato con cui inizia il latch.

La domanda del titolo è troppo ampia per generare una singola risposta, quindi probabilmente non è adatta a questo sito. La tua (valida) domanda tecnica è praticamente un duplicato di un'altra domanda di oggi: http://electronics.stackexchange.com/questions/25581/sequential-circuits
Sì, ma le risposte a quella domanda non erano così istruttive come quelle di seguito e non sono sicuro che troppe domande abbiano una singola risposta che è evidenziata in parte dall'avere un sito come questo in primo luogo. Sono d'accordo però che questo potrebbe essere un po 'troppo ampio, ma con tutte le altre utili domande generali su questi siti ho pensato che fosse meglio pubblicare questa domanda sia per gli altri che per me.
Se modifichi la domanda per includere solo la parte tecnica (2 ° paragrafo), rimuoverò il mio voto negativo.
** Abbastanza per re-insegnare a se stessi rapidamente un concetto dimenticato. ** O per insegnare a se stessi un nuovo concetto allo stesso modo. A meno che non si verifichi un cambio di paradigma, i fondamentali sono rilevanti e la maggior parte dei cambiamenti (pratici) nella tecnologia sono abbastanza marginali da tenere il passo.
Non esiste una risposta giusta a questa domanda. Se la comunità vuole davvero che questa domanda rimanga aperta, allora dovrebbe almeno essere un wiki della comunità.
@ThePhoton, La domanda collegata sembrava un sostituto scadente, ho tentato di resuscitare questo post per essere più tecnicamente orientato, ma ha già alcune risposte piuttosto votate in base alla metà della sezione che ho modificato.
Cinque risposte:
user3624
2012-01-25 08:51:37 UTC
view on stackexchange narkive permalink

Ci sono sicuramente molte cose insegnate a scuola che non sono richieste nel mercato del lavoro. E, naturalmente, c'è molto che non viene insegnato che dovrebbe essere. Questo probabilmente si potrebbe dire su qualsiasi mercato del lavoro, poiché dipende dalla specialità in cui la persona finisce per essere impiegata. Sfortunatamente per te, né i tuoi professori né io possiamo dirti cosa utilizzerai e non utilizzerai una volta ottenuto un vero lavoro il tuo campo.

Ad esempio, non utilizzo il calcolo nel mio lavoro di EE, ma un collega, che è anche tecnicamente un EE, utilizza il calcolo quasi quotidianamente. Progetto PCB e FPGA, mentre scrive algoritmi DSP. Non c'era modo che i nostri insegnanti avrebbero mai potuto sapere di cosa avevamo bisogno per portare a termine il lavoro.

Detto questo ... La tua domanda al tuo insegnante, sul valore iniziale del latch o del Flip Flop (FF ), era un'ottima domanda e il modo in cui la tua professoressa ha risposto mostra la sua ignoranza dei requisiti per la progettazione di circuiti logici digitali pratici.

In poche parole, il valore iniziale di un Latch o FF è indeterminato. Significa che avrà un valore iniziale ma non saprai in anticipo quale sia. Un determinato latch / FF potrebbe anche avere valori iniziali diversi da un'accensione all'altra. A volte sarà uno "0", altre volte un "1". Cose come la temperatura e la velocità con cui le rotaie di alimentazione aumentano influenzeranno il valore iniziale.

Se il tuo circuito richiede un valore iniziale noto, devi forzare il valore. Normalmente questo viene fatto utilizzando una sorta di ingresso di impostazione / ripristino / cancellazione pilotato da un segnale di ripristino. Questo è anche il motivo per cui quasi tutti i circuiti digitali di ragionevole complessità hanno un segnale di ripristino. I segnali di ripristino non sono solo per le CPU.

Nei miei studi ho imparato molte cose che non mi servivano strettamente in seguito nella mia vita professionale, ma che mi sono state comunque molto utili. Una parte importante di un'istruzione è "imparare a imparare".
Non sai mai cosa avrai bisogno di sapere. Ho conseguito la laurea in scienze economiche negli anni '60. Ricordo di aver frequentato corsi come radio a microonde, e all'epoca pensavo che lavorerò con sistemi digitali e non userò mai nessuna di queste cose (all'epoca, il microonde era usato principalmente dalla compagnia telefonica per i ripetitori radio a lunga distanza ). Ora, 40+ anni dopo, sto lavorando su sistemi embedded, tutto è wireless e sto installando antenne microstrip su un PCB.
@davidKessner, Ho pensato che in alcune delle condizioni di gara fosse davvero importante come si caricava il tuo power rail. Una carica molto veloce poteva portare a una cosa, mentre una carica lenta un'altra, ma avevi bisogno di una caratterizzazione di qualità molto buona delle tue porte. Questo da solo renderebbe il processo un po 'inutile per qualsiasi dispositivo reale in cui un pin di ripristino funziona facilmente, con poco design e bassa complessità.
Oli Glaser
2012-01-25 11:04:38 UTC
view on stackexchange narkive permalink

Se intendi all'accensione (prima del ripristino), allora è più o meno come dici: i cancelli nella FF non saranno perfettamente simmetrici, quindi uno "vincerà" la gara e il fermo si dirigerà verso quello stato. Quale stato sarà è imprevedibile.

È un po 'come se bilanci una palla in cima al tetto di una casa a punta: in teoria, se tutto fosse perfettamente fermo, dovrebbe rimanere lì. In pratica rotolerà sempre da una parte o dall'altra.

Quindi questo è il motivo per cui all'accensione, la maggior parte dei circuiti digitali deve essere ripristinata a uno stato noto (dove è necessario che lo stato sia conosciuto inizialmente, devi lasciare alcuni registri indefiniti / inutilizzati finché non vengono scritti per la prima volta)

smallbee
2012-01-25 08:49:39 UTC
view on stackexchange narkive permalink

Immagino che dipenda da quale latch stai parlando.

http://en.wikipedia.org/wiki/Latch_%28electronics%29

Alcuni dei latch possono essere ripristinati, quindi sai da dove iniziare. Penso anche che stesse solo cercando di dimostrare il concetto di stato "invariato" / "mantenimento" , non importa quale sia lo stato precedente.

clabacchio
2012-01-25 13:27:37 UTC
view on stackexchange narkive permalink

Due brevi cose: per la prima domanda, sono ancora uno studente, sto facendo uno stage in azienda e ho scoperto che molti concetti, anche alcuni che ritenevo meno importanti, sono utili, e ti lamenterai quando non conoscerai bene queste nozioni perché hai avuto un cattivo insegnante. (So ​​che può sembrare banale, ma è la prima impressione che ho avuto quando sono arrivato nel mondo reale)

Per la seconda domanda, aggiungerei solo il mio punto di vista: si intendono latch e FF per contenere valori, e hanno senso se dai prima quel valore (a meno che tu non voglia creare un generatore casuale in qualche modo). Quindi, con il ripristino o l'inserimento di un valore, il primo passo è sempre l'input.

Tobias Knauss
2019-07-02 01:40:21 UTC
view on stackexchange narkive permalink

(traduzione tedesca più avanti)
(Deutsche Übersetzung weiter unten)

La risposta accettata dall'utente "user3624" e le altre risposte forniscono già molte informazioni valide e sufficienti.
Ma tutti fanno riferimento al comportamento teorico del circuito. Oppure si riferiscono a circuiti integrati reali, il che significa circuiti elettronici costruiti in condizioni industriali: i circuiti sono estremamente precisi e quasi simmetrici.
In teoria, un latch o un flipflop non funzionerà mai perché la teoria (che utilizza parti elettroniche perfette) non può spiegare il comportamento di accensione del circuito. Per lo stesso motivo molti simulatori non possono simulare un (perfetto) flipflop.

Se non si utilizza un latch o un flipflop in un IC (come gli IC della serie 7400, ad esempio 7474 o 74279), ma si crea un semplice da soli, è possibile modificarlo facilmente per ottenere uno stato iniziale perfettamente determinato. Costruire un latch è molto semplice e richiede solo un paio di parti: 2 transistor e 4 resistori; e 2 interruttori a pulsante per il controllo degli stati.
Ecco uno schema del circuito di un semplice latch. Ho usato gli stessi transistor mostrati nel diagramma:
enter image description here Durante la costruzione di questo circuito su una breadboard (con un LED aggiuntivo prima del resistore da 1k), ho scoperto che all'accensione era sempre acceso lo stesso LED. Ciò è dovuto alle tolleranze nelle parti elettroniche: un transistor non è mai uguale all'altro. Cambia un po 'più velocemente o più lentamente, quindi l'intero circuito ha uno stato iniziale preferito, in cui cade all'accensione.
Ora volevo forzare questo circuito allo stato iniziale opposto, dove l'altro LED era sempre acceso all'accensione. Ho trovato alcuni consigli su Internet, che includevano:

  • utilizza resistori diversi sulle basi dei transistor
  • aggiungi un diodo prima di una base di transistor

Ho provato entrambi, separatamente e insieme, ma il risultato non è stato soddisfacente. Invece di avere sempre lo stesso stato iniziale, è diventato casuale quando si applicano una o entrambe le modifiche menzionate. Quindi è andata nella giusta direzione, ma non è stata sufficiente. Avrei potuto alterare di più i valori del resistore, o usare 2 diodi invece di uno, ma penso che questo ancora non darebbe una soluzione di salvataggio. Quindi ho avuto un'altra idea:

  • Metti un piccolo condensatore a una base del transistor, un lato collegato alla base del transistor e l'altro lato collegato a terra.

Ho provato prima 1uF e ha funzionato perfettamente. Poi sono sceso a 10nF e più in basso a 100pF e 10pF, e ha funzionato ancora. Ha funzionato anche il 90% delle volte con 1pF.
enter image description here Funziona perché il condensatore cortocircuita la base del transistor collegata (Q1) a massa per un tempo molto breve fino a quando il condensatore non viene caricato ... verrebbe caricato. "sarebbe", perché questo breve momento è sufficiente perché l'altro transistor Q2 si accenda, e una volta che Q2 è acceso, la base di Q1 è collegata a massa, quindi Q1 rimarrà spento finché qualcuno non preme SW2. Quando si preme SW2, il condensatore si carica e al termine si accende Q1.

Per un utilizzo sicuro a lungo termine, potresti voler aggiungere un piccolo resistore (come 10R) in fila con il condensatore per evitare correnti elevate quando viene scaricato.

(schemi circuitali creati online con "CircuitLab")


Infine, poiché sono tedesco e perché voglio che i miei connazionali trovino risposte anche nella nostra lingua, scrivo di nuovo l'intero testo in tedesco:

Rispondi a Benutzer "user3624" und die anderen Risposte liefern bereits viele gute und ausreichende Informationen.
Aber alle beziehen sich entweder auf das teoretische Verhalten der Schaltung, oder sie beziehen sich auf einen realen IC, anche eine elektronische Schaltung, die unter industriellen Bedingungen hergestellt wurde: extrem genau und fast symmetrisch.
In teoria, un multivibratore bistabile o un flip-flop non funzionerà mai, poiché la teoria non può spiegare il processo di accensione utilizzando componenti elettronici perfetti. Per questo motivo, i flip-flop non possono essere simulati da molti simulatori.

Se non si utilizza un multivibratore o un flip-flop in un IC (come nella serie 7400, ad esempio 7474 o 74279), ma ne si crea uno da soli, è possibile modificarlo facilmente per ottenere uno stato di accensione definito in modo sicuro. Costruire un multivibratore è molto semplice e hai solo bisogno di una manciata di componenti: 2 transistor e 4 resistori e 2 pulsanti per cambiare lo stato.
Sopra è mostrato uno schema circuitale di un semplice flip-flop. Ho usato gli stessi transistor nel mio circuito come nello schema.
[IMMAGINE 1]
Quando ho impostato questo circuito su una breadboard (con un LED aggiuntivo davanti al resistore da 1k), ho notato che lo stesso LED si accendeva sempre quando acceso. Ciò è dovuto alle tolleranze nei componenti elettronici: nessun transistor è un altro. Uno cambia più velocemente o più lentamente, il che significa che l'intero circuito ha uno stato preferito che assume dopo essere stato acceso.
Ora volevo forzare il circuito ad assumere lo stato opposto all'accensione, in cui l'altro led si accende sempre. Ho trovato vari consigli su Internet, tra cui:

  • Usa resistori diversi davanti alle basi dei transistor
  • aggiungi un diodo davanti a una base di transistor

Ho provato entrambi, individualmente e insieme, ma il risultato non è stato soddisfacente. Invece di ottenere sempre lo stesso stato di accensione, ora era una coincidenza quale LED si fosse acceso dopo l'accensione. Stava andando nella giusta direzione, ma non era abbastanza. Avrei potuto modificare ancora di più i valori di resistenza o forse collegare 2 diodi in serie davanti alla base del transistor, ma penso che questo non fornirebbe comunque una soluzione sicura. Quindi ho avuto un'idea diversa:

  • Aggiungi un piccolo condensatore davanti a una base del transistor, un lato collegato alla base del transistor e l'altro a terra.

Ho provato prima 1uF e ha funzionato perfettamente. Quindi ho usato valori più piccoli, prima 10nF, poi 100pF e 10pF, e ha funzionato ancora. Funzionava anche con 1pF nel 90% dei casi.
[IMMAGINE 2]
Funziona perché il condensatore cortocircuita brevemente la base del transistor Q1 a massa finché il condensatore non è carico ... verrebbe caricato. "Sarebbe" perché questo breve momento è sufficiente per l'accensione del transistor Q2, e non appena si è acceso, la base di Q1 è collegata a massa e Q1 rimane spento finché qualcuno non aziona SW2. Quando si preme SW2, il condensatore viene caricato e Q1 viene commutato subito dopo.

Per un utilizzo sicuro a lungo termine, si consiglia di collegare un piccolo resistore (ad es. 10R) in serie al condensatore per evitare correnti di scarica elevate.

Benvenuto in EE.SE.Nota che quando usi il pulsante CircuitLab sulla barra degli strumenti dell'editor, nel tuo articolo viene salvato uno schema modificabile.Questo ci rende facile copiare e modificare le nostre risposte.Non hai bisogno di un account CircuitLab, nessun screengrabs, nessun caricamento di immagini, nessuna griglia di sfondo.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...