Skip to the content
4 layers139.3 × 102.4 mmBadVga, the printed circuit board in 3D

prototype very bad vga for SBC6309

Size
139.3 × 102.4 mm
Copper layers
4
Thickness
1.6 mm
Parts
49
Nets
159
Pads
492
Tracks, vias
1,578, 203
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
2 Oct 2025
Updated
31 Jan 2026

Overview

BadVga is an open-source printed circuit board by jimbro1000, from the jimbro1000/BaderVGA repository on GitHub. It is a 4-layer board of 139.3 × 102.4 mm with 49 parts on 159 nets, routed with 1,578 tracks and 203 vias.

It is built around the 74HC245D, 74LS30PC and 74LS00SC, with the 74LS20P-E and CD74HC4040E among its other parts. Its parts include 17 ICs, 15 connectors, 10 capacitors, 3 resistors and 1 switch. It belongs with the FPGA and CPLD boards of this library.

Main components

5

README

README.md

Terrible VGA

Inspired by Ben Eater's discrete logic VGA and Leoneq's "bad vga" design, this project implements a very basic, text only VGA display using just 1 bit of a 128KB EEPROM data bus and 2KB of SRAM.

Render of PCB

Predictable issues

The logic chips used are clocked to near their limit (notably the 12-bit counters) and struggle to meet the timing requirements of the design. Careful selection of components should help to resolve this.

The original designs by Ben and Leoneq were built on breadboard with no practical ground plane and very little decoupling. This design is a dedicated 4-layer PCB with two solid ground planes that should help to resolve the problem. As much as possible, all signals are routed on a single layer with the "spare" layer used for power delivery.

Timing is not just an issue for the board's clock it is also a problem for the host. The board clock is decoupled from the host which will, inevitably, result in read and write conflicts. The host is expected to be running at 3.147MHz while the video board is running at 20MHz. It should be viable to gate host r/w operations such that they are blocked (in the semaphore sense) by the video. If not the only option is to restrict write operations to the vertical blank period. The alternative is to switch to a dual-port arrangement and bypass the problem completely.

Integration

Inputs

Integration with the host requires address bus, data bus, enable/select and R/!W.

Outputs

Outputs from the board, by default, are just the data bus but this needs to be extended to include horizontal and vertical sync (TODO)

Next

  • Investigate dual-port ram option
  • Investigate switch to 25.175MHz for better VGA compliance (can be driven entirely from the host clock)
  • Use latch and 3 bit load counter to reduce contention on databus
  • Combine counter with 8 bit shift register (to reduce eeprom size and allow eeprom programming on TL866 without adapters)
  • Investigate combining with eeprom based state machine to manage sync and blank timing

References

Ben Eater VGA https://eater.net/vga

Leoneq https://github.com/Leoneq/iNapGPU

Dr Matt Regan VGA https://github.com/Turing6502/ZX-Spectrum-No-ULA/blob/main/ZX%20Spectrum%20No%20ULA.pdf

License

This project is licensed under CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

Parts

49
QtyValueFootprintReferences
1010nFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5, C6, C7, C8, C9, C10
8Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ4, J5, J7, J9, J12, J13, J14, J15
574LS30Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU7, U14, U15, U18, U19
374LS00Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU3, U16, U20
210KPCM_Resistor_SMD_AKL:R_0603_1608MetricR3, R4
274HC245Package_SO:SOIC-20W_7.5x12.8mm_P1.27mmU2, U8
274LS20Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU12, U13
2CD74HC4040Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU11, U17
2Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6, J10
2Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2, J8
2Conn_01x16Connector_PinHeader_2.54mm:PinHeader_1x16_P2.54mm_VerticalJ3, J16
11KPCM_Resistor_SMD_AKL:R_0603_1608MetricR5
127C010Package_DIP:DIP-32_W15.24mmU1
1GAL16V8Package_LCC:PLCC-20_THT-SocketU22
1IDT71342Package_LCC:PLCC-52_THT-SocketU21
1SW_DIP_x04Button_Switch_THT:SW_DIP_SPSTx04_Slide_6.7x11.72mm_W7.62mm_P2.54mm_LowProfileSW1
1TFT660Oscillator:Oscillator_DIP-8Y1
1VGALibrary:AMPHENOL_ICD15S13E4GX00LFJ1
1ZWORKAPCM_Jumper_AKL:Jumper_P2.54mm_D0.7mmJP1
1videoclock sourceJumper:SolderJumper-3_P1.3mm_Bridged12_Pad1.0x1.5mmJP2

Similar boards

  • 2 layers100 × 77.5 mmSmartDiskII, the printed circuit board in 3D

    SmartDiskII

    btb/SmartDiskII

    An hybrid Disk ][ and SmartPort controller

    42 parts60Apache-2.0
  • 4 layers243.8 × 170.2 mmHEC1, the printed circuit board in 3D

    HEC1

    Andy18650/HEC-Model-Z1

    A Z80 computer with protected mode support

    126 parts36GPL-3.0
  • 2 layers364 × 203 mmCPU6S, the printed circuit board in 3D

    CPU6S

    Meisaka/CenMiniCom

    Centurion Minicomputer Schematics

    240 parts8
  • 4 layers304.8 × 215.9 mm64 256KB SYSTEM BOARD, the printed circuit board in 3D

    64 256KB SYSTEM BOARD

    kev-ju/PC-Retro-MTM

    Modern KiCad version of the IBM 5150 system board originally created by MTM Scientific, Inc.

    197 parts4
  • 2 layersRogelio Pineda part 7-AMLDC-2044B, the printed circuit board in 3D

    Rogelio Pineda part 7-AMLDC-2044B

    ForgottenMachines/Entrex

    The technologies documented here will include all like-kind systems manufactured by Nixdorf, Redifon, ROCC & Mera, all originally designed by Entrex Inc, Burlington, MA USA.

    332 parts1
  • 4 layers236.8 × 240.9 mmDIY Video, the printed circuit board in 3D

    DIY Video

    jimbro1000/DIY-Video

    General purpose video system for 8-bit computers using 74LS logic

    315 parts1
  • 2 layers248.9 × 139.7 mm6809 Plus EPROM Version, the printed circuit board in 3D

    6809 Plus EPROM Version

    roberto314/GIMIX_reproduction

    Reproducing SS-50 and SS-30 cards and GIMIX Ghost Case and Mainboard

    167 parts1BSD-2-Clause
  • 6 layers244 × 244 mmRetroslop, the printed circuit board in 3D

    Retroslop

    CPTforever/8088-MicroATX-Computer

    A 8088 based, IBM 5150 like computer compatible with the MicroATX motherboard form factor.

    193 parts

Questions

How big is the BadVga PCB?

It measures 139.3 × 102.4 mm and has 4 copper layers, 1.6 mm thick.

What parts does the BadVga use?

49 parts, built around the 74HC245D, 74LS30PC, 74LS00SC and 74LS20P-E. 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 BadVga KiCad files?

From the jimbro1000/BaderVGA repository on GitHub, at the commit this page was made from: the board is badVga.kicad_pcb and its schematic badVga.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the BadVga design in my own project?

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