Ver la versión completa : PCP, el Pequeño Computador Personal
JoJo_ReloadeD
18/11/2012, 17:59
Desde ViejuNET queremos presentaros un proyecto del que yo personalmente llevaba tiempo atras, la creacion de un computador de proposito general desde 0.
Este sistema, creado con la inestimable ayuda de xzakox es un computador completo con un procesador de creacion propia de 32 bits, Ithladin.
Aqui teneis un video del sistema arrancando y corriendo el Pong:
http://tube.vieju.net/video/PCP-Pong-minidemo/a33827d7e290bd3d36ae7f50f99112ee
Para mas info aqui esta su blog de desarrollo:
http://pcp.vieju.net/
Coñe, como os lo currais :)
Firefox ha decidido que no merezco el honor de poder ver el video bien xD
pache_reloaded
18/11/2012, 18:19
escepcional trabajo.
desde mi higorancia te queria preguntar si todo esta metido en el chip ese? y que SO usa
Que chulo. Animo chavales!
pache_reloaded
18/11/2012, 19:43
ya mismo emulais un cerebro humano
ya mismo emulais un cerebro humano
Dependiendo del humano al que pertenezca el cerebro 'modelo' eso podría ser hasta facil :D
3XCL4M4t10N
18/11/2012, 19:55
No me he enterado muy bien de que va el proyecto. ¿Crear un x86 on-a-chip? ¿Specs?
Segata Sanshiro
18/11/2012, 19:58
¿Cómo lo estáis haciendo? FPGA, a base integrados 74x, soldando transistores a mano... xD
Dependiendo del humano al que pertenezca el cerebro 'modelo' eso podría ser hasta facil :D
Algun cerebro se emula con un interruptor on/off dejándolo siempre en off
Nathrezim
18/11/2012, 20:10
¿Cómo lo estáis haciendo? FPGA, a base integrados 74x, soldando transistores a mano... xD
Hombre, se ve una breadboard, así que mínimo lo habrán hecho cableando puertas lógicas ya construidas XD
JoJo_ReloadeD
18/11/2012, 21:32
No me he enterado muy bien de que va el proyecto. ¿Crear un x86 on-a-chip? ¿Specs?
No, la idea es crear un ordenador completo desde cero con propositos educativos. Es un sistema nuevo, no se basa en ninguna plataforma que ya exista, de hecho, la CPU esta diseñada por nosotros.
¿Cómo lo estáis haciendo? FPGA, a base integrados 74x, soldando transistores a mano... xD
Todo funciona en un Atmega 328, con la CPU emulada sobre el y operando sobre hardware fisico (sram, sd, mvga).
Hombre, se ve una breadboard, así que mínimo lo habrán hecho cableando puertas lógicas ya construidas XD
Jejeje no hombre, el nucleo del sistema es software :)
3XCL4M4t10N
18/11/2012, 22:18
Ok, ahora si me he enterado. Esa cabeza mia de imaginarse una consola portatil destinada a hacer andar aplicaciones (juegos) x86...
La idea de JoJo era empezar por ese sistema emulado sobre un microcontrolador, que da pié a empezar a desarrollar el sistema y sus herramientas de manera muy rápida y hacer un debug muy sencillo, mientras que ya vas trabajando con parte de hardware real (SD, SRAM, VGA, etc), y en un futuro plantear la posibilidad de implementarlo en hardware usando una FPGA.
Ahora mismo hay dos versiones, (que compilan bajo el mismo source), la versión AVR que corre sobre la misma CPU del arduino, con perifericos reales, y la versión emulacion completa, que de momento compila sobre linux y macosx (supongo que también sobre cualquier unix con posix y ncurses o incluso cygwin).
Questions questions:
Cuantas instrucciones por segundo ejecuta?
Solo modo texto? O solo de momento?
SplinterGU
19/11/2012, 01:01
yo no puedo ver los videos... no se porque no funcionan.... pero veo las fotos, aunque no dicen mucho, se ve genial...
me quito el sombrero ante ti, jojo_reloaded!
explica un poco mas de las especificaciones del bicharraco.
Esta genial el bicho! que resolucion es capaz de mostrar en pantalla... como haceis para generar la señal VGA?
Nathrezim
19/11/2012, 10:30
¿Habeis utilizado algún set de instruciones estandar MIPS, ARM, etc...?
¿cuantas etapas tiene el pipeline del procesador?
Implementar desde 0 los protocolos para comunicarse con los periféricos de memoria, VGA, etc debe ser un infierno
Jo, q hilo mas interesante... El viernes me hacia conjeturas sobre la dificultad de crear una alu desde cero... Por cierto, tiene bus de datos y direcciones independientes para la ram y la rom, o la comparten?
Ya me pareció muy interesante cuando me lo comentasteis... y pienso lo mismo que el primer dia, ¿pero que os habéis fumado? por que....:
29457
JoJo_ReloadeD
19/11/2012, 13:59
Questions questions:
Cuantas instrucciones por segundo ejecuta?
Solo modo texto? O solo de momento?
El Atmega 328 ejecuta 1 MIPS por mhz, lo tenemos a 16mhz asi que en bruto el sistema rinde 16MIPS, pero dado que la cpu es emulada esto sera menor. Habria que hacer calculos para determinarlo.
Si, de momento solo texto, en el futuro posiblemente tambien modo grafico :)
Esta genial el bicho! que resolucion es capaz de mostrar en pantalla... como haceis para generar la señal VGA?
Por el momento solo el estandar CGA 80x25 modo texto con resolucion VGA 800x600. Con el modulo Microvga.
¿Habeis utilizado algún set de instruciones estandar MIPS, ARM, etc...?
¿cuantas etapas tiene el pipeline del procesador?
Implementar desde 0 los protocolos para comunicarse con los periféricos de memoria, VGA, etc debe ser un infierno
Es un juego de instrucciones propio, pero inspirado en el MIPS R2000 y el Intel 8088.
El procesador esta emulado por codigo, puedes verlo tu mismo, tiene una etapa de decodificacion de la instruccion, otra de lectura de registros / parametros, y ya la ejecucion de la instruccion.
No creas, todo funciona bajo el bus SPI, que es bastante sencillo de controlar.
Jo, q hilo mas interesante... El viernes me hacia conjeturas sobre la dificultad de crear una alu desde cero... Por cierto, tiene bus de datos y direcciones independientes para la ram y la rom, o la comparten?
Es un bus SPI compartido. De hecho el sistema no tiene rom. La 'bios' es un fichero llamado 'bios.bin' en la raiz de la tarjeta SD :)
Ya me pareció muy interesante cuando me lo comentasteis... y pienso lo mismo que el primer dia, ¿pero que os habéis fumado? por que....:
Mandanga buena xD
Teneis algun "roadmap"?
Aceptais ideas/criticas constructivas?
Acojoneitor me dejáis entre JoJo_ReloadeD y xzakox, quereis ser mis amigos? XD En serio, os currais cada cosa que flipo, ya me gustaría mínimo observaros y aprender una pequeña parte de lo que sabéis y de lo manitas que sois. Y hablando de esto no se porque también me viene a la cabeza ArChEr, aunque realmente si se muy bien porque, otro manitas.
JoJo_ReloadeD
19/11/2012, 20:06
Teneis algun "roadmap"?
Aceptais ideas/criticas constructivas?
Por supuesto:
- Diseñar la PCB y hacer una tirada de placas
- Añadir mas funciones del sistema
- Documentar mas el codigo (la idea es que el proyecto sea didactico)
- Quizas añadir un modo grafico, aun no lo tengo claro.
- Sonido e implementacion de un motor text to speech
Y claro que aceptamos criticas constructivas, para eso lo hacemos publico :)
Bueno pues voy a poner mis impresiones, ideas, dudas y cosas que cambiaria:
Impresiones:
Me gusta la idea, siempre me ha hecho gracia tocar sistemas limitados y me gusta que no sean de 8 bits porque en realidad cada vez que quieres tratar con numeros un poquito grandes es un co*azo..., aunque aun le veo algunas carencias pero hay potencial :)
Dudas:
El maximo de ram seran 32KB? o se puede asignar mas?
Se pueden utilizar el stack pointer o el program counter como parametros de las instrucciones?
No hay flags de estado del procesador?
Que pasa con operaciones no validas (dividir entre 0...)?
Si las operaciones son de 32 bits no se pueden cargar inmediatos de 32 bits (se cargan de manera indirecta, no?)?
No habra mas de 32 instrucciones (viendo que hay 5 bits diria que no pero diria que sobran bits, 5-8-8-8)?
Ideas:
-Modo grafico 320x200x8 con doble buffering
-Capacidad de generar interrupciones (vblank?)
-Capacidad de sincronizacion: la posibilidad de tener uno o varios timers programables o no para sincronizar las aplicaciones a una velocidad constante.
-Añadir 2 puertos de 9 pins para utilizar mandos standard, seria posible?
-Quiza algo de memory mapping, imagino que las primeras 32K posiciones serán la ram, si se hace un modo grafico podria tener la vram mapeada y que segun donde se acceda se escriba a un lugar u otro.
Cosas que cambiaria:
-Un bit extra (o mas) para instrucciones futuras, quien sabe, una revision del firmware podria añadir cosas utiles xD
-Sugerencias para el codigo que he visto del "emulador":
if (debug)
#ifdef PC
fprintf(stderr, "Instruccion: SYS\n");
#else
Serial.println("Instruccion: SYS");
#endif
Esto esta por todas partes y yo creo que o con una funcion que contenga eso o un macro se reduciria el codigo y se vería mejor.
#ifdef PC
extern uint32_t r[16]; // CPU Registers
#else
extern unsigned long r[16]; // CPU Registers
#endif
De manera similar a lo anterior esto esta por todas partes, yo crearia un tipo (pcp_int32 por ejemplo) y segun el sistema que sea una cosa u otra y asi no hay que condicionar el codigo en tantos lugares (como la declaracion de la funcion cpu, ugh).
Decodificacion de opcode/registros:
opcode=instruction >> 27;
data = instruction << 5; // Discard the opcode bits
data = data >> 5; // we get only the 27 lower bits
firstRegister = data >> 23;
aux=data;
aux=aux << 9;
aux=aux >> 9;
secondRegister=aux >> 19;
aux=aux << 13;
aux=aux >> 13;
thirdRegister = aux >> 15;
Yo haria la extraccion algo tal que:
opcode = instruccion >> (WORD_SIZE - OPCODE_SIZE);
firstRegister = instruccion && FIRST_REGISTER_MASK;
firstRegister = firstRegister >> FIRST_REGISTER_BIT_SHIFT;*
Si el ultimo esta alineado a los ultimos bits no haria falta el shift.
Y de igual forma con los otros 2, si es que deja hacer cosas como la *, que igual no esta asi porque no compila bien con esa placa.
Y eso es todo, por ahora xD espero servir algo de ayuda y tened en cuenta que escribo de cabeza y hace mucho que no toco C, igual he dicho alguna tonteria xD
_-Caleb-_
19/11/2012, 21:56
Es un proyecto interesantísimo tio, ojalá os vaya bien la cosa, y nosotros podamos disfrutarlo :D
Yo tenia en mente un proyecto parecido aunque ahora lo tengo aparcado por el tema de Zeoma, mi idea era hacer un ordenador a la antigua ausanza como un msx/Amstrad CPC/spectrum pero con un procesador potente actual rollo ARM ( aunque sea uno basico a 75Mhz ), pero ojo solo la potencia actual, luego al encender el ordenador apareceria el Basic como en el MSX por ejemplo donde podrias programar tus cosas y grabarlas y cargar, pero nada de androides ni sistemas operativos complejos... encender y programar como en los viejos tiempos. Seria algo asi como un MSX 3 xD
Es el proyecto que quiero hacer yo, espero aprender mucho con vuestro proyecto para poder aplicarlo yo al mio cuando tenga algo de tiempo :D
Un saludo y muchas suerte!
Wave, si el tema de los ifdefs fue un arreglo rápido para juntar las dos implementaciones, empezó JoJo sobre AVR y cuando me sumé yo, como no tenía todo el hard, lo porté rápidamente a linux para empezar a currar, y para publicarlo lo pusimos todo junto, pero todavía le queda mucha limpieza, es como lo de los printfs o salidas por serial para debug, en el todo está hacer un macro o una funcion de debug para imprimir por donde sea, además es probable que la versión software la porte sobre SDL para poder tener la pantalla con la salida de video, y más zonas con info de los registros, debug, etc.
Todavía queda mucho curro, pero bienvenidas sean sugerencias!
JoJo_ReloadeD
19/11/2012, 23:19
Actualizado el blog con la primera prueba del circuito text to speech que luego sera la voz del PCP:
http://pcp.vieju.net/?p=41
Actualizado el blog con la primera prueba del circuito text to speech que luego sera la voz del PCP:
http://pcp.vieju.net/?p=41
Esa caracteristica me encanta :D rollo WOPR en wargames o deberia decir imsai... no se si realmente los imsai tenian esa capacidad.
Actualizado el blog con la primera prueba del circuito text to speech que luego sera la voz del PCP:
desde luego el text to speech sera lo mas lucido, jeje, que pasote ...
Aiken
JoJo_ReloadeD si haceis la cpu en una FPGA realmente seria casi un procesador real, habéis valorado esa idea?
Me interesa mucho el tema de la señal VGA, en este momento tenéis un modo de texto primitivo pero supongo que la idea será implementar algún modo gráfico también. Habéis mirado algo del tema? vais a utilizar alguna VPU/GPU existente o lo vais hacer con algún microcontrolador o FPGA? La verdad es que tengo muchas dudas sobre este tema... por ejemplo como acceden a la misma memoria la CPU y la GPU? o son memorias independientes y la CPU solo le dice a la GPU lo que tiene que hacer?
Un saludo! y gracias por este magnifico proyecto.
¿Podra correr el doom y el mame? XDDDDDDD
tiene las mismas siglas que el polvo de angel,seguro que nos estan monitorizando :D
JoJo_ReloadeD
26/11/2012, 10:47
JoJo_ReloadeD si haceis la cpu en una FPGA realmente seria casi un procesador real, habéis valorado esa idea?
Me interesa mucho el tema de la señal VGA, en este momento tenéis un modo de texto primitivo pero supongo que la idea será implementar algún modo gráfico también. Habéis mirado algo del tema? vais a utilizar alguna VPU/GPU existente o lo vais hacer con algún microcontrolador o FPGA? La verdad es que tengo muchas dudas sobre este tema... por ejemplo como acceden a la misma memoria la CPU y la GPU? o son memorias independientes y la CPU solo le dice a la GPU lo que tiene que hacer?
Un saludo! y gracias por este magnifico proyecto.
Si, es posible que en el futuro implementemos todo en una fpga.
Si, tambien es posible que añadamos soporte a los modos 320x200 256 colores, 640x480 16 colores ademas del actual, 80x25 16 colores en texto. De momento lo estamos haciendo con el modulo mvga como decia. La grafica no esta mapeada en memoria, se hace todo via E/S a instancias de la CPU.
De nada hombre, ya iremos comentando los avances :)
¿Podra correr el doom y el mame? XDDDDDDD
De momento el Pong, luego ya veremos :)
tiene las mismas siglas que el polvo de angel,seguro que nos estan monitorizando :D
Un tirito de esto y llegas al cielo ;)
JoJo_ReloadeD
28/11/2012, 19:56
Novedades, el circuito de sonido ya funciona y los programas pueden acceder a el mediante llamadas al sistema:
http://pcp.vieju.net/?p=60
El Pong ya tiene fx :)
Jejeje os esta quedando de lujo! ¿hay alguna novedad mas?
josepzin
15/12/2012, 12:52
No me entero muy bien de que va, pero todo mi apoyo y admiración* por hacer algo incomprensible para mi!!
* Mi apoyo y admiración se retiran si este proyecto se usa para cosas religiosas o magufas ;) :D
** Raro que los videos no funcionen en FF...
Una duda técnica... cuando escribes el programa en ensamblador de Ithladin, como lo guardais en memoria? como ensamblador o lo traduces ya a código máquina? No se si me he explicado muy bien...
Un saludo!
JoJo_ReloadeD
15/12/2012, 13:27
Jejeje os esta quedando de lujo! ¿hay alguna novedad mas?
Estamos en ello, presentaremos mas temas en breve :)
No me entero muy bien de que va, pero todo mi apoyo y admiración* por hacer algo incomprensible para mi!!
* Mi apoyo y admiración se retiran si este proyecto se usa para cosas religiosas o magufas ;) :D
** Raro que los videos no funcionen en FF...
Jaja tranqui ;) y si es raro que no te rulen los videos...
Una duda técnica... cuando escribes el programa en ensamblador de Ithladin, como lo guardais en memoria? como ensamblador o lo traduces ya a código máquina? No se si me he explicado muy bien...
Un saludo!
A ver, ithlasm convierte un fichero de texto con nemonicos (LD,ADD...) en codigo maquina, generando un fichero binario, el cual es ejecutable por la cpu.
En realidad hace bastante mas que convertir solamente, calcula los destinos de los saltos, permite usar variables, inicializar la pila...
Estamos en ello, presentaremos mas temas en breve :)
Jaja tranqui ;) y si es raro que no te rulen los videos...
A ver, ithlasm convierte un fichero de texto con nemonicos (LD,ADD...) en codigo maquina, generando un fichero binario, el cual es ejecutable por la cpu.
En realidad hace bastante mas que convertir solamente, calcula los destinos de los saltos, permite usar variables, inicializar la pila...
¿Pero el fichero de texto lo haces desde el mismo PCP? o lo haces desde un PC y luego se lo cargas...
JoJo_ReloadeD
15/12/2012, 14:47
¿Pero el fichero de texto lo haces desde el mismo PCP? o lo haces desde un PC y luego se lo cargas...
Se hace desde un pc y se pasa a la sd del pcp ;)
Una duda tecnica... la microVGA seria como tener un terminal VT100 conectado a la placa? es compatrible a nivel de comandos de escape?
¿ Donde puedo comprar una microVGA ?
Un saludo!
JoJo_ReloadeD
16/01/2013, 19:50
Una duda tecnica... la microVGA seria como tener un terminal VT100 conectado a la placa? es compatrible a nivel de comandos de escape?
¿ Donde puedo comprar una microVGA ?
Un saludo!
Creo que si, que tiene un alto nivel de compatiblidad.
Busca en google, en su pagina oficial ;)
Por cierto, en breve comentaremos mas temas de esto, que aunque parezca que esta parado no lo esta :D
Creo que si, que tiene un alto nivel de compatiblidad.
Busca en google, en su pagina oficial ;)
Por cierto, en breve comentaremos mas temas de esto, que aunque parezca que esta parado no lo esta :D
Genial :D, Estaré a la espera de esas novedades sobre el proyecto ;)
hellcross
17/01/2013, 11:30
Y yo que venia a por el polvo de angel...
Ñuño Martínez
17/01/2013, 15:02
Mola el proyecto. ¿Es abierto?
** Raro que los videos no funcionen en FF... Pos a mi no me parece raro. El HTML para mostrar el vídeo es un caos, mezclando Flash y HTML5... Decidíos por uno de los dos, leñes...
JoJo_ReloadeD
09/02/2013, 00:22
Un poquito de novedades por aqui!
Los esquemas a dia de hoy:
31344
Un render de la placa final:
31345
Y un prototipo a la espera de las placas finales:
http://pcp.vieju.net/wp-content/uploads/2013/02/img_2755-300x225.jpg
(http://pcp.vieju.net/wp-content/uploads/2013/02/img_2755.jpg)
Mola el proyecto. ¿Es abierto?
No habia leido esto :)
Si, todo se puede ver en el blog del proyecto:
http://pcp.vieju.net
JoJo_ReloadeD
09/03/2013, 14:30
Ya han llegado las nuevas pcbs:
http://chan.vieju.net/thumb/1362831895663s.jpg
(http://chan.vieju.net/src/1362831895663.jpg)
http://chan.vieju.net/thumb/1362831927752s.jpg (http://chan.vieju.net/src/1362831927752.jpg)
JoJo_ReloadeD
05/05/2013, 01:19
Mas novedades:
Acabo de terminar el firmware v0.2 para el PCP, con este se nota un gran aumento en la velocidad de proceso del sistema.
http://pcp.vieju.net/wp-content/uploads/2013/04/img_3082-300x225.jpg (http://pcp.vieju.net/wp-content/uploads/2013/04/img_3082.jpg)
Mas info en:
http://pcp.vieju.net/?p=94
Segata Sanshiro
05/05/2013, 03:10
El PCP de Vieju es el mejor ordenador para ejecutar GEOS
(perdón por el chiste).
_-Caleb-_
05/05/2013, 08:24
Anda la verdad es que mola y ya va el pong chetoso a toda pastilla :D
Mola JoJo :D
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.