Perché il trigger per bordi è preferito rispetto al trigger di livello?


18

Sto cercando di capire perché triggering bordo è preferibile rispetto innescando livello. Nel mio libro non è spiegato chiaramente. Dopo aver cercato online ho scoperto che l'attivazione dei bordi è insensibile ai glitch, mentre l'attivazione dei livelli è sensibile. Cosa significa?

Anche io non sono in grado di comprendere quanto segue: "Se l'orologio è il livello sensibile, il nuovo può correre attraverso la rete logica e cambiare l'uscita Per evitare questo abbiamo bisogno di un breve impulso di catturare l'output e teniamo costante.. ma tale impulso breve non è facile da creare, quindi andiamo a fronte di trigger. il problema è risolto risposte perché c'è tempo insufficiente per la nuova uscita per ritornare corsa all'ingresso entro la durata di un singolo fronte di salita"Qn

Non capivo perché l'uscita non si affrettasse nel trigger di livello e perché avessimo bisogno di un breve impulso per trattenere l'uscita.

In secondo luogo, il problema di feedback, poiché la durata del trigger di livello è lunga rispetto al trigger di fronte, nel caso del primo, l'uscita verrebbe ricondotta all'input e continuerà a farlo finché l'orologio è attivo . Qual è il problema di feedback?

Ma come sarà risolto con l'attivazione dei bordi? Se il tempo di caduta o di salita è molto breve, come sarà l'output in grado di propagarsi attraverso tutte le porte? È come, una volta applicato il trigger di fronte, l'uscita verrà propagata attraverso tutte le porte e gli ingressi successivi verranno considerati solo al bordo di clock successivo?


1
"una volta applicato il trigger dei bordi, l'output verrà propagato attraverso tutte le porte e gli input successivi verranno considerati solo al successivo clock" - bullseye !!
Wouter van Ooijen

Risposte:


12

Sebbene un fronte sia un momento nel tempo ben definito, non è vero dire che anche il trigger di livello non ha un momento nel tempo ben definito. Lo fa. Vi è un momento ben definito in cui il livello dell'orologio scende, vengono campionati gli ingressi al circuito di clock e non sono più ammessi ulteriori cambiamenti negli ingressi.

Il problema con livello di innesco è che, mentre il livello di clock è alto, ingressi cambiano le uscite. Nei circuiti che hanno risposte (le uscite sono posteriore collegata agli ingressi) attivazione livello cause caos, perché il livello è sufficientemente ampia (mezzo ciclo di clock) che l'uscita può retroagire ingressi entro lo stesso periodo.

tt+1 l'orologio, e non hanno la pausa circuito sequenziale. Nel livello di scatto, rallentando l'orologio funziona contro di noi. Più rallentiamo il tempo, più tempo concediamo un feedback senza restrizioni.

La prima ovvia soluzione che si suggerisce di accorciare il livello al punto che è impossibile che si verifichino feedback indesiderati (e mantenere breve il livello "on", anche se rallentiamo arbitrariamente il periodo di clock). Supponiamo di polso dell'orologio da 0 a 1 e di nuovo a 0 molto rapidamente, in modo che le Apparecchiature sincronizzate accettare i loro ingressi, ma le uscite non hanno abbastanza tempo per gara attraverso il circuito di feedback per cambiare gli ingressi. Il problema è che gli impulsi stretti sono inaffidabili e richiedono sostanzialmente una risposta che può essere di diversi ordini di grandezza più veloce della frequenza di clock. Potremmo scoprire che abbiamo bisogno di un impulso largo un nanosecondo, anche se il sistema funziona a solo 1 Mhz. Allora abbiamo il problema di distribuire impulsi pulite, nitide, sufficientemente alti a livello di nanosecondi su un bus progettato per 1 Mhz.

Il prossimo passo logico, quindi, è far sì che i dispositivi generino l'impulso stretto per se stessi come la derivata del tempo del bordo dell'orologio. Come le transizioni di clock da un livello all'altro, dispositivi stessi possono generare internamente un breve impulso che provoca gli ingressi da campionare. Non dobbiamo distribuire quell'impulso stesso attraverso il bus dell'orologio.

