--Angepasst von: https://github.com/Johnnyjax/vga-kbd-terminal library ieee; use ieee.std_logic_1164.all; entity vga_txt_main is port (sys_clk, output_mode : in std_logic; reset : in std_ulogic; rx_done_tick_in : in std_ulogic; vga_dout : in std_ulogic_vector (7 downto 0); vga_hs, vga_vs : out std_logic; vga_r, vga_b, vga_g : out std_logic_vector(7 downto 0); vga_clk : out std_logic; vga_blank_n : out std_logic; vga_sync_n : out std_logic); end vga_txt_main; architecture arch of vga_txt_main is signal pixel_x, pixel_y : std_ulogic_vector(9 downto 0); signal video_on, pixel_tick : std_ulogic; signal rgb_reg, rgb_next : std_ulogic_vector(2 downto 0); signal scan_data, w_data : std_ulogic_vector(7 downto 0); signal kb_not_empty, kb_buf_empty : std_ulogic; signal key_code, ascii_code : std_ulogic_vector(7 downto 0); signal enter_tick : std_ulogic; signal up_tick, down_tick, left_tick, right_tick : std_ulogic; signal bck_spc_tick : std_ulogic; signal clk_25MHz :std_ulogic; begin vga_blank_n <= '1'; vga_sync_n <= '0'; vga_clk <= clk_25mhz; vga_sync: entity work.vga_sync port map (clk => sys_clk, reset => reset, vsync => vga_vs, hsync => vga_hs, video_on => video_on, p_tick => pixel_tick, pixel_x => pixel_x, pixel_y => pixel_y); text_gen: entity work.vga_text port map (clk => sys_clk, key_code => key_code(6 downto 0), video_on => video_on, pixel_x => pixel_x, pixel_y => pixel_y, we => kb_not_empty, enter_tick => enter_tick, text_rgb => rgb_next, up_tick => up_tick, down_tick => down_tick, left_tick => left_tick, right_tick => right_tick, bck_spc_tick => bck_spc_tick, output_mode => output_mode); kb_code: entity work.kb_code(arch) port map(clk => sys_clk, reset => reset, rd_key_code => kb_not_empty, key_code => key_code, enter_tick => enter_tick, kb_buf_empty => kb_buf_empty, up_tick => up_tick, down_tick => down_tick, left_tick => left_tick, right_tick => right_tick, bck_spc_tick => bck_spc_tick, rx_done_tick_in => rx_done_tick_in, vga_dout => vga_dout); process(sys_clk) begin if(sys_clk'event and sys_clk = '1') then clk_25mhz <= not clk_25mhz; if(pixel_tick = '1') then rgb_reg <= rgb_next; end if; end if; end process; kb_not_empty <= not kb_buf_empty; vga_r <= (others => rgb_reg(2)); vga_g <= (others => rgb_reg(1)); vga_b <= (others => rgb_reg(0)); end arch;