PCP, el Pequeño Computador Personal
-
- Amstrad PCW 8256
- Mensajes: 157
- Registrado: 18 Oct 2010, 23:07
- Sistema Favorito: Commodore Amiga
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: (Otro)
- Primera consola: Nintendo SNES
Re: PCP, el Pequeño Computador Personal
ya me gustaría a mi saber la mitad que vosotros pa poder idearme algo así
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: PCP, el Pequeño Computador Personal
JoJo escribió:A ver, si, seria lo mismo, pero dado que la especificacion original dice que los registros de uso general son r0 - r13, rsp y rpc no deben de poder tocarse a mano.
En la implementacion actual si es asi, pero la idea es que no se puedan tocar como r14 y r15
Entonces.... ¿cómo se le da un valor inicial al puntero de pila si no puedes alterar el valor de ese registro?
Si no se pueden tocar ni R14 ni R15, cuando en el código máquina de una instrucción que soporta operandos de tipo registro, pongas como operando el valor 1110 ó 1111, ¿a qué registro referenciarían? (según la especificación)
Una de las bondades de los RISC es la ortogonalidad de las instrucciones para con los registros. En este sentido, muchos procesadores tratan al puntero de instrucciones y al puntero de pila como si fuera otro registro más. Si en una implementación física es más sencillo dejar a R14 y R15 como disponibles al usuario, ¿por qué quereis restringir su uso? Restringirlo conllevaría a que habría formatos de instrucción válidos pero con registros inválidos, lo cual llevaría, o bien a un comportamiento inesperado, o bien a una excepción del procesador. De cualquier forma, se complicaría la lógica de decodificación (pensar en ello si os decidis por implementar esta CPU en forma de descripción para FPGA)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- Hark0
- Amiga 1200
- Mensajes: 1695
- Registrado: 11 Jul 2012, 23:44
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: (Otro)
- Primera consola: (Otro)
- Ubicación: Cornellà de Llobregat - Barcelona
- Contactar:
Re: PCP, el Pequeño Computador Personal
Como mola!!!
Habra que echarle un ojo!!!!
Gracias x enlace e info!!!
Habra que echarle un ojo!!!!
Gracias x enlace e info!!!
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
- JoJo
- Amiga 1200
- Mensajes: 1067
- Registrado: 03 Feb 2008, 22:45
- Sistema Favorito: PC
- primer_sistema: PC
- consola_favorita: Nintendo SNES
- Primera consola: (Otro)
- Gracias dadas: 29 veces
- Gracias recibidas: 87 veces
Re: PCP, el Pequeño Computador Personal
mcleod_ideafix escribió:JoJo escribió:A ver, si, seria lo mismo, pero dado que la especificacion original dice que los registros de uso general son r0 - r13, rsp y rpc no deben de poder tocarse a mano.
En la implementacion actual si es asi, pero la idea es que no se puedan tocar como r14 y r15
Entonces.... ¿cómo se le da un valor inicial al puntero de pila si no puedes alterar el valor de ese registro?
Si no se pueden tocar ni R14 ni R15, cuando en el código máquina de una instrucción que soporta operandos de tipo registro, pongas como operando el valor 1110 ó 1111, ¿a qué registro referenciarían? (según la especificación)
Una de las bondades de los RISC es la ortogonalidad de las instrucciones para con los registros. En este sentido, muchos procesadores tratan al puntero de instrucciones y al puntero de pila como si fuera otro registro más. Si en una implementación física es más sencillo dejar a R14 y R15 como disponibles al usuario, ¿por qué quereis restringir su uso? Restringirlo conllevaría a que habría formatos de instrucción válidos pero con registros inválidos, lo cual llevaría, o bien a un comportamiento inesperado, o bien a una excepción del procesador. De cualquier forma, se complicaría la lógica de decodificación (pensar en ello si os decidis por implementar esta CPU en forma de descripción para FPGA)
No digo que lo vayamos a limitar, digo que la especificacion original es esa, y por ello existen instrucciones como jmp, aparte de por la claridad de ver que se trata de un salto. Lo mas seguro es que lo dejemos libre porque total no hace daño, que cada cual luego programe como quiera

