Skip to the content
PCBKitNew board
4 layers276.9 × 172.7 mmSimplevideo, the printed circuit board in 3D

Composite/component video output for homebrew 6502 computers

Size
276.9 × 172.7 mm
Copper layers
4
Thickness
1.6 mm
Parts
65
Nets
149
Pads
636
Tracks, vias
1,801, 759
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
12 Jun 2020
Updated
4 Oct 2022

Overview

Simplevideo is an open-source printed circuit board by gfoot, from the gfoot/compvideo6502 repository on GitHub, published under the Unlicense licence. It is a 4-layer board of 276.9 × 172.7 mm with 65 parts on 149 nets, routed with 1,801 tracks and 759 vias.

It is built around the 74LS245SC, CD74HC40103E and 74HC74D, with the 74LS74PC, 74LS00SC and 74LS166AP-E among its other parts. Its parts include 31 ICs, 11 capacitors, 11 resistors, 4 diodes and 4 connectors. It belongs with the retro computing and games boards of this library.

Main components

7

README

README.md

Composite/component video controller for homebrew 6502 computers

This is my second iteration video output circuit for homebrew 6502 computers. It's designed to work in a way that's fairly close to how early 80s microcomputers tended to work, which means RAM shared between CPU and video controller, as this tends to provide the fastest possible access for the CPU to the video memory.

In this second iteration, the main change from V1 is that the timings are easily configurable, allowing it to support NTSC as well as PAL with just a few jumper changes, as well as non-standard sync timings if you want to experiment; and the image placement and size is also easily configurable.

You can also use interlacing to double the vertical resolution to 512 pixels, and if you swap the clock crystal and adjust some other timings, you can double the horizontal resolution as well.

More involved, higher clock frequencies and maybe more counters would also allow HD resolutions such as 720p and 1080i, though I haven't tried those yet, and VGA if you also change the output layer to output plain RGB.

The limiting factor at these higher resolutions becomes memory - 384x256x2 already uses nearly half of the RAM. I'm considering addressing this through a banking scheme in an upcoming V3.

Project contents

This project contains:

  • Full KiCad schematics for the new design (also available in PDF format)
  • A "PCB" layout that represents how you could build this on an array of five breadboards

This includes the 6502, RAM, ROM, oscillator, reset circuit, and address decoding circuits, along with the video controller. If you're already happy with the way you're doing those in an existing system then you could mostly keep your old design instead, but the RAM and clock need to be integrated here, in order to be shared with the video controller.

Next steps and expansion ideas

There are a few things I plan to do next, and I'm not sure what the order will be. Feedback/contributions welcome - let me know if you try these or have other ideas!

  • Upload some OS code - I have the code from my previous iteration which should work pretty well
  • Document and explain it, maybe make a step-by-step build-and-test guide, video tutorial, or something like that
  • Make some games for it! That was the whole point really, having a video output circuit that's fast enough to support the kinds of game I grew up playing
  • Colour output - using component video, pretty simple to add
  • Higher resolutions? Doubling the horizontal resolution is possible with the right pixel frequency (13.5MHz instead of 16MHz) - and doubling the vertical resolution also works fine through interlacing. Component video can also go up to 1080i I think, but can't find good specs on the sync frequencies for that.
  • VGA output? It's fairly similar, just higher frequency - but may be possible by swapping the crystal and adjusting the timings.
    It's why I wanted to make this more configurable than my first one.
  • Planar video memory, as used on EGA and VGA graphics cards on PCs - I've always found it an interesting architecture, and it seems like a good way to implement colour output without needing faster memory
  • Software control over the timing registers would be very neat and not very hard to do

Caveats

The output impedance isn't exactly what it's meant to be, but it's close enough I think.

The 16MHz base frequency is what the BBC Micro used back in the day, but I think in the digital age the standard pixel sampling frequency for SDTV is 13.5MHz. As a result, on an LCD display you get blurring and moire effects at 8MHz; and at 16MHz you lose most of the pixel detail completely. I think with a 13.5MHz base frequency the picture would be sharper overall.

My first iteration output correct pre- and post-vsync equalization pulses, and serrations during the vsync; I left that out this time around as it doesn't seem to be necessary these days. Maybe I'm missing something though. As far as I can tell chips like the 6845 never supported this anyway - at least it's not mentioned in the datasheets. So I'm guessing that since at least the 1980s nobody has bothered with them.

