
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.

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

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.

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:
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.
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.
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)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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 680p | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C15, C16, C17, C18, C19, C20, C21, C22, C25, C26, C27, C28 |
| 8 | 100n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C2, C3, C10, C13, C14, C23, C24 |
| 8 | 2.2k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R9, R10, R11, R12, R13, R14, R15, R16 |
| 5 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R25, R26, R27, R28, R31 |
| 4 | 1.8k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R18, R19, R22, R23 |
| 4 | 10u | Capacitor_SMD:C_0805_2012Metric | C4, C7, C33, C34 |
| 4 | 15k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R17, R20, R21, R24 |
| 4 | 180p | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C29, C30, C31, C32 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 100 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2, R3 |
| 3 | 10n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C5, C8, C9 |
| 3 | 22u | Capacitor_Tantalum_SMD:CP_EIA-3216-10_Kemet-I_HandSolder | C6, C11, C12 |
| 2 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R6, R7 |
| 2 | 50 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R29, R30 |
| 2 | 74LVC2G34 | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U2, U3 |
| 2 | CDBU70 | Diode_SMD:D_0603_1608Metric | D1, D2 |
| 2 | OPA1612AxD | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U7, U8 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R8 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C35 |
| 1 | 33.2k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4 |
| 1 | 7V UNREG | Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_Vertical | J3 |
| 1 | 90.9k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5 |
| 1 | ANALOG PWR | Connector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_Vertical | J4 |
| 1 | AUDIO OUT | Custom:SWITCHCRAFT_PJRAN2X1U01AUX | J5 |
| 1 | CMOD S7 | CustomFootprints:CMOD S7 | U1 |
| 1 | Conn_01x08_Pin | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J2 |
| 1 | I2S_IN | Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical | J1 |
| 1 | LT3045xDD | Package_DFN_QFN:DFN-10-1EP_3x3mm_P0.5mm_EP1.65x2.38mm | U6 |
| 1 | SW_DIP_x08 | Button_Switch_THT:SW_DIP_SPSTx08_Slide_6.7x21.88mm_W7.62mm_P2.54mm_LowProfile | SW1 |
| 1 | TPS7A2050PDBV | Package_TO_SOT_SMD:SOT-23-5 | U4 |
| 1 | TPS7A39 | Package_SON:Texas_S-PVSON-N10_ThermalVias | U5 |

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.

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.


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

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.

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.

ruckusmattster/xtm-led-driver
A HDR LED driver with ESPHome integration focused on driving a 36V 1.4A LED


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

PLAQCHEK/Hardware_Design
circuit simulations, schematics, PCB design files
It measures 81 × 81.3 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask prydin before reusing the design.