Skip to the content
4 layers81 × 81.3 mmDac ng, the printed circuit board in 3D

A 1-bit ΔΣ stereo audio DAC implemented on a Xilinx 7-series FPGA (Digilent Cmod S7), driven from an I²S input.

Size
81 × 81.3 mm
Copper layers
4
Thickness
1.6 mm
Parts
86
Nets
78
Pads
302
Tracks, vias
368, 201
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
12 Apr 2026
Updated
18 Oct 2026

Overview

Dac ng is an open-source printed circuit board by prydin, from the prydin/toy-dac repository on GitHub. It is a 4-layer board of 81 × 81.3 mm with 86 parts on 78 nets, routed with 368 tracks and 201 vias.

It is built around the 74LVC2G34GW, TPS7A2050PDBVR and CDBU70. Its parts include 35 capacitors, 31 resistors, 8 ICs, 5 connectors and 2 diodes. It belongs with the audio and music boards of this library.

Main components

3

README

README.md

toy-dac

The current toy-dac hardware: the carrier board connected to a Digilent Cmod S7

toy-dac started as a challenge: make a DAC that could at least produce sound. It has grown well beyond that proof of concept into a working DAC that reproduces music very nicely. The name is a nod to those humble beginnings, not a measure of what the project can do today.

toy-dac signal-chain block diagram

A 1-bit ΔΣ stereo audio DAC implemented on a Xilinx 7-series FPGA (Digilent Cmod S7), driven from an I²S input.

The signal chain is entirely made-from-scratch RTL:

  • I²S receiver with double-flopped synchronizers and AXI-Stream output
  • External audio-family clocks — selects 22.5792 MHz or 24.576 MHz clocks for the 44.1 kHz and 48 kHz families
  • Clock-domain crossing control — isolates housekeeping and sample processing in separate clock domains, synchronizing family changes and coordinating mute, pipeline reset, and clock settling
  • Automatic input rate detection (32 / 44.1 / 48 kHz)
  • Fractional-phase polyphase ASRC — 256 phases × 64 taps × 18-bit coefficients with 16-bit alpha lerp, single time-shared MAC, PI servo on the input ring-buffer fill — resampling onto an output grid at Fsout = sclk / 64 (8× the nominal input rate)
  • 2nd-order CIFB ΔΣ modulator (per channel) with TPDF dither, driving a single-bit differential output pin pair on each channel
  • A small reconstruction filter and analog output stage on the carrier PCB

Internal test sources (silent, DC, 1 kHz DDS sine) and a bypass mode (raw I²S → modulator) are included for bring-up and characterisation.

The current build is surpassing 90 dB SNR. The remaining distortion is mainly the second and third harmonics (H2 and H3), which we believe are related to the DAC's switching output. Extensive listening tests have found it almost on par with commercial DACs, though there is still work to do on the finer details.

Status

First viable version. toy-dac has grown from a proof of concept into a working DAC capable of reproducing music very nicely. It has been exercised on hardware and through extensive listening tests, but is still evolving: the analog board is a hand-routed prototype, the design has not had formal verification, and there is more work to do on measured performance and subjective refinement. Module ports, parameter names, and pinouts may change without notice; treat it as an evolving project rather than drop-in IP.

Repository layout

text
fpga/toy-dac/   Vivado project (RTL under src/rtl, constraints under
                toy-dac.srcs/constrs_1, simulation under toy-dac.srcs/sim_1)
kicad/dac/      KiCad schematic + PCB for the analog carrier board
scripts/        Coefficient generation, simulation helpers, sanity checks
docs/           Block diagrams (top-level + ASRC internals)

Building

Open fpga/toy-dac/toy-dac.xpr in Vivado 2024.2, run synthesis + implementation + bitstream generation, and program the Cmod S7. The target part and pin assignments live in fpga/toy-dac/toy-dac.srcs/constrs_1/new/root.xdc.

Parts