E quindi puoi praticamente considerare che tutto è innescato dal livello alla fine. L'innesco dei bordi è un trucco per consentire ai dispositivi di creare un trigger di livello molto più veloce che è più veloce di tutti i circuiti di feedback esterni, consentendo ai dispositivi di accettare rapidamente gli ingressi e quindi chiudersi in tempo prima che le loro modifiche cambino i valori degli ingressi .


Possiamo anche fare un'analogia tra il segnale di "abilitare" (livello innescato orologio) e una porta su un'imbarcazione che detiene la pressione dell'aria. L'innesco di livello è come aprire una porta, permettendo all'aria di fuoriuscire. Tuttavia, possiamo costruire una camera d'aria che consiste di due (o più) porte, che non sono aperte contemporaneamente. Questo è ciò che accade se suddividiamo l'orologio di livello in più fasi.

L'esempio più semplice di questo è il master-slave flip-flop . Si tratta di due infradito D attivati ​​dal livello collegati in cascata. Ma il segnale di clock viene invertito, per cui l'ingresso di uno è attivato mentre l'altra è disabilitato e viceversa. È come una porta della camera d'aria. Nel suo complesso, il flip flop è mai aperto in modo che il segnale può liberamente passare attraverso. Se abbiamo un feedback dall'output del flip-flop all'input, non c'è problema perché passa a una diversa fase di clock. Il risultato finale è che il master-slave flip-flop presenta un comportamento attivato dal fronte! È utile studiare il flip-flop master-slave perché ha qualcosa da dire sulla relazione tra trigger di livello e bordo.


1
Orologi multifase sensibili a livello di evitare il problema "caos" se i feed di uscita di nessuno fermo al suo ingresso senza passare attraverso un dispositivo di chiusura che viene campionata su una fase di clock diverso. Tali disegni possono avere alcuni vantaggi quando si interfaccia processori con cose come memorie asincrone, poiché il tempo tra il bordo anteriore di una fase di clock e il bordo di uscita del successivo può essere arbitrariamente diviso tra il tempo necessario per instradare e uscita l'indirizzo, l'accesso tempo della RAM e tempo di impostazione per l'input dei dati del processore.
Supercat

2
@supercat Come esempio familiare, il master-slave flip-flop può essere considerato un esempio di clock multifase. Master e slave sono in fasi opposte, e quindi la stessa condizione vale se c'è feedback: va ad una fase differente. Dovrei aggiungere questo alla risposta per arrotondare fuori.
Kaz

2
+1 serranda analogia. Non ho mai sentito nessuno spiegare in questo modo, ma ha perfettamente senso.
ajs410

@ ajs410: Un'altra analogia che mi piace è uno scappamento ad orologeria. Il pendolo è collegato a due bracci, ciascuno dei quali può consentire sia l'ingranaggio scappamento di muoversi liberamente o bloccare la prossima volta raggiunta una certa "fase". Per un corretto funzionamento, le braccia devono essere regolati in modo che non c'è momento in cui entrambe le braccia avrebbero lasciato lo spin marcia. Senza questo vincolo, il meccanismo girare selvaggiamente fuori controllo.
Supercat

2

Edge-trigger è buono per orologi, perché permette l'uscita del valore da un latch in risposta ad uno (es salita) fronte di clock da utilizzare nel calcolo di quello che dovrebbe fare sul successivo fronte di salita dell'orologio. Se si sta costruendo un circuito sequenziale come un contatore utilizzando un numero di blocchi attivati ​​dal fronte, si possono mescolare arbitrariamente componenti logici veloci e lenti a condizione che, per ogni possibile percorso, il tempo di propagazione meno la quantità di ritardo dell'orologio del fermo ricevente il mittente del, è garantito per essere maggiore del tempo di mantenimento del ricevitore, e il tempo di ciclo e l'importo di cui il ricevente orologio del latch ritardi degli autori, meno il tempo di propagazione, è garantito per essere maggiore del tempo di setup del ricevitore.

