
PmodDAC
schilkp/PmodADC
A fully discrete 14bit, 41kHz, FPGA-controlled Successive-Approximation Audio ADC and R2R Audio DAC.

A fully discrete 14bit, 41kHz, FPGA-controlled Successive-Approximation Audio ADC and R2R Audio DAC.
PmodADC is an open-source printed circuit board by schilkp, from the schilkp/PmodADC repository on GitHub, published under the MIT licence. It is a 4-layer board of 28.6 × 80.6 mm with 137 parts on 115 nets, routed with 997 tracks and 130 vias.
It is built around the 74AHCV541ABQX, SN74LVC1G17DCK and OPA1602AID, with the TLV61046ADBV, LDK320AM-R and TPS63700DRC among its other parts. Its parts include 51 resistors, 43 capacitors, 15 ICs, 4 connectors and 2 inductors. It belongs with the audio and music boards of this library.
A fully discrete 14bit, 41kHz, Successive-Approximation Audio ADC and 14bit 41kHz R2R Audio DAC controlled by an iCEBreaker FPGA board.

These are a few demonstrations of the PmodADC and PmodDAC.
For each song, there are 3 files provided:
- The original (mono) wav file
- The song played back via a phone and recorded on the PmodADC
- The song played via the PmodDAC and recorded with a Focusrite Saffire Pro 40 Interface.
Note that all audio files are provided at 44.1kHz to allow for easier playback:
The PmodADC demos were played back at 44.1kHz and upsampled from 41kHz after recording.
The PmodDAC demos were downsampled to 41kHz for playback, and recorded at 44.1kHz.
All music by Kevin MacLeod, see Music Attribution below.
The wav files can be found here, or via the Soundcloud links below:
| Song | Original | PmodADC Demo | PmodDAC Demo |
|---|---|---|---|
| New Hero in Town | here | here | here |
| Protofunk | here | here | here |
| Whiskey on the Mississippi | here | here | here |
| The Parting | here | here | here |
Alternatively, a single website with all the above audio files can be found here.
A guide to setting up the open-source apio tool-chain can be found here.
This project requires some hardware modifications to the iCEbreaker board. See here for details.
The Python/Matlab scripts to play and record audio require some drivers and setup. See here for details.
Two versions of the Verilog Code are provided:
- Setup 1, which immediately plays back the audio recorded by the PmodADC via the PmodDAC.
- Setup 2, which allows the PmodADC and PmodDAC to send/receive audio via USB.
See here for details.
The easiest way to record and play music is using the two python utilities provided here.
They rely on numpy, pyserial, wavio, and scipy:
> pip install -r requirements.txtThey have only been tested under python3.
Record music to a wav file using the PmodADC.
By default the audio is resampled to 44.1kHz.
Usage:
usage: Record.py [-h] (-s S | -n N | -i) [-r] comport outfile
positional arguments:
comport The COM port to which the board is connected.
outfile The filename under which the recorded audio should be saved.
optional arguments:
-h, --help show this help message and exit
-s S The number of seconds that should be recorded.
-n N The number of samples that should be recorded.
-i Recorded until a Keyboard Interrupt is received.
-r Do not re-sample audio to 44.1khz.Record 10 seconds of audio from COM8 and save it to recording.wav:
python3 Record.py COM8 recording.wav -s 10Play a wav file via the PmodDAC.
By default the wav file is resampled to 41kHz (if necessary).
Usage:
usage: Play.py [-h] [-L | -R] [-r] comport wavfile
positional arguments:
comport The COM port to which the board is connected.
wavfile The filename of the audio file.
optional arguments:
-h, --help show this help message and exit
-L Play the left audio channel.
-R Play the right audio channel.
-r Do not re-sample audio to 41kHz.Play the left channel of some_audio_file.wav via COM8:
python3 Play.py COM8 some_audio_file.wav -LMatlab functions to communicate with the PmodADC/PmodDAC are also provided.
See Scripts/MATLAB/RecordAudioExample.m and Scripts/MATALB/PlayAudioExample.m
Protofunk by Kevin MacLeod
Link: https://incompetech.filmmusic.io/song/4247-protofunk
License: http://creativecommons.org/licenses/by/4.0/
Whiskey on the Mississippi by Kevin MacLeod
Link: https://incompetech.filmmusic.io/song/4624-whiskey-on-the-mississippi
License: http://creativecommons.org/licenses/by/4.0/
New Hero In Town by Kevin MacLeod
Link: https://incompetech.filmmusic.io/song/5742-new-hero-in-town
License: http://creativecommons.org/licenses/by/4.0/
The Parting by Kevin MacLeod
Link: https://incompetech.filmmusic.io/song/4501-the-parting
License: http://creativecommons.org/licenses/by/4.0/ | Qty | Value | Footprint | References |
|---|---|---|---|
| 15 | 0u1 | Capacitor_SMD:C_0402_1005Metric | C3, C7, C9, C10, C15, C21, C22, C31, C33, C35, C36, C40, C43, C44, C46 |
| 15 | 20K 0.1% | Resistor_SMD:R_0402_1005Metric | R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R71, R72 |
| 13 | 10K 0.1% | Resistor_SMD:R_0402_1005Metric | R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32, R73, R74 |
| 12 | 1u | Capacitor_SMD:C_0402_1005Metric | C6, C12, C13, C14, C19, C25, C28, C29, C30, C32, C38, C45 |
| 7 | 10u | Capacitor_SMD:C_1206_3216Metric | C2, C8, C11, C17, C18, C20, C27 |
| 5 | 1K/100MHz | Inductor_SMD:L_0402_1005Metric | FB1, FB2, FB3, FB4, FB5 |
| 3 | 100R | Resistor_SMD:R_0402_1005Metric | R7, R67, R68 |
| 3 | 15k | Resistor_SMD:R_0402_1005Metric | R33, R35, R36 |
| 3 | disc | Resistor_SMD:R_0402_1005Metric | JP2, JP3, JP4 |
| 2 | 10u | Capacitor_THT:CP_Radial_D4.0mm_P1.50mm | C16, C26 |
| 2 | 1K | Potentiometer_SMD:Potentiometer_Bourns_TC33X_Vertical | RV1, RV2 |
| 2 | 1k2 | Resistor_SMD:R_0402_1005Metric | R41, R42 |
| 2 | 20k | Resistor_SMD:R_0402_1005Metric | R43, R44 |
| 2 | 22uH, 300mA | Inductor_SMD:L_Wuerth_MAPI-3020 | L1, L2 |
| 2 | 47k | Resistor_SMD:R_0402_1005Metric | R34, R37 |
| 2 | 74AHCV541ABQ | SOT764-1_DHVQFN20:SOT764-1_DHVQFN20 | U5, U6 |
| 2 | 74VHC595BQ,115 | SOT763-1_DHVQFN16:SOT763-1_DHVQFN16 | U1, U2 |
| 2 | IN | TestPoint:TestPoint_Pad_D1.0mm | TP3, TP6 |
| 2 | LDK320AM-R | Package_TO_SOT_SMD:SOT-23-5 | U8, U9 |
| 1 | 0u22 | Capacitor_SMD:C_0402_1005Metric | C5 |
| 1 | 100k | Resistor_SMD:R_0402_1005Metric | R8 |
| 1 | 10R | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | 10k | Resistor_SMD:R_0402_1005Metric | R38 |
| 1 | 10n C0G | Capacitor_SMD:C_0603_1608Metric | C23 |
| 1 | 10nF C0G | Capacitor_SMD:C_0603_1608Metric | C34 |
| 1 | 120k | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 33k | Resistor_SMD:R_0402_1005Metric | R6 |
| 1 | 4n7 | Capacitor_SMD:C_0402_1005Metric | C4 |
| 1 | 4n7 C0G | Capacitor_SMD:C_0603_1608Metric | C24 |
| 1 | 4u7 | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | 50k Log | Potentiometer_THT:Potentiometer_Alps_RK09L_Single_Vertical | R40 |
| 1 | 560k | Resistor_SMD:R_0402_1005Metric | R5 |
| 1 | 5k | Resistor_SMD:R_0402_1005Metric | R39 |
| 1 | 5k6 | Resistor_SMD:R_0402_1005Metric | R4 |
| 1 | 68k | Resistor_SMD:R_0402_1005Metric | R3 |
| 1 | 74AHCT541BQ,115 | SOT764-1_DHVQFN20:SOT764-1_DHVQFN20 | U20 |
| 1 | 820R | Resistor_SMD:R_0402_1005Metric | R65 |
| 1 | AudioIn | Jack_3.5mm_PJ-313D-6A:PJ-313D-6A | J4 |
| 1 | AudioIn | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J1 |
| 1 | DAC | TestPoint:TestPoint_Pad_D1.0mm | TP5 |
| 1 | DI | Resistor_SMD:R_0402_1005Metric | JP5 |
| 1 | DNS | Resistor_SMD:R_0402_1005Metric | JP8 |
| 1 | DNS | Capacitor_SMD:C_0402_1005Metric | C37 |
| 1 | Jumper | Resistor_SMD:R_0402_1005Metric | JP7 |
| 1 | LF398_SOIC8 | Package_SO:SO-8_3.9x4.9mm_P1.27mm | U16 |
| 1 | LT1711xMS8 | Package_SO:MSOP-8_3x3mm_P0.65mm | U13 |
| 1 | LeaderTech SMS405 | Leader_SMS405:Leader_SMS405 | J2 |
| 1 | MIC5270BM5 | Package_TO_SOT_SMD:SOT-23-5 | U10 |
| 1 | Normal | Resistor_SMD:R_0402_1005Metric | JP6 |
| 1 | OPA1602 | Package_SO:VSSOP-8_3.0x3.0mm_P0.65mm | U12 |
| 1 | Pmod | Connector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_Vertical | J3 |
| 1 | REF3450 | Package_TO_SOT_SMD:SOT-23-6 | U7 |
| 1 | S&H | TestPoint:TestPoint_Pad_D1.0mm | TP10 |
| 1 | S&H_i | TestPoint:TestPoint_Pad_D1.0mm | TP9 |
| 1 | S&H_o | TestPoint:TestPoint_Pad_D1.0mm | TP11 |
| 1 | SL03 | Diode_SMD:D_SMF | D1 |
| 1 | SN74LVC1G17DCK | Package_TO_SOT_SMD:SOT-353_SC-70-5 | U11 |
| 1 | TLV61046ADB | Package_TO_SOT_SMD:SOT-23-6 | U3 |
| 1 | TPS63700 | Package_SON:VSON-10-1EP_3x3mm_P0.5mm_EP1.65x2.4mm_ThermalVias | U4 |
| 1 | byp | Resistor_SMD:R_0402_1005Metric | JP1 |

schilkp/PmodADC
A fully discrete 14bit, 41kHz, FPGA-controlled Successive-Approximation Audio ADC and R2R Audio DAC.


sparkfun/SparkFun_Soft_Power_Switch_Mk2
Documentation, example code, and hardware for the SparkFun Soft Power Switch - JST 2mm.

sparkfun/SparkFun_Soft_Power_Switch_USB-C
Documentation, example code, and hardware for the SparkFun Soft Power Switch - USB-C.



xmoshte/Biosignals_Cobot
Design files and documentation for a biosignals controlled collaborative robotic arm (cobot) by the Center for Robotics and Biomedical Engineering

TU-Darmstadt-APQ/RedPitaya-Lockbox
Digital controller for laser frequency stabilization based on the RedPitaya STEMlab 125-14 board

TU-Darmstadt-APQ/RedPitaya-IntStab
Digital controller for laser intensity stabilization based on the RedPitaya STEMlab 125-14 board
It measures 28.6 × 80.6 mm and has 4 copper layers, 1.6 mm thick.
137 parts, built around the 74AHCV541ABQX, SN74LVC1G17DCK, OPA1602AID and TLV61046ADBV. 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 schilkp/PmodADC repository on GitHub, at the commit this page was made from: the board is ECAD/PmodADC/PmodADC.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).