Skip to the content
4 layers236.8 × 240.9 mmDIY Video, the printed circuit board in 3D

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

Size
236.8 × 240.9 mm
Copper layers
4
Thickness
1.6 mm
Parts
315
Nets
779
Pads
2,456
Tracks, vias
4,507, 924
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
19 Sep 2026
Updated
4 Oct 2026

Overview

DIY Video is an open-source printed circuit board by jimbro1000, from the jimbro1000/DIY-Video repository on GitHub. It is a 4-layer board of 236.8 × 240.9 mm with 315 parts on 779 nets, routed with 4,507 tracks and 924 vias.

It is built around the 74LS245SC, 74LS373SC and 74LS163APC, with the CD4066BM, 74LS30PC and 74LS151PC among its other parts. Its parts include 104 ICs, 81 connectors, 71 capacitors and 11 resistors.

Main components

12

README

README.md

DIY Video

The DIY Video project is an attempt to define a reusable video "chip" with modular components. The concept is to limit the design to regular 74LS ICs.

The goal is a design that can be plugged into most (if not all) 8-bit computers.

The minimal design permits a system that can switch between a simple text mode and bitmap mode with a usable screen resolution of 320x200 pixels. Output is unterminated RGB that can be transformed into an appropriate format as required

Render of PCB

Design Concepts

Each major component of the video system is deliberately isolated so that a change in one area should not require rework elsewhere. This rule is broken in some places but is respected as much as possible

The core of the system is a pair of counters that track the X and Y position of the "beam". These counters are then used to define the frame timing (sync and blank) and the viewport position on the screen.

The frame timing also controls what video source makes it to the output as the sync and blank phases of the signal fall under timing control.

The bitmap renderer uses the pixel counters to generate a palette index based on either a 1, 2 or 4 bit length value. The index is turned into RGB using a separate pair of modules that generate 16 distinct RGB values and a decoder that switches the RGB output between the 16 different palette options

Independently to all this is the memory controller, actually a repeated module that provisions different, parallel rendering mechanisms. From the perspective of the video system each has its own address register and can be accessed independently of the others - so the bitmap, tile and sprite data can be operated separately without impacting the timing of the other.

Externally the different blocks of memory needed to be mapped into the hosts address space. To facilitate this the different memory blocks are first selected by a device select signal and are then (optionally) paged to ease the host burden.

This approach makes the internal address very wide - each memory block is a maximum of 32K and with distinct address buses and data buses the burden for the video system is high but the length and distribution of those buses can be minimised leaving just the palette values as the the interconnect rather than wide data and address buses

The current design respects five different addressable sub-devices Bitmap memory
Tile memory
Sprite memory
Font generator
Control registers

Only the bitmap and control registers are currently implemented.

The font generator in initial design iterations will be a simple eprom that does not require external addressing

Roadmap

Stage 1

The initial design stage is to define the hardware and interfaces, the broad timing requirements and what modules are dependent. The goal is to achieve a design that can be tested in self-contained modules, that together can implement a basic bitmap based video generator.

Stage 2

The initial design will be verified and refined to prove that the modules work. No attempt to integrate the modules will be attempted at this stage. Signal and power requirements will be added to the design

Stage 3

Modules will be implemented as independent PCBs to be re-verified. A backplane to integrate the modules will be needed with scope to extend the design to include other sub-systems

Stage 4

This is the first opportunity to integrate the entire set of modules defined. To provide a usable display that can be verified the system will also need to be integrated with a host computer to drive the video memory content

Test Progress

Simulation

  • Position Counters (verilog, CRUMB)
  • ViewPort (Verilog)
  • Bitmap Data Counters (Verilog)

License

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

Parts