Per contro, la costruzione di un circuito per contare gli impulsi su un singolo ingresso senza utilizzare latch edge-triggered richiederebbe determinate garanzie circa le velocità relative di alcune parti del circuito. Un approccio comune usato per essere per convertire un segnale di clock in ingresso (CLKIN) in una coppia di segnali di clock non sovrapposti (phi1 e phi2). Phi1 è vero quando ClkIn è alto ed è stato elevato per un tempo minimo garantito . Phi2 è alto quando CLKIN è basso ed è stato basso per qualche tempo minimo garantito. Quando CLKIN commuta da basso ad alto, phi2 diminuirà prima phi1 va alto; analogamente quando passa da alto a basso. Si potrebbe costruire un contatore avendo due serie di chiavistelli (che chiamerò Count1 e Count2). Ogni volta che phi1 è alto, Count1 fermi quantità_2. Ogni volta che phi2 è alto, quantità_2 fermi (Count1 + 1). Se Phi1 e Phi2 dovessero andare entrambi in alto contemporaneamente, o con troppo poco tempo tra loro, il valore del contatore diventerebbe indeterminato, ma a condizione che venga mantenuta la separazione adeguata, il contatore funzionerà molto bene. Due fasi-clock sistemi hanno spesso piuttosto abbondante separazione engineered; tutto purché sia ​​abbastanza veloce, tale separazione può evitare problemi con skew.

Internamente, molti latch innescati dal fronte possono essere pensati come una coppia di latch master / slave che sono cablati in modo tale che il master blocchi l'ingresso ogni volta che l'orologio si trova nello stato prima del bordo e lo slave blocca il master quando l'orologio è nello stato dopo. I segnali che alimentano i due fermi devono avere un rapporto adatto, ma se sono prodotte nelle stesse vicinanze come i fermi, non una necessità over-ingegnerizzare la quantità di separazione quasi quanto sarebbe necessario se le due fasi di clock erano inviato su un'area più ampia.

Nota che mentre edge-trigger è buona per orologi, ci sono altri scopi per i quali è meno buona. A volte è vantaggioso per eventi periodici in interrupt condizione che non ci sono due eventi condividono lo stesso segnale edge-triggered. Il trigger dei bordi è pessimo per gli interrupt condivisi e in alcuni casi può essere problematico anche con quelli non condivisi a meno che non ci sia un modo per eseguire il polling dello stato del filo di interrupt. L'attivazione del livello può anche essere vantaggiosa nei casi in cui un segnale strobo sarà attivo nello stesso ciclo di alcune informazioni che dovrebbero essere bloccate, ma in cui le informazioni hanno un percorso di calcolo più lungo rispetto allo strobo. Se le informazioni sono simili a un indirizzo per un chip di memoria asincrono, renderle disponibili a volte durante un ciclo di clock potrebbe essere meglio che attendere fino all'inizio del ciclo di clock successivo.


2

Per capire perché si preferisce il edge trigger, immagina un sommatore a 8 bit collegato a un registro, aggiungendo costantemente 1 al valore del registro, con un pulsante collegato al pin di abilitazione del registro.

Se l'abilitazione perno del registro è sensibile al livello, allora il contenuto del registro sarà costantemente incrementato per la durata del pulsante. Lo stato successivo del registro non sarà deterministico per una data pressione del pulsante. Questo perché la vipera può incrementare il registro molte volte prima di poter togliere il dito - in altre parole, le foglie di retroazione del registro e lo rende di nuovo alla vipera troppo in fretta.

