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;
Und die Bibliotheken, die du einbindest. Also einfach mal das ganze Modul ;-')
Franz Peter Zantis schrieb: > counter1 <= counter1 + 1; angekmeckert mit der Bemerkung > > + can not have such operands in this context. Du benutzt wahrscheinlich std_logic_vector als Signal, dann geht das nicht. Benutze mal am besten Integer oder wenigstens unsigned dafür.
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.
Du musst die Bibliothek ieee.numeric_std einbinden, den Vektor zu unsigned machen, inkrementieren, und wieder zurück zu std_logic_vector. counter1 <= std_logic_vector(unsigned(counter1) + 1);
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.
:
Bearbeitet durch Moderator
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.