Guest
#4737513
Hi Everyone (Lothar) I'm trying to construct a very simple spi slave in
vhdl, the purpose is to shift out a 16 bit std_logic_vector to an
arduino, arduino being the master, nothing special, just sent the vector
per spi request, ive gotten close but the data is not correct. Hope
anyone can help. this is what i have so far that came close, well
atleast showed some changing data.
process (sck2, cs2)
begin
if RISING_EDGE(CS2) then
DATA2_reg(11 DOWNTO 0) <= count(11 DOWNTO 0);
DATASTATE <= 0;
END IF;
IF (sck2'event and sck2 = '1') then
if (cs2 = '0') then
DATASTATE <= DATASTATE + 1;
CASE DATASTATE IS
WHEN 1 => TX_REG <= DATA2_REG(0);
WHEN 2 => TX_REG <= DATA2_REG(1);
WHEN 3 => TX_REG <= DATA2_REG(2);
WHEN 4 => TX_REG <= DATA2_REG(3);
WHEN 5 => TX_REG <= DATA2_REG(4);
WHEN 6 => TX_REG <= DATA2_REG(5);
WHEN 7 => TX_REG <= DATA2_REG(6);
WHEN 8 => TX_REG <= DATA2_REG(7);
WHEN 9 => TX_REG <= DATA2_REG(8);
WHEN 10 => TX_REG <= DATA2_REG(9);
WHEN 11 => TX_REG <= DATA2_REG(10);
WHEN 12 => TX_REG <= DATA2_REG(11);
WHEN 13 => TX_REG <= '0';
WHEN 14 => TX_REG <= '0';
WHEN 15 => TX_REG <= '0';
WHEN 16 => TX_REG <= '0';
WHEN OTHERS => NULL;
END CASE;
end if; end if; END IF;
end process;
data2 <= TX_REG;
END behavior;