OpenCores
URL https://opencores.org/ocsvn/igor/igor/trunk

Subversion Repositories igor

[/] [igor/] [trunk/] [processor/] [pl/] [rwmem.vhd] - Rev 4

Compare with Previous | Blame | View Log

library ieee;
 
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;
use std.textio.all;
 
entity rwmem is
    generic (memsize, addr_width, data_width : integer);
 
	port (
		clk : in std_logic;
		we : in std_logic;
		read_addr : in std_logic_vector(addr_width - 1 downto 0);
		write_addr : in std_logic_vector(addr_width - 1 downto 0);
		write_data : in std_logic_vector(data_width - 1 downto 0);
		read_data : out std_logic_vector(data_width - 1 downto 0)
	);
end entity;
 
architecture behav of rwmem is
	type ram_type is array (0 to memsize - 1) of bit_vector(data_width - 1
	downto 0);
 
	signal read_a : std_logic_vector(addr_width - 1 downto 0);
 
signal RAM : ram_type;
begin
	process(clk)
		begin
			if rising_edge(clk) then
				if (we = '1') then
					RAM(to_integer(unsigned(write_addr))) <= to_bitvector(write_data);
				end if;
				read_a <= read_addr;
			end if;
	end process;
	read_data <= to_stdlogicvector(RAM(to_integer(unsigned(read_a))));
end behav;
 
 
 
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.