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

Subversion Repositories mips789

[/] [mips789/] [branches/] [mcupro/] [verilog/] [mips_core/] [RF_stage.v] - Blame information for rev 53

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mcupro
/////////////////////////////////////////////////////////////////////
2
////  Author: Liwei                                              ////
3
////                                                             ////
4
////                                                             ////
5
////  If you encountered any problem, please contact :           ////
6
////  Email: mcupro@yahoo.com.hk or mcupro@opencores.org         ////
7
////                                                             ////
8
////  Downloaded from:                                           ////
9
////     http://www.opencores.org/pdownloads.cgi/list/mips789    ////
10
/////////////////////////////////////////////////////////////////////
11
////                                                             ////
12
//// Copyright (C) 2006-2007 Liwei                               ////
13
////                         mcupro@yahoo.com.hk                 ////
14
////                                                             ////
15
////                                                             ////
16
//// This source file may be used and distributed freely without ////
17
//// restriction provided that this copyright statement is not   ////
18
//// removed from the file and any derivative work contains the  ////
19
//// original copyright notice and the associated disclaimer.    ////
20
////                                                             ////
21
//// Please let the author know if it is used                    ////
22
//// for commercial purpose.                                     ////
23
////                                                             ////
24
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
25
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
26
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
27
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
28
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
29
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
30
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
31
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
32
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
33
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
34
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
35
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
36
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
37
////                                                             ////
38
/////////////////////////////////////////////////////////////////////
39
////                                                             ////
40
////                                                             ////
41
//// Date of Creation: 2007.8.1                                  ////
42
////                                                             ////
43
//// Version: 0.0.1                                              ////
44
////                                                             ////
45
//// Description:                                                ////
46
////                                                             ////
47
////                                                             ////
48
/////////////////////////////////////////////////////////////////////
49
////                                                             ////
50
//// Change log:                                                 ////
51
////                                                             ////
52
/////////////////////////////////////////////////////////////////////
53
 
54
module rf_stage8 (
55
clk,irq_i,rst_i,wb_we_i,cmp_ctl_i,
56
ext_ctl_i,fw_alu_i,fw_cmp_rs,fw_cmp_rt,
57
fw_mem_i,id_cmd,ins_i,irq_addr_i,pc_gen_ctl,
58
pc_i,rd_sel_i,wb_addr_i,wb_din_i,zz_spc_i,iack_o,
59
id2ra_ctl_clr_o,id2ra_ctl_cls_o,ra2ex_ctl_clr_o,ext_o,
60
pc_next,rd_index_o,rs_n_o,rs_o,rt_n_o,rt_o
61
) ;
62
 
63
// ------------ Port declarations --------- //
64
input clk;
65
wire clk;
66
input irq_i;
67
wire irq_i;
68
input rst_i;
69
wire rst_i;
70
input wb_we_i;
71
wire wb_we_i;
72
input [2:0] cmp_ctl_i;
73
wire [2:0] cmp_ctl_i;
74
input [2:0] ext_ctl_i;
75
wire [2:0] ext_ctl_i;
76
input [31:0] fw_alu_i;
77
wire [31:0] fw_alu_i;
78
input [2:0] fw_cmp_rs;
79
wire [2:0] fw_cmp_rs;
80
input [2:0] fw_cmp_rt;
81
wire [2:0] fw_cmp_rt;
82
input [31:0] fw_mem_i;
83
wire [31:0] fw_mem_i;
84
input [2:0] id_cmd;
85
wire [2:0] id_cmd;
86
input [31:0] ins_i;
87
wire [31:0] ins_i;
88
input [31:0] irq_addr_i;
89
wire [31:0] irq_addr_i;
90
input [2:0] pc_gen_ctl;
91
wire [2:0] pc_gen_ctl;
92
input [31:0] pc_i;
93
wire [31:0] pc_i;
94
input [1:0] rd_sel_i;
95
wire [1:0] rd_sel_i;
96
input [4:0] wb_addr_i;
97
wire [4:0] wb_addr_i;
98
input [31:0] wb_din_i;
99
wire [31:0] wb_din_i;
100
input [31:0] zz_spc_i;
101
wire [31:0] zz_spc_i;
102
output iack_o;
103
wire iack_o;
104
output id2ra_ctl_clr_o;
105
wire id2ra_ctl_clr_o;
106
output id2ra_ctl_cls_o;
107
wire id2ra_ctl_cls_o;
108
output ra2ex_ctl_clr_o;
109
wire ra2ex_ctl_clr_o;
110
output [31:0] ext_o;
111
wire [31:0] ext_o;
112
output [31:0] pc_next;
113
wire [31:0] pc_next;
114
output [4:0] rd_index_o;
115
wire [4:0] rd_index_o;
116
output [4:0] rs_n_o;
117
wire [4:0] rs_n_o;
118
output [31:0] rs_o;
119
wire [31:0] rs_o;
120
output [4:0] rt_n_o;
121
wire [4:0] rt_n_o;
122
output [31:0] rt_o;
123
wire [31:0] rt_o;
124
 
