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

<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>