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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.5/] [rtl/] [vlib/] [memlib/] [memlib.vhd] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 wfjm
-- $Id: memlib.vhd 314 2010-07-09 17:38:41Z mueller $
2
--
3
-- Copyright 2006-2007 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
4
--
5
-- This program is free software; you may redistribute and/or modify it under
6
-- the terms of the GNU General Public License as published by the Free
7
-- Software Foundation, either version 2, or at your option any later version.
8
--
9
-- This program is distributed in the hope that it will be useful, but
10
-- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
11
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12
-- for complete details.
13
--
14
------------------------------------------------------------------------------
15
-- Package Name:   memlib
16
-- Description:    Basic memory components: single/dual port synchronous and
17
--                 asynchronus rams; Fifo's.
18
--
19
-- Dependencies:   -
20
-- Tool versions:  xst 8.1, 8.2, 9.1, 9.2; ghdl 0.18-0.25
21
-- Revision History: 
22
-- Date         Rev Version  Comment
23
-- 2008-03-08   123   1.0.3  add ram_2swsr_xfirst_gen_unisim
24
-- 2008-03-02   122   1.0.2  change generic default for BRAM models
25
-- 2007-12-27   106   1.0.1  add fifo_2c_dram
26
-- 2007-06-03    45   1.0    Initial version 
27
------------------------------------------------------------------------------
28
 
29
library ieee;
30
use ieee.std_logic_1164.all;
31
 
32
use work.slvtypes.all;
33
 
34
package memlib is
35
 
36
component ram_1swar_gen is              -- RAM, 1 sync w asyn r port
37
  generic (
38
    AWIDTH : positive :=  4;            -- address port width
39
    DWIDTH : positive := 16);           -- data port width
40
  port (
41
    CLK  : in slbit;                    -- clock
42
    WE   : in slbit;                    -- write enable
43
    ADDR : in slv(AWIDTH-1 downto 0);   -- address port
44
    DI   : in slv(DWIDTH-1 downto 0);   -- data in port
45
    DO   : out slv(DWIDTH-1 downto 0)   -- data out port
46
  );
47
end component;
48
 
49
component ram_1swar_1ar_gen is          -- RAM, 1 sync w asyn r + 1 asyn r port
50
  generic (
51
    AWIDTH : positive :=  4;            -- address port width
52
    DWIDTH : positive := 16);           -- data port width
53
  port (
54
    CLK   : in slbit;                   -- clock
55
    WE    : in slbit;                   -- write enable (port A)
56
    ADDRA : in slv(AWIDTH-1 downto 0);  -- address port A
57
    ADDRB : in slv(AWIDTH-1 downto 0);  -- address port B
58
    DI    : in slv(DWIDTH-1 downto 0);  -- data in (port A)
59
    DOA   : out slv(DWIDTH-1 downto 0); -- data out port A
60
    DOB   : out slv(DWIDTH-1 downto 0)  -- data out port B
61
  );
62
end component;
63
 
64
component ram_1swsr_wfirst_gen is       -- RAM, 1 sync r/w ports, write first
65
  generic (
66
    AWIDTH : positive := 10;            -- address port width
67
    DWIDTH : positive := 16);           -- data port width
68
  port(
69
    CLK  : in slbit;                    -- clock
70
    EN   : in slbit;                    -- enable
71
    WE   : in slbit;                    -- write enable
72
    ADDR : in slv(AWIDTH-1 downto 0);   -- address port
73
    DI   : in slv(DWIDTH-1 downto 0);   -- data in port
74
    DO   : out slv(DWIDTH-1 downto 0)   -- data out port
75
  );
76
end component;
77
 
78
component ram_1swsr_rfirst_gen is       -- RAM, 1 sync r/w ports, read first
79
  generic (
80
    AWIDTH : positive := 11;            -- address port width
81
    DWIDTH : positive :=  9);           -- data port width
