-- IEEE Library LIBRARY ieee; USE ieee.std_logic_1164.all; USE IEEE.std_logic_unsigned.all; ENTITY Controller_SK IS -- Generic parameters GENERIC (n :INTEGER := 2); -- Number of players PORT ( Clk : IN STD_LOGIC; -- Global Clk Reset : IN STD_LOGIC; -- Global Reset -- Inputs from House_Player module HP_Hit : IN STD_LOGIC; -- House Player Hit HP_Stand : IN STD_LOGIC; -- House Player Stand HP_Ace : IN STD_LOGIC; -- Ace value 11 or 1 for House -- Player module PL_Status : IN STD_LOGIC_VECTOR (n-1 downto 0); -- Player in or out of the game PL_Stand : IN STD_LOGIC_VECTOR (n-1 downto 0); -- Player Stand signals PL_Ace : IN STD_LOGIC_VECTOR (n-1 downto 0); -- Ace value 11 or 1 for the players PL1_Bet : IN STD_LOGIC_VECTOR (7 downto 0); -- Number of chips bet by player1 PL2_Bet : IN STD_LOGIC_VECTOR (7 downto 0); -- Number of chips bet by player2 PL_Hit : IN STD_LOGIC_VECTOR (n-1 downto 0); -- Player Hit Singals for n players -- from Card Keeper Card : IN STD_LOGIC_VECTOR (3 downto 0); -- Card Value CG_Start : OUT STD_LOGIC; -- Start Generating Cards in -- Fixed sequence if 0 -- Random Sequence if 1 -- OUTPUTS Total1 : BUFFER STD_LOGIC_VECTOR (9 downto 0);-- Total Number of chips Total2 : BUFFER STD_LOGIC_VECTOR (9 downto 0); Chips1 : OUT STD_LOGIC_VECTOR (9 downto 0);-- Chips received after each game Chips2 : OUT STD_LOGIC_VECTOR (9 downto 0); PL1_Sum : BUFFER STD_LOGIC_VECTOR (4 downto 0); PL2_Sum : BUFFER STD_LOGIC_VECTOR (4 downto 0); HP_Sum : BUFFER STD_LOGIC_VECTOR (4 downto 0); BlackJack : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Win : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Push : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Lose : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); End_BJ : BUFFER STD_LOGIC; PL_Out : BUFFER STD_LOGIC_VECTOR(n-1 downto 0) ); END Controller_SK; ARCHITECTURE behavior OF Controller_SK IS signal PL_Accept : STD_LOGIC_VECTOR (n-1 downto 0); signal HP_Accept : STD_LOGIC; signal Status : STD_LOGIC; signal Two : STD_LOGIC_VECTOR(n-1 downto 0); signal SK_PL : STD_LOGIC_VECTOR(n-1 downto 0); signal SK_Game_Over : STD_LOGIC; signal SK_Status : STD_LOGIC; signal HP_Stand2 : STD_LOGIC; component controller PORT( Clk : IN STD_LOGIC; Reset : IN STD_LOGIC; SK_Status : IN STD_LOGIC; SK_Game_Over : IN STD_LOGIC; SK_Done : IN STD_LOGIC; CG_Start : OUT STD_LOGIC; HP_Accept : OUT STD_LOGIC; HP_Hit : IN STD_LOGIC; HP_Stand : IN STD_LOGIC; SK_PL : IN STD_LOGIC_VECTOR (n-1 downto 0); PL_Accept : OUT STD_LOGIC_VECTOR (n-1 downto 0); PL_Hit : IN STD_LOGIC_VECTOR (n-1 downto 0); PL_Stand : IN STD_LOGIC_VECTOR (n-1 downto 0); PL_Status : IN STD_LOGIC_VECTOR (n-1 downto 0); Two : BUFFER STD_LOGIC_VECTOR(1 downto 0) ); END component; component score_keeper PORT( Clk : IN STD_LOGIC; Reset : IN STD_LOGIC; Card : In STD_LOGIC_VECTOR (3 downto 0); PL_Accept : IN STD_LOGIC_VECTOR (n-1 downto 0); HP_Accept : IN STD_LOGIC; Two : IN STD_LOGIC_VECTOR(1 downto 0); HP_Stand : IN STD_LOGIC; PL_Stand : IN STD_LOGIC_VECTOR (n-1 downto 0); PL_Ace : IN STD_LOGIC_VECTOR(n-1 downto 0); HP_Ace : IN STD_LOGIC; PL1_Bet : IN STD_LOGIC_VECTOR (7 downto 0); PL2_Bet : IN STD_LOGIC_VECTOR (7 downto 0); SK_Status : OUT STD_LOGIC; SK_PL : OUT STD_LOGIC_VECTOR (n-1 downto 0); SK_Game_Over : BUFFER STD_LOGIC; PL1_Sum : BUFFER STD_LOGIC_VECTOR (4 downto 0); PL2_Sum : BUFFER STD_LOGIC_VECTOR (4 downto 0); HP_Sum : BUFFER STD_LOGIC_VECTOR (4 downto 0); BlackJack : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Win : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Push : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Lose : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); Total1 : BUFFER STD_LOGIC_VECTOR (9 downto 0); Total2 : BUFFER STD_LOGIC_VECTOR (9 downto 0); Chips1 : OUT STD_LOGIC_VECTOR (9 downto 0); Chips2 : OUT STD_LOGIC_VECTOR (9 downto 0); PL_Out : BUFFER STD_LOGIC_VECTOR(n-1 downto 0); End_BJ : BUFFER STD_LOGIC ); END component; Begin Control: controller PORT MAP ( Clk => Clk, Reset => Reset, SK_PL => SK_PL, SK_Status => SK_Status, SK_Game_Over => SK_Game_Over, SK_Done => End_BJ, CG_Start => CG_Start, HP_Accept => HP_Accept, HP_Hit => HP_Hit, HP_Stand => HP_Stand, PL_Accept => PL_Accept, PL_Hit => PL_Hit, PL_Stand => PL_Stand, PL_Status => PL_Status, Two => Two ); ScoreKeeper: score_keeper PORT MAP ( Clk => Clk, Reset => Reset, Card => Card, PL_Accept => PL_Accept, HP_Accept => HP_Accept, Two => Two, PL_Stand => PL_Stand, PL_Ace => PL_Ace, PL1_Bet => PL1_Bet, PL2_Bet => PL2_Bet, HP_Stand => HP_Stand, HP_Ace => HP_Ace, SK_Status => SK_Status, SK_Game_Over => SK_Game_Over, SK_PL => SK_PL, PL1_Sum => PL1_Sum, PL2_Sum => PL2_Sum, HP_Sum => HP_Sum, BlackJack => BlackJack, Win => Win, Push => Push, Lose => Lose, Total1 => Total1, Total2 => Total2, Chips1 => Chips1, Chips2 => Chips2, PL_Out => PL_Out, End_BJ => End_BJ ); --Delay HP_Stand for one clock cycle --Otherwise the Top Block will not work process (Clk, Reset, HP_Stand) begin if (Reset = '1') then HP_Stand2 <= '0'; elsif(Clk'EVENT and Clk = '1') then HP_Stand2 <= HP_Stand; end if; end process; End behavior;