Inkrementierung nicht möglich?

Gast #3412490
Lesenswert?

Ich möchte ein Monoflop kreieren. Leider wird die Zeile

counter1 <= counter1 + 1; angekmeckert mit der Bemerkung

+ can not have such operands in this context.

Ich verstehe nicht warum. Weiß es jemand?



begin

  monoflop1:  process (clk)
  begin
    if rising_edge(clk) then
      if clear1 = '0' then
        LED1 <= '0';
        counter1 <= counter1 + 1;
      end if;
    end if;
  end process monoflop1;

  trigger1proc: process(trigger1)
  begin
    if rising_edge(trigger1) then
      clear1 <= '0';
    end if;
  end process trigger1proc;

  clear1proc: process(counter1)
  begin
    if counter1 = x"FFFFFF" then
      clear1 <= '1';
      counter1 <= x"000000";
      LED1 <= '1';
    end if;
  end process clear1proc;


end Behavioral;
Gast #3412608
Lesenswert?

Harry hatte den richtigen Hinweis! Ich habe die Bibliotheken
IEEE.STD_LOGIC_ARITH.ALL;
IEEE.STD_LOGIC_UNSIGNED.ALL;
eingebunden und damit geht es - bzw. jetzt wird etwas anderes bemängelt.
Moderator (Firma: Titel) Persönliche Seite #3412842
Lesenswert?

Franz Peter Zantis schrieb:
> IEEE.STD_LOGIC_ARITH.ALL; IEEE.STD_LOGIC_UNSIGNED.ALL;
> eingebunden und damit geht es
Siehe Beitrag "IEEE.STD_LOGIC_ARITH.ALL obsolete"


> bzw. jetzt wird etwas anderes bemängelt.
Ja klar: du darfst das Signal counter1 nicht aus 2 Prozessen 
treiben...
Sieh dir doch einfach mal an, wie andere sowas machen.

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