Field-Programmable Gate Arrays (FPGA) are the most flexible and capable devices available to interface to a large variety of system devices such as memories, data acquisition (ADC/DAC), image sensors, displays, and so on. Often, the goal is to interface these system devices to a software infrastructure running on a workstation platform using a Windows, Linux or Mac operating system.
The ubiquitous PC, with its myriad of software development environments, comfortable presence, and low-cost, should be the ultimate microprocessor development platform but it has generally been ill-suited to the intimate hardware development scene. This is largely due to the layers of operating system between the application software and the device pins a developer wishes to "wiggle." Development engineers in commercial design and academic research have found a way to bring these two worlds together fortuitously with USB-based FPGA modules, designed to bridge the gap between hardware and software worlds.
Mating IC Digital Data Output to Data Processing Software
Typically the hardware engineer would need to develop the entire link from the image sensor to the PC's USB, including programming the firmware on a USB microcontroller and writing drivers on the PC platform to allow her user application to communicate with the device. Finally, a protocol would need to be developed to transfer data from the FPGA to the PC application in a way that makes sense for both the hardware and software. All of this requires additional research and development, distracting the hardware engineer from the expertise she already has and the project at hand.
Off-the-shelf USB-based FPGA Module and Software API
With the FPGA-USB module, the effort of interfacing the FPGA to the PC's microprocessor becomes a non-issue, since this interface has been abstracted by the manufacturer. The FPGA designer gets a handful of small HDL modules to plug into her design at key points where control signals or bulk data are to be transferred. The PC software engineer gets a complete application programmer's interface (API) so he is essentially making the FPGA and added hardware an extension of his software application.
Reduces Cost and Time of Engineering Development
This focus dramatically reduces the cost and time of engineering development for a particular problem. Additionally, the use of appropriate off-the-shelf components accelerate product development and clears engineering resources for other opportunities. One Opal Kelly customer estimates the Opal Kelly 'out-of-the-box' FPGA USB 2.0 module allowed them to focus on designing their core product and saved them over $100,000 while accelerating the time-to-market for its commercial product by 12 months.
Machine vision and its application to a manufacturing line was the example used above, but FPGA hardware and microprocessors have joint application in nearly every vertical market imaginable. Military applications often make use of microprocessor-based processing or networking combined with highly-specialized data acquisition. The nature of parallelism in common cryptography and bioinformatics algorithms means that PC-based systems can benefit significantly from FPGA-based co-processing. And test equipment and many other industrial / scientific / medical applications require advanced machinery to be controlled or observed through a human interface, often a PC.
FPGAs and microprocessors are two great technologies that complement each other extremely well. The most common microprocessor "box," the PC (using Linux, Windows, or Mac OS), however, doesn't typically come with an FPGA available for engineering work. One of the most convenient and lowest-cost ways to marry these two technologies and reap the benefits of both is with an off-the-shelf USB-based FPGA module.