FPGA

From Open Source Ecology
Revision as of 02:57, 28 January 2012 by Matt Maier (talk | contribs)
Jump to navigation Jump to search

An FPGA is a device that contains a matrix of reconfigurable gate array logic circuitry. When an FPGA is configured, the internal circuitry is connected in a way that creates a hardware implementation of the software application. Unlike processors, FPGAs use dedicated hardware for processing logic and do not have an operating system. FPGAs are truly parallel in nature so different processing operations do not have to compete for the same resources. As a result, the performance of one part of the application is not affected when additional processing is added. Also, multiple control loops can run on a single FPGA device at different rates.

FPGAs are not open source friendly. The chips themselves are only made by a couple companies and each one has their proprietary tool-chain. Implementing an FPGA-based controller, in the time available, would require buying into one or more (probably one) commercial solution.

Rationale

  • Field-programmable gate array (FPGA) technology provides the reliability of dedicated hardware circuitry, true parallel execution, and lightning-fast closed-loop control performance.
    • In addition to offering high reliability, FPGA devices can perform deterministic closed-loop control at extremely fast loop rates. In most FPGA-based control applications, speed is limited by the sensors, actuators, and I/O modules rather than the processing performance of the FPGA. For example, the proportional integral derivative (PID) control algorithm that is included with the LabVIEW FPGA Module executes in just 300 nanoseconds (0.000000300 seconds).
    • FPGA-based control systems offer deterministic closed control performance at rates exceeding 1 MHz. In fact, many algorithms can be executed in a single cycle of the FPGA clock (40 MHz).
  • Processing is done in parallel so multirate control systems are easy to implement.
    • Because control logic runs in dedicated hardware subsystems on the FPGA, applications do not slow down when additional processing is added.
  • In many cases, a software-defined gate array in FPGA hardware can be used to replace a costly and time-consuming custom printed circuit board (PCB) layout.
  • FPGAs can digitally process signals at very high speeds and are often used to reconfigure the I/O module functionality.
    • digital input module can be used to simply read the true/false state of each digital line. Alternately, the same FPGA can be reconfigured to perform processing on the digital signals and measure pulse-width, perform digital filtering, or even measure position and velocity from a Quadrature encoder sensor.
  • In general-purpose operating systems such as Windows, the jitter is unbounded so closed-loop control system stability cannot be guaranteed. Processor-based control systems with real-time operating systems are commonly able to guarantee control loop jitter of less than 100 microseconds.
    • The jitter for FPGA-based control loops depends on the accuracy of the FPGA clock source. In the case of the NI cRIO-910x reconfigurable chassis, the FPGA clock jitter is only 250 picoseconds (0.000000000250 seconds) when using a 40 MHz FPGA clock rate.

References