title: tic tac toe vhdl student project
body: <p>The problem is that the outputs are not matching with the ifs .I want, example line A if everything is 1 the output should be 11. but it is not to be</p>
  
  <pre><code>library ieee;  
   use ieee.std_logic_1164.all;  
   use ieee.numeric_std.all;  
  
   entity galo_ports is  
    port( LinA : in unsigned(2 downto 0); 
      LinB : in unsigned(2 downto 0);
      LinC : in unsigned(2 downto 0);
  
      output : out unsigned(1 downto 0)); 
   end galo_ports;
  
  ARCHITECTURE main OF galo_ports IS
  SIGNAL values: std_logic_vector(1 downto 0);
  SIGNAL condition1A: boolean;
  SIGNAL condition2A: boolean;
  SIGNAL condition3A: boolean;
  SIGNAL condition1B: boolean;
  SIGNAL condition2B: boolean;
  SIGNAL condition3B: boolean;
  SIGNAL condition1C: boolean;
  SIGNAL condition2C: boolean;
  SIGNAL condition3C: boolean;
  SIGNAL condition1COL1: boolean;
  SIGNAL condition2COL1: boolean;
  SIGNAL condition3COL1: boolean;
  SIGNAL condition1COL2: boolean;
  SIGNAL condition2COL2: boolean;
  SIGNAL condition3COL2: boolean;
  SIGNAL condition1COL3: boolean;
  SIGNAL condition2COL3: boolean;
  SIGNAL condition3COL3: boolean;
  SIGNAL condition1DIG1: boolean;
  SIGNAL condition2DIG1: boolean;
  SIGNAL condition3DIG1: boolean;
  SIGNAL condition1DIG2: boolean;
  SIGNAL condition2DIG2: boolean;
  SIGNAL condition3DIG2: boolean;
  BEGIN
  values &lt;= "10";
  
  --CONDIÇÃOES:
  --LINHA 1
  condition1A &lt;= LinA(0) = LinA(1) and LinA(1) = LinA(2);
  condition2A &lt;= LinA(0) = values(0) or LinA(0) = values(1);
  condition3A &lt;= LinA(0) = values(1);
  --LINHA 2
  condition1B &lt;= LinB(0) = LinB(1) and LinB(1) = LinB(2);
  condition2B &lt;= LinB(0) = values(0) or LinB(0) = values(1);
  condition3B &lt;= LinB(0) = values(1);
  --LINHA 3
  condition1C &lt;= LinC(0) = LinC(1) and LinC(1) = LinC(2);
  condition2C &lt;= LinC(0) = values(0) or LinC(0) = values(1);
  condition3C &lt;= LinC(0) = values(1);
  --COLUNA 1
  condition1COL1 &lt;= LinA(0) = LinB(0) and LinB(0) = LinC(0);
  condition2COL1 &lt;= LinA(0) = values(0) or LinA(0) = values(1);
  condition3COL1 &lt;= LinA(0) = values(1);
  --COLUNA 2
  condition1COL2 &lt;= LinA(1) = LinB(1) and LinB(1) = LinC(1);
  condition2COL2 &lt;= LinA(1) = values(0) or LinA(1) = values(1);
  condition3COL2 &lt;= LinA(1) = values(1);
  --COLUNA 3
  condition1COL3 &lt;= LinA(2) = LinB(2) and LinB(2) = LinC(2);
  condition2COL3 &lt;= LinB(2) = values(0) or LinA(2) = values(1);
  condition3COL3 &lt;= LinB(2) = values(1);
  --DIAGONAL 1
  condition1DIG1 &lt;= LinA(0) = LinB(1) and LinB(1) = LinC(2);
  condition2DIG1 &lt;= LinA(0) = values(0) or LinA(0) = values(1);
  condition3DIG1 &lt;= LinA(0) = values(1);
  --DIAGONAL 2
  condition1DIG2 &lt;= LinA(2) = LinB(1) and LinB(1) = LinC(0);
  condition2DIG2 &lt;= LinA(2) = values(0) or LinA(2) = values(1);
  condition3DIG2 &lt;= LinA(2) = values(1);
      PROCESS(LinA, LinB, LinC)
      BEGIN
          --LINHA 1
          IF condition1A=TRUE and condition2A=TRUE and condition3A=TRUE THEN output &lt;= "11";
          END IF;
          --LINHA 2
          IF (condition1B) and (condition2B) and (condition3B) THEN output &lt;= "11"; ELSE output &lt;="00";
          END IF;
          --LINHA 3
          IF condition1C and condition2C and condition3C THEN output &lt;= "11";
          END IF;
          --COLUNA 1
          IF condition1COL1 and condition2COL1 and condition3COL1 THEN output &lt;= "11";
          END IF;
          --COLUNA 2
          IF condition1COL2 and condition2COL2 and condition3COL2 THEN output &lt;= "11";
          END IF;
          --COLUNA 3
          IF condition1COL3 and condition2COL3 and condition3COL3 THEN output &lt;= "11";
          END IF;
          --DIAGONAL 1
          IF condition1DIG1 and condition2DIG1 and condition3DIG1 THEN output &lt;= "11";
          END IF;
          --DIAGONAL 2
          IF condition1DIG2 and condition2DIG2 and condition3DIG2 THEN output &lt;= "11";
          END IF;
  
      END PROCESS;
  END main;
  </code></pre>
  
  <p>The game contains a board of 9 positions, each player makes his move in a house that is free by marking it with an "0" (player A) or "1" (Player B).</p>
  
  <p>Victory is awarded to the player who can put 3 "0" or 3 "1" horizontally, vertically or diagonally.</p>
  
  <p>The solution should signal at the exit which player wins or signal the draw - if no player can achieve the defined goal.</p>