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

Subversion Repositories mips_16

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

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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