Forum: FPGA, VHDL & Co. rs flip flop in fpga


von tobias hofer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich möchte das im Anhang zu sehenden Flip Flop(mit der selben
beschaltung CLK und D auf GND) in VHDL programmieren.

Kann mir jemand weiterhelfen?

Gruss Tobias

von ope (Gast)


Lesenswert?

sei mir nicht böse, aber hast Du schon einmal google bemüht? Das ist ein
klassisches Beispiel zur Einführung in VHDL, welches ich im Web bereits
vor einiger Zeit gefunden habe.

Viele Grüße
Olaf

von MockUp (Gast)


Lesenswert?

du musst dabei entscheiden ob der rück oder der setz eingang vorrang
hat, da bei einem normalen rs-flipflop die belegung set 1 und reset 1
nicht vorkommen darf.

für reset vorrangich siehts so aus
=====================

if reset ='1' then
   q  <= '0';
elsif set ='1' then
   q  <= '1';
end if;

q_not <= not q; -- der negierte ausgang

für set vorrangich siehts so aus
=====================

if set ='1' then
   q  <= '1';
elsif reset ='1' then
   q  <= '0';
end if;

q_not <= not q;

mfg

von Mario (Gast)


Lesenswert?

gehört da nicht noch ein

----------
else
  q <= q;
----------

dazu?
oder ist das egal wenn man signale in "undefiniertem" zustand
belässt?
bin relativ neu in vhdl, wollt das nur mal wissen...

lg, Mario

von FPGA-User (Gast)


Lesenswert?

Set und Reset sind Lo-Akiv, also sollte die
korrekte Beschreibung Deines Bildes so lauten :

process(set, reset, clk)
begin
   if set='0' then -- set hat Vorrang vor Reset
      q <= '1';
   elsif reset='0' then
      q <= '0';
   elsif rising_edge(clk) then
      q <= '0'; -- da D ja auf GND liegt
   end if;
end process;

von mockup (Gast)


Lesenswert?

mal so angemerkt FPGA-User,
dadurch das clk aber auch auf groundd liegt, kann man sich das mit dem
clk sparen(es kommt nie zur flankenerkennung). da es ja nur noch als
ein einfacher rs flipflop verwendet wird und nicht als d-ff was er ja
eigentlich ist.

mockup

von Olaf_K (Gast)


Lesenswert?

Ich kenne mich weder mit FPGA noch mit VHDL aus, trotzden ein Einwand:

Warum sollte /Set oder /Reset einen Vorrang bekommen?

Ein RS-FF aus "gekreutzten" NANDs oder ein 74HC74 reagieren so, daß
bei gleichzeitig gesetztem /S und /R beide Ausgänge auf High schalten
(siehe Datenblatt). Wenn irgendwann einer der Eingänge wieder auf H
schaltet, "gewinnt" der andere, der noch L ist.

Es gibt durchaus Schaltungen, wo dieser "verbotene" Zustand bewußt
ausgenutzt wird, deshalb würde ich das 1:1 übernehmen.

MfG Olaf

von Mario (Gast)


Lesenswert?

nunja...
beim "stinknormalen" RS flipflop gibts eben einen vorrang (R oder S)
wenn du sowas ohne vorrang in VHDL programmierst, musst natürlich
zusätzlichen code angeben, sowas sieht dann hardware-technisch deutlich
komplizierter aus... denk ich...

von FPGA-User (Gast)


Lesenswert?

@mockup

hast recht, CLK lag ja auch auf GND.

@Olaf_K

das hängt vom FPGA ab. Die Flip-Flops entsprechen nicht einem 7474 !
Wenn ich z.B. das Datenblatt vom Spartan 3 nehme, dann muss ich
mich entscheiden, ob ich einen asynchr. Set ODER Reset haben
möchte, beides geht offenbar gar nicht.

Die Verwendung von solchen asynchronen Funktionen sollte man eh
verweiden, ein gutes FPGA-Design ist vollsynchron.

von mockup (Gast)


Lesenswert?

@FPGA-User
jo hast recht.
wegen der aussage: "Die Verwendung von solchen asynchronen Funktionen
sollte man eh verweiden, ein gutes FPGA-Design ist vollsynchron."

habe ich vor nen halben jahr meinen kompletten code umgeschrieben, aber
jetzt gehts endlich

mfg

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.