XBD: VHDL Generation Toolkit.

Simplified way of doing robotics and automation.

Download client! or try Online editor

What is FPGA?

FPGA stands for Field-programmable gate array, also known as programmable hardware. It is bare metal which can be configured to perform all sort of things from toys and automation to high-performance graphics processing and general purpose CPUs. Major FPGA manufacturers are Altera and Xilinx. They provide free tools for FPGA design and sell evaluation boards where you can try different devices. Most common ways of doing FPGA design are using hardware description languages, such as VHDL and Verilog, or using high-level languages like System-C or Clash.


  • It is cheap. Basic device costs tens of dollars and can connect dozens of devices via hundreds of available pins
  • It is fast. Traditional microcontrollers are multitenanted and each of tenants fight for couple of milliseconds of CPU time with each other. In FPGA world all available resources are yours. FPGA is as real time as it is possibly can be. Multiple tenants have their own piece of hardware and live happily.

Why XBD?

  • Code generation has proven to be very efficient development technique
  • XBD provides easy way to quickly scaffold complex automation systems with multiple states and transitions
  • Components separation is enforced by design, which makes them easy to reuse, document, unit-test etc
  • Minimal learning curve is required. Online editor is easy to use, helps with organising things, gives you hints etc
  • Domain Driven Design is the core of XBD development process, you model behavior of the device in terms of high-level activities, you may not even write a single line of VHDL (that is the goal of this project, but it is a secret, don't tell anyone)

What do I need to get started?

XBD was designed and tested to be used with Altera devices. Please choose device first and then download corresponding version of Quartus II. They discontinued support of legacy devices such as Cyclone II in latest releases, so you may need to download older version where this device is supported e.g. 13.0sp1. If you have exceprience with Xilinx, you may be able to run generated code for their devices by wrapping root controller in IOBufs.

First, you need FPGA device itself. You can get basic device and programmer or whole evaluation board, which comes with programmer and some peripheral devices:
Once you get a device, you need something to connect to it. There are multiple components available already:
Also there are multiple books about FPGA design if you want to advance your skills: