Diseño de un Procesador 8 bits

13
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

Transcript of Diseño de un Procesador 8 bits

Page 1: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre VII Departamento de Electrónica e Informática

Sistemas Digitales II(2012)Informe del Trabajo Final

Fecha: 30 de julio de 2012Manuel Martínez AnorozoPedro 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 16instrucciones distintas (independiente de los modos de direccionamientos y de losoperandos). Debe tener al menos dos instrucciones de cada grupo.

2. Cada instrucción debe tener dos modos de direccionamiento para el operandofuente.

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 tablaadjunta. (pueden adecuar lo que sea necesario a partir del modelo inicial)

5. El ASM puede debe adaptarse usando como ejemplo los modelos estudiados enclase.

6. El sistema final debe estar funcionando en VHDL con un ejemplo de “ProgramaBásico” especificado en la tabla adjunta.

7. Debe realizarse primero un VHDL funcional.

8. Posteriormente un VHDL estructural. Los diferentes componentes, incluyendo laALU 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

Page 2: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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ónb) 4(R0,R1,R2,R3)+A 2(A<=R1+R2)

Cuadro 1: Especificaciones de Diseño.

PR-MM 2

Page 3: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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 transferenciade memoria a un registro de procesador.

Store(almacenar) - ST La instrucción store(almacena) indica la transferencia de unregistro 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 dememoria.

Instrucciones de pila

Empujar(push)- PUSH y Desaparecer(pop) - POP Estas instrucciones de pilatransfieren 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óndesaparecer 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 dememoria es, en esencia, parte de un espacio de dirección de memoria accedida por unadirecció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, StackPointer), pues su valor siempre apunta al elemento de la parte superior de aquélla. Lasoperaciones de empujar y desaparecer se implementan disminuyendo o incrementando elapuntador 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ónde incremento, al ejecutarse sobre una palabra, es que un número binario que consisteen unos produce un resultado de ceros cuando se incrementa.

Add(suma) - ADD La intrucción add(suma) realiza la operación de suma sobre dosregistros 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

Page 4: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre VII Departamento de Electrónica e Informática

Instrucciones de Desplazamiento

Desplazamiento lógico a la izquierda - SHL La instrucción de desplazamiento ala izquierda hace correr los bits para esa dirección, insertando un bit de cero(0) en elmenos 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 alPC. Puesto que el PC contiene la dirección de la siguiente insteucción a ejecutar, ésta seobtendrá 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 decall, se guarga en la pila la dirección del PC de la siguiente instrucción, los valores delPSR, en la dirección saltada se realiza las intrucciones y luego se vuelva al anterior pormedio 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 ifequal) La instrucción de BEQ realiza una resta entr los operandos y si el resultado esdero es porque son iguales, con un flags del PSR se detecta ello y se salta a la direccionespecificada, con BL el salto se da por medio de un diferencia entre los operandos, siexiste un prestado en la salida(CARRY), es porque el segundo es menor al primero, estose 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ónde hardware, si existe se guardan todos los registros, el PSR, el PC, en la pila paraantender la interrupción, luego se salta a la dirección de servicio de interrupción, una vezatendida toda, se retorna con los valores guardados en la pila.

PR-MM 4

Page 5: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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

ACCACC_LDACC_RD

ALU

REG_A

B

PSR

PSR_RD

PSR_LD

PSR_LD1

Memoria deInstrucciones

A_LD

TEMP TEMP_RDTEMP_LD

MUX M

PC

PC_RD

PC_LD

PC_CNT

SP

SP_DEC

SP_INC

RESET

AR

AR_LD

MEMORIA

0 1

DIRM_WR

M_RD

RESET

MUX_MEM

IR

MUX IR

R_SEL

MUX_IR

IR_LD

0 1

7 4| 3 2|1 0

UNIDAD DECONTROL

CNTRL [HI|Z|C]

RUTA DE DATOS

NEXT_DIR

MUX_SEL

BUS PRINCIPAL

A

ZC

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 valortoma el bus o lee de él.

PR-MM 5

Page 6: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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 deautoincremento, es decir no necesita de la ALU para incrementarse, y puede cargarsea través del bus principal, esto es para implementar las operaciones de bifurcación deprograma.

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 esinicializado a 255, el último elemento de la memoria principal, tiene la capacidad deincrementarse o decrementarse.

0.4.5. Mux

Es un multiplexor de 2 a 1 de 8 bits, es utilizado para seleccionar que registro, SP oAR, indicará la dirección de memoria; y también se utiliza para seleccionar entre registrodonde 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 aejecutar.

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 sequerría utilizar, el selector funciona con la siguiente lógica:

Selector Registro00 R001 R110 R311 R4

Cuadro 2: Selector de Registros.

PR-MM 6

Page 7: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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 elselector de operación que funciona según:

Selector Operación00 Suma01 Resta10 Incremento11 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 estadostambién son salidas de esta ALU, es decir si la operación fue cero, negativo, si hubooverflow , o si existe un acarreo de salida.

0.4.10. PSR

Registro que contiene las banderas de estado de la ALU, éste puede ser cargadotanto de la ALU, como del bus principal, esto se realizó de esta manera ya que algunasoperaciones 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 esteacumulador, además es donde se deja el valor de cualquier operación y luego con unainstrucción ase lleva ya sea en memoria o en los registros.

PR-MM 7

Page 8: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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 operacionesde memoria.

OPCODE OP OPDIR

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 DireccionamientoLD 0000 DirectoST 0001 Directo

