6 ms·
RP2350 PicoDVI Preview
- tony-allan 2y agoThe RP2040 discussion -- https://github.com/Wren6991/PicoDVI https://github.com/Wren6991/PicoDVI
- typeiierror 2y agoThe new HSTX interface on the RP2350 seems to be squarely targeted at this use case (video output) and doesn't require the use of PIO or consuming a ton of CPU cycles. There's a nice write up on the capability here: https://www.cnx-software.com/2024/08/15/raspberry-pi-rp2350-hstx-high-speed-serial-transmit-interface/ https://www.cnx-software.com/2024/08/15/raspberry-pi-rp2350-...
- phire 2y agoThe main advantage of the SIO TMDS encoder, is that it allows you to output TMDS on any GPIO, instead of the eight that the HSTX is restricted to. And they allow an easy upgrade path for projects that were already bit-banging DVI on the rp2040. Other than those two advantages, I don't think there is any advantage to the SIO TMDS encoder over the HSTX TMDS encoder. I get the impression that the SIO TMDS encoder was added to the design first, and there wasn't a good reason to remove them after the introduction of HSTX.
- jauntywundrkind 2y agoIsn't hstx mainly good for streaming out? My naive guess would be that it wouldn't have as much transceiver offload capabilities, like what the SIO I naively guess would be good for. The nice part about using SIO seems to be that you can do the tdms encoding there. With hstx you need the output bitstream in the right format already which seems like you might be back to needing the CPU to do the encoding.
- phire 2y agoHSTX has a built in TMDS encoder, and as far as I can tell, it has all the functionality of the SIO TMDS encoder. You can configure it to directly consume any line buffer with any pixel format, from 1 to 8 bits per color channel. It even supports formats with different numbers of bits per channel like 8-bit RGB322 and 16-bit RGB565.
- onetom 2y agowhat's the fun in that though? i have the impression, that the main motivation for this project was learning the intricacies of TMDS encoding and providing an open implementation as reference for other ppl, who want to learn too. there are too many black box electronics these days, so it's very much welcome to virtually open them up, by providing software equivalents of their operation.
- szundi 2y agoFun is to proceed to the next fun faster
- Palomides 2y agocan the RP2350 do a higher resolution? it would be a neat option for some retrocomputing stuff if so
- raphlinus 2y agoMy understanding is that the HSTX can do twice the bit clock as the frequency of the CPU, as opposed to 1x for RP2040. So 800x480 (60Hz) is possible with no overclocking (295MHz bit clock) and Luke said [1] he got 1280x720 50Hz with overclocking (530MHz using CVT-R according to the video timings calculator [2]). [1]: https://mastodon.online/@wren6991@types.pl/112928551221457525 https://mastodon.online/@wren6991@types.pl/11292855122145752... [2]: https://tomverbeure.github.io/video_timings_calculator https://tomverbeure.github.io/video_timings_calculator
- jauntywundrkind 2y agoI wonder what res/refresh Display Stream Compression (DSC) would bring this up to, if this were DisplayPort (instead of DVI)?
- tverbeure 2y agoThe lowest you can go with DSC 1.2 is 8 bits per pixel.
- phire 2y agoProbably. Especially with the HSTX block which can apparently output at double the system clock (while the rp2040 was limited to 1/10th of the system) If my rough math is correct, it should be possible to do output 720p 60hz video with an overclock to ~320Mhz. Though, actually generating that many pixels might be hard when you have nowhere near enough memory. I would love to see some solid infomation about how well the rp2350 overclocks, apparently 300mhz is easy. 60hz 1080p is almost certainly out of reach, it would require something like a 700mhz overclock, but 30hz 1080p is probably viable.
- 2y ago
- MBCook 2y agoI think a link to the repo instead of the change set might be better.
- kelnos 2y agoI had no idea what this was, ended up clicking around to the README, and found it quite the enjoyable read.
- sitkack 2y agoThis is amazing, not only did they port from the 2040 to the 2350, but they also ported all the functionality they could support over to the RV32 cores as well. PicoDVI is usable no matter what cores one chooses to use on the RP2350. Well done!
- jsheard 2y agoThe author is also the creator of the RISC-V core found in the RP2350, you don't get your own core design taped out as an ASIC and then not show it off :p https://github.com/Wren6991/Hazard3 https://github.com/Wren6991/Hazard3
- jakobson14 2y agoGuy is an employee of raspi, so of course he's going to write code that ships chips.
- transpute 2y agoIs it theoretically possible to have 2-way HID (keyboard, mouse) and 1-way video output on a single USB-c cable? It would simplify connection to a KVM or software-emulated display/keyboard/mouse. Low FPS would be enough for dashboards and CLI.
- jauntywundrkind 2y agoThere's no current specs for dual directional USB over any cable, afaik. There very well should be. You could present as a device and offer networking and have usb-ip advertised over multicast on that port. Easy, weekend project at most, would be dead obvious to any practitioner. USB4 as a packetized protocol really should offer something. I do wish there were like a half speed 2.5Gbit usb4 option, that microcontrollers could have some hope of accelerated bit banging.
- FlyingAvatar 2y agoHaven't USB hubs done this since USB 1.1?
- yonatan8070 2y agoI believe that the author is talking about plugging in a USB-C cable between your laptop and some headless system, and having your laptop send HID data, while also capturing a display output from the headless system
- bonzini 2y agoIsn't that exactly what a USB-C docking station does? It receives display and audio data, and acts as a USB device (keyboard, mouse, webcam). You'd need hardware that can receive DisplayPort, but it's doable.
- numpad0 2y agoLooks like an Alt Mode host with DP sink capability is technically allowed...? But it also looks like USB host controllers with Alt Mode support exposes internal DP source driver inputs, rather than handing you bunch of bare copper wires in Alt Mode, so I doubt it realistically has an implementation. ref: https://vesa.org/wp-content/uploads/2019/10/USB-DevDays-2019-VESA-DP-Alt-Mode-over-USB-Type-C.pdf https://vesa.org/wp-content/uploads/2019/10/USB-DevDays-2019...
- wrycoder 2y agoBitbanged DVI on the RP2040 Microcontroller
- sylware 2y agoI wish the RP2350 would include a fuse to disable for good the ARM cores for those who want only the risc-v cores (and maybe not pay ARM royalties on those chips).
- jsheard 2y agoSee pg.1259 in the datasheet, the ARM_DISABLE fuse does exactly that. Putting that in was a smart move because it means they can always make a RISC-V-only variant of the chip without having to tape out new silicon - they just have to blow that fuse at the factory.
- londons_explore 2y agoI'm not sure "arm-core-disabled-by-fuse" is gonna be sufficient to persuade arms legal department to stop charging royalties...
- axoltl 2y agoThat's actually a super common way to handle licensing in hard IP. You don't want to spin different revisions of a chip with and without the IP, that's expensive. So you build in fuses to permanently disable the IP. This happens a lot with hardware video encoder/decoder blocks.
- mschuster91 2y agoOr you do it the other way around in software - remember the Pi 1/2 era where you had to buy separate licenses for MPEG/h264 HW decoders, tied to the Pi's serial number?
- sylware 2y agoThat's why the fuse, with proper sales accounting, is so much important.
- sylware 2y ago
- kristianp 2y agoIn case anyone missed the blog post about the Raspberry Pi Pico 2, here it is: https://www.raspberrypi.com/news/raspberry-pi-pico-2-our-new-5-microcontroller-board-on-sale-now/ https://www.raspberrypi.com/news/raspberry-pi-pico-2-our-new... It has quite a list of products already created by their partners.
- peterburkimsher 2y agoIf anyone wants a PicoDVI sock or 4, I had 5 PCBs manufactured and am only using one. I wanted to put the HDMI connector onto the PCB itself, so I could avoid soldering the very small pin pitch. So I took some measurements and did my first KiCad project! https://forum.kicad.info/t/hdmi-pcb-edge-connector/48358/9 https://forum.kicad.info/t/hdmi-pcb-edge-connector/48358/9 Just send me an email if you're interested in having one, and I'd be happy to post it to you. The resistors are already populated, too, you just need to solder on the Pico using the through-hole connections.
- amelius 2y agoIs there any way to select between two HDMI signals? I have an nVidia Jetson but its boot sequence turns off the HDMI output at some point. It would be nice if I could show a placeholder screen while the Jetson is booting. Would something like that be possible by using this RP2350 board?
- ale42 2y agoNot directly because it can't handle retransmitting the existing HDMI signal. You probably need to add a HDMI/DVI switch IC like this one: https://www.analog.com/en/products/ad8196.html https://www.analog.com/en/products/ad8196.html
- psd1 2y agoI've tried a few commercial hdmi switches, to share a monitor between machines. The switch time is long and the monitor doesn't reliably wake up. Perhaps it's related to eDID? Do you know how that chip is for real-world usability?
- kees99 2y ago> switch time is long and the monitor doesn't reliably wake up In my personal experience, obtuse monitor's firmware is often to blame. Using a switch with one extra input port, where all data pins are connected to ground (via series resistors), and switching to that port for a brief moment, before switching again to the real intended input, usually helps some.
- amelius 2y agoIsn't it possible to create a valid and stable HDMI signal based on two inputs? I can imagine that some memory is required to synchronize both signals. Is there an IC that can do that?
- dezgeg 2y agoI'd be surprised if that was not fixable in the Jetson with pure software changes.
- deleted 2y ago[deleted]
- phkahler 2y agoIt says 60 percent of CPU cycles on one core with the other core free. What does the available 40 percent of the one core look like? I'm assuming its got some high frequency interrupts going that can't be disturbed? What restrictions are on using the remaining capacity of the one core?