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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [rtl/] [techmap/] [mem/] [types_mem.vhd] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
----------------------------------------------------------------------------
2
--! @file
3
--! @copyright  Copyright 2015 GNSS Sensor Ltd. All right reserved.
4
--! @author     Sergey Khabarov
5
--! @brief      Declaration types_mem package components.
6
------------------------------------------------------------------------------
7
--! Standard library
8
library ieee;
9
use ieee.std_logic_1164.all;
10
--! Provide common generic log() function
11
library commonlib;
12
use commonlib.types_common.all;
13
--! AMBA system bus specific library.
14
library ambalib;
15
--! AXI4 configuration constants.
16
use ambalib.types_amba4.all;
17
 
18
--! @brief      Declaration of 'virtual' Memory components.
19
package types_mem is
20
 
21
  --! @brief   Declaration of the "virtual" BootROM component.
22
  --! @details BootRom start address must implements address matching to the
23
  --!          CPU reset vector (0x200) and all processing after power-on is
24
  --!          using this memory block. BootRom size depends of the configuration
25
  --!          and size of the generated hex file. 
26
  --!          Component implements one-clock access to the
27
  --!          ROM without wait-staits. Datawidth depends of the AXI4 bus
28
  --!          configuration.
29
  --! @param[in] tech    Generic technology selector.
30
  --! @param[in] hex_filename     Generic argument defining hex-file location.
31
  --! @param[in] clk     System bus clock.
32
  --! @param[in] address Input address.
33
  --! @param[out] data   Output data value.
34
  component BootRom_tech is
35
  generic (
36
    memtech : integer := 0;
37
    sim_hexfile : string
38
  );
39
  port (
40
    clk       : in std_logic;
41
    address   : in global_addr_array_type;
42
    data      : out std_logic_vector(CFG_NASTI_DATA_BITS-1 downto 0)
43
  );
44
  end component;
45
 
46
 
47
  --! @brief   Declaration of the "virtual" RomImage component.
48
  --! @details This module stores pre-built firmware image that is coping
49
  --!          into internal SRAM during Boot stage without any modificaiton.
50
  --!          RomImage size is limited by global configuration parameter and
51
  --!          it cannot be more than internal SRAM size.  Component implements
52
  --!          one-clock access to the ROM without wait-staits. 
53
  --!          Datawidth depends of the AXI4 bus configuration.
54
  --! @param[in] tech    Generic technology selector.
55
  --! @param[in] sim_hexfile     Generic argument defining hex-file location.
56
  --! @param[in] clk     System bus clock.
57
  --! @param[in] address Input address.
58
  --! @param[out] data   Output data value.
59
  component RomImage_tech is
60
  generic (
61
    memtech : integer := 0;
62
    sim_hexfile : string
63
  );
64
  port (
65
    clk       : in std_logic;
66
    address   : in global_addr_array_type;
67
    data      : out std_logic_vector(CFG_NASTI_DATA_BITS-1 downto 0)
68
  );
69
  end component;
70
 
71
  ------------------------------------------------------------------------------
72
  --! @brief   Galileo PRN codes ROM storage:
73
  --! @details This ROM is used in FSE Engine to form reference E1 reference
74
  --!          signals. HEX-file isn't used for this ROM because 'inferred'
75
  --!          module was built using "case when" operators.
76
  component RomPrn_tech is
77
  generic (
78
    generic_tech : integer := 0
79
  );
80
  port (
81
    i_clk       : in std_logic;
82
    i_address   : in std_logic_vector(12 downto 0);
83
    o_data      : out std_logic_vector(31 downto 0)
84
  );
85
  end component;
86
 
87
  --! @brief   Declaration of the "virtual" SRAM component with unaligned access.
88
  --! @details This module implements internal SRAM and support unaligned access 
89
  --!          without wait-states. For example it allows to read 4 bytes from
90
  --!          address 0x3 for one clock.
91
  --!          Component implements one-clock access without wait-staits. 
92
  --!          Datawidth depends of the AXI4 bus configuration.
93
  --! @param[in] memtech Generic technology selector.
