Vectron VGA Plus generates a [email protected] VGA signal and has an interface that works with retro computers or microcontrollers.

Overview

Vectron VGA Plus

Vectron VGA Plus generates a [email protected] VGA signal and has an interface that works with retro computers or microcontrollers.

Screenshot of Vectron VGA Plus running a demo:

How It Works

I previously built a massive 7400-logic based VGA generator called Vectron VGA. While it was a nice project to build, it is huge, and not very practical to keep around for use in lots of other projects. I built Vectron VGA Plus as a much smaller, simpler alternative.

The key change that simplified the design was to use more RAM and less logic. So, for example, instead of having counters and flip flops, etc. to time each horizontal sync, that logic is embedded in the data in memory. This new design was also used to create a PCB, and the KiCad files are here.

The general overview of the design goes like this: a 25.175 MHz pixel clock (divided in half by a flip flop) is used to trigger a chain of 4 bit counter chips. These counters form an address in memory, and bits from the data stored at that memory location represent red, green, blue, horizontal sync, and vertical sync. When the end of a frame is reached, magnitude comparators reset the counters, and it all starts over for the next frame.

Of course you also need to get data in to the RAM, so there are some buffer chips and mode selection signals to allow an external device (e.g. retro computer or microcontroller) to take over bus control and write RAM as needed.

As I mentioned, the 25.175 MHz clock has been divided by 2, which yields a viewable resolution of 320 horizontal pixels. To keep logic simple, the vertical resolution is kept at 480 lines, technically giving an odd resolution of 320x480, but it is expected that in actual use, the external device is going to double up horizontal lines, giving a standard resolution of 320x240. 3-bit color was implemented, yielding a palette of 8 colors.

Since even non-visible screen regions need to be represented in the RAM (for blanking periods and V-sync/H-sync timings), RAM usage is higher -- 320x480 requires 210KB of video RAM (I used a 512KB chip that I had on hand, but a 256KB chip would be sufficient). That's a bit extravagant for the 80s-esque 6502-based retro computers that I build, but it's also, I think, within bounds for a pure retro device (as opposed to using a microcontroller or FPGA). In addition to the reduction in chip count, this design also pays off in flexibility; timings can be tweaked by adjusting the contents of memory, even after the PCB has been finalized.

Media

An Arduino Mega 2560 sending images to Vectron VGA Plus:

Oops! I picked the wrong footprint for my oscillator! Fortunately, I could still solder the pins to the pads.

Schematic:

Breadboard prototype of circuit:

Bill of Materials

  • 1 x 25.175 MHz oscillator
  • 1 x 74LS74AN
  • 5 x 74LS161
  • 2 x SN74LS682N
  • 1 x SN74HC32N
  • 1 x 74LS04N
  • 2 x SN74LS245N
  • 4 x SN74LS244N
  • 1 x AS6C4008-55PCN
  • 1 x 74LS273
  • 3 x 200 ohm resistors
  • 3 x 100 ohm resistors
  • 2 x 200 uF electrolytic capacitors
  • 1 x VGA connector
  • 36 x female header pins

About the Author

Nick A. Bild, MS

Issues
  • Add license information

    Add license information

    Hello!

    I found this repository from https://hackaday.com/2021/12/14/a-slim-7400-logic-vga-board-for-all-your-retro-needs/

    Could you please add information about the license of this repository — is it allowed to copy, change and use the code and images in any purpose? It would be great to see any popular open source license.

    opened by vazhnov 2
Owner
Nick Bild
R&D, creativity, and building the next big thing you never knew you wanted are my specialties.
Nick Bild
Retro Tiny Multitasking system for Z80 based computers

RTM-Z80 RTM/Z80 is a multitasking kernel, built for Z80 based computers, written in Z80 assembly language, providing its users with an Application Pro

ladislau szilagyi 99 Jul 20, 2022
multi-sdr-gps-sim generates a IQ data stream on-the-fly to simulate a GPS L1 baseband signal using a SDR platform like HackRF or ADLAM-Pluto.

multi-sdr-gps-sim generates a GPS L1 baseband signal IQ data stream, which is then transmitted by a software-defined radio (SDR) platform. Supported at the moment are HackRF, ADLAM-Pluto and binary IQ file output. The software interacts with the user through a curses based text user interface (TUI) in terminal.

