Hallo zusammen,
ich grübele schon seit geraumer Zeit über eine Logik-Schaltung, aber ich
komm einfach nicht auf die Lösung, die ich brauche.
Folgendes soll die Schaltung tun:
Ich hab ein zyklisches Rechteck-Signal auf Kanal A. Tastverhältnis z.B.
40%.
Ich hab ein sporadisches Rechteck-Signal auf Kanal B. Tastverhältnis
egal.
Jetzt soll der Ausgang C immer Kanal A entsprechen, bis eine steigende
Flanke auf Kanal B auftritt. Ab dann soll der Ausgang C immer low sein,
bis auf Kanal A die nächste steigende Flanke kommt. Sollte kanal B dann
abr noch high sein, soll der Ausgang C low bleiben.
Ungefähr so:
1
A __----______----______----______----______----______----______
2
B _____________-____________________---------------_____________
3
C __----______-_________----______--__________________----______
Ich habe hierzu schon Artikel über t- jk- und rs-FlipFlops gelesen und
LTspice am laufen. Ich komme nur nicht auf die richtige
Verschaltungsvariante!
Es wäre toll, wenn ihr mir einen Schubs in die richtige Richtung geben
könntet.
Danke,
Grüße,
Gerd
Ich würde es wie folgt versuchen (hab gerade aber keinen Simulator
hier):
RS-FlipFlop "C":
Setzeingang: Q_A
Rücksetzen : Q_A_nicht oder Q_B
Gruß
Dennis
Ich glaube, du siehst das zu kompliziert. Im Endeffekt soll C low sein,
während B high ist, sonst A.
n-Transistor steuert Verbindung A <-> C
Gate = A&!B
Wahrheitstabelle:
AB C
00 0 -> A low, B low -> C = 0 = A
10 1 -> A high, B low -> C = 1 = A
01 0 -> A low, B high -> C = 0
11 0 -> A high, B high -> C = 0
@ M.S.
da spielt der kleine B Impuls leider nicht mit.
Das von Knut klingt fast gut, war auch meine Idee :)
Leider kann es zum verbotenen H am R und S gleichzeitig kommen.
Stimmt, habe ich nicht bedacht.
Eventuell so:
D-FF mit A|B als Clock und A&!B als Eingang. Der Ausgang steuert npn von
A auf C.
Ist B = 1 Clockt das FF und setzt 0 (!B ist in dem Fall immer 0). Hat A
dann wieder eine steigende Flanke, clockt das FF erneut und setzt 1,
falls B=0 (A&!B true). Damit ist der Ausgang dann wieder auf A
durchgeschaltet.
Sieht erst mal so aus, als ob >M. S. (elpaco)< recht
hat, ABER: damit bleibt A nicht gesperrt, wenn A = high ist und
B währenddessen nur kurz high wird.
Ich denke, du brauchst ein UND-Glied, sowie ein D-Flipflop.
Das UND-Glied lässt A nur durch, wenn der zweite Eingang
high ist.
Der zweite Eingang des UND-Glieds kommt vom Ausgang Q eines
z.B. 74er-D-Flipflops.
Am D-Eingang des D-Flipflops liegt fest ein high-Potential.
- A geht zusätzlich auf den Clk-Eingang des D-Flipflops
(Tigger durch pos. Flanke).
- B geht auf den Reset-Eingang des D-Flipflops.
(Für ein FF mit !Reset muss B invertiert werden)
Da der Reset-Eingang jederzeit wirkt, ist die Funktion so,
wie gewünscht!
FERTIG
Gerd schrieb:> Ich hab ein sporadisches Rechteck-Signal auf Kanal B. Tastverhältnis> egal.> Jetzt soll der Ausgang C immer Kanal A entsprechen, bis eine steigende> Flanke auf Kanal B auftritt. Ab dann soll der Ausgang C immer low sein,> bis auf Kanal A die nächste steigende Flanke kommt. Sollte kanal B dann> abr noch high sein, soll der Ausgang C low bleiben.> Ungefähr so:> A __----______----______----______----______----______----______> B _____________-____________________---------------_____________> C __----______-_________----______--__________________----______>> Ich habe hierzu schon Artikel über t- jk- und rs-FlipFlops gelesen und> LTspice am laufen. Ich komme nur nicht auf die richtige> Verschaltungsvariante!
Geht mit einen 74xx74 und einem Inverter xx04.
xx74:
D=1
CLK = A
Set = 1
Reset = NOT(B)
C = Q
xx04:
B = NOT(B)
rgds
hp-freund schrieb:> Leider kann es zum verbotenen H am R und S gleichzeitig kommen.
Verboten ist in der Elektrotechnik nichts (außer geschriebene Gesetze)
:)
Explodieren wird das FlipFlop auch nicht so schnell, bau es dir mal mit
2 NOR-Gattern auf, dann wirst du sehen was es tut
http://www.elektronik-kompendium.de/sites/dig/0209302.htm
lg Knut
Hallo,
also erstmal ganz herzlichen DANK an alle und eure Vorschläge!
Ich werde mich mal an den verschiedenen Kombinationen versuchen und gebe
dann Rückmeldung.
@wendelsberg:
ich sehe gerade keinen Unterschied zwischen Beschreibung und Diagramm.
Was ist für dich denn da unklar?
Grüße,
Gerd
6A66 schrieb:> Geht mit einen 74xx74 und einem Inverter xx04.>> xx74:> D=1> CLK = A> Set = 1> Reset = NOT(B)> C = Q>> xx04:> B = NOT(B)>> rgds
Hab' mich geirrt, da geht der A nicht mehr zurück :(
rgds
6A66 schrieb:> Hab' mich geirrt, da geht der A nicht mehr zurück :(
Macht nix, trotzdem danke :) !
@hp-freund
SUPER, ich glaube das ist genau das, was ich wollte! Meine eine
(falsche) Lösung hatte auch schon ein RS-FF aber keine weiteren
Logik-Gatter. Das war der Fehler...
Aber warum hast du da Bedenken, wenn beide Pegel H sind? Wird das RS
nicht erst wieder scharf geschaltet, durch ein L von A? Wie gesagt, für
mich sieht das genau richtig aus -_o
Grüße
Hallo nochmal,
@hp-freund:
ich glaub ich hab deine Bedenken jetzt doch nachvollziehen können.
Daraufhin hab ich deine Schaltung etwas angepasst, so daß jetzt nicht
mehr beider FF-Eingänge high sein können :)
Grüße
> D-FF mit A|B als Clock und A&!B als Eingang. Der Ausgang steuert npn von> A auf C.>> Ist B = 1 Clockt das FF und setzt 0 (!B ist in dem Fall immer 0). Hat A> dann wieder eine steigende Flanke, clockt das FF erneut und setzt 1,> falls B=0 (A&!B true). Damit ist der Ausgang dann wieder auf A> durchgeschaltet.Oldie schrieb:> Sieht erst mal so aus, als ob >M. S. (elpaco)< recht> hat, ABER: damit bleibt A nicht gesperrt, wenn A = high ist und> B währenddessen nur kurz high wird.
In dem Falle, dass das FF nicht Zustands-, sondern Flankengetriggert
(steigende Flanke) ist, wird die Lösung so funktionieren.
Alternativ kann man sich die ganzen Logikbausteine auch sparen und einen
einfachen ATtiny13A oder ähnliches nehmen.
A an INT1 (getriggert auf steigende Flanke), B an INT0 (ebenfalls
steigende Flanke)
ISR0 setze eine Flag, ISR1 löscht sie wieder, falls B=0.
Die Mainschleife setzt dann einen Ausgangspin (=C) auf 0, falls die Flag
gesetzt ist, A sonst.
Gerd schrieb:> @wendelsberg:> ich sehe gerade keinen Unterschied zwischen Beschreibung und Diagramm.> Was ist für dich denn da unklar?
Sorry, ich hatte die letzten beiden Striche des zweiten Impulses A
uebersehen. Schlechte Uhrzeit fuer sowas.;-)
wendelsberg
Hi
Deine Ausaufgaben solltest du nun erledigt haben, wenn nicht, hier mein
Vorschlag. Natürlich läßt sich das auch mit einem Controller erledigen.
Er braucht dafür nur 2 Eingänge und einen Ausgang. Der Rest ist
Software...
Gruß oldmax
Martin Vogel schrieb:> hier mein Vorschlag.
Ich hab auch noch einen ähnlichen mit D-Flipflop. Naja, FPGA-lastig
eben... ;-)
> Natürlich läßt sich das auch mit einem Controller erledigen.
Kommt drauf an, wie schnell und jitterfrei das Ganze sein muss.
Hallo Martin,
das ist natürlich auch eine charmante Lösung, weil nur NOR Gatter :) .
Es stimmt schon, in einem Controller wäre das ganz einfach gewesen. Ich
hätte die Sache auch in ein paar Minuten programmieren können (komme
auch eher aus der µC-Ecke). Aber ich hatte auf einmal den Willen das
irgendwie auch ohne Quellcode zu lösen.
Danke für die Hilfe und die Vorschläge! Alles erledigt :) !
Interessant :) !
Ich habe auch gerade nochmal an der Schaltung gewerkelt, um ebenfalls
das ganze in einem IC unter zu bringen. Herausgekommen ist das Teil im
Anhang. Das sieht mir doch sehr ähnlich aus ;)
Grüße!
Gerd schrieb:> Das sieht mir doch sehr ähnlich aus ;)
Dabei kann es aber zu einem Glitch kommen, wenn B=1 ist und A von 0->1
geht.
Durch die Gatterlaufzeit kann dann an C eine 1-Nadel auftreten.
Peter Dannegger schrieb:> Dabei kann es aber zu einem Glitch kommen, wenn B=1 ist und A von 0->1> geht.> Durch die Gatterlaufzeit kann dann an C eine 1-Nadel auftreten.
Ah, ok. Danke für die Info, das wußte ich nicht. Ich werde es
berücksichtigen, bzw. deine Schaltungsvariante nehmen.
Grüße
Hallo noch mal,
ab dem ...geschafft ist ja noch einiges gekommen.
In Bild Schaltung ganz oben ist C1 (...geschafft) bis C5 mal mit Xilinx
simuliert. Wenn ich keine Fehler gamacht habe gibt es für die Varianten
jeweils Die Funktion- und Timing Simulation.
@hp-freund
Toll, danke für die Zusammenfassung! In den Diagrammen wird klar, daß
Schaltung 2 und 3 sich von den anderen Schaltungen unterscheiden. Die
Schaltungen 1, 4 und 5 bilden aber das gewünschte verhalten ab.
Ich hab das in LTspiece mal simuliert, wobei bei Variante 4 der Glitch
auftrat, bei Variante 5 aber nicht.
Vielleicht sollte ich das einfach mal auf meinem Steckbrett
zusammenstecken und messen :) .
Grüße
Gerd schrieb:> In den Diagrammen wird klar, daß Schaltung 2 und 3 sich von den anderen> Schaltungen unterscheiden.
Logisch. In der Schaltung 3 wurde das falsche Flipflop verwendet. Ein
FDR ist ein Flipflop mit synchronem Reset-Eingang. Das passt hier
natürlich nicht. Es muss da ein FDC mit aysnchronem Reset rein.
Gerd schrieb:> Ich hab das in LTspiece mal simuliert, wobei bei Variante 4 der Glitch> auftrat, bei Variante 5 aber nicht.
Sagte PeDa in
Beitrag "Re: Logisches Problem?!"
nicht, dass es genau andersherum sein müsste?
Frank M. schrieb:> Sagte PeDa in>> Beitrag "Re: Logisches Problem?!">> nicht, dass es genau andersherum sein müsste?
Ja genau, darujm hab ich mich ja gewundert -_O
Gerd schrieb:> Ich hab das in LTspiece mal simuliert, wobei bei Variante 4 der Glitch> auftrat, bei Variante 5 aber nicht.
Kannst Du mal zeigen, wo?
Bei Variante 5 muß der Glitch genau an der Stelle auftreten, wie bei
Variante 3 zu sehen (B ist 1 und A wechselt von 0 auf 1). Dann ist das
NOR2 ja noch 0 und das NOR3 sieht 2 * 0 (von NOR1 und NOR2) und macht
einen 1-Glitch.
Erst nach Durchlauf durch das NOR2 sieht NOR3 wieder eine 1 und geht auf
0.
1
folgende Anordnung:
2
NOR1 NOR2 NOR3
3
NOR4
Und genau das soll Variante 4 verhindern, indem A gesperrt wird, solange
B=1 ist.
Die Variante 4 erzeugt einen Glitch, wenn bei A=0 B auf 1 geht. Das ist
aber in dem vorgegebenen Timingdiagramm nicht der Fall. Da ändert sich B
immer nur auf 1, wenn A=1 ist.
Will man den Fall auch erschlagen, reicht ein Logik-IC wohl nicht.
Hallo nochmal und danke für eure Hilfe!
Jetzt steh ich aber vor einem neuen "Problem". Das sind keine
Hausaufgaben oder so (aus dem Alter bin ich raus ;) ). Das ist alles nur
für Basteleien zu Hause.
Ich möchte folgende Signalverläufe haben (wieder Eingang A, Eingang B
und Ausgang C):
1
t 1 2 3 4 5 6
2
A __----__---___________-------____----_______
3
B ____________---__---____---___-----____---__
4
C __----------__________--------___------_____
Auf deutsch:
1. C setzen, wenn A gesetzt wird
2. einmal gesetzt C 1 lassen, egal was A macht, solange B 0 ist
3. C zurücksetzen, wenn B gesetzt wird UND A nicht gesetzt ist
4. einmal zurückgesetzt C 0 lassen, egal was B macht solange A 0 ist
5. wenn C gesetzt wurde, dann lassen, wenn A noch gesetzt ist UND B
gesetzt wird
6. C setzen, auch wenn B gesetzt ist, aber A auch gesetzt wird
Ich tu mich mit diesem Logikkram leider noch etwas schwer. Ich hab schon
viel online durchsimuliert, aber ganz so wie beschrieben hat es nie
geklappt :/ .
Könnt ihr mir vielleicht nochmal einen Tipp geben?
Danke!
Gerd schrieb:> Ich tu mich mit diesem Logikkram leider noch etwas schwer. Ich hab schon> viel online durchsimuliert, aber ganz so wie beschrieben hat es nie> geklappt :/ .>> Könnt ihr mir vielleicht nochmal einen Tipp geben?
Tiny85 für einen Euro kaufen, Lochraster und alles andere für nochmals
einen Euro.
10 Minuten furs Löten, 20 Minuten um das ganze zu programmieren.
Welcher normaler Mensch macht so etwas noch mit TTL ?
RS-FF und ähnliches wird nur noch in Informatikunterricht benutzt.
Gerd schrieb:> 1. C setzen, wenn A gesetzt wird> 2. einmal gesetzt C 1 lassen, egal was A macht, solange B 0 ist> 3. C zurücksetzen, wenn B gesetzt wird UND A nicht gesetzt ist> 4. einmal zurückgesetzt C 0 lassen, egal was B macht solange A 0 ist> 5. wenn C gesetzt wurde, dann lassen, wenn A noch gesetzt ist UND B> gesetzt wird> 6. C setzen, auch wenn B gesetzt ist, aber A auch gesetzt wird
D-Flipflop, z.B. 1/2 4013. A an Set, B an Clock, Data und Reset an GND.
Fertsch.
Peter Dannegger schrieb:> RS-FF aus 2 NOR + Inverter, damit A dominiert.
Hm, das hab ich versucht: A an Set, B an Reset. Aber wo soll der
Inverter hin? Ich hab ja einen Ausgang Q und einen Q', wofür dann der
Inverter? Ich hab ihn testweise mal fast überall hingepackt, aber
irgendein Fall wir immer nicht mit abgedeckt. Folgenden Fall hab ich
vergessen zu beschreiben:
1
A __------_______________
2
B ____-------____----____
3
C __-------------________
Also, daß C immer nur bei einer steigenden Flanke von B zurückgesetzt
wird und A dann grad low ist. Bei einer fallenden Flanke von A soll C
gesetzt bleiben, auch wenn B noch gesetzt ist.
Zusammengefasst soll das eigentlich nichts anderes machen, als:
- bei steigender A- Flanke IMMER C setzen
- bei steigender B- Flanke C zurücksetzen, aber nur, wenn A 0 ist.
Ein normales RS kann das nicht, weil da C sofort zurückgesetzt wird,
wenn A 1, B 1 und A dann 0 gesetzt wird (pegel- und nicht
flankengesteuert).
Marc Vesely schrieb:> Welcher normaler Mensch macht so etwas noch mit TTL ?
Normalität wurde mich schon lange nicht mehr bescheinigt ;) ...
Gruß
Gerd schrieb:> Marc Vesely schrieb:>> Welcher normaler Mensch macht so etwas noch mit TTL ?>> Normalität wurde mich schon lange nicht mehr bescheinigt ;) ...
Sorry, etwas zu schnell hingekritzelt, erst danach Threadname gesehen.
Als logisches Problem natürlich akzeptabel, in der Praxis sofort mit
jedem Mikrocontroller lösbar.
Marc Vesely schrieb:> Sorry, etwas zu schnell hingekritzelt, erst danach Threadname gesehen.> Als logisches Problem natürlich akzeptabel, in der Praxis sofort mit> jedem Mikrocontroller lösbar.
Natürlich, zweifelsohne :) . Ich hatte oben weiter auch schonmal
geschrieben, daß ich des Programmierens mächtig bin. Aber ich wollte es
gern mal ohne Sourcecode versuchen. Reine Neugier!
Gerd schrieb:> Folgenden Fall hab ich> vergessen zu beschreiben:>
1
> A __------_______________
2
> B ____-------____----____
3
> C __-------------________
4
>
>> Also, daß C immer nur bei einer steigenden Flanke von B zurückgesetzt> wird und A dann grad low ist. Bei einer fallenden Flanke von A soll C> gesetzt bleiben, auch wenn B noch gesetzt ist.
Die Lösung habe ich bereits heute früh um 04.31 Uhr im Halbschlaf
gepostet.
Im Übrigen hattest du nicht vergessen, den Fall zu beschreiben. Der war
in deinem wenig durchdachten 6-Punkte-Geschwalle (immerhin implizit)
enthalten jedenfalls, wenn man logisch denken kann.
> Zusammengefasst soll das eigentlich nichts anderes machen, als:> - bei steigender A- Flanke IMMER C setzen> - bei steigender B- Flanke C zurücksetzen, aber nur, wenn A 0 ist.
Immer noch nicht ganz korrekt aber wenigstens schonmal deutlich besser
durchdacht und zusammengefaßt als das ursprüngliche Geschwalle. Was dir
noch nicht klar ist: bei A interessieren keinerlei Flanken, sondern nur
der High-Pegel, der muß dominant auf C durchgreifen. Nur wenn A Low ist,
kommen überhaupt irgendwelche Flanken in's Spiel, und zwar einzig die
L/H-Flanke von B, die muß C auf Low schalten.
@c-hater
Reg' dich mal ab, Großer!
Dein Vorschlag war gut und nachvollziehbar. Aber ich hab ihn in LTspice
simuliert und der Ausgang war immer high.
Aber soll ich gleich wieder rumheulen, solange ich noch nicht weiß, daß
der Fehler nicht bei mir liegt? Wohl nicht. Darum bin ich auf deinen
Vorschlag noch nicht eingegangen.
Außerdem: einerseits wird sich hier mehr als oft über mangelnde
Problembeschreibung beklagt. Jetzt wirfst du wiederum "Geschwalle" in
den Raum. Jetzt gehst du nochmal ne Runde um den Block, atmest einmal
tief durch, trinkst nen Schluck Tee und bist auch wieder friedlich.
Dennnoch danke ich dir für den wirklich guten Vorschlag und ich werde
mal gucken, wo mein Fehler ist...
Gruß
Gerd schrieb:> Aber ich hab ihn in LTspice> simuliert und der Ausgang war immer high.
Dann hast du wohl einfach kein funktional zur Realität passendes Modell
des 4013 verwendet...
Ja, korrekt Simulieren ist oft eine größere Kunst als den Kram einfach
mal in echt aufzubauen...
Gerd schrieb:> Folgenden Fall hab ich> vergessen zu beschreiben:> A __------_______________> B ____-------____----____> C __-------------________
Dann gehts natürlich nicht mit dem RS-FF.
D-FF (4013) ist korrekt.
4027 ginge auch.