315
QtyValueFootprintReferences
7010nFCapacitor_SMD:C_0603_1608MetricC1, C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +54
48NetTie_2Library:NetTie-2_SMD_Pad0.4mmNT1, NT2, NT10, NT11, NT12, NT13, NT14, NT15, NT16, NT17, NT18, NT19, NT20, NT21, NT22, NT23 +32
1674LS163Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU1, U2, U3, U4, U5, U6, U21, U23, U26, U28, U31, U78, U79, U80, U81, U102
16CD4066BMPackage_SO:SO-14_3.9x8.65mm_P1.27mmU43, U44, U45, U46, U47, U48, U49, U50, U51, U52, U53, U54, U55, U56, U57, U58
1274LS30Package_SO:SO-14_3.9x8.65mm_P1.27mmU7, U10, U12, U15, U17, U20, U64, U69, U111, U112, U113, U129
8PowerConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ43, J44, J55, J60, J74, J77, J92, J94
8Power and ClockConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ11, J16, J45, J52, J81, J86, J102, J103
8TriggersConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ17, J46, J51, J62, J73, J85, J100, J104
774LS151Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU33, U34, U35, U36, U37, U38, U39
674LS244Package_SO:SO-20_5.3x12.6mm_P1.27mmU72, U73, U74, U75, U77, U82
6OpModeConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ18, J47, J48, J80, J101, J105
6posXConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ5, J8, J12, J87, J90, J95
6posYConnector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ6, J9, J13, J88, J91, J96
574LS00Package_SO:SO-14_3.9x8.65mm_P1.27mmU11, U18, U59, U66, U114
574LS04Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU103, U118, U127, U128, U136
574LS138Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU32, U42, U62, U63, U105
474LS253Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU22, U24, U27, U29
4BDBusConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ53, J54, J76, J79
4BitmapAddressConnector_PinHeader_2.54mm:PinHeader_1x16_P2.54mm_VerticalJ57, J58, J71, J78
3100RResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR1, R3, R8
34K7Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR9, R10, R11
374LS04Package_SO:SO-14_3.9x8.65mm_P1.27mmU8, U14, U76
374LS08Package_SO:SO-14_3.9x8.65mm_P1.27mmU83, U90, U110
374LS20Package_SO:SO-14_3.9x8.65mm_P1.27mmU13, U16, U65
374LS32Package_SO:SO-14_3.9x8.65mm_P1.27mmU9, U19, U115
3Host Address BusConnector_PinHeader_2.54mm:PinHeader_1x16_P2.54mm_VerticalJ2, J3, J84
3XDBusConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ56, J75, J99
2200RResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR2, R7
274LS08Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU119, U137
274LS153Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU40, U41
274LS32Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU25, U106
274LS374Package_SO:SO-20_5.3x12.6mm_P1.27mmU100, U101
2Default PaletteConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ49, J82
2Output PaletteConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ50, J83
2PosResetsConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ10, J89
2RowCountControlConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ61, J72
2TimingTriggersConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ14, J97
2ViewportOutputConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ15, J98
2ViewportTriggersConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ7, J93
1180RResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR5
14.7uFCapacitor_SMD:CP_Elec_4x3C71
14053Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU60
150RResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR6
174ALS138Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU91
174LS148Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU68
174LS21Package_SO:SO-14_3.9x8.65mm_P1.27mmU61
174LS21Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU104
174LS245Package_SO:SO-20_5.3x12.6mm_P1.27mmU70
174LS373Package_SO:SO-20_5.3x12.6mm_P1.27mmU30
175RResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR4
1CY62256-70PCPackage_DIP:DIP-28_W15.24mmU71
1ControlConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ59
1Host Control BusConnector_PinHeader_2.54mm:PinHeader_1x16_P2.54mm_VerticalJ4
1Reg0Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ63
1Reg1Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ64
1Reg2Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ65
1Reg3Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ66
1Reg4Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ67
1Reg5Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ68
1Reg6Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ69
1Reg7Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ70
1VIDEO IOConnector_IDC:IDC-Header_2x10_P2.54mm_VerticalJ1

More from jimbro1000/DIY-Video

2
  • 2 layers133.4 × 62 mmDIY Register Block, the printed circuit board in 3D

    DIY Register Block

    jimbro1000/DIY-Video

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

    44 parts1
  • 4 layers32.6 × 20.4 mmDIY Register, the printed circuit board in 3D

    DIY Register

    jimbro1000/DIY-Video

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

    17 parts1

Similar boards

  • 2 layers364 × 203 mmCPU6S, the printed circuit board in 3D

    CPU6S

    Meisaka/CenMiniCom

    Centurion Minicomputer Schematics

    240 parts8
  • 2 layers400.9 × 280.5 mmAleste520v4, the printed circuit board in 3D

    Aleste520v4

    lucedoriente/Aleste520ex

    Western version of 1993 Z80 russian computer

    345 parts4GPL-3.0
  • 2 layers426 × 307 mmI7000, the printed circuit board in 3D

    I7000

    felipesanches/Itautec_I7000_KICAD

    Esquemáticos do computador Itautec I-7000 G desenhados a partir de inspeção do circuito das PCBs

    115 parts
  • 2 layers476.5 × 299.5 mmVideo, the printed circuit board in 3D

    Video

    stonedDiscord/MonacoGP

    Sega MonacoGP TTL Boards

    208 parts1
  • 2 layers630 × 300 mmSecretBase, the printed circuit board in 3D

    SecretBase

    stonedDiscord/SecretBase

    SEGA Secret Base Arcade Game

    441 parts
  • 2 layers228.1 × 172.7 mmADV-16 CPU, the printed circuit board in 3D

    ADV-16 CPU

    abzman/Northstar-Advantage-Cards

    113 parts4Unlicense
  • 4 layers194.5 × 188.6 mmMyCpu, the printed circuit board in 3D

    MyCpu

    fortinsylvain/MyCpu

    Home brew CPU Hardware with 1-bit ALU implementation using 74LSxx, a micro-code and assembler coded in C#.

    162 parts18MIT
  • 4 layers254 × 137.7 mmS100 ColorMagic-1.1-006, the printed circuit board in 3D

    S100 ColorMagic-1.1-006

    RichCini/LomasBoards

    Small repository of files/data related to Lomas Data Products S-100 boards.

    150 parts1

Questions

How big is the DIY Video PCB?

It measures 236.8 × 240.9 mm and has 4 copper layers, 1.6 mm thick.

What parts does the DIY Video use?

315 parts, built around the 74LS245SC, 74LS373SC, 74LS163APC and CD4066BM. 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 DIY Video KiCad files?

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

Can I use the DIY Video design in my own project?

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