Eric Cartman
Gast
|
Erstellt: 25.05.11, 21:51 Betreff: Can't determine definition of operator ""and""
drucken
weiterempfehlen
|
|
|
Hallo,
fuer die Uni muss ich einen kleinen Taschenrechner in VHDL implementieren, die Hardwareprogrammierung ist mir aber noch etwas fremd. Den im Titel beschriebenen Fehler bekomm ich, wenn ich zwei Variablen vom Typ std_logic_vector miteinander verknuepfen will. Laut unseren VL-Folien sollte das aber machbar sein!
Hier mal der wesentliche Code:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all;
entity calculator_core is port( inc, sel, rst : in std_logic; stageOut : out std_logic_vector(2 downto 0); outputVal : out std_logic_vector(7 downto 0)); end calculator_core
architecture behavioral of calculator_core is signal aS : std_logic_vector(7 downto 0); signal bS : std_logic_vector(7 downto 0); signal opS : std_logic_vector(7 downto 0); signal resS : std_logic_vector(7 downto 0); signal stateS : std_logic_vector(2 downto 0);
begin
... ...
selProc:process(sel,rst) variable aV : std_logic_vector(7 downto 0):= "00000000"; variable bV : std_logic_vector(7 downto 0):= "00000000"; begin if state = "100" then if inc'event and inc = '0' then case op(2 downto 0) is when "001" => res := a + b; when "010" => res := a - b; when "100" => res := (aV(7 downto 0) and bV(7 downto 0)); when others => res :=0; end case; end if; end if; end process; end behavioral;
Auch when "100" => res := aV and bV; geht nicht. Die noetigen Libs sind doch eigentlich eingebunden? Auch kompiliert der Code, wenn ich die "and"-Zeile auskommentiere und das Programm arbeitet auf der Hardware auch so wie es soll.
Irgendwer eine Idee?
Danke schon mal fuer die Hilfe.
Gruss
Eric Cartman
P.S. Gibt es hier keinen "Code"-Kasten oder hab ich den uebersehen?
|
|