# PokerBot Uses FPGA For Card Calculating Horsepower

Played against humans, Poker is a game as much about reading your opponent as it is about the cards you’re dealt. That doesn’t mean there aren’t certain mathematical ways to aid your decision making based on probabilities. In this vein, a group of students from Cornell’s ECE 5760 class built a pokerbot on an FPGA.

The bot uses the principle of Monte Carlo simulation to calculate the probabilities of an individual winning a hand of Limit Texas Hold’em. Calculating the entire set of possible hands is impractical, so in a Monte Carlo simulation a sample is calculated instead. By accelerating these calculations on an FPGA, the pokerbot is able to calculate 300,000 possible hands in just 150 ms, and present a probability of winning to the human player. This same calculation method is then used to make decisions for the computer players in the game, too.

The team report that the FPGA’s processing power brought a 10x speed up compared to their C++ program running on an Intel i7-6700HQ. The strong statistical calculations help to make the computer players engaging and realistic to play against.

It’s another great example of a project from Bruce Land’s classes, which are somewhat of a hotbed of development each year. Video after the break.

## 12 thoughts on “PokerBot Uses FPGA For Card Calculating Horsepower”

1. Sowlaki says:

Starting with FPGA, is an advanced Xilinx or Intel SoC with built in ARM processors neccessary or is it best to start with a TinyFPGA for example?

1. Sowlaki says:

To learn video conversion like 8080 to LVDS.

2. IMHO: No way you should start with the big guns. ZYNQ (Xilinx ARM+FPGA combo) offers incredible possibilities, but the learning curve is insane and the complexity of interfacing with the built in ARM is not for beginners. You’d best start with the simplest FPGA you can find. The TinyFPGA looks nice.

1. Chris says:

You can surely start with a xlinx. My first dev board was an arty a7 board with a xilinx artix-7.
Using the free SDK and a good (e)-book for verilog You can easily start with FPGA.

1. With Xilinx yes (I too have started out with them, good old Spartan 3), with the ARM combos, I’d recommend against that.

1. Sowlaki says:

The Spartans seems nice and I think I will start with one of those, thanks for the answers.

3. Dodo says:

Doesn’t matter. The arm core adds a bit complexity over a pure fpga, but you don’t need to use it if you don’t want to.

Otoh having a larger fabric will help when learning as optimization is less critical.

2. I smell broken bones on desert, or times have changed since De Niro and Pesci ?

1. Hirudinea says:

Well if you use this in a casino it’s a great way to meet Jimmy Hoffa.

3. Ren says:

So, I didn’t watch the video, have they tried two players at the same table using independent pokerbots?

4. I want to use these superpowers for evil.

5. Ethan Waldo says:

I really miss reading Coding the Wheel…

This site uses Akismet to reduce spam. Learn how your comment data is processed.