Relacionado: ¿ Por dónde empezar al considerar hacer una GPU?
Soy un programador bastante fuerte, pero soy muy nuevo en el diseño de hardware, por lo que me disculpo si uso una terminología extraña.
Mi objetivo a largo plazo es escribir una GPU personalizada, pero estoy empezando con un framebuffer básico para familiarizarme con el diseño del hardware. Aquí hay un resumen de lo que espero hacer con mi proyecto:
Puedo descifrar el #1 y el #2, pero nunca he hecho nada como el #3. Estoy pensando que la configuración de desarrollo óptima sería tener una pantalla virtual que se conecte a los pines de salida de mi diseño (VGA o DVI) y lo muestre en una ventana de mi computadora. Probablemente podría hacer esto con un FPGA y una pequeña pantalla LCD, pero creo que será más fácil para el desarrollo (especialmente viajar) tenerlo todo simulado.
¿Ya hay una solución para esto? Si es así, ¿qué puedo buscar para obtener más información al respecto? Si no, ¿cuál es la configuración de desarrollo habitual para algo como esto?
Estoy desarrollando en Linux usando Icarus Verilog, por lo que sería preferible una solución que funcione con eso.
Una alternativa sería usar PLI/VPI para llamar a algún código C, por lo que en lugar de realizar la conducción de pines de nivel superior, llame a una tarea del sistema que almacene el píxel en un búfer de marco de software y lo represente en una ventana.
He usado la misma técnica para un UART recientemente: instanciado otro uart con el TX + RX cruzado, y cuando el que está en el banco de pruebas recibe datos, lo alimenta a un código C con una tarea del sistema que escribe en un PTY (y viceversa).
Dado que la simulación probablemente no se ejecutará tan rápido, escribir archivos de imagen o datos binarios y luego el procesamiento posterior podría hacerlo más útil.
Tim
pjc50
beatgammit
Tim
beatgammit