Domanda:
Ignora gli impulsi inferiori a una determinata larghezza in un treno di impulsi
JayGee
2015-08-12 23:05:43 UTC
view on stackexchange narkive permalink

Supponiamo che io abbia un treno di impulsi da 5 V che varia tra 0 e 75000 impulsi al secondo. L'ampiezza dell'impulso, diciamo, è di 5 microsecondi. Come posso calcolare o determinare il modo migliore per filtrare tutti gli impulsi di larghezza inferiore a 4 microsecondi?

Hai un orologio disponibile?È possibile utilizzare un contatore che conta il numero di cicli di clock veloci per ogni impulso.Un clock da 10 MHz potrebbe raggiungere una risoluzione di circa 200 ns.Quindi potresti usare quel segnale per consentire solo il passaggio di impulsi abbastanza lunghi, collegando una versione ritardata del treno di impulsi.Hai già un FPGA o un microcontrollore nel tuo sistema?
Tre risposte:
tcrosley
2015-08-12 23:55:14 UTC
view on stackexchange narkive permalink

Questo circuito dovrebbe fare quello che vuoi:

enter image description here

Quando un impulso arriva sul cavo contrassegnato con IN, inizia il primo 74221 monostabile (ce ne sono due nella stessa confezione) impostato per 4 µs. L'output del \ $ \ small \ overline {\ text {Q}} \ $ pin monostabile sarà 1 fino a quando non viene avviato, quindi va a 0. Quindi durante il periodo di 4 µs, la porta AND (74HCT11) è inibita quindi non c'è output. Dopo 4 µs, la porta AND viene nuovamente abilitata, quindi il resto dell'impulso (se superiore a 4 µs) passa ad OUT. Vedere i diagrammi di temporizzazione di seguito.

Poiché 4 µs è stato interrotto all'inizio di qualsiasi impulso valido, il secondo monostabile viene avviato sul fronte di discesa dell'impulso di ingresso (ma solo se è più lungo di 4 µs ) e l'uscita rimane alta per aggiungere altri 4 µs alla fine dell'uscita utilizzando la porta OR (74HCT32). Grazie a stefandz per aver sottolineato la necessità di questa funzionalità aggiuntiva.

enter image description here

Il buffer contrassegnato DS1100Z in basso è in realtà una linea di ritardo con un ritardo di 100 ns; questo serve a compensare il ritardo di propagazione nel 74123 dal trigger all'uscita.

Nota a causa della tolleranza del condensatore, questa temporizzazione potrebbe essere disattivata del 10%, quindi il resistore dovrebbe essere ottimizzato se necessario.

Utilizzando i monostabili, è banalmente facile modificare il valore di temporizzazione da 4 µs a qualcos'altro semplicemente cambiando a i resistori e / o condensatori.

I pin di alimentazione (Vdd e Vss) e i cappucci di disaccoppiamento non sono mostrati.

Inizialmente avrei utilizzato un timer 555, ma risulta che il 555 non dovrebbe essere utilizzato per larghezze di impulso inferiori a circa 10 µs. Quindi mi sono rivolto al 74221, che può generare impulsi fino alla gamma ns.

