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, dpserver, 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 IMU chip, the 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 dpserver sources for an example.

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

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


FPGA Defined Peripherals
User Interface
FPGA Configuration
FPGA Buttons & LEDs
Text LCD and Keypad
Quad WS2812 Interface
Quad Slide Pot
Tone Generator
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
Octal 12-bit ADC
Quad Ping))) Interface
Octal SRF04 Interface
Quad Event Counter
Generic I2C
Generic SPI
Octal 8-Bit DAC
Quad Digital Potentiometer
Quad PWM Output
Quad PWM Input
4 Bit Pattern Generator
Real Time Clock
Dual Watchdog Timers

Interface Cards
User Interface
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
Generic I2C
Generic SPI
USB 2.0 Hub
Real Time Clock
Slot Expander
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
WW2 Prototyping Card
WW1 Small Prototyping Card