Proyecto pico-RGB2HDMI (+captura USB)

mlorenzati
Mensajes: 29
Registrado: 08 Dic 2021 22:00
Agradecido : 8 veces
Agradecimiento recibido: 62 veces

Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor mlorenzati » 16 Ago 2022 04:58

Buenas!
Hace un tiempo que soy usuario del foro y me recomendo un amigo de la casa que comparta con ustedes algo que venia haciendo.

Imagen
Que arme? un conversor RGB a HDMI
Porque es diferente?
Por varias razones, la principal es que no requiere afectar al HW, se toman las señales RGB, HSYNC y VSYNC y listo, no va dentro de la retro compu
La segunda razon, es simple, no usa ni una raspberry pi zero con CPLDs ni una FPGA cara para capturar, solo un microcontrolador que tiene algunas aptitutes interesantes: el rasberry pico RP2040 y por supuesto un conversor analogo a digital triple sample and hold.
Una solucion OSSC tiene su costo por los 180 dolares, el aparato este puede armarse por menos de 35 dolares.

Para generar HDMI hace uso de pines y de su hardware dedicado (PIO) el cual le permite correr independiente del procesador, tambien para capturar lo hace con el PIO y es configurable 100% para que use DMA e IRQs, usando muy poco de sus 2 cortex M0.
El truco es la frecuencia de clock necesaria... Para 640x480 en HDMI, usa 252Mhz, lo que lo obliga a correr desde RAM las rutinas criticas. Esto no es problema porque el micro soporta incluso frecuencias muchisimo mas elevadas. El limite de los 133mhz lo pone su memoria Flash QSPI.
Para Capturar, algo parecido, el CAD requiere un secuenciamiento de reset u capture sample mas el clock, el cual lo hago correr a 120Mhz (despues explico porque).

Imagen

Ahora el tema viene por la promesa:
Cero latencia: Lo que se captura va derecho a un rambuffer de colores y se transfiere al HMDI de la misma manera.
Si la imagen de entrada es de 60Hz de barrido y la de HDMI tambien, es posible que solo tengas UNA linea sola de retraso. Si la imagen es de 50Hz y el HDMI es de 60, la renderizacion en HDMI ira leyendo mas rapido del buffer que lo que el RGB provee, haciendo que la imagen en el HDMI no tenga latencia tampoco.

Cero reformateo de imagen: se captura y se presenta, se buscara la resolucion de salida lo mas "apta" para la señal de entrada.
En el caso actual se renderiza HDMI en 640x480 y se captura en 640x240 en 8 bits de densidad o 320x240 a 16 bits de densidad.

Incrementar la resolucion y densidad de colores: como pueden imaginar, el problema aca es la memoria disponible, el RP2040 tiene alrededor de 260Kb de ram, haciendo cuentas tanto 640x240*8bppx o 320x240@16bppx son 154Kbytes, si aumento la densidad en 640x240 o la resolucion en modo de 16 bits nos quedamos sin memoria... HOY.
Micros con mas memoria por parte de la RPI foundation es logico, asi que posiblemente en poco tiempo tengamos mayores resoluciones y densidades de captura.

Que es lo que busco? que a medida que vayan desapareciendo las opciones de monitores CRT, o que sigan siendo caras soluciones como el OSSC, esta opcion vaya ganando su lugar.
Ya se ejecuto un alpha con 11 amigos que colaboraron comprando una de estas placas y le voy pasando updates, espero sacar la proxima version en breve y si se van puliendo los detalles pasar a modo DIY (no hay manera que pueda proveer a otros paises mas alla de donde vivo de manera responsable) (Argentina)

El firmware no lo voy a liberar de momento pero esta en mis planes hacerlo dentro de un tiempo, asi todos se pueden beneficiar.

Si les interesa me pueden contactar, hacerme preguntas, lo que quieran.

De momento se probo en las siguientes maquinas:
Commodore Amiga A500, A1200
Commodore C128 (salida RGBI convertida a RGB)
Atari ST
Se espera de los amigos testear MSX2, Spectrum QL y Amstrad CPC

Que cosas soporta:
Actualizacion por USB
Captura en 640x240@8bits o 320x240@16bits
Video Overlay con control en pantalla, generacion de graficos (rec, line, pixel, circle, text, etc, sprites)
Teclado de 3 teclas con on key press, release, mantain
Terminal por USB, para "hablar" con el rgb2hdmi, mover pantalla, configurar, info, modo y lo mas interesante CAPTURAR por USB la imagen a la computadora.

