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

Subversion Repositories or1200_hp

[/] [or1200_hp/] [trunk/] [rtl/] [rtl_virtex_cm2/] [verilog/] [dc_ram_blk_cm2.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tobil
/*******************************************************************************
2
*     This file is owned and controlled by Xilinx and must be used             *
3
*     solely for design, simulation, implementation and creation of            *
4
*     design files limited to Xilinx devices or technologies. Use              *
5
*     with non-Xilinx devices or technologies is expressly prohibited          *
6
*     and immediately terminates your license.                                 *
7
*                                                                              *
8
*     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"            *
9
*     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR                  *
10
*     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION          *
11
*     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION              *
12
*     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS                *
13
*     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,                  *
14
*     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE         *
15
*     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY                 *
16
*     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE                  *
17
*     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR           *
18
*     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF          *
19
*     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS          *
20
*     FOR A PARTICULAR PURPOSE.                                                *
21
*                                                                              *
22
*     Xilinx products are not intended for use in life support                 *
23
*     appliances, devices, or systems. Use in such applications are            *
24
*     expressly prohibited.                                                    *
25
*                                                                              *
26
*     (c) Copyright 1995-2009 Xilinx, Inc.                                     *
27
*     All rights reserved.                                                     *
28
*******************************************************************************/
29
// The synthesis directives "translate_off/translate_on" specified below are
30
// supported by Xilinx, Mentor Graphics and Synplicity synthesis
31
// tools. Ensure they are correct for your synthesis tool(s).
32
 
33
// You must compile the wrapper file dc_ram_blk_cm2.v when simulating
34
// the core, dc_ram_blk_cm2. When compiling the wrapper file, be sure to
35
// reference the XilinxCoreLib Verilog simulation library. For detailed
36
// instructions, please refer to the "CORE Generator Help".
37
 
38
// synopsys translate_off
39
`include "timescale.v"
40
// synopsys translate_on
41
 
42
`include "or1200_defines.v"
43
 
44
module dc_ram_blk_cm2(
45
        clka,
46
        ena,
47
        wea,
48
        addra,
49
        dina,
50
        clkb,
51
        addrb,
52
        doutb);
53
 
54
 
55
input clka;
56
input ena;
57
input [3 : 0] wea;
58
input [11 : 0] addra;
59
input [31 : 0] dina;
60
input clkb;
61
input [11 : 0] addrb;
62
output [31 : 0] doutb;
63
 
64
`ifdef BLK_MEM_GEN
65
 
66
// synthesis translate_off
67
 
68
      BLK_MEM_GEN_V3_1 #(
69
                .C_ADDRA_WIDTH(12),
70
                .C_ADDRB_WIDTH(12),
71
                .C_ALGORITHM(1),
72
                .C_BYTE_SIZE(8),
73
                .C_COMMON_CLK(0),
74
                .C_DEFAULT_DATA("0"),
75
                .C_DISABLE_WARN_BHV_COLL(0),
76
                .C_DISABLE_WARN_BHV_RANGE(0),
77
                .C_FAMILY("virtex5"),
78
                .C_HAS_ENA(1),
79
                .C_HAS_ENB(0),
80
                .C_HAS_INJECTERR(0),
81
                .C_HAS_MEM_OUTPUT_REGS_A(0),
82
                .C_HAS_MEM_OUTPUT_REGS_B(0),
83
                .C_HAS_MUX_OUTPUT_REGS_A(0),
84
                .C_HAS_MUX_OUTPUT_REGS_B(0),
85
                .C_HAS_REGCEA(0),
86
                .C_HAS_REGCEB(0),
87
                .C_HAS_RSTA(0),
88
                .C_HAS_RSTB(0),
89
                .C_INITA_VAL("0"),
90
                .C_INITB_VAL("0"),
91
                .C_INIT_FILE_NAME("no_coe_file_loaded"),
92
                .C_LOAD_INIT_FILE(0),
93
                .C_MEM_TYPE(1),
94
                .C_MUX_PIPELINE_STAGES(0),
95
                .C_PRIM_TYPE(1),
96
                .C_READ_DEPTH_A(4096),
97
                .C_READ_DEPTH_B(4096),
98
                .C_READ_WIDTH_A(32),
99
                .C_READ_WIDTH_B(32),
100
                .C_RSTRAM_A(0),
101
                .C_RSTRAM_B(0),
102
                .C_RST_PRIORITY_A("CE"),
103
                .C_RST_PRIORITY_B("CE"),
104
                .C_RST_TYPE("SYNC"),
105
                .C_SIM_COLLISION_CHECK("ALL"),
106
                .C_USE_BYTE_WEA(1),
107
                .C_USE_BYTE_WEB(1),
108
                .C_USE_DEFAULT_DATA(0),
109
                .C_USE_ECC(0),
110
                .C_WEA_WIDTH(4),
111
                .C_WEB_WIDTH(4),
112
                .C_WRITE_DEPTH_A(4096),
113
                .C_WRITE_DEPTH_B(4096),
114
                .C_WRITE_MODE_A("READ_FIRST"),
115
                .C_WRITE_MODE_B("READ_FIRST"),
116
                .C_WRITE_WIDTH_A(32),
117
                .C_WRITE_WIDTH_B(32),
118
                .C_XDEVICEFAMILY("virtex5"))
119
        inst (
120
                .CLKA(clka),
121
                .ENA(ena),
122
                .WEA(wea),
123
                .ADDRA(addra),
124
                .DINA(dina),
125
                .CLKB(clkb),
126
                .ADDRB(addrb),
127
                .DOUTB(doutb),
128
                .RSTA(),
129
                .REGCEA(),
130
                .DOUTA(),
131
                .RSTB(),
132
                .ENB(),
133
                .REGCEB(),
134
                .WEB(),
135
                .DINB(),
136
                .INJECTSBITERR(),
137
                .INJECTDBITERR(),
138
                .SBITERR(),
139
                .DBITERR(),
140
                .RDADDRECC());
141
 
142
 
143
// synthesis translate_on
144
 
145
`else
146
 
147
//
148
// Generic RAM's registers and wires
149
//
150
reg     [31:0]        mem [(1<<12)-1:0];              // RAM content
151
 
152
reg     [11:0]   addrb_reg;              // RAM address register
153
 
154
 
155
always @(posedge clkb)
156
        addrb_reg <= #1 addrb;
157
 
158
//
159
// Data output drivers
160
//
161
//wire [31 : 0] doutb_tmp;
162
//assign doutb = doutb_tmp;
163
//assign doutb = (1'b1) ? {mem_3[addrb], mem_2[addrb], mem_1[addrb], mem_0[addrb]} : {32{1'b0}};
164
//assign doutb = {mem_3[addrb], mem_2[addrb], mem_1[addrb], mem_0[addrb]};
165
assign doutb = mem[addrb_reg];
166
 
167
 
168
//
169
// RAM write byte 0
170
//
171
//always @(posedge clka)
172
//        if (ena && wea[0])
173
//                mem_0[addra] <= #1 dina[7:0];
174
 
175
//
176
// RAM write byte 1
177
//
178
//always @(posedge clka)
179
//        if (ena && wea[1])
180
//                mem_1[addra] <= #1 dina[15:8];
181
 
182
//
183
// RAM write byte 2
184
//
185
//always @(posedge clka)
186
//        if (ena && wea[2])
187
//                mem_2[addra] <= #1 dina[23:16];
188
 
189
//
190
// RAM write byte 3
191
//
192
//always @(posedge clka)
193
//        if (ena && wea[3])
194
//                mem_3[addra] <= #1 dina[31:24];
195
 
196
always @(posedge clka)
197
        begin
198
        if (ena && wea[0])
199
                mem[addra][7:0] <= #1 dina[7:0];
200
        if (ena && wea[1])
201
                mem[addra][15:8] <= #1 dina[15:8];
202
        if (ena && wea[2])
203
                mem[addra][23:16] <= #1 dina[23:16];
204
       if (ena && wea[3])
205
                mem[addra][31:24] <= #1 dina[31:24];
206
        end
207
 
208
`endif
209
 
210
endmodule
211
 

powered by: WebSVN 2.1.0

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