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