82
  port(
83
    CLK  : in slbit;                    -- clock
84
    EN   : in slbit;                    -- enable
85
    WE   : in slbit;                    -- write enable
86
    ADDR : in slv(AWIDTH-1 downto 0);   -- address port
87
    DI   : in slv(DWIDTH-1 downto 0);   -- data in port
88
    DO   : out slv(DWIDTH-1 downto 0)   -- data out port
89
  );
90
end component;
91
 
92
component ram_2swsr_wfirst_gen is       -- RAM, 2 sync r/w ports, write first
93
  generic (
94
    AWIDTH : positive := 11;            -- address port width
95
    DWIDTH : positive :=  9);           -- data port width
96
  port(
97
    CLKA  : in slbit;                   -- clock port A
98
    CLKB  : in slbit;                   -- clock port B
99
    ENA   : in slbit;                   -- enable port A
100
    ENB   : in slbit;                   -- enable port B
101
    WEA   : in slbit;                   -- write enable port A
102
    WEB   : in slbit;                   -- write enable port B
103
    ADDRA : in slv(AWIDTH-1 downto 0);  -- address port A
104
    ADDRB : in slv(AWIDTH-1 downto 0);  -- address port B
105
    DIA   : in slv(DWIDTH-1 downto 0);  -- data in port A
106
    DIB   : in slv(DWIDTH-1 downto 0);  -- data in port B
107
    DOA   : out slv(DWIDTH-1 downto 0); -- data out port A
108
    DOB   : out slv(DWIDTH-1 downto 0)  -- data out port B
109
  );
110
end component;
111
 
112
component ram_2swsr_rfirst_gen is       -- RAM, 2 sync r/w ports, read first
113
  generic (
114
    AWIDTH : positive := 11;            -- address port width
115
    DWIDTH : positive :=  9);           -- data port width
116
  port(
117
    CLKA  : in slbit;                   -- clock port A
118
    CLKB  : in slbit;                   -- clock port B
119
    ENA   : in slbit;                   -- enable port A
120
    ENB   : in slbit;                   -- enable port B
121
    WEA   : in slbit;                   -- write enable port A
122
    WEB   : in slbit;                   -- write enable port B
123
    ADDRA : in slv(AWIDTH-1 downto 0);  -- address port A
124
    ADDRB : in slv(AWIDTH-1 downto 0);  -- address port B
125
    DIA   : in slv(DWIDTH-1 downto 0);  -- data in port A
126
    DIB   : in slv(DWIDTH-1 downto 0);  -- data in port B
127
    DOA   : out slv(DWIDTH-1 downto 0); -- data out port A
128
    DOB   : out slv(DWIDTH-1 downto 0)  -- data out port B
129
  );
130
end component;
131
 
132
component ram_1swsr_xfirst_gen_unisim is -- RAM, 1 sync r/w port
133
  generic (
134
    AWIDTH : positive := 11;            -- address port width
135
    DWIDTH : positive :=  9;            -- data port width
136
    WRITE_MODE : string := "READ_FIRST"); -- write mode: (READ|WRITE)_FIRST
137
  port(
138
    CLK  : in slbit;                    -- clock
139
    EN   : in slbit;                    -- enable
140
    WE   : in slbit;                    -- write enable
141
    ADDR : in slv(AWIDTH-1 downto 0);   -- address
142
    DI   : in slv(DWIDTH-1 downto 0);   -- data in
143
    DO   : out slv(DWIDTH-1 downto 0)   -- data out
144
  );
145
end component;
146
 
147
component ram_2swsr_xfirst_gen_unisim is -- RAM, 2 sync r/w ports
148
  generic (
149
    AWIDTH : positive := 11;            -- address port width
150
    DWIDTH : positive :=  9;            -- data port width
151
    WRITE_MODE : string := "READ_FIRST"); -- write mode: (READ|WRITE)_FIRST
