diff --git a/controller.vhd b/controller.vhd index dfba5e67b8fb2c99b5bcf24ac674cb843dba4331..37e88dada8d5d8a04846c8e5447fdeb68458c7fa 100644 --- a/controller.vhd +++ b/controller.vhd @@ -67,10 +67,11 @@ begin result.rd_sig_out := '1'; result.adresse_out := "010"; result.turn_taker_out := '1'; - else + elsif turn_taker = '1' then result.rd_sig_out := '1'; result.adresse_out := "110"; result.turn_taker_out := '0'; + end if; return result; end function; @@ -90,8 +91,8 @@ begin if txBusy = '0' then result.adresse_out := "001"; result.data_bus_out := databus; - result.wr_sig_out := '1'; - result.rd_sig_out := '0'; + result.wr_sig_out := '0'; + result.rd_sig_out := '1'; else result.adresse_out := "ZZZ"; result.data_bus_out := databus; @@ -109,7 +110,7 @@ begin p_clk : process(clk, rst_n) variable internal_data : std_logic_vector(7 downto 0); - variable count : integer := 0; + variable count : integer := 1; variable status_result : StatusResult; variable tx_result : TxResult; begin @@ -120,6 +121,9 @@ begin internal_z <= "000"; count := 1; + turnTaker <= '0'; + LED_msg <= '0'; + txBusy <= '0'; Data_bus <= internal_z & internal_parity & internal_baud; Wr_sig <= '1'; adresse <= "000"; @@ -142,6 +146,12 @@ begin Data_bus <= "ZZZZZZZZ"; end if; + if msg_key = '1' then + Data_bus <= "01000101"; + Wr_sig <= '1'; + adresse <= "001"; + + else status_result := statusCheck(turnTaker); Rd_sig <= status_result.rd_sig_out; @@ -155,11 +165,12 @@ begin adresse <= tx_result.adresse_out; Data_bus <= tx_result.data_bus_out; Wr_sig <= tx_result.wr_sig_out; - Rd_sig <= tx_result.rd_sig_out; + Rd_sig <= '0'; else if turnTaker = '1' then -- da skal vi sjekke om TX er busy if Data_bus(0 downto 0) = "1" then txBusy <= '1'; + Data_bus <= "ZZZZZZZZ"; elsif turnTaker = '0' then -- Skal sjekke om Rx har data til oss, status på fifo osv. status_result := getStatusFromRx(Data_bus); Rd_sig <= status_result.rd_sig_out; @@ -169,6 +180,7 @@ begin end if; end if; end if; + end if; end if;