33 lines
839 B
VHDL
33 lines
839 B
VHDL
|
|
ARCHITECTURE rtl OF dataMemory IS
|
|
|
|
-- Bank of data
|
|
type t_dataBank is array (0 to (2**g_memoryNbBits)-1) of
|
|
std_ulogic_vector(g_dataWidth-1 downto 0);
|
|
-- A bank of data
|
|
signal larr_data: t_dataBank;
|
|
|
|
BEGIN
|
|
|
|
process(rst, clk)
|
|
begin
|
|
if rst = '1' then
|
|
larr_data <= (others => (others => '0')) after g_tMemWr;
|
|
elsif rising_edge(clk) then
|
|
if en = '1' and writeEn = '1' then
|
|
-- skip the two last bits (since we do only +4)
|
|
larr_data(to_integer(unsigned(
|
|
address(g_memoryNbBits+1 downto 2)
|
|
))) <= writeData after (g_tMemWr + g_tSetup);
|
|
end if;
|
|
end if;
|
|
end process;
|
|
|
|
-- Comb. read
|
|
-- skip the two last bits (since we do only +4)
|
|
readData <= larr_data(to_integer(unsigned(
|
|
address(g_memoryNbBits+1 downto 2)
|
|
))) after g_tMemRd;
|
|
|
|
END ARCHITECTURE rtl;
|