All pastes #384544 Raw Edit

Someone

public text v1 · immutable
#384544 ·published 2007-03-07 04:07 UTC
rendered paste body
-- Only XST supports RAM inference
-- Infers Single Port Block Ram 
library IEEE;
use IEEE.STD_LOGIC_1164.all;  -- defines std_logic types
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity spblockram256x32 is 
	port (
		clk  : in std_logic; 
		we   : in std_logic; 
		re	  : in std_logic; 
		add : in std_logic_vector(7 downto 0); 
		din  : in std_logic_vector(31 downto 0);  
		dout : out std_logic_vector(31 downto 0));
end spblockram256x32; 
 
 architecture syn of spblockram256x32 is -- 256 x 32 spram
 
 type ram_type is array (0 to 255) of std_logic_vector (31 downto 0); 
 signal RAM : ram_type :=
      ( x"00000000", x"11111111", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234",
	x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"abcd1234", x"fefefefe", x"ffffffff"
   );


 signal dadd : std_logic_vector(7 downto 0);
 signal readout : std_logic_vector(31 downto 0); 
 
 begin 
 	process (clk) 
 	begin 
 		if (clk'event and clk = '1') then  
 			if (we = '1') then 
 				RAM(conv_integer(add)) <= din; 
 			end if;  
 			dadd <= add; 
 		end if; 
 		readout <= RAM(conv_integer(dadd)); 
		dout <= (others => 'Z');
		if re = '1' then
			dout <= readout;
		end if;
	end process; 
 
end;