FPGA Tic Tac Toe (3 / 10 steg)
Steg 3: Seger villkor modul
Nu när vi har lysdioder och knappar fungerar, måste vi berätta för styrelsen att titta för win villkor (eller brist på sådana). För att göra detta, kommer vi att använda ett par stort "om" uttalanden i processer.
Den första processen kontrollerar alla 8 möjliga segrar (3 vågrät, 3 lodrät och 2 diagonal) för varje spelare för sammanlagt 16 om uttalanden.
(in1t, in2t, in3t, in4t, in5t, in6t, in7t, in8t, in9t) är börja
--spelare 1 villkor
--horisontell
om (in1t(1) = 1 och in2t(1) = 1 och in3t(1) = '1') sedan
P1 < = '1';
elsif (in4t(1) = 1 och in5t(1) = 1 och in6t(1) = '1') sedan
P1 < = '1';
elsif (in7t(1) = 1 och in8t(1) = 1 och in9t(1) = '1') sedan
P1 < = '1';
--vertikala
elsif (in1t(1) = 1 och in4t(1) = 1 och in7t(1) = '1') sedan
P1 < = '1';
elsif (in2t(1) = 1 och in5t(1) = 1 och in8t(1) = '1') sedan
P1 < = '1';
elsif (in3t(1) = 1 och in6t(1) = 1 och in9t(1) = '1') sedan
P1 < = '1';
--diagonal
elsif (in1t(1) = 1 och in5t(1) = 1 och in9t(1) = '1') sedan
P1 < = '1';
elsif (in3t(1) = 1 och in5t(1) = 1 och in7t(1) = '1') sedan
P1 < = '1';
annat
P1 < = "0";
slutet om; --spelare 2 villkor
--horisontell
om (in1t(0) = 1 och in2t(0) = 1 och in3t(0) = '1') sedan
P2 < = '1';
elsif (in4t(0) = 1 och in5t(0) = 1 och in6t(0) = '1') sedan
P2 < = '1';
elsif (in7t(0) = 1 och in8t(0) = 1 och in9t(0) = '1') sedan
P2 < = '1';
--vertikala
elsif (in1t(0) = 1 och in4t(0) = 1 och in7t(0) = '1') sedan
P2 < = '1';
elsif (in2t(0) = 1 och in5t(0) = 1 och in8t(0) = '1') sedan
P2 < = '1';
elsif (in3t(0) = 1 och in6t(0) = 1 och in9t(0) = '1') sedan
P2 < = '1';
--diagonal
elsif (in1t(0) = 1 och in5t(0) = 1 och in9t(0) = '1') sedan
P2 < = '1';
elsif (in3t(0) = 1 och in5t(0) = 1 och in7t(0) = '1') sedan
P2 < = '1';
annat
P2 < = "0";
slutet om;
Avsluta process;
Nästa, vi måste göra en mycket mindre andra process som jämför P1 och P2 win staten för att avgöra om det fanns en slips.
processen (P1, P2) är < br > börja
om (P1 = "0" och P2 = "0") sedan
T < = '1';
annat
T < = "0";
slutet om;
Avsluta process;
Slutligen måste vi passera värden lagrade i signalerna till våra utgångar.
p1win < = P1;
p2win < = P2;
knyta < = t;