Demand Peripherals
Linux Robotics and Automation Made Easy

Interface Cards
FPGA Cards
  MZ4 Quad Mezzanine Card
  MP43 Aluminum Mounting Plate
User Interface
  Six Digit LCD Display
  IR Input/Output Card
  4-Port USB 2.0 Hub Card
Power Management
  Battery Power Distribution Card
  ATX Power Break-Out Card
  Molex Power Break-Out Card
  Triple Output Linear Regulator
Actuators / Motor Control
  Dual 7 Amp H-Bridge Card
  Quad 10 Amp Relay Card

Linux Robotics and Automation Made Easy

Demand Peripherals peripherals and interface cards make it easy to build a Linux based robot or other automation. Our key difference is that we have Linux device drivers for all of our peripherals.

Having a device driver as an API means you can write your high-level application in almost any programming language: C, C++, Java, Perl, PHP, or Python. Command and configuration are all ASCII lines terminated by a newline (a little like /proc or /sys) so you can even use BASH to control your robot. Your application can be CPU efficient since our drivers work with select() and epoll().

While our driver have real device nodes they are, in fact, user space drivers. This makes them easier to understand and modify, and of course all of our driver code is released under the GPL Version 2.


A Customer Defined Robot Controller

An FPGA is at the core of the Demand Peripherals system. An FPGA's flexibility means that we don't have to determine which peripherals to put on your controller, You do!

An FPGA is nice for other reasons too. It acts as a hub or multiplexor for all of its peripherals so it's easy to have lots of peripherals without the need for a lot of serial or USB ports or the need for a slow and tricky RS-485 bus. The FPGA connects to your Linux PC or single board computer using a single USB port which can also power the FPGA.

FPGAs have an advantage too when it comes to commercializing your design. An FPGA robot controller will have a lower BOM cost, lower board space, and be much easier to manage compared to an equivalent design using eight or ten ARM or AVR chips.

Our FPGA card, the Baseboard4, has ten peripheral "slots". Slot 1 has the three buttons and eight LEDs on the Baseboard itself. The other nine slots are available for your choice of peripherals. Eight of the slots are on four 16 pin connectors. Each connector is split into two 8 pin connectors that go to the peripheral's interface card.

Visit the support page "Build Your FPGA Image" to build an FPGA image with your selected mix of peripherals. After submitting your selection out back-end tool will generate the FPGA image and e-mail it to you. Your selection of peripherals is included in the price of the Baseboard and as your design evolves you can request additional FPGA images at no additional cost. This point bears repeating: when you buy our FPGA card, you get the right to use every single peripheral we make for it.

Peripherals versus Interface Cards: While selecting peripherals and interface cards from this web site it is important to bear in mind the distinction between a peripheral and its interface card. The peripheral is the function built into the FPGA and made visible by the Linux device driver. An interface card provides the drive electronics or other physical interface to your robot or automation. Consider, as an example, the dual DC motor controller peripherals. It can control the speed and direction of two DC motors. It uses a dual H-bridge interface card for the physical interface to the motors. However that same dual H-bridge card is also used as the physical interface to the bipolar stepper motor controller peripherals. That is, different peripherals can sometimes use the same interface card, and a given peripheral might use different interface cards depending on the application.


When NOT to Use a Baseboard

For all their advantages there are times when an FPGA based controller does not make sense. If you don't want to use Linux or if you need to control a single device then you may be better served by an Arduino or one of its equivalents. Or, if your goal is not so much to have a robot but to build one and to learn about all of the electronics and precise timing for it then you may be better off integrating components you buy from Adafruit or SparkFun.