www.mikrocontroller.net

Forum: FPGA, VHDL & Co. [VHDL] D-FlipFlop


Autor: Michael Kroeger (shamanu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgende Aufgabe:Ein positiv flankengesteuertes D-FlipFlop mit 
asynchronen Clear und Set ist gefragt. Beide Signale sind aktiv Low.

Als Lösung wurde uns vom Lehrer folgender Code gegeben:
Library IEEE;
use IEEE.Std_Logic_1164.all;

entity FF is
port(d, clk, clr, set: IN std_ulogic;
 q: OUT std_ulogic;)
end FF;

architecture a of FF is
begin
 process(clk,clr,set)
 begin
  if(clr='1') then
   q<='0';
  elsif(set='1') then
   q<='1';
  elsif(event'clk and clk='1')
   q<=d;
  end if;
 end process;
end a;
Die Fragen: Bei aktiv Low, müßte an der Stelle if clr= und set= nicht 
ein '0' folgen?
Welcher Teil erfüllt die asynchrone Clear und Set Forderung bzw. was ist 
dies überhaupt?

Autor: +++ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, du hast recht, bei active Low muss das FF auf low reagieren, also 
müssen da auch Nullen im Code stehen. Der "if" und der erste 
"elsif"-Zweig bilden den asynchronen Teil der Schaltung, da sie den 
Ausgang sofort beeinflussen, wenn sie ein Null-Signal bekommen.
"Synchron" bedeutet, dass auf ein Taktsignal gewartet wird.

Autor: Michael Kroeger (shamanu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke für die Hilfe.

Autor: Sven Johannes (svenj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

Wobei hier wieder mal der alte Fehler mit
> (event'clk and clk='1')

gemacht wird. Ein Wechsel von Z oder X auf 1 wird (fehlerhaft) als Takt 
ausgewertet. Die richtige Funktion heißt hier
> rising_edge(clk).

Die gezeigte Variante muss sehr sorgfältig geprüft werden und ist idR 
nicht die gewünschte.

--
 SJ

Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dazu müsste man aber mal diskutieren, wie das synthetisiert wird und ob 
das nicht doch ganz genau das Gewünschte ist. Auch rein logisch gibt es 
keinen Unterschied : Es gibt ja nur 0->1 und 1->1 wobei letzterer ja 
kein Zustandswechsel und auch keine Flanke ist.

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Thema hatten wir schon mal, sieh mal ins hiesige wiki:
http://www.mikrocontroller.net/articles/VHDL

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.