Igual digo tonterías porque yo no sé apenas de esto. He tenido que consultar el manual del Z80 para acordarme de cómo se formaban las instrucciones (opcodes + operandos). Y eso que de joven ensamblaba a mano y me funcionaron los programas...cahis.dancresp escribió:Tengo una duda con esta CPU de 1 supuesto bit...
Se programa con los 4 microswitch que hay en la placa.
Entonces, ¿esto no lo convierte en una CPU de 4 bits con un único nibble de memoria?
He mirado la definición de las instrucciones en el readme.md del github en inglés:
Y luego la traducción al inglés del index.md de los docs (lo marco como código para que separe algo las columnas).Description
Left switch: Controls MUX to choose whether to update Reg A or PC
Right switch: Controls second XOR operand or sets destination PC address
LR
00: MUX=0, RA=RA^0=RA, PC=!PC
01: MUX=0, RA=RA^1=!RA, PC=!PC
10: MUX=1, RA=RA, PC=0
11: MUX=1, RA=RA, PC=1
In regular words:
OFF, OFF will preserve the value of A and advance PC (0->1, 1->0)
OFF, ON will invert the value of A (0->1, 1->0) and advance PC (0->1, 1->0)
ON, OFF will preserve the value of A and set PC to 0
ON, ON will preserve the value of A and set PC to 1
Código: Seleccionar todo
item spec
general purpose register 1bit x 1
address space 2bit
address bus width 1bit
ROM capacity 4bit
instruction set ADD, JMP
program counter 1bit
flag register Unimplemented
arithmetic operations 1bit addition (XOR)
clock frequency Approximately 1Hz
Total number of ICs Four
- - registros de 1 bit (uno solo, acumulador). La palabra = 1 bit y, por tanto, eso da nombre a la CPU. Sin embargo, existe una "palabra larga" de 2 bits para las instrucciones.
- un juego de 2 instrucciones que ocupan 2 bits cada una (uno por el opcode y otro por el operando).
- El espacio de direcciones (de palabras) de memoria sería de 4 bits, aunque no lo dice así la documentación. En total, son los 4 microinterruptores de la ROM. Eso requeriría un bus de direcciones de 2 bits para dar un total de 2^2 = 4 palabras, pero.. ver más abajo.
- No hay RAM. El LED de salida se controla con el Registro Acumulador.
- El contador de programas tiene 1 bit (dos valores posibles, 0 y 1).
- El bus de direcciones es de 1 bit y, por tanto, el espacio de direcciones son 2 bits. Estas direcciones son para el contador de programa, no las palabras de la RAM/ROM. Podríamos decir que el contador (y el bus) funciona con la "palabra larga" de 2 bits.
- - La capacidad de 4 bits (palabras) para la ROM de la 1-bit CPU es consistente con la capacidad de direccionamiento de un Z80 (8 bits). El Z80 tiene un espacio de memoria (en palabras =bytes) que da el bus de direcciones (con 16 bits, el doble de los 8 bits de registros y datos). 2^16 = 65536 = 64kB (64 k palabras).
- Despista un poco eso de que el el contador de programa de la 1-bit CPU no tenga la misma métrica que el espacio de direcciones de palabras y se mueva de dos en dos bits por las palabras (cortas) de la ROM. En principio, uno esperaba que la CPU de 1 bit tuviera un bus de direcciones de 2 bits, pero no es necesario en este caso.