8Bit Video Card

1 year ago

Profile:8 bit video card designed for my Z80 homebrew system. Experiment in both video signal generation and as an introduction to using GALs.

Open source license: GPL 3.0

  • 1.8k
  • 1
  • 3


NOTE: EasyEDA shows the most recent WIP for this project, which might be part way through me making changes. Before using the PCB layout please do get in touch (comment or message) so I can let you know if what you're seeing is stable! I create labelled versions of the project, but EasyEDA doesn't allow me to publish a specific version :-(

GAL code is available on GitHub.


An 8 Bit memory mapped, character based monochrome video card. Similar to many 70's and early 80's computers like the Commodore Pet, Sharp MZ80K and TRS80. Main features are:

  • 640x480 display
  • 80 characters per row
  • 30 rows
  • 8x16 pixels per character
  • Software defined character set.

I've discovered and used GALs rather extensively to do most of the decoding.

The board is designed to provide video output for my Z80 SBC design. As such it makes use of the 4MB address space provided by that card. The video memory maps into the top 16K page. 0-4K of that page is the character generator (256 characters, 16 bytes each) and 8K-12K is the video memory, of which the first 2,400 bytes are displayed (80x30 characters).

To make my life easier for my first foray into video cards I've used dual port memory. This is relatively expensive and low capacity but trying to get my head around bus arbitration logic while trying to understand how to generate a VGA signals and learn to use GALS was more than I wanted to deal with at the time.

I've used a 74597 shift register to generate the bit stream. This has the benefit of having a parallel latch independent of the shift register which would make bus arbitration much simpler. That's for a next version if I decide to tackle the more complex memory interface.

I/O port

I've also included an 8 bit output and 8 bit input port on this card because I didn't have room on the CPU card for this. The port is there primarily in my mind to let be add a simple game keypad.


Dual Port Memory

Open in editor


Open in editor

Parallel I/O

Open in editor

Address Counter

Open in editor

Control Signal Counter

Open in editor

Signal Output

Open in editor


ID Name Designator Footprint Quantity
1 DB15 U14 DB15 1
2 IDT7134 U1,U2 DIP48-600 2
3 74ACT541PC U17 DIP20 1
4 Resistor SIL 4K7x8 RP4 SIL-9 1
5 Header-Female-2.54_2x30 P2 HDR-30X2/2.54 1
6 ATF16V8B-15PC U6,U16 DIP20 2
7 ATF22V10 U5,U4,U7,U3 DIP-24_L30.5-W10.2-P2.54-LS7.62-BL 4
8 74ACT541 U18 DIP20 1
9 74HCT573N U12,U11,U15 DIP20 3
10 HDR-F-2.54_2x10 H1 HDR-F-2.54_2X10 1
11 Male Header 2.54mm PWR1 2.54MM_HDR_2PIN 1
12 74597 U13 DIP16 1
13 270R R3,R1,R2 R_AXIAL-0.4 3
14 62R R5,R4 R_AXIAL-0.4 2
15 100R R6,R7,R8 R_AXIAL-0.4 3
16 74LS161N U10,U8,U9 DIP16 3
17 100nf C13,C10,C9,C8,C7,C6,C14,C4,C3,C2,C1,C11,C12,C5 RAD-0.1 14
18 Oscillator 8/14 Pin Layout OSC1 DIP14 - OSCILLATOR 1


Project Members

Project Attachments


周一至周五 9:00~18:00
  • 0755 - 2382 4495
  • 153 6159 2675


周一至周五 9:00~18:00
  • 立创EDA微信号


  • QQ交流群


  • 立创EDA公众号