1. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
Sistemas Digitales II(2012)
Informe del Trabajo Final
Fecha: 30 de julio de 2012
Manuel Martínez Anorozo
Pedro Daniel Ramírez López
0.1. Especificación de Diseño
0.1.1. Especificación del Sistema
1. Cada alumno seleccionará un “Conjunto de Instrucciones” de al menos 16
instrucciones distintas (independiente de los modos de direccionamientos y de los
operandos). Debe tener al menos dos instrucciones de cada grupo.
2. Cada instrucción debe tener dos modos de direccionamiento para el operando
fuente.
3. El diseño debe realizarse especificando detalladamente RD y ASM.
4. La Arquitectura de la Ruta de Datos de cada trabajo está especificada en la tabla
adjunta. (pueden adecuar lo que sea necesario a partir del modelo inicial)
5. El ASM puede debe adaptarse usando como ejemplo los modelos estudiados en
clase.
6. El sistema final debe estar funcionando en VHDL con un ejemplo de “Programa
Básico” especificado en la tabla adjunta.
7. Debe realizarse primero un VHDL funcional.
8. Posteriormente un VHDL estructural. Los diferentes componentes, incluyendo la
ALU podrán ser diseñados hasta el nivel funcional. La Maquina de Control Micro-
programada debe realizarse a nivel estructural.
9. Debe tener una fuente de interrupción HW.
PR-MM 1
2. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.2. Diseño de un Procesador de uso General
0.2.1. Especificaciones Generales
Bus de datos : 8 bits. Bus de direcciones : 8 bits.
Modos de direccionamientos :
Implementar dos modos por cada instrucción
Inmediato
Registro
Registro Indirecto
Directo
Indirecto
Tipo Nº de Registros Operandos en Instrucción
b) 4(R0,R1,R2,R3)+A 2(A<=R1+R2)
Cuadro 1: Especificaciones de Diseño.
PR-MM 2
3. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.3. Conjunto de Instrucciones
0.3.1. Instrucciones de Tranferencia de Datos
Load(cargar) - LD La instrucción load(carga) sirve para designar una transferencia
de memoria a un registro de procesador.
Store(almacenar) - ST La instrucción store(almacena) indica la transferencia de un
registro de procesador a una palabra de memoria.
Move(mover) - MOVE La instrucción de move(movimiento) sirve en las computa-
doras con varios registros de procesador para designar una tranferencia entre registros.
También sirve para transferir datos entre registros y memoria y entre dos palabras de
memoria.
Instrucciones de pila
Empujar(push)- PUSH y Desaparecer(pop) - POP Estas instrucciones de pila
transfieren datos entre una pila de memoria y un registro de procesador o memoria.
La operación de empujar coloca un elemento nuevo encima de la pila. La operación
desaparecer remueve un elemento de la pila, de modo que la pila se alza de repente;
sin embargo, nada se empuja ni desaparece físicamente en la pila. Más bien, la pila de
memoria es, en esencia, parte de un espacio de dirección de memoria accedida por una
dirección que siempre se incrementa o disminuye antes o después del acceso a memoria.
El registro que contiene la dirección de la pila se llama apuntador de la pila(SP, Stack
Pointer), pues su valor siempre apunta al elemento de la parte superior de aquélla. Las
operaciones de empujar y desaparecer se implementan disminuyendo o incrementando el
apuntador de la pila.
0.3.2. Instrucciones de Manipulación de Datos
Instrucciones Aritméticas
Increment(incremento) La intrucción increment(incremento) suma uno al valor al-
macenado en un registro o palabra de memoria. Una característica común de la operación
de incremento, al ejecutarse sobre una palabra, es que un número binario que consiste
en unos produce un resultado de ceros cuando se incrementa.
Add(suma) - ADD La intrucción add(suma) realiza la operación de suma sobre dos
registros del procesaor y el resultado deja en un registro no visible para el programador,
llamado ACC(acumulador), se puede traer éste resultado a uno de los registros del proce-
sador por medio de la instrucción MOVE
PR-MM 3
4. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
Instrucciones de Desplazamiento
Desplazamiento lógico a la izquierda - SHL La instrucción de desplazamiento a
la izquierda hace correr los bits para esa dirección, insertando un bit de cero(0) en el
menos signifiactivo.
0.3.3. Instrucciones de Control de Programa
Salto - JUMP Las instrucción de bifurcación JUMP, es de dirección. Cuando se eje-
cuta, la instrucción de bifurcación provoca una transferencia de la dirección efectiva al
PC. Puesto que el PC contiene la dirección de la siguiente insteucción a ejecutar, ésta se
obtendrá de la localidad especificada por la dirección efectiva.
Llamada(call) - CALL y Retorno(retorno) - RET Las instruciones de llama-
da(call) y retorno(return) se utilizan con procedimientos. Al encontrar la instrucción de
call, se guarga en la pila la dirección del PC de la siguiente instrucción, los valores del
PSR, en la dirección saltada se realiza las intrucciones y luego se vuelva al anterior por
medio de (return), con los valores de PC, PSR sacado de la pila.
Bifurcar si menor - BL(branch if less) y Bifurcar si igual - BEQ(branch if
equal) La instrucción de BEQ realiza una resta entr los operandos y si el resultado es
dero es porque son iguales, con un flags del PSR se detecta ello y se salta a la direccion
especificada, con BL el salto se da por medio de un diferencia entre los operandos, si
existe un prestado en la salida(CARRY), es porque el segundo es menor al primero, esto
se detecta por medio de un flags del PSR, si esto ocurre se salta a la dirección especificada.
0.3.4. Interrupción de Programa - HW
Lo que se realiza es después de ejecutar cada instrucción se revisa si hay interrupción
de hardware, si existe se guardan todos los registros, el PSR, el PC, en la pila para
antender la interrupción, luego se salta a la dirección de servicio de interrupción, una vez
atendida toda, se retorna con los valores guardados en la pila.
PR-MM 4
5. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.4. Ruta de Datos
La ruta de datos se presenta en la figura 1. Se detallará a continuación cada compo-
nente.
R4
R3
R2
R1 R_RD
R_SEL
R_WR
ACC
ACC_LD
ACC_RD
ALU
REG_A
B
PSR
PSR_RD
PSR_LD
PSR_LD1
Memoria de
Instrucciones
A_LD
TEMP TEMP_RD
TEMP_LD
MUX M
PC
PC_RD
PC_LD
PC_CNT
SP
SP_DEC
SP_INC
RESET
AR
AR_LD
MEMORIA
0 1
DIR
M_WR
M_RD
RESET
MUX_MEM
IR
MUX IR
R_SEL
MUX_IR
IR_LD
0 1
7 4| 3 2|1 0
UNIDAD DE
CONTROL
CNTRL[HI|Z|C]
RUTADEDATOS
NEXT_DIR
MUX_SEL
BUSPRINCIPAL
A
Z
C
FUNCT
Buy SmartDraw!- purchased copies print this
document without a watermark.
Visit www.smartdraw.com or call 1-800-768-3729.
Figura 1: Ruta de Datos del Procesador.
0.4.1. Memoria Principal.
La memoria consta de 256 elementos de 8 bits, su salida se encuentra en Alta Impedan-
cia mientras que la señal de load(carga) y read(lectura) se encuentre en valor lógico de 0,
cuando se habilitan una de ellas, se activa la carga o lectura respectivamente, este valor
toma el bus o lee de él.
PR-MM 5
6. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.4.2. PC (program counter)
Este es un registro contador que siempre apunta en la siguiente instrucción de memo-
ria a ejecutar, como todos los otros registros es tri-estado, tiene la característica de
autoincremento, es decir no necesita de la ALU para incrementarse, y puede cargarse
a través del bus principal, esto es para implementar las operaciones de bifurcación de
programa.
0.4.3. AR (address register )
Es uno de los registros (aparte de SP) en donde se cargan direcciones para posterior-
mente escribir o leer en la memoria.
0.4.4. SP (stack pointer)
Registro apuntador(pointer) utilizado para realizar operaciones de pila, su valor es
inicializado a 255, el último elemento de la memoria principal, tiene la capacidad de
incrementarse o decrementarse.
0.4.5. Mux
Es un multiplexor de 2 a 1 de 8 bits, es utilizado para seleccionar que registro, SP o
AR, indicará la dirección de memoria; y también se utiliza para seleccionar entre registro
donde se ejecutará una operación de la memoria de instrucciones.
0.4.6. IR(instruction register)
Registro utilizado para guardar las instrucciones extraídas de la memoria, esta conec-
tada a la unidad de control para tomar el opcode y así saber que instrucción se va a
ejecutar.
0.4.7. Archivo de registros
Son los registros que el programador tendría a disposición para realizar las opera-
ciones, en la palabra de instrucción se tendría que indicar que archivo de registro se
querría utilizar, el selector funciona con la siguiente lógica:
Selector Registro
00 R0
01 R1
10 R3
11 R4
Cuadro 2: Selector de Registros.
PR-MM 6
7. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.4.8. ALU
Esta unidad realiza las operaciones aritméticas y lógicas, una de sus entradas es el
selector de operación que funciona según:
Selector Operación
00 Suma
01 Resta
10 Incremento
11 Correr Izquierda
Cuadro 3: Operaciones con la ALU.
0.4.9. Registros A y TEMP.
Son registros temporales utilizados para poder realizar las operaciones correspondi-
entes, en un entorno donde todos están conectados con todos. Las banderas de estados
también son salidas de esta ALU, es decir si la operación fue cero, negativo, si hubo
overflow , o si existe un acarreo de salida.
0.4.10. PSR
Registro que contiene las banderas de estado de la ALU, éste puede ser cargado
tanto de la ALU, como del bus principal, esto se realizó de esta manera ya que algunas
operaciones requieren que se cargue este registro desde la memoria(stack).
0.4.11. ACC
Registro acumulador, como todas las operaciones son solamente de un operando ,
las operaciones con más de un operando, utilizan como segundo operando y destino este
acumulador, además es donde se deja el valor de cualquier operación y luego con una
instrucción ase lleva ya sea en memoria o en los registros.
PR-MM 7
8. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.5. Unidad de Control
El formato de la palabra de instrucción se muestra a continuación:
Se utilizan 4 bits para especificar 16 operaciones, un operando 2 bits para seleccionar
uno de los 4 registros, y un campo DIR en caso de que se tenga que realizar operaciones
de memoria.
OPCODE OP OP
DIR
Cuadro 4: Formato de Instrucción.
A continuación se muestra la codificación de las operaciones y el tipo de direc-
cionamiento que utiliza cada uno:
Operación OPCODE Modo de Direccionamiento
LD 0000 Directo
ST 0001 Directo
MOV 0010 Registro Directo
ADD 0011 Registro Directo
SUB 0100 Registro Directo
INC 0101 Registro Directo
SHL 0110 Registro Directo
JMP 0111 Directo
BL 1000 Relativo
BEQ 1001 Relativo
CALL 1010 Inmediato
RET 1011 Inmediato
PUSH 1100 Directo
POP 1101 Directo
RETI 1110 -
LDR 1111 Registro
Cuadro 5: Instrucciones del Procesador.
PR-MM 8
9. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
El diagrama en bloques de la UC con el detector de interrupción es:
CAR ROM7 7S1
S4
D
C2C1 HAB.
Multiplexor
MuxSel
MuxSel
NextDir
111
opcode
0000000
RESET
25
RUTA DE DATOSQ
Q
GRB
CLR
D
CLRI
IE
HI CZ
3
PSR
BOTON
Figura 2: UC con detector de interrupción.
0.6. Codigo C del Algoritmo
{}
//Pseudocodigo
N=0;
suma = 0;
while(N < 3){
num = M[Pd];
valor = division(num); //funcion de division => valor=(128/R)
printf("valor");
suma = suma + valor;
Pd++;
N++;
}
resultado = division(suma); // resultado = (128/suma)
M[Pr] = resultado;
printf("resultado");
PR-MM 9
10. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
0.7. Assembler del Algoritmo
LD,100 ;ACC <= 20
MOV R0 ;R0 <= 20
PUSH R0 ;guardo en la pila
LD,101 ;ACC <= 4
MOV R0 ;R0 <= 4
PUSH R0 ;guardo en la pila
LD,102 ;ACC <= 12
MOV R0 ;R0 <= 12
PUSH R0 ;guardo en la pila
LDR R1,0 ;Inicializo contador
LDR R2,3 ;Final del contador (N=3)
LDR R3,0 ;Inicializo resultado
star: SUB R1,R2 ;Activa bandera
BL,while ;Si R1<R2, hace el while
PUSH R1
LDR R1,0
ADD R3,R1
POP R1
ST,105 ;Resultado parcial
PUSH R3
POP R0 ;Transferencia de registro
CALL Func ;128/Re
PUSH R1
LDR R1,0
ADD R3,R1
POP R1
ST,105 ;Resultado final
fin: JMP fin ;Termina
while: POP R0 ;recuperamos resistencia salvada en la pila
CALL Func ;funcion de division, retorna el resultado
PUSH R1
LDR R1,0
ADD R0,R1
POP R1
ST,105 ;muestra resultado en pantalla
ADD R0,R3 ;ACC <= R0+R3
MOV R3 ;R3 <= ACC, cargo resultado en R3
INC R1 ;R1 <= R1 + 1
JMP star
PR-MM 10
11. CYT819 Universidad Católica “Nuestra Señora de Asunción”
Sistemas Digitales II Sede Regional Asunción
Ing. Electrónica Facultad de Ciencias y Tecnología
Semestre VII Departamento de Electrónica e Informática
;Division
Func: PUSH R1 ;salvamos en la pila
PUSH R2 ;salvamos en la pila
PUSH R3 ;salvamos en la pila
LDR R3,1 ;Inicializo contador R3 = "00000001"
LDR R2,1 ;Inicializo los registros R2 = "00000001"
LDR R1,0 ; R1 = "00000000" => Dividendo
DIV: SUB R2,R0 ;ACC <= R2-R0, para activar los flags
BL NEXT ;salta si R2<R0
MOV R2 ;R2 <= ACC (R2-R0)
INC R1 ;Se cumple condicion, se agrega 1 al bit menos significativo
NEXT: SHL R2
SHL R1
INC R3 ;incrementa contador
PUSH R2 ;salvo en la pila el resto
LDR R2,8 ;condicion de fin R2 <=8
SUB R3,R2 ;ACC <= R3-R2, para activar los flags
POP R2 ;Recupara valor de resto en R2
BEQ FIN
JMP DIV ;continua Division
FIN: PUSH R1
POP R0
POP R3 ;recuperamos el valor salvado
POP R2 ;recuperamos valor salvado
POP R1 ;recuperamos valor salvado
RET ;retorna el resultado en R0
PR-MM 11
12. AR IR
STATE
NEXT STATE
MUXUC
IR(7)
IR(6)
IR(5)
IR(4)
CARRY
ZERO
HI
PC_CNT
PC_LD
PC_RD
AR_LD
R_RD
R_WR
M_RD
M_WR
ACC_LD
ACC_RD
PSR_LD
PSR_RD
PSR_LD1
SP_INC
SP_DEC
IR_LD
TEMP_LD
TEMP_RD
A_LD
MUXMEM
MUXIR
IE
CLRI
T0 T1 0 X X X X X X X 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T1 T2 0 X X X X X X X 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0
LD T2 T3 1 0 0 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ST T6 1 0 0 0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MOV T9 1 0 0 1 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ADD T10 1 0 0 1 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SUB T13 1 0 1 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
INC T16 1 0 1 0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SHL T18 1 0 1 1 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
JMP T20 1 0 1 1 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BL T22 1 1 0 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BEQ T26 1 1 0 0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CALL T30 1 1 0 1 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RET T33 1 1 0 1 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PUSH T37 1 1 1 0 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
POP T38 1 1 1 0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RETI T40 1 1 1 1 0 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LDR T44 1 1 1 1 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LD0 T3 T4 0 X X X X X X X 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LD1 T4 T5 0 X X X X X X X 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
LD2 T5 T46 0 X X X X X X X 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
ST0 T6 T7 0 X X X X X X X 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ST1 T7 T8 0 X X X X X X X 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
ST2 T8 T46 0 X X X X X X X 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
MOV0 T9 T46 0 X X X X X X X 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ADD0 T10 T11 0 X X X X X X X 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
ADD1 T11 T12 0 X X X X X X X 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0
ADD2 T12 T46 0 X X X X X X X 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
SUB0 T13 T14 0 X X X X X X X 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
SUB1 T14 T15 0 X X X X X X X 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0
SUB2 T15 T46 0 X X X X X X X 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
INC0 T16 T17 0 X X X X X X X 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0
INC1 T17 T46 0 X X X X X X X 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
SHL0 T18 T19 0 X X X X X X X 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0
SHL1 T19 T46 0 X X X X X X X 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
JMP0 T20 T21 0 X X X X X X X 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
JMP1 T21 T46 0 X X X X X X X 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
BL T22 T23 0 X X X X 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T24 0 X X X X 1 X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T23 T46 0 X X X X X X X 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T24 T25 0 X X X X X X X 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T25 T46 0 X X X X X X X 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
BEQ T26 T27 0 X X X X X 0 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T28 0 X X X X X 1 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T27 T46 0 X X X X X X X 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T28 T29 0 X X X X X X X 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T29 T46 0 X X X X X X X 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
CALL0 T30 T31 0 X X X X X X X 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
CALL1 T31 T32 0 X X X X X X X 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0
CALL2 T32 T46 0 X X X X X X X 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
RET0 T33 T34 0 X X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
RET1 T34 T35 0 X X X X X X X 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
RET2 T35 T36 0 X X X X X X X 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RET3 T36 T46 0 X X X X X X X 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PUSH T37 T46 0 X X X X X X X 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
POP0 T38 T39 0 X X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
POP1 T39 T46 0 X X X X X X X 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RETI T40 T41 0 X X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
T41 T42 0 X X X X X X X 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
T42 T43 0 X X X X X X X 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
T43 T46 0 X X X X X X X 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LDR T44 T45 0 X X X X X X X 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
T45 T46 0 X X X X X X X 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
T46 T0 0 X X X X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
T47 0 X X X X X X 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
INTERRUP T47 T48 0 X X X X X X X 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1
T48 T49 0 X X X X X X X 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0
T49 T50 0 X X X X X X X 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
T50 T0 0 X X X X X X X 0 1
OPCode TEMP
FS
SPPSRAcumuladorMemoriaPC
13. HI
HW
LDR
RETI
POP
PUSH
RET
CALL
BEQ
BL
JMP
SHL
INC
SUB
ADD
MOV
ST
LD
IR <= M[AR]
PC <= PC+1
AR <= PC
PC <= PC+1
AR <= PC
HW
ACC <= M[AR]
AR <= M[AR]
PC <= PC + 1
AR <= PC
HW
M[AR] <= ACC
AR <= M[AR]
R[DIR1] <= ACC
A <= R[ DIR1]
HW
ACC <= TEMP
TEMP <= R[DIR2]+A
A <= R[ DIR1]
ACC <= TEMP
TEMP <= A-R[DIR2]
TEMP <= R[DIR1]+1
R[DIR1] <= TEMP
TEMP <= SHL R[DIR1]
HW
R[DIR1] <= TEMP
AR <= PC
HW
PC <= M[AR]
si AR <= PCC
no
PC <= PC + 1
HW
PC <= M[AR]
siAR <= PC Z
no
PC <= PC+1
HW
PC <= M[AR]
PC <= M[AR]
M[SP] <= PSR
SP <= SP -1
M[SP] <= PC
SP <= SP - 1
AR <= PC
PC <= PC + 1PC <= M[SP]
PSR <= M[SP]
SP <= SP + 1
SP <= SP + 1
M[SP] <= R[ DIR1]
R[DIR1] <= M[SP] SP <= SP + 1
PC <= M[SP]
PSR <= M[SP]
SP <= SP + 1
ACC <= M[SP]
SP <= SP + 1
SP <= SP + 1
R[DIR1] <= M[AR] AR <= PC
PC <= PC + 1
noINI si PC <= INTER
M[SP] <= ACC
SP <= SP-1
M[SP] <= PSR
SP <= SP - 1
M[SP] <= PC
SP <= SP - 1
CLR <= 1
INI
Buy SmartDraw!- purchased copies print this
document without a watermark.
Visit www.smartdraw.com or call 1-800-768-3729.