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.
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.