www.mikrocontroller.net

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


Autor: tobias hofer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: ope (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: MockUp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: mockup (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olaf_K (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mockup (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.