From 7f3a9089cbad1cdaaad9cc694b4e81aa867206d6 Mon Sep 17 00:00:00 2001 From: Solveig <solvlang@stud.ntnu.no> Date: Sat, 16 Nov 2024 04:43:34 +0100 Subject: [PATCH] =?UTF-8?q?fikset=20ledmsg.=20fikset=20rw=20problematikk.?= =?UTF-8?q?=20Endret=20p=C3=A5=20turntaker,=20endre=20gjerne=20tilbake=20o?= =?UTF-8?q?m=20det=20odelegger=20logikken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller.vhd | 36 ++++++++++++++++++++++-------------- controller_tb.vhd | 13 ++++--------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/controller.vhd b/controller.vhd index d9642d1..919f0b0 100644 --- a/controller.vhd +++ b/controller.vhd @@ -67,12 +67,12 @@ end function resetLogic; function statusCheck(turn_taker: std_logic) return StatusResult is variable result : StatusResult; begin - if turn_taker = '0' then + if turn_taker = '0' then -- Hvis det er 0 sin tur, så sjekker vi TX status på neste klokkepuls. result.rd_sig_out := '1'; result.adresse_out := "010"; result.wr_sig_out := '0'; result.turn_taker_out := '1'; - elsif turn_taker = '1' then + elsif turn_taker = '1' then -- Hvis det er 1 sin tur, da sjekker vi Rx status på neste klokkepuls. result.rd_sig_out := '1'; result.adresse_out := "110"; result.wr_sig_out := '0'; @@ -94,17 +94,17 @@ begin impure function sendDataToTx(databus: std_logic_vector(7 downto 0)) return TxResult is variable result : TxResult; begin - if txBusy = '0' then + --if txBusy = '0' then result.adresse_out := "001"; result.data_bus_out := databus; result.wr_sig_out := '1'; result.rd_sig_out := '0'; - else - result.adresse_out := "ZZZ"; - result.data_bus_out := databus; - result.wr_sig_out := '0'; - result.rd_sig_out := '0'; - end if; + --else + -- result.adresse_out := "ZZZ"; + -- result.data_bus_out := databus; + -- result.wr_sig_out := '0'; + -- result.rd_sig_out := '0'; + --end if; return result; end function sendDataToTx; @@ -155,7 +155,7 @@ begin Rd_sig <= '0'; adresse <= "001"; - else if rxIncomingData = '1' and txBusy = '0' then + else if rxIncomingData = '1'then tx_result := sendDataToTx(Data_bus); adresse <= tx_result.adresse_out; @@ -164,13 +164,14 @@ begin Rd_sig <= '0'; rxIncomingData <= '0'; else + LED_msg <= '0'; -- normal klokkelogikk. Annahver polling av RX og TX for status. status_result := statusCheck(turnTaker); Rd_sig <= status_result.rd_sig_out; Wr_sig <= status_result.wr_sig_out; adresse <= status_result.adresse_out; turnTaker <= status_result.turn_taker_out; - if turnTaker = '1' then -- da skal vi sjekke om TX er busy + if turnTaker = '0' then -- da skal vi sjekke om TX er busy if Data_bus(0 downto 0) = "1" then txBusy <= '1'; Data_bus <= "ZZZZZZZZ"; @@ -178,9 +179,16 @@ begin txBusy <= '0'; end if; - elsif turnTaker = '0' then -- Skal sjekke om Rx har data til oss, status på fifo osv. - if txBusy = '0' then - rxIncomingData <= '1'; + elsif turnTaker = '1' then -- Da sjekker på på denne pulsen om Rx har data til oss, status på fifo osv. + if Data_bus = "ZZZZ0100"then + + tx_result := sendDataToTx(Data_bus); + adresse <= tx_result.adresse_out; + Data_bus <= tx_result.data_bus_out; + Wr_sig <= tx_result.wr_sig_out; + Rd_sig <= '0'; + LED_msg <= '1'; + rxIncomingData <= '0'; else --do nothing end if; diff --git a/controller_tb.vhd b/controller_tb.vhd index 1acd4d6..9de5b36 100644 --- a/controller_tb.vhd +++ b/controller_tb.vhd @@ -104,16 +104,11 @@ begin procedure loopAscii is begin - wait for 100 ns; - adresse <= "101"; - --wait until rising_edge(clk); + wait until adresse = "110"; + wait until rising_edge(clk); + Data_bus <= "ZZZZ0100"; + wait until rising_edge(clk); Data_bus <= "01000001"; - --wait until rising_edge(clk); - --assert Rd_sig = '1'; - --wait until rising_edge(clk); - --Data_bus(7 downto 0) <= "01000001"; - --wait until rising_edge(clk); - --assert adresse(2 downto 0) = "001" report "erra erra pants on fire" severity error; end loopAscii; begin -- GitLab