X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fbeh_history_tb.vhd;h=84d8cc1a34b0be56bcdb14c17c6d9adbf648b187;hb=84b6ef65190dbb25538b87572d2b2312ee447107;hp=baf097a602bdfabb291132fa25474751dc06971c;hpb=65784a7893de89e712199ca58a975ffbc35c3577;p=hwmod.git diff --git a/src/beh_history_tb.vhd b/src/beh_history_tb.vhd index baf097a..84d8cc1 100644 --- a/src/beh_history_tb.vhd +++ b/src/beh_history_tb.vhd @@ -28,8 +28,15 @@ architecture sim of beh_history_tb is signal free : std_logic; signal command : std_logic_vector(COMMAND_SIZE - 1 downto 0); signal command_data : std_logic_vector(3 * COLOR_SIZE + CHAR_SIZE -1 downto 0); - - -- tmp: history<>scanner + -- history/parser + signal p_rget : std_logic; + signal p_rdone : std_logic; + signal p_read : hbyte; + signal p_wtake : std_logic; + signal p_wdone : std_logic; + signal p_write : hbyte; + signal p_finished : std_logic; + -- parser/scanner signal do_it, finished : std_logic; signal stop : boolean := false; @@ -53,9 +60,14 @@ begin d_get => d_get, d_done => d_done, d_char => d_char, - -- TODO: tmp only! - do_it => do_it, - finished => finished + -- parser + p_rget => p_rget, + p_rdone => p_rdone, + p_read => p_read, + p_wtake => p_wtake, + p_wdone => p_wdone, + p_write => p_write, + p_finished => p_finished ); -- display @@ -78,6 +90,24 @@ begin free => free ); + -- parser + inst_parser : entity work.parser(beh) + port map ( + sys_clk => sys_clk, + sys_res_n => sys_res_n, + -- history + p_rget => p_rget, + p_rdone => p_rdone, + p_read => p_read, + p_wtake => p_wtake, + p_wdone => p_wdone, + p_write => p_write, + p_finished => p_finished, + -- scanner + do_it => do_it, + finished => finished + ); + -- scanner inst_scan : entity work.scanner(beh) port map ( @@ -120,48 +150,6 @@ begin end process; process - function ascii2sc (x : hbyte) return hbyte is - variable y : hbyte; - begin - case x is - when x"30" => y := SC_KP_0; - when x"31" => y := SC_KP_1; - when x"32" => y := SC_KP_2; - when x"33" => y := SC_KP_3; - when x"34" => y := SC_KP_4; - when x"35" => y := SC_KP_5; - when x"36" => y := SC_KP_6; - when x"37" => y := SC_KP_7; - when x"38" => y := SC_KP_8; - when x"39" => y := SC_KP_9; - when x"2b" => y := SC_KP_PLUS; - when x"2d" => y := SC_KP_MINUS; - when x"2a" => y := SC_KP_MUL; - when x"2f" => y := SC_KP_DIV; - when x"20" => y := SC_SPACE; - when x"1c" => y := SC_ENTER; - when x"0e" => y := SC_BKSP; - when others => y := x"41"; - end case; - return y; - end function; - - function valid_char (x : std_logic_vector(7 downto 0)) return boolean is - variable y : boolean; - begin - case x is - when SC_KP_0 | SC_KP_1 | SC_KP_2 | SC_KP_3 | - SC_KP_4 | SC_KP_5 | SC_KP_6 | SC_KP_7 | - SC_KP_8 | SC_KP_9 | SC_KP_PLUS | - SC_KP_MINUS | SC_KP_MUL | - SC_KP_DIV | SC_SPACE | - SC_BKSP | SC_ENTER => - y := true; - when others => y := false; - end case; - return y; - end function; - -- textio stuff use std.textio.all; file f : text open read_mode is "../../src/history.test"; @@ -176,8 +164,6 @@ begin sys_res_n <= '0'; new_data <= '0'; data <= (others => '0'); - s_done <= '0'; - finished <= '0'; icwait(sys_clk, 20); sys_res_n <= '1'; @@ -219,21 +205,20 @@ begin next mainl; end if; - -- jedes mal release - new_data <= '1'; - data <= x"f0"; - icwait(sys_clk, 1); - new_data <= '0'; - icwait(sys_clk, 1); new_data <= '1'; case input(j) is when nul => data <= ascii2sc(x"1c"); -- $ (enter) when '!' => data <= ascii2sc(x"0e"); -- ! (backspace) + when '/' => + data <= x"e0"; + icwait(sys_clk, 1); + new_data <= '0'; + icwait(sys_clk, 1); + new_data <= '1'; + data <= SC_KP_DIV; when others => data <= ascii2sc(std_logic_vector(to_unsigned(character'pos(input(j)),8))); end case; - icwait(sys_clk, 1); - new_data <= '0'; -- ack'en skippen, falls es ein "spezielles" zeichen ist (steht -- in abhaengigkeit zum vorherigen zeichen) @@ -264,6 +249,7 @@ begin wait on do_it; -- = '0' icwait(sys_clk, 1); finished <= '0'; + icwait(sys_clk, 850); run_tc := false; else @@ -275,7 +261,7 @@ begin report "=================="; end loop f_loop; - icwait(sys_clk, 20); + icwait(sys_clk, 850); stop <= true; wait; end process;