Indice

  1. Introducción
  2. Esquema
  3. Resumen de Opcodes
  4. Opcodes de 4 bits
  5. Saltos
  6. Entrada/Salida
  7. Lenguaje Assembler
  8. Pruebas

Introducción
[Arriba]

Este manual informativo, creado con la intención de proporcionar el soporte necesario para el correcto uso de la cpumonociclo.

Cualquier duda relacionada podrá ser solventada en futuras revisiones.

Esquema
[Arriba]

Resumen de opcodes
[Arriba]

Existen distintos opcodes impelemntados en esta cpu, por ello hemos utilizado un resumen básico de los disponibles.

Recuerde que en cualquier caso, los opcode se encuentran al final de la instrucción.

  1. xx0[yyy]: ALU
    • 000: s = a
    • 001: s = ~a
    • 010: s = a + b
    • 011: s = a - b
    • 100: s = a & b
    • 101: s = a | b
    • 110: s = -a
    • 111: s = -b
  2. xx1000: Carga
  3. 001001: Salto Incondicional
  4. 001010: Salto Condicional z=1
  5. 001011: Salto Condicional z=0
  6. 001100: Leer Entrada
  7. 001101: Escribir en Salida desde Registro
  8. 001110: Escribir en Salida Inmediato
  9. 001111: Salto relativo
  10. 011001: Salto a subrutina
  11. 011010: Retorno a subrutina
  12. No operación *

La no operación está codificada en la siguiente instrucción 1000_0000_0100_1111


Opcodes 4 bits
[Arriba]

En la cpu se incoporan dos opcodes que usan 4 bits.

ALU y Carga
4 bits4 bits 4 bits  4 bits  
Registro destinoSegundo op Primer op0yyy
Registro destinoConstante inmediata1000

Saltos
[Arriba]

En la CPU se incorporan seis operaciones de salto, todas de 6 bits de opcode.

Saltos
Tipo de operacion1 bit9 bits6bits
IncondicionalDireccion de destino001001
Si zeroDirección de destino001010
No zeroDirección de destino001011
RelativoSigno +/-Cantidad de salto001111
SubrutinaDirección de destino011001
Retorno*011010

La dirección de destino de un retorno de subrutina está almacenada en un registro llamado pc backup.

Entrada Salida
[Arriba]

La implementación de las operaciones de entrada salida está implementada de varias formas.

La cpu está preparada para utilizar cuatro puertos, lo que suman 8 dispositivos entrada/salida en total.

Existe un registro previo a los dispositivos de salida, mientras que la entrada es asíncrona.

Entrada/Salida
Tipo de operacion4 bits4 bits2bits6bits
Lectura a registroRegistro destino-Puerto001100
Salida desde registro-Registro origenPuerto001101
Salida constanteConstantePuerto001110

Assembler
[Arriba]

Nuestro lenguaje ensamblador está preparado para ser compilado con un script de bash.

La estructura que sigue es la siguiente:.

Pruebas
[Arriba]

En estas pruebas se puede observar el correcto funcionamiento de las actividades de la CPU.

Pruebas entrada/salida

Pruebas saltos relativos y a subrutina