--------------------------------------------------------- --Einstellung des Audio-Codecs durch eine State-Machine-- --------------------------------------------------------- Codec_Properties: PROCESS (clock_50, enable, key, reset, wm_i2c_busy) BEGIN IF enable = '0' THEN IF RISING_EDGE (clock_50) THEN --Zurücksetzen der Startkondition sobald der Morsetaster losgelassen wird IF (key = '1') THEN wm_i2c_send_flag <= '0'; END IF; END IF; IF RISING_EDGE(clock_50) AND wm_i2c_busy = '0' THEN IF reset = '0' THEN state <= reset_codec; END IF; CASE state IS WHEN reset_codec => wm_i2c_data(15 DOWNTO 9) <= "0001111"; wm_i2c_data(8 DOWNTO 0) <= "000000000"; wm_i2c_send_flag <= '1'; state <= interface; WHEN slave => wm_i2c_data(15 DOWNTO 9) <= "0000111"; wm_i2c_data(8 DOWNTO 0) <= "000010011"; wm_i2c_send_flag <= '1'; state <= volume; WHEN volume => wm_i2c_data(15 DOWNTO 9) <= "0000010"; wm_i2c_data(8 DOWNTO 0) <= "101111001"; wm_i2c_send_flag <= '1'; state <= USB; WHEN power => wm_i2c_data(15 DOWNTO 9) <= "0000110"; wm_i2c_data(8 DOWNTO 0) <= "000000111"; wm_i2c_send_flag <= '1'; state <= slave; WHEN USB => wm_i2c_data(15 DOWNTO 9) <= "0001000"; wm_i2c_data(8 DOWNTO 0) <= "000000001"; wm_i2c_send_flag <= '1'; state <= lineout; WHEN interface => wm_i2c_data(15 DOWNTO 9) <= "0001001"; wm_i2c_data(8 DOWNTO 0) <= "111111111"; wm_i2c_send_flag <= '1'; state <= power; WHEN lineout => wm_i2c_data(15 DOWNTO 9) <= "0000100"; wm_i2c_data(8 DOWNTO 0) <= "000010010"; wm_i2c_send_flag <= '1'; state <= remove_mute; WHEN remove_mute => wm_i2c_data(15 DOWNTO 9) <= "0000101"; wm_i2c_data(8 DOWNTO 0) <= "000000000"; wm_i2c_send_flag <= '1'; state <= idle; WHEN OTHERS => NULL; END CASE; END IF; END IF; END PROCESS; END structure;