null 57 Jul 23, 2022
This is a C plus plus coding template for Compitative programming. This template is very optimized for the Online Judgment

C-plusplus-compitative-Programming-Template Tech We Used C++ Features Easy to compile Easy debug facility Analysised and optimized base template Steps

Alan Binu 15 Jan 27, 2022
Fix some extrinsic parameter importing problems. 6-axis IMU works now. Lidar without ring works now.

LVI-SAM-MODIFIED This repository is a modified version of LVI-SAM. Modification Add function to get extrinsic parameters.The original code assumes the

null 70 Jul 21, 2022
VGA/TV display on Raspberry Pico

PicoVGA - VGA/TV display on Raspberry Pico

Miroslav Nemecek 92 Aug 1, 2022
Pi Pico VGA Terminal Emulator For RC2014

picoterm Pi Pico VGA Terminal Emulator For RC2014 PicoTerm is a terminal emulator written specifically for this module. Currently it runs 80 columns b

RC2014 17 Jul 15, 2022
Lock you keyboard and clean your screen. A simple, and easy way to clean your computers.

Pristine Cleaner A screen and keyboard cleaning application made to turn screen black, and lock keyboard for easy cleaning. With features such as star

Rhino Inani 2 Jan 16, 2022
SerenityOS - Graphical Unix-like operating system for x86 computers. 🐞

SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.

SerenityOS 20.6k Aug 1, 2022
You can get hwid serialnumbers of computers with this library!

HWID Grabber! You can get hwid serialnumbers of computers with this library! How it work? It works with Windows WMIC app. So, you can use all serialnu

Fahrettin Enes 3 Jan 17, 2022
Port of the uxn virtual machine to Atari computers (800/1200XL)

uxnatr Port of the uxn virtual machine to Atari computers (800/1200XL). This project's objective is to implement an interpreter (and possibly a compil

João Felipe Santos 6 Jan 20, 2022
Proyecto indie retro game: para SEGA Mega Drive/Genesis, creado con SGDK

Penguin-World Proyecto indie retro en desarrollo: Plataforma: SEGA Mega Drive/Genesis Que está desarrollado: +Logos + Titulo + Música +Primera Zona de

Alice Sim1 12 Jul 27, 2022
ControllaBLE - A retro-controllers to Bluetooth BLE adapter

ControllaBLE - A retro-controllers to Bluetooth BLE adapter This is an ESP32 based controller adapter that outputs as a dual joypad through Bluetooth

null 13 Dec 1, 2021
A combined suite of utilities for exporting images to retro formats.

ImageTools A combined suite of utilities for exporting images to retro formats. It was developed for use on Windows but might compile on other systems

David Walters 4 Dec 6, 2021
Itpp - IT++ library mirror/fork. C++ library of mathematical, signal processing and communication classes and functions.

Introduction ************ IT++ is a C++ library of mathematical, signal processing and communication classes and functions. Its main use is in simula

null 18 Apr 9, 2022
The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.

PNT Integrity Library The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby

Cybersecurity and Infrastructure Security Agency 40 Apr 28, 2022
Digital control and signal processing library for DSPs developed in C

digital-control Overview Thisis a simple C library containing very useful digital control and signal processing functionalities destinated for DSP's a

CLECIO JUNG 3 Jul 11, 2022
tiny_csg is a C++ library that generates meshes from brush-based level data and supports incremental updates (real-time CSG).

tiny_csg is a C++ library that generates meshes from brush-based level data and supports incremental updates (real-time CSG). It is intended to be used as a backend in 3d level editors and/or generators.

Luka Aleksić 28 Jul 14, 2022
The Synthesis ToolKit in C++ (STK) is a set of open source audio signal processing and algorithmic synthesis classes written in the C++ programming language.

The Synthesis ToolKit in C++ (STK) By Perry R. Cook and Gary P. Scavone, 1995--2021. This distribution of the Synthesis ToolKit in C++ (STK) contains

null 793 Jul 30, 2022
Digital Signal Processing Library and Audio Toolbox for the Modern Synthesist.

Digital Signal Processing Library and Audio Toolbox for the Modern Synthesist. Attention This library is still under development! Read the docs and ch

everdrone 78 Jul 24, 2022