Forum: FPGA, VHDL & Co. RS FlipFlop nicht verstanden


von Max M. (Gast)


Lesenswert?

Hi,

ich verstehe den RS FlipFlop nicht :/

Der Wikipedia Artikel wirft für mich mehr Fragen auf, als dass er welche 
beantwortet.

Also zuerst frag ich mich: was macht ein RS FlipFlop? Die Antwort lautet 
"er speichert ein bit". Okay.

Ich habe mir dazu diese Erklärung hier angeschaut:
http://schulen.eduhi.at/pts_perg/halbleiter_digitaltechnik/projekt5/p5_3b.htm

Ich setze set auf 1 und Q geht auch auf 1. So, jetzt ist Q auf 1.

Und dann setze ich set wieder auf 0 und Q steht immer noch auf 1. Und 
jetzt ist Q angeblich "gespeichert". Was soll das bedeuten, Q ist 
gespeichert? Ist damit gemeint, obwohl set auf 0 steht ist bei Q noch 
die 1 vorhanden? Falls ja: und was hab ich dann davon?
Also ich mein bei VHDL kann ich ja z.B. sagen:

signal A: bit;
A <= '1';

So, dann hab ich ein Signal bzw. ne Variable, wo ich die 1 gespeichert 
habe. Warum brauche ich jetzt einen FlipFlop? Die 1 ist doch in dem A 
gespeichert?

von Bitflüsterer (Gast)


Lesenswert?

Max M. schrieb:
> Hi,
>
> ich verstehe den RS FlipFlop nicht :/
> Falls ja: und was hab ich dann davon?

Jetzt stell' Dir mal vor, Du würdest Deine Klingel an den Set-Eingang 
anschliessen und wenn Du nach Hause kommst, ist Dein Flip-Flop gesetzt.
Was hast Du davon? Ganz klar: Irgendwann, seit dem letzten Reset hat 
jemand an Deiner Tür geläutet.

> Also ich mein bei VHDL kann ich ja z.B. sagen:
>
> signal A: bit;
> A <= '1';
>
> So, dann hab ich ein Signal bzw. ne Variable, wo ich die 1 gespeichert
> habe. Warum brauche ich jetzt einen FlipFlop? Die 1 ist doch in dem A
> gespeichert?
Zum einen: Das ist ein Signal, keine Variable. (Zum Unterschied zwischen 
Signal und Variable in VHDL lies mal ein gutes Buch darüber). Zum 
anderen: Mit dem VHDL-Text hast Du keine Speicherung erreicht. Eine 
Speicherung meint, das bei Änderung des Eingangssignals, das 
Ausgangssignal nicht (oder jedenfalls nicht ohne weiteres) ändert. Deine 
Beschreibung enthält aber diesen Fall weder ausdrücklich noch implizit. 
(Zu der Frage wie ein "Speicher" in VHDL aussieht verweise ich nochmal 
auf die Literatur).

von Uwe (Gast)


Lesenswert?

Naja eigentlich hast du A mit VCC verdrahtet. Aber im FPGA hast du 
irgendwo in ein FlipFlop ne drinnestehen. Aber diese Erklärung bringt 
dich auch nicht weiter. Aber du kannst dir ja mal die Power taste an 
deinem PC angucken, das ist ein taster und kein Schalter. Also wenn du 
den Drückst geht dein PC an wenn du losläßt geht der Kontakt wieder auf 
aber oh Wunder der PC bleibt an. Da ist irgendwo ein RS FlipFlop 
verbaut, welches Speichert das der Strom an bleiben soll. Der Reset des 
RS FlipFlops wird dann von der Software betätigt bzw. kannst du ja mal 
die Power Taste 4 Sekunden gedrückt halten.

von Max M. (Gast)


Lesenswert?

Hm also wenn ich dich jetzt richtig verstehe, dann ist set auf 1, wenn 
ich die Klingel gedrückt halte und auf 0, wenn ich loslasse, richtig?

Warum bleibt denn Q dauerhaft auf 1 und set nicht?

von Brater (Gast)


Lesenswert?

