GDvi: Simplified HDMI for the Pico

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 พ.ย. 2024

ความคิดเห็น • 38

  • @iGNUiCould
    @iGNUiCould หลายเดือนก่อน +2

    This is cool. I hope it comes in handy. I'm currently trying to get DVI to display from the Waveshare RP2040 PiZero with the integrated mini HDMI port. Their example code doesn't compile, so...

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน +1

      Wow... that sounds cool. Be sure to set the DVI_DEFAULT_SERIAL_CONFIG in the CMakeLists.txt file to your device.

    • @Adnreus74
      @Adnreus74 22 วันที่ผ่านมา

      Successful? I have a board like that too.

  • @RixtronixLAB
    @RixtronixLAB หลายเดือนก่อน +1

    Nice info,thanks :)

  • @stevetodd7383
    @stevetodd7383 25 วันที่ผ่านมา +1

    While it’s interesting that you can make an RP2040 generate DVI, you have to ask why. For the same or less than one of these HDMI equipped Pis’ you can get a simple FPGA board with a HDMI port that is 720p capable, can include audio in the video signal and has 8MB of RAM for you to use as a frame buffer.
    TMDS isn’t that complex, if you download the HDMI spec documents then there’s an easy to follow flowchart that explains how to do it. The only thing you need to remember is that (with simple DVI video) you need to use TMDS encoding for the active parts of the screen (including any parts you may be using as a border) and special symbols for the sync regions. Once you have that solved and the set the correct clock frequency out (which FPGAs tend to be well suited for as they have programmable timing components) then you have all you need to generate either display list graphics (Atari 2600 style) or fully buffered video in up to 24 bit colour.

    • @drfrancintosh
      @drfrancintosh  23 วันที่ผ่านมา

      Thanks for these suggestions. Naturally you don't want to deliver a $20 devcard card plus your $4 Pico as a solution. There are cheaper ways to add an HDMI connector to your Pico.
      My interest in this is manyfold. Firstly I want video output for projects I deliver on the Pico. Often I'm stuck with a blinking LED (which is too little info) or a terminal connection via USB - which is not graphical and creates a dependency on a whole other computer.
      Secondly, the cost of FPGA is greater than $4 Pico. And the generally available prefab HDMI cards that connect to LVDS are bulky and power hungry. So, a $4 card that can display HDMI is pretty attractive.
      As for TMDS - I'm a beginner. So, just getting over the hurdle of understanding Wren's code was a high bar. I'm excited to learn more. I'm also interested in the RP2350 HSTX capabilities which may do a better job of driving DVI and possibly LVDS. My hope is to replace the classic "driver" boards ($30+) with a $4 chip.
      But in the meantime, having HDMI (or even VGA) output from my little Pico is a big improvement over humble LEDs.
      Thanks again for your thoughtful and informative reply. I'm excited to learn more and - FPGA is on my "learning roadmap." I hope you'll keep watching and will offer more feedback. This was very useful. Cheers!

  • @djsbriscoe
    @djsbriscoe 11 วันที่ผ่านมา

    Have you got an intro to how you setup your PI PICO C Dev environment?Thanks.

    • @drfrancintosh
      @drfrancintosh  6 วันที่ผ่านมา

      hello friend, I've been using a doctor image that makes my life super easy and you can find it on my GitHub

  • @the_hetman
    @the_hetman 2 หลายเดือนก่อน +3

    You should be able to do more with the Pico 2. Not only does it have faster cores, but I believe you can run the PIO at a faster clock rate than the CPU. Adafruit is also making a board that has the same ribbon connector that the larger Pis use to drive displays and I believe they sell an adapter to a HDMI connector.

    • @drfrancintosh
      @drfrancintosh  2 หลายเดือนก่อน +1

      Thanks, friend. Yes. I reference the Adafruit connector for HDMI. I want to try the same technique to drive LVDS displays. The Pico 2 is on my Christmas list, but I'm in no hurry. Thanks for commenting and subscribing!

    • @the_hetman
      @the_hetman 2 หลายเดือนก่อน +1

      @@drfrancintosh Yes, I saw the reference to the Adafruit HDMI break out board but the one that I was referring to is the one attached to the ribbon cable that works with the Adafruit RP2350 feather board.

    • @ryan.crosby
      @ryan.crosby หลายเดือนก่อน +1

      RP2350 has an additional HSTX output interface which includes a built-in TMDS encoder. So DVI output should be hugely simplified on the Pico2.

    • @scottspitlerII
      @scottspitlerII 17 วันที่ผ่านมา

      @@ryan.crosbywhat’s the runtime penalty for addressing PSRAM? Also do you know if the RAM can be encrypted and decrypted on the fly?

  • @MagnusWedmark
    @MagnusWedmark หลายเดือนก่อน

    Interesting. Thanks for the info. What I would think would be useful would be something that uses minimal memory and minimal CPU Cores => F.e. if you only need character display, a smart tightly packed char-set that are shown on-the-fly (like you mentioned bufferless sprites, but more like char-mode that is available on many machines like C64). End result would give you VGA/HDMI-output but still have both have most memory and all % CPU cores left for the actual application.

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน

      Thanks Magnus... that's on my road map. I just couldn't get to it in the week I allotted for this project. I *did* get the C64 chargen for the VGA version. Albeit not a proper text mode (just drawing on the framebuffer). But generic sprites using minimal cpu and ram is hard. and its quite custom. once you're done displaying the graphics, there isn't much time for other things in the cpu. but with the pico 2 there may be more headroom. Thanks for the reply!

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน +1

      BTW. I just updated the GVga library with text-only mode.

  • @KennethScharf
    @KennethScharf หลายเดือนก่อน +1

    I'm looking for a way to interface a retro microprocessor (such as a Z80 or 6502) to the pico running the DVI GPU code. I'd like to build a retro 6502 / 65C816 based computer with a DVI/HDMI video output, and the Pico is at least half the battle. How to interface that to the retro computer side? Probably have the micro processor bit bang SPI to the pico or provide an 8 bit parallel interface.

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน +1

      Check out the Agon Lite. It's a Z80 connected to a ESP32 as the display subsystem - a very similar architecture to what you're imagining. You might be able to use either the UART or I2c or SPI interfaces on the PICO to talk to your 6502 board. Or - the Pico is so fast that you could actually memory map the PICO to the 6502 and use the Address/Data bus for comms. Link below.
      th-cam.com/video/CQ_C_RvJJ9A/w-d-xo.htmlsi=Yt_nOPelMuc8M3ZZ&t=300

    • @ellisgl
      @ellisgl หลายเดือนก่อน

      Look at the Pico9918

    • @jan10n
      @jan10n หลายเดือนก่อน +1

      Yes, the Agon Lite uses an ESP32 for the display. But the Z80 in the Agon is actually more than just the CPU, it's an eZ80 microcontroller, with lots op perpherals. It talks to the ESP through a fast serial channel. But serial is still the bottleneck in speed.
      When using a bare CPU, I think 8 bits parallel may be the way to go. You could for example define a memory or i/o area (Z80) to be monitored by the Pico. Then just write commands or bitmaps to that area and let the Pico display it.
      Bitbanging SPI will be kinda slow, I think.
      Good luck with your project and let us know how it goes.

  • @jyvben1520
    @jyvben1520 หลายเดือนก่อน

    why not use 3 pico, guess the synchronisation would be hard, pico2 has more memory, hope to see that develop to dvi

  • @wakeupcanada1846
    @wakeupcanada1846 หลายเดือนก่อน

    i have a hdmi board nothing like yours its just the hdmi port the hdmi board is the same size and the pico how is it you load github files on pico?

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน

      in your case, be sure to set the defined constant for the hdmi settings in the CMakeLists.txt file. (DVI_DEFAULT_SERIAL_CONFIG)
      I don't quite follow "how is it you load github files on pico". GitHub is a repository of source code. You would have to "git clone" the repo onto your host computer (laptop, eg) then "cd" into the folder and run the "cmake" command. If you're not familiar with GitHub and how to build Pico software, then read the Pico docs here: www.raspberrypi.com/documentation/microcontrollers/pico-series.html

  • @ytu52973
    @ytu52973 หลายเดือนก่อน

    What about titles and sprites?

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน

      Titles? As in Text? I haven't added that in yet.
      Sprites aren't going to be possible since I barely have enough bandwidth to show the framebuffer.
      I have another project in mind that will do sprites.
      But with the design constraint of running everyhing on one core (Core-1) there's not enough bandwidth to show sprites on top of a frame buffer.

    • @ytu52973
      @ytu52973 หลายเดือนก่อน

      @@drfrancintosh Sorry that is Tiles and Sprites. As in one of the modes from PicoDVI and demo seen in your video at 1:25

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน

      @@ytu52973- ah yes. Again, I was trying to create a simplified API so I opted for a frame buffer. You might notice that Wren did not "mix" these video modes together. That's because to handle tiles / sprites takes all of one core and most of the other. I REALLY wanted a solution that was easy for the developer, and only occupied one core.
      That's not to say that down the road I might find a way to do both a frame buffer and sprites (esp. with an upgraded Pico 2), but for now, you can do simple 1- 2- or 3-bit graphics on Pico-1 with HDMI.
      VGA is less "aggressive" and can handle more bitplanes (up to 8) so that might be an option for you!

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน

      @@ytu52973 BTW: what project are you hoping to run on the Pico with HDMI?

    • @ytu52973
      @ytu52973 หลายเดือนก่อน

      @@drfrancintosh I was looking to replicate PAC-MAN which graphically is simply a tile map and a handful of sprites.

  • @affgaan
    @affgaan หลายเดือนก่อน

    1:42 should be
    > these clowns

    • @drfrancintosh
      @drfrancintosh  หลายเดือนก่อน

      Haha... I like your idea better ;)

  • @the_hetman
    @the_hetman 2 หลายเดือนก่อน +2

    Here is Adafruit talking about their new RP2350 feather board with details on the connector for fast video output for DVI or LCD displays. The first 100 sold out very quickly but they have more on the way. th-cam.com/video/8qfeyg05nio/w-d-xo.htmlsi=Lm1sSWBviPysnLxi

    • @drfrancintosh
      @drfrancintosh  2 หลายเดือนก่อน +2

      Thanks for this! I will have to learn more about the HSTX protocols so we don't have to bit-bang the HDMI through PIO

    • @jojodi
      @jojodi 2 หลายเดือนก่อน +2

      @@drfrancintosh the pico-samples repository by Raspberry Pi has an HSTX DVI example that displays a static image at 640x480 from flash, no PIO involved.

    • @drfrancintosh
      @drfrancintosh  2 หลายเดือนก่อน +1

      @@jojodi This is exciting. I ordered my Pico 2's so I'll be looking into it soon. What's on my radar next, though, is Pico 2 + HSTX = LVDS. I'd love to drive LCD panels directly from the PICO without an HDMI card in between.