125
// ----------------- Constants ------------ //
126
parameter DANGLING_INPUT_CONSTANT = 1'bZ;
127
 
128
// ----------- Signal declarations -------- //
129
wire NET6609;
130
wire NET6658;
131
wire NET7774;
132
wire NET904;
133
wire [3:0] BUS1013;
134
wire [31:0] BUS2085;
135
wire [4:0] BUS3236;
136
wire [4:0] BUS3237;
137
wire [4:0] BUS5421;
138
wire [31:0] BUS6061;
139
wire [31:0] BUS6095;
140
 
141
// ---- Declaration for Dangling inputs ----//
142
wire Dangling_Input_Signal = DANGLING_INPUT_CONSTANT;
143
 
144
// -------- Component instantiations -------//
145
 
146
cal_cpi CAL_CPI
147
(
148
        .clk(clk),
149
        .clk_no(CLK_NO),
150
        .ins_no(INS_NO),
151
        .is_nop(NET7774),
152
        .rst(rst_i)
153
);
154
 
155
 
156
 
157
ctl_FSM8 RF_STAGE
158
(
159
        .clk(clk),
160
        .iack(iack_o),
161
        .id2ra_ctl_clr(id2ra_ctl_clr_o),
162
        .id2ra_ctl_cls(id2ra_ctl_cls_o),
163
        .id2ra_ins_clr(NET6609),
164
        .id2ra_ins_cls(NET6658),
165
        .id_cmd(id_cmd),
166
        .irq(irq_i),
167
        .pc_prectl(BUS1013),
168
        .ra2exec_ctl_clr(ra2ex_ctl_clr_o),
169
        .rst(rst_i),
170
        .zz_is_nop(NET7774)
171
);
172
 
173
 
174
 
175
pc_gen2 i_pc_gen
176
(
177
        .check(NET904),
178
        .ctl(pc_gen_ctl),
179
        .imm(ext_o),
180
        .irq(irq_addr_i),
181
        .pc(pc_i),
182
        .pc_next(pc_next),
183
        .pc_prectl(BUS1013),
184
        .s(rs_o),
185
        .zz_spc(zz_spc_i)
186
);
187
 
188
 
189
 
190
compare i_cmp
191
(
192
        .ctl(cmp_ctl_i),
193
        .res(NET904),
194
        .s(rs_o),
195
        .t(rt_o)
196
);
197
 
198
 
199
 
200
ext i_ext
201
(
202
        .ctl(ext_ctl_i),
203
        .ins_i(BUS2085),
204
        .res(ext_o)
205
);
206
 
207
 
208
 
209
r32_reg_clr_cls ins_reg
210
(
211
        .clk(clk),
212
        .clr(NET6609),
213
        .cls(NET6658),
214
        .r32_i(ins_i),
215
        .r32_o(BUS2085)
216
);
217
 
218
 
219
 
220
jack jack1
221
(
222
        .ins_i(BUS2085),
223
        .rd_o(BUS5421),
224
        .rs_o(rs_n_o),
225
        .rt_o(rt_n_o)
226
);
227
 
228
 
229
 
230
jack jack2
231
(
232
        .ins_i(ins_i),
233
        .rs_o(BUS3237),
234
        .rt_o(BUS3236)
235
);
236
 
237
 
238
 
239
rd_sel rd_sel
240
(
241
        .ctl(rd_sel_i),
242
        .rd_i(BUS5421),
243
        .rd_o(rd_index_o),
244
        .rt_i(rt_n_o)
245
);
246
 
247
 
248
 
249
reg_array2 reg_bank
250
(
251
        .clock(clk),
252
        .data(wb_din_i),
253
        .qa(BUS6061),
254
        .qb(BUS6095),
255
        .rd_clk_cls(NET6658),
256
        .rdaddress_a(BUS3237),
257
        .rdaddress_b(BUS3236),
258
        .wraddress(wb_addr_i),
259
        .wren(wb_we_i)
260
);
261
 
262
 
263
 
264
fwd_mux rf_fwd_rt
265
(
266
        .din(BUS6095),
267
        .dout(rt_o),
268
        .fw_alu(fw_alu_i),
269
        .fw_ctl(fw_cmp_rt),
270
        .fw_dmem(fw_mem_i)
271
);
272
 
273
 
274
 
275
fwd_mux rs_fwd_rs
276
(
277
        .din(BUS6061),
278
        .dout(rs_o),
279
        .fw_alu(fw_alu_i),
280
        .fw_ctl(fw_cmp_rs),
281
        .fw_dmem(fw_mem_i)
282
);
283
 
284
 
285
 
286
endmodule

powered by: WebSVN 2.1.0

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