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.)
Our system is divided into two parts. Interface cards contain the electronic components needed. The interface card might contain the IMU chip, the H-Bridge FETs, or the headers to conect 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 all the cards needed for your project onto one PCB card if and when you want.
Peripherals are implemented in the FPGA and in the host computer.The FPGA part of peripherals have the timing and logic needed to drive the four pins to each interface card. For example, the FPGA part of the dc2 peripheral does the timing for the H-bridges that control two different DC motors. The FPGA has 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 set the mode (brake, coast, forward, or reverse) of the motors. 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.
Dpserver manages on USB/serial link. If you have more than one FPGA card in your system you will need to run more than one instance of dpserver.