Index: /trunk/modules/vci_spi/caba/source/src/vci_spi.cpp
===================================================================
--- /trunk/modules/vci_spi/caba/source/src/vci_spi.cpp	(revision 574)
+++ /trunk/modules/vci_spi/caba/source/src/vci_spi.cpp	(revision 575)
@@ -633,7 +633,18 @@
 	break;
     case S_XMIT:
+      {
+	bool s_clk_sample = r_spi_clk ^ r_ctrl_cpha;
 	p_spi_clk = r_spi_clk ^ r_ctrl_cpol;
-	p_spi_mosi = r_spi_out;
-	break;
+	if (s_clk_sample == 0) {
+	    // clock low: get data directly from shift register
+	    // as r_spi_out may be delayed by one clock cycle
+	    p_spi_mosi = (r_txrx[(r_ctrl_char_len -1)/ 64] >> ((r_ctrl_char_len - 1) % 64)) & (uint64_t)0x0000000000000001ULL;
+	} else {
+	    // clock high: get data from saved value, as the shift register
+	    // may have changed
+	    p_spi_mosi = r_spi_out;
+	}
+	break;
+      }
     }
 
