summaryrefslogtreecommitdiff
path: root/rtl/core/mmu/mmu.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-09 09:25:48 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-09 09:25:48 -0600
commit5d798386c3b1c1dc45a2fbc382c9367ccc27c524 (patch)
treea04fff74505af30c8044f80f523fd887331e6234 /rtl/core/mmu/mmu.sv
parent65590be80332d132d7037bfe3bb19e5d6e5bcd7b (diff)
Implement reset
Diffstat (limited to 'rtl/core/mmu/mmu.sv')
-rw-r--r--rtl/core/mmu/mmu.sv60
1 files changed, 30 insertions, 30 deletions
diff --git a/rtl/core/mmu/mmu.sv b/rtl/core/mmu/mmu.sv
index bf37cb0..185fb6b 100644
--- a/rtl/core/mmu/mmu.sv
+++ b/rtl/core/mmu/mmu.sv
@@ -1,6 +1,7 @@
module core_mmu
(
input logic clk,
+ rst_n,
input logic bus_ready,
input word bus_data_rd,
@@ -80,35 +81,34 @@ module core_mmu
end
end
- always_ff @(posedge clk) begin
- master <= next_master;
- active <= bus_start || (active && !bus_ready);
-
- if(hold_free)
- unique case(next_master)
- INSN: begin
- hold_start <= data_start;
- hold_addr <= data_addr;
- hold_write <= data_write;
- hold_data_wr <= data_data_wr;
- end
-
- DATA: begin
- hold_start <= insn_start;
- hold_addr <= insn_addr;
- hold_write <= 0;
- end
- endcase
- end
-
- initial begin
- master = INSN;
- active = 0;
-
- hold_addr = 30'b0;
- hold_start = 0;
- hold_write = 0;
- hold_data_wr = 0;
- end
+ always_ff @(posedge clk or negedge rst_n)
+ if(!rst_n) begin
+ master <= INSN;
+ active <= 0;
+
+ hold_addr <= 30'b0;
+ hold_start <= 0;
+ hold_write <= 0;
+ hold_data_wr <= 0;
+ end else begin
+ master <= next_master;
+ active <= bus_start || (active && !bus_ready);
+
+ if(hold_free)
+ unique case(next_master)
+ INSN: begin
+ hold_start <= data_start;
+ hold_addr <= data_addr;
+ hold_write <= data_write;
+ hold_data_wr <= data_data_wr;
+ end
+
+ DATA: begin
+ hold_start <= insn_start;
+ hold_addr <= insn_addr;
+ hold_write <= 0;
+ end
+ endcase
+ end
endmodule