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, pcdaemon, 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 pcset, get, and cat with non-FPGA peripherals by writing a custom driver. See 'gps' in the pcdaemon sources for an example.

Pcdaemon is a daemon that routes packets to and from the FPGA to the appropriate driver. Pcdaemon 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 pcdaemon 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 pcdaemon.



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