MOV 0010 Registro DirectoADD 0011 Registro DirectoSUB 0100 Registro DirectoINC 0101 Registro DirectoSHL 0110 Registro DirectoJMP 0111 DirectoBL 1000 RelativoBEQ 1001 RelativoCALL 1010 InmediatoRET 1011 InmediatoPUSH 1100 DirectoPOP 1101 DirectoRETI 1110 -LDR 1111 Registro

Cuadro 5: Instrucciones del Procesador.

PR-MM 8

Page 9: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre 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

RESET25

RUTA DE DATOSQ

QGRB

CLR

D

CLRIIE

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

Page 10: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre VII Departamento de Electrónica e Informática

0.7. Assembler del Algoritmo

LD,100 ;ACC <= 20MOV R0 ;R0 <= 20PUSH R0 ;guardo en la pilaLD,101 ;ACC <= 4MOV R0 ;R0 <= 4PUSH R0 ;guardo en la pilaLD,102 ;ACC <= 12MOV R0 ;R0 <= 12PUSH R0 ;guardo en la pilaLDR R1,0 ;Inicializo contadorLDR R2,3 ;Final del contador (N=3)LDR R3,0 ;Inicializo resultado

star: SUB R1,R2 ;Activa banderaBL,while ;Si R1<R2, hace el whilePUSH R1LDR R1,0ADD R3,R1POP R1ST,105 ;Resultado parcialPUSH R3POP R0 ;Transferencia de registroCALL Func ;128/RePUSH R1LDR R1,0ADD R3,R1POP R1ST,105 ;Resultado final

fin: JMP fin ;Termina

while: POP R0 ;recuperamos resistencia salvada en la pilaCALL Func ;funcion de division, retorna el resultadoPUSH R1LDR R1,0ADD R0,R1POP R1ST,105 ;muestra resultado en pantallaADD R0,R3 ;ACC <= R0+R3MOV R3 ;R3 <= ACC, cargo resultado en R3INC R1 ;R1 <= R1 + 1JMP star

PR-MM 10

Page 11: Diseño de un Procesador 8 bits

CYT819 Universidad Católica “Nuestra Señora de Asunción”Sistemas Digitales II Sede Regional AsunciónIng. Electrónica Facultad de Ciencias y TecnologíaSemestre VII Departamento de Electrónica e Informática

;DivisionFunc: PUSH R1 ;salvamos en la pilaPUSH R2 ;salvamos en la pilaPUSH R3 ;salvamos en la pilaLDR R3,1 ;Inicializo contador R3 = "00000001"LDR R2,1 ;Inicializo los registros R2 = "00000001"LDR R1,0 ; R1 = "00000000" => DividendoDIV: SUB R2,R0 ;ACC <= R2-R0, para activar los flagsBL NEXT ;salta si R2<R0MOV R2 ;R2 <= ACC (R2-R0)INC R1 ;Se cumple condicion, se agrega 1 al bit menos significativo

NEXT: SHL R2SHL R1INC R3 ;incrementa contadorPUSH R2 ;salvo en la pila el restoLDR R2,8 ;condicion de fin R2 <=8SUB R3,R2 ;ACC <= R3-R2, para activar los flagsPOP R2 ;Recupara valor de resto en R2BEQ FINJMP DIV ;continua Division

FIN: PUSH R1POP R0POP R3 ;recuperamos el valor salvadoPOP R2 ;recuperamos valor salvadoPOP R1 ;recuperamos valor salvadoRET ;retorna el resultado en R0

PR-MM 11

Page 12: Diseño de un Procesador 8 bits

AR IRSTAT

E

NEX

T STAT

E

MUXU

C

IR(7)

IR(6)

IR(5)

IR(4) CARR

Y

ZERO HI

PC_C

NT

PC_LD

PC_R

D

AR_LD

R_RD

R_WR

M_R

D

M_W

R

ACC_

LD

ACC_

RD

PSR_

LD

PSR_

RD

PSR_

LD1

SP_INC

SP_D

EC

IR_LD

TEMP_

LD

TEMP_

RD

A_LD

MUXM

EM

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 0T1 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 0ST 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 0MOV 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 0ADD 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 0SUB 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 0INC 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 0SHL 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 0JMP 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 0BL 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 0BEQ 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 0CALL 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 0RET 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 0PUSH 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 0POP 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 0RETI 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 0LDR 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 0LD0 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 0LD1 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 0LD2 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 0ST0 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 0ST1 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 0ST2 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 0MOV0 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 0ADD0 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 0ADD1 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 0ADD2 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 0SUB0 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 0SUB1 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 0SUB2 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 0INC0 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 0INC1 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 0SHL0 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 0SHL1 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 0JMP0 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 0JMP1 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 0BL 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 0T23 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 0T24 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 0T25 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 0T28 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 0T28 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 0T29 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 0CALL1 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 0CALL2 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 0RET0 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 0RET1 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 0RET2 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 0RET3 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 0PUSH 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 0POP0 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 0POP1 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 0RETI 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 0T42 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 0T43 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 0T45 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 0T46 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 0INTERRUP 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 0T49 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 0T50 T0 0 X X X X X X X 0 1

OPCode TEMP

FS

SPPSRAcumuladorMemoriaPC

Page 13: Diseño de un Procesador 8 bits

HI

HW

LDR

RETI

POP

PUSH

RET

CALL

BEQ

BL

JMP

SHL

INC

SUB

ADD

MOV

ST

LD

IR <= M[AR]

PC <= PC+1AR <= PC

PC <= PC+1AR <= 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] <= PCSP <= 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 <= PCPC <= PC + 1

noINI si PC <= INTERM[SP] <= ACC

SP <= SP-1M[SP] <= PSRSP <= SP - 1

M[SP] <= PCSP <= 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.