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

Subversion Repositories igor

[/] [igor/] [trunk/] [processor/] [pl/] [singleport_mem.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
use work.whisk_constants.all;
8
 
9
entity singleport_mem is
10
    generic (
11
    memsize, addr_width, data_width : integer);
12
 
13
        port (
14
                clk : in std_logic;
15
                we : in std_logic;
16
                addr : in std_logic_vector(addr_width - 1 downto 0);
17
                di : in std_logic_vector(data_width - 1 downto 0);
18
                do : out std_logic_vector(data_width - 1 downto 0)
19
        );
20
end entity singleport_mem;
21
 
22
architecture behav of singleport_mem is
23
        type ram_type is array (0 to memsize - 1) of bit_vector(data_width - 1 downto 0);
24
        signal read_a : std_logic_vector(addr_width - 1 downto 0);
25
signal RAM : ram_type;
26
begin
27
        process(clk)
28
                begin
29
            --capture on rising edge, gives registered output. 
30
                        if rising_edge(clk) then
31
                                if (we = '1') then
32
                                        RAM(to_integer(unsigned(addr))) <= to_bitvector(di);
33
                                end if;
34
                                read_a <= addr;
35
                        end if;
36
        end process;
37
        do <= to_stdlogicvector(RAM(to_integer(unsigned(read_a))));
38
end behav;

powered by: WebSVN 2.1.0

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