VGA_ansteuereung: process (clock_50, reset, LCD_DATA, LCD_EN, LCD_RS, sonderzeichen, vga_valid, enable, en_rise, en_fall, en_old, lcd_en_old, lcd_en_fall, state, state2) begin if reset = '0' then rx_done_tick_sig <= '0'; vga_out_sig <= (others => '0'); lcd_en_fall <= '0'; en_old <= '0'; en_fall <= '0'; en_rise <= '0'; state <= 0; state2 <= 0; elsif clock_50'event and clock_50 ='1' then lcd_en_old <= LCD_EN; en_old <= enable; if en_old ='0' and enable = '1' then --nun in encoder modus en_rise <='1'; rx_done_tick_sig <= '0'; else en_rise <='0'; end if; if en_old ='1' and enable = '0' then --nun im decoder modus!!! en_fall <='1'; rx_done_tick_sig <= '0'; else en_fall <='0'; end if; if lcd_en_old ='1' and LCD_EN = '0' then --Für Eigegebene Zeichen, liegen nur an wenn LCD_EN auf '0' steht (siehe ini:=8) lcd_en_fall <= '1'; else lcd_en_fall <= '0'; end if; if (en_rise ='1' or state > 0) and vga_valid = '1' then -- schreibe "ENC: " case state is when 0=> vga_out_sig <= "01011010"; --ENTER rx_done_tick_sig <= '1';-- state <= state +1; when 1=> rx_done_tick_sig <= '0';-- state <= state +1; when 2=> vga_out_sig <= x"45"; --"E" rx_done_tick_sig <= '1';-- state <= state +1; when 3=> rx_done_tick_sig <= '0';-- state <= state +1; when 4=> vga_out_sig <=x"4E"; --"N" rx_done_tick_sig <= '1';-- state <= state +1; when 5=> rx_done_tick_sig <= '0';-- state <= state +1; when 6=> vga_out_sig <= x"43"; --"C" rx_done_tick_sig <= '1';-- state <= state +1; when 7=> rx_done_tick_sig <= '0';-- state <= state +1; when 8=> vga_out_sig <= x"3A"; --":" rx_done_tick_sig <= '1';-- state <= state +1; when 9=> rx_done_tick_sig <= '0';-- state <= state +1; when 10=> vga_out_sig <= x"20"; --" " rx_done_tick_sig <= '1';-- state <= state +1; when 11=> rx_done_tick_sig <= '0';-- state <= state +1; when 12 => en_rise <= '0'; state <= 13; when others => state <= 0; end case; elsif (en_fall ='1' or state2 > 0 ) and vga_valid = '1' then -- schreibe "DEC: " case state2 is when 0=> vga_out_sig <= "01011010"; --ENTER rx_done_tick_sig <= '1';-- state2 <= state2 +1; when 1=> rx_done_tick_sig <= '0';-- state2 <= state2 +1; when 2=> vga_out_sig <= x"44"; --"D" rx_done_tick_sig <= '1';-- state2 <= state2 +1; when 3=> rx_done_tick_sig <= '0';-- state2 <= state2 +1; when 4=> vga_out_sig <=x"45"; --"E" rx_done_tick_sig <= '1';-- state2 <= state2 +1; when 5=> rx_done_tick_sig <= '0';-- state2 <= state2 +1; when 6=> vga_out_sig <= x"43"; --"C" rx_done_tick_sig <= '1';-- state2 <= state2 +1; when 7=> rx_done_tick_sig <= '0';-- state2 <= state2 +1; when 8=> vga_out_sig <= x"3A"; --":" rx_done_tick_sig <= '1';-- state2 <= state2 +1; when 9=> rx_done_tick_sig <= '0';-- state2 <= state2 +1; when 10=> vga_out_sig <= x"20"; --" " rx_done_tick_sig <= '1';-- state2 <= state2 +1; when 11=> rx_done_tick_sig <= '0';-- state2 <= state2 +1; when 12 => en_fall <= '0'; state2 <= 13; when others => state2 <= 0; end case; elsif lcd_en_fall = '1' and vga_valid = '1' then if sonderzeichen = "000" then --buchstaben vga_out_sig <= LCD_DATA; rx_done_tick_sig <='1'; elsif sonderzeichen /= "000" then --elsif LCD_RS ='0' then case sonderzeichen is when "100" => --enter vga_out_sig <= "01011010"; --PS2 code für enter when "110" => --backspace vga_out_sig <="01100110"; --Ps2 code für backspace when "001" => --left arrow vga_out_sig <= "01101011"; ---etc. etc. when "011" => --right arrow vga_out_sig <= "01110100"; when "101" => --entf vga_out_sig <= x"20"; when others => vga_out_sig <= x"00"; end case; rx_done_tick_sig <= '1'; lcd_en_fall <= '0'; end if; else rx_done_tick_sig <= '0'; end if; end if; rx_done_tick <= rx_done_tick_sig; vga_out <= vga_out_sig; end process;