<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Digilent on 0xMax42 - Flatfile purist. Autodidact. Systems thinker.</title><link>https://0xMax42.io/en/tags/digilent/</link><description>Recent content in Digilent on 0xMax42 - Flatfile purist. Autodidact. Systems thinker.</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 24 Apr 2025 09:16:09 +0000</lastBuildDate><atom:link href="https://0xMax42.io/en/tags/digilent/index.xml" rel="self" type="application/rss+xml"/><item><title>PyDEPP: Python Meets FPGA</title><link>https://0xMax42.io/en/p/pydepp-python-meets-fpga/</link><pubDate>Thu, 24 Apr 2025 09:16:09 +0000</pubDate><guid>https://0xMax42.io/en/p/pydepp-python-meets-fpga/</guid><description>&lt;img src="https://0xMax42.io/p/pydepp-python-trifft-fpga/cover.webp" alt="Featured image of post PyDEPP: Python Meets FPGA" /&gt;&lt;p&gt;I&amp;rsquo;ve released a new open-source project: &lt;a class="link" href="https://github.com/0xMax42/pydepp" target="_blank" rel="noopener"
&gt;PyDEPP&lt;/a&gt; – a Python library for communicating with Digilent FPGA boards via the DEPP protocol. The goal was to create a modern, object-oriented interface for accessing registers, data streams, and debugging functions, built directly on top of Digilent&amp;rsquo;s &lt;a class="link" href="https://digilent.com/reference/software/adept/start" target="_blank" rel="noopener"
&gt;Adept SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why this project?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Digilent&amp;rsquo;s DEPP protocol is powerful, but its native interface is rather clunky. If you&amp;rsquo;ve ever worked with the C APIs, you know it could be more elegant. PyDEPP abstracts this complexity and brings register and stream access to Python-level simplicity – including context management via &lt;code&gt;with&lt;/code&gt;, flexible timeout control, and debug dumps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;get_reg()&lt;/code&gt; / &lt;code&gt;set_reg()&lt;/code&gt; – easy register access&lt;/li&gt;
&lt;li&gt;&lt;code&gt;put_stream()&lt;/code&gt; / &lt;code&gt;get_stream()&lt;/code&gt; – efficient data transfer&lt;/li&gt;
&lt;li&gt;Customizable timeouts&lt;/li&gt;
&lt;li&gt;Context manager for clean resource handling&lt;/li&gt;
&lt;li&gt;Register dumps for debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The library is fully open source and MIT licensed. If you&amp;rsquo;re into Python-based hardware communication, this is for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tested with:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Digilent Nexys2 FPGA board&lt;/li&gt;
&lt;li&gt;Python 3.11 on Debian&lt;/li&gt;
&lt;li&gt;Shared libraries: &lt;code&gt;libdmgr.so&lt;/code&gt;, &lt;code&gt;libdepp.so&lt;/code&gt; from the Adept SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;➡️ If you&amp;rsquo;re interested in embedded development with Python or want to make better use of the DEPP interface, you&amp;rsquo;re welcome to &lt;a class="link" href="https://github.com/0xMax42/pydepp" target="_blank" rel="noopener"
&gt;join in&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>