41250e1432867e1a56e6ed73b774eb0ab85a7311
[hwmod.git] / src / calc.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                 sys_clk : 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         );
28 end entity calc;
29
30 architecture top of calc is
31         -- ps/2
32         signal new_data : std_logic;
33         signal data : std_logic_vector(7 downto 0);
34         -- vga
35         signal vga_clk, free : std_logic;
36         -- vga/display
37         signal command : std_logic_vector(COMMAND_SIZE - 1 downto 0);
38         signal command_data : std_logic_vector(3 * COLOR_SIZE + CHAR_SIZE -1 downto 0);
39         -- history/display
40         signal d_new_eingabe, d_new_result, d_new_bs : std_logic;
41         signal d_zeile : hzeile;
42         signal d_spalte : hspalte;
43         signal d_get, d_done : std_logic;
44         signal d_char : hbyte;
45         -- history/scanner
46         signal s_char : hbyte;
47         signal s_take, s_done, s_backspace : std_logic;
48         -- history/parser
49         signal p_rget : std_logic;
50         signal p_rdone : std_logic;
51         signal p_read : hbyte;
52         signal p_wtake : std_logic;
53         signal p_wdone : std_logic;
54         signal p_write : hbyte;
55         signal p_finished : std_logic;
56         -- parser/scanner
57         signal do_it, finished : std_logic;
58 begin
59         -- vga/ipcore
60         textmode_vga_inst : entity work.textmode_vga(struct)
61         generic map (
62                 VGA_CLK_FREQ => 25000000,
63                 BLINK_INTERVAL_MS => 500,
64                 SYNC_STAGES => 2
65         )
66         port map (
67                 sys_clk => sys_clk,
68                 sys_res_n => sys_res_n,
69                 command => command,
70                 command_data => command_data,
71                 free => free,
72                 vga_clk => vga_clk,
73                 vga_res_n => sys_res_n,
74                 vsync_n => vsync_n,
75                 hsync_n => hsync_n,
76                 r => r,
77                 g => g,
78                 b => b
79         );
80
81         -- pll fuer vga
82         vpll_inst : entity work.vpll(syn)
83         port map (
84                 inclk0 => sys_clk,
85                 c0 => vga_clk
86         );
87
88         -- display
89         display_inst : entity work.display(beh)
90         port map (
91                 sys_clk => sys_clk,
92                 sys_res_n => sys_res_n,
93                 -- history
94                 d_new_eingabe => d_new_eingabe,
95                 d_new_result => d_new_result,
96                 d_new_bs => d_new_bs,
97                 d_zeile => d_zeile,
98                 d_spalte => d_spalte,
99                 d_get => d_get,
100                 d_done => d_done,
101                 d_char => d_char,
102                 -- vga
103                 command => command,
104                 command_data => command_data,
105                 free => free
106         );
107
108         -- history
109         history_inst : entity work.history(beh)
110         port map (
111                 sys_clk => sys_clk,
112                 sys_res_n => sys_res_n,
113                 -- scanner
114                 s_char => s_char,
115                 s_take => s_take,
116                 s_done => s_done,
117                 s_backspace => s_backspace,
118                 -- display
119                 d_new_eingabe => d_new_eingabe,
120                 d_new_result => d_new_result,
121                 d_new_bs => d_new_bs,
122                 d_zeile => d_zeile,
123                 d_spalte => d_spalte,
124                 d_get => d_get,
125                 d_done => d_done,
126                 d_char => d_char,
127                 -- parser
128                 p_rget => p_rget,
129                 p_rdone => p_rdone,
130                 p_read => p_read,
131                 p_wtake => p_wtake,
132                 p_wdone => p_wdone,
133                 p_write => p_write,
134                 p_finished => p_finished
135         );
136
137         -- parser
138         parser_inst : entity work.parser(beh)
139         port map (
140                 sys_clk => sys_clk,
141                 sys_res_n => sys_res_n,
142                 -- history
143                 p_rget => p_rget,
144                 p_rdone => p_rdone,
145                 p_read => p_read,
146                 p_wtake => p_wtake,
147                 p_wdone => p_wdone,
148                 p_write => p_write,
149                 p_finished => p_finished,
150                 -- scanner
151                 do_it => do_it,
152                 finished => finished
153         );
154
155         -- scanner
156         scanner_inst : entity work.scanner(beh)
157         port map (
158                 sys_clk => sys_clk,
159                 sys_res_n => sys_res_n,
160                 -- ps/2
161                 new_data => new_data,
162                 data => data,
163                 -- history
164                 s_char => s_char,
165                 s_take => s_take,
166                 s_done => s_done,
167                 s_backspace => s_backspace,
168                 -- parser
169                 do_it => do_it,
170                 finished => finished
171         );
172
173         -- ps/2
174         ps2_inst : entity work.ps2_keyboard_controller(beh)
175         generic map (
176                 CLK_FREQ => 33330000,
177                 SYNC_STAGES => 2
178         )
179         port map (
180                 sys_clk => sys_clk,
181                 sys_res_n => sys_res_n,
182                 -- scanner
183                 new_data => new_data,
184                 data => data,
185                 ps2_clk => ps2_clk,
186                 ps2_data => ps2_data
187         );
188 end architecture top;
189