Overview of FPGA Families
Below are some examples of National Instruments hardware that contain user programmable FPGAs
![]() |
![]() |
![]() |
|
CompactRIO Modular System |
Intelligent DAQ PCI Device |
CompactRIO Integrated System |
The table below shows a comparison between the Spartan 3 and Virtex II families of FPGAs that are used in National Instruments products.
| Spartan 3 1000(cRIO-9072) | Spartan 3 2000 (cRIO-9074) |
Virtex II 1000(cRIO-9102, NI-7831) | Virtex II 3000( cRIO-9104, NI-7833) | |
| Size |
|
|
|
|
|
Speed |
|
|
|
|
|
Specialty Resources |
|
|
|
|
Good Better
Best
Virtex II (Used within the NI cRIO-910x CompactRIO chassis & NI 78xx R Series devices)
This family of FPGAs targets high performance applications that require higher clock rates, extensive math operations, or significant use of single cycle timed loops. The Virtex II RIO targets have more than twice the specialty resources of the NI Spartan 3 targets, with more than 90 multipliers and over 1700 Kb of block RAM (in the Virtex II 3000). The Virtex II is also a faster chip allowing the same logic run at higher clock rates. Typical applications use a 40MHz clock rate, although many applications can be compiled for 80MHz and a small number of applications may even compile to run at faster rates of 120 MHz and above. The Virtex II family also offers a large number of reconfigurable logic units and the most specialty resources.
Spartan 3 (NI cRIO-907x CompactRIO Integrated Systems)
The Spartan 3 family is intended for higher volume applications and as such has some tradeoffs when it comes to the number of resources available on the chip as well as over-all performance. The Spartan 3 resource mix works well for applications that require more logic operations and rely less heavily on specialty resources. The FPGA fabric is not as fast as Virtex II, therefore most applications will run at 40 MHz but few will run at faster clock rates. Also, when comparing the Spartan 3 to other FPGA families, very full designs may have difficulty meeting timing. This effectively limits the overall FPGA utilization and therefore the size of the application. However, the Spartan 3 is still a very powerful FPGA that is ideal for cost sensitive or high volume applications.
Understanding FPGA Resources
A field-programmable gate array (FPGA) is a semiconductor device that is made up of reprogrammable logic components. These logic components, which are made up of a combination of look-up tables (LUT) and flip-flops (FF) can be programmed to perform simple logic functions such as AND, or NOR operations, as well as more complex combinatorial functions. Most modern FPGAs also include specialty resources such as block RAM and multipliers. Block RAM (BRAM) greatly increases FPGA processing power by allowing for fast data storage. BRAM is usually portioned in large arrays separate from the logic regions of the chip. The multipliers on FPGAs are highly optimized specialty blocks that greatly increase the speed and space efficiency of multiplication operations. Once all of the dedicated multipliers have been used in a given application, any additional multiplication operations will be performed using the configurable logic on the FPGA. These specialty resources greatly increase the performance and efficiency of the FPGA for certain applications. The table below shows the differences in resources between the Spartan 3 and Virtex II families of FPGA.
|
FPGA Family Resources |
||||
|
Virtex II 1000 |
Virtex II 3000 |
Spartan 3 1000 |
Spartan 3 2000 |
|
| Equivalent Gates |
1 million |
3 million |
1 million |
2 million |
| LUTs/FFs |
10,240 |
28,672 |
15,360 |
40,960 |
| Multipliers |
40 |
96 |
24 |
40 |
| Block RAM (Kb) |
720 |
1,728 |
432 |
720 |
FPGA Sizes
One of the most common questions asked when selecting a NI FPGA Target is “How large is the FPGA and will my LabVIEW FPGA Code fit?”
When FPGAs were first introduced, the size of the FPGA was specified in equivalent gates. In recent years, vendors started to include specialty resources in the FPGA fabric - such as multipliers, specialty logic units, and block RAM -making it difficult to specify the size of an FPGA with a single number. These specialty resources improve performance for specific operations only, and may not be utilized in many applications. Because of these speciality resources different families of FPGAs with similar gate counts can have significantly different capabilities.
For example, a logic heavy application that requires 34,000 LUTs would fit on a Spartan 3 - 2000, but would not fit on a Virtex II - 3000. Similarly, a BRAM memory intensive application requiring 1,500 Kb of block RAM would fit on the Virtex II - 3000 but would not fit on the Spartan 3 - 2000.
It is challenging to calculate with a high level of accuracy if a given application will fit an FPGA due to this mix of logic and specialty resources. The only way to know for sure is to compile your application for your intended target. Fortunately, LabVIEW has built-in tools that allow you to compile your LabVIEW code for any FPGA-based product without having to have the physical hardware present. The tutorial linked below shows you how to determine if your LabVIEW FPGA code will fit on a certain target.



