]> Joshua Wise's Git repositories - firearm.git/blobdiff - Fetch.v
Memory: Move all state machine code out to its own always block.
[firearm.git] / Fetch.v
diff --git a/Fetch.v b/Fetch.v
index 834a0da5c931a78923312c7691e0c74799f662e3..aa9bd7ca91c92c8bc8b94bdec0602db2e06819e6 100644 (file)
--- a/Fetch.v
+++ b/Fetch.v
@@ -16,10 +16,12 @@ module Fetch(
        
        reg qjmp = 0;   /* A jump has been queued up while we were waiting. */
        reg [31:0] qjmppc;
-       always @(posedge clk)
-               if (rd_wait && jmp && !qjmp)
+       always @(posedge clk or negedge Nrst)
+               if (!Nrst)
+                       qjmp <= 0;
+               else if ((rd_wait || stall) && jmp)
                        {qjmp,qjmppc} <= {jmp, jmppc};
-               else if (!rd_wait && qjmp)      /* It has already been intoed. */
+               else if (!rd_wait && !stall && qjmp)    /* It has already been intoed. */
                        {qjmp,qjmppc} <= {1'b0, 32'hxxxxxxxx};
        
        reg [31:0] reqpc;
@@ -36,18 +38,10 @@ module Fetch(
        assign rd_addr = reqpc;
        assign rd_req = 1;
        
-       always @(negedge Nrst)
-       begin
-               pc <= 32'hFFFFFFFC;
-               qjmp <= 0;
-               bubble <= 1;
-       end
-       
-       always @(posedge clk)
+       always @(posedge clk or negedge Nrst)
        begin
                if (!Nrst) begin
                        pc <= 32'hFFFFFFFC;
-                       qjmp <= 0;
                        bubble <= 1;
                end else if (!stall)
                begin
This page took 0.021995 seconds and 4 git commands to generate.