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

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [gaisler/] [vlog/] [RF_stage1.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
/******************************************************************
2
 *                                                                *
3
 *    Author: Liwei                                               *
4
 *                                                                *
5
 *    This file is part of the "mips789" project.                 *
6
 *    Downloaded from:                                            *
7
 *    http://www.opencores.org/pdownloads.cgi/list/mips789        *
8
 *                                                                *
9
 *    If you encountered any problem, please contact me via       *
10
 *    Email:mcupro@opencores.org  or mcupro@163.com               *
11
 *                                                                *
12
 ******************************************************************/
13
 
14
`include "mips789_defs.v"
15
 
16
module rf_stage (
17
        clk,rst_i,cmp_ctl_i,
18
        ext_ctl_i,fw_alu_i,fw_cmp_rs,fw_cmp_rt,
19
        fw_mem_i,id_cmd,ins_i,pc_gen_ctl,
20
        pc_i,rd_sel_i,wb_din_i,zz_spc_i,iack_o,
21
        id2ra_ctl_clr_o,id2ra_ctl_cls_o,ra2ex_ctl_clr_o,ext_o,
22
        pc_next,rd_index_o,rs_n_o,rs_o,rt_n_o,rt_o,qa,qb,rdaddra1,rdaddrb1,branch,hold
23
    ) ;
24
 
25
    input clk;
26
    wire clk;
27
    input rst_i;
28
    wire rst_i;
29
    input [2:0] cmp_ctl_i;
30
    wire [2:0] cmp_ctl_i;
31
    input [2:0] ext_ctl_i;
32
    wire [2:0] ext_ctl_i;
33
    input [31:0] fw_alu_i;
34
    wire [31:0] fw_alu_i;
35
    input [2:0] fw_cmp_rs;
36
    wire [2:0] fw_cmp_rs;
37
    input [2:0] fw_cmp_rt;
38
    wire [2:0] fw_cmp_rt;
39
    input [31:0] fw_mem_i;
40
    wire [31:0] fw_mem_i;
41
    input [2:0] id_cmd;
42
    wire [2:0] id_cmd;
43
    input [31:0] ins_i;
44
    wire [31:0] ins_i;
45
    input [2:0] pc_gen_ctl;
46
    wire [2:0] pc_gen_ctl;
47
    input [31:0] pc_i;
48
    wire [31:0] pc_i;
49
    input [1:0] rd_sel_i;
50
    wire [1:0] rd_sel_i;
51
    input [31:0] wb_din_i;
52
    wire [31:0] wb_din_i;
53
    input [31:0] zz_spc_i;
54
    wire [31:0] zz_spc_i;
55
         input [31:0] qa;
56
         wire [31:0] qa;
57
         input [31:0] qb;
58
         wire [31:0] qb;
59
    output iack_o;
60
    wire iack_o;
61
    output id2ra_ctl_clr_o;
62
    wire id2ra_ctl_clr_o;
63
    output id2ra_ctl_cls_o;
64
    wire id2ra_ctl_cls_o;
65
    output ra2ex_ctl_clr_o;
66
    wire ra2ex_ctl_clr_o;
67
    output [31:0] ext_o;
68
    wire [31:0] ext_o;
69
    output [31:0] pc_next;
70
    wire [31:0] pc_next;
71
    output [4:0] rd_index_o;
72
    wire [4:0] rd_index_o;
73
    output [4:0] rs_n_o;
74
    wire [4:0] rs_n_o;
75
    output [31:0] rs_o;
76
    wire [31:0] rs_o;
77
    output [4:0] rt_n_o;
78
    wire [4:0] rt_n_o;
79
    output [31:0] rt_o;
80
    wire [31:0] rt_o;
81
         output [4:0] rdaddra1;
82
         wire [4:0] rdaddra1;
83
         output [4:0] rdaddrb1;
84
         wire [4:0] rdaddrb1;
85
         output branch;
86
         wire branch;
87
         input hold;
88
         wire hold;
89
 
90
 
91
    wire NET6609;
92
    wire NET6658;
93
    wire NET7774;
94
    wire NET904;
95
 
96
    wire [3:0] BUS1013;
97
    wire [31:0] BUS2085;
98
    wire [4:0] BUS3236;
99
    wire [4:0] BUS3237;
100
    wire [4:0] BUS5421;
101
    wire [31:0] BUS6061;
102
    wire [31:0] BUS6095;
103
 
104
    wire [100:0] CLK_NO;
105
    wire [100:0] INS_NO;
106
 
107
    cal_cpi CAL_CPI
108
            (
109
                .clk(clk),
110
                .clk_no(CLK_NO),
111
                .ins_no(INS_NO),
112
                .is_nop(NET7774),
113
                .rst(rst_i)
114
            );
115
 
116
 
117
 
118
    ctl_FSM MAIN_FSM
119
            (
120
                .clk(clk),
121
                .hold(hold),
122
                .iack(iack_o),
123
                .id2ra_ctl_clr(id2ra_ctl_clr_o),
124
                .id2ra_ctl_cls(id2ra_ctl_cls_o),
125
                .id2ra_ins_clr(NET6609),
126
                .id2ra_ins_cls(NET6658),
127
                .id_cmd(id_cmd),
128
                .pc_prectl(BUS1013),
129
                .ra2exec_ctl_clr(ra2ex_ctl_clr_o),
130
                .rst(rst_i),
131
                .zz_is_nop(NET7774)
132
            );
133
 
134
 
135
 
136
    pc_gen i_pc_gen
137
           (
138
               .check(NET904),
139
               .clk(clk),
140
               .hold(hold),
141
               .ctl(pc_gen_ctl),
142
               .imm(ext_o),
143
               .pc(pc_i),
144
                                        .branch(branch),
145
               .pc_next(pc_next),
146
               .pc_prectl(BUS1013),
147
               .s(rs_o),
148
               .zz_spc(zz_spc_i)
149
           );
150
 
151
 
152
 
153
    compare i_cmp
154
            (
155
                .ctl(cmp_ctl_i),
156
                .res(NET904),
157
                .s(rs_o),
158
                .t(rt_o)
159
            );
160
 
161
 
162
 
163
    ext i_ext
164
        (
165
            .ctl(ext_ctl_i),
166
            .ins_i(BUS2085),
167
            .res(ext_o)
168
        );
169
 
170
 
171
 
172
    r32_reg_clr_cls ins_reg
173
                    (
174
                        .clk(clk),
175
                        .clr(NET6609),
176
                        .cls(NET6658),
177
                        .r32_i(ins_i),
178
                        .r32_o(BUS2085),
179
                                                                .hold(hold)
180
                    );
181
 
182
 
183
 
184
    jack jack1
185
         (
186
             .ins_i(BUS2085),
187
             .rd_o(BUS5421),
188
             .rs_o(rs_n_o),
189
             .rt_o(rt_n_o)
190
         );
191
 
192
 
193
 
194
    jack jack2
195
         (
196
             .ins_i(ins_i),
197
             .rs_o(rdaddra1),
198
             .rt_o(rdaddrb1)
199
         );
200
 
201
    rd_sel rd_sel
202
           (
203
               .ctl(rd_sel_i),
204
               .rd_i(BUS5421),
205
               .rd_o(rd_index_o),
206
               .rt_i(rt_n_o)
207
           );/*
208
    wire bank_sel;
209
    dly3clk bank_sel_dly
210
            (
211
                .r1_i(iack_o),
212
                .r1_o(bank_sel),
213
                .clk(clk),
214
                .rst(rst_i)
215
            );*/
216
 
217
/*    reg_array reg_bank
218
              (
219
                  .clock(clk),
220
                  .data(wb_din_i),
221
                  .qa(BUS6061),
222
                  .qb(BUS6095),
223
                  .rd_clk_cls(NET6658),
224
                  .rdaddress_a(BUS3237),
225
                  .rdaddress_b(BUS3236),
226
                  .wraddress(wb_addr_i),
227
                  .wren(wb_we_i)/*,
228
                  .bank_sel(1'b0)*/
229
 //             );
230
 
231
    fwd_mux rf_fwd_rt
232
            (
233
                .din(qb),
234
                .dout(rt_o),
235
                .fw_alu(fw_alu_i),
236
                .fw_ctl(fw_cmp_rt),
237
                .fw_dmem(fw_mem_i)
238
            );
239
 
240
    fwd_mux rs_fwd_rs
241
            (
242
                .din(qa),
243
                .dout(rs_o),
244
                .fw_alu(fw_alu_i),
245
                .fw_ctl(fw_cmp_rs),
246
                .fw_dmem(fw_mem_i)
247
            );
248
 
249
endmodule

powered by: WebSVN 2.1.0

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