Skip to content

Commit 81ebb21

Browse files
committed
library/spi_engine: fix cs sleep duration for clk_div=0
Signed-off-by: Laez Barbosa <[email protected]>
1 parent 4632890 commit 81ebb21

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

docs/regmap/adi_regmap_spi_engine.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ RO
2525
ENDFIELD
2626

2727
FIELD
28-
[7:0] 0x00000003
28+
[7:0] 0x00000004
2929
VERSION_PATCH
3030
RO
3131
ENDFIELD

library/spi_engine/axi_spi_engine/axi_spi_engine.v

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ module axi_spi_engine #(
133133
input [7:0] offload_sync_data
134134
);
135135

136-
localparam PCORE_VERSION = 'h010401;
136+
localparam PCORE_VERSION = 'h010403;
137137
localparam S_AXI = 0;
138138
localparam UP_FIFO = 1;
139139

library/spi_engine/spi_engine_execution/spi_engine_execution.v

+17-12
Original file line numberDiff line numberDiff line change
@@ -309,26 +309,31 @@ module spi_engine_execution #(
309309
end
310310

311311
always @(posedge clk) begin
312-
if (idle == 1'b1 || (cs_sleep_counter_compare && !cs_sleep_repeat && inst_d1 == CMD_CHIPSELECT)) begin
312+
if (idle == 1'b1) begin
313313
bit_counter <= 'h0;
314314
transfer_counter <= 'h0;
315-
sleep_counter <= 'h0;
316315
ntx_rx <= 1'b0;
317316
sleep_counter_increment <= 1'b0;
318-
end else if (clk_div_last == 1'b1 && wait_for_io == 1'b0) begin
319-
if (last_bit && transfer_active && ntx_rx) begin
320-
bit_counter <= 'h0;
321-
transfer_counter <= transfer_counter + 1;
322-
ntx_rx <= ~ntx_rx;
323-
end else begin
324-
if (transfer_active) begin
325-
bit_counter <= bit_counter + ntx_rx;
317+
sleep_counter <= 'h0;
318+
end else begin
319+
if (clk_div_last == 1'b1 && wait_for_io == 1'b0) begin
320+
if (last_bit && transfer_active && ntx_rx) begin
321+
bit_counter <= 'h0;
322+
transfer_counter <= transfer_counter + 1;
326323
ntx_rx <= ~ntx_rx;
327324
end else begin
328-
sleep_counter_increment <= ~sleep_counter_increment;
329-
sleep_counter <= sleep_counter + sleep_counter_increment;
325+
if (transfer_active) begin
326+
bit_counter <= bit_counter + ntx_rx;
327+
ntx_rx <= ~ntx_rx;
328+
end else begin
329+
sleep_counter_increment <= ~sleep_counter_increment;
330+
sleep_counter <= sleep_counter + sleep_counter_increment;
331+
end
330332
end
331333
end
334+
if (cs_sleep_counter_compare && !cs_sleep_repeat && inst_d1 == CMD_CHIPSELECT) begin
335+
sleep_counter <= 'h0;
336+
end
332337
end
333338
end
334339

0 commit comments

Comments
 (0)