BJ Plans (Updated 2/19/Thu)
---------------------------
1. Gameover criteria (if any of the following occur)
num hands played = 128
any player chips >= 1024
all players have 0 chips
2. These are player development suggestions from class
Betting criteria (things player knows)
your chips
opponents' chips (needs discussion! (aka jwhite))
number of hands left
cards played (stats)
Hit/Stand criteria
your cards
dealer cards
chips at stake
3. scoreKeeper does not sort list, outputs in table
4. initialBank = 128, maxBank = 1023, skMaxBank = 4095
5. Players can bet zero (to allow not playing or no chips)
6. Card stats start at zero and count up
7. Player:
INPUT:
clock(1)
reset(1)
turn(1) -- enable for player
issued(1) -- realizes card has been issued
card(4) -- card dealt to player on bus
dealerShow(4) -- card shown by dealer on current hand
stats(13*5) -- 13 different cards, 5 bits for histogram
numHands(7) -- tells remaining hands left (maxHands = 128)
balance(10) -- maxBank = 1023 chips
OUTPUT:
hit(1) -- request another card
stand(1) -- signals stand (player done) and ends placing bet
bet(10) -- chips bet for a hand, must be lte than balance
8. CardGenerator:
INPUT:
clock(1)
issue(1) -- controller commands that a card be issued (controller 0-->1--0)
reset(1) -- refreshes dealerShow, checks if new decks need generation
bistMode(1) -- enables 200.txt deck
(internally reshuffles when two decks of cards have been dealt)
OUTPUT:
dealerShow(4) -- card dealer is showing
card(4) -- card player/scoreKeeper can read
issued(1) -- card has been issued
9. ScoreKeeper:
INPUT:
issued(1) -- realizes card has been issued on falling edge
card(4) -- card coming from cardGenerator
playerID(32) -- each bit signifies a different player (enable)
Reset(1) -- clears tables, new match
clock(1)
OUTPUT:
action(2)
(internal running value for each player and then compares to house-player-value)
10. Banker:
INPUT:
clock(1)
reset(1)
playerID(32) -- each bit signifies a different player (enable)
bet(10)
action(2)
OUTPUT:
balance(10) -- total chips of enabled player (12 internally)
numHands(7) -- count down to zero
Gameover(1)
(controller waits until all players finish a hand before GAMEOVER;
controller writes to playerID; others read)
11. CardCounter:
INPUT:
card(4)
reset(1)
clock(1)
issued(1) -- card has been issued
OUTPUT:
stats(13*5) -- assuming 4 decks counts up (checks that >= 16)
12. sfields1 and bnelson3: card-generator and card-counter
13. nmichou and nnambiar: score-keeper and banker
14. jpendlet gilbert jwhite25: controller and house-player (email controller flow to all asap)
15. smart-playerN (start with house-player): bdalton5 ckhor fkuhlman ooyeyele turnmire yadav
16. smart-plusN: volunteer and start with smart-playerN
17. Arbitrator: Controller group (with veto by DWB)
18. Rewrite old specs for each module and show to one another
(I/O and some detail, not too much, on behavior).
19. Once ready, develop VHDL and TB for each module and simulate in stand-alone mode.
20. Assemble modules and test and grow the entire capabilities.
21. Begin with house-player module in position-31 and a duplicate in position-0.
22. Then add another duplicate of house-player module in position-1.
23. Simulate all at pre-synthesis first.
24. For each module, synthesis, place/route, post-layout simulation.
25. Repeat assembly of post-layout modules and grow to finished product (post-layout sim).
26. Download and test on prototype.
27. Play contests.