DAC, PWM and sigma-delta

Sigma-delta/PWM/PDM DACs and external DAC interfaces.

Core Repository Language License FPGA Used by
Sigma-delta PCM audio DAC (fpga-dac) ★ machdyne__fpga-dac Verilog 1-clause BSD-like ECP5 0
PDM audio DAC (hadbadge2019 soc/audio) spritetm__hadbadge2019_fpgasoc Verilog BSD-3-Clause any 0
Resistor+PWM hybrid DAC (dacpwm) emard__ulx3s-misc Verilog, VHDL none found any 7
Sigma-delta DAC (synthowheel) emard__synthowheel VHDL BSD (LICENSE.txt: AUTHOR=EMARD LICENSE=BSD) any 3
Sigma-delta DAC (up5k-demos) daveshah1__up5k-demos Verilog none found iCE40 UP5K 16

Cores

Sigma-delta PCM audio DAC (fpga-dac) (best)

First-order sigma-delta stereo audio DAC that streams 48kHz 16-bit signed PCM from SPI flash; simple phase accumulator, no vendor primitives in audio.v itself.

   
Repository machdyne__fpga-dac: Machdyne Konfekt/Lakritz/Noir: experimental sigma-delta PCM audio DAC/player that streams 48kHz 16-bit stereo…
Files rtl/audio.v
Top module audio
Language Verilog
License 1-clause BSD-like (LICENSE.md, Lone Dynamics Corporation)
FPGA / primitives ECP5: none (portable)
Tests none found

On ULX3S: Self-contained modulator (l_pwm_acc/r_pwm_acc); reuse just the sigma-delta block and drive it from any PCM source (SDRAM, ESP32, etc.) instead of SPI flash. rtl/pll.v is board-specific and needs re-deriving for 25 MHz ULX3S input.

PDM audio DAC (hadbadge2019 soc/audio)

First-order pulse-density-modulation DAC core with dither, used for the hadbadge2019 SoC’s audio synth output.

   
Repository spritetm__hadbadge2019_fpgasoc: Hackaday Supercon 2019 badge: ECP5 SoC
Files soc/audio/pdm.v
Top module pdm
Language Verilog
License BSD-3-Clause (in-file header, LICENSE.bsd, Sylvain Munaut 2019)
FPGA / primitives any: none (portable)
Tests none found

On ULX3S: Pairs well with soc/audio/synth_core.v in the same repo; plain Verilog, no ECP5-specific primitives.

Full review: spritetm__hadbadge2019_fpgasoc.

Resistor+PWM hybrid DAC (dacpwm)

Combines a coarse resistor-ladder DAC (upper bits) with a PWM output (lower bits) to raise effective DAC resolution from a small pin count.

   
Repository emard__ulx3s-misc: ULX3S misc/advanced examples: EMARD’s building-block library
Files examples/audio/hdl/dacpwm.v, examples/audio/hdl/dacpwm_vhdl.vhd
Top module dacpwm
Language Verilog, VHDL
License none found (no header in file; repo has no LICENSE file)
FPGA / primitives any: none (portable)
Tests waveform-only (examples/audio/testbench/sinewave.c is a plain C reference model, not a Verilog tb)

On ULX3S: Parametric C_pcm_bits/C_dac_bits; used in the ULX3S audio example (examples/audio/hdl/top_audio.v) with 25 MHz clock.

Full review: emard__ulx3s-misc.

Used by 7 other catalogued repos (file copies or module instances found by scan_core_usage.py; heuristic):

Sigma-delta DAC (synthowheel)

Standalone sigma-delta modulator used to drive the audio output of the synthowheel ULX3S synth project.

   
Repository emard__synthowheel: Synthowheel: polyphonic additive synth, 128 gen x 9 harmonics, SPDIF + sigma-delta
Files sigmadelta.vhd
Top module sigmadelta
Language VHDL
License BSD (LICENSE.txt: AUTHOR=EMARD LICENSE=BSD)
FPGA / primitives any: none (portable)
Tests none found

On ULX3S: Pairs with synth.vhd in the same repo; single-bit output suitable for a simple RC lowpass to line-out.

Used by 3 other catalogued repos (file copies or module instances found by scan_core_usage.py; heuristic):

Sigma-delta DAC (up5k-demos)

Tiny parametric-width sigma-delta DAC (delta/sigma adder pair) used for the NES APU audio output.

   
Repository daveshah1__up5k-demos: UPduino: UP5K demos - a buildable port of the MiST NES core to iCE40 UltraPlus
Files nes/sigma_delta_dac.v
Top module sigma_delta_dac
Language Verilog
License none found (repo has no LICENSE/COPYING file; nes.v claims GPL but no license text present)
FPGA / primitives iCE40 UP5K: none (portable)
Tests none found

On ULX3S: Plain Verilog, no SB_* primitives; drops onto ECP5 unchanged, only the surrounding NES top-level is iCE40-specific.

Used by 16 other catalogued repos (file copies or module instances found by scan_core_usage.py; heuristic):

Other catalogued projects

Catalogued repos tagged audio-dac (63), dac (1) are listed in the full catalogue.


Back to top

Generated from the JSON in data/ by the scripts in .claude/skills. Facts cite the upstream file at the reviewed commit; verify before reuse.

This site uses Just the Docs, a documentation theme for Jekyll.