VGA from an EPROM, is it possible.

preview_player
Показать описание
Here I build an EPROM-based raster generator to show that it is a finite-state machine.

The Apple ][ raster generator series starts here:
Рекомендации по теме
Комментарии
Автор

Out of interest (for my benefit), to anyone who had just discovered this channel for the first time, how did you find it?

DrMattRegan
Автор

Loved my GeForce GTX 460 a lot. Really stable card and surprisingly capable for the time. Thank you for your work on that!

BinaryCounter
Автор

This video appeared in my recommended videos. Just from the title and screenshot, not yet having watched your video, I recognized that you might be using a ROM sequencer, a technique which I love and I myself used before in the early 80s to create fast complex control circuits in place of using a slower and more expensive microprocessor where the algorithm was straightforward and repetitive. Such designs were common in tech companies in Southern California that I worked for in those days. A few years later I was using PALs to do similar things. I might be wrong, as I'm writing this before having watched your video as I wanted to reply to your request as to how I found your video. 😊

dipaoloboat
Автор

This was very interesting for me. I have been scouring youtube for videos on how to design VGA circuits for retro computers. I have seen this type of formula before. First time I have seen it using eproms. It gave me a couple aha moments so I will need to study this video several times. Thanks for all your hard work.!

joeysartain
Автор

I wonder what if would look like if you errased it while it was displaying an image

LunaWuna
Автор

13:15 this is why I often use simple constexpr functions for doing odd bit manipulation like this.

You could have something like the following (ignore the bad name):
constexpr int getColorBits(int value, int color){ return (r&0xe0)<<color; }

So that mess of bit shifting becomes … |= getColorBits(r, RED) | getColorBits(g, GREEN) | getColorBits(b, BLUE) …

If you have optimization on, it will produce identical code for simple cases like this. Plus, if something goes wrong, you have all of the logic packed away into small units that are easy to test.

In this case, it’s obviously overkill. But I’ve found it very handy if you’re doing a mess of port manipulation or weird bit twiddling, especially when working with others.

pyromen
Автор

interesting yt reccommended, very interesting

jan_harald
Автор

Great video

What is the EEPROM program u are using at 13:33 to debug if your VGA generation is working?

Also how can you write a paper on something that is interesting to you?

For instance: I am interested in transmission and receiving of analog audio and picture (CQUAM Stereo, PAL, NTSC, etc)

But this is old and everyone wants digital nowadays so are there any guidlines on how to express this diferently so it would seam like something new and exiting, rather then giberish that some lunatic that is living in the past is writing about

Sorry for wierd question I hope you understand it
TLRD: how to take some old concept and turn it into something new and exiting that could be good enough for a research paper?

Veso
Автор

Really great video and nice implementation. If only I had this kind of info when I tried bit banging basic VGA video on microcontrollers in the mid 1990s :) Would have saved me many weeks of hair pulling !!

AndyGraceMedia
Автор

Congratulations on getting so many viewers for this video. Your material deserves an audience. I liked how you stored the next pixel address in the EEPROM. That simplified your circuit compared to similar projects I've seen. They usually use external counter IC's plus logic to reset the counters. Your approach has a much smaller part count.

mheermance
Автор

Great application of this technique. Woz built his Apple II floppy disk controller around a 256-byte PROM-based logic sequencer similar to this. The rest is software running on the Apple II host to manipulate an 8-bit command register. It saved dozens of chips and made the disk controller very inexpensive compared to contemporary ones. I'm sure you already knew this but it is a fascinating example of lateral thinking nonetheless.

xotmatrix
Автор

Wow, it's literally been decades since I've seen anyone write GDI code :)

MrGencyExit
Автор

Cool video, though I’m not sure I entirely understand. Is that starman frame-buffer stored in the EPROM? Or is it coming live from somewhere else?

Wonder what it’s like to bit-bang DVI, considering most non-CRT monitors have digital circuitry in them anyhow.

Scrogan
Автор

Seems like a huge pain in the ass to generate NTSC with code. I still use an old 80s B&W television set that does all of this, purely analog, with a few handfuls of components and some good old fashioned high voltage to watch my old black and white movies. Sometimes nothing beats simplicity.

RC-nqmg
Автор

Why did you leave NVIDIA and what are you doing now?

SDX
Автор

It was fun. Love it. Figured out what's actually going (how it's EPROM?) when you ran VS2022 )

P.S. what's for timings issues 13:54 it's not actually correct : as I can see on M27C322 spec the ACCESS TIME: 80ns and PROGRAMMING TIME: 50μs/word; so it's actually even worse than I thought it's actually 80 ns for reading. But I think this time might be overrun by 'multiplying' this scheme. The idea is to split it to 2 parallel 'nodes' to read every second pixel from the second one while the first one is still being processed. It should give you exactly 40ns per pixel you need. It might ) I need to think over it; thanks again for the fun!

wonigu
Автор

I got this far with my thinking after watching your Apple II video generation series, and worked out that you could interleave EPROMs to generate full-resolution VGA, and then skipped past that to a RAM framebuffer. I even went the next step of working out making each pixel be a palette entry of 2048 colors.

It fell down rapidly after that because designing a tiler engine is non-trivial at any resolution without resorting to CPLDs/FPGAs, and that's a bit beyond my ken for now.

knghtbrd
Автор

thank you very much for making this video! I'm a computer engineering student and am currently making a VGA circuit that small and compact to go with my other projects. Say do you know how I could make a hardware text mode for these circuits?

yoshimitsusunny
Автор

That EPROM isn’t available / in stock is it? I looked for some DIP EEPROMs and the ones available ( X28C512P-12 ) are pretty low capacity (64K x 8 bit) and slow (120 ns). Also I was starting to wonder how I’d build something that can support higher resolutions. Maybe some kind of RAM instead and you’d copy the ROM to RAM (with a CPU?) at startup to get the video working. Or using multiple EEPROMs and somehow divide the clock between them! I have an FPGA (Digilent Arty, with VGA PMOD hooked up to it) and it can put out 1080p VGA signal (148.5 MHz pixel clock), maybe even higher. But I hate the tool chain and dependencies involved (Vivado in my case, for Xilinx chips).

drivers
Автор

When it's a green monochrome monitor it's referred to as a Rasta beam.

johnbillings