86
QtyValueFootprintReferences
12680pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC15, C16, C17, C18, C19, C20, C21, C22, C25, C26, C27, C28
8100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2, C3, C10, C13, C14, C23, C24
82.2kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR9, R10, R11, R12, R13, R14, R15, R16
51kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR25, R26, R27, R28, R31
41.8kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR18, R19, R22, R23
410uCapacitor_SMD:C_0805_2012MetricC4, C7, C33, C34
415kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR17, R20, R21, R24
4180pCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC29, C30, C31, C32
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
3100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3
310nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5, C8, C9
322uCapacitor_Tantalum_SMD:CP_EIA-3216-10_Kemet-I_HandSolderC6, C11, C12
210kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR6, R7
250Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR29, R30
274LVC2G34Package_TO_SOT_SMD:SOT-363_SC-70-6U2, U3
2CDBU70Diode_SMD:D_0603_1608MetricD1, D2
2OPA1612AxDPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU7, U8
1100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR8
11uCapacitor_SMD:C_0603_1608MetricC35
133.2kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4
17V UNREGConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ3
190.9kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR5
1ANALOG PWRConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ4
1AUDIO OUTCustom:SWITCHCRAFT_PJRAN2X1U01AUXJ5
1CMOD S7CustomFootprints:CMOD S7U1
1Conn_01x08_PinConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ2
1I2S_INConnector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_VerticalJ1
1LT3045xDDPackage_DFN_QFN:DFN-10-1EP_3x3mm_P0.5mm_EP1.65x2.38mmU6
1SW_DIP_x08Button_Switch_THT:SW_DIP_SPSTx08_Slide_6.7x21.88mm_W7.62mm_P2.54mm_LowProfileSW1
1TPS7A2050PDBVPackage_TO_SOT_SMD:SOT-23-5U4
1TPS7A39Package_SON:Texas_S-PVSON-N10_ThermalViasU5

More from prydin/toy-dac

2
  • 4 layers91.4 × 81.3 mmDac, the printed circuit board in 3D

    Dac

    prydin/toy-dac

    A 1-bit ΔΣ stereo audio DAC implemented on a Xilinx 7-series FPGA (Digilent Cmod S7), driven from an I²S input.

    50 parts4
  • 2 layers24.1 × 21 mmClock, the printed circuit board in 3D

    Clock

    prydin/toy-dac

    A 1-bit ΔΣ stereo audio DAC implemented on a Xilinx 7-series FPGA (Digilent Cmod S7), driven from an I²S input.

    7 parts4

Similar boards

  • 4 layers130 × 90 mmPhono adc eval, the printed circuit board in 3D

    Phono adc eval

    birdybro/FPGA_Amp

    FPGA based audiophile phono preamp and amp integrated unit idea. WIP

    139 partsGPL-3.0
  • 4 layersEMG8 Wireless, the printed circuit board in 3D

    EMG8 Wireless

    im-deltax/EMG-Human-Machine-Interface

    Eight-channel EMG PCB research design for assistive human-computer interaction. PCB sources only; hardware and user validation pending.

    159 parts
  • 4 layers65 × 95 mmGse control node, the printed circuit board in 3D

    Gse control node

    Queens-Rocket-Engineering-Team/gse-control-node

    The GSE control node is the control PCB for GSE systems to integrate with launch control. This includes actuator control, fan control, and a load cell reading.

    193 parts
  • 4 layers90 × 60 mmBoard a, the printed circuit board in 3D

    Board a

    ruckusmattster/xtm-led-driver

    A HDR LED driver with ESPHome integration focused on driving a 36V 1.4A LED

    206 partsMIT
  • 2 layers90 × 88.4 mmAdc, the printed circuit board in 3D

    Adc

    zapta/daq

    A modular data acquisition system.

    117 parts1
  • 2 layers191.9 × 88.8 mmControlCircuit, the printed circuit board in 3D

    ControlCircuit

    OisinS13/FC_IP_rig

    Code to control a FC rig based around a Powercell S2 24 cell PEMFC stack

    124 partsGPL-3.0
  • 4 layers46 × 59 mmPlaqchek potentiostat, the printed circuit board in 3D

    Plaqchek potentiostat

    PLAQCHEK/Hardware_Design

    circuit simulations, schematics, PCB design files

    63 parts

Questions

How big is the Dac ng PCB?

It measures 81 × 81.3 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Dac ng use?

86 parts, built around the 74LVC2G34GW, TPS7A2050PDBVR and CDBU70. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Dac ng KiCad files?

From the prydin/toy-dac repository on GitHub, at the commit this page was made from: the board is kicad/dac-ng/dac-ng.kicad_pcb and its schematic kicad/dac-ng/clock/clock.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Dac ng design in my own project?

Its repository states no licence, so its author keeps all rights: ask prydin before reusing the design.