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


von Michael K. (shamanu)


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:
1
Library IEEE;
2
use IEEE.Std_Logic_1164.all;
3
4
entity FF is
5
port(d, clk, clr, set: IN std_ulogic;
6
 q: OUT std_ulogic;)
7
end FF;
8
9
architecture a of FF is
10
begin
11
 process(clk,clr,set)
12
 begin
13
  if(clr='1') then
14
   q<='0';
15
  elsif(set='1') then
16
   q<='1';
17
  elsif(event'clk and clk='1')
18
   q<=d;
19
  end if;
20
 end process;
21
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?

von +++ (Gast)


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.

von Michael K. (shamanu)


Lesenswert?

Ok, danke für die Hilfe.

von Sven J. (svenj)


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

von J. S. (engineer) Benutzerseite


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.

von Fpgakuechle K. (Gast)


Lesenswert?

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

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.