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;
 |