Y yo pense que estaba fantaseando queriendo hacer una computadora simple ;D
Veamos, la idea es hacer algo del nivel de tecnologia de una ZX81 o Spectrum, algo que sea manejable y entendible en su totalidad, por supuesto que no disponemos de PLAs o ULAs asi que debemos simplificar el circuito lo mas posible. Los chips de videos de maquinas como C64 o Atari son complejos porque necesitan circuiteria que administre el acceso a la RAM, ya que es la misma memoria donde accede el micro y el chip de video, el micro para ejecutar programas o modificar la memoria de video, y el chip de video 50 o 60 veces por segundo para leer la esa memoria y generar la imagen al TV o monitor. Estos esquemas, si bien son mejores, requieren una complejidad que no nos conviene para empezar, y por otro lado tenemos la serie de chips TMS como el de las MSX, que aparece ante el micro como 16 posiciones de memoria si mal no recuerdo, y dispone de una memoria de video de 16K independiente de los 64K posibles de un micro de 8 bits. Esta memoria no es accesible directamente, sino a traves de los 16 registros del TMS, por lo cual es un poco mas lento el acceso, pero nos evita la circuiteria para negociar el acceso a RAM entre micro y chip de video, con lo cual se simplifica notablemente el diseño. Otra alternativa es usar una VGA ISA, en los modos estandar, 320x200 en 256 colores y 640x480 en 16 colores (modos que soportan todas las VGA, porque es dificil que consigamos varias placas de la misma marca y modelo), ademas de los modos de texto de 80x25 caracteres con 16 colores. De esta manera tambien seria un diseño simple, ya que la memoria estaria dentro de la placa, lo que no se es si tiene algun requerimiento de velocidad de transmision de datos que el micro no pueda cumplir.
En cuanto al tema de USB o Ethernet, creo que exceden la capacidad de un micro de 8 bits, y si bien hay PICs con Ethernet o USB incorporados, son de la gama alta, muy caros y harian que el diseño no pueda ser entendido por todos, yo creo que con dejar una expansion que tenga el bus del sistema, podriamos agregar esas opciones mas adelante en forma de cartucho o placa de expansion (si se ponen slots ISA por ejemplo, aprovechando los conectores de las 286 o XT que se consiguen facilmente).
Lo de la C64 en un chip, no utiliza ningun componente antiguo, lo que hace es usar una FPGA, que es un conjunto de circuitos logicos de variada complejidad, que hacen posible programarla de tal forma que pueda emular todos los circuitos de una C64, eso por el momento esta fuera de nuestro alcance, aunque no tanto, pero es muy caro y requiere bastante conocimiento. Eventualmente es el camino que yo voy a seguir para proyectos futuros, porque ya no se consiguen chips de video, pero sera para una maquina bastante mas compleja, no para este proyecto.
Ademas recuerden que la parte de hard es la mas simple, uno puede agregarle de todo a la maquina, pero despues hay que escribir la ROM, hacer una especie de BIOS generica, de forma tal que haga las funciones basicas independientemente de que tipo de pantalla se le ponga, por ejemplo. Esto es asi en CP/M, las llamadas para escribir un caracter en pantalla tienen direcciones estandar, y lo que cambia es el codigo de la ROM de una maquina a la otra, uno puede armarse una maquina con chip de video distinto, o con LCD o salida impresa, y solo tiene que reescribir la rutina de video en la BIOS para que corran los mismos programas que en las otras maquinas. No digo que hagamos esto, solo es para que tengan en cuenta que la parte de soft es bastante compleja, no tanto por las rutinas en si, sino por la planificacion que requiere para que si decidimos cambiar un componente de hard tengamos que reescribir la menor cantidad posible de codigo. Por eso me parece que en principio conviene empezar con algo simple, pero que quede expandible, poder usar todas las placas ISA que hay tiradas creo que es bastante interesante para empezar, y en todo caso podemos agregar todas las expansiones como USB fabricando nuestra propia placa ISA con un PIC que maneje uno o mas puertos USB, y lo mismo con Ethernet y cualquier otro sistema que se nos ocurra. Se puede hacer que las placas contengan su propio firmware de controladores, que al iniciar se agregue a la BIOS principal, o contener los drivers directamente en la BIOS de la maquina.
Tenias razon es Jeri Ellsworth, es en FPGA
Y es de Alemania
Saludos
Self Proclaimed Commodore Guru
17 años atrás
Self Proclaimed Commodore Guru
Jeri Ellsworth es norteamericana, pero la C-One (como se llama la computadora reconfigurable que diseño) fue fabricada en alemania por Jens Schoenfeld (Individual Computers)
Pero al final no paso nada con esa computadora, hay varios nucleos escritos para que funcione como c64, amstrad y alguna otra, pero con muy pocas unidades fabricadas y todavia menos gente que sabe programar FPGA a quedado solo como una curiosidad.
Jeri Ellsworth tambien formo parte del equipo que diseño el 64DTV, que es la foro que puso HC, ese integra toda un c64 en un ASIC (que es, para decirlo simple, lo que resulta de fabricar en serie un FPGA preprogramado), tiene algunas mejoras con respecto a la c64 original, como modos de 256 colores y mas memoria.
Con respecto a la computadora, aunque me inclino hacia usar el 6502, por ser electricamente más sencillo y facil de programar, tambien me gusta el z180 (tengo un par dando vueltas por ahi) ya que tiene incorporado un mapper de 1MB, controlador de DMA y UART.
Pienso que la maquina tendria que tener un bus de sistema 24bits (16MB), si se usa un 6502, seria mapear la ram en bloques de 32K, y poder elegir cualquier par de bloques de 32K para que sean visibles por el micro. Y si vamos más allá, haria que el primer K de memoria (donde reside pagina 0 y la pila del procesador), tambien pueda ser mapeada a cualquier lugar de la memoria. Esto es util para depurar programas yyy para Multitasking! 8-) ;D
Que mass... como delirar, tambien separaria el bloque de 32K superior en 4 segmentos de 8K, en cada cual pueda aparecer, o la RAM o ROM o IO.
Un controlador de DMA en la placa seria lo más, pero con que el sistema tenga la capacidad de detener y aislar del bus al procesador bastaria. En el 6502 se necesita un poco de logica externa, ya para iniciar una transferencia DMA hay que parar el procesador con READY, esperar a la fase 0 del reloj y poner a 0 (o a 1?) DBE para liberar el bus. El 6510 en la C64 tiene una pata dedicada a DMA y no se necesita partes extenas.
Ya intente mover y a pesar de seleccionar solo algunos mensajes, mueve todo el topico a otro foro, lo unico que se puede hacer es partir desde cierto mensaje en adelante y crear un topico nuevo, y como aca esta mezclado no conviene, creen otro topico de C64DTV y sigan ahi.