J1s - Una CPU mínima para la FPGA IceSugar

Historia

Todo comenzó con J1, una CPU minimalista implementada con una FPGA y usada en una aplicación de video.

La J1 original usa una RAM con la capacidad de realizar dos operaciones de lectura y una de escritura en forma simultánea.  La J1a es una versión de la J1 para RAM que sólo puede realizar una lectura y una escritura simultanea, además de otras diferencias de importancia.

La J1s es una adaptación de la J1a para correr en la FPGA Icesugar 1.5 de Muse Labs.

Descripción

La J1s es una CPU minimalista, basada en stack, con arquitectura von Neumann, con un juego de instrucciones pensado para la implementación de Forth.

La J1s no tiene:

  • registro de status o bit de carry
  • operaciones en 8 bits
  • interrupciones o excepciones
  • soporte para multiplicación/división.

La J1s tiene extensiones para soportar acceso a memoria usando el formato base + desplazamiento.

Arquitectura

El estado de la J1s consiste de:

  • Un stack de datos con 33 celdas de 16 bits
  • Un stack de retornos con 33 celdas de 16 bits
  • Un program counter de 12 bits

No existe otro registro, flag de condición ni nada similar. Los stacks están implementandos en hardware fuera de la RAM. La E/S se maneja mapeada a memoria en el rango 0x1000 - 0x1FFF (13 bits)

Memoria

La memoria está organizada en celdas de 16 bits. Las operaciones a memoria leen y graban celdas de 16 bits. Las direcciones 0-4095 corresponden a la RAM; desde 4096 para arriba son puertas de E/S mapeadas a memoria.

Instrucciones

Las instrucciones son:

  • Cargar literal al stack.
  • Salto incondicional.
  • Salto relativo base + desplazamiento.
  • Salto condicional.
  • Llamada directa.
  • Llamada relativa base + desplazamiento.
  • ALU, operaciones aritméticas/lógicas.







No hay comentarios.:

Publicar un comentario