Max M. schrieb:
> Hm also wenn ich dich jetzt richtig verstehe, dann ist set auf 1, wenn
> ich die Klingel gedrückt halte und auf 0, wenn ich loslasse, richtig?

Ja.

Max M. schrieb:
> Warum bleibt denn Q dauerhaft auf 1 und set nicht?
Q bleibt auf 1, weil das die Funktion von dem Flip-Flop ist. Es hat ein 
Gedächtnis - es speichert seinen Zustand.

Stell dir vor: du bist nicht daheim, der Postbote klingelt. Der Postbote 
klingelt aber nicht stundenlang, bis du wieder daheim bist, sondern nur 
kurz. D.h. der Postbote macht set kurzzeitig auf 1 und dann ist set 
wieder die ganze Zeit bei 0, da er die Klingeltaste nicht mehr betätigt. 
Wenn du abends wieder nach Hause kommst, hörst du die Klingel immer 
noch, da ja Q immer noch auf 1 gesetzt ist. Damit weißt du: aha, der 
Postbote war heute da. Ohne das RS-FF hätte der Postbote geklingelt, die 
Klingel wäre kurz angegangen und dann wieder aus. Dann wüsstest du 
nicht, ob er da war.

Max M. schrieb:
> Warum brauche ich jetzt einen FlipFlop? Die 1 ist doch in dem A
> gespeichert?
Die Variable A ist dein Flipflop. Die Variable ist für dich ein Etwas in 
deinem z.B. C-Code, den du schreibst. Aber dein C-Code läuft ja auch 
irgendwo in Hardware. Alle möglichen Variablen, Bool, Int, Float etc. 
sind Abstraktionen von lauter zusammengeschalteten Flipflops (ist jetzt 
etwas vereinfacht aber im Endeffekt ließe sich das auf Hardware-Ebene so 
realisieren).

von Lochrasterfan (Gast)


Lesenswert?

Max M. schrieb:

> Warum bleibt denn Q dauerhaft auf 1 und set nicht?

Set wird wieder null, weil du den Klingelknopf loslässt.

Und um zu verstehen, warum Q trotzdem dauerhaft 1 bleibt, nimmst du dir 
die Wahrheitstabelle der verwendeten Gatter vor und verfolgst die 
Signale auf dem Schaltplan. Dann müsstest du es eigentlich verstehen.

von Daniel F. (Gast)


Lesenswert?

Hi,

sagen wir dein Ohr ist dein Eingang und dein Kopf das FlipFlop. Wenn dir 
jemand sagt, dein Haus brennt, dann entspricht das einem SET = 1 und du 
weißt, dass dein Haus brennt Q=1.
Wenn der jenige jetzt nichts mehr sagt (SER=0), brennt dein Haus 
wahrscheinlich immer noch und wenn dein Kopf ein FlipFlop ist weißt du 
das auch noch (immer noch Q=1).

Wenn die Feuerwehr kommt und sagt das Feuer ist gelöscht (RESET=1), wann 
weißt du, dass dein Haus nicht mehr brennt (Q=0). Auch wenn der 
Feuerwehrmann seine Aussage nicht wiederholt (RESET=0), weißt du, dass 
dein Haus nicht brennt (Q=0).

Gruß
Daniel

von Bitflüsterer (Gast)


Lesenswert?

Max M. schrieb:
> Hm also wenn ich dich jetzt richtig verstehe, dann ist set auf 1, wenn
> ich die Klingel gedrückt halte und auf 0, wenn ich loslasse, richtig?

Ob 0 oder 1 ist für die Funktion erst einmal nebensächlich.
Aber gut. Nehmen wir an, es sei so, weil ich gerade nicht erkennen kann, 
wo genau Dein Problem liegt. So fällt es Dir vielleicht leichter.

> Warum bleibt denn Q dauerhaft auf 1 und set nicht?

Warum sollte das nicht so sein?
Erstmal ist es gerade der Zweck eines Flip-Flops das der Ausgang auf dem 
Pegel dauerhaft bleibt. Dann ist set ein Eingang und kann deswegen 
ganz andere Pegel haben als einer der Ausgänge.