I haven't worked out interlacing yet. Websites say that you can turn it off with the right combination of sync pulses, but my TV always says it's interlaced, so either I'm doing it wrong, or the TV just never says "576p" anyway. The design here is intentionally fully-interlaced, which might lead to increased vertical resolution in the end. It should be possible to uninterlace it with a small change to the sync timings. Actually I suspect that this is becase composite doesn't support progressive scan - with component video the non-interlaced mode might work better.

I used a lot of 74HCT40103s in this design - they're incredibly useful, and were fundamental to the simplification and tweakability of the timings in this design. However it seems they might be harder to find online than other chips I tend to use - I had to order a second batch, and it was harder to find them this time around. So maybe it wasn't the best choice... It's possible to use 74HCT163s instead, but you'll need more of them as they're only 4-bit counters.

Parts

65
QtyValueFootprintReferences
10220uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC2, C3, C4, C5, C6, C7, C8, C9, C10, C11
9CD74HC40103Package_DIP:DIP-16_W7.62mmU3, U7, U8, U10, U11, U12, U14, U15, U16
574HC74Package_DIP:DIP-14_W7.62mmU6, U9, U20, U30, U31
574LS245Package_DIP:DIP-20_W7.62mmU21, U23, U24, U28, U29
41N4148Diode_THT:D_DO-34_SOD68_P7.62mm_HorizontalD1, D2, D3, D4
3Conn_01x08Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ2, J3, J4
2100KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5, R11
21KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R6
24040Package_DIP:DIP-16_W7.62mmU4, U5
274LS74Package_DIP:DIP-14_W7.62mmU13, U17
110KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3
11uCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1
120Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR8
1200Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR7
122kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1
128C256Package_DIP:DIP-28_W15.24mmU27
12K2Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR9
12N3904Package_TO_SOT_THT:TO-92_InlineQ3
12N3906Package_TO_SOT_THT:TO-92_InlineQ1
1330Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR4
147Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR10
162256Package_DIP:DIP-28_W15.24mmU26
174LS00Package_DIP:DIP-14_W7.62mmU19
174LS08Package_DIP:DIP-14_W7.62mmU2
174LS138Package_DIP:DIP-16_W7.62mmU32
174LS166Package_DIP:DIP-16_W7.62mmU25
174LS32Package_DIP:DIP-14_W7.62mmU22
1CXO_DIP8Oscillator:Oscillator_DIP-8X1
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ1
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1WD65C02_Package_DIP:DIP-40_W15.24mmU18

Questions

How big is the Simplevideo PCB?

It measures 276.9 × 172.7 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Simplevideo use?

65 parts, built around the 74LS245SC, CD74HC40103E, 74HC74D and 74LS74PC. 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 Simplevideo KiCad files?

From the gfoot/compvideo6502 repository on GitHub, at the commit this page was made from: the board is simplevideo/simplevideo.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Simplevideo design in my own project?

Its repository publishes it under the Unlicense 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 layers337.6 × 105.7 mmISA CGA, the printed circuit board in 3D

    ISA CGA

    hkzlab/CGA_Redux

    The Color Graphics Adapter Redux board is a more or less faithful clone of the original IBM CGA, based on the original schematics

    170 parts56
  • 2 layers239.6 × 239.9 mmTK3000, the printed circuit board in 3D

    TK3000

    clemarfolly/TK3000

    Réplica do Microdigital TK3000

    329 parts7GPL-3.0
  • 2 layers450 × 160 mmSquale, the printed circuit board in 3D

    Squale

    jfdelnero/Apollo_7_Squale

    Apollo 7 Squale computer dev tools

    219 parts6
  • 2 layers221.5 × 149.5 mmZX1, the printed circuit board in 3D

    ZX1

    misterblack1/zenith_zt1

    Information gathered on the Zenith ZT-1 / ZT-10 / ZT-11 and ZTX/ZT-x-A variants

    140 parts5
  • 2 layers407 × 184 mmTRS-80-Model I Jap50-E1, the printed circuit board in 3D

    TRS-80-Model I Jap50-E1

    RetroStack/TRS-80-Model-I-Jap50-E1

    Hardware Replica of the TRS-80 Model I Revision HE11E011550

    253 parts1MIT
  • 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 layers236.8 × 169.8 mmTK2000, the printed circuit board in 3D

    TK2000

    clemarfolly/Microdigital-TK2000

    Reprodução da PCB do TK-2000 da Microdigital, clone do Micro-Professor MPF-II

    212 parts17
  • 2 layers338.7 × 107.7 mmQuapple, the printed circuit board in 3D

    Quapple

    kitspace-test-repos/kicad6-file-collection

    122 partsMIT