From 0a819b2f3c94c65351e99c5eba67b00de1163710 Mon Sep 17 00:00:00 2001 From: Alexander Oh Date: Tue, 25 May 2010 02:56:07 +0200 Subject: [PATCH] make get a real flip flop --- src/pc_communication.vhd | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pc_communication.vhd b/src/pc_communication.vhd index 4c3a8b9..53ca215 100644 --- a/src/pc_communication.vhd +++ b/src/pc_communication.vhd @@ -35,6 +35,7 @@ architecture beh of pc_communication is signal spalte, spalte_next : hspalte; signal zeile , zeile_next : hzeile; signal spalte_up, spalte_up_next : std_logic; + signal get, get_next : std_logic; signal char, char_next : hbyte; signal char_en : std_logic; @@ -43,6 +44,11 @@ architecture beh of pc_communication is begin + + d_zeile <= zeile; + d_spalte <= spalte; + d_get <= get; + sync: process (sys_clk, sys_res_n) begin if sys_res_n = '0' then @@ -52,7 +58,7 @@ begin spalte_next <= "0000000"; zeile <= "0000000"; zeile_next <= "0000000"; - d_get <= '0'; + get <= '0'; tx_new <= '0'; tx_data <= "00000000"; elsif rising_edge(sys_clk) then @@ -60,13 +66,14 @@ begin spalte <= spalte_next; zeile <= zeile_next; state <= state_next; + get <= get_next; if (char_en = '1') then state <= state_next; end if; end if; end process sync; - process (spalte_up) + process (spalte_up, spalte, zeile) variable spalte_tmp, zeile_tmp : integer; variable spalte2_tmp, zeile2_tmp : std_logic_vector(7 downto 0); begin @@ -80,7 +87,6 @@ begin spalte_tmp := to_integer(unsigned(spalte)) + 1; spalte2_tmp := std_logic_vector(to_unsigned(spalte_tmp,8)); spalte_next <= hspalte(spalte2_tmp(6 downto 0)); - zeile_next <= zeile; end if; spalte_up <= '0'; @@ -104,26 +110,21 @@ begin output_pc : process (state, zeile, spalte, char) begin - d_get <= '0'; + get_next <= '0'; spalte_next <= "0000000"; zeile_next <= "0000000"; case state is when IDLE => null; when FETCH => - d_zeile <= zeile_next; - d_spalte <= spalte_next; - d_get <= '1'; + get_next <= '1'; char_en <= '1'; - -- wait for timer overflow - -- increment counter when FORWARD => char_en <= '0'; tx_data <= char; tx_new <= '1'; when DONE => null; - -- be there for a single cycle and then end case; end process output_pc; @@ -146,7 +147,6 @@ begin spalte_up <= '1'; end if; when DONE => - -- be there for a single cycle and then state_next <= IDLE; end case; end process next_state_pc; -- 2.25.1