library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.gen_pkg.all; use work.textmode_vga_component_pkg.all; use work.textmode_vga_pkg.all; use work.textmode_vga_platform_dependent_pkg.all; use work.ps2_keyboard_controller_pkg.all; entity calc is port ( CLK_50MHZ : in std_logic; -- sys_res_n : in std_logic; -- btnA -- TODO: pins -- rs232 -- TODO: pins -- vga vsync_n : out std_logic; hsync_n : out std_logic; r : out std_logic_vector(RED_BITS - 1 downto 0); g : out std_logic_vector(GREEN_BITS - 1 downto 0); b : out std_logic_vector(BLUE_BITS - 1 downto 0); -- ps/2 ps2_clk : inout std_logic; ps2_data : inout std_logic; -- debug led0 : out std_logic; led1 : out std_logic ); end entity calc; architecture top of calc is -- ps/2 signal new_data : std_logic; signal data : std_logic_vector(7 downto 0); -- vga signal vga_clk, free : std_logic; -- vga/display signal command : std_logic_vector(COMMAND_SIZE - 1 downto 0); signal command_data : std_logic_vector(3 * COLOR_SIZE + CHAR_SIZE -1 downto 0); -- history/display signal d_new_eingabe, d_new_result, d_new_bs : std_logic; signal d_zeile : hzeile; signal d_spalte : hspalte; signal d_get, d_done : std_logic; signal d_char : hbyte; -- history/scanner signal s_char : hbyte; signal s_take, s_done, s_backspace : std_logic; -- tmp: history<>scanner signal do_it, finished : std_logic; begin led0 <= '0'; led1 <= '1'; -- vga/ipcore textmode_vga_inst : entity work.textmode_vga(struct) generic map ( VGA_CLK_FREQ => 25000000, BLINK_INTERVAL_MS => 500, SYNC_STAGES => 2 ) port map ( sys_clk => CLK_50MHZ, sys_res_n => '1', command => command, command_data => command_data, free => free, vga_clk => vga_clk, vga_res_n => '1', vsync_n => vsync_n, hsync_n => hsync_n, r => r, g => g, b => b ); -- pll fuer vga clk_vga_s3e_inst : entity work.clk_vga_s3e(beh) port map ( clk50 => CLK_50MHZ, clk25 => vga_clk ); -- display display_inst : entity work.display(beh) port map ( sys_clk => CLK_50MHZ, sys_res_n => '1', -- history d_new_eingabe => d_new_eingabe, d_new_result => d_new_result, d_new_bs => d_new_bs, d_zeile => d_zeile, d_spalte => d_spalte, d_get => d_get, d_done => d_done, d_char => d_char, -- vga command => command, command_data => command_data, free => free ); -- history history_inst : entity work.history(beh) port map ( sys_clk => CLK_50MHZ, sys_res_n => '1', -- scanner s_char => s_char, s_take => s_take, s_done => s_done, s_backspace => s_backspace, -- display d_new_eingabe => d_new_eingabe, d_new_result => d_new_result, d_new_bs => d_new_bs, d_zeile => d_zeile, d_spalte => d_spalte, d_get => d_get, d_done => d_done, d_char => d_char, -- TODO: tmp only! do_it => do_it, finished => finished ); -- scanner scanner_inst : entity work.scanner(beh) port map ( sys_clk => CLK_50MHZ, sys_res_n => '1', -- ps/2 new_data => new_data, data => data, -- history s_char => s_char, s_take => s_take, s_done => s_done, s_backspace => s_backspace, -- TODO: parser. temporaer mit history verbunden do_it => do_it, finished => finished ); -- ps/2 ps2_inst : entity work.ps2_keyboard_controller(beh) generic map ( CLK_FREQ => 50000000, SYNC_STAGES => 2 ) port map ( sys_clk => CLK_50MHZ, sys_res_n => '1', -- scanner new_data => new_data, data => data, ps2_clk => ps2_clk, ps2_data => ps2_data ); end architecture top;