www.pudn.com > jaguar2s.zip > Ram2rw4x256xM.vhd


--************************************************************ 
--************************************************************ 
--*----------------------------------------------------------* 
--*|Version                               :2.0               | 
--*|Date of Last Revision                 :02/23/2001        | 
--*----------------------------------------------------------* 
--************************************************************ 
-- Copyright (C) 1999 Drey Enterprises Inc.   All Rights Reserved. 
--************************************************************ 
-- Warning: This file is protected by Federal Copyright Law, 
-- with all rights reserved. It is unlawful to reproduce 
-- any parts of this file, in any form, without expressed 
-- written permission from Drey Enterprises Inc. This Copyright 
-- is actively enforced. 
--************************************************************ 
--************************************************************ 
 
library IEEE; 
use IEEE.std_logic_1164.all; 
 
-- Four 2port RAMS of variable width 
  
entity RAM2RW4x256xM is 
    generic( 
        WORD_WIDTH       :integer := 32 
    ); 
    port ( 
        clk              :in std_logic; 
        pass             :in std_logic_vector(3 downto 0); 
        wea0             :in std_logic; 
        web0             :in std_logic; 
        addra0           :in std_logic_vector(7 downto 0); 
        addrb0           :in std_logic_vector(7 downto 0); 
        dataina0         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        datainb0         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataouta0        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataoutb0        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        wea1             :in std_logic; 
        web1             :in std_logic; 
        addra1           :in std_logic_vector(7 downto 0); 
        addrb1           :in std_logic_vector(7 downto 0); 
        dataina1         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        datainb1         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataouta1        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataoutb1        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        wea2             :in std_logic; 
        web2             :in std_logic; 
        addra2           :in std_logic_vector(7 downto 0); 
        addrb2           :in std_logic_vector(7 downto 0); 
        dataina2         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        datainb2         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataouta2        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataoutb2        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        wea3             :in std_logic; 
        web3             :in std_logic; 
        addra3           :in std_logic_vector(7 downto 0); 
        addrb3           :in std_logic_vector(7 downto 0); 
        dataina3         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        datainb3         :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataouta3        :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataoutb3        :out std_logic_vector(WORD_WIDTH-1 downto 0) 
     ); 
end RAM2RW4x256xM; 
 
architecture structure of RAM2RW4x256xM is 
 
    component RAM2RW256xM 
    generic( 
        WORD_WIDTH       :integer); 
    port( 
        clk              :in std_logic; 
        pass             :in std_logic_vector(3 downto 0); 
        wea              :in std_logic; 
        web              :in std_logic; 
        addra            :in std_logic_vector(7 downto 0); 
        addrb            :in std_logic_vector(7 downto 0); 
        dataina          :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        datainb          :in std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataouta         :out std_logic_vector(WORD_WIDTH-1 downto 0); 
        dataoutb         :out std_logic_vector(WORD_WIDTH-1 downto 0) 
    ); 
    end component; 
     
begin 
 
    ram0:RAM2RW256xM 
    generic map(WORD_WIDTH => WORD_WIDTH) 
    port map( 
        clk => clk, 
        pass => pass, 
        wea => wea0, 
        web => web0, 
        addra => addra0, 
        addrb => addrb0, 
        dataina => dataina0, 
        datainb => datainb0, 
        dataouta => dataouta0, 
        dataoutb => dataoutb0 
    ); 
 
    ram1:RAM2RW256xM 
    generic map(WORD_WIDTH => WORD_WIDTH) 
    port map( 
        clk => clk, 
        pass => pass, 
        wea => wea1, 
        web => web1, 
        addra => addra1, 
        addrb => addrb1, 
        dataina => dataina1, 
        datainb => datainb1, 
        dataouta => dataouta1, 
        dataoutb => dataoutb1 
    ); 
 
    ram2:RAM2RW256xM 
    generic map(WORD_WIDTH => WORD_WIDTH) 
    port map( 
        clk => clk, 
        pass => pass, 
        wea => wea2, 
        web => web2, 
        addra => addra2, 
        addrb => addrb2, 
        dataina => dataina2, 
        datainb => datainb2, 
        dataouta => dataouta2, 
        dataoutb => dataoutb2 
    ); 
 
    ram3:RAM2RW256xM 
    generic map(WORD_WIDTH => WORD_WIDTH) 
    port map( 
        clk => clk, 
        pass => pass, 
        wea => wea3, 
        web => web3, 
        addra => addra3, 
        addrb => addrb3, 
        dataina => dataina3, 
        datainb => datainb3, 
        dataouta => dataouta3, 
        dataoutb => dataoutb3 
    ); 
 
end structure;