diff --git a/logical/qspi_controller/logical/qspi_controller.sv b/logical/qspi_controller/logical/qspi_controller.sv
index 404850dfe7097d5aeb33c642f6ca5d07ff615e6e..ae4ef8a78091b877e401cbe47e25cff9cc6b861a 100644
--- a/logical/qspi_controller/logical/qspi_controller.sv
+++ b/logical/qspi_controller/logical/qspi_controller.sv
@@ -60,7 +60,7 @@ always @(posedge HCLK or negedge HRESETn) begin
     end
 end
 
-enum {IDLE, OP, ADDR, MODE, DUMMY, DATA_O, DATA_I} current_state, next_state;
+enum {IDLE, NO_FETCH, OP, ADDR, MODE, DUMMY, DATA_O, DATA_I} current_state, next_state;
 
 reg [2:0]   op_counter;
 reg [4:0]   addr_counter;
@@ -72,7 +72,8 @@ reg [7:0]   op_code;
 reg [23:0]  addr_code;
 reg [7:0]   qspi_mode_reg;
 reg [3:0]   QSPI_IO_o_reg;
-reg [127:0]   data_in_reg;
+reg [127:0] data_in_reg;
+reg [21:0]  last_QSPI_ADDR;
 
 reg [127:0]   QSPI_WDATA_reg;
 
@@ -92,13 +93,21 @@ always @(*) begin
             if(QSPI_ENABLE==1'b1 && QSPI_NO_CMD==1'b0) begin
                 next_state = OP;
             end else if(QSPI_ENABLE==1'b1 && QSPI_NO_CMD==1'b1) begin
-                next_state = ADDR;
+                if(last_QSPI_ADDR==QSPI_ADDR)
+                    next_state = NO_FETCH;
+                else
+                    next_state = ADDR;
             end else begin
                 next_state = IDLE;
                 QSPI_ENABLE_ACK = 1'b0;
             end 
             //op_counter=3'h0; 
         end
+        NO_FETCH: begin 
+            QSPI_ENABLE_ACK = 1'b1;
+            if(QSPI_ENABLE==1'b0)
+                next_state = IDLE;
+        end
         OP: begin
             QSPI_ENABLE_ACK = 1'b1;
             if(QSPI_QIO_MODE==1'b1 & op_counter==3'h1) begin
@@ -132,6 +141,7 @@ always @(*) begin
             QSPI_ENABLE_ACK = 1'b1;
             if(QSPI_QIO_MODE==1'b1 & addr_counter==5'h05) begin
                 QSPI_ENABLE_ACK = 1'b0;
+                last_QSPI_ADDR = QSPI_ADDR;
                 if(QSPI_CONT_READ)
                     next_state = MODE;
                 else if(QSPI_DUMMY_CYCLES>4'h0)