Stell Dir ein RS-Flip-Flop als ein Ding vor, bei dem Ursache und Wirkung 
sozusagen getrennt werden. Bei einer einfachen Leitung folgt der Ausgang 
immer dem Eingang. Bei einem RS-Flip-Flop ist das nicht so. Da folgt der 
Ausgang nur gewissen Ereignissen. Es wird gesetzt (aktiv) wenn der 
Setzeingang aktiv wird (ob das nun 1 oder 0 ist, ist völlig egal). Wenn 
der Setzeingang aber inaktiv wird, wird der Ausgang nicht wieder 
zurückgesetzt. Wozu auch? Da könnte man ja gleich eine einfache Leitung 
nehmen. Die sind wesentlich billiger. :-)

Es geht doch bei dem Ganzen darum, das man Zustände speichern kann.

Man könnte Dir vielleicht besser helfen wenn Du Deine Frage 
ausführlicher stellen würdest. Du hast da anscheinend was im Kopf (eine 
Meinung, etwas früher gelesenes) das im Widerspruch zu Neuem steht. 
Bisjetzt kann man immer nur antworten, das es so ist, wie es ist und das 
das genau so gewünscht ist und nicht anders. Das kann Dich ja nicht 
befriedigen. Aber ich weiss halt nicht, was das Problem ist, weil Du ein 
wenig lakonisch fragst.

von Thomas T. (knibbel)


Lesenswert?

Ein sehr bildhafter Vergleich:

Oder nimm einen einfachen normalen Lichtschalter an deiner Wand. Du 
kannst mit deinem Finger auf die eine Seite des Schalters drücken (S=1) 
und das Licht geht an (Q=1). Wenn Du den Finger wieder wegnimmst (S=0) 
bleibt das Licht an (Q=1). Du kannst auch wiederholt auf dieser Seite 
drücken, sobald S kurz 1 wurde, geht Q auf 1 und bleibt dort.

Drückst Du jetzt auf die andere Seite des Schalters (R=1), dann geht das 
Licht wieder aus (Q=0). Auch dieser Vorgang lässt sich beliebig 
wiederholen...

Mit gleichzeitig auf beiden Seiten drücken, lasse ich jetzt mal außen 
vor...

Hoffe das hilft...

Gruß,
Thomas

von Max M. (Gast)


Lesenswert?

Okay soweit verstanden, jetzt frag ich mich nur noch: warum kann denn 
das Drücken der Klingel oder des Laptop-Buttons oder die Nachricht des 
brennenden Hauses nicht DIREKT mit Q verbunden werden?

Also warum kann man durch das Drücken eines Knopfes nicht direkt ein bit 
zwischen 0 und 1 hin- und herspringen lassen ? Also ich drücke 1 x und Q 
wird meinetwegen zu 1 (wenn es vorher 0 war), ich drücke nochmal und Q 
wird zu 0 usw. ... ?

von Fliegenklatsche (Gast)


Lesenswert?

Max M. schrieb:
> warum kann denn
> das Drücken der Klingel oder des Laptop-Buttons oder die Nachricht des
> brennenden Hauses nicht DIREKT mit Q verbunden werden?

Kannst du schon aber sobald die Klingel wieder losgelassen wird ( == 
Eingang wird wieder 0), wird auch der Ausgang Q wieder 0.

Max M. schrieb:
> Also warum kann man durch das Drücken eines Knopfes nicht direkt ein bit
> zwischen 0 und 1 hin- und herspringen lassen ? Also ich drücke 1 x und Q
> wird meinetwegen zu 1 (wenn es vorher 0 war), ich drücke nochmal und Q
> wird zu 0 usw. ... ?

Herzlichen Glückwunsch, damit hast du ein D-Latch gedanklich erfunden 
:-D Mit entsprechender Beschaltung kannst du aus einem RS-Flipflop und 
noch einigen anderen Gattern ein D-Latch oder auch Toggle-Flipflop 
bauen.

Allerdings ist das für den Fall mit dem Postboten blöd. Angenommen der 
Postbote kommt und danach noch der Paketdienst, dann wäre die Klingel 
wieder aus ;-)

