

Centrifuge
The repository for designing the PCB for the VGA-mixer in TDT4295
- Size
- 177.7 × 96.6 mm
- Copper layers
- 6
- Thickness
- 1.6 mm
- Parts
- 399
- Nets
- 434
- Pads
- 1,866
- Tracks, vias
- 4,026, 907
- Pours
- 21
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 9 Sep 2022
- Updated
- 12 Nov 2022
Overview
Centrifuge is an open-source printed circuit board by vgacentrifuge, from the vgacentrifuge/pcb repository on GitHub. It is a 6-layer board of 177.7 × 96.6 mm with 399 parts on 434 nets, routed with 4,026 tracks and 907 vias.
It is built around the TPS54294PWP, TVP7002PZP and S25FL127SABMFV10, with the THS8136PHP, LSF0102DP and RCLAMP0524PATCT among its other parts. Its parts include 188 capacitors, 87 resistors, 21 ICs, 21 connectors and 8 transistors. It belongs with the FPGA and CPLD and Silicon Labs (EFR32, EFM) boards of this library.
Main components
12TPS54294PWP
HTSSOP-16-EP-40℃~+85℃@(TA) 2 2A 4.5V~18V 700kHz 760mV~7V Adjustable Buck Buck Built-in Yes HTSSOP-16-EP DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersTVP7002PZP
HTQFP-100(14x14)0℃~+70℃ 1.65Gbps 1.8V~2V、3V~3.6V Bridge/Converter I2C HTQFP-100(14x14) Video Interface ICs ROHSTexas InstrumentsVideo Interface ICsS25FL127SABMFV10
SOIC8128-Mb (16 Mbyte), 3V, SPI Flash MemoryInfineon TechnologiesUncategorisedTHS8136PHP
HTQFP-48(7x7)HTQFP-48(7x7) Video Interface ICs ROHSTexas InstrumentsVideo Interface ICsLSF0102DP
TSSOP82-Bit Bidirectional Multi-Voltage Level Translator; Open-Drain; Push-PullNexperiaUncategorisedRCLAMP0524PATCT
DFN-10(1x2.5)-55℃~+125℃ 0.3pF 150W 15V 1uA 5A@8/20us 5V 6V ESD Four channels IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 DFN-10(1x2.5) ESD and Surge Protection (TVS/ESD) ROHSSEMTECHESD And Surge Protection (TVS/ESD)M24C02-WMN6
SO-8SO-8 EEPROM ROHSSTMicroelectronicsEEPROMDFR0555
-LCD ScreenDFRobotRCLAMP3324P.TNT
DFN-10(2.5x1.0)-40℃~+125℃ 0.65pF 150nA 3.3V 4.5A@8/20us 4.5V 8V ESD IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 DFN-10(2.5x1.0) ESD and Surge Protection (TVS/ESD) ROHSSEMTECHUncategorisedBSN20
SOT-23-55℃~+150℃ 1 N-channel 1.5V 17.5pF 2.4nC@10V 2.5Ω@10V 300mA 350mW 50V 6.5pF N-Channel SOT-23 MOSFETs ROHSSlkorMOSFETsECS-2333-270-BN-TR
SMD3225-4P-40℃~+85℃ 13mA 27MHz 3.3V HCMOS SMD3225-4P Crystal Oscillators ROHSECSCrystal OscillatorsEC2620TTS-100.000M TR
SMD7050-4PSMD7050-4P Crystal Oscillators ROHSAbraconCrystal Oscillators
README
README.mdVGA mixer PCB design
This repository contains the research and design work that went into the PCB for our VGA mixer project in TDT4295 - computer project at NTNU, autumn 2022.
Initial feasibility study
The pdf contains the first research, before the capabilities and requirements were fully fleshed out. In this repo, we are working on the actual design.
Project features
The VGA mixer is a device that takes two VGA inputs, called "background" and "foreground", and outputs a single VGA video stream.
It should support the SVGA resolution 800x600 @ 60Hz and 16-bit color depth. The colors are stored as (5,6,5)-bit RGB values internally.
On the board there are several buttons and an LCD screen, allowing you to pick between different modes:
- Showing only the foreground
- Showing only the background
- Overlaying with chroma keying appied to the foreground
- Showing the foreground at 25%, 50% or 75% transparancy
- Adding the colors (double exposure)
In addition to modes, the foreground can also be scaled and translated:
- A button lets you pick between 100%, 50% and 25% size of the foreground.
- Directional buttons allow you to move the foreground around
Finally, the foreground video input can be replaced by a still image loaded from an SD card. Chroma keying can still be applied, to create borders or overlays.
TODO: Should we be able to save images, or is having a bank of overlays enough?
The LCD allows the user to orchestrate the modes and options to create quick transitions, and saving states.
Implementation overview
Both the background and foreground VGA signals get converted into digial pixel color values. ADC chips do the conversion, and an FPGA reads the digital data.
The background video signal is never scaled or translated, and can be sent almost directly out to the output DAC. The output signal is just a few pixels behind the background.
The foreground gets buffered, either in SRAM or the FPGA's internal block RAM. When the background signal is passing through the FPGA, it knows which pixel it is processing. By checking its settings, it will know if and where the foreground framebuffer should be sampled. Translations and scaling affect how the foreground overlays the background.
Scaling is done by doubling or quadrupling the current pixel coordinate (left shifting). Translations are done by adding offsets. If the resulting pixel position is still within the framebuffer bounds, it gets sampled.
Chroma key is handled by looking at the color chanels. Transparancy is done by averaging the foreground and background layers. To get 25% foreground, pixel = (fg+(fg<<1) + bg) >> 2, or something similar. We don't want to do actual division.
User input is handled by an MCU, which is connected to the FPGA via SPI. The MCU also handles the VGA input data pins, to communicate to our video sources what resolution we support.
The SD card is also connected to the MCU over another SPI. We use FAT32 formatted SD-cards, allowing the user to prepare overlays on their computer, saved as bmp. See this project here. The MCU does all file system work and image decoding. The LCD can be used to pick images by file name. When selected, the foreground input gets ignored, and the FPGA fills the framebuffer with the image instead, sent over SPI.
In general, the MCU takes user input and uses SPI to send a state struct to the FPGA. This means timed transitions, and switching between saved states, can be orchestrated from there. Note that the MCU doesn't have enough RAM to store even a single frame.
Components
This section contains the components we will need to place on the PCB.
FPGA
We are working with the Artix-7 series, see the Series Overview.
Dev-board
The ARTY A7 development board has an ARTIX-7 XC7A35T which has
- 33280 logic cells
- 50 blocks of 36Kib dual port block ram = 1 800Kib
- 5 clock management tiles (CMTs), each with a phase-locked loop and mixed-mode clock manager
- Programmable over JTAG or Quad-SPI Flash
The dev-board itself contains:
- 256MB DDR3L with a 16-bit bus @ 667MHz
- 16MB Quad-SPI Flash
On PCB
On the PCB we will use the ARTIX-7 XC7A100T in FTG256 package, which has already been procured.
- 4,860 Kib of dual port block ram
See the data sheet for it here, and remember the user guides listed in the pcb lecture.
Voltages
The FPGA requires:
- 1.0V (Vccint & Vccbram)
- 1.8V (Vccaux)
- 3.3V (Vcco) The standard signal voltage we use for I/O banks.
They must become ready in order, Vccint and Vccbram can rise together. For one bank, Vcco=1.8V, and the datasheet said it's fine to rise it together with Vccaux.
Required FPGA support components
In the datasheet they define that certain sets of decoupling capacitors should be connected to certain pins. This is already included in the example schematic from the lecture. Try to get them close to the pins on the actual PCB.
We also need a configuration flash chip on the board, to program the FPGA on startup. See UG908 Appendix C. We picked the one from the pcb lecture: S25FL127SABMFV101.
FPGA's own clock signal
To not completly rely on the MCU's clockout, The arty schematic has and ASEM1-100.000MHZ-LC-T, but it's not in stock.
We use the EC2620TTS-100.000MTR.
I checked the Xilinx Clocking Wizard, both MMCM and PLL will happily turn 100MHz into 160MHz.
Debug connector
The Debug connector from the lecture looks like the 14-pin F JTAG ILA connector. See this website. The pitch is 2mm, yes you read that right. The component, through hole, can be found here: 0878311411.
See the example setup from the lecture (remember 2x 10k pullups). However, this website says that pin 6 (TCK) is pulled down on their board, why is ours pulled up?
SRAM
We need to calculate the required SRAM size. With an 800x600=480 000 pixel grid, 16 bit color depth, it makes sense to use a 512K x 16 bit SRAM. We do however also want to make the SRAM easy to address.
800 pixels of X-coordinate rounds up to 10 bits. 600 pixels of Y-coordinate also rounds up to 10 bits. A 20 bit address means 2^20 = 1M x 16bit SRAM.
This size would also allow us to support 1024x768 (XGA), but speed is a bigger issue. XGA has a pixel clock of 15.3ns / pixel.
To get good speed, we have looked at the syncronous 1M x 18b SRAM CY7C1372KV33-200AXC which supposedly costs 94kr per chip. It takes 3.3V. With pipelining, the access time becomes 3ns, with each operation delayed for two cycles.
The number of pins needed becomes:
- 20 address pins
- 18 data pins
- write enable
- clock
- chip select
- output enable
We use chip select to deselect, which when we don't need access. The deselect is pipelined as well, allowing us to mix it into the operations.
We want to connect output enable to be sure that we never try to write to th data line while it is being driven. If we do everything perfectly, The data line is automatically tri-stated by writes, but we want to be safe.
The rest, like output enable, clock enable, byte enable, advance etc. can all be pulled by the pcb. This SRAM package does not expose JTAG pins.
MCU
Available in the lab is the EFM32GG990F1024-BGA112
- ARM Cortex M3
- Flash: 1024kB
- RAM: 128kB
- USB support
- ADC: 8 channels, 12 bit
- DAC: 2 channels, 12 bit
- SPI: 3
- I2C: 2
- GPIO: 87
- 112 pin BGA package
For PCB considerations, see SiLabs EFM32 AN0002. It includes decoupling capacitors. See Figure 3.1. EFM32 Series 0 Standard Decoupling Example. Also add the 1 Ohm resistor from Figure 3.3.
MCU Debug connector
In the PCB lecture, they use the 2.54mm pitch legacy JTAG. The debug conenctor is 20-pin header, shown in section 4 of AN0002.
Since we have a gecko with the modern connector, we can use the modern Cortex Debug+ETM Connector. It has 1.27mm pitch, we pick this through-hole one: 3220-20-0100-00.
MCU Clock circuit
By using an external crystal, as recommended, we can run the MCU at 48MHz.
The first chip we bought was in fact not a crystal, but an oscialltor chip using a crystal insternally. We buy another one instead, see the schematic.
The AN0002 EFM32 hardware design considerations also mentions two capacitors. The lecture uses 2x 12pF.
The FPGA can take the clock out signal from the EMF32GG as a clock input, and use phase-locked loops to internally run faster clocks at rational multiples of the input. We should also have a clock circuit on the FPGA side, so that we have two options.
Connections
We use SPI between MCU and FPGA, and between MCU and SD-card. They can be fully independent. For our SPI communication, the lecture tells us to add extra wires between the MCU and PCB for safety.
I2C is "open drain", which means we must use pull-up resistors on the lines. Calculations can be found in this EFM32GG application note.
We use I2C for the LCD, and I2C for the ADCs. They both seem to like 400kHz, which means a 2kOhm resistor is common. They both also want to be pulled up to 3.3V.
Between the boards, if we do make two PCBs, we want to connect them. We can buy e.g. 2 of the 2x8 pin vertical male header per board 3020-16-0200-00. And 2 of the female as well PPPC082LJBN-RC. These are both through-hole.
Splitting the MCU and FPGA
We have considered splitting the PCB in half, to separate the MCU from the FPGA. In practice we will probably not create two PCBs, since clock lines shouldn't go through pins, but it would be great to have a PCB that can be used without the MCU physically on the board.
With SPI, we control the speed ourselves, so we can tune it down until it is stable, depending on how the wiring is.
The SPI between the MCU and FPGA should have room to solder on a pin header. The SPI clock is slower than the 48MHz clock-out from the MCU, which should not have a pin header. We also give the FPGA its own oscillator, to not depend on the MCU clock out.
The SPI lane for the SD card can also have holes for soldering on a pin header if desired. The I2C buses for the ADCs and LCD screen should have pins, and the keyboard matrix should have them.
Power circuit
We base it on the PCB lecture. We need to power up the 1.0V, 1.8V and 3.3V in order. The MCU and SD card use 3.3V, so does the SRAM. The ADC uses 1.9V, and HSYNC and VSYNC must be level switched to / from 5V.
Remember the jumpers between the power circuit and rest of the board. We buy a 2x5 male 2.54mm pin header 3020-10-0300-00, and the 2x5 female jumper shunt, 69145-210LF, with 3A rating per pin.
SD-card & SD-card slot
We want a slot to be able to move the SD-card to and from a computer. When connected, the MCU communicates via SPI to the card. In addition to the 4 SPI pins, The SD-card takes a 3.3V VDD and ground.
See for instance this website for pinout on the physical SD and microSD cards.
Note that this SO-post talks about pull-up resistors on all the data pins, we can do that too.
People seem to disagree, but hooking up a 10k Ohm resistor to each of DAT0-DAT3 and CMD seems good. Also a 0.1 uF decoupling capacitor between Vcc and GND.
To easily solder, we can buy the 10067847-001RLF. It is full size SD, with solder pins visible
We should buy an SD card as well, the 512MB microSD 5252 is cheap, so buy at least one.
LCD text output
A cheap 2 row x 16 char width LCD screen is DFR0555. It is controlled over I2C. 8-bit address for LCD: 0x7C = 0b 0111 110X 8-bit address for backlight: 0xC0 = 0b 1100 000X At 87mm x 32mm total, it is quite small. Each char is 2.96mm x 5.56mm. Mouser doesn't have anything cheaper using I2C, so it's probably a good option.
Input panel
We need to design a button layout that fits our functionality, but also allows us to experiment after the PCB design is finalized.
We can use an off the shelf keyboard matrix, and re-label the keys. Mouser stocks 81 of the 4x4 3844.
VGA ports
We need the physical VGA ports, as well as supporting components. The speed we target is SVGA 800x600@60Hz.
The VGA connector itself is described here. For VGA output we only really need to connect 5 pins, plus ground:
- red, green, blue color (analog 0-0.7V, 75 Ohm)
- horizontal sync, vertical sync (5V). See timing chart.
Note: While we are in the "porch" and sync pulse areas of the signal, the color values must all be 0V. See for example the 2nd Ben Eater VGA video.
We also might want to connect the 3 DDC2B ports, in case we want to read info about the output monitor. See the following sections about DAC and VGA Display Data Channel.
For inputs, we need to read those 5 signals, including the analog color signals (using ADCs). We should also let the video sources get info about our board over I2C. See next sections.
As for the physical VGA ports, there is L77HDE15SD1CH4FVGA on digikey at 15kr a pop. Is has through-hole pins. Buy 9, 3 per PCB.
VGA Display Data Channel
The DDC2B standard is an I2C protocol to communicate information about the "monitor" to the video source.
For the output port, we can connect the DDC pins to one of the MCU's I2C ports, in case we want to read info about the screen. NOTE: The I2C lines are open drain, and expect to be pulled up to 5V. We will need a level shifter for the MCU to be able to use the I2C port.
VGA DDC level switches
The VGA standard expects 5V I2C over the SDA and SCL lines. Both when we are slave and master, we want to support this. Since all other I2C components use 3.3V, we level switch.
This guide shows how a single N-channel MOSFET does the trick. We buy 2 per DDC I2C, 6 per board. We pick the one they mention that is easiest to solder: BSN20.
VGA HSYNC VSYNC Level shifters
They come in at 5V, but must be 3.3V into the ADC. Same applies to the output VGA, but the other way. We don't use the DAC's HSYNC and VSYNC ports, instead letting the FPGA control it. It would be nice to support 1.8V input, since the rest of video out is at 1.8V.
For each ADC, and for the output, buy one 771-LSF0102DCH.
Input VGA ports: I2C EEPROMs
On our VGA inputs, we should respond to I2C read commands, to return 128-256 bytes of read only Extended Display Identification Data. See this page for specifications. The VGA DDC uses three pins: I2C data, I2C clock, and DC +5V delivered by the video source. Our board must respond to the 7-bit I²C address 50h (also known as A0h and A1h in 8-bit).
To save having to use our MCU from needing to be a slave over the VGA ports, we can buy dirt cheep I2C EEPROMSs. For instance M24C02-WMN6TP, in stock at Digikey.no, at 1,7kr a piece. They work at 2.5V - 5.5V, and we use one per VGA input = 6 for 3 boards.
Note: The EEPROMs technically support running on 5V, and the VGA port has 5V supplied by the graphics card. The reason we don't want to use it is that the graphics card expects us to draw < 1mA when the monitor is on.
In DDC, the I2C master will try to read from address 0xA1 = 0b1010 0001. This is perfect! The EEPROM listens for address 0b1010 XXXX, where we configure the first 3 X's ourselves. The last bit is 1 for read and 0 for write.
I2C EEPROM support components
-
Vcc should be decoupled "usually of the order of 10 nF to 100 nF, close to the Vcc/Vss pins".
-
E0, E1 and E2 should be connected to ground, to listen to the correct address.
-
We should create a jumper thing to let the MCU be the programmer, if we ever need to change the EEPROM.
-
It should have 5 pins:
- Vcc (3.3V)
- Vss
- SCL
- SDA
- Write enable (just connect to Vss to enable writing)
Opposite to it there should be the same 5 pins comming from one of the MCU's I2C buses, e.g. the one used to configure the ADCs.
To make the connector easy, we can use a 3x5 pin header, and have the MCU connected to the middle row, and jump either to the left or right. See TSW-105-07-F-T.
Input VGA ADCs
The analog color inputs of each VGA input needs to become digital 6 or 5 bit values. We can use ADCs with more bit depth than this, and then ignore the least significant bits.
The video ADC we looked at is the 3 channel x 10bit TI TVP7002PZPR
It is configurable over I2C, things like gain, clamp and offset. Also programmable subpixel positioning. It also has a PLL on the HSYNC, allowing it to generate a pixel clock for the FPGA VGA inputs. The 40MHz on SVGA is well within the 12-165MHz range.
So: we need to connect the ADCs to the MCU, to program them. Luckily, the chips have one bit of customizable address, so the options are:
- 0xB8 = 0b10111000
- 0xBA = 0b10111010 Remember that the last bit is 1 for read and 0 for write. Notably, neither of these addresses collide with the 0xA0/0xA1 of the VGA DDC, but you have to remember voltages.
The ADC needs 3.3V and 1.9V!
The I/O is however 3.3V, so we can connect it to a "normal" FPGA bank.
But: VGA HSYNC and VSYNC are 5V signals. We can not pass those into the ADC! See the HSYNC VSYNC Level shifter section above.
ADC support components
See the example setup in the datasheets.
- 1x (=2x) ADC support
- 3x (=6x) Sync-on-green input disable: 1nF capacitor
- 7x (=14x) 10nF capacitors for unused analog input
- 1x (=2x) PLL pump
- 1x (=2x) Resistor 1.5kOhm
- 1x (=2x) Capacitor 4.7nF
- 1x (=2x) Capacitor 0.1uF
- 1x (=2x) I2C address choice: Resistor 2.2kOhm
- 3x (=6x) Color inputs
- 1x (=6x) 75 Ohm resistors
- 1x (=6x) 0.1 uF capacitors
- 1x (=2x) VSYNC parallel 1nF capacitor
- even more stuff, just look at the suggested schematic
Output VGA DAC
When outputing analog color data, we don't want to use resistors, as they take space, and the FPGA outputs are not the best at delivering DC current.
A nice DAC that Mouser stocks is THS8136IPHP It has 3 10-bit inputs named R, G and B, and 180MS/s. For 800x600 @ 60Hz, a throughput of at least 40 MSPS is enough. It takes 3.3V analog, and 1.8V digital. This means the FPGA pins delivering VGA out must be 1.8V. Luckily, when the Vcco is the same as Vccaux (1.8V), they can be ramped at the same time.
- 0.1 uF decoupling capacitors near each power pin (3 of them)
- 0.1 uF capacitors between COMP-AVdd and between VREF-AVss
- R_FS between FSADJ and AVss. TODO
- 3x 75 Ohm resistors, for each analog output? TODO
It also has PCB Layout Guidelines. 10x trace width clearance between analog inputs. Everything close! Resistors, capacitors, analog output port. TODO: ESD protection on the analog outputs is recommended.
Protection
We buy TVS diodes like the PUSB3AB2DF.
Development components
While developing, we want to use some components that might not be part of the finished PCB.
SD-card reader breakout board
A breakout SD card reader would be great to get the MCU dev-board to do SD-card reading, when developing. We can make one ourselves by soldering onto the pads of a microSD-SD adapter Håvard has.
Håvard made a shitty one. Done!
VGA breakout board
It costs a bit, but we can use the DB15F-VGA-TERM from Mouser.
SRAM breakout board
The SRAM has a 14mm x 20mm 100-pin LQFP package. We can buy this board
Circuit board design
The maunals folder contains the PCB lecture.
For hooking up the FPGA, this guy from Altium Academy shows the bare minimum of pins to run an ARTIX-7. Includes flash, voltages and and JTAG.
There is also the 7 Series FPGAs PCB Design Guide.
Parts
399| Qty | Value | Footprint | References |
|---|---|---|---|
| 42 | TestPoint | TestPoint:TestPoint_Keystone_5015_Micro-Minature | TP1, TP2, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20, TP21, TP22, TP23 +26 |
| 37 | 0.1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C13, C123, C124, C125, C126, C127, C128, C129, C130, C131, C132, C133, C134, C135, C136, C137 +21 |
| 29 | 470n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C76, C77, C78, C79, C100, C101, C102, C103, C109, C110, C111, C112, C113, C114, C115, C116 +13 |
| 26 | 1u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C10, C11, C12, C16, C18, C23, C26, C29, C33, C34, C35, C39, C40, C41, C45, C47 +10 |
| 23 | 10k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R14, R15, R34, R35, R40, R41, R44, R45, R46, R501, R502, R503, R504, R514, R515, R516 +7 |
| 16 | 4.7u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C73, C75, C84, C86, C88, C90, C92, C94, C104, C105, C106, C107, C117, C118, C119, C120 |
| 15 | 10n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C17, C19, C21, C22, C25, C28, C32, C46, C48, C50, C51, C54, C57, C61, C68 |
| 14 | 1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R16, R17, R18, R19, R20, R21, R36, R37, R42, R43, R529, R530, R531, R532 |
| 12 | 100n | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C511, C512, C513, C514, C515, C516, C520, C521, C522, C526, C527, C528 |
| 12 | 22u | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C501, C502, C503, C504, C505, C506, C529, C530, C531, C532, C533, C534 |
| 12 | 4.7k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R1, R2, R7, R11, R25, R26, R30, R31, R47, R55, R505, R506 |
| 11 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C535, C536, C537, C538, C541, C542, C544, C546, C547, C548, C549 |
| 10 | DNI | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R12, R13, R23, R24, R28, R29, R32, R33, R38, R39 |
| 9 | 75 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R3, R4, R5, R48, R49, R50, R51, R52, R53 |
| 8 | SolderJumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabels | JP11, JP12, JP13, JP14, JP18, JP19, JP20, JP21 |
| 7 | Jumper_2_Bridged | Jumper:SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mm | JP1, JP10, JP15, JP16, JP17, JP22, JP23 |
| 6 | 10u | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C2, C7, C8, C539, C550 |
| 6 | 10u | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C508, C509, C510, C523, C524, C525 |
| 6 | 1n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C24, C27, C30, C53, C56, C59 |
| 6 | 22.1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R509, R511, R513, R518, R520, R522 |
| 6 | BSN20 | Package_TO_SOT_SMD:SOT-23 | Q1, Q2, Q3, Q4, Q5, Q6 |
| 4 | 47u X5R/X7R | Capacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolder | C72, C108, C121, C122 |
| 3 | 1.5u | centrifuge_mcu:L_Sumida_CR75 | L501, L502, L504 |
| 3 | Conn_01x15 | centrifuge footprints:L77HDE15SD1CH4FVGA | J2, J3, J4 |
| 3 | LSF0102 | Package_SO:VSSOP-8_2.3x2mm_P0.5mm | U6, U9, U11 |
| 3 | RCLAMP0524PATCT | Package_DFN_QFN:Diodes_UDFN-10_1.0x2.5mm_P0.5mm | U7, U13, U14 |
| 3 | TPS54294 | Package_SO:HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3x3mm | U503, U504, U505 |
| 2 | 1.5k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R22, R27 |
| 2 | 12p | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C543, C545 |
| 2 | 2.2u | Inductor_SMD:L_Vishay_IHLP-2020 | L503, L505 |
| 2 | 330 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R10, R54 |
| 2 | 4.7n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C37, C66 |
| 2 | 73.2k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R512, R519 |
| 2 | Conn_02x06_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_Vertical | J501, J516 |
| 2 | ECS-2333-270-BN | Oscillator:Oscillator_SMD_EuroQuartz_XO32-4Pin_3.2x2.5mm_HandSoldering | X1, X2 |
| 2 | Jumper_3_Open | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm_NumberLabels | JP8, JP9 |
| 2 | M24C02-WMN | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U10, U12 |
| 2 | TVP7002 | centrifuge footprints:TQFP-100-1EP_14x14mm_P0.5mm_EP5x5mm_ThermalVias_elprint | U4, U8 |
| 1 | 0.1u tantalum | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C69 |
| 1 | 100u | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C507 |
| 1 | 100u tantalum 1-40 mOhm or X5R/X7R | Capacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolder | C74 |
| 1 | 124k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R521 |
| 1 | 3.3u | centrifuge_mcu:L_TDK_7065 | L506 |
| 1 | 3.8k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R6 |
| 1 | 30.1k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R517 |
| 1 | 330u tantalum 5-40 mOhm | Capacitor_Tantalum_SMD:CP_EIA-7343-31_Kemet-D_Pad2.25x2.55mm_HandSolder | C82 |
| 1 | 33k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R510 |
| 1 | 4x4_keyboard | centrifuge_mcu:Adafruit 3844 | U507 |
| 1 | 5.6M | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R507 |
| 1 | 6.81k | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R508 |
| 1 | 62 | Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder | R528 |
| 1 | ADC_I2C | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J507 |
| 1 | ADC_RST | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J508 |
| 1 | Barrel_Jack | Connector_BarrelJack:BarrelJack_CUI_PJ-102AH_Horizontal | J510 |
| 1 | CY7C1370KV33 | Package_QFP:PQFP-100_14x20mm_P0.65mm | U3 |
| 1 | DDCI2C1 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J517 |
| 1 | DDCI2C2 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J506 |
| 1 | DEBUG | Connector_PinHeader_1.27mm:PinHeader_2x10_P1.27mm_Vertical | J514 |
| 1 | DFR0555 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | U501 |
| 1 | EC2620TTS-100.000MTR | Oscillator:Oscillator_SMD_EuroQuartz_XO91-4Pin_7.0x5.0mm_HandSoldering | X3 |
| 1 | EFM32GG990F1024 | centrifuge_mcu:BGA-112_9.0x9.0mm_Layout11x11_P0.8mm_Ball0.4mm_Pad0.35mm_NSMD | U506 |
| 1 | Extra MCU GPIO | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J515 |
| 1 | FPGA 6XTRA | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J518 |
| 1 | FPGA EXTR4 | Connector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_Vertical | J519 |
| 1 | FPGA JTAG | centrifuge footprints:878311411 | J1 |
| 1 | FPGA eXtra | Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical | J504 |
| 1 | FPGA_SPI | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J505 |
| 1 | LCD16x2L | centrifuge_mcu:DFR0555 | U502 |
| 1 | LED_YELLOW_2V_20mA | Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolder | D501 |
| 1 | LOGO | LOGO | G*** |
| 1 | MCU_extra | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J503 |
| 1 | PowerIn | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J511 |
| 1 | PowerPads | centrifuge_mcu:PowerPads | J512 |
| 1 | Q_NMOS_GSD | Package_TO_SOT_SMD:SOT-323_SC-70_Handsoldering | Q502 |
| 1 | Q_PMOS_DGS | Package_TO_SOT_THT:TO-220-3_Vertical | Q501 |
| 1 | RCLAMP3324P.TNT | Package_DFN_QFN:Diodes_UDFN-10_1.0x2.5mm_P0.5mm | U15 |
| 1 | S25FL127SABMFV10 | Package_SO:SOIC-8_5.23x5.23mm_P1.27mm | U2 |
| 1 | SD_Card | Connector_Card:SD_Kyocera_145638009511859+ | J513 |
| 1 | SW_MEC_5E | centrifuge footprints:SW_Push_1P1T_NO_6x6mm_H9.5mm_modified | SW1 |
| 1 | THS8136 | Package_QFP:LQFP-48-1EP_7x7mm_P0.5mm_EP3.6x3.6mm | U5 |
The 396 most common of 399 parts.
Questions
How big is the Centrifuge PCB?
It measures 177.7 × 96.6 mm and has 6 copper layers, 1.6 mm thick.
What parts does the Centrifuge use?
399 parts, built around the TPS54294PWP, TVP7002PZP, S25FL127SABMFV10 and THS8136PHP. 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 Centrifuge KiCad files?
From the vgacentrifuge/pcb repository on GitHub, at the commit this page was made from: the board is centrifuge_combined/centrifuge.kicad_pcb and its schematic centrifuge_combined/centrifuge.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Centrifuge design in my own project?
Its repository states no licence, so its author keeps all rights: ask vgacentrifuge before reusing the design.
Similar boards
- 4 layers124.6 × 68.7 mm

- 2 layers77.5 × 63.2 mm

Tvp board
marqs85/de2-vd
Video digitizer add-on module for DE2-115 FPGA development board.
70 parts14GPL-3.0 - 4 layers95 × 95 mm

- 4 layers57.5 × 92 mm

Prototype1
domenipavec/usb-vga-computer-control
sudo apt-get install python-opencv v4l-utils python-pip sudo pip install -r python-software/requirements.txt
147 parts - 2 layers

VideoIO
DaveRichmond/PCBs
Just a bunch of PCBs I've designed for various prototyping or experimentation purposes. Mostly breakouts or adapters. CC-BY-3.0-AU
67 parts - 4 layers165 × 125 mm

- 2 layers17.9 × 26.2 mm

LevelTranslatorXiaoRp2040
xyphro/I3CBlaster
Raspberry pico / RP2040 based USB to I3C converter with Python support
16 parts96MIT - 2 layers22 × 10 mm

Laser sensor
prusa3d/PRUSA_Laser_filament_sensor
Filament presence and velocity detection using a PAT9125EL optical laser movement sensor, operating at 850nm.
13 parts31