i am trying to make an alu but i am in initial stage. please help me ; i wrote the alupack.vhd file which gives me no error during compilation. code is here
library ieee;
use ieee.std_logic_1164.all;
package alu_types is
subtype bits_32 is std_logic_vector(31 downto 0);
---type bit_array is array (integer range <>) of bits_32;
subtype bits_8 is bit_vector(1 downto 0);
constant lda: bits_8 :="00"; ---these are the instructions
constant ldr: bits_8 :="01";
constant add: bits_8 :="10";
constant sub: bits_8 :="11";
end package alu_types;
second file which i have made is alufunc.vhd but this gives me an error while compiling which is lda,ldr,add,sub are not directly accessible and ** Error: C:\Modeltech_pe_edu_10.0a\examples\alufunc.vhd(21): Constant "lda" is type work.alu_types.bits_8; expecting type ieee.std_logic_1164.STD_ULOGIC. similarly for other instructions as well... please help me.... thanks in advance.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use work.alu_types.all;
entity alu_func is
port (op1,op2 : in bits_32;
en: in std_logic;
rslt : out bits_32);
end entity alu_func;
architecture behav of alu_func is
begin
alu :process
variable ac,reg :bits_32;
---variable op: bits_8;
begin
case en is
when lda =>
ac:=op1 after 1 ns;
when ldr =>
reg:=op2 after 1 ns;
when add =>
ac:=ac+reg after 1 ns;
when sub =>
ac:=ac-reg after 1 ns;
end case;
rslt<=ac after 1 ns;
end process alu;
end architecture behav;