{"id":25130,"date":"2018-07-20T09:00:24","date_gmt":"2018-07-20T16:00:24","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=25130"},"modified":"2023-04-27T13:27:13","modified_gmt":"2023-04-27T20:27:13","slug":"fpga-for-beginners-glossary-and-setup","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/fpga-for-beginners-glossary-and-setup\/","title":{"rendered":"FPGA for Beginners: Glossary and Setup"},"content":{"rendered":"<p>The purpose of this series is to provide an entry point to navigate the world of <a href=\"https:\/\/digilent.com\/shop\/boards-and-components\/system-boards\/fpga-boards\/\">FPGA boards<\/a> and <a href=\"https:\/\/digilent.com\/shop\/boards-and-components\/system-boards\/introductory-boards\/\">SoC boards<\/a>. Admittedly, there are a decent number of resources on the topic of FPGA already available online, but the goal of this series is to provide a roadmap for the reader to navigate the current FPGA landscape. This will include discussion of FPGA theory, when\/why one might use FPGA, links to existing resources, and common mistakes and questions one might have when embarking on this learning process. However, we will also supply this discussion with technical discourse and example projects from the book <a href=\"https:\/\/digilent.com\/blog\/getting-started-with-fpga-overview\/\">Digital System Design with FPGA by\u00a0Cem \u00dcnsalan and Bora Tar\u2019s.<\/a><\/p>\n<p>The structure of the series will follow the main stages of an absolute beginner getting started with FPGA, and is applicable whether you are enrolled in class or studying on your own.<\/p>\n<p>There are a lot of things to consider when getting started with any new hardware platform, and it can be very overwhelming figuring out where to begin. You will need to understand the hardware, how to interface with the hardware, how to make the hardware interface with the outside world, and what tools and knowledge to use to actually <em>do<\/em> any of this. To begin tackling this challenge, we will provide a brief background on what exactly an FPGA is, then define some terms that you will encounter in each stage of the development process.<\/p>\n<h2><strong>The Modern FPGA Landscape<\/strong><\/h2>\n<p>The first commercially viable<a href=\"http:\/\/v\"> field-programmable<\/a>\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Gate_array\">gate array<\/a> was invented by Xilinx co-founders\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Ross_Freeman\">Ross Freeman<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Bernard_Vonderschmitt\">Bernard Vonderschmitt<\/a>\u00a0with their first board in 1985\u00a0\u2013 the XC2064. Since then, Altera (now Intel) and Xilinx continued to grow unchallenged from 1985 to the mid-1990s when competitors began to impose on the market. The 1990\u2019s were a period of rapid FPGA growth both in circuit sophistication and volume of production, and by the end of the decade, FPGA was finding its way into consumer markets.\u00a0 For more on the timeline, check out <a href=\"https:\/\/digilent.com\/blog\/history-of-the-fpga\/\">this post.<\/a><\/p>\n<p>Today the FPGA market is still dominated by these two major companies- In 2016, they controlled nearly 90 percent of the market. Users choice between the two is largely determined by familiarity with toolsets, however for the purposes of this series we will be using Xilinx [chips]and tools.<\/p>\n<p>Today, FPGA\u2019s have become affordable enough to gain prevalence in consumer markets. However, due to the complexity of the hardware and design process, it can be intimidating to learn without the direction and resources provided by a formal class. One good place to start when tackling this topic, is to get familiar with the vocabulary used to describe parts of the design process and the hardware itself.<\/p>\n<p>You might have already encountered some terms and concepts that are often thrown around, such as \u201cdigital Logic, Vivado, bitstream\u201d and so forth. There is a good amount of vocabulary that comes with learning FPGA, but to get us started we have taken some of the more common FPGA terms you might hear, and assembled definitions in our glossary below. (The majority of these definitions are taken from their respective Wikipedia pages or are linked to their original source).<\/p>\n<h2><strong>Glossary of Terms<\/strong><\/h2>\n<p><strong>FPGA definition:<\/strong> FPGA, meaning A field-programmable gate array, is an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Integrated_circuit\">integrated circuit<\/a>\u00a0designed to be configured by a customer or a designer after manufacturing\u00a0\u2013 hence &#8220;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Field-programmable\">field-programmable<\/a>&#8220;. The FPGA configuration is generally specified using a\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language\">hardware description language<\/a>\u00a0(HDL), similar to that used for an\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Application-specific_integrated_circuit\">application-specific integrated circuit<\/a>\u00a0(ASIC). They consist of a collection of logic cells called lookup tables (LUTs) surrounded by an interconnect fabric. <a href=\"https:\/\/www.electronicdesign.com\/technologies\/fpgas\/article\/21795951\/understanding-fpga-processor-interconnects\">The LUTs and fabric<\/a> are programmable, providing a flexible system that can implement almost any digital algorithm.<\/p>\n<p><strong>Digital logic<\/strong>: <a href=\"https:\/\/www.techopedia.com\/definition\/27425\/digital-logic\">Digital logic<\/a>\u00a0is the underlying\u00a0<em>logic<\/em>\u00a0system that drives electronic circuit board design.\u00a0Digital logic\u00a0is the manipulation of binary values through printed circuit board technology that uses circuits and\u00a0<em>logic<\/em>\u00a0gates to construct the implementation of computer operations. It is the fundamental concept underpinning all modern computer systems.<\/p>\n<p><strong>Digital System:<\/strong> The system you are trying to design. FPGA can be used as a generic platform to implement a digital system on. An FPGA is itself a digital electronic system composed of basic building blocks.<\/p>\n<p><strong>Design idea<\/strong>: The usage case or application you are designing your system for.<\/p>\n<p><strong>FPGA HDL definition:<\/strong> (<strong>H<\/strong>ardware\u00a0<strong>D<\/strong>escription\u00a0<strong>L<\/strong>anguage). The two most popular HDLs are Verilog and VHDL<\/p>\n<p><strong>Verilog:<\/strong> Verilog, standardized as\u00a0IEEE 1364, is a\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language\">hardware description language<\/a>\u00a0(HDL) used to model\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Electronic_system\">electronic systems<\/a>. It is most commonly used in the\u00a0<a href=\"https:\/\/en.wikipedia.org\/w\/index.php?title=Design_and_verification&amp;action=edit&amp;redlink=1\">design and verification<\/a>\u00a0of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_electronics\">digital circuits<\/a>\u00a0at the\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Register-transfer_level\">register-transfer level<\/a>\u00a0of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Abstraction_(computer_science)\">abstraction<\/a>. It is also used in the verification of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Analogue_electronics\">analog circuits<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Mixed-signal_integrated_circuit\">mixed-signal circuits<\/a>, as well as in the design of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Synthetic_biological_circuit\">genetic circuits<\/a><\/p>\n<p><strong>VHDL:<\/strong> VHDL\u00a0(<a href=\"https:\/\/en.wikipedia.org\/wiki\/VHSIC\">VHSIC<\/a>\u00a0Hardware Description Language) is a\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language\">hardware description language<\/a>\u00a0used in\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Electronic_design_automation\">electronic design automation<\/a>\u00a0to describe\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_electronics\">digital<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Mixed-signal_integrated_circuit\">mixed-signal<\/a>\u00a0systems such as\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Field-programmable_gate_array\">field-programmable gate arrays<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Integrated_circuit\">integrated circuits<\/a>. VHDL can also be used as a general purpose\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Parallel_programming_language\">parallel programming language<\/a>.<\/p>\n<p><strong>Vivado:<\/strong> Vivado Design Suite\u00a0is a software suite produced by\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Xilinx\">Xilinx<\/a>\u00a0for synthesis and analysis of\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language\">HDL<\/a>\u00a0designs, superseding\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Xilinx_ISE\">Xilinx ISE<\/a>\u00a0with additional features for\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/System_on_a_chip\">system on a chip<\/a>\u00a0development and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/High-level_synthesis\">high-level synthesis<\/a>.<sup><a href=\"https:\/\/en.wikipedia.org\/wiki\/Xilinx_Vivado#cite_note-Xilinx-Inc-Apr-2012-8-K-3\">[3]<\/a><a href=\"https:\/\/en.wikipedia.org\/wiki\/Xilinx_Vivado#cite_note-4\">[4]<\/a><a href=\"https:\/\/en.wikipedia.org\/wiki\/Xilinx_Vivado#cite_note-hls1-5\">[5]<\/a><\/sup><sup>[6]<\/sup> Vivado represents a ground-up rewrite and re-thinking of the entire design flow (compared to ISE), and has been described by reviewers as &#8220;well conceived, tightly integrated, blazing fast, scalable, maintainable, and intuitive&#8221;.<\/p>\n<p><strong>FPGA RTL definition:<\/strong> In digital circuit design, register-transfer level (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Register-transfer_level\">RTL<\/a>) is a design abstraction which models a synchronous digital circuit in terms of the flow of digital signals (data) between hardware registers, and the logical operations performed on those signals.<\/p>\n<p><strong>Bitstream definition in FPGA:<\/strong> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_reconfigurable_computing\">The file that configures the FPGA<\/a> (has a .bit extension). The bitstream gets loaded into an FPGA when ready for execution. Obtained after place and route, final result of the place and route phase.<\/p>\n<p><strong>C\/C++:<\/strong> <a href=\"https:\/\/www.techopedia.com\/definition\/26184\/c-programming-language_\">C++<\/a>\u00a0is a general-purpose object-oriented programming (OOP) language, developed by Bjarne Stroustrup, and is an extension of the\u00a0C\u00a0language. It is therefore possible to code\u00a0C++\u00a0in a &#8220;C\u00a0style&#8221; or &#8220;object-oriented style.<\/p>\n<p><strong>Assembly (Language):<\/strong> An assembly language, often abbreviated asm, is any low-level programming language, in which there is a very strong correspondence between the assembly program statements and the architecture&#8217;s machine code instructions.<\/p>\n<p><strong>Binary:<\/strong> <a href=\"https:\/\/techterms.com\/definition\/binary)\">Binary\u00a0<\/a>(or base-2) a numeric system that only uses two digits \u2014 0 and 1.\u00a0Computers\u00a0operate in\u00a0binary,meaning\u00a0they store data and perform calculations using only zeros and ones.<\/p>\n<p><strong>Synthesis:<\/strong> Process of creating a netlist from a circuit description described using\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware_description_language\">HDLs<\/a>\u00a0(Hardware Description Language),\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/High-level_programming_language\">HLLs<\/a>\u00a0(High Level Language),\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Graphical_user_interface\">GUI<\/a>\u00a0(Graphical User Interfaces).<\/p>\n<p><strong>Serial Terminal Application:<\/strong>\u00a0 An example of this is Tera Term, which is an open-source, free, software implemented, terminal emulator program. It emulates different types of computer terminals, from DEC VT100 to DEC VT382. It supports telnet, SSH 1 &amp; 2 and serial port connections.<\/p>\n<p><strong>FPGA chip definition:<\/strong> <a href=\"https:\/\/embeddedmicro.com\/blogs\/tutorials\/what-is-an-fpga\">Unlike microcontrollers<\/a> where you only have control over the software, with FPGA you have control over the hardware as well. There is no processor to run software on, at least until you design one! You can configure an FPGA to be something as simple as an and gate, or something as complex as a multi-core processor. To create your design, you write some HDL (<strong>H<\/strong>ardware\u00a0<strong>D<\/strong>escription\u00a0<strong>L<\/strong>anguage). You then\u00a0<em>synthesize<\/em>\u00a0your HDL into a bit file which you can use to configure the FPGA.\u00a0<span style=\"color: black; font-family: Calibri,Helvetica,sans-serif; font-size: medium;\">SoC (System on Chip) is used to distinguish between Zynq and non-Zynq parts (Zynq is an SoC which includes a processor).<\/span><\/p>\n<p><strong>FPGA Board:\u00a0<\/strong>A PCB that the FPGA is designed to fit, typically offering multiple peripherals. Digilent examples include:\u00a0the <a href=\"https:\/\/digilent.com\/shop\/genesys-zu-zynq-ultrascale-mpsoc-development-board\/\">Genesys ZU<\/a>, <a href=\"https:\/\/digilent.com\/shop\/basys-3-artix-7-fpga-trainer-board-recommended-for-introductory-users\/\">Basys 3<\/a>, \u00a0<a href=\"https:\/\/digilent.com\/shop\/nexys-a7-fpga-trainer-board-recommended-for-ece-curriculum\/\">Nexys A7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/cmod-a7-35t-breadboardable-artix-7-fpga-module\/\">Cmod A7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/arty-s7-spartan-7-fpga-development-board\/\">Arty S7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/arty-z7-zynq-7000-soc-development-board\/\">Arty Z7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/cora-z7-zynq-7000-single-core-for-arm-fpga-soc-development\/\">Cora Z7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/arty-a7-100t-artix-7-fpga-development-board\/\">Arty A7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/nexys-video-artix-7-fpga-trainer-board-for-multimedia-applications\/\">Nexys Video<\/a>, <a href=\"https:\/\/digilent.com\/shop\/eclypse-z7-zynq-7000-soc-development-board-with-syzygy-compatible-expansion\/\">Eclypse Z7<\/a>, <a href=\"https:\/\/digilent.com\/shop\/zybo-z7-zynq-7000-arm-fpga-soc-development-board\/\">Zybo Z7<\/a>, and <a href=\"https:\/\/digilent.com\/shop\/cmod-s7-breadboardable-spartan-7-fpga-module\/\">Cmod S7.<\/a> All can be found on our <a href=\"https:\/\/digilent.com\/shop\/about-system-boards-and-components\/#System\">FPGA product page<\/a>.<\/p>\n<p><strong>FPGA fabric:<\/strong> \u00a0<a href=\"https:\/\/www.quora.com\/What-are-FPGA-core-and-FPGA-fabric-And-what-is-the-difference-between-FPGA-fabric-and-FPGA-core\">The internal structure of an FPGA.<\/a> The various devices that the FPGA contains, the type of interconnect, the add-on features and so on. For example, a typical FPGA from Xilinx or Altera has a\u00a0<em>combinatorial logic block<\/em>(CLB) which typically consists of a lookup table (LUT) which can be configured for 2 to 7 inputs, an adder and a D flip-flop. This forms the\u00a0<em>logic element<\/em>\u00a0in the FPGA<em>.\u00a0<\/em>The FPGA also contains other blocks like phase locked loops (PLL), I\/O buffers, block memory (BRAM), Digital Signal Processing (DSP) blocks and in some cases macro blocks which function as a PCIe controller, Gigabit Ethernet controller, Serializer\/Deserializer (SERDES) and off late even large blocks like video codecs (h.264 and h.265 in Zynq Ultrascale+). All of these blocks are programmable and configurable via RTL but need not be designed as we&#8217;d do in the ASIC flow. (Except for the FPGA manufacturer of course).<\/p>\n<p><strong>LUT definition for FPGA:<\/strong>\u00a0 A <a href=\"https:\/\/electronics.stackexchange.com\/questions\/85460\/how-does-a-lut-work-why-is-it-used\">LUT<\/a>, or <strong>l<\/strong>ook<strong>u<\/strong>p <strong>t<\/strong>able is a fast way to realize a complex function in\u00a0digital logic. The address is the function input, and the value at that address is the function output. The advantage is that computing the function only takes a single memory lookup regardless of the complexity of the function, so it is very fast.<\/p>\n<p><strong>Serial Connection:<\/strong> A\u00a0<em>serial<\/em>\u00a0port is a\u00a0<em>serial communication<\/em>\u00a0interface through which information transfers in or out one bit at a time (in contrast to a parallel port).<\/p>\n<p><strong>Peripherals:<\/strong> Fixed\u00a0<a href=\"https:\/\/www.electronicdesign.com\/technologies\/fpgas\/article\/21795951\/understanding-fpga-processor-interconnects\">peripherals\u00a0<\/a>that are conventionally found on microcontrollers and microprocessors normally surround the hard-core processors. These\u00a0peripherals\u00a0include interfaces like serial ports, parallel ports, and Ethernet ports.<\/p>\n<p>Peripherals can also refer to hardware added on a design. For example, attaching a PCAM to the FPGA for computer vision applications.<\/p>\n<p><strong>Hard-core vs. soft-core:<\/strong> A\u00a0hard-core\u00a0processor is a processor that&#8217;s actually physically implemented as a structure in the silicon. Basically, you can add a\u00a0soft-core\u00a0processor to a FPGA-based system after it&#8217;s already designed. However, adding a\u00a0hard-core\u00a0processor requires either a different FPGA, or an additional chip on the board.<\/p>\n<p><strong>FPGA firmware:<\/strong><a href=\"https:\/\/www.fpgarelated.com\/showthread\/comp.arch.fpga\/37835-1.php\"> Though the code deployed on the FPGA<\/a> is sometimes referred to as its firmware, this is a slight misconception. Firmware\u00a0is indeed embedded and dedicated code, but the code is executed.\u00a0FPGA code is written in a description language, then is interpreted, synthesized, and ultimately produces hardware. So, I see it fit to refer to the\u00a0FPGA, when it is configured, as hardware, and to the code itself as a description language.<\/p>\n<p><strong>IP core:<\/strong> An\u00a0IP\u00a0(intellectual property)\u00a0core\u00a0is a block of logic or data that is used in making a field programmable gate array (\u00a0FPGA\u00a0) or application-specific integrated circuit ( ASIC ) for a product. T<span style=\"color: black; font-family: Calibri,Helvetica,sans-serif; font-size: medium;\">hey are reusable\/portable between many different designs.<\/span><\/p>\n<p><strong>FPGA clock:<\/strong> All logic executing within the fabric of an FPGA must be based upon one or more timeframe references more commonly called \u201c<a href=\"https:\/\/www.acromag.com\/white-paper\/app-note-get-the-timing-right-in-critical-fpga-applications\/\">clocks.<\/a>\u201d On the FPGA module, clocks are used to synchronize read\/write operations, synchronize data transmission and capture, control the timing of data processing, and prepare data for storage. For example, it may take some multiple of 8 clock cycles to process and prepare a single 8-bit byte of data for storage in a memory device.<\/p>\n<p><span style=\"color: black; font-family: Calibri,Helvetica,sans-serif; font-size: medium;\"><strong>Synchronous<\/strong>: Typically describing a system that operates on a single clock.<\/span><\/p>\n<p><strong>FPGA architecture:<\/strong><a href=\"https:\/\/www.quora.com\/What-is-FPGA-How-does-that-work\"> FPGA architecture\u00a0<\/a><span style=\"color: black; font-family: Calibri,Helvetica,sans-serif; font-size: medium;\">is how the chip is designed\/structured, rather than the chip itself.<\/span>\u00a0The FPGA Architecture consists of three major components<\/p>\n<ul>\n<li>Programmable logic blocks: Logic blocks can be formed from thousands of transistors to millions of transistors. They implement the logic functions required by the design and consist of logic components such as transistor pairs, look-up tables (LUTs), and Carry and Control Logic (flip flops and multiplexers).<\/li>\n<li>Programmable I\/O blocks: They connect logic blocks with external components via interfacing pins.<\/li>\n<li>Programmable interconnect resources: They are electrically programmable interconnections (pre-laid vertically and horizontally) that provide the routing path for the programmable logic blocks. Routing paths contain wire segments of varying lengths which can be interconnected via electrically programmable switches. The FPGA density depends of the number of segments in use for routing paths.<\/li>\n<\/ul>\n<p>The precise architecture of an FPGA varies from manufacturer to manufacturer.<\/p>\n<h2><strong>Get Started Now<\/strong><\/h2>\n<p>To start, you should purchase any additional course materials you might use and of course a FPGA board. If you are uncertain about which board to buy, stay tuned for next week where we will provide a comprehensive buying guide based upon interests and cost range. We will then get under the hood a bit about how the hardware itself works, so you can make sure that you make the best choice in your purchase. In the meantime, make sure you download Vivado and set up your development environment. Keep in mind that Vivado has simulation tools, so feel free to play around with those while you wait for your hardware!<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-25130 jlk' data-task='like' data-post_id='25130' data-nonce='8896bc70a6' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-25130 lc'>+13<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-25130 jlk' data-task='unlike' data-post_id='25130' data-nonce='8896bc70a6' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-25130 unlc'>-6<\/span><\/a><\/div><\/div> <div class='status-25130 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Take the first steps into getting started with FPGA.<\/p>\n","protected":false},"author":36,"featured_media":25131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[35,1563],"tags":[],"ppma_author":[4485],"class_list":["post-25130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fpga","category-guide"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2018\/07\/feat-e1532367940252.jpg","jetpack_sharing_enabled":true,"authors":[{"term_id":4485,"user_id":36,"is_guest":0,"slug":"mirandamay7","display_name":"Miranda Hansen","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bcab037c32924b9f9b3ca4898e179f2764cb7d9a82aa2bd475170c8aaa884e1c?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/25130","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\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=25130"}],"version-history":[{"count":8,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/25130\/revisions"}],"predecessor-version":[{"id":30782,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/25130\/revisions\/30782"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/25131"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=25130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=25130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=25130"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=25130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}