Generación de video con Shift Register

Estoy construyendo una computadora casera de 8 bits y tengo algunos problemas con la salida de video.

Quiero saber si es posible generar alta resolución, digamos 640x480, salida de video monocromática, PAL o NTSC, usando un microcontrolador, digamos atmega328 funcionando a 20MHz, un registro de desplazamiento PISO de 8 bits y un framebuffer externo DRAM, se puede controlar el bus de direcciones por otro registro de desplazamiento SIPO.

¿Puedo generar una salida monocromática de 640x480 con un atmega? ¿Hay una mejor manera?

Nunca he oído hablar de nadie que conecte un AVR con una DRAM... Podría estar equivocado, pero eso suena como un trabajo para un FPGA para mí. Dicho esto, definitivamente es posible generar señales NTSC con un AVE, pero probablemente tengas que escribir ensamblador para que el tiempo sea lo suficientemente ajustado.
Esto es similar a lo que quieres hacer: lucidscience.com/pro-vga%20video%20generator-1.aspx
@vicatcu Sí, estaba pensando en FPGA (o incluso CPLD), pero aquí son bastante caros. Ayudaría mucho cualquier alternativa. No tengo muchos problemas con el ensamblaje de AVR, pero la mayoría de los proyectos solo funcionan con resoluciones bajas debido a problemas de velocidad.
El Uzebox usa un ATmega644 overclockeado a 28 MHz para generar hasta 720 píxeles por línea puramente en software.
@Janka ¡Este proyecto es realmente interesante y puede ayudarme mucho! El atmega644 es fácil de encontrar.
¿Por qué retroceder 10 generaciones en la interpretación de videos? dqydj.com/… pero si es necesario. Las cajas de TV de 4 GB que admiten 1080p cuestan solo $ 50
@TonyStewart.EEsince'75 No quiero usar una caja negra para la generación de video, es el punto de agujero de la computadora casera de 8 bits, hágalo usted mismo. Puedo simplemente conectar una raspberry pi a través de GPIO y obtener una resolución Full HD;)

Respuestas (2)

En NTSC, la parte activa de una línea horizontal es 52,6 us. Para empaquetar 640 píxeles se necesitaría un reloj de cambio de 12,17 MHz y una tasa de carga de 1,52 MHz. No creo que un AVR pueda generar una dirección de lectura, leer los datos, enviarlos al registro de desplazamiento PISO y calcular la siguiente dirección RAM lo suficientemente rápido.

Retrocediendo en el tiempo a las terminales de video basadas en microprocesadores, usaron los micros para la interfaz de usuario y escribieron en la RAM de video (de doble puerto). Escanear la RAM y convertir su contenido en video era todo hardware aleatorio. Hoy en día, ese hardware sin duda encajaría en un CPLD o FPGA, pero funcionalmente seguiría siendo un motor sin firmware.

Sí. Tienes razón. Estoy evitando CPLD o FPGA debido al precio, en realidad son muy caros aquí. Yo estaba pensando. Si almaceno el ASCII en el flash AVR y emulo un VT100 en lugar de usar un framebuffer externo, sería mucho más rápido recopilar los datos y alimentar el registro de desplazamiento (hay algunos cálculos, pero la lectura desde el flash interno debería ser más rápida). Estaba haciendo algunos cálculos y, si no me equivoco, hay ~104 ciclos entre una carga de cambio y otra (usando un registro de cambio de 8 bits). Algo cercano a las 50 instrucciones en arquitectura AVR.

Datapoint Corporation, que definió la arquitectura Intel 4004 (que Intel se negó a construir), utilizó todos los registros de desplazamiento PMOS en sus primeras terminales. Los fundadores (originalmente en Computer Terminal Corporation) fueron Phil Ray y Gus Roach, quienes refinaron sus conocimientos informáticos siendo administradores de programas para equipos de terminal terrestre de la NASA para equipos de telemetría Gemini. Al definir sus "terminales", incluyeron la capacidad de programación total, sabiendo que realmente estaban vendiendo computadoras. Con toda la memoria siendo registros de desplazamiento.

analogsystemsrf - Excelente parte de la historia.