Se invece il pin di abilitazione fosse sensibile ai bordi, il contenuto del registro aumenterebbe esattamente ogni volta che si preme il pulsante, indipendentemente dalla durata della pressione del pulsante (supponendo che l'ingresso sia correttamente rimosso). Sarebbe impossibile per l'output del registro tornare al sommatore in tempo per qualsiasi comportamento non deterministico.


1

Come altri hanno detto, il bordo è un momento molto specifico nel tempo. Sappiamo tutti che i circuiti digitali possono attraversare anomalie in cui un'uscita di un gate è errata poiché solo alcuni dei suoi ingressi l'hanno raggiunta, gli altri segnali sono in arrivo e stanno impiegando più tempo a causa del percorso più lungo (l'elettricità viaggia abbastanza velocemente ma ancora 3x10 ^ 8 m / s impiegano un po 'di tempo per aggirare i fili). Se disponiamo di un'unità trigerrata di livello, la sua uscita sarà influenzata da problemi tecnici. Con l'attivazione di edge edge abbiamo una finestra molto stretta nel tempo in cui "le cose possono accadere", in altre parole il circuito cambierà il suo stato (i valori su diversi fili all'interno del circuito, inclusa l'uscita) in determinati istanti ben definiti in tempo. Si prega di notare la frase "istanti nel tempo"

A questo punto non sarà a conoscenza di qualcosa che si chiama "analisi timing", ma vi spiegherò un po '. Quando facciamo circuiti digitali, vogliamo simulare loro per vedere come si comporteranno e se questo comportamento si inserisce quello che vogliamo fare. Nell'analisi temporizzazione controlliamo se i segnali sono in grado di raggiungere a un certo punto del circuito entro il tempo richiesto. Se sono troppo in ritardo rispetto al circuito non funziona correttamente. Utilizzando blocchi circuitali bordo innescato invece che a livello innescato, l'analisi tempistica diventa molto semplice, visto che sappiamo esattamente quando le cose possono accadere nel circuito. Ciò significa che il design del circuito diventa più facile anche. Ricordate che nel mondo reale si incontra di livello fermi innescati molto raramente.


1

Sebbene altre risposte abbiano riguardato quasi tutto ciò che c'è da dire sulla tua domanda, per rendere più chiaro ho aggiunto alcuni diagrammi e una breve spiegazione.

Immaginate di voler progettare un circuito che comprende una sorta di feedback. Dì A = A.B(sostanzialmente un gate AND con un feedback). Se lo si implementa utilizzando un latch sensibile di livello semplice che memorizza il valore di A, il circuito sarà simile a questo inserisci qui la descrizione dell'immagine

Questo può creare un problema. Quando l'orologio è alto, il fermo diventa trasparente, e la porta AND calcola il nuovo valore A and B. Ma il valore viene reimmessa il fermo, e poiché il latch è ancora trasparente (CLK è ancora alto), il nuovo valore A AND Bviene calcolato. Questo è quello che viene comunemente indicato come una race condition , che crea difetti (alti e bassi inaspettati nel documento finale) che lei ha citato.

Una soluzione a questo problema sarebbe quella di mantenere l'impulso CLK molto breve, abbastanza breve che una volta che l'uscita della porta AND viene generato, il latch viene disattivato prima il valore è backpropogated all'ingresso nuovamente. Dovrebbe essere intuitivo capire perché questo può essere difficile da raggiungere. Essa dipenderà dalla velocità di commutazione del chiavistello (infine, un chiavistello è fatta anche su porte combinatorie), la lunghezza del filo, e centinaia di altri parametri.

Una seconda opzione più fattibile è quella di utilizzare un elemento di bordo sensibile (un flip flop in questo caso), che è sostanzialmente una coppia di agganci collegati in un modo molto intelligente.

inserisci qui la descrizione dell'immagine

Fondamentalmente, quando il CLKsegnale è alto, il latch U1 è trasparente, il che porta il valore logico all'ingresso A all'uscita del latch U1, quando il CLKsegnale è BASSO, il latch U2 diventa trasparente e un nuovo valore diA AND B viene calcolato. Ma questo valore propagherà all'ingresso della porta AND solo quando il chiavistello U1 diventa trasparente (CLK è alto) e U1 conseguenza latch diventa trasparente (CLK è basso). Che è sostanzialmente equivalente a dire che il circuito sta bordo sensibile (il valore di uscita cambia solo a fronte di discesa del clock).

Questo evita il problema della corsa Condizione spiegato in precedenza, ed è per questo livello di scatto è preferito sopra il bordo di attivazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.