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

Subversion Repositories mips_16

[/] [mips_16/] [trunk/] [rtl/] [EX_stage.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 Doyya
/***************************************************
2
 * Module: EX_stage
3
 * Project: mips_16
4
 * Author: fzy
5
 * Description:
6
 *     alu
7
 *
8
 * Revise history:
9
 *
10
 ***************************************************/
11
`timescale 1ns/1ps
12
`include "mips_16_defs.v"
13
module EX_stage
14
(
15
        input                                   clk,
16
        input                                   rst,
17
        // from ID_stage
18
        input           [56:0]           pipeline_reg_in,        //      [56:22],35bits: ex_alu_cmd[2:0], ex_alu_src1[15:0], ex_alu_src2[15:0]
19
                                                                                                //      [21:5],17bits:  mem_write_en, mem_write_data[15:0]
20
                                                                                                //      [4:0],5bits:    write_back_en, write_back_dest[2:0], write_back_result_mux, 
21
 
22
        // to MEM_stage
23
        output  reg     [37:0]           pipeline_reg_out,       //      [37:22],16bits: ex_alu_result[15:0];
24
                                                                                                //      [21:5],17bits:  mem_write_en, mem_write_data[15:0]
25
                                                                                                //      [4:0],5bits:    write_back_en, write_back_dest[2:0], write_back_result_mux, 
26
 
27
        // to hazard detection unit
28
        output          [2:0]            ex_op_dest
29
);
30
        wire    [2:0]            alu_cmd         = pipeline_reg_in[56:54];                               //S2
31
        wire    [15:0]           alu_src1        = pipeline_reg_in[53:38];
32
        wire    [15:0]           alu_src2        = pipeline_reg_in[37:22];
33
 
34
        wire    [15:0]           ex_alu_result;
35
 
36
        /********************** ALU *********************/
37
        alu alu_inst(
38
                .a              ( alu_src1),
39
                .b              ( alu_src2),
40
                .cmd    ( alu_cmd),
41
                .r              ( ex_alu_result)
42
        );
43
 
44
 
45
        /********************** singals to MEM_stage *********************/
46
        always @ (posedge clk) begin
47
                if(rst) begin
48
                        pipeline_reg_out[37:0] <= 0;
49
                end
50
                else begin
51
                        pipeline_reg_out[37:22] <= ex_alu_result;
52
                        pipeline_reg_out[21:0] <= pipeline_reg_in[21:0];
53
                end
54
        end
55
 
56
 
57
        /********************** to hazard detection unit *********************/
58
        assign ex_op_dest = pipeline_reg_in[3:1];
59
endmodule

powered by: WebSVN 2.1.0

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