La idea sobre el puntero de pila, es que tampoco tenga que tocarse a mano, si no que la pila sea como una especie de caja negra a nivel de programacion en ensamblador, luego en la depuracion si podemos ver que hace internamente. De hecho si miras un programa ejemplo y la implementacion veras que con reservar espacio para la pila, ya se apunta el puntero a su posicion mas alta (pila lifo) dentro de la memoria reservada para esta justo antes de empezar el programa en si. Precisamente elegi esta aproximacion, el estilo x86 a la pila (un simple push o pop) para simplificar mas el ensamblador, sin tener que forzar al programador a gestionar el mismo el puntero de pila, su area de memoria, etc...
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: PCP, el Pequeño Computador Personal
JoJo escribió:De hecho si miras un programa ejemplo y la implementacion veras que con reservar espacio para la pila, ya se apunta el puntero a su posicion mas alta (pila lifo) dentro de la memoria reservada para esta justo antes de empezar el programa en si.
Pero piensa en cuando esta CPU deje de ser una emulación y sea un procesador "de verdad". Si pensais implementarla en FPGA, ¿cómo se manejará la pila?
JoJo escribió:Precisamente elegi esta aproximacion, el estilo x86 a la pila (un simple push o pop) para simplificar mas el ensamblador, sin tener que forzar al programador a gestionar el mismo el puntero de pila, su area de memoria, etc...
Pero en el X86 el programador también necesita gestionar la pila, y en los casos en los que no lo hace, es porque lo hace el S.O. al cargar el ejecutable. Al final, alguien tiene que inicializar la pila, usando para ello instrucciones que carguen un dato inmediato al registro SP.
Lo que quiero decir con todo esto es que parece que estais mezclando la especificación de la CPU con la especificación del S.O. que gobierna la máquina, dejando operaciones "oscuras" como inicializar la pila a cargo de no se sabe quién. Entiendo que bios.bin prepara el entorno de ejecución del binario que se vaya a ejecutar en la máquina, y entiendo que entre otras cosas, bios.bin es quien prepara la pila, pero... ¿cómo? ¿si no hay instrucciones para mover la pila de un sitio a otro?
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- JoJo
- Amiga 1200
- Mensajes: 1067
- Registrado: 03 Feb 2008, 22:45
- Sistema Favorito: PC
- primer_sistema: PC
- consola_favorita: Nintendo SNES
- Primera consola: (Otro)
- Gracias dadas: 29 veces
- Gracias recibidas: 87 veces
Re: PCP, el Pequeño Computador Personal
Tienes razon, el rsp lo tocamos a la hora de inicializar la pila, tan caja negra lo hemos hecho que ya ni me acordaba, el tema es que lo hace el ensamblador directamente, genera la instruccion ld rsp, direccion_final_pila automaticamente y en base a la memoria que reserves para la pila.
Sea como sea a nivel de programacion no tienes porque tocarlo nunca
Sea como sea a nivel de programacion no tienes porque tocarlo nunca

- JoJo
- Amiga 1200
- Mensajes: 1067
- Registrado: 03 Feb 2008, 22:45
- Sistema Favorito: PC
- primer_sistema: PC
- consola_favorita: Nintendo SNES
- Primera consola: (Otro)
- Gracias dadas: 29 veces
- Gracias recibidas: 87 veces
Re: PCP, el Pequeño Computador Personal
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

http://pcp.vieju.net/?p=41
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: PCP, el Pequeño Computador Personal
¿Es una voz sintetizada por software en el ATMega o es otro circuito aparte como el microVGA? Suena un poco como el SP0256-AL2, el lengendario chip del Currah uSpeech 

Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- JoJo
- Amiga 1200
- Mensajes: 1067
- Registrado: 03 Feb 2008, 22:45
- Sistema Favorito: PC
- primer_sistema: PC
- consola_favorita: Nintendo SNES
- Primera consola: (Otro)
- Gracias dadas: 29 veces
- Gracias recibidas: 87 veces
Re: PCP, el Pequeño Computador Personal
mcleod_ideafix escribió:¿Es una voz sintetizada por software en el ATMega o es otro circuito aparte como el microVGA? Suena un poco como el SP0256-AL2, el lengendario chip del Currah uSpeech
Premio para el caballero

- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: PCP, el Pequeño Computador Personal
JoJo escribió:mcleod_ideafix escribió:¿Es una voz sintetizada por software en el ATMega o es otro circuito aparte como el microVGA? Suena un poco como el SP0256-AL2, el lengendario chip del Currah uSpeech
Premio para el caballero
Pues fíjate que había pensado que era un SpeakJet, por aquello de que el AL0256 es cada vez más difícil de encontrar.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
Volver a “Otros microordenadores”
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado