[HN Gopher] VGA driver using PIO and DMA on the RP2040
       ___________________________________________________________________
        
       VGA driver using PIO and DMA on the RP2040
        
       Author : vha3
       Score  : 52 points
       Date   : 2023-06-02 13:08 UTC (9 hours ago)
        
 (HTM) web link (vanhunteradams.com)
 (TXT) w3m dump (vanhunteradams.com)
        
       | andrewstuart wrote:
       | Related:
       | 
       | Adafruit Feather RP2040 with HDMI Output Port
       | 
       | https://youtu.be/Nsvf5gnYErs
       | 
       | https://www.adafruit.com/product/5710
       | 
       | Generating PAL
       | 
       | https://hackaday.com/2023/01/24/generating-pal-video-with-a-...
        
         | raphlinus wrote:
         | I have the Adafruit DVI board and have been hacking on it some.
         | It's more fun than should be allowed.
         | 
         | There's a project to get this running using Rust[1]. Currently
         | it outputs the blue channel with sync, but has trouble with the
         | other two channels. I don't have a hardware lab with scope,
         | logic analyzer, etc., so it's not easy for me to debug.
         | 
         | In the meantime, I've been doing some experiments in the C
         | codebase as well[2], mostly in the direction of proportionally
         | spaced bitmap text, using the fonts in the X11 distribution.
         | 
         | [1]: https://github.com/DusterTheFirst/pico-dvi-rs
         | 
         | [2]: https://github.com/Wren6991/PicoDVI/pull/48
        
           | andrewstuart wrote:
           | Be nice if the board had wireless built in, though I believe
           | adafruit provides a clip on wireless module.
        
       | boricj wrote:
       | This reminds me of the Uzebox [1], a video game console based on
       | an ATMega644, but the RP2040 in this looks far more powerful at a
       | glance. How far could this realistically be pushed?
       | 
       | [1] https://uzebox.org/
        
         | vardump wrote:
         | At least this far. https://www.youtube.com/watch?v=eDVazQVycP4
         | 
         | RP2040 running Doom, includes VGA, Adlib emulation, PCM sound
         | effects, 4 player "LAN". Pretty much the same experience as
         | Doom on a DOS PC.
         | 
         | 264 kB of total RAM is the main restriction.
        
       | _Microft wrote:
       | OT but a question I'm curious about: what features would people
       | who have a lot of experience with the RP2040 like to see on a
       | successor?
        
         | mtreis86 wrote:
         | Better power consumption, especially in deep sleep. Make waking
         | up cheap too, especially for some IOT purposes, like grabbing a
         | sensor reading every couple minutes and storing it in a queue
         | for future burst transmission. Optimize for that sorta thing.
         | Measure in nanoamps.
        
         | polpo wrote:
         | More than 32 instructions per PIO block: my main current
         | project (PicoGUS) uses 32 instructions on one PIO block and 31
         | on the other to handle ISA IO, ISA DMA, I2S audio out, and SPI
         | PSRAM access. Having more would let me cut a few less corners
         | in how ISA is handled.
         | 
         | More/more flexible PIO instructions: branching is very limited,
         | you can only arbitrarily SET up to 5 pins or pindirs at once
         | (increasing to 8 would be a godsend), stalling with a sideset
         | repeatedly executes the sideset, etc... I could go on.
         | 
         | Memory mapped PSRAM: I made a library to assist with accessing
         | SPI PSRAM but it's still just functions to get/set groups of
         | bytes. An intelligent cache around it would also mitigate the
         | much higher latency of accessing PSRAM as well.
         | 
         | More SRAM: everyone can always use more RAM!
         | 
         | More GPIOs: everyone can always use more GPIOs!
        
         | cdcarter wrote:
         | Another pair of PIO blocks (and two more DMA channels) is my
         | desire. I think a lot of people would love to see a (slightly
         | more expensive) variant with more uncommitted GPIOs.
         | 
         | My pet projects with the Pico and clones involve interfacing
         | with an 8-bit processor, and the RP2040 just doesn't expose
         | enough pins for the full data, address, and control busses AND
         | actually doing something interesting with the outside world.
         | 
         | Another dedicated USB PHY peripheral would also be great, a lot
         | of people lose a PIO block to adding a second USB port.
         | Obviously this also shows the power of PIO, but it's nice to be
         | able to reserve those blocks for more obscure physical things.
         | 
         | I bet a lot of people would like more analog pins, the Teensy
         | provides a lot more, for example.
        
         | vardump wrote:
         | Memory mappable PSRAM support would be nice.
         | 
         | Or more pins and more PIO as well.
         | 
         | I guess more SRAM wouldn't hurt either.
        
         | happycube wrote:
         | I haven't done a lot per se, but 480Mb USB would be nice.
        
           | [deleted]
        
           | duskwuff wrote:
           | USBHS is fairly hard to support without an off-chip
           | transceiver. There's a reason why most low-cost
           | microcontrollers are USBFS only.
        
         | CarVac wrote:
         | One more core, one more PIO, and more SRAM.
        
       | vinkelhake wrote:
       | Here's another [1] project that does VGA output from an RP2040
       | (the project also includes some game). There's also some support
       | for VGA in the pico_extras [2] repo.
       | 
       | [1] https://kilograham.github.io/rp2040-doom/ [2]
       | https://github.com/raspberrypi/pico-extras/tree/master/src/c...
        
       | macjohnmcc wrote:
       | The PicoMite VGA project does something like this as well but has
       | the added benefit of having a very full featured BASIC
       | interpreter built in.
       | 
       | https://geoffg.net/picomitevga.html
        
       ___________________________________________________________________
       (page generated 2023-06-02 23:02 UTC)