------------------------------------------------------------------------------- -- Basic Computer Memory Segment ------------------------------------------------------------------------------- USE work.basic_pkg.ALL; USE work.bv_arithmetic.ALL; ENTITY basic_mem IS PORT(ar : IN bit_vector(11 DOWNTO 0); start : IN bit; clock : IN bit; load : IN bit; instr : IN bit_vector(15 DOWNTO 0); mem_in : OUT bit_vector(15 DOWNTO 0); address_in : IN integer range 0 to 4095; mem_out : IN bit_vector(15 DOWNTO 0); mem_load : IN bit ); END basic_mem; ARCHITECTURE basic_mem_behave OF basic_mem IS SIGNAL memory : mem_array(4095 DOWNTO 0);-- change back later 4095 BEGIN -- basic_mem_behave PROCESS(ar, start) VARIABLE temp_ar : integer range 0 to 4095; BEGIN temp_ar := bvtoi(ar); mem_in <= memory(temp_ar); END PROCESS; PROCESS VARIABLE temp_ar : integer range 0 to 4095; BEGIN WAIT UNTIL clock'EVENT and clock = '1'; IF (load = '1') THEN memory(address_in) <= instr; ELSIF (mem_load = '1') THEN temp_ar := bvtoi(ar); memory(temp_ar) <= mem_out; END IF; END PROCESS; END basic_mem_behave;