<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Vivado on Yodalee Note</title>
    <link>https://yodalee.me/en/tags/vivado/</link>
    <description>Recent content in Vivado on Yodalee Note</description>
    <image>
      <title>Yodalee Note</title>
      <url>https://yodalee.me/android-chrome-512x512.png</url>
      <link>https://yodalee.me/android-chrome-512x512.png</link>
    </image>
    <generator>Hugo -- 0.163.1</generator>
    <language>en</language>
    <lastBuildDate>Sun, 31 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://yodalee.me/en/tags/vivado/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Vivado Best Practices in Automation</title>
      <link>https://yodalee.me/en/2026/05/vivadoautomation/</link>
      <pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate>
      <guid>https://yodalee.me/en/2026/05/vivadoautomation/</guid>
      <description>&lt;p&gt;First of all, &lt;strong&gt;I don&#39;t know&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is inherently a difficult topic. Vivado was not originally designed for automation (at least it doesn&#39;t seem like it). Its GUI and integrated Vivado project storage environment certainly provide a lot of functionality. However, in practice, it is strongly discouraged to include the entire Vivado generated project files into version control, as even slight changes can disrupt the version control system, making Vivado projects a pain point in automation and version management.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Xilinx Development Board: Connecting Interrupt</title>
      <link>https://yodalee.me/en/2026/05/pynqz2_interrupt/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
      <guid>https://yodalee.me/en/2026/05/pynqz2_interrupt/</guid>
      <description>&lt;p&gt;The story goes like this. Generally speaking, in the workflow of IP, we use AXI Lite to write into the register to instruct the IP to start working. So, how do we know when the IP has completed its work?&lt;/p&gt;
&lt;p&gt;The simplest method is to map the IP status to a register and have the driver continuously &lt;strong&gt;harass&lt;/strong&gt; &lt;del&gt;poll&lt;/del&gt; this register. This technique is called busy polling — it&#39;s simple and crude, but the downside is that the driver gets stuck here and can&#39;t do anything else.
Another method is that the IP issues an interrupt when it completes its task. Once the processor receives this interrupt, it signals the driver to handle the IP&#39;s post-processing tasks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Xilinx Development Board: Connecting Writing DMA</title>
      <link>https://yodalee.me/en/2026/05/pynqz2_writedma/</link>
      <pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate>
      <guid>https://yodalee.me/en/2026/05/pynqz2_writedma/</guid>
      <description>&lt;p&gt;In the &lt;a href=&#34;https://yodalee.me/en/2026/05/pynqz2_readdma/&#34;&gt;previous chapter&lt;/a&gt;
, we looked at how to read data from memory and provide it to the IP module. This time we will do the opposite, sending data from the IP module to memory.
A lot of things are similar to reading, so we will skip much of the DMA-related introduction, making it somewhat simpler.&lt;/p&gt;
&lt;h1 id=&#34;test-module&#34;&gt;Test Module&lt;/h1&gt;
&lt;p&gt;We will implement a module that only streams data in one direction for writing. The implemented module is as follows:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Xilinx Development Board: Connect and Read DMA</title>
      <link>https://yodalee.me/en/2026/05/pynqz2_readdma/</link>
      <pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate>
      <guid>https://yodalee.me/en/2026/05/pynqz2_readdma/</guid>
      <description>&lt;p&gt;In the previous article, we saw how to connect the AHB bus. In this article, let&#39;s take a look at AXI stream.
If you have seen the usage of the AXI Lite interface, it helps convert AXI reading and writing into internal registers. However, each read and write is a time-consuming process. When there is a large amount of data that needs reading and writing, using AXI Lite and opening up hundreds of registers in the read and write space is very inefficient, making it difficult to efficiently send data to or from the IP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Xilinx Development Board: Connecting AHB</title>
      <link>https://yodalee.me/en/2026/04/pynqz2_ahb/</link>
      <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://yodalee.me/en/2026/04/pynqz2_ahb/</guid>
      <description>&lt;p&gt;In the previous article, we built a SoC on PynqZ2 and were able to control it using the AXI Lite interface. However, using AXI in reality is relatively luxurious; simpler implementations typically use simpler APB or AHB buses. In this article, we will explain how to implement and connect an AHB IP and allow the PS side to access it.&lt;/p&gt;
&lt;h1 id=&#34;packing-ahb-ip&#34;&gt;Packing AHB IP&lt;/h1&gt;
&lt;h2 id=&#34;implementing-a-readable-and-writable-ahb-module&#34;&gt;Implementing a Readable and Writable AHB Module&lt;/h2&gt;
&lt;p&gt;The module we demonstrate is a simple AHB without any address. Any write will be stored in the register, and reading will return the bit-inverted result. In this era, this kind of module can just be written with the help of AI. Below is the prompt and its reply:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Xilinx Development Board: Connecting AXI Lite</title>
      <link>https://yodalee.me/en/2026/04/pynqz2_axilite/</link>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://yodalee.me/en/2026/04/pynqz2_axilite/</guid>
      <description>&lt;p&gt;The story goes like this, as previously mentioned my strong classmate gave me some articles related to Pynq AHB. Recently, after finishing a busy phase of work, I started revising the draft again and found that the article seemed a bit dry, so I decided to expand on it.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