Hice una companion app asi es mas facil usarlo y no lidiar con la terminar serie, para Windows, linux y Mac
Imagen

Aca algunas capturas que hice en los 2 modos:
320x240 y 16bits
Imagen
Imagen
640x240 y 8bits
Imagen
Imagen

Hice unos videos si les interesa
https://www.youtube.com/watch?v=nnq1bu1nLTc
https://www.youtube.com/watch?v=92AugTdjNo0

Y dejo el manual que esta algo desactualizado:
https://docs.google.com/document/d/1nHG ... yj5wrqlv4u

La implementacion fue todo un lindo desafio, sobre todo como capturar siempre igual del CAD y comprimir al vuelo la densidad de colores deseada:
16 bits = 565
8 bits 332
Sobre todo porque el micro siempre elige un pin de base y podes despues elegir cuantos bits, pero al reducir lo hace desde los MSB y no servia, asi que se capturan todos los bits, y se dropean los LSBs que no se necesiten despues usando un registro de desplazamiento de salida del PIO.

Quien le interese ser parte del beta me avisan! y si alguien le interesa armar las placas me avisa!

Saludos!
Adjuntos
pantalla_640x240_8bits.jpeg
(59.22 KiB) No descargado aún
TEST_320240_16.jpeg
TEST_320240_16.jpeg (11.95 KiB) Visto 2529 veces
Test_40_240_8.jpeg
Test_40_240_8.jpeg (24.6 KiB) Visto 2529 veces
MK_640240_8.jpeg
MK_640240_8.jpeg (106.2 KiB) Visto 2529 veces
MK_320240_16.jpeg
MK_320240_16.jpeg (35.05 KiB) Visto 2529 veces
app.jpeg
(151.65 KiB) No descargado aún
Placa pico-rgb2hdmi.png
Placa pico-rgb2hdmi.png (243.36 KiB) Visto 2529 veces

Avatar de Usuario
DiegoArevalo
Mensajes: 77
Registrado: 15 Jun 2019 20:53
Ubicación: Rosario, Argentina
Agradecido : 161 veces
Agradecimiento recibido: 28 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor DiegoArevalo » 16 Ago 2022 05:07

Excelente proyecto, gracias por compartirlo!

Avatar de Usuario
geloalex
Mensajes: 123
Registrado: 22 Dic 2019 14:45
Agradecido : 30 veces
Agradecimiento recibido: 48 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor geloalex » 16 Ago 2022 05:13

Interesante , te he mandado mensaje privado.
Buen trabajo
ZX48,ZX48+,ZX128+2,MO5,A1200,A500,C64,C64C,C16,CPC464,CPC6128,HB75P,HB20P,HBF1,HBF1XD,SVI728,2600Sixer,2600Jr,7800,VideopacG7000,GB,GBC,GBA,NES,FAMICOM,SNES,N64,GG,SMS,SMS2,MD1,MD2,MEGACD2,SATURN,DC,PCEngine,PCEngineDUO,XBOX360,PSX,PS2,PS3,PS4,PSP,PSVita

jltursan
Mensajes: 5217
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 839 veces
Agradecimiento recibido: 1818 veces
Contactar:

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor jltursan » 16 Ago 2022 09:22

Impresionante. Suena muy bien, espero que pronto podamos disfrutar de tu invento :-)

Avatar de Usuario
antoniovillena
Mensajes: 184
Registrado: 18 Ago 2012 13:06
Agradecimiento recibido: 31 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor antoniovillena » 16 Ago 2022 11:58

Yo estaría interesado en vender un addon para ZX-Uno que lleve un RP2040. Es decir, una placa custom que lleve el chip. Ya me encargaría yo de diseñar la placa si no te viniese bien. También estaría dispuesto a ayudarte en caso de que el addon lo quieras vender tú en exclusiva. Es que veo que encaja muy bien en el proyecto ZX-Uno.

jordi_ab
Mensajes: 307
Registrado: 05 Dic 2020 04:55
Agradecido : 5 veces
Agradecimiento recibido: 188 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor jordi_ab » 16 Ago 2022 17:01

Me sumo a la idea de un add-on para ZX-Uno con un RP2040.

Avatar de Usuario
masteries
Mensajes: 1710
Registrado: 30 May 2018 11:33
Ubicación: Espaciando
Agradecido : 309 veces
Agradecimiento recibido: 1191 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor masteries » 16 Ago 2022 18:15

