Guitar audio effect pedal chain hardware setup

Arty A7 Guitar Effect Chain - Introduction

Introduction It took me a while to come up with worthy content, but here I am. I have been working on getting my FPGA board to sample analog audio with the internal ADC for a project proposed by a colleague as a way to learn the intricacies of digital design. Let me tell you straight: the documentation for the ADC on this Artix 7 device does a great job of being confusing. I’m not ashamed to say that this is the part that took me the longest to figure out, also considering my paranoia about damaging the components with non-compliant voltages. ...

December 27, 2025 · Daniel Blackbeard
Synthesized sine waveform output displayed on an oscilloscope

Sine Synthesis with FPGA

Introduction Last time, we built a circuit together using Verilog to communicate with an I2S device. But we never delved into how to make a waveform for it. Now, don’t get me wrong: if you did the blinky LED example when starting your first projects, this should be easy for you: A square pattern is just zeros and ones A saw pattern is a counter from zero to max A triangle wave is a counter that goes back after hitting max or min values A sine wave is just some CORDIC… Now, we will not be using CORDIC and will not be doing simple counters. I want to show you a couple of tricks to generate a clean sine waveform that you can later compose to create fancier sounds. ...

June 15, 2025 · Daniel Blackbeard
Digilent Arty A7 FPGA connected to analog front-end guitar preamp

Delay Effect Implementation

Introduction While keeping sight of my target when doing this project, there were some components on the Arty that I don’t really know how to use. One of these was the DRAM mounted on the board. Hence, I wanted to implement the most obvious effect that needs some kind of memory of previous samples. Basically, at some point in the chain, the delay will take samples at a rate of 48KHz, store them in a circular buffer in RAM, and set up a read pointer at some distance from the write pointer, such that reading yields back audio from the past. The math for this is quite simple in the end: with a sampling rate of 48KHz, every memory address of distance between read and write adds ~20.8 microseconds of delay. So let’s say I want a delay of up to ~2 seconds — we’ll need 192000 bytes of memory. It’s honestly not even that much when the mounted memory is 1GByte. ...

June 14, 2025 · Daniel Blackbeard
Adafruit I2S stereo DAC breakout board based on UDA1334A

Digital audio with I2S

Introduction As you may know, I’m working on this blog also as a way to log my learning journey. So, to make up for the lack of interesting peripherals on the Arty A7, I bought a set of modules for Arduino. Most of them were quite uninteresting, but I got this I2S DAC module from Adafruit that implements the UDA1334A from NXP (datasheet). This device interests me the most among the ones I got in the assortment, because ever since I was a kid I’ve wanted to make my own guitar effects (in fact, I believe many electronic engineers are born this way, or something similar), so the end goal is quite ambitious as you can see. But let’s start with something easy. ...

June 8, 2025 · Daniel Blackbeard
FTDI USB-to-UART serial interface chip on FPGA development board

UART: the basics after you know the very basics

Introduction So, after you’re done with the book and have implemented your first 8-bit CPU, you keep wondering ok, but now I want to do real-world stuff I’ve got you covered — when it comes to real-world stuff, nothing beats having the capability to send data to and from other devices. When I began my personal projects, right after getting my Arty A7, I thought I’d need to debug what’s happening inside the FPGA in case the internal logic analyzer wasn’t reliable (pro tip: it’s very reliable). So being able to send data to a computer using a simple protocol is a must. ...

May 28, 2025 · Daniel Blackbeard
SystemVerilog hardware description language code snippet

What Is HDL? The explanation you did not request

Introduction If you’re a hardware engineer you need no explanation — this is more for the programmers who try to build things with an FPGA, believing it’s the next step up from Arduino. (I happen to agree, so no judgment here.) As someone who wrote a lot of code in my youth (and still loves fiddling with the Linux kernel), I’m lucky that I understood the purpose of HDL early on. ...

May 27, 2025 · Daniel Blackbeard
Digilent Arty A7 board connected

Blog introduction

Let me be brief, as this is just to fill the emptiness of a newly created blog: I want to learn new skills and take notes that can be shared with people, in the hope that they will find them useful as well. In this blog I have the plan to showcase my personal projects on electronics and perhaps other fields, maybe adding some of the knowledge I have accumulated over the last few years in the field (if it doesn’t break any NDA, of course). ...

May 25, 2025 · Daniel Blackbeard