von Lochrasterfan (Gast)


Lesenswert?

Max M. schrieb:
> Also ich drücke 1 x und Q
> wird meinetwegen zu 1 (wenn es vorher 0 war), ich drücke nochmal und Q
> wird zu 0 usw. ... ?

Das ist dann das T-FlipFlop.

Als Speicher ist das weniger gut geeignet. Nehmen wir das Beispiel mit 
dem Klingelknopf von oben noch mal her: Wenn nur einer in deiner 
Abwesenheit geklingelt hat, dann siehst du das zwar, weil Q=1. Wenn der 
Knopf aber zweimal gedrückt wurde, dann ist Q wieder 0 und du weißt 
nicht, ob keinmal oder zweimal geklingelt wurde.

Wenn du allerdings mehrere solcher T-Flipflops in Reihe schaltest, 
kannst du einen Zähler bauen, indem du alle Qs auswertest ... dann weißt 
du, wie häufig jemand geklingelt hast - vorausgesetzt, du verwendest 
genügend Stellen, damit der Zähler nicht überläuft ...

von Bitflüsterer (Gast)


Lesenswert?

Max M. schrieb:
> Okay soweit verstanden, jetzt frag ich mich nur noch: warum kann denn
> das Drücken der Klingel oder des Laptop-Buttons oder die Nachricht des
> brennenden Hauses nicht DIREKT mit Q verbunden werden?

Weil, wenn Du die den Klingeltaster loslässt, die Klingel wieder aufhört 
zu klingeln.

> Also warum kann man durch das Drücken eines Knopfes nicht direkt ein bit
> zwischen 0 und 1 hin- und herspringen lassen ? Also ich drücke 1 x und Q
> wird meinetwegen zu 1 (wenn es vorher 0 war), ich drücke nochmal und Q
> wird zu 0 usw. ... ?

Das kann man schon. Leider fragst Du wieder ein wenig lakonisch.
Denn das Problem, das man hat, ist, festzustellen, welchen Zustand man 
gerade vorliegen hat. Muss der nächste Zustand 1 oder 0 sein? Woher 
weiss man das? Ganz klar: Wenn der gegenwärtige 1 ist, dann muss der 
folgende 0 sein und umgekehrt.

Schau Dir mal einen Kugelschreiber an. Der reagiert so, wie Du es oben 
beschrieben hast. Wie kommt es, das die Mine nach dem drücken 
herausfährt, wenn sie vorher drin war und umgekehrt? Ganz einfach. Der 
gegenwärtige Zustand wird "festgehalten" oder in anderen Worten 
"gespeichert".

Was heisst also in Deiner Frage "direkt"? Was wäre "indirekt"? Du 
müsstest mal genau überlegen, was Du damit meinst. Dann kommst Du Deinem 
gedanklichen Problem auf die Spur, vermute ich.

Wenn ich aber mal vermuten darf, dann liegt das begriffliche Problem 
darin, das Du keinen Unterschied zwischen
a) dem vorliegen eines Zustandes oder dem bestehen einer Situation
und
b) dem "speichern" eines Zustandes erkennen kannst.

Das ist beim Klingeln, wie oben beschrieben: Es wird nur so lange 
geklingelt wie Du den Klingelknopf drückst. Es gibt zwei Zustände: Es 
klingelt oder es ist ruhig.
Das Speichern aber des einen Zustandes "es klingelt" ergibt eine neue 
Informationen, (und damit einen neuen Zustand). Nämlich: Es hat einmal 
geklingelt (unabhängig davon ob es im Moment klingelt oder nicht) oder 
es hat noch nie geklingelt (seit dem letzten Reset).

Das macht es vielleicht etwas klarer: Das Speichern eines Zustandes 
ergibt eine neue Information.

Es klingelt nicht.
Es klingelt nicht und es hat früher einmal geklingelt.
Es klingelt im Moment.
Es klingelt im Moment und es hat früher einmal (einschliesslich oder 
ausschlieslich des momentanen Klingelns) geklingelt.

(Das Beispiel führt ein weiteres Problem ein. Nämlich ob eine 
Zustandsänderung am Anfang oder am Ende gespeichert wird. Aber das 
behandle ich hier mal nicht im Einzelnen).

von Max M. (Gast)


Lesenswert?

Direkt bedeutet für mich:

ich setze Q auf 1: Q <= '1'

Dadurch habe ich ein bit gespeichert, eine 1.

Indirekt bedeutet für mich:

ich setzte zuerst set auf 1: set <= '1'

wodurch dann über einen umständlichen Apparat Q auf 1 gesetzt wird. 
Dabei wollte ich nur eine 1 abspeichern und hätte diese doch einfach in 
Q speichern können.

Aber ich glaube, ich habe die Aussage "ein bit speichern" tatsächlich 
falsch verstanden. Ich dachte speichern bedeutet, ich möchte eine 1 
(oder eine 0) abspeichern. Also kann ich einfach Q <= '1' oder Q <= '0' 
sagen und habe ein bit, eine Information (true oder false) gespeichert. 
Wozu noch ein set und das ganze drumherum?

Aber so wie ich das jetzt verstehe, geht es nicht darum, einfach nur 
eine 1 oder eine 0 abzuspeichern (Das ist nämlich woran ich denke, wenn 
ich höre "Ein RS FlipFlop speichert ein bit"), sondern man möchte 
speichern, ob ein ANDERES bit jemals auf 1 gesprungen ist.

von Bitflüsterer (Gast)


Lesenswert?

Max M. schrieb:
> Direkt bedeutet für mich:
>
> ich setze Q auf 1: Q <= '1'
>
> Dadurch habe ich ein bit gespeichert, eine 1.
>
> Indirekt bedeutet für mich:
>
> ich setzte zuerst set auf 1: set <= '1'
>
> wodurch dann über einen umständlichen Apparat Q auf 1 gesetzt wird.
> Dabei wollte ich nur eine 1 abspeichern und hätte diese doch einfach in
> Q speichern können.

Nein. Tut mir leid. Das Beispiel passt nicht, wie ich Dir auch schon in 
dem Beitrag Beitrag "Re: RS FlipFlop nicht verstanden" 
geschrieben habe.

Was Du da beschreibst, ist ein konstantes Signal. Es kann sich nicht 
verändern. Aber eine "Speicherung", hat an sich nur Sinn, wenn sich das 
Gespeicherte irgendwie auch ändern kann. Anderenfalls bräuchte man es 
nicht zu speichern. Das ist sehr wichtig! Mache Dir das erstmal klar. 
Beim Speichern geht es um das festhalten von etwas Flüchtigem.

Ich halte es für eher unglücklich, dass Du anscheinend ein paar 
Grundkenntnisse von VHDL hast. Da muss man dann zusätzliche 
Mißverständnisse klären, obwohl man üblicherweise erstmal mit 
Transistoren ein Flip-Flop baut und dann mit TTL (LS, HC, HCT oder 
ähnlichem) mehrere Flip-Flops verwendet.

Das reale Äquivalent Deiner Beschreibung ist einfach nur ein Draht vom 
Minus- oder Pluspol einer Spannungsquelle zu einem Ausgang.
Gib einfach mal Deinen VHDL-Code im Xilinx-Webpack oder Quartus (oder 
irgendwas Ähnliches ein) ein, lasse den Code analysieren und schaue Dir 
hinterher die Schaltung an. Dann wirst Du es sehen.

> Aber ich glaube, ich habe die Aussage "ein bit speichern" tatsächlich
> falsch verstanden. Ich dachte speichern bedeutet, ich möchte eine 1
> (oder eine 0) abspeichern. Also kann ich einfach Q <= '1' oder Q <= '0'
> sagen und habe ein bit, eine Information (true oder false) gespeichert.
> Wozu noch ein set und das ganze drumherum?

Wie oben beschrieben: Weil Du damit keine veränderliche Information 
speichern kannst.

> Aber so wie ich das jetzt verstehe, geht es nicht darum, einfach nur
> eine 1 oder eine 0 abzuspeichern (Das ist nämlich woran ich denke, wenn
> ich höre "Ein RS FlipFlop speichert ein bit"), sondern man möchte
> speichern, ob ein ANDERES bit jemals auf 1 gesprungen ist.

Was ist hier das "andere Bit"?
Nimm nochmal das Klingel-Beispiel. Der Taster ist an Set angeschlossen. 
Genau die Information ob die Taste gedrückt wurde, wird auch 
gespeichert. D.h. das "gespeicherte Bit" und das Set-Bit (wenn man das 
mal kurz so nennen will) sind das selbe.

Übrigens: Betrachte mal nicht Bits, sondern Informationen. Das ist viel 
sinnvoller um sich die Grundprobleme klarzumachen.

Ich möchte Dir auch wärmstens empfehlen mal ein RS-Flip-Flop auf einem 
Breadboard aufzubauen und damit zu spielen. Da wird vieles klarer. Fast 
alle die ich kenne und die ein wirklich profundes Verständnis der 
Probleme haben, haben so angefangen. Diese Gedankenexperimente haben den 
Nachteil, dass man sehr aufpassen muss präzise und konsequent zu denken.

Ich würde mir auch wünschen, dass Du die Beispiele hier, mal 
reflektierst und paraphrasierst und wenn möglich eigene Anwendungen 
findest und im Detail erklärst.

von Georg A. (georga)


Lesenswert?

Wenn du schon in VHDL denkst, ist die Funktion eines RS-FFs ungefähr so 
zu beschreiben:

Q <= '1' when S='1'    else    '0' when R='1'     else Q

Das beinhaltet genau die drei gewünschten Funktionen, die ein RS so hat:

1) Wird S irgendwann mal 1, geht der Ausgang auf 1 (Q<='1')
2) Wird R irgendwann mal 1, geht der Ausgang auf 0 (Q<='0')
3) Ist weder S noch R 1, bleibt der Ausgang so wie er ist (Q<=Q)

Weil das Zurücknehmen von S bzw. R (also das Verlassen von Punkt 1 oder 
2) zwangsläufig in den dritten Punkt führt, bleibt der beim Zurücknehmen 
gerade aktuelle Zustand von Q weiterhin erhalten. Und damit gibts die 
Speicherung.

Diese EINE Rückführung ist auch bei NOR/NAND-RS-FFs erkennbar, wenn man 
die übliche Überkreuzverschaltung (wo es scheinbar zwei Feedbacks gibt) 
etwas anders zeichnet. Der /Q-Ausgang ist auch nur ein Nebenprodukt der 
NOR/NAND-Technik, er ist nicht unbedingt nötig oder vorhanden.

Dass diese Speicherung zwei getrennte Signale braucht, ist für die 
Speicherung eines Bitzustands unpraktisch. Das heisst aber nicht, dass 
das RS überflüssig ist, es gibt genügend Anwendungen für ein reines RS 
und es ist halt die Basis für alles andere.

Wenn du den Zustand eines Bits D speichern willst, brauchst du aber auch 
wieder ein zweites Signal (nennen wir es mal C), dass sagt, wann D 
gespeichert werden soll. D.h. egal wie, zwei Signale sind für eine 
sinnvolle Speicherung (mit Änderungsmöglichkeit...) immer notwendig.

Q <= D when C='1' else Q

Wird C 1, folgt Q dem D-Eingang (wie ein Stück Draht, deswegen heisst 
das auch gern transparentes Flipflop). Wird C 0, bleibt Q auf dem 
letzten D-Wert stehen.

Versuch erstmal das zu verstehen, dann kannst du dich an 
flankengesteuerte Flipflops (Master-Slave) wagen ;)

von Bitflüsterer (Gast)


Lesenswert?

Ich habe derweil im Editor etwas ähnliches wie Georg geschrieben. Er war 
schneller. Vielleicht hilft es Dir ja aber, wenn Du zwei verschiedene 
Darstellungen hast.

---

Um Dir mal das Problem mit VHDL zu zeigen,
hier mal zwei Codes eines RS-Flip-Flops.

Der erste ist eine Beschreibung, die sich auf das Verhalten 
konzentriert. Es wird beschrieben, unter welchen Umständen der Ausgang 
auf '1' und unter welchen anderen Umständen der Ausgang auf '0' gesetzt 
wird.

signal Q: std_logic <= '0';

if Reset = '1' & Set = '0' then
  Q <= '0';
elif Reset = '0' & Set = '1' then
  Q <= '1';
endif

Dieser Code ist weder vollständig noch im eigentlichen Sinne korrekt. 
Aber so ungefähr sähe er aus.

Du siehst, dass zwei Alternativen vorhanden sind. Du musst, falls Du das 
FF auf diese Weise beschreibst, jede real mögliche und relevante 
Alternative beschreiben.

Dein

Q <= '0'

ergibt überhaupt keine Alternativen. Wie ich schon sagte: Einfach ein 
konstantes Signal. Und eben auch keine Speicherung, denn es kann sich 
nichts verändern.

Eine alternative Beschreibung, die sich auf die Struktur konzentiert, 
sähe etwa so aus:

Q <= not (NQ AND Set);
NQ <= not (Q AND Reset);

(Wiederum kein vollständiger Code).

Die Alternativen des Ablaufs sind hier in der Form von (impliziten) 
Alternativen des Ergebnisses zweier Verknüpfungen vorhanden. Da Set und 
Reset zwei Möglichkeiten haben und mit Q resp. not Q entsprechend 
verknüpft sind können Q und not Q zwei verschiedene Werte annehmen.

Man sieht hier auch einen ganz wesentlichen Punkt der Deiner 
Beschreibung fehlt. Der Zustand nach dem Set oder Reset hängt von dem 
vorherigen Zustand ab. Wird beispielsweise Set aktiv wenn Q schon aktiv 
ist, dann ändert sich nichts. Nur wenn Q inaktiv ist, dann wird es 
aktiv.

von Peter B. (funkheld)


Lesenswert?

Hmmm...., jetzt kommen mir Zweifel ob ich nur alleine der "Dumme" bin.
Es gibt noch andere und jüngere Menschen....

-------------------------------------
Da stelle mehr uns janz dumm. Und da sage mer so: En FPGA,
dat is ene jroße schwarze Raum, der hat hinten un vorn e PIN.
De eine PIN, dat is de ..und de annere PIN, dat krieje mer später.
----------------------------------

-------------------------------------------
Kauf die endlich mal ein Buch...
Immer diese einfachen Fragen, das hält keiner aus....
------------------------------------------

Mach dir nichts draus.....

Gruss

: Bearbeitet durch User
von Peter B. (funkheld)


Lesenswert?

Hmmm.... wann begreifst du das in VHDL:

"elsif" heiß das und nicht "elif Reset = '0' & Set = '1' then"

Wie soll man hier lernen...?

Gruss

: Bearbeitet durch User
von SkyperHH (Gast)


Lesenswert?

Andere Idee:

Das RS-FlipFlop ist eine "schwarze Kiste" (egal ob es jetzt als diskrets 
digitales IC, aus Transitoren gebaut oder im FPGA realisiert).

Das Ding hat zwei Eingänge (R & S) und einen Ausgang (Q) (und dazu noch 
einen zweiten der Invertiert ist -Q).

Setzen (Q = 1) kannst du den Ausgang durch anlegen einer 1 am (S)et 
Eingang, Löschen (Q = 0) über den (R)eset Eingang... diese Information 
stellt jetzt genau ein Bit Information dar... nicht mehr oder weniger.

Siehe Wahrheitstabelle des RS-FlipFlops...

von Matthias Larisch (Gast)


Lesenswert?

Ich hab ne bessere Idee:

Dein Problem ist, dass du nicht verstehst, was du mit nem Signal in VHDL 
tust. Üblicherweise beschreibst du nämlich ein Flipflop :) Die 
Implementierung ist durch die Sprache für dich abstrahiert, du musst in 
VHDL keine Flipflops beschreiben, das ist bereits in der Standardzelle 
für die FPGAs drin und wird (als D-Flipflop) bei einer takt-gesteuerten 
Signalzuweisung verwendet.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.