Forum: FPGA, VHDL & Co. CPLD - Signal toggeln


von Sam (Gast)


Lesenswert?

Hallo,

ich habe zwei Inputs, welche ein internes Signal toggeln sollen. Bisher 
habe ich das in etwa so gelöst:

1
entity test is 
2
  Port ( 
3
    CLK : in  STD_LOGIC;
4
    RESET : in  STD_LOGIC;
5
    ON : in  STD_LOGIC;
6
    OFF : in  STD_LOGIC
7
  );
8
end test;
9
10
architecture Behavioral of test 
11
  signal STATE : STD_LOGIC;
12
13
begin
14
  process (RESET,CLK) begin
15
    if RESET = '1' then
16
      STATE <= '0';
17
    end if;
18
19
    ..
20
    ..
21
  end process;
22
23
  process (ON,OFF) begin
24
    if ON = '1' then
25
      STATE <= '1';
26
    elsif OFF = '1' then
27
      STATE <= '0';
28
    end if;
29
  end process;
30
end Behavioral;

Jetzt erhalte ich die Warnung, dass ich ein Latch fabriziert habe, was - 
soviel ich weiß - vermieden werden sollte. Ich frage mich nun, wie mache 
ich das mit einem Flip-Flop?

Danke schonmal für die Hilfe.

Gruß Sam

von Matthias G. (mgottke)


Lesenswert?

Hallo Sam,

hier sind noch einige Dinge im Argen. Ich vermute mal, dass Du noch 
Anfänger bist.

Drei Dinge sind mir auf die Schnelle eingefallen:

1. Deine Signal STATE wird in mehreren Prozessen zugewiesen.
   Ein Signal kann (zumindest sollte) immer nur an einer Stelle (in 
einem Process oder concurrent) erfolgen.

2. Du verwendest den Clock nicht. Daher auch das Latch. Der Clock ist 
zwar in der sensitivity-Liste enthalten wird aber nicht verwendet.

3. Deine Entity hat keinen Ausgang. Für die Simulation ist das kein 
Problem. Aber sonst wird dir alles wegoptimiert.

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.