mlorenzati escribió:Buenas!
Hace un tiempo que soy usuario del foro y me recomendo un amigo de la casa que comparta con ustedes algo que venia haciendo.

Imagen
Que arme? un conversor RGB a HDMI
Porque es diferente?
Por varias razones, la principal es que no requiere afectar al HW, se toman las señales RGB, HSYNC y VSYNC y listo, no va dentro de la retro compu
La segunda razon, es simple, no usa ni una raspberry pi zero con CPLDs ni una FPGA cara para capturar, solo un microcontrolador que tiene algunas aptitutes interesantes: el rasberry pico RP2040 y por supuesto un conversor analogo a digital triple sample and hold.
Una solucion OSSC tiene su costo por los 180 dolares, el aparato este puede armarse por menos de 35 dolares.

Para generar HDMI hace uso de pines y de su hardware dedicado (PIO) el cual le permite correr independiente del procesador, tambien para capturar lo hace con el PIO y es configurable 100% para que use DMA e IRQs, usando muy poco de sus 2 cortex M0.
El truco es la frecuencia de clock necesaria... Para 640x480 en HDMI, usa 252Mhz, lo que lo obliga a correr desde RAM las rutinas criticas. Esto no es problema porque el micro soporta incluso frecuencias muchisimo mas elevadas. El limite de los 133mhz lo pone su memoria Flash QSPI.
Para Capturar, algo parecido, el CAD requiere un secuenciamiento de reset u capture sample mas el clock, el cual lo hago correr a 120Mhz (despues explico porque).

Imagen

Ahora el tema viene por la promesa:
Cero latencia: Lo que se captura va derecho a un rambuffer de colores y se transfiere al HMDI de la misma manera.
Si la imagen de entrada es de 60Hz de barrido y la de HDMI tambien, es posible que solo tengas UNA linea sola de retraso. Si la imagen es de 50Hz y el HDMI es de 60, la renderizacion en HDMI ira leyendo mas rapido del buffer que lo que el RGB provee, haciendo que la imagen en el HDMI no tenga latencia tampoco.

Cero reformateo de imagen: se captura y se presenta, se buscara la resolucion de salida lo mas "apta" para la señal de entrada.
En el caso actual se renderiza HDMI en 640x480 y se captura en 640x240 en 8 bits de densidad o 320x240 a 16 bits de densidad.

Incrementar la resolucion y densidad de colores: como pueden imaginar, el problema aca es la memoria disponible, el RP2040 tiene alrededor de 260Kb de ram, haciendo cuentas tanto 640x240*8bppx o 320x240@16bppx son 154Kbytes, si aumento la densidad en 640x240 o la resolucion en modo de 16 bits nos quedamos sin memoria... HOY.
Micros con mas memoria por parte de la RPI foundation es logico, asi que posiblemente en poco tiempo tengamos mayores resoluciones y densidades de captura.

Que es lo que busco? que a medida que vayan desapareciendo las opciones de monitores CRT, o que sigan siendo caras soluciones como el OSSC, esta opcion vaya ganando su lugar.
Ya se ejecuto un alpha con 11 amigos que colaboraron comprando una de estas placas y le voy pasando updates, espero sacar la proxima version en breve y si se van puliendo los detalles pasar a modo DIY (no hay manera que pueda proveer a otros paises mas alla de donde vivo de manera responsable) (Argentina)

El firmware no lo voy a liberar de momento pero esta en mis planes hacerlo dentro de un tiempo, asi todos se pueden beneficiar.

Si les interesa me pueden contactar, hacerme preguntas, lo que quieran.

De momento se probo en las siguientes maquinas:
Commodore Amiga A500, A1200
Commodore C128 (salida RGBI convertida a RGB)
Atari ST
Se espera de los amigos testear MSX2, Spectrum QL y Amstrad CPC

Que cosas soporta:
Actualizacion por USB
Captura en 640x240@8bits o 320x240@16bits
Video Overlay con control en pantalla, generacion de graficos (rec, line, pixel, circle, text, etc, sprites)
Teclado de 3 teclas con on key press, release, mantain
Terminal por USB, para "hablar" con el rgb2hdmi, mover pantalla, configurar, info, modo y lo mas interesante CAPTURAR por USB la imagen a la computadora.

Hice una companion app asi es mas facil usarlo y no lidiar con la terminar serie, para Windows, linux y Mac
Imagen

Aca algunas capturas que hice en los 2 modos:
320x240 y 16bits
Imagen
Imagen
640x240 y 8bits
Imagen
Imagen

Hice unos videos si les interesa
https://www.youtube.com/watch?v=nnq1bu1nLTc
https://www.youtube.com/watch?v=92AugTdjNo0

Y dejo el manual que esta algo desactualizado:
https://docs.google.com/document/d/1nHG ... yj5wrqlv4u

La implementacion fue todo un lindo desafio, sobre todo como capturar siempre igual del CAD y comprimir al vuelo la densidad de colores deseada:
16 bits = 565
8 bits 332
Sobre todo porque el micro siempre elige un pin de base y podes despues elegir cuantos bits, pero al reducir lo hace desde los MSB y no servia, asi que se capturan todos los bits, y se dropean los LSBs que no se necesiten despues usando un registro de desplazamiento de salida del PIO.

Quien le interese ser parte del beta me avisan! y si alguien le interesa armar las placas me avisa!

Saludos!


El invento esta genial,

Si le añades opción de generar scanlines a la salida ya lo bordas; no es más que dibujar una línea bien y otra toda negra... la siguiente normal y la siguiente negra...


Me interesa sobremanera aprender a manejar el PIO de este micro, porque se están haciendo cosas chulísimas que hasta hace nada, necesitas una FPGA o CPLD en el mejor de los casos, y esas opciones no permitían construir inventos buenos a bajo coste.

Y para poner la guinda al pastel, se podría rediseñar, para añadir un conector SCART físico y hacer sample también del audio para meterlo en el HDMI y solución completa... y darle sopas con onda a OSSC y al Medusa...
La maestría interior...

Vendo trapdoor 512KB A500: viewtopic.php?f=71&t=200034052
De 1MB A500+: viewtopic.php?f=71&t=200034115

Metal Slug Atari STE: www.youtube.com/watch?v=FMrdjrrtxWo

Avatar de Usuario
geloalex
Mensajes: 123
Registrado: 22 Dic 2019 14:45
Agradecido : 30 veces
Agradecimiento recibido: 48 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor geloalex » 16 Ago 2022 19:17

Totalmente de acuerdo si hay espacio en la memoria incluso un simple generador de cartas de ajuste básicas asi valdria como herramienta de ajuste en los monitores
ZX48,ZX48+,ZX128+2,MO5,A1200,A500,C64,C64C,C16,CPC464,CPC6128,HB75P,HB20P,HBF1,HBF1XD,SVI728,2600Sixer,2600Jr,7800,VideopacG7000,GB,GBC,GBA,NES,FAMICOM,SNES,N64,GG,SMS,SMS2,MD1,MD2,MEGACD2,SATURN,DC,PCEngine,PCEngineDUO,XBOX360,PSX,PS2,PS3,PS4,PSP,PSVita

squall2019
Mensajes: 459
Registrado: 03 Jun 2021 20:20
Agradecido : 18 veces
Agradecimiento recibido: 203 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor squall2019 » 17 Ago 2022 00:11

Simplemente, impresionante. Tengo por quí una zero casi compatible, difiere en un pin con respecto a la original, lista para experimentos.

Avatar de Usuario
josemrm
Mensajes: 420
Registrado: 09 Feb 2021 01:05
Ubicación: Bilbao - barrio txiki a 45km
Agradecido : 2487 veces
Agradecimiento recibido: 125 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor josemrm » 17 Ago 2022 00:46

En AliExpress tienes PCB clónicas con chip original rp2040 con mucha más memoria, hasta 16 megas. Así directamente se podría alcanzar la resolución de salida de fullhd. Con todas las ideas de este hilo saldrá un proyecto coj......
-m3s3x -coam1 -j4tar1 -cocbm1 -4mstr4d -sp3zy

IBM RS/6000 43R120
PowerMac7100/66 7200/90
bPlanPEGASOS1y2,Amithlon
edu_arana:PiStorm/32-lite,UnAmigaReloaded
Mister Atlas DE10-lite
Rpi,Odroid
BeOS QNX Plan9 CP/M
ZXUnGo+ by Spark2k06, ZXUno by AVillena

mlorenzati
Mensajes: 29
Registrado: 08 Dic 2021 22:00
Agradecido : 8 veces
Agradecimiento recibido: 62 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor mlorenzati » 17 Ago 2022 01:04

Multiplexar audio lo tengo en la lista de los mas dificiles :D, pero hay HW q lo puede hacer.
Lo de las scanlines es como dices, casi gratis, porque hoy duplica la linea vertical de 240 a 480, seria cuestion de meter la linea negra intercalada.
Estoy por meterme con la GUI para configurarlo mas amablemente desde la UI y obvio grabar los cambios en la misma flash.

De momento mis avances son de fin de semana, el trabajo me consume lindo pero a veces puedo avanzar mas.

Lo de ajuste de cartas parece linda idea.

Estoy por lanzar la 2da etapa seguro si todo va bien pongo el HW en modo DIY y el firm me lo piden a mi

mlorenzati
Mensajes: 29
Registrado: 08 Dic 2021 22:00
Agradecido : 8 veces
Agradecimiento recibido: 62 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor mlorenzati » 17 Ago 2022 01:05

josemrm escribió:En AliExpress tienes PCB clónicas con chip original rp2040 con mucha más memoria, hasta 16 megas. Así directamente se podría alcanzar la resolución de salida de fullhd. Con todas las ideas de este hilo saldrá un proyecto coj......

El tema es la RAM, que es fija por el modelo del micro (RP2040 donde el 4 en su numero es en relacion de la ram que tiene),la flash sobra con los 2Mbytes de flash q tiene hoy dia.

mlorenzati
Mensajes: 29
Registrado: 08 Dic 2021 22:00
Agradecido : 8 veces
Agradecimiento recibido: 62 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor mlorenzati » 17 Ago 2022 01:07

squall2019 escribió:Simplemente, impresionante. Tengo por quí una zero casi compatible, difiere en un pin con respecto a la original, lista para experimentos.

Esta es la rpi pico, el hermanito embedded de la pi zero, es varios ordenes mas barata y menos cargada pero super flexible.
El chip rp2040 solo sale 1 dolar, en la pcb, 4 dolares, el ADC sale otros 4 dolares, osea la placa podran hacer cuentas no es cara, el tema es el trabajito del firmware

mlorenzati
Mensajes: 29
Registrado: 08 Dic 2021 22:00
Agradecido : 8 veces
Agradecimiento recibido: 62 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor mlorenzati » 17 Ago 2022 02:37

antoniovillena escribió:Yo estaría interesado en vender un addon para ZX-Uno que lleve un RP2040. Es decir, una placa custom que lleve el chip. Ya me encargaría yo de diseñar la placa si no te viniese bien. También estaría dispuesto a ayudarte en caso de que el addon lo quieras vender tú en exclusiva. Es que veo que encaja muy bien en el proyecto ZX-Uno.

De momento lo q pienso dejar disponible es el HW, asi que si despues quieres modificarlo para otro proposito me parece perfecto, mi plan es que sirva para todas las retro compus con RGB (aunque solo por sacarme las ganas voy a capturar compuesto con el mismo aparato y un poco de circ externo)
Si reunen varios interesados pueden hacer una tirada para probar, y asi tener mas feedback

jltursan
Mensajes: 5217
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 839 veces
Agradecimiento recibido: 1818 veces
Contactar:

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor jltursan » 17 Ago 2022 08:30

Pues como verás, interesados no van a faltarte... -grin

Avatar de Usuario
ea4gge
Mensajes: 189
Registrado: 30 Nov 2020 01:16
Agradecido : 90 veces
Agradecimiento recibido: 180 veces

Re: Proyecto pico-RGB2HDMI (+captura USB)

Mensajepor ea4gge » 17 Ago 2022 09:59

mlorenzati escribió:Buenas!

...

Si les interesa me pueden contactar, hacerme preguntas, lo que quieran.

De momento se probo en las siguientes maquinas:
Commodore Amiga A500, A1200
Commodore C128 (salida RGBI convertida a RGB)
Atari ST
Se espera de los amigos testear MSX2, Spectrum QL y Amstrad CPC

...



Quien le interese ser parte del beta me avisan! y si alguien le interesa armar las placas me avisa!

Saludos!


Buenas!! Muy bueno el proyecto.

En cuanto a las pruebas... si necesitas probar en CPC, MSX, Spectrum, ... por aquí hay máquinas a disposición. En lo que te pueda echar una mano por aquí andamos, sin problema.

Saludos
EA4GGE /// Alberto


Volver a “Desarrollos y Proyectos RW”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado