1 of 57

FuPy

FPGAs with MicroPython

2 of 57

Hi! I'm Tim

3 of 57

I have a secret...

4 of 57

Impending Menace�| Credit: sagesolar

5 of 57

Impending Menace�| Credit: sagesolar

6 of 57

Human inside…

7 of 57

Human suck…

8 of 57

Bug generator…

9 of 57

10 of 57

11 of 57

12 of 57

13 of 57

14 of 57

15 of 57

16 of 57

17 of 57

18 of 57

19 of 57

20 of 57

FPGAs programmed in…

Verilog

VHDL

21 of 57

FPGAs programmed in…

Verilog

VHDL

Not Python :(

Not Python :(

22 of 57

23 of 57

Migen & MiSoC & LiteX

  • Python based
  • FPGA HDL
  • System on Chip
  • Soft CPU
  • Peripherals

24 of 57

Migen & MiSoC

Migen & MiSoC & LiteX

  • Python based
  • FPGA HDL
  • System on Chip
  • Soft CPU
  • Peripherals

Python!!!

25 of 57

26 of 57

Why is this powerful?

  • Python is a powerful language
  • Python is a productive language
  • Generates exact hardware as needed

27 of 57

Still not enough?

  • While Python, still writing hardware
  • Writing hardware is hard

28 of 57

Migen & MiSoC & LiteX

  • Python based
  • FPGA HDL
  • System on Chip
  • Soft CPU
  • Peripherals

SoftCPU

29 of 57

Write less hardware!

  • Write software on soft CPU!
  • Writing hardware is hard

30 of 57

Software for soft CPU?

  • Write software on soft CPU!
  • Writing hardware is hard

31 of 57

Software for soft CPU?

  • Write software on soft CPU!
  • Writing hardware is hard

Not Python :(

32 of 57

33 of 57

Software for soft CPU?

  • Write software on soft CPU!
  • Writing hardware is hard

Not Python :(

34 of 57

35 of 57

36 of 57

Run MicroPython on soft CPU!

  • Run MicroPython on SoftCPU!
  • Write SoftCPU firmware in Python!

37 of 57

FuPy - Python + FPGAs

Python describing hardware

Running MicroPython

fupy.github.io

38 of 57

FuPy - Python + FPGAs

Python describing hardware

Running MicroPython

fupy.github.io

Python!!!

39 of 57

FuPy - Python + FPGAs

Python describing hardware

Running MicroPython

fupy.github.io

Python!!!

Python!!!

40 of 57

FuPy - Python + FPGAs

fupy.github.io

We need your help!

41 of 57

FuPy - MimasV2

$49.95 USD

Peripherals

  • Works: Button + Switches
  • Works: 7 Segments
  • Works: SPI
  • TODO: SD Card
  • TODO: VGA
  • TODO: Audio
  • TODO: PMOD Expansion

Working!

42 of 57

FuPy - Arty A7

$119.00 USD

Peripherals

  • Works: Button + Switches
  • Works: LEDs
  • Works: SPI
  • TODO: Ethernet
  • TODO: RGB LEDs
  • TODO: PMOD + Arduino Expansion

Working!

43 of 57

FuPy - TinyFPGA BX

$38.00 USD

Peripherals

  • Works: CPU
  • Works: LED
  • Works: SPI
  • TODO: Expansion?

Working!

44 of 57

FuPy - ICE40HX8K-B-EVN

$49.00 USD

Peripherals

  • Works: CPU
  • Works: LED
  • Works: SPI
  • TODO: Expansion?

Working!

45 of 57

FuPy - iCE40UP5K-B-EVN

$49.00 USD

Peripherals

  • WIP: CPU
  • TODO: RGB LED
  • TODO: SPI
  • TODO: Expansion?

WIP -

46 of 57

FuPy - Gnarly Grey UPDuino V2

$15.99 USD

Peripherals

  • TODO: CPU
  • TODO: RGB LED
  • TODO: SPI
  • TODO: Expansion?

TODO -

47 of 57

FuPy - Gnarly Grey UPDuino V1

$9.99 USD

Peripherals

  • TODO: CPU
  • TODO: RGB LED
  • TODO: SPI
  • TODO: Expansion?

TODO -

48 of 57

FuPy - DPControl IceVision

EUR €59.99

Peripherals

  • TODO: CPU
  • TODO: RGB LED
  • TODO: SPI
  • TODO: Camera?
  • TODO: Expansion?

TODO -

49 of 57

FuPy - TinyFPGA EX

USD ??.??

Peripherals

  • TODO: CPU
  • TODO: LEDs
  • TODO: SPI
  • TODO: SD Card?
  • TODO: Expansion?

TODO -

50 of 57

FuPy - Your board?

Easy

Lattice iCE40, iCE40UP5K

Xilinx Spartan 6

Xilinx Artix 7, Spartan 7, Kintex 7

Harder (But possible)

All Altera / Intel, Lattice ECP5

51 of 57

52 of 57

53 of 57

54 of 57

55 of 57

56 of 57

57 of 57

FuPy - Python + FPGAs

We need your help!

fupy.github.io