You are on page 1of 4

Code-2

CODE-2 (Computador Didctico Elemental, versin 2), y su predecesor ODE son dos
procesadores ideados por los profesores Alberto Prieto y Antonio Lloris, de la Universidad de
Granada, para facilitar la compresin del funcionamiento y el diseo hardware de un
computador.

Ambos procesadores son de tipo RISC, con un formato de instrucciones completamente regular,
y con 16 instrucciones mquina. La longitud de palabra (tanto de la ALU como de la memoria)
de ODE es de 12 bits, mientras que la de CODE-2 es de 16 bits.

La concepcin y diseo de estos ordenadores se realiz con los siguientes objetivos:

Que el alumno pudiese comprender el funcionamiento de un computador a travs de un modelo


que redujese al mximo la complejidad inherente al relativamente elevado nmero de
instrucciones mquina, a los distintos formatos de instrucciones, etc. de los computadores
convencionales; pero en el que permaneciesen los elementos necesarios para comprender los
conceptos fundamentales de la estructura de un computador.

Disponer de un repertorio de instrucciones mquina que, a pesar de lo reducido que es,


permitiese realizar una gran variedad de programas, con saltos condicionales e incondicionales,
llamadas a subprogramas, operaciones aritmticas y lgicas, entradas y salidas, etc.

El modelo pudiese utilizarse para enseanza del lenguaje mquina, del lenguaje ensamblador y
realizar con los alumnos su diseo completo a nivel de puertas lgicas y circuitos integrados de
media escala (decodificadores, multiplexores, etc.) as como con circuitos de muy gran escala
(con una FPGA, por ejemplo).

Existe una abundante documentacin sobre CODE-2, as como material didctico (ensamblador
cruzado, emulador, etc.) definido como software libre. Adems hay una versin comercializada
del mismo.

La concepcin del Ordenador Didctico Elemental (ODE) fue realizada en 1982 por los profesores
Alberto Prieto y Antonio Lloris de la Universidad de Granada, habiendo obtenido por esta idea
un accsit en el Concurso Nacional de Mdulos Experimentales Destinados al Uso y Aprendizaje
de la Informtica convocado el ao citado por FUNDESCO (Fundacin Social para el Desarrollo
de las Comunicaciones, de la Compaa Telefnica).

El proyecto de ODE fue perfeccionado y se abord su diseo e implementacin completa con la


colaboracin de los alumnos Francisco Gmez Mula y Francisco Jos Pelayo Valle (en la
actualidad Profesor Titular y Catedrtico, respectivamente, del Departamento de Arquitectura
y Tecnologa de Computadores de la Universidad de Granada). El trabajo desarrollado qued
descrito en diversas publicaciones.

En la definicin del repertorio de instrucciones mquina y en el desarrollo de CODE-2


colaboraron, con el profesor Prieto, los tambin profesores Antonio Caas, Julio Ortega,
Francisco Pelayo y Francisco Gmez Mula. El alumno Antonio Martnez lvarez (actualmente
profesor de la Universidad de Alicante) se hizo cargo de la realizacin de un emulador y un
ensamblador de CODE-2, as como de todo un entorno didctico (denominado ECODE)8 que
permite comprobar el funcionamiento tanto externo como interno del computador, y que
puede ser descargado como software libre.
Adems. se han realizado diversas implementaciones de CODE-2 utilizando distintas tecnologas
y arquitecturas, en las que tambin intervinieron Begoa del Pino y Javier Daz.

Posteriormente Pedro Castillo utiliz el CODE-2 para experimentar en diseo de procesadores


utilizando computacin evolutiva;12 y Hctor Pomares, contando con la colaboracin de las
estudiantes Lidia Lpez Mansilla y Sara Egea Serrano actualizo el entorno software, que incluye
el simulador de Antonio Martnez lvarez y un ensamblador realizado por el alumno Andrs
Jimnez Hubeaux.

Estructura de CODE-2
En la figura se muestra un esquema simplificado de CODE-2, que incluye los elementos
accesibles directamente desde el lenguaje mquina; estos son:

Banco de registros, compuesto de 16 registros r0,...,rF. El registro rE se utiliza como