152
  port(
153
    CLKA  : in slbit;                   -- clock port A
154
    CLKB  : in slbit;                   -- clock port B
155
    ENA   : in slbit;                   -- enable port A
156
    ENB   : in slbit;                   -- enable port B
157
    WEA   : in slbit;                   -- write enable port A
158
    WEB   : in slbit;                   -- write enable port B
159
    ADDRA : in slv(AWIDTH-1 downto 0);  -- address port A
160
    ADDRB : in slv(AWIDTH-1 downto 0);  -- address port B
161
    DIA   : in slv(DWIDTH-1 downto 0);  -- data in port A
162
    DIB   : in slv(DWIDTH-1 downto 0);  -- data in port B
163
    DOA   : out slv(DWIDTH-1 downto 0); -- data out port A
164
    DOB   : out slv(DWIDTH-1 downto 0)  -- data out port B
165
  );
166
end component;
167
 
168
component fifo_1c_dram_raw is           -- fifo, 1 clock, dram based, raw
169
  generic (
170
    AWIDTH : positive :=  4;            -- address width (sets size)
171
    DWIDTH : positive := 16);           -- data width
172
  port (
173
    CLK : in slbit;                     -- clock
174
    RESET : in slbit;                   -- reset
175
    WE : in slbit;                      -- write enable
176
    RE : in slbit;                      -- read enable
177
    DI : in slv(DWIDTH-1 downto 0);     -- input data
178
    DO : out slv(DWIDTH-1 downto 0);    -- output data
179
    SIZE : out slv(AWIDTH-1 downto 0);  -- number of used slots
180
    EMPTY : out slbit;                  -- empty flag
181
    FULL : out slbit                    -- full flag
182
  );
183
end component;
184
 
185
component fifo_1c_dram is               -- fifo, 1 clock, dram based
186
  generic (
187
    AWIDTH : positive :=  4;            -- address width (sets size)
188
    DWIDTH : positive := 16);           -- data width
189
  port (
190
    CLK : in slbit;                     -- clock
191
    RESET : in slbit;                   -- reset
192
    DI : in slv(DWIDTH-1 downto 0);     -- input data
193
    ENA : in slbit;                     -- write enable
194
    BUSY : out slbit;                   -- write port hold    
195
    DO : out slv(DWIDTH-1 downto 0);    -- output data
196
    VAL : out slbit;                    -- read valid
197
    HOLD : in slbit;                    -- read hold
198
    SIZE : out slv(AWIDTH downto 0)     -- number of used slots
199
  );
200
end component;
201
 
202
component fifo_1c_bubble is             -- fifo, 1 clock, bubble regs
203
  generic (
204
    NSTAGE : positive :=  4;            -- number of stages
205
    DWIDTH : positive := 16);           -- data width
206
  port (
207
    CLK : in slbit;                     -- clock
208
    RESET : in slbit;                   -- reset
209
    DI : in slv(DWIDTH-1 downto 0);     -- input data
210
    ENA : in slbit;                     -- write enable
211
    BUSY : out slbit;                   -- write port hold    
212
    DO : out slv(DWIDTH-1 downto 0);    -- output data
213
    VAL : out slbit;                    -- read valid
214
    HOLD : in slbit                     -- read hold
215
  );
216
end component;
217
 
218
component fifo_2c_dram is               -- fifo, 2 clock, dram based
219
  generic (
220
    AWIDTH : positive :=  4;            -- address width (sets size)
221
    DWIDTH : positive := 16);           -- data width
222
  port (
223
    CLKW : in slbit;                    -- clock (write side)
224
    CLKR : in slbit;                    -- clock (read side)
225
    RESETW : in slbit;                  -- reset (synchronous with CLKW)
226
    RESETR : in slbit;                  -- reset (synchronous with CLKR)
227
    DI : in slv(DWIDTH-1 downto 0);     -- input data
228
    ENA : in slbit;                     -- write enable
229
    BUSY : out slbit;                   -- write port hold    
230
    DO : out slv(DWIDTH-1 downto 0);    -- output data
231
    VAL : out slbit;                    -- read valid
232
    HOLD : in slbit;                    -- read hold
233
    SIZEW : out slv(AWIDTH-1 downto 0); -- number slots to write (synch w/ CLKW)
234
    SIZER : out slv(AWIDTH-1 downto 0)  -- number slots to read  (synch w/ CLKR)
235
  );
236
end component;
237
 
238
end memlib;

powered by: WebSVN 2.1.0

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