From 19655b80929b8dc83318cee13fbb1295a0061c87 Mon Sep 17 00:00:00 2001 From: Istvan Csomortani Date: Wed, 5 Sep 2018 11:00:08 +0100 Subject: [PATCH] spi_engine: Define SDO default state There are devices where the SDO default state, between transactions, is not GND, rather VCC. Define a parameter, which can be used to set the default state of the SDO line. --- .../spi_engine/spi_engine_execution/spi_engine_execution.v | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 ee1596152..585c9b5a5 100644 --- a/library/spi_engine/spi_engine_execution/spi_engine_execution.v +++ b/library/spi_engine/spi_engine_execution/spi_engine_execution.v @@ -41,7 +41,8 @@ module spi_engine_execution #( parameter DEFAULT_SPI_CFG = 0, parameter DEFAULT_CLK_DIV = 0, parameter DATA_WIDTH = 8, // Valid data widths values are 8/16/24/32 - parameter NUM_OF_SDI = 1 ) ( + parameter NUM_OF_SDI = 1, + parameter [0:0] SDO_DEFAULT = 1'b0) ( input clk, input resetn, @@ -358,7 +359,8 @@ always @(posedge clk) begin end end -assign sdo = data_shift[DATA_WIDTH]; +assign sdo = (inst_d1 == CMD_TRANSFER) ? data_shift[DATA_WIDTH] : SDO_DEFAULT; + assign sdi_data = (NUM_OF_SDI == 1) ? data_shift[(DATA_WIDTH-1):0] : (NUM_OF_SDI == 2) ? {data_shift_1[(DATA_WIDTH-1):0], data_shift[(DATA_WIDTH-1):0]} : (NUM_OF_SDI == 3) ? {data_shift_2[(DATA_WIDTH-1):0], data_shift_1[(DATA_WIDTH-1):0],