

DAC peripherals
Copyright (c) 2023 Damien Morlier Lin Yudong Morgan Adamsson Samuel Svensson Matteo Rodriguez Derek Holzer
- Size
- 43.2 × 48.8 mm
- Copper layers
- 4
- Thickness
- 2.63 mm
- Parts
- 35
- Nets
- 68
- Pads
- 248
- Tracks, vias
- 411, 137
- Pours
- 13
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 5 Oct 2022
- Updated
- 10 Mar 2023
Overview
DAC peripherals is an open-source printed circuit board by DamienMorlier, from the DamienMorlier/ScanProcessingFPGA repository on GitHub, published under the MIT licence. It is a 4-layer board of 43.2 × 48.8 mm with 35 parts on 68 nets, routed with 411 tracks and 137 vias.
It is built around the 74LVC2T45DC. Its parts include 16 ICs, 7 capacitors, 6 resistors, 5 connectors and 1 transistor. It belongs with the audio and music boards of this library.
Main components
1README
README.mdMIT License
Copyright (c) 2023 Damien Morlier Lin Yudong Morgan Adamsson Samuel Svensson Matteo Rodriguez Derek Holzer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.ScanProcessingFPGA
This project is an open-source project adaptating the Scanimate technology used in the 80s, the goal of this project was to design an hardware accelerator that would fit on a user-affordable FPGA to meet the PAL standards at 25 frames per second with being able to control it using OSC(Open Sound Control) messages.
For this project, we have used a Pynq Z2 board and a video DAC(Texas Instruments THS 8136), you'll find the ISO file for the pynq z2 board here :
The DAC needing other components to work properly with the FPGA, we have created a kicad design than you can use to print a PCB board and don't need to figure about complex wiring.
So far the following elements have been implemented :
- Function generators with modulable parameters including different waveforms(Sawtooth, Triangle, Sinewave) and frequency, phaseshift, harmonics
- HDMI Input read
- DAC output read
- Perspective processors
- Rotation processors
- Connexion matrix to connect the function generators between then to create complex X and Y ramps
Our project is free of use and modifying and licensed under the MIT license.
This project has been created at KTH by :
- Yudong Lin
- Matteo Rodriguez
- Samuel Svensson
- Morgan Adamsson
- Damien Morlier
Under the supervision of our tutor Derek Holzer
Components to buy
- Pynq Z2 board :
- THS8136 :
- Boards files :
Installation

