⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mem_apa3_gen.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 2 页
字号:
  end component;  constant dlen : integer := dbits + 9;  signal di1, di2, q1, q2 : std_logic_vector(dlen downto 0);  signal a1, a2 : std_logic_vector(12 downto 0);  signal en1, en2, we1, we2 : std_ulogic;begin  di1(dbits-1 downto 0) <= datain1; di1(dlen downto dbits) <= (others => '0');  di2(dbits-1 downto 0) <= datain1; di2(dlen downto dbits) <= (others => '0');  a1(abits-1 downto 0) <= address1; a1(12 downto abits) <= (others => '0');  a2(abits-1 downto 0) <= address1; a2(12 downto abits) <= (others => '0');  dataout1 <= q1(dbits-1 downto 0); q1(dlen downto dbits) <= (others => '0');  dataout2 <= q2(dbits-1 downto 0); q2(dlen downto dbits) <= (others => '0');  en1 <= not enable1; en2 <= not enable2;  we1 <= not write1; we2 <= not write2;  a9 : if (abits <= 9) generate    x : for i in 0 to (dbits-1)/9 generate      u0 : proasic3_ram4k9 generic map (9, 9) port map (        a1(8 downto 0), a2(8 downto 0), clk1, clk2, 	di1(i*9+8 downto i*9), di2(i*9+8 downto i*9),	q1(i*9+8 downto i*9), q2(i*9+8 downto i*9), 	en1, en2, we1, we2);    end generate;  end generate;  a10 : if (abits = 10) generate    x : for i in 0 to (dbits-1)/4 generate      u0 : proasic3_ram4k9 generic map (10, 4) port map (        a1(9 downto 0), a2(9 downto 0), clk1, clk2, 	di1(i*4+3 downto i*4), di2(i*4+3 downto i*4),	q1(i*4+3 downto i*4), q2(i*4+3 downto i*4), 	en1, en2, we1, we2);    end generate;  end generate;  a11 : if (abits = 11) generate    x : for i in 0 to (dbits-1)/2 generate      u0 : proasic3_ram4k9 generic map (11, 2) port map (        a1(10 downto 0), a2(10 downto 0), clk1, clk2, 	di1(i*2+1 downto i*2), di2(i*2+1 downto i*2),	q1(i*2+1 downto i*2), q2(i*2+1 downto i*2), 	en1, en2, we1, we2);    end generate;  end generate;  a12 : if (abits = 12) generate    x : for i in 0 to (dbits-1) generate      u0 : proasic3_ram4k9 generic map (12, 1) port map (        a1(11 downto 0), a2(11 downto 0), clk1, clk2, 	di1(i*1 downto i*1), di2(i*1 downto i*1),	q1(i*1 downto i*1), q2(i*1 downto i*1), 	en1, en2, we1, we2);    end generate;  end generate;-- pragma translate_off    unsup : if abits > 12 generate    x : process    begin      assert false      report  "Address depth larger than 12 not supported for ProAsic3 rams"      severity failure;      wait;    end process;  end generate;-- pragma translate_onend;library ieee;use ieee.std_logic_1164.all;entity proasic3_syncram_2p is  generic ( abits : integer := 8; dbits : integer := 32);  port (    rclk  : in std_ulogic;    rena  : in std_ulogic;    raddr : in std_logic_vector (abits -1 downto 0);    dout  : out std_logic_vector (dbits -1 downto 0);    wclk  : in std_ulogic;    waddr : in std_logic_vector (abits -1 downto 0);    din   : in std_logic_vector (dbits -1 downto 0);    write : in std_ulogic);end;architecture rtl of proasic3_syncram_2p is  component proasic3_ram4k9  generic (abits : integer range 9 to 12 := 9; dbits : integer := 9);  port (    addra, addrb : in  std_logic_vector(abits -1 downto 0);    clka, clkb   : in  std_ulogic;    dia, dib     : in  std_logic_vector(dbits -1 downto 0);    doa, dob     : out std_logic_vector(dbits -1 downto 0);    ena, enb     : in  std_ulogic;    wea, web     : in  std_ulogic);   end component;  component proasic3_ram512x18  port (    addra, addrb : in  std_logic_vector(8 downto 0);    clka, clkb   : in  std_ulogic;    di           : in  std_logic_vector(17 downto 0);    do           : out std_logic_vector(17 downto 0);    ena, enb     : in  std_ulogic;    wea          : in  std_ulogic);   end component;  constant dlen : integer := dbits + 18;  signal di1, q2, gnd : std_logic_vector(dlen downto 0);  signal a1, a2 : std_logic_vector(12 downto 0);  signal en1, en2, we1, vcc : std_ulogic;begin  vcc <= '1'; gnd <= (others => '0');  di1(dbits-1 downto 0) <= din; di1(dlen downto dbits) <= (others => '0');  a1(abits-1 downto 0) <= waddr; a1(12 downto abits) <= (others => '0');  a2(abits-1 downto 0) <= raddr; a2(12 downto abits) <= (others => '0');  dout <= q2(dbits-1 downto 0); q2(dlen downto dbits) <= (others => '0');  en1 <= not write; en2 <= not rena; we1 <= not write;  a8 : if (abits <= 8) generate    x : for i in 0 to (dbits-1)/18 generate      u0 : proasic3_ram512x18 port map (        a1(8 downto 0), a2(8 downto 0), wclk, rclk, 	di1(i*18+17 downto i*18), q2(i*18+17 downto i*18), 	en1, en2, we1);    end generate;  end generate;  a9 : if (abits = 9) generate    x : for i in 0 to (dbits-1)/9 generate      u0 : proasic3_ram4k9 generic map (9, 9) port map (        a1(8 downto 0), a2(8 downto 0), wclk, rclk, 	di1(i*9+8 downto i*9), gnd(8 downto 0),	open, q2(i*9+8 downto i*9), 	en1, en2, we1, vcc);    end generate;  end generate;  a10 : if (abits = 10) generate    x : for i in 0 to (dbits-1)/4 generate      u0 : proasic3_ram4k9 generic map (10, 4) port map (        a1(9 downto 0), a2(9 downto 0), wclk, rclk, 	di1(i*4+3 downto i*4), gnd(3 downto 0),	open, q2(i*4+3 downto i*4), 	en1, en2, we1, vcc);    end generate;  end generate;  a11 : if (abits = 11) generate    x : for i in 0 to (dbits-1)/2 generate      u0 : proasic3_ram4k9 generic map (11, 2) port map (        a1(10 downto 0), a2(10 downto 0), wclk, rclk, 	di1(i*2+1 downto i*2), gnd(1 downto 0),	open, q2(i*2+1 downto i*2), 	en1, en2, we1, vcc);    end generate;  end generate;  a12 : if (abits = 12) generate    x : for i in 0 to (dbits-1) generate      u0 : proasic3_ram4k9 generic map (12, 1) port map (        a1(11 downto 0), a2(11 downto 0), wclk, rclk, 	di1(i*1 downto i*1), gnd(0 downto 0),	open, q2(i*1 downto i*1), 	en1, en2, we1, vcc);    end generate;  end generate;-- pragma translate_off    unsup : if abits > 12 generate    x : process    begin      assert false      report  "Address depth larger than 12 not supported for ProAsic3 rams"      severity failure;      wait;    end process;  end generate;-- pragma translate_onend;library ieee;use ieee.std_logic_1164.all;library techmap;use techmap.allmem.all;entity proasic3_syncram is  generic ( abits : integer := 10; dbits : integer := 8 );  port (    clk      : in std_ulogic;    address  : in std_logic_vector((abits -1) downto 0);    datain   : in std_logic_vector((dbits -1) downto 0);    dataout  : out std_logic_vector((dbits -1) downto 0);    enable   : in std_ulogic;    write    : in std_ulogic   ); end;architecture rtl of proasic3_syncram issignal gnd : std_logic_vector(abits+dbits downto 0);begin  gnd <= (others => '0');  r2p  : if abits <= 8 generate     u0 : proasic3_syncram_2p generic map (abits, dbits)       port map (clk, enable, address, dataout, clk, address, datain, write);  end generate;  rdp  : if abits > 8 generate     u0 : proasic3_syncram_dp generic map (abits, dbits)         port map (clk, address, datain, dataout, enable, write,                    clk, gnd(abits-1 downto 0), gnd(dbits-1 downto 0), open, gnd(0), gnd(0));  end generate;end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -