uart_rx: ein prozessmodell. spart weitere 3 logic elements :P
[hwmod.git] / src / beh_display_tb.vhd
index 02a82575956046e5d2bff6d96ecce5835e335750..f1db735c297b08ee4f8d0f859259ba9d7b87b794 100644 (file)
@@ -17,7 +17,7 @@ architecture sim of beh_display_tb is
        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 : std_logic;
+       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;
@@ -29,13 +29,14 @@ architecture sim of beh_display_tb is
        signal stop : boolean := false;
 begin
        -- display
-       inst : entity work.display(beh)
+       inst : display
        port map (
                sys_clk => sys_clk,
                sys_res_n => sys_res_n,
                -- 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,
@@ -59,7 +60,18 @@ begin
        end process;
 
        process
-               variable input : hstring := "123513                                                                 ";
+       begin
+               free <= '0';
+               wait for 15 ns;
+               free <= '1';
+               wait for 30 ns;
+               if stop = true then
+                       wait;
+               end if;
+       end process;
+
+       process
+               variable input : hstring := "123513                                                                  ";
                variable ctmp : character;
 
                variable checkall : boolean := true;
@@ -69,17 +81,19 @@ begin
                sys_res_n <= '0';
                d_new_eingabe <= '0';
                d_new_result <= '0';
+               d_new_bs <= '0';
                d_done <= '0';
                d_char <= x"00";
-               free <= '1';
 
                icwait(sys_clk, 5);
                sys_res_n <= '1';
 
-               while i <= 71 loop
+               while i <= 5 loop
+                       icwait(sys_clk, 10);
                        d_new_eingabe <= '1';
                        wait on d_get; -- = '1';
                        icwait(sys_clk, 1);
+                       d_new_eingabe <= '0';
 
                        ctmp := input(to_integer(unsigned(d_spalte)));
                        d_char <= hbyte(to_unsigned(character'pos(ctmp),8));
@@ -88,21 +102,14 @@ begin
                        wait on d_get; -- = '0';
                        icwait(sys_clk, 1);
                        d_done <= '0';
-                       d_new_eingabe <= '0';
-
-                       free <= '0';
-                       icwait(sys_clk, 3);
-                       free <= '1';
-                       icwait(sys_clk, 3);
-
-                       -- fuer NOP
-                       free <= '0';
-                       icwait(sys_clk, 3);
-                       free <= '1';
 
                        i := i + 1;
                end loop;
 
+               icwait(sys_clk, 2);
+               d_new_result <= '1';
+               icwait(sys_clk, 2);
+               d_new_result <= '0';
 
                if checkall then
                        report "alle testfaelle des Displays waren erfolgreich!";