{"id":24082,"date":"2021-05-14T08:30:38","date_gmt":"2021-05-14T15:30:38","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=24082"},"modified":"2025-01-03T02:15:29","modified_gmt":"2025-01-03T10:15:29","slug":"what-is-an-fpga","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/what-is-an-fpga\/","title":{"rendered":"What is an FPGA? | Uses, Applications &#038; Advantages"},"content":{"rendered":"<h2>The Basics of FPGA<\/h2>\n<p><em>A field-programmable gate array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturing \u2013 hence the term field-programmable. <\/em><\/p>\n<blockquote><p>The FPGA can be configured many thousands of times into a virtually unlimited number of circuits, making it an ideal tool for learning about digital circuits and systems. In fact, FPGA&#8217;s have gained wide acceptance in the electronics industry for the same reason\u2014they can quickly be configured into virtually any circuit (and even entire computer systems), allowing engineers to thoroughly study designs before they are built commercially.<\/p><\/blockquote>\n<p>Here at Digilent we frequently talk about the different applications and uses for <strong>F<\/strong>ield <strong>P<\/strong>rogrammable <strong>G<\/strong>ate <strong>A<\/strong>rrays (FPGAs), but admittedly we rarely cover another topic&#8230; what exactly <em>is<\/em> an <a href=\"https:\/\/digilent.com\/shop\/boards-and-components\/system-boards\/fpga-boards\/\">FPGA board, <\/a>and what is FPGA used for? In an attempt to address these questions, today we will provide a brief overview of just that.<\/p>\n<h2>An Introduction to FPGA<\/h2>\n<p><a href=\"https:\/\/digilent.com\/blog\/history-of-the-fpga\/\" target=\"_blank\" rel=\"noopener\">Developed in the mid-1980s<\/a>, FPGAs were originally conceived to give designers the ability to create custom digital logic. By the early 1990s, FPGAs were primarily used in telecommunications and networking. By the end of the 90\u2019s, FPGAs were being used in consumer, automotive, and industrial applications, opening the way for a variety of<a href=\"https:\/\/digilent.com\/blog\/how-do-i-get-a-job-in-fpga\/\" target=\"_blank\" rel=\"noopener\"> job opportunities<\/a>.<\/p>\n<h3>How Does an FPGA Work?<\/h3>\n<p>So how does FPGA work? An FPGA consists of internal hardware blocks with user-programmable interconnects to customize operation for a specific application. These interconnects can be reprogrammed, allowing the FPGA to accommodate changes to the design or support a new application during the lifetime of the part. The FPGA is programmed during the manufacturing process but can later be re-programmed to reflect any changes made to the device.<\/p>\n<p>An FPGA is based on a matrix of configurable logic blocks (CLBs) connected via programmable interconnects. CLBs constitute the basic\u00a0FPGA\u00a0cell and includes two 16-bit function generators, one 8-bit function generator, two registers (flip-flops or latches), and reprogrammable routing controls (multiplexers).\u00a0CLBs\u00a0are used to implement macros and other designed functions.<\/p>\n<p>Unlike processors, FPGAs are capable of parallel operations, so different processing operations do not compete for the same resources. Each independent task is assigned to a dedicated section of the chip and can function autonomously without influence from other logic blocks. Consequently, the performance of one part of the application is unaffected as more operations are added.<\/p>\n<p>The FPGAs internal configuration is set by software or as it is typically referred to, \u201cfirmware.\u201d FPGAs can be reprogrammed in the field as application or functionality requirements change.<\/p>\n<p>FPGAs are designed to be programmed using Hardware Description Language such as Verilog HDL or VHDL. Because they are reprogrammable, FPGAs differ from ASIC ICs, which are designed to do specifically designed tasks.<\/p>\n<p>Making a decision on if an FPGA-based design should be used needs to be made early in the design process. Considerations should be made regarding whether or not the chip will need to be re-programmed later in the design process or even after manufacturing. Sometimes manufacturers may decide on an FPGA-based design for early in the development cycle when bugs may still be found, and then switch to an ASIC when the design is stable.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-28264 size-full\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2021\/05\/WhatIsAnFPGA-detail-350.png\" alt=\"A picture of an Artix-7 on a printed circuit board\" width=\"350\" height=\"263\" data-wp-pid=\"28264\" \/><\/p>\n<h2>What&#8217;s Inside an FPGA?<\/h2>\n<p>FPGAs contain components specialized for specific functions and more general-purpose configurable logic.<\/p>\n<h3><strong>Configurable Logic Block <\/strong><\/h3>\n<p><a href=\"https:\/\/digilent.com\/blog\/fpga-configurable-logic-block\/\">Configurable logic blocks<\/a> (CLBs) are the basic logic unit of an FPGA. A CLB gives the FPGA its ability to accept different hardware configurations. CLBs can be programmed to perform almost any logic function. The individual CLB contains a number of discrete logic components including look-up tables (LUTs) and flip-flops.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9050 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/CLBDiagram-600x291.jpg\" alt=\"\" width=\"600\" height=\"291\" data-wp-pid=\"9050\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/CLBDiagram-600x291.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/CLBDiagram-1024x496.jpg 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/CLBDiagram.jpg 1630w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<h3><strong>Flip-Flops<\/strong><\/h3>\n<p>A flip-flop is a circuit that has two stable states and can be used to store state information. Flip-flops are binary shift registers that synchronize logic and save logical states between clock cycles within an FPGA circuit. A flip-flop stores a single bit of data.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-thumbnail\" src=\"https:\/\/digilent.com\/reference\/_media\/learn\/fundamentals\/digital-logic\/flip-flops\/memory.png\" width=\"185\" height=\"131\" \/><\/p>\n<h3><strong>Lookup Tables<\/strong><\/h3>\n<p>A lookup table (LUT) determines what the output is for any given input(s). In the context of combinational logic, it is the <strong style=\"font-size: 1rem;\">truth table<\/strong><span style=\"font-size: 1rem;\"> and defines how combinatorial logic behaves. A truth table is a predefined list of outputs for each combination of inputs. The LUT holds a custom truth table that is loaded when the chip is powered up.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9051 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/LUT-600x314.jpg\" alt=\"\" width=\"600\" height=\"314\" data-wp-pid=\"9051\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/LUT-600x314.jpg 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/LUT-351x185.jpg 351w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/LUT-800x419.jpg 800w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2015\/08\/LUT.jpg 1003w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<h3><strong>DSP Slices<\/strong><\/h3>\n<p>A DSP slice, or sometimes referred to as a block or cell, is one of the specialized components in an FPGA. It carries out digital signal processing functions, like filtering or multiplying, more efficiently than using many CLBs. This multiplier circuitry saves on LUT and flip-flop usage in math and signal processing applications.<\/p>\n<h3><strong>Block RAM<\/strong><\/h3>\n<p>The memory available on an FPGA chip is referred to as block RAM or BRAM. These blocks can be subdivided or cascaded to make smaller or larger sizes of BRAM available. Digital signal processing algorithms frequently need to keep track of an entire block of data and without onboard memory. Many processing functions do not fit within the configurable logic of an FPGA chip.<\/p>\n<figure id=\"attachment_29880\" aria-describedby=\"caption-attachment-29880\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-29880 size-full\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2021\/05\/block-ram.png\" alt=\"\" width=\"300\" height=\"177\" data-wp-pid=\"29880\" \/><figcaption id=\"caption-attachment-29880\" class=\"wp-caption-text\">Image of single port BRAM<\/figcaption><\/figure>\n<figure id=\"attachment_29881\" aria-describedby=\"caption-attachment-29881\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-29881 size-full\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2021\/05\/block-ram-dual.png\" alt=\"\" width=\"300\" height=\"176\" data-wp-pid=\"29881\" \/><figcaption id=\"caption-attachment-29881\" class=\"wp-caption-text\">Image of dual port BRAM<\/figcaption><\/figure>\n<h3><strong>Transceivers<\/strong><\/h3>\n<p>Transceivers are made to transmit and receive serial data to and from the FPGA at high rates. This dedicated component allows for implementation of high-speed data transfer without consuming logic resources of the FPGA.<\/p>\n<h3><strong>Input\/Output Blocks<\/strong><\/h3>\n<p>Input Output (IO) blocks are the components through which data transfers in and out of the FPGA. The IO blocks are configurable in several ways depending on the type of data. They operate at lower speeds than transceivers but maintain more functional flexibility.<\/p>\n<h2>What Are FPGA Features?<\/h2>\n<p>Infinitely configurable FPGA fabric allows programmers to design an FPGA to perform almost any function. In addition to the flexibility provided by FPGA fabric, FPGA throughput is extremely high because of the parallel nature of an FPGA\u2019s design. The core capabilities of an FPGA are as follows:<\/p>\n<h3>Parallel processing<\/h3>\n<p>Parallel processing on a FPGA is possible because it does not follow the processor programming model. Parallel processing also means that slower clocks can be used (compared to high frequency clocks on processors) and users can still achieve the required throughputs, but with less energy consumption. Parallel processing also enables off-loading computer intensive parts of the application to the FPGA and relieving the processor to perform less computer intensive tasks. Parallel processing makes FPGAs excellent for working\u00a0with measurement systems and edge computing applications that require processing of large amounts of data.<\/p>\n<h3>FPGAs can be reconfigured<\/h3>\n<p>More FPGA benefits! When a design needs an update or feature addition, it can be easily done. This is difficult with an ASIC. As a product evolves, feature changes or improvements can be easily made in the field by simply updating the FPGA.<\/p>\n<h3>Low and medium volume production<\/h3>\n<p>FPGAs are typically used for devices with low to medium volume. In high volume products, ASICs are typically preferred due to their lower cost. ASICs are typically cheaper for high volume products and not so cost effective for low or medium volumes. However, the initial development costs of an ASIC can be quite high, sometimes in the millions of dollars.<\/p>\n<h3>Rapid development process<\/h3>\n<p>FPGAs can offer a quick turn-around time from concept to production because no actual design at the transistor level is needed.<\/p>\n<h2>FPGA Uses and Applications<\/h2>\n<p>So what is an FPGA used for? FPGAs are used for all kinds of applications. Specific applications using an FPGA include digital signal processing, biomedical instrumentation, device controllers, software-defined radio, random logic, medical imaging, computer hardware emulation, voice recognition, cryptography, filtering and communication encoding, and more. Consumer electronics applications include smartphones, autonomous vehicles, cameras, displays, video and image processing, and security systems. Many commercial applications also make use of the FPGA advantages, like in servers, and various markets, including aerospace and defense, medical electronics, and distributed monetary systems.<\/p>\n<h2>What Are the Advantages of FPGA?<\/h2>\n<p>There are <a href=\"https:\/\/digilent.com\/blog\/six-reasons-you-should-consider-fpgas-over-asics-or-cpu-gpus\/\">many benefits of FPGAs<\/a> for embedded system design. Some advantages of FPGA are the reconfigurability, the ability to work in parallel, time-critical processing, and optimal performance, making them well-suited for numerous applications.<\/p>\n<h3><strong>Performance <\/strong><\/h3>\n<p>The parallel nature of FPGAs allows them to offer higher processing power, speeds, better response times, and overall improved performance when compared to other modern microprocessors.<\/p>\n<h3><strong>Reprogrammable hardware structure<\/strong><\/h3>\n<p>Because of the <a href=\"https:\/\/digilent.com\/blog\/structure-of-an-fpga\/\" target=\"_blank\" rel=\"noopener\">reprogrammable structure of FPGAs<\/a>, functionality can be redefined even after manufacturing. Users can program new product features and functions, adapt to new standards, and reconfigure hardware applications after the product has been installed in the field. This flexibility gives FPGA-based designs advantages over microcontroller-based systems. A user can make a mistake in programming, then later modify or change the FPGA with a new configuration file and without having to create prototypes or additional hardware, saving time and reducing cost.<\/p>\n<h3><strong>Quicker time to market<\/strong><\/h3>\n<p>FPGAs are readily available and allow users to quickly develop systems based upon this technology. ASICs require manufacturing cycles taking several months. FPGA users can ship systems as soon as a product design is working and tested.<\/p>\n<h3><strong>Lower overall costs<\/strong><\/h3>\n<p>Compared to the costs of manufacturing an ASIC, FPGAs are relatively inexpensive. The design cycle for an ASIC is long and production tooling is costly. Plus, any changes in the design will require a new chip, versus an FPGA which can be simply updated with a new program.<\/p>\n<h3><strong>Low maintenance<\/strong><\/h3>\n<p>Unlike ASICs, FPGAs are reprogrammable and can be upgraded or enhanced in the field without the time and resource investment that would be required to reconfigure circuit boards and hardware. Engineering costs are also considerably lower to that of ASICs. System requirements can change over time and the cost of making incremental changes to an FPGA is small when compared to the large expense of retooling for an ASIC.<\/p>\n<h2>How to Learn to Design with FPGA<\/h2>\n<p>The first step in learning more about FPGAs is to decide on the type of chip and to choose a programing language. VHDL is more verbose than Verilog and designs written in VHDL are considered self-documenting. Verilog requires less code and is considered easier to learn. We actually talk more <a href=\"https:\/\/digilent.com\/blog\/whats-different-between-vivado-and-vitis\/\">in depth about Xilinx&#8217;s tools<\/a> in another blog post.<\/p>\n<p>There are many considerations when choosing an FPGA chip, including IO count, number of gates, operating frequency, and cost. Functionality can also vary between traditional FPGAs and System on a Chip (SoC) FPGAs. SoC FPGAs integrate processor and FPGA architecture into a single device. and provide higher integration, lower power usage, smaller size, and higher bandwidth between the processor and the FPGA.<\/p>\n<p>The next step is choosing a development board. The <a href=\"https:\/\/store.digilentinc.com\/basys-3-artix-7-fpga-beginner-board-recommended-for-introductory-users\/\">Digilent Basys 3<\/a> is ideal for getting started with FPGA. It\u2019s an entry-level development board built around the Xilinx Artix-7 FPGA, and the <a href=\"https:\/\/store.digilentinc.com\/arty-z7-zynq-7000-soc-development-board\/\">Arty Z7<\/a> is a good choice for those looking to get into <a href=\"https:\/\/www.xilinx.com\/products\/silicon-devices\/soc\/zynq-7000.html\">SoC technology<\/a>. We also have a selection of other <a href=\"https:\/\/digilent.com\/shop\/boards-and-components\/system-boards\/introductory-boards\/\">FPGA\/SoC beginner boards<\/a>.<\/p>\n<h4>Here are some additional FPGA Resources:<\/h4>\n<ul>\n<li>The <a href=\"https:\/\/forum.digilentinc.com\">Digilent Forum<\/a> is a great place to peruse previous discussions and ask fellow engineers for pointers.<\/li>\n<li>Subreddits like <a href=\"http:\/\/reddit.com\/r\/fpga\">\/r\/FPGA<\/a> and <a href=\"http:\/\/reddit.com\/r\/embedded\">\/r\/embedded<\/a> are great sources of information that changes daily.<\/li>\n<li><a href=\"http:\/\/nandland.com\">Nandland<\/a> is a great resource with FPGA fundamentals, tutorials, examples, and videos. Here&#8217;s a great playlist to start with:<\/li>\n<\/ul>\n<p><iframe loading=\"lazy\" title=\"What is an FPGA? Intro for Beginners\" width=\"735\" height=\"413\" src=\"https:\/\/www.youtube.com\/embed\/CfmlsDW3Z4c?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<ul>\n<li>Udemy offers an online training course on <a href=\"https:\/\/www.udemy.com\/course\/hls-combinational-circuits\/\">High-Level Synthesis for FPGA<\/a><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23945 size-full\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/02\/Arty_obl_2_600__25304.1458767764.1280.1280-e1519169420823.png\" alt=\"Picture of Digilent Basys 3 FPGA Board\" width=\"583\" height=\"427\" data-wp-pid=\"23945\" \/><\/p>\n<p>&nbsp;<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-24082 jlk' data-task='like' data-post_id='24082' data-nonce='919968f71f' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-24082 lc'>+7<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-24082 jlk' data-task='unlike' data-post_id='24082' data-nonce='919968f71f' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-24082 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-24082 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Today we will go over a brief overview on FPGAs!<\/p>\n","protected":false},"author":54,"featured_media":28263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,1563],"tags":[36],"ppma_author":[4503],"class_list":["post-24082","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fpga","category-guide","tag-xilinx"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2021\/05\/Turbo-WhatIsAnFPGA-580.png","authors":[{"term_id":4503,"user_id":54,"is_guest":0,"slug":"sradecky","display_name":"Steve Radecky","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/88468dc285e68a9db943a995d6dd3b53?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"Radecky","last_name_2":"","first_name":"Steve","first_name_2":"","job_title":"","description":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/24082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/54"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=24082"}],"version-history":[{"count":9,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/24082\/revisions"}],"predecessor-version":[{"id":31271,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/24082\/revisions\/31271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/28263"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=24082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=24082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=24082"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=24082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}