94
  --! @param[in] abits   Generic argument defining SRAM size as 2**abits.
95
  --! @param[in] clk     System bus clock.
96
  --! @param[in] raddr   Read address.
97
  --! @param[out] rdata  Output data value.
98
  --! @param[in] waddr   Write address.
99
  --! @param[in] we      Write enable.
100
  --! @param[in] wstrb   Byte selector to form write only for the specified bytes.
101
  --! @param[in] wdata   Write data.
102
  component srambytes_tech is
103
  generic (
104
    memtech : integer := 0;
105
    abits   : integer := 16;
106
    init_file : string := ""
107
  );
108
  port (
109
    clk       : in std_logic;
110
    raddr     : in global_addr_array_type;
111
    rdata     : out std_logic_vector(CFG_NASTI_DATA_BITS-1 downto 0);
112
    waddr     : in global_addr_array_type;
113
    we        : in std_logic;
114
    wstrb     : in std_logic_vector(CFG_NASTI_DATA_BYTES-1 downto 0);
115
    wdata     : in std_logic_vector(CFG_NASTI_DATA_BITS-1 downto 0)
116
  );
117
  end component;
118
 
119
 
120
  --! @brief Virtual SRAM block with fixed 32-bits data width.
121
  --! @details This module doesn't support byte access and always implements
122
  --!          4-bytes alignment.
123
  component Ram32_tech
124
  generic (
125
    generic_tech   : integer := 0;
126
    generic_abits : integer := 10
127
  );
128
  port (
129
    i_clk      : in std_logic;
130
    i_address  : in std_logic_vector(generic_abits-1 downto 0);
131
    i_wr_ena   : in std_logic;
132
    i_data     : in std_logic_vector(31 downto 0);
133
    o_data     : out std_logic_vector(31 downto 0)
134
  );
135
  end component;
136
 
137
  --! @brief Virtual SRAM block with fixed 64-bits data width.
138
  --! @details This module doesn't support byte access and always implements
139
  --!          4-bytes alignment.
140
  component Ram32x2_tech
141
  generic (
142
    generic_tech   : integer := 0;
143
    generic_kWords : integer := 1
144
  );
145
  port (
146
    i_clk      : in std_logic;
147
    i_address  : in std_logic_vector(10+log2(generic_kWords)-1 downto 0);
148
    i_wr_ena   : in std_logic_vector(1 downto 0);
149
    i_data     : in std_logic_vector(63 downto 0);
150
    o_data     : out std_logic_vector(63 downto 0)
151
  );
152
  end component;
153
 
154
  --! @brief Virtual SRAM block with fixed 64-bits data width.
155
  --! @details This module doesn't support byte access and always implements
156
  --!          8-bytes alignment.
157
  component Ram64_tech
158
  generic (
159
    generic_tech   : integer := 0;
160
    generic_abits  : integer := 4
161
  );
162
  port (
163
    i_clk      : in std_logic;
164
    i_address  : in std_logic_vector(generic_abits-1 downto 0);
165
    i_wr_ena   : in std_logic;
166
    i_data     : in std_logic_vector(63 downto 0);
167
    o_data     : out std_logic_vector(63 downto 0)
168
  );
169
  end component;
170
 
171
  --! @brief dual-port RAM declaration.
172
  component syncram_2p_tech is
173
  generic (
174
    tech : integer := 0;
175
    abits : integer := 6;
176
    dbits : integer := 8;
177
    sepclk : integer := 0;
178
    wrfst : integer := 0;
179
    testen : integer := 0;
180
    words : integer := 0;
181
    custombits : integer := 1
182
  );
183
  port (
184
    rclk     : in std_ulogic;
185
    renable  : in std_ulogic;
186
    raddress : in std_logic_vector((abits -1) downto 0);
187
    dataout  : out std_logic_vector((dbits -1) downto 0);
188
    wclk     : in std_ulogic;
189
    write    : in std_ulogic;
190
    waddress : in std_logic_vector((abits -1) downto 0);
191
    datain   : in std_logic_vector((dbits -1) downto 0)
192
  );
193
  end component;
194
 
195
end;

powered by: WebSVN 2.1.0

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