[VHDL] D-FlipFlop

OP #423721
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?
Gast #423752
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.
#423811
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren