I'm building a VGA controller using discrete logic chips. I just about have my Vsync and Hsync pulses up and running, using counters, magnitude comparitors, and SR latches. So far, so good.
Just to head off any "That's doing it the hard way, just use a micro" or similar posts, this is a hobby. I am doing it the hard way purpose!
OK, this thing is gonna be a video controller for a 6502 homebrew computer I've already built. I want to ween it off the serial to PC connection I'm currently using for screen/keyboard and make it self sufficient.
I am using a modern LCD monitor that has a VGA input.
The native timing of my controller is standard 25.175 MHz 640x480.
In its current incarnation, the controller will have 64k of dual ported SRAM. I will use some hardware/software trickery to have this memory reside outside of the normal address space if the CPU.
64k is not much memory for video (I may go much larger later, but let's pretend I won't for now). Thus, if I want any kind of color, I need a smaller resolution.
My question I'm taking forever to get to it this: Assuming I'm using a modern LCD, and my pixel clock is locked at 25.175 MHz, can I cut the resolution in half just by halving the duration between Vsyncs and Hsyncs respectively?
I guess I just don't really know what happens on the monitor side of things. Just because I'm stepping through memory at 25.175 MHz, what tells the monitor to clock in pixels at that rate?
Also, let's say I cut my time between Hsyncs in half. How (if at all) would the monitor know to use the whole screen to draw larger pixels, rather than half the screen to draw small pixels.
My current plan was to do 320x240 was to send Hsyncs at the original speed, but step through memory at half speed so that it writes the same pixel twice.
I'd then draw that whole line again on the next horizontal cycle by (somehow) backing up the counter that steps through memory.
This seems arduous. Is my idea of changing the pulse timing better/possible?
Sorry for the rambling!
Sent from my E6830 using Tapatalk