Demand Peripherals     Robotics and Automation Made Easy

System Architecture

The following diagram shows the major components in the system. The major components include: interface cards, the FPGA card, dpdaemon, and your application. (The FPGA card supports eight interface cards although this diagram shows only three.)


Interface cards contain the electronic components needed. The interface card might contain the sensors, H-Bridge FETs, or the headers to connect to servo motors. Each interface card connects to the FPGA card over an eight-wire IDC cable. The cable has power lines and four pins from the FPGA.

The menu to the left has list of interface cards. Clicking on a link will take you to a page with a description of the card including the schematic and meaning of each pin that connects to the FPGA. Note the the interface card designs are all open source so you can combine card schematics needed for your project onto one schematic for your PCB card if and when you want.

Peripherals are implemented in the FPGA and in the host computer.

The FPGA part of a peripherals has the timing and logic needed to drive the four pins to the interface card. For example, the FPGA part of the dc2 peripheral does the timing for the H-bridges that controls two DC motors. Logic in the FPGA implements an internal address and data bus and each peripheral has a set of 8-bit registers which configure the peripheral. For example, the FPGA peripheral part of dc2 has an 8-bit register that sets the mode (brake, coast, forward, or reverse) of each motor. Other registers set the duty cycle of the H-bridge FETs and configure the watchdog timer. The address of a peripheral is set at FPGA compile time and must match the connector where the interface card connects.

Drivers are shared object loadable libraries that translate commands from the user interface into the register reads and writes in the FPGA. Drivers hide the complexity and detail of the peripheral registers and give your application a high-level language to control the system.

You can use dpset, get, and cat with non-FPGA peripherals by writing a custom driver. See 'gps' in the dpdaemon sources for an example.

Dpdaemon is a daemon that routes packets to and from the FPGA to the appropriate driver. Dpdaemon is written in C and uses the standard C library so it should be easy to port to an RTOS, iOS, or Windows.

Each instance of dpdaemon manages a single USB/serial link to an FPGA. If you have more than one FPGA card in your system you usually run more than one instance of dpdaemon.



The picture below shows a typical system with a single board computer, an FPGA card, four daughter cards, and two dpdaemon managed USB peripherals.


FPGA Defined Peripherals
User Interface
FPGA Configuration
FPGA Buttons & LEDs
Host Tx/Rx Interface
AVR Interface
Stereo Audio Amplifier
Text LCD and Keypad
Quad WS2812 Interface
Quad Slide Pot
IR Recv/Xmit
6 Digit LCD
RC Decoder
Keyfob RF Decoder
Rotary Encoder Interface
Quad Touch Interface
Motion Control
Dual DC Motor Controller
Dual Quadrature Decoder
Quad 13 Bit Servo
Bipolar Stepper Controller
Unipolar Stepper Controller
Simple Input / Output
Quad Binary Output
Quad Binary Input
Octal Input/Output
32 Channel Binary Output
32 Channel Binary Input
Quad Serial Output
Octal Serial Output
Octal 12-bit ADC
Quad Ping))) Interface
Pololu QTR Interface
Octal SRF04 Interface
Generic I2C
Generic SPI
Octal 8-Bit DAC
Quad Digital Potentiometer
Quad PWM Output
Quad PWM Input
Quad Event Counter
Real Time Clock
Dual Pulse Generator

Interface Cards
Control Cards
User Interface
Stereo Audio Amplifier
IR Recv/xmit
Six Digit LCD Display
Keyfob RF Receiver
Rotary Encoder
Quad Switch Card
Text LCD / keypad
Quad Slide Pot
Quad Touch Interface
Motion Control
Dual 7-amp H-bridge
Quad Open Drain Driver
Quad 10 Amp Relay Card
Input / Output
Octal 8-Bit DAC
Quad Digital Potentiometer
Octal 12-bit ADC
Octal SRF04
I2C Prototyping
SPI Prototyping
USB 2.0 Hub
Real Time Clock
Octal Input/Output
32 Channel Input
32 Channel Output
Power Distribution Card
15 Amp Power Distribution
5 Volt Switching Regulator
ATX Power Break-Out Card
Disk Drive Power Break-Out
MP43 Aluminum Mounting Plate
WW4 Large Prototyping Card
WW2 Prototyping Card
WW1 Small Prototyping Card
SMP SMD Prototyping Card