To install the project on the Pynq Z2 board :
-
Set the jumper(1) to the SD side and plug in the USB powering and ethernet cable(4)(5)
-
Get the ISO file of the board here :
-
Flash the SD card using Rufus(https://rufus.ie/fr/) or balena etcher(https://www.balena.io/etcher)
-
Insert the SD card into the SD card slot of the FPGA board(3)
-
Turn on the board
If you wish to power the FPGA board using a power supply, you need to switch the jumper(2)
After a few minutes, the led DONE on the board should turn on and the ethernet connexion should be appearing
Sending OSC messages
In order to send OSC messages, your computer needs to be connected to the FPGA via the ethernet cable, then you can use every OSC interface you have(or use python-osc to code in python)
Interface setup :
- IP :
- Port :
Then you can send OSC messages to the board, you can find a detailed description of the available messages at the bottom of the page
Edit the Project
In order to edit the project, you'll need the version 2022.1 of Vivado that you can find here :
Any others versions of the tool would not be able to open the project.
Then clone the following repo :
In vivado, select Run TCL Script and then run build_ip.tcl in the repo
Then you can run the build_project.tcl script from this repo and the architecture and block design of the project should open to you
The HDMI pipeline should not be severely transformed for the integrity of the project
Our implementation of the Scanimate is located inside of the IP Datapath_DMA
After editing the project, you can then generate the bitstream and replace the board bitstream located here
And reboot the board
Adding Hardware Modules
If you wish to modify the project and add some custom written blocks, you'll need to have knowledge in hardware description languages(VHDL, Verilog, SystemVerilog) and knowledge in digital design and expertise in using Vivado
How to use GHDL to simulate
Here is a quick tutorial on using an open-source tool to simulate your written modules in hardware description languages
Installation :
sudo apt-get install ghdlAnalyse :
ghdl -a all-your-filesElaborate :
ghdl -e top-entityRun :
ghdl -r top-entity --wave=PathToResults\Name_wave.ghwThen you can use gtkwave to visualize your tests
Automatically run test bench
./run_testbench.sh run <test-bench-entity>Roadmap
Here is a list of modules that could be implemented to enhance the experience on the project
- Add an ADC input to have a external input to the connexion matrix
- Implement the HDMI output
Ressources
-
Detailed description of the OSC implemented : https://www.overleaf.com/read/kcfczwsqqrff
-
Technical Report :
Parts
35| Qty | Value | Footprint | References |
|---|---|---|---|
| 14 | 74LVC2T45DC | Package_SO:VSSOP-8_2.3x2mm_P0.5mm | U2, U3, U3, U4, U5, U5, U6, U7, U7, U8, U9, U9, U10, U11 |
| 6 | 100n | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C5, C6, C7 |
| 3 | 75 | Resistor_SMD:R_0603_1608Metric | R2, R3, R4 |
| 2 | 10K | Resistor_SMD:R_0603_1608Metric | R5, R6 |
| 2 | Conn_01x10_Female | Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_Vertical | J3, J4 |
| 1 | 2k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 4.7u | Capacitor_SMD:C_0603_1608Metric | C4 |
| 1 | Conn_01x03_Female | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J1 |
| 1 | Conn_01x08_Female | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J5 |
| 1 | Conn_02x03_Odd_Even | Connector_PinSocket_2.54mm:PinSocket_2x03_P2.54mm_Vertical | J2 |
| 1 | LK112M18TR | Package_TO_SOT_SMD:SOT-23-5 | U1 |
| 1 | Q_NMOS_DGS | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | THS8135PHP | Package_QFP:TQFP-48-1EP_7x7mm_P0.5mm_EP5x5mm | IC1 |
Questions
How big is the DAC peripherals PCB?
It measures 43.2 × 48.8 mm and has 4 copper layers, 2.63 mm thick.
What parts does the DAC peripherals use?
35 parts, built around the 74LVC2T45DC. 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 peripherals KiCad files?
From the DamienMorlier/ScanProcessingFPGA repository on GitHub, at the commit this page was made from: the board is DAC/DAC-peripherals/DAC-peripherals.kicad_pcb and its schematic DAC/DAC-peripherals/DAC-peripherals.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the DAC peripherals design in my own project?
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).
Similar boards
- 4 layers60 × 28 mm

- 4 layers53 × 42 mm

MioLink
Misaka0x2730/MioLink
ARM JTAG/SWD debugger (BlackMagic port) based on RP2040.
117 parts30GPL-3.0 - 2 layers46.2 × 83 mm

PregnantLaserMouse
Board-Folk/PregnantLaserMouse
A optical mouse replacement pcb for the Amiga pregnant mouse
28 parts21 - 2 layers57.9 × 39.9 mm

MCU Link MR
ErichStyger/MCU-Link-MR
Open Source MCU-Link CMSIS-DAP Debug probe for mobile robots (e.g. Pixhawk)
121 parts20MIT - 6 layers200 × 75 mm

- 4 layers50 × 35.5 mm

- 4 layers165.6 × 125.5 mm

SparkPNT GNSSDO Plus panelized
sparkfun/SparkFun_GNSSDO
The SparkFun GNSS Disciplined Oscillator (GNSSDO / GNSSDO+) is a precision time and frequency reference based on the Septentrio mosaic-T GNSS receiver.
478 parts6 - 4 layers100 × 100 mm
