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;