Hallo,
ich möchte gerne folgende Schaltung bauen:
Die Schaltung hat einen IN und einen OUT Pin.
Links kommt ein digitales Signal (0V=LOW 3V=HIGH).
Wenn IN=LOW wird, soll OUT umgehend LOW werden.
Wenn IN=HIGH wird, soll OUT nach eine definierbaren Zeitverzögerung HIGH
werden. Die Zeit soll zwischen 300ns und 10µs einstellbar sein.
Der Sinn ist, dass beim IN schnelle Pegelwechel bis zu 50 MHz vorkommen
können, die zum OUT nicht weitergereicht werden dürfen. Wichtig dabei
ist jedoch, dass die Latenz nur einige ns betragen darf.
Wenn IN also LOW wird, muss OUT umgehend (d.h. max. nach 10ns) auch LOW
sein.
Anders gesagt: Beobachtet man auf dem Oszi OUT, darf HIGH beliebig kurz
oder lang sein, aber die Zeit der LOW-Phase darf nicht unter die
definierte Zeitspanne fallen.
Ich hoffe, ich habe es einigermassen verständlich erklärt.
Ich schwanke jetzt zwischen einen 8 Bitter, mit dem man schon richtig
tricksen müsste, damit es keinen Jitter gibt (Latenzfreie Abschaltung),
und einer analogen Schaltung. Vielleicht gibt es dafür auch schon
vorgefertigte digitale Verzögerungsschaltkreise, die nur von LOW nach
HIGH verzögern? Kennt jemand sowas?
Georg G. schrieb:> Mach es diskret mit einem Monoflop und etwas Logik.mike schrieb:> Das geht mit einem einfachen Monoflop wie z.B. 74AHC(T)123
Soviel ich weiss, ist bei Monoflop die Impulsdauer einstellbar,
nicht aber die Verzögerung.
Dein Problem ist der Übergang von High nach Low (Verzögerung von
max. 10ns), deswegen solltest du das mit einem AND-Gatter und
Mikrocontroller machen, wie im Anhang.
uC (in diesem Fall Mega8, aber Tiny13 tut es auch), definiert
irgendein Pin (in diesem Fall PC0) als Eingang, einen anderen
Pin (in diesem Fall PC1) als Ausgang.
Beim Start geht PC1 auf High, PC0 wird dauernd abgefragt.
Sobald PC0 auf LOW geht, wird auch PC1 auf LOW gesetzt.
Sobald PC0 auf High geht, wird nach vorgegebenen Verzogerungs-
zeit auch PC1 auf High gesetzt.
Und das wars schon.
Ich dachte in der Tat auch reflexartig an ein AND Gatter. Das Problem
ist, dass der tiny schon wirklich extrem hoch getaktet sein muss, damit
der Jitter im Rahmen bleibt. Ein Loop ist deshalb gar nicht praktikabel.
Eigentlich geht das, wenn überhaupt, nur via Interrupts, die direkt den
Portpin steuern. Vielleicht kann man einen PWM missbrauchen. Ich schaue
es mir mal an. Das ganze wirkt aber auf mich wie Murks, da ein µC für
sowas (Schaltgenauigkeit im ns Bereich) nicht gemacht worden ist. Selbst
bei 20 MHz wäre ein verlorener Takt (Jitter) schon 50ns Verlust. Das ist
ausserhalb der Anforderung.
Hans schrieb:> Ich dachte in der Tat auch reflexartig an ein AND Gatter. Das Problem> ist, dass der tiny schon wirklich extrem hoch getaktet sein muss, damit> der Jitter im Rahmen bleibt. Ein Loop ist deshalb gar nicht praktikabel.
Denkst du?
Schlecht gedacht, bzw. uberhaupt nicht gedacht.
> Eigentlich geht das, wenn überhaupt, nur via Interrupts, die direkt den> Portpin steuern. Vielleicht kann man einen PWM missbrauchen. Ich schaue
Nein.
Von Low nach High wird verzogert (300ns bis 10µs) geschaltet.
Minimale Verzögerung ist 300ns oder 6 Takte bei 20MHz, das reicht
vollkommen, man muss nur wissen wie.
Von High nach Low wird der uC gar nicht eingeschaltet, das geht direkt
an AND-Gatter - bleibt nur Gatterverzögerung und die liegt innerhalb
von dir geförderten 10ns.
Klar?
> es mir mal an. Das ganze wirkt aber auf mich wie Murks, da ein µC für> sowas (Schaltgenauigkeit im ns Bereich) nicht gemacht worden ist. Selbst> bei 20 MHz wäre ein verlorener Takt (Jitter) schon 50ns Verlust. Das ist> ausserhalb der Anforderung.
Erst mal versuchen zu verstehen, ev. Logiktabelle erstellen und erst
wenn man verstanden hat wie das funktionieren soll, über Murks reden.
Du solltest erstmal selber denken, bevor du direkt losflamest.
t IN OUT AND-OUT
10n 1 1 1
20n 0 1 0
30n 1 1 1 <<< FALSCH!
Nach 30ns hat der µC noch nichtmal mitbekommen, dass er was tun soll.
Zieht IN währenddessen wieder an, wird das AND Gatter HIGH.
Hans, die Aufgabe ist nicht eindeutig:
Bei Einstellung 1us, wie lang soll ein 10us Impuls werden? 11us oder
10us oder egal (irgendwas dazwischen)
Wenn der Ausgangspuls nun wieder high ist, darf er sofort wieder Low
werden? Also im extrem ein Highpuls < 1ns?
Es ist eine WIEDEREINSCHALT-Verzögerung.
Beispieltabelle bei Einstellung 300ns:
t IN OUT
0n 0 0
100n 1 1 (Sofort ein, da Reset, also keine Totzeit läuft)
200n 1 1
300n 1 1
400n 0 0
500n 1 0 (Totzeit läuft noch)
600n 1 0
700n 1 1
800n 0 0
900n 0 0
1000n 0 0
1100n 1 1 (Sofort ein, da Totzeit bereits abgelaufen ist.)
Wenn also OUT LOW ist, MUSS OUT mindestens 300ns LOW sein. (Bei der
Einstellung 300ns)
Marc V. schrieb:> Soviel ich weiss, ist bei Monoflop die Impulsdauer einstellbar,> nicht aber die Verzögerung.
Dann schaltet man eben noch einen 74HC74 hinter den 74HC123.
Hans schrieb:> Du solltest erstmal selber denken, bevor du direkt losflamest.
Das Problem liegt nicht im denken, sondern beim lesen, ich habe
die 50MHz glatt übersehen.
Was ist der Sinn des Ganzen?
Dann reicht ein nicht nachtriggerbarer, flankengetriggerter monoflop und
ein Gatter (+ggf Inverter)
Eine Low-Flanke aktiviert das monoflop. Solange es aktiv ist, bleibt der
Gatter-Ausgang Low.
Hans schrieb:> t IN OUT> 0n 0 0> 100n 1 1 (Sofort ein, da Reset, also keine Totzeit läuft)> 200n 1 1> 300n 1 1> 400n 0 0> 500n 1 0 (Totzeit läuft noch)> 600n 1 0> 700n 1 1> 800n 0 0> 900n 0 0> 1000n 0 0> 1100n 1 1 (Sofort ein, da Totzeit bereits abgelaufen ist.)
Die vorgeschlagene Lösung mit Monoflop und Gatter geht prinzipiell.
Minimale Zeit 300ns sollten auch erreichbar sein.
Ob die Forderung in der Tabelle bei 100ns bzw. bei 0ns damit erreicht
wird - ich bin mir nicht sicher. Anfangsbedingungen sind meist etwas
schwierig.
Und, was passiert, wenn z.B. bei 600ns wieder IN=0 wird und dort für
50ns oder 200ns andauert?
Ich habe den Eindruck, deine Spezifikationen sind noch nicht ganz
ausgearbeitet.
A. S. schrieb:> Dann reicht ein nicht nachtriggerbarer, flankengetriggerter monoflop und> ein Gatter
Nö, er muß retriggerbar sein, sonst können Pulse durchkommen. Die
Sperrzeit muß immer neu ablaufen.
Ein Gatter wird für die Durchlaufzeit des Monoflops Spikes erzeugen,
daher ist ein D-FF die saubere Lösung.
Peter D. schrieb:> Nö, er muß retriggerbar sein, sonst können Pulse durchkommen. Die> Sperrzeit muß immer neu ablaufen.
Verstehe ich nicht. Lassen wir den Reset-Fall mal außen vor (den will
ich garnicht verstehen)
Eine 0 am Eingang soll mindestens Xµs (0.3...10) verlängert werden.
Also ein Monoflop, der schnell genug ist für die 50MHz (also dessen
Ausgang innerhalb ~10ns durchschaltet)
Dann IN-Eingang und Mondoflop-Ausgang auf ein UND-Gatter.
Und "high" Pulse sollen ja explizit durchkommen, bzw. genau danach habe
ich den TO gefragt.
> Ein Gatter wird für die Durchlaufzeit des Monoflops Spikes erzeugen,
Nicht, wenn die 50MHz des TO eingehalten werden. Ansonsten: JA. Dann
bräuchte man noch ein etwa 10ns nachtriggerbares Monoflop zur
Eingangsaufbereitung oder einen Tiefpass.
A. S. schrieb:> Verstehe ich nicht.
Z.B. Du willst nur Pulse >100ns durchlassen. Nun kommen 2 Pulse mit 40ns
Dauer und 40ns Pause. Ohne Retriggern fällt beim 2. Puls der 100ns
Monoflop ab und läßt ihn durch.
Peter D. schrieb:> Z.B. Du willst nur Pulse >100ns durchlassen. Nun kommen 2 Pulse mit 40ns> Dauer und 40ns Pause. Ohne Retriggern fällt beim 2. Puls der 100ns> Monoflop ab und läßt ihn durch.
Hi,
sowas in der Art nur genau anders herum. Die Veroderung laut DeMorgan
und NANDs:
oder noch was anderes Bild rechts, sind ja sowieso zwei in einem DIL16
Package drin.;-)
ciao
gustav
Peter D. schrieb:> Z.B. Du willst nur Pulse >100ns durchlassen. Nun kommen 2 Pulse mit 40ns> Dauer und 40ns Pause. Ohne Retriggern fällt beim 2. Puls der 100ns> Monoflop ab und läßt ihn durch.
Was bedeutet "fällt ab und lässt ihn durch"?
Bei Deiner Pulsfolge und meiner Schaltung wäre der Ausgang 120ms low.
* 100ms durch das Monoflop (danach fällt es ab, wird also high)
* 20ms durch den zweiten Puls (UND-Gatter, egal ob Puls oder Monoflop
low sind ist der Ausgang low)
40ns 0
40ns 1
40ns 0
danach 1
--> 120ns low-Puls. Genau wie vom TO gewünscht, zumindest wie
beschrieben.