Synthesizing video output with microcontrollers
Posted: Tue Nov 03, 2020 2:50 am
I almost put this in OS development because it's almost a driver issue. How long until we get a hardware subforum?
Carrying on from another thread:
I'll admit I intentionally put off considering bandwidth. Maybe I won't be able to get the resolution I want, but there are some points I'm hopeful about:
A resistor ladder DAC would make things harder. This is particularly the case with breadboard because it has capacitance between adjacent strips. The uC would have to drive that capacitance through the resistors of the DAC, creating unwanted low-pass filters. The same is true for perfboard if you're not careful with the wires. Primarily for this reason, I'm not considering more than 8 colors at most; one digital signal per RGB wire. I also don't want to put the impedance matching resistors into breadboard for the same reason.
There are some success stories, although not at anything like the size I'm dreaming about. Actually, while some of them drive VGA, most apparently slow down the pixel clock.
I might have misunderstood, but I think I heard LCD panels can be run at a much slower frame rate than CRTs or the VGA standard. If true, this could ease bandwidth requirements considerably.
That's all I've got for now.
Edit: Worst-case scenario is synthesizing a TV signal for lower bandwidth than VGA. 47x29 text on TV and 24x10 on VGA with the same uC.
Carrying on from another thread:
Octocontrabass wrote:Are there any microcontrollers fast enough for that? Ordinary 640x480 VGA requires a 25MHz pixel clock!eekee wrote:Graphics will likely be another microcontroller dynamically generating the video signal.
If you can squeeze 128 pixels in each byte, you're good to go. Perhaps something with tiles like VGA text mode instead of individually-addressable pixels?eekee wrote:The other day, I tried to work out if I could get 1080x1920 with only 16KB video memory.
Text does seem to be the way to go for large screens. I'd rather have a text-only large display than low-res graphics.bloodline wrote:I have bit banged a black and white VGA signal using a Teensy 4.0 (600Mhz ARM uC). This only requires three signals (H Sync, V Sync and Video), I couldn’t get the GPIO switching fast enough to change 24 pins per pixel. I did try and even built three resistor ladder DACs on breadboards to tests itOctocontrabass wrote:Are there any microcontrollers fast enough for that? Ordinary 640x480 VGA requires a 25MHz pixel clock!eekee wrote:Graphics will likely be another microcontroller dynamically generating the video signal.
On the Teensy forums, some members have had more success using the uC’s DMA...
I'll admit I intentionally put off considering bandwidth. Maybe I won't be able to get the resolution I want, but there are some points I'm hopeful about:
A resistor ladder DAC would make things harder. This is particularly the case with breadboard because it has capacitance between adjacent strips. The uC would have to drive that capacitance through the resistors of the DAC, creating unwanted low-pass filters. The same is true for perfboard if you're not careful with the wires. Primarily for this reason, I'm not considering more than 8 colors at most; one digital signal per RGB wire. I also don't want to put the impedance matching resistors into breadboard for the same reason.
There are some success stories, although not at anything like the size I'm dreaming about. Actually, while some of them drive VGA, most apparently slow down the pixel clock.
- VGA text and graphics with an Espruino Pico, whatever that is. Looks like 32-column text
- VGA test output with the minute 8-bit PIC16F84A
I might have misunderstood, but I think I heard LCD panels can be run at a much slower frame rate than CRTs or the VGA standard. If true, this could ease bandwidth requirements considerably.
That's all I've got for now.
Edit: Worst-case scenario is synthesizing a TV signal for lower bandwidth than VGA. 47x29 text on TV and 24x10 on VGA with the same uC.