diff --git a/docs/regmap/adi_regmap_spi_engine.txt b/docs/regmap/adi_regmap_spi_engine.txt index 2ed2d109686..5cd86d6f9ef 100644 --- a/docs/regmap/adi_regmap_spi_engine.txt +++ b/docs/regmap/adi_regmap_spi_engine.txt @@ -25,7 +25,7 @@ RO ENDFIELD FIELD -[7:0] 0x00000000 +[7:0] 0x00000001 VERSION_PATCH RO ENDFIELD diff --git a/library/spi_engine/axi_spi_engine/axi_spi_engine.v b/library/spi_engine/axi_spi_engine/axi_spi_engine.v index 6eefd5f5722..378b982007a 100644 --- a/library/spi_engine/axi_spi_engine/axi_spi_engine.v +++ b/library/spi_engine/axi_spi_engine/axi_spi_engine.v @@ -133,7 +133,7 @@ module axi_spi_engine #( input [7:0] offload_sync_data ); - localparam PCORE_VERSION = 'h010500; + localparam PCORE_VERSION = 'h010501; localparam S_AXI = 0; localparam UP_FIFO = 1; diff --git a/library/spi_engine/spi_engine_execution/spi_engine_execution.v b/library/spi_engine/spi_engine_execution/spi_engine_execution.v index 943e7f7678d..f64c1155f55 100644 --- a/library/spi_engine/spi_engine_execution/spi_engine_execution.v +++ b/library/spi_engine/spi_engine_execution/spi_engine_execution.v @@ -309,26 +309,31 @@ module spi_engine_execution #( end always @(posedge clk) begin - if (idle == 1'b1 || (cs_sleep_counter_compare && !cs_sleep_repeat && inst_d1 == CMD_CHIPSELECT)) begin + if (idle == 1'b1) begin bit_counter <= 'h0; transfer_counter <= 'h0; - sleep_counter <= 'h0; ntx_rx <= 1'b0; sleep_counter_increment <= 1'b0; - end else if (clk_div_last == 1'b1 && wait_for_io == 1'b0) begin - if (last_bit && transfer_active && ntx_rx) begin - bit_counter <= 'h0; - transfer_counter <= transfer_counter + 1; - ntx_rx <= ~ntx_rx; - end else begin - if (transfer_active) begin - bit_counter <= bit_counter + ntx_rx; + sleep_counter <= 'h0; + end else begin + if (clk_div_last == 1'b1 && wait_for_io == 1'b0) begin + if (last_bit && transfer_active && ntx_rx) begin + bit_counter <= 'h0; + transfer_counter <= transfer_counter + 1; ntx_rx <= ~ntx_rx; end else begin - sleep_counter_increment <= ~sleep_counter_increment; - sleep_counter <= sleep_counter + sleep_counter_increment; + if (transfer_active) begin + bit_counter <= bit_counter + ntx_rx; + ntx_rx <= ~ntx_rx; + end else begin + sleep_counter_increment <= ~sleep_counter_increment; + sleep_counter <= sleep_counter + sleep_counter_increment; + end end end + if (cs_sleep_counter_compare && !cs_sleep_repeat && inst_d1 == CMD_CHIPSELECT) begin + sleep_counter <= 'h0; + end end end