puntero de pila (SP) y el rD como registro de direccin, para almacenar posiciones de
memoria con objeto de realizar direccionamientos indirectos e indexados. A pesar de la
dedicacin especfica de los registros rE y rD, el programador puede utilizarlos tambin
para otros cometidos.
Unidad aritmtico lgica (ALU), con la que se pueden realizar las operaciones
aritmticas de suma y resta (entero en complemento a 2), la operacin lgica NAND,
desplazamientos lgicos del acumulador a derecha e izquierda y desplazamiento
aritmtico a la derecha.
Biestables indicadores (FF) para gestionar las instrucciones condicionales de salto o de
llamadas a subprogramas. Se incluyen biestables de cero (Z), signo (S), acarreo (C) y
desbordamiento (V).
Memoria principal (M), de 2E16 = 64 Kpalabras de 16 bits (128 KBytes).
Puertos de entrada (IP) y puertos de salida (OP): admite hasta 256 de cada uno de ellos
(IP00 a IPFF y OP00 a OPFF)

El repertorio de instrucciones de CODE-2 considera cinco tipos de formatos (F0 a F4), utilizando
cada instruccin uno de ellos. Todas las instrucciones comienzan con un campo de 4 bits que
corresponde al cdigo de operacin (codop). Por tanto CODE-2 puede tener como mximo 16
instrucciones. Los otros campos de la instruccin hacen referencia a los operadores de la
instruccin y dependen del formato asociado a la instruccin.
Cdigos que especifican las condiciones de salto o de llamada a subprograma.

Cada operando que comienzan por r representa un registro (r0 a rF), el operando v corresponde
a un valor inmediato de 8 bits, y cnd hace alusin a un cdigo de condicin de salto o llamada a
subrutina de acuerdo con los cdigos que se dan en la Figura 4.

El repertorio de las 16 instrucciones mquina de CODE-2 es el que se muestra en la Figura 5.


Cualquier programa (en cdigo mquina) de CODE-2 slo puede contener instrucciones tomadas
de entre las 16 del repertorio. Cada instruccin queda identificada por un cdigo de operacin
(codop) de 4 bits (o una cifra hexadecimal), y se forma de acuerdo con los formatos de la Figura
3: primero se incluyen los 4 bits del codop, y luego los cdigos que identifican los operandos de
dicha instruccin (0000 para el registro r0, 0001 para el registro r1,.... 1111 para el registro rF).
Por ejemplo, la instruccin que sume el contenido de los registros r4 y r5 y el resultado lo
almacene en el registro rF es la siguiente: 0110 1111 0100 0101 (Cdigo de operacin de sumar:
0110; cdigo del registro del resultado rF: 1111, cdigo del registro del primer sumando r4:
0100, y cdigo del registro del segundo sumando: 0101). En cdigo hexadecimal esa instruccin
sera: 6F45.

Para facilitar la redaccin de un programa, previamente a codificarlo en binario, se puede


describir con un lenguaje smblico en el que en vez de cdigos binarios se utilizan nemnicos
para los cdigos de operacin, y no es necesario poner en binario los cdigos de los operandos.
La instruccin anterior (6F45) en nemnicos sera: ADDS rF,r4,r5.

Las operaciones que hace cada una de las instrucciones son las siguientes:

LD: cargar un registro con un dato de la memoria.


ST: almacenar el contenido de un registro de memoria.
LLI: carga los 8 bits menos significativos de un registro con el valor que se da en el campo v de
la instruccin, los ms significativos los pone a 0.
LHI: carga los 8 bits ms significativos de un registro con el valor que se da en el campo v de la
instruccin, no modifica los 8 bits menos significativos.
IN: entrada (lleva el contenido de un puerto de entrada a uno de los registros)
OUT: salida (lleva el contenido de un registro a un puerto de salida)
ADDS: suma
SUBS: resta
NAND: operacin lgica NAND.
SHL: desplaza a la izquierda los bits de un registro
SHR: desplaza a la derecha los bits de un registro.
SHRA: desplaza a la derecha los bits de un registro, sin modificar el bit ms significativo.
B-: salto del programa a la posicin de memoria indicada en el registro rD
CALL-: llamada al subprograma que comienza en la posicin de memoria indicada en el registro
rD
RET: retorno de subprograma
HALT: parada

You might also like