{"id":30484,"date":"2024-02-22T13:50:14","date_gmt":"2024-02-22T21:50:14","guid":{"rendered":"https:\/\/digilent.com\/blog\/?p=30484"},"modified":"2024-02-22T16:46:38","modified_gmt":"2024-02-23T00:46:38","slug":"rapid-trigger-buffering-with-deep-memory-support","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/","title":{"rendered":"Rapid Trigger Buffering with Deep Memory Support"},"content":{"rendered":"<p><span data-contrast=\"auto\">Acquiring voltage signal data during tests is essential, particularly after investing substantial time and resources in the testing process.\u00a0 It&#8217;s imperative to preserve this test data to prevent loss and ensure that no significant events are overlooked.\u00a0 To quote an iconic fictional character &#8220;Life moves pretty fast; if you don&#8217;t stop and look around once in a while, you could miss it!&#8221;\u00a0 How can unforeseen events be captured while sampling at high signal rates, enabling subsequent analysis of the data surrounding each triggered event?\u00a0 Digilent\u2019s Analog Discovery Pro (ADP2230) can capture data samples from thousands of rapidly triggered events to buffers in the on-device memory, up to a total of 128 MS per channel.\u00a0 Capturing only specific events, as opposed to capturing continuously, reduces the amount of data transferred over USB to buffers on a host for analysis.\u00a0 Post acquisition, users can scan each data buffer for the triggered event.\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Memory segmentation is the process of allocating blocks of memory for triggered events, so only a set amount of data per specific event is captured into the on-device memory.\u00a0 Using WaveForms\u2019 Oscilloscope, Logic, and Spectrum instruments, the ADP2230 supports device buffering (memory segmentation), at sampling rates up to 100 MHz, allowing for rapid triggers with blind times as low as ~2 \u03bcs between acquisitions.\u00a0 In other words, a minimum time delay or rearm time between two triggered buffers is ~2 \u03bcs.\u00a0 (The Analog Discovery Pro 3000-series and Eclypse Z7 support a blind time &lt;1 \u03bcs.)\u00a0 These Test &amp; Measurement devices contain on-device DDR memory which can be split into multiple segments (memory segmentation) and the device is configured so that it can rearm itself, enabling consecutive triggers to occur rapidly without requiring USB communication from a software application each time.\u00a0 This design allows for high-speed data capture where users can focus on triggered sections of an input signal.\u00a0 Since only triggered data is recorded, the device transmits a smaller volume of data via USB to WaveForms running on the host system for processing. This approach mitigates bottlenecks in comparison to continuous acquisition without triggering.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Traditionally, when attempting to retrigger an acquisition, data is captured by the device and then sent to the host system for the software application to instruct the device to rearm itself for the next capture. The time taken for the application to communicate with the data acquisition device via USB results in a delay potentially 10s of milliseconds or more between captures, resulting in missed trigger events.\u00a0 With device buffering, the memory is divided into multiple segments for capturing data, with a dedicated section reserved for the capture information table. This configuration enables the device to execute multiple captures by utilizing the memory segments as a First-In-First-Out (FIFO) mechanism. The software reads the captures sequentially, freeing up memory for reuse in subsequent captures.\u00a0 The deep memory on-device aids to capture triggered data buffers at faster sampling rates, while displaying the data on the host system. Improved rearm time (low latency captures)\u00a0is the main benefit of the device buffering.\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Dependence on device buffering alone doesn&#8217;t guarantee the ability to analyze significantly more acquisitions than usual. It&#8217;s still necessary to visually inspect the screen or navigate through previous acquisitions to ensure nothing is overlooked. Additionally, because measurements are conducted in software, rapid triggering doesn&#8217;t provide the capability to selectively collect pulse heights while discarding unnecessary acquired data.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n<h2><b><span data-contrast=\"auto\">Configuring WaveForms for Device Buffering with an ADP2230<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">In order to use device buffering with an ADP2230, either the third or fourth memory configuration option (using DDR-RAM) must be selected via the WaveForms\u2019 Device Manager window.\u00a0 The BRAM option does not have enough deep memory to support device buffering for rapid triggers.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<figure id=\"attachment_30485\" aria-describedby=\"caption-attachment-30485\" style=\"width: 542px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-manager.png\" alt=\"\" width=\"542\" height=\"376\" class=\"wp-image-30485 size-full\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-manager.png 542w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-manager-135x93.png 135w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><figcaption id=\"caption-attachment-30485\" class=\"wp-caption-text\"><em>Figure 1: Memory Configuration Option in WaveForms Device Manager\u00a0<\/em><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><span data-contrast=\"auto\">Using the Scope instrument\u2019s Control toolbar, a user can enable Device Buffering, specify the number of buffers to be stored on the host system (up to 10,000 in a circular array), and set the acquisition to a continuous run or to stop when the specified buffers or limit number of captures are collected.\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<figure id=\"attachment_30486\" aria-describedby=\"caption-attachment-30486\" style=\"width: 330px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/device-buffering\/\" rel=\"attachment wp-att-30486\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering.png\" alt=\"\" width=\"330\" height=\"298\" class=\"wp-image-30486 size-full\" \/><\/a><figcaption id=\"caption-attachment-30486\" class=\"wp-caption-text\"><em>Figure 2: Device Buffering menu in the Scope instrument\u00a0<\/em><\/figcaption><\/figure>\n<p><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\"> <\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\"><\/span><span data-contrast=\"auto\">The buffer samples size is set by the user in WaveForms\u2019 Time group window.\u00a0 The number of device buffers (segmented blocks in DDR) is determined by the \u2018Scope capture memory \/ specified Time-Samples \/ Enabled device channels\u2019 and\u00a0is shown above the main plot\u00a0in the time header as <\/span><i><span data-contrast=\"auto\">DevBuf: used\/total<\/span><\/i><span data-contrast=\"auto\">, with a maximum count\u00a0of 32,768.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<figure id=\"attachment_30487\" aria-describedby=\"caption-attachment-30487\" style=\"width: 600px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/device-buffers\/\" rel=\"attachment wp-att-30487\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffers-600x231.png\" alt=\"\" width=\"600\" height=\"231\" class=\"wp-image-30487 size-medium\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffers-600x231.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffers-1024x395.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffers.png 1266w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-30487\" class=\"wp-caption-text\"><em>Figure 3:\u00a0 Buffer samples size and total number of buffers<\/em><\/figcaption><\/figure>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><span data-contrast=\"auto\">The trigger option within the Control toolbar can be set up to activate based on the source channel, signal condition, and signal level. Data is stored in buffers according to triggered events.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<figure id=\"attachment_30488\" aria-describedby=\"caption-attachment-30488\" style=\"width: 600px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/trigger-settings\/\" rel=\"attachment wp-att-30488\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/trigger-settings-600x24.png\" alt=\"\" width=\"600\" height=\"24\" class=\"wp-image-30488 size-medium\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/trigger-settings-600x24.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/trigger-settings.png 713w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-30488\" class=\"wp-caption-text\"><em>Figure 4: Scope\u2019s Trigger Settings<\/em><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><span data-contrast=\"auto\">With Device Buffering, the blind time extends only by a few microseconds beyond each acquired buffer duration.\u00a0 The variance in capture timestamps indicated in the plot headers below demonstrates the delay between captured buffers.\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_30489\" aria-describedby=\"caption-attachment-30489\" style=\"width: 600px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/device-buffering-num38\/\" rel=\"attachment wp-att-30489\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering-num38-600x393.png\" alt=\"\" width=\"600\" height=\"393\" class=\"wp-image-30489 size-medium\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering-num38-600x393.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering-num38.png 753w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-30489\" class=\"wp-caption-text\"><em>Figure 5: Buffer 38 was captured at 172.339.470 milliseconds\u00a0<\/em><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_30490\" aria-describedby=\"caption-attachment-30490\" style=\"width: 600px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/device-buffering-num39\/\" rel=\"attachment wp-att-30490\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering-num39-600x394.png\" alt=\"\" width=\"600\" height=\"394\" class=\"wp-image-30490 size-medium\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering-num39-600x394.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/device-buffering-num39.png 789w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-30490\" class=\"wp-caption-text\"><em>Figure 6:\u00a0 Buffer 39 was captured at 172.669.470 milliseconds\u00a0<\/em><\/figcaption><\/figure>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The Persistence view specifically overlays all received buffers in the WaveForms software, creating a heatmap illustrating the typical movement of a signal relative to the trigger. This view proves handy for spotting glitches or capturing a rare event amidst a series of typical occurrences. The regions with the highest density appear red (hot), whereas those with the lowest density appear blue (cold). <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/persistence-buffering\/\" rel=\"attachment wp-att-30491\" style=\"font-weight: bold; background-color: white; font-size: 1rem;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/persistence-buffering-600x427.png\" alt=\"\" width=\"600\" height=\"427\" class=\"wp-image-30491 size-medium\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/persistence-buffering-600x427.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/persistence-buffering.png 1024w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><em>Figure 7: The Persistence view of\u00a020 buffered acquisitions.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><span data-contrast=\"auto\">The Measurements view can be used with multiple buffers and enables various types of post-processing on acquired data, such as identifying the minimum or maximum measured voltage without the need to manually inspect each individual capture.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/rapid-trigger-buffering-with-deep-memory-support\/bufferingmeasurements\/\" rel=\"attachment wp-att-30493\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/bufferingmeasurements-600x427.png\" alt=\"\" width=\"600\" height=\"427\" class=\"alignnone size-medium wp-image-30493\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/bufferingmeasurements-600x427.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/bufferingmeasurements.png 1024w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p><span data-contrast=\"auto\">Figure 8: Identifying min\/max peaks\u00a0across multiple buffers.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h2><b><span data-contrast=\"auto\">Conclusion<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Digilent Test and Measurement devices, such as the ADP2230, ADP3250, ADP3450, and Eclypse Z7, have more on-device memory to capture triggered data buffers at faster sampling rates, while displaying the data on the host\u00a0<span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\" dir=\"ltr\">system. The\u00a0&#8220;Device Buffering&#8221; feature&#8217;s main benefit is reducing blind time and improving rearm time, which is enabled by the ability of devices that support it to store buffers in hardware. <\/span>Without this feature, you would lose trigger events while the capture is transferred, potentially 10s of milliseconds or more worth of data between captures, depending on the capture size, USB bandwidth, and host system resources.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">This feature proves useful when searching for uncommon occurrences within a received signal. It allows you to conduct numerous standard acquisitions and subsequently review them to identify anomalies. Moreover, it facilitates the accumulation of data regarding the consistent performance of your circuit during multiple test iterations, helping you determine whether your circuit exhibits consistent behavior across multiple tests.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In essence, the key point is that device buffering caters mainly to users deeply concerned with rearm time. While multiple acquisitions and software buffers have broader utility, serving purposes like persistence, measurements, and revisiting previous signal acquisitions, device buffering isn\u2019t indispensable for these functionalities. That said, for users interested in these features, rearm time can be a key concern and, when it crops up, device buffering solves these issues.<\/span><\/p>\n<p><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\" dir=\"ltr\">You can check out WaveForms support for the ADP2230 by downloading the latest WaveForms beta release, available in <strong><a href=\"https:\/\/forum.digilent.com\/topic\/8908-waveforms-beta-download\/\"><u>this thread<\/u><\/a><\/strong> on the Digilent Forum<\/span><\/span><\/p>\n<p><span data-contrast=\"auto\">For additional information regarding the ADP2230, visit its <a href=\"https:\/\/digilent.com\/reference\/test-and-measurement\/analog-discovery-pro-2230\/start\"><strong>resource page.<\/strong>\u00a0<\/a><\/span><\/p>\n<p><span data-contrast=\"auto\">For additional information regarding multiple acquisitions in WaveForms, reference the <\/span><a href=\"https:\/\/digilent.com\/reference\/test-and-measurement\/guides\/waveforms-buffers\"><b><span data-contrast=\"auto\">Working with Multiple Acquisition Buffers in WaveForms<\/span><\/b><\/a><span data-contrast=\"auto\"> guide.\u00a0<\/span><\/p>\n<p>&nbsp;<\/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-30484 jlk' data-task='like' data-post_id='30484' data-nonce='ac068a413b' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-30484 lc'>+1<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-30484 jlk' data-task='unlike' data-post_id='30484' data-nonce='ac068a413b' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-30484 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-30484 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Acquiring voltage signal data during tests is essential, particularly after investing substantial time and resources in the testing process.\u00a0 It&#8217;s imperative to preserve this test data to prevent loss and &hellip; <\/p>\n","protected":false},"author":67,"featured_media":30507,"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":[4325,20],"tags":[4634,4372,4633,4439,4632,4628,4635,4630,4631,156,4636,4629],"ppma_author":[4509],"class_list":["post-30484","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-debug-validation-test","category-products","tag-4634","tag-adp","tag-adp2230","tag-analog-discovery-pro","tag-ddr","tag-deep-memory","tag-launch","tag-memory-depth","tag-memory-segmentation","tag-new-product-2","tag-rapid-trigger","tag-timebases"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2024\/02\/2024-Feb-Newsletter-DeepMemory-580x300-1.png","jetpack_sharing_enabled":true,"authors":[{"term_id":4509,"user_id":67,"is_guest":0,"slug":"fsoares","display_name":"Fausto Soares","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/2ce2401bdab8a64942e241cf101e69e71e31ede6f7cfadb830297b9f4c10dd51?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\/30484","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\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=30484"}],"version-history":[{"count":11,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/30484\/revisions"}],"predecessor-version":[{"id":30505,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/30484\/revisions\/30505"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/30507"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=30484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=30484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=30484"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=30484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}