history/display: backspace logic
[hwmod.git] / src / beh_display_tb.vhd
index 02a82575956046e5d2bff6d96ecce5835e335750..5b6e6a15ed61c2514cf64ac074161594453b1439 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;
@@ -36,6 +36,7 @@ begin
                -- 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,7 @@ begin
        end process;
 
        process
-               variable input : hstring := "123513                                                                 ";
+               variable input : hstring := "123513                                                                  ";
                variable ctmp : character;
 
                variable checkall : boolean := true;
@@ -76,10 +77,12 @@ begin
                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 +91,40 @@ begin
                        wait on d_get; -- = '0';
                        icwait(sys_clk, 1);
                        d_done <= '0';
-                       d_new_eingabe <= '0';
 
                        free <= '0';
-                       icwait(sys_clk, 3);
+                       icwait(sys_clk, 1);
                        free <= '1';
-                       icwait(sys_clk, 3);
+                       icwait(sys_clk, 1);
 
                        -- fuer NOP
                        free <= '0';
-                       icwait(sys_clk, 3);
+                       icwait(sys_clk, 1);
                        free <= '1';
+                       icwait(sys_clk, 1);
 
                        i := i + 1;
                end loop;
 
+               icwait(sys_clk, 2);
+               d_new_result <= '1';
+               icwait(sys_clk, 2);
+               d_new_result <= '0';
+
+               -- fuer NOP
+               free <= '0';
+               icwait(sys_clk, 1);
+               free <= '1';
+               icwait(sys_clk, 2);
+
+               -- fuer NOP
+               free <= '0';
+               icwait(sys_clk, 1);
+               free <= '1';
+               icwait(sys_clk, 1);
+               icwait(sys_clk, 1);
+
+
 
                if checkall then
                        report "alle testfaelle des Displays waren erfolgreich!";