Se lo capisco correttamente, questo riduce anche di 4us tutte le lunghezze di impulso che possono essere di conseguenza.
@stefandz Me ne rendo conto;Non conosco nessun altro modo per gestirlo, perché devi guardare il polso per 4 µs prima di decidere se buttarlo via o meno.Se hai iniziato a far passare tutti gli impulsi immediatamente e uno si è rivelato inferiore a 4 µs, hai sconfitto lo scopo del circuito.
non è necessariamente un problema, ma lo metterei nella risposta per renderlo chiaro al richiedente.C'è un modo per aggirare questo: in un circuito con memoria, come quello di supercat, è sufficiente ispezionare e ritardare, preservando così la lunghezza degli impulsi, ma introducendo un ritardo nel treno di impulsi.
@stefandz Dato che il 74123 è un doppio timer, dovrei essere in grado di aggiungere un ritardo di 4 µs alla fine dell'impulso, per compensare i 4 µs persi all'inizio.Torna al lavoro.
ora sarebbe una risposta molto chiara, poiché è inferiore nel numero di componenti e non ha artefatti di campionamento :)
@stefandz: Un potenziale problema con l'approccio analogico è che molto probabilmente ci saranno determinate lunghezze di impulsi in ingresso che faranno apparire un impulso runt o altre stranezze simili sull'uscita.Un segnale digitale con clock può ridurre tali probabilità essenzialmente a zero usando un sincronizzatore doppio o triplo (poiché l'uscita di reg2 nel mio circuito è un fattore in esattamente un segnale sincrono, il suo comportamento è equivalente a un sincronizzatore triplo).Prevedere il comportamento nel caso peggiore e realistico per un circuito analogico può essere molto più difficile.
@supercat Per quanto ne so, ho eliminato quel caso aggiungendo la linea di ritardo.Attualmente è impostato su 100 ns ma può essere aumentato a passi di 100 ns.Se riesci a trovare un caso specifico in cui questo approccio fallisce, lo esaminerò.
Sul 74LS123, guardando la scheda tecnica se / A scende mentre / Clr è basso, non succederà nulla.Se / A diventa basso mentre / Clr è alto, emetterà un impulso di 4us.Cosa succede se / A scende essenzialmente nello stesso momento in cui / Clr scende?
@supercat Se l'input è esattamente 4us, non importa fintanto che non ci sono glitch sull'output.Poiché non vi è alcuna linea di ritardo che entra in A del secondo monostabile, ciò dovrebbe impedire che ciò accada.Nel caso in cui l'ingresso sia esattamente 4us, il secondo monostabile si attiverà prima che il primo scada (di circa 100 ns).
@tcrosley: Un impulso di ingresso di lunghezza adeguata potrebbe far sì che A e / Clr si avvicinino arbitrariamente l'uno all'altro e la scheda tecnica del dispositivo non specifica il comportamento in quel caso.Sebbene non abbia utilizzato il 74LS123 in particolare, tali dispositivi generalmente non possono garantire che non vi sia alcuna possibile relazione di temporizzazione in ingresso che non garantirebbe che un ingresso non possa essere troppo lungo per impedire la generazione di impulsi, ma troppo corto peril 74LS123 commuta completamente e quindi genera un impulso a lunghezza intera.
@supercat * Ho detto prima *, questo potrebbe accadere solo quando l'impulso di ingresso è molto vicino a 4us, e quindi * non importa se si attiva o meno *.
@tcrosley: Un trigger pulito o una decisione pulita di non trigger possono essere entrambi accettabili, ma ciò non significa che gli impulsi runt sull'uscita saranno accettabili.Se, ad esempio, l'uscita del circuito sta pilotando un contatore sincrono, un impulso in ingresso che è proprio sulla soglia di essere rilevato potrebbe far saltare un contatore a 8 bit direttamente da 0x7F o 0xFF a qualsiasi altro valore provocando alcuni deii bit da capovolgere mentre altri non riescono a farlo.
@supercat Ho ridisegnato il mio diagramma di temporizzazione per il caso limite (impulso di ingresso 4us) con una risoluzione di 25 ns (ritardo di propagazione più breve).In un caso, ho scoperto la possibilità di un impulso indesiderato di 25 ns sull'uscita, che come dici tu potrebbe creare scompiglio.Risolto il problema con un terzo ingresso al gate AND.Non ho visto nient'altro.Grazie.
Cerchiamo di [continuare questa discussione in chat] (http://chat.stackexchange.com/rooms/26952/discussion-between-supercat-and-tcrosley).
[non volevo premere "chat"] La metastabilità è un brutto problema che è stato sorprendentemente poco compreso anche negli anni '80.L'aggiunta di un input extra al gate AND potrebbe aiutare nella simulazione, ma non risolverà completamente il problema nella vita reale.Tali modifiche possono cambiare * quale * lunghezza dell'impulso di ingresso causerà impulsi runt sull'uscita, ma non c'è praticamente alcun modo per evitare la possibilità che * una certa * lunghezza dell'impulso di ingresso causi un impulso runt sull'uscita.Un doppio sincronizzatore ...
... si avvicina molto all'eliminazione del problema perché mentre è possibile che la temporizzazione dell'ingresso possa far sì che l'uscita del latch ceda un segnale "quasi bloccato" proprio all'arrivo del clock successivo, la finestra di temporizzazione in cui ciò potrebbe verificarsi è estremamente piccola.La tripla sincronizzazione riduce ulteriormente le probabilità poiché l'uscita problematica dal primo latch non può causare il caos a meno che non commuti nel momento preciso richiesto per fare in modo che l'uscita dal secondo latch colpisca proprio quando arriva il terzo impulso di clock.
@supercat Non sarò d'accordo con te a causa della mia linea di ritardo.Hai la tua opinione, io ho la mia.Progetto circuiti logici da 55 anni.Lasciamolo a questo.
Quanto hai letto sulla metastabilità?Se è presente una lunghezza minima dell'impulso di ingresso che farà sì che il circuito generale generi un'uscita di 100 ns o più e una lunghezza massima che non genererà alcuna uscita, cosa succederà se viene ricevuto un impulso di ingresso la cui durata è compresa tra questi?
@supercat Il circuito è tutto combinatorio ad eccezione dei 74123 che hanno FF.La tua preoccupazione precedente sembrava essere cosa succede se A diventa basso nello stesso momento in cui CLR diventa basso.L'FF si resetterà entro un ritardo di propagazione, qualunque cosa accada.Non è possibile uno stato metastabile o un impulso runt.Il circuito gestirà anche (e rifiuterà) impulsi di ingresso arbitrariamente piccoli (ad esempio <10 ns).
@tcrosley: I ritardi di propagazione del gate vengono misurati dal momento in cui l'input raggiunge un livello valido.Se un circuito di latch riceve un impulso che è abbastanza lungo da commutare l'uscita da un livello logico valido, ma non abbastanza a lungo per passare a un nuovo livello logico, non c'è * limite superiore * sul tempo che il latch può impiegare primao passa a un nuovo stato o torna a quello vecchio.Assumendo una distribuzione casuale degli stimoli in ingresso, la probabilità che l'uscita non si stabilizzi entro un certo tempo * t * diminuirà esponenzialmente rispetto a * t *, e ...
... può raggiungere un livello accettabilmente basso entro un lasso di tempo accettabile, ma non vedo nulla nella scheda tecnica del 74LS123 che consenta di determinare se il rischio di un impulso runt sarebbe uno su un milione o uno su unquadrilioni.
supercat
2015-08-13 00:39:00 UTC
view on stackexchange narkive permalink

In molti casi, l'approccio più semplice è usare un circuito logico sincrono che campiona il segnale in ingresso a una certa velocità (es. 10MHz), assicura che sia sincronizzato con quel clock (facendolo passare attraverso un paio di flip flop è un fai questo), quindi applica la logica necessaria in modo puramente digitale.

schematic

simula questo circuito - Schema creato utilizzando CircuitLab

La casella centrale nel circuito sopra è un contatore a ripristino sincrono a sei bit; ogni impulso di clock lo resetterà a zero (se RS è basso) o farà avanzare il conteggio (se alto).

Come mostrato, il circuito resetterà il contatore ad ogni ciclo in cui l'uscita corrisponde al valore sincronizzato dell'input o incrementa il contatore se non corrispondono. Se ci sono 48 cicli consecutivi in ​​cui non corrispondono, il Q4 e il Q5 del contatore saranno entrambi alti. Al ciclo successivo, il contatore verrà ripristinato (indipendentemente da ciò che fa l'ingresso) e l'uscita cambierà stato.

Se l'orologio è 10 Mhz, questo circuito filtrerà sia gli impulsi alti che quelli bassi più brevi di approssimativamente 4,9us e arrotonderà tutti i tempi di impulso ai 100ns più vicini. Ci sono molti modi per variare il circuito per implementare vari tipi di filtraggio, ma il punto chiave è che l'ingresso è sincronizzato con un clock a 10 MHz e tutto il resto nel circuito funziona con lo stesso clock.

Presumo che non intendessi collegare Q e! Q insieme nel tuo schema;)
wbg
2015-08-13 11:12:17 UTC
view on stackexchange narkive permalink

Preferirei inserirlo in un commento, ma non posso.

Poiché non è stata fornita alcuna specifica di errore, è possibile passare di nuovo da un problema nel dominio del tempo a una tensione, integrando gli impulsi e usando un comparatore ...?

La gamma 0-75kHz è irrilevante penso e abbiamo solo bisogno di preoccuparci dell'ampiezza dell'impulso, ~ 4us. Se l'OP può ottenere un fronte di salita ragionevolmente lineare, potrebbe funzionare ...?

Saluti



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...