Picture of a sine waveform

Sine Synthesis with FPGA

Introduction Last time we did together a circuit using verilog to communicate to a 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 while starting your first projects, this can be easily achievable 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 more fancy sounds. ...

June 15, 2025 · Daniel Blackbeard
Picture of some HDL code

Digital audio with I2S

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

June 8, 2025 · Daniel Blackbeard