aboutsummaryrefslogtreecommitdiff
path: root/core/rtl/fetch.sv
blob: d2b5ed080d9cb6a41c9507940da17150e156ed71 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module fetch
import riscv_types::*;
(
  input  logic clk,
  input  logic rst_l,

  // IMEM interface
  output logic [31:0] if_imem_addr_IF
);

logic [31:0] pc_IF;
logic [31:0] pcNxt_IF;

assign if_imem_addr_IF = pc_IF; // Always fetch PC from IMEM, addresses are always 32 bit aligned
                                // TODO: Find out if 32 is the best fetching width vs 16

// Program Counter (PC)
assign pcNxt_IF = pc_IF + 32'd4;

AFFR #(.WIDTH(32)) ff_IF_pc ( .clk(clk), .rst_l(rst_l), .en(1'b1), .q(pc_IF), .d(pcNxt_IF) );

endmodule