Toggle FF

Gast #297104
Lesenswert?

Hallo,

ich glaub ich hab grad ne Denkblockade...folgender Code soll ein T-FF
darstellen, hat meines Erachtens auch schon vor einiger Zeit schonmal
funktioniert, nun zeit mir Modelsim aber am Ausgang immer 'U'. Was is
da los? Kann mir jemand nen Tip geben?
1
entity NRZI is
2
Port (CLK, DATA_IN : in std_logic;
3
      DATA_OUT: out std_logic);
4
end NRZI;
5

6
architecture Verhalten of NRZI is
7
signal NRZI_INT: std_logic;
8
signal FF_INPUT: std_logic;
9

10
begin
11

12
KOMB: process(DATA_IN, NRZI_INT)
13
begin
14
    case DATA_IN is
15
  when '1' => FF_INPUT <= NRZI_INT;
16
  when others => FF_INPUT <= DATA_IN xnor NRZI_INT;
17
    end case;
18
end process KOMB;
19

20
DFF: process (CLK, DATA_IN)
21
begin
22
  if CLK'event and CLK = '1' then
23
    NRZI_INT <= FF_INPUT;
24
  end if;
25
end process DFF;
26

27
DATA_OUT <= NRZI_INT;
28

29
end Verhalten;

Danke schonmal...
Gast #297105
Lesenswert?

Hat sich erstmal erledigt, muss das Signal NRZI_INT natürlich mit '1'
initialisieren....nun hab ich nur noch nen anderes Problem. Bei
folgendem Code soll der Datenstrom, der in obigen Code reingeht wieder
decodiert werden. Das funktioniert auch, hab nur in der Simulation
Störspitzen bei Data_out = '0' im Takt von CLK. Was is denn da los?
1
entity DENRZI is
2
port(CLK, DATA_IN: in std_logic;
3
     DATA_OUT: out std_logic);
4
end DENRZI;
5

6
architecture Verhalten of DENRZI is
7
signal DENRZI_INT: std_logic := '1';
8

9
begin
10

11
DENRZI: process(CLK)
12
begin
13
  if CLK'event and CLK = '1' then
14
    DENRZI_INT <= DATA_IN;
15
  end if;
16
end process DENRZI;     
17

18
DATA_OUT <= DENRZI_INT xnor DATA_IN;
19

20
end Verhalten;
Gast #297107
Lesenswert?

So, jetzt hab ich es. Ich hab den Prozess DENRZI folgendermassen
geändert:
1
DENRZI: process(CLK)
2
begin
3
  if CLK'event and CLK = '1' then
4
    DENRZI_INT <= DATA_IN;
5
   DATA_OUT <= DENRZI_INT xnor DATA_IN;
6
  end if;
7
end process DENRZI;
und schon sind die Störspitzen weg. Also einfach ne
Ausgangssynchronisation.

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