6ff9ea2cf63e0c3bdc53c066898d5c36ea675efb
[hwmod.git] / src / calc_s3e.vhd
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
4 use work.gen_pkg.all;
5 use work.textmode_vga_component_pkg.all;
6 use work.textmode_vga_pkg.all;
7 use work.textmode_vga_platform_dependent_pkg.all;
8 use work.ps2_keyboard_controller_pkg.all;
9
10 entity calc is
11         port (
12                 CLK_50MHZ : in std_logic;
13                 -- sys_res_n : in std_logic;
14                 -- btnA
15                 -- TODO: pins
16                 -- rs232
17                 -- TODO: pins
18                 -- vga
19                 vsync_n : out std_logic;
20                 hsync_n : out std_logic;
21                 r : out std_logic_vector(RED_BITS - 1 downto 0);
22                 g : out std_logic_vector(GREEN_BITS - 1 downto 0);
23                 b : out std_logic_vector(BLUE_BITS - 1 downto 0);
24                 -- ps/2
25                 ps2_clk : inout std_logic;
26                 ps2_data : inout std_logic;
27                 -- debug
28                 led0 : out std_logic;
29                 led1 : out std_logic
30         );
31 end entity calc;
32
33 architecture top of calc is
34         -- ps/2
35         signal new_data : std_logic;
36         signal data : std_logic_vector(7 downto 0);
37         -- vga
38         signal vga_clk, free : std_logic;
39         -- vga/display
40         signal command : std_logic_vector(COMMAND_SIZE - 1 downto 0);
41         signal command_data : std_logic_vector(3 * COLOR_SIZE + CHAR_SIZE -1 downto 0);
42         -- history/display
43         signal d_new_eingabe, d_new_result : std_logic;
44         signal d_zeile : hzeile;
45         signal d_spalte : hspalte;
46         signal d_get, d_done : std_logic;
47         signal d_char : hbyte;
48         -- history/scanner
49         signal s_char : hbyte;
50         signal s_take, s_done, s_backspace : std_logic;
51
52         -- tmp: history<>scanner
53         signal do_it, finished : std_logic;
54 begin
55         led0 <= '0';
56         led1 <= '1';
57
58         -- vga/ipcore
59         textmode_vga_inst : entity work.textmode_vga(struct)
60         generic map (
61                 VGA_CLK_FREQ => 25000000,
62                 BLINK_INTERVAL_MS => 500,
63                 SYNC_STAGES => 2
64         )
65         port map (
66                 sys_clk => CLK_50MHZ,
67                 sys_res_n => '1',
68                 command => command,
69                 command_data => command_data,
70                 free => free,
71                 vga_clk => vga_clk,
72                 vga_res_n => '1',
73                 vsync_n => vsync_n,
74                 hsync_n => hsync_n,
75                 r => r,
76                 g => g,
77                 b => b
78         );
79
80         -- pll fuer vga
81         clk_vga_s3e_inst : entity work.clk_vga_s3e(beh)
82         port map (
83                 clk50 => CLK_50MHZ,
84                 clk25 => vga_clk
85         );
86
87         -- display
88         display_inst : entity work.display(beh)
89         port map (
90                 sys_clk => CLK_50MHZ,
91                 sys_res_n => '1',
92                 -- history
93                 d_new_eingabe => d_new_eingabe,
94                 d_new_result => d_new_result,
95                 d_zeile => d_zeile,
96                 d_spalte => d_spalte,
97                 d_get => d_get,
98                 d_done => d_done,
99                 d_char => d_char,
100                 -- vga
101                 command => command,
102                 command_data => command_data,
103                 free => free
104         );
105
106         -- history
107         history_inst : entity work.history(beh)
108         port map (
109                 sys_clk => CLK_50MHZ,
110                 sys_res_n => '1',
111                 -- scanner
112                 s_char => s_char,
113                 s_take => s_take,
114                 s_done => s_done,
115                 s_backspace => s_backspace,
116                 -- display
117                 d_new_eingabe => d_new_eingabe,
118                 d_new_result => d_new_result,
119                 d_zeile => d_zeile,
120                 d_spalte => d_spalte,
121                 d_get => d_get,
122                 d_done => d_done,
123                 d_char => d_char,
124                 -- TODO: tmp only!
125                 do_it => do_it,
126                 finished => finished
127         );
128
129         -- scanner
130         scanner_inst : entity work.scanner(beh)
131         port map (
132                 sys_clk => CLK_50MHZ,
133                 sys_res_n => '1',
134                 -- ps/2
135                 new_data => new_data,
136                 data => data,
137                 -- history
138                 s_char => s_char,
139                 s_take => s_take,
140                 s_done => s_done,
141                 s_backspace => s_backspace,
142                 -- TODO: parser. temporaer mit history verbunden
143                 do_it => do_it,
144                 finished => finished
145         );
146
147         -- ps/2
148         ps2_inst : entity work.ps2_keyboard_controller(beh)
149         generic map (
150                 CLK_FREQ => 50000000,
151                 SYNC_STAGES => 2
152         )
153         port map (
154                 sys_clk => CLK_50MHZ,
155                 sys_res_n => '1',
156                 -- scanner
157                 new_data => new_data,
158                 data => data,
159                 ps2_clk => ps2_clk,
160                 ps2_data => ps2_data
161         );
162 end architecture top;