From b59a8e3bb4aee47e15af8ccb761c9cfbdf580024 Mon Sep 17 00:00:00 2001
From: Solveig <solvlang@stud.ntnu.no>
Date: Fri, 8 Nov 2024 01:01:19 +0100
Subject: [PATCH] fikset ting

---
 controller.vhd | 117 ++++++++++++++++++++++---------------------------
 1 file changed, 52 insertions(+), 65 deletions(-)

diff --git a/controller.vhd b/controller.vhd
index 84bfe3e..6994e70 100644
--- a/controller.vhd
+++ b/controller.vhd
@@ -12,7 +12,7 @@ entity Controller is
         Data_bus : inout std_logic_vector(7 downto 0);
         parity_sel: in std_logic_vector(1 downto 0);
 		  adresse: out std_logic_vector(2 downto 0);
-		  Rd_sig, Wr_sig: inout std_logic
+		  Rd_sig, Wr_sig: out std_logic
     );
 end Controller;
 
@@ -20,88 +20,75 @@ end Controller;
 
 architecture RTL of Controller is
 
-	--Arkitekturen begynner
+type reader_status is (reading, idle);
+    signal status : reader_status := idle;
+    signal internal_baud : std_logic_vector(2 downto 0); -- Internal signal for baud
+	 signal internal_parity : std_logic_vector(1 downto 0); -- Internt signal for parity
+	 signal internal_z : std_logic_vector(2 downto 0);
 
+	 --Arkitekturen begynner
 begin
 
+  --  Rd_sig <= '1' when status = reading else '0';
+	 
 -- prosessen begynner
-
-	p_clk : process(clk, rst_n, msg_key, baud_rate_sel, parity_sel)
+    
+    p_clk : process(clk, rst_n, msg_key, Baud_rate_sel, parity_sel, Data_bus)
     begin
-		Wr_sig <= '0';
-		Rd_sig <= '0';
-		LED_msg <= '0';
-				
-				-- Hvis det ikke er konfigurasjonstid, da gjør vi slik:
-        if rising_edge(clk) then
-		  
-		  -- Reset er starten av oppdraget. Her sendes config-informasjon. 
-        if rst_n = '0' then
-               case Baud_rate_sel is
-					
-                when "000" => Data_bus(2 downto 0) <= "000";
-					 
-                when "001" => Data_bus(2 downto 0) <= "001";
-					 
-                when "010" => Data_bus(2 downto 0) <= "010";
-					 
-                when "011" => Data_bus(2 downto 0) <= "011";
+	 
+	 -- Reset er starten av oppdraget. Her sendes config-informasjon. 
+	 if rst_n = '0' then
+                case Baud_rate_sel is
+                    when "000" => internal_baud(2 downto 0) <= "000";
+                    when "001" => internal_baud(2 downto 0) <= "001";
+                    when "010" => internal_baud(2 downto 0) <= "010";
+                    when "011" => internal_baud(2 downto 0) <= "011";
+                    when "100" => internal_baud(2 downto 0) <= "100";
+                    when others => internal_baud(2 downto 0) <= "111";
+                end case;
+
+                case parity_sel is
+                    when "00" => internal_parity(1 downto 0) <= "00";
+                    when "01" => internal_parity(1 downto 0) <= "01";
+                    when "10" => internal_parity(1 downto 0) <= "10";
+                    when "11" => internal_parity(1 downto 0) <= "11";
+                    when others => internal_parity(1 downto 0) <= "00"; -- Default
+                end case;
 					 
-                when "100" => Data_bus(2 downto 0) <= "100";
-					 
-                when others => Data_bus(2 downto 0) <= "111";
-            end case;
-
-            case parity_sel is
-				
-						when "00" => Data_bus(4 downto 3) <= "00"; 
-						
-						when "01" => Data_bus(4 downto 3) <= "01";
-						
-						when "10" => Data_bus(4 downto 3) <= "10";
+					   internal_z(2 downto 0) <= "000";
 						
-						when "11" => Data_bus(4 downto 3) <= "11";
-                  when others => Data_bus(4 downto 3) <= "00"; -- Velger dette til default
-
-            end case;
-		  
-		  
-				Data_bus(7 downto 5) <= "ZZZ";
-		  	--Sender config info til TX config adresse.
-            adresse <= "000";
-				Rd_sig <= '0';
-            Wr_sig <= '1';
-				--Sender config info til RX config adresse.
-            adresse <= "100";
-				-- Write settes til null. Ingenting skal sendes fra CTRL altså. 
-				Wr_sig <='0';
-			
-				
-				else if rst_n = '1' then
-
-
-			  -- Hvis meldingsknappen trykkes, da sender vi en pre-definert bokstav til TX for videresending. Bokstaven er A.
+						Data_bus(7 downto 0) <= internal_z & internal_parity & internal_baud;
+						Wr_sig <= '1';
+						adresse <= "000";
+        elsif rising_edge(clk) then
+		  --status <= idle;
+		  --Wr_sig <= '0';
+		 
+			  -- Hvis meldingsknappen trykkes, da sender vi en pre-definert bokstav til TX for videresending.
 					if msg_key = '1' then
-						 adresse <= "001";
-						 Data_bus <= "01000001";
+						 Data_bus <= "01000101";
 						 Wr_sig <= '1';
-						 Wr_sig <= '0';
+						 adresse <= "001";
+						
 					end if;
 					
 					--Hvis RX har mottatt noe data, så skal vi sende videre. Vi skal også skru på led-paeren.
 
-					if adresse = "101" then
-						 Rd_sig <= '1';
+					if adresse = "101" and msg_key = '0' then
+						 status <= reading;
                    LED_msg <= '1';
-						 LED_msg <= '0';
 						 adresse <= "001";
                    Wr_sig <= '1'; 
-                   Rd_sig <= '0';
+						 --status <= idle;
+						 
+						 else 
+						 Data_bus <= "ZZZZZZZZ";
+						 adresse <= "ZZZ";
 						 Wr_sig <= '0';
-
+						 Rd_sig <= '0';
+						 --status <= idle;
 					end if;
-        end if;
-		 end if;
+        --end if;
 		 end if;
     end process p_clk;
 
-- 
GitLab