diff --git a/syn/SpiMasterE.vhd b/syn/SpiMasterE.vhd index 80c29d1..ff5ac65 100644 --- a/syn/SpiMasterE.vhd +++ b/syn/SpiMasterE.vhd @@ -104,7 +104,6 @@ begin v_bit_counter := C_BIT_COUNTER_START; v_sclk_counter := G_SCLK_DIVIDER-1; s_transfer_valid <= false; - s_ste <= '1'; s_sclk <= std_logic'val(G_SPI_CPOL+2); s_mosi <= '1'; s_spi_state <= IDLE; @@ -112,15 +111,13 @@ begin case s_spi_state is when IDLE => - s_ste <= '1'; s_sclk <= std_logic'val(G_SPI_CPOL+2); - s_mosi <= '0'; + s_mosi <= '1'; s_recv_register <= (others => '0'); v_bit_counter := C_BIT_COUNTER_START; v_sclk_counter := G_SCLK_DIVIDER/2-1; s_transfer_valid <= false; if(DataValid_i = '1' and s_data_accept = '1') then - s_ste <= '0'; s_spi_state <= WRITE; end if; @@ -182,7 +179,6 @@ begin when SET_STE => s_transfer_valid <= false; - s_ste <= '1'; if (v_sclk_counter = 0) then s_spi_state <= IDLE; else @@ -218,12 +214,15 @@ begin end process RecvRegisterP; + --+ internal signals + s_ste <= '1' when s_spi_state = IDLE or s_spi_state = SET_STE else '0'; + --+ Output port connections DataValid_o <= s_data_valid; DataAccept_o <= s_data_accept; - SpiSte_o <= s_ste; - SpiSclk_o <= s_sclk; - SpiMosi_o <= s_mosi; + SpiSte_o <= s_ste; + SpiSclk_o <= s_sclk; + SpiMosi_o <= s_mosi when s_ste = '0' else '1'; assert G_SCLK_DIVIDER rem 2 = 0