uart_rx: ein prozessmodell. spart weitere 3 logic elements :P
[hwmod.git] / src / beh_display_tb.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
9 entity beh_display_tb is
10 end entity beh_display_tb;
11
12 architecture sim of beh_display_tb is
13         -- system
14         signal sys_clk, sys_res_n : std_logic;
15         -- vga/display
16         signal free : std_logic;
17         signal command : std_logic_vector(COMMAND_SIZE - 1 downto 0);
18         signal command_data : std_logic_vector(3 * COLOR_SIZE + CHAR_SIZE -1 downto 0);
19         -- history/display
20         signal d_new_eingabe, d_new_result, d_new_bs : std_logic;
21         signal d_zeile : hzeile;
22         signal d_spalte : hspalte;
23         signal d_get, d_done : std_logic;
24         signal d_char : hbyte;
25         -- history/scanner
26         signal s_char : hbyte;
27         signal s_take, s_done, s_backspace : std_logic;
28
29         signal stop : boolean := false;
30 begin
31         -- display
32         inst : display
33         port map (
34                 sys_clk => sys_clk,
35                 sys_res_n => sys_res_n,
36                 -- history
37                 d_new_eingabe => d_new_eingabe,
38                 d_new_result => d_new_result,
39                 d_new_bs => d_new_bs,
40                 d_zeile => d_zeile,
41                 d_spalte => d_spalte,
42                 d_get => d_get,
43                 d_done => d_done,
44                 d_char => d_char,
45                 -- vga
46                 command => command,
47                 command_data => command_data,
48                 free => free
49         );
50
51         process
52         begin
53                 sys_clk <= '0';
54                 wait for 15 ns;
55                 sys_clk <= '1';
56                 wait for 15 ns;
57                 if stop = true then
58                         wait;
59                 end if;
60         end process;
61
62         process
63         begin
64                 free <= '0';
65                 wait for 15 ns;
66                 free <= '1';
67                 wait for 30 ns;
68                 if stop = true then
69                         wait;
70                 end if;
71         end process;
72
73         process
74                 variable input : hstring := "123513                                                                  ";
75                 variable ctmp : character;
76
77                 variable checkall : boolean := true;
78                 variable i : integer := 1;
79         begin
80                 -- init & reset
81                 sys_res_n <= '0';
82                 d_new_eingabe <= '0';
83                 d_new_result <= '0';
84                 d_new_bs <= '0';
85                 d_done <= '0';
86                 d_char <= x"00";
87
88                 icwait(sys_clk, 5);
89                 sys_res_n <= '1';
90
91                 while i <= 5 loop
92                         icwait(sys_clk, 10);
93                         d_new_eingabe <= '1';
94                         wait on d_get; -- = '1';
95                         icwait(sys_clk, 1);
96                         d_new_eingabe <= '0';
97
98                         ctmp := input(to_integer(unsigned(d_spalte)));
99                         d_char <= hbyte(to_unsigned(character'pos(ctmp),8));
100
101                         d_done <= '1';
102                         wait on d_get; -- = '0';
103                         icwait(sys_clk, 1);
104                         d_done <= '0';
105
106                         i := i + 1;
107                 end loop;
108
109                 icwait(sys_clk, 2);
110                 d_new_result <= '1';
111                 icwait(sys_clk, 2);
112                 d_new_result <= '0';
113
114                 if checkall then
115                         report "alle testfaelle des Displays waren erfolgreich!";
116                 else
117                         report "nicht alle testfaelle des Displays waren erfolgreich!";
118                 end if;
119                 icwait(sys_clk, 10);
120                 stop <= true;
121                 wait;
122         end process;
123 end architecture sim;