OpenCores
URL https://opencores.org/ocsvn/complex-gaussian-pseudo-random-number-generator/complex-gaussian-pseudo-random-number-generator/trunk

Subversion Repositories complex-gaussian-pseudo-random-number-generator

[/] [complex-gaussian-pseudo-random-number-generator/] [trunk/] [urng/] [DP_MEM.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 cowboyor
library IEEE;
2
  use IEEE.Std_Logic_1164.all;
3
  use IEEE.Std_Logic_Arith.all;
4
  use IEEE.Std_Logic_Unsigned.all;
5
 
6
entity dp_mem is
7
  generic (
8
        Addr_Wdth : Natural := 9;
9
        Bit_Wdth  : Natural := 32
10
  );
11
           -- DO NOT USE more than 14 address bits
12
           -- Using more than 11 address bits may be inefficient for some data widths.
13
  port (Clock         : in  Std_Logic;
14
        Write_Enable  : in  Std_Logic;
15
        Write_Address : in  Std_Logic_Vector(Addr_Wdth-1 downto 0);
16
        Read_Enable   : in  Std_Logic;
17
        Read_Address  : in  Std_Logic_Vector(Addr_Wdth-1 downto 0);
18
        Data_In       : in  Std_Logic_Vector(Bit_Wdth-1 downto 0);
19
        Data_Out      : out Std_Logic_Vector(Bit_Wdth-1 downto 0)
20
        );
21
end dp_mem;
22
 
23
architecture rtl of dp_mem is
24
  Type T_Mem is array (0 to 311) of Std_Logic_Vector(Bit_Wdth-1 downto 0);
25
  signal Mem_Contents : T_Mem;
26
begin  -- rtl
27
  S_Write_Mem : process(Clock)
28
  begin
29
    -- Do not use write first
30
    if Clock'event and Clock = '1' then
31
      if Read_Enable = '1' then
32
        Data_Out <= Mem_Contents(conv_integer(Read_Address));
33
      end if;
34
      if Write_Enable = '1' then
35
        Mem_Contents(conv_integer(Write_Address)) <= Data_In;
36
      end if;
37
    end if;
38
  end process;
39
end rtl;

powered by: WebSVN 2.1.0

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