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

Subversion Repositories igor

[/] [igor/] [trunk/] [processor/] [pl/] [rwmem.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 atypic
library ieee;
2
 
3
use ieee.std_logic_1164.all;
4
use ieee.std_logic_unsigned.all;
5
use ieee.numeric_std.all;
6
use std.textio.all;
7
 
8
entity rwmem is
9
    generic (memsize, addr_width, data_width : integer);
10
 
11
        port (
12
                clk : in std_logic;
13
                we : in std_logic;
14
                read_addr : in std_logic_vector(addr_width - 1 downto 0);
15
                write_addr : in std_logic_vector(addr_width - 1 downto 0);
16
                write_data : in std_logic_vector(data_width - 1 downto 0);
17
                read_data : out std_logic_vector(data_width - 1 downto 0)
18
        );
19
end entity;
20
 
21
architecture behav of rwmem is
22
        type ram_type is array (0 to memsize - 1) of bit_vector(data_width - 1
23
        downto 0);
24
 
25
        signal read_a : std_logic_vector(addr_width - 1 downto 0);
26
 
27
signal RAM : ram_type;
28
begin
29
        process(clk)
30
                begin
31
                        if rising_edge(clk) then
32
                                if (we = '1') then
33
                                        RAM(to_integer(unsigned(write_addr))) <= to_bitvector(write_data);
34
                                end if;
35
                                read_a <= read_addr;
36
                        end if;
37
        end process;
38
        read_data <= to_stdlogicvector(RAM(to_integer(unsigned(read_a))));
39
end behav;
40
 
41
 
42
 
43
 

powered by: WebSVN 2.1.0

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