aboutsummaryrefslogtreecommitdiff
path: root/core/rtl/ifu.sv
diff options
context:
space:
mode:
Diffstat (limited to 'core/rtl/ifu.sv')
-rw-r--r--core/rtl/ifu.sv30
1 files changed, 30 insertions, 0 deletions
diff --git a/core/rtl/ifu.sv b/core/rtl/ifu.sv
new file mode 100644
index 0000000..0eb3b1d
--- /dev/null
+++ b/core/rtl/ifu.sv
@@ -0,0 +1,30 @@
+module ifu
+ 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 (
+ .q(pc_IF),
+ .d(pcNxt_IF),
+ .en(1'b1),
+ .clk(clk),
+ .rst_l(rst_l)
+ );
+
+endmodule