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

Subversion Repositories fwrisc

[/] [fwrisc/] [trunk/] [rtl/] [fwrisc_dbus_if.sv] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mballance
/****************************************************************************
2
 * fwrisc_dbus_if.sv
3
 ****************************************************************************/
4
 
5
 `include "fwrisc_defines.vh"
6
 
7
/**
8
 * Module: fwrisc_dbus_if
9
 *
10
 * TODO: Add module documentation
11
 */
12
module fwrisc_dbus_if(
13
                input                   clock,
14
                input[31:0]             instr,
15
                input[31:0]             rb_rdata,
16
                input[31:0]             alu_out,
17
                input[3:0]              state,
18
                output[31:0]    daddr,
19
                output                  dvalid,
20
                output                  dwrite,
21
                output reg[31:0]dwdata,
22
                output reg[3:0] dstrb,
23
                input                   dready
24
                );
25
 
26
        assign dvalid = (state == `MEMR || state == `MEMW);
27
        assign dwrite = (state == `MEMW);
28
        assign daddr = {alu_out[31:2], 2'b0}; // Always use the ALU for address
29
 
30
        always @* begin
31
                case (instr[13:12])
32
                        2'b00: begin // SB
33
                                dstrb = (1'b1 << alu_out[1:0]);
34
                                dwdata = {rb_rdata[7:0], rb_rdata[7:0], rb_rdata[7:0], rb_rdata[7:0]};
35
                        end
36
                        2'b01: begin // SH
37
                                dstrb = (2'b11 << {alu_out[1], 1'b0});
38
                                dwdata = {rb_rdata[15:0], rb_rdata[15:0]};
39
                        end
40
                        // SW and default
41
                        default: begin
42
                                dstrb = 4'hf;
43
                                dwdata = rb_rdata; // Write data is always @ rs2
44
                        end
45
                endcase
46
        end
47
 
48
endmodule
49
 
50
 

powered by: WebSVN 2.1.0

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