"+ kann nicht wie Operanden, in diesem Zusammenhang." - Fehler ( VHDL-CODE)
- kann keine solche Operanden, die in diesem Zusammenhang
Kann mir jemand sagen, was falsch ist und wie man es beheben bitte?
Habe ich versucht zu suchen, das problem auf der internet - warum kann ich nicht hinzufügen STD_LOGIC_VECTOR und ich habe nichts gefunden, das erklärt Recht mein problem. So hier bitte ich Euch, Jungs, was ist das problem?
entity Modes is
Port ( RST : in STD_LOGIC;
CLK_33MHZ : in STD_LOGIC;
BTN : in STD_LOGIC;
LED : out STD_LOGIC);
end Modes;
architecture Behavioral of Modes is
signal ledstatus : STD_LOGIC;
signal mode : STD_LOGIC_VECTOR(1 downto 0);
signal modestatus : STD_LOGIC_VECTOR (1 downto 0);
begin
process(CLK_33MHZ,RST)
variable cnt : integer range 0 to 33000000;
begin
if(RST = '1') then
cnt := 0;
mode <= "00";
LED <= '0';
ledstatus <= '0';
elsif(rising_edge(CLK_33MHZ)) then
if(BTN = '1') then
elsif(mode = "11") then
mode <= "00";
else
**mode <= mode + "01";** -- the problem in the code
end if;
if(mode = "00") then
LED <= '0';
elsif(mode = "01") then
LED <= '1';
elsif(mode = "10") then
if(cnt = 33000000) then
LED <= not ledstatus;
else
cnt := cnt + 1;
end if;
elsif(mode = "11") then
if(cnt = 330000) then
LED <= not ledstatus;
else
cnt := cnt + 1;
end if;
end if;
end if;
LED <= ledstatus;
end process;
end Behavioral;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
std_logic_vector
ist nur ein Vektor von bits - es ist nicht unbedingt eine Nummer. Die+
Betreiber hat in diesem Kontext keine Bedeutung.Müssen Sie explizit angeben, dass es ist eine Zahl, in deinem Fall eine Zahl ohne Vorzeichen, und konvertieren Sie es dann zurück, um einen
std_logic_vector
:Wenn
mode
gleich 3 ist, hinzufügen 1 wird es wrap Runde zurück auf 0.Gibt es viele andere Probleme mit deinem code, aber das wird zu beheben, dass eine sofortige Synthese Fehler.
use ieee.numeric_std.all; use ieee.std_logic_unsigned.all;
sollten Sie nur verwendennumeric_std
unsigned
und Allgemeinestd_logic
Unterstützung, aber ich werde vorschlagen, dasslibrary ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all;
verwendet wird, und nur dies; das problem, das Sie beschreiben, in der Kommentar kann durch die Verwendung mehrerer und Paketen, die Konflikte verursachen, einschließlich beispielsweisestd_logic_unsigned
.