0% encontró este documento útil (0 votos)
18 vistas58 páginas

DiseñoSIT 1a7

El documento detalla el estudio de la implementación de un microprocesador con un conjunto de instrucciones típico, incluyendo la descripción del hardware y la arquitectura interna. Se describen los registros internos, sus funciones y el formato de las instrucciones, así como los modos de direccionamiento y las secuencias de control. También se presentan ejemplos de instrucciones y su codificación en hexadecimal.

Cargado por

notlasdivinas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas58 páginas

DiseñoSIT 1a7

El documento detalla el estudio de la implementación de un microprocesador con un conjunto de instrucciones típico, incluyendo la descripción del hardware y la arquitectura interna. Se describen los registros internos, sus funciones y el formato de las instrucciones, así como los modos de direccionamiento y las secuencias de control. También se presentan ejemplos de instrucciones y su codificación en hexadecimal.

Cargado por

notlasdivinas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Estudio de la implementación de

un microprocesador con un Set


de Instrucciones Típico
Realización de la Secuencia De
Control Para Las Instrucciones Típicas
Descripción del Hardware de SIT
• Lectura de la Instrucción.
• Identificación del tipo de instrucción.
• Resolución del modo de direccionamiento para las
instrucciones de memoria.
• Ciclo de ejecución para las instrucciones de memoria.
• Ciclo de ejecución para las instrucciones de control de
programa.
• Ciclo de ejecución para las instrucciones de registro.
• Ciclo de ejecución para las instrucciones especiales.
• Diseño del sistema de interrupción.
Arquitectura de SIT
Estructura Externa
IRQ
DBUS[16]
ready SIT
FIE-1 ADRBUS[10]
CLK
WR
RST RD
Registros Internos
Registro Tipo Tamaño

AC: Acumulador público 16


IX: Índice público 10
PC: Contador de programa público 10 Banderas:
SP: Puntero de pila público 10 cff, nff, zff, vff, iff
ir: Registro de la instrucción Supervisor 16
md: Registro de la data Supervisor 16
ma: Registro de la dirección Supervisor 10
Registros Internos
Acumulador (AC):
Registro de 16 bits usado para las instrucciones lógicas y aritméticas del
microprocesador.
Ejemplo de una instrucción aritmética:
ADC #3F0H ; AC <= AC + 3F0H
Ejemplo de una instrucción lógica:
AND #01FH ; AC <= AC and 01FH

Puntero de Pila (SP):


Registro de 10 bits usado para el direccionamiento de la pila. Existe una sección de la
memoria que se reserva para la pila, esta sección de memoria es direccionada
usando el valor almacenado en el SP. El SP contiene la dirección del último valor
depositado en la pila. El cual usualmente es identificado como el TOS. El puntero de
pila es utilizado por las instrucciones de PUSH y de POP.
Registros Internos
Contador de Programa (PC):
Registro de 10 bits que posee en todo momento la dirección de la próxima
instrucción que será ejecutada por el microprocesador. Cada vez que el
microprocesador lee una instrucción, usa el valor almacenado en este registro
como dirección de lectura. Una vez que la instrucción es leída, el PC se incrementa
(PC <= PC+1), de ahí su identificación como Contador.

Índice (IX):
Registro de 10 bits usado para el direccionamiento de un operando ubicado en la
memoria. El registro Índice puede tener a la mano la dirección del operando para
que pueda ser fácilmente accedido por el microprocesador. El registro índice
también puede tener un desplazamiento que se suma a una dirección base dando
como resultado la dirección física de operando.
Ejemplo de una instrucción que usa el Índice para señalar la dirección:
MOV DIRECC,X ; La dirección física = DIRECC + IX.
Registros Internos
Registro de la instrucción (IR):
Cuando el microprocesador lee la instrucción la deposita en el registro de la
instrucción, Las salidas del registro de instrucción tienen mayor injerencia en la
unidad de control ya que dependiendo de la instrucción la secuencia de control
sigue un flujo de transferencias específico. Este registro es transparente ya que no
aparece en el juego de instrucciones del microprocesador.

Registro de datos (MD):


Registro de 16 bits usado como auxiliar en las operaciones lógicas y aritméticas como
interfaz de datos entre el microprocesador y la memoria. Este registro es de uso
interno por lo que no aparece en el set de instrucciones del microprocesador.

Registro de dirección (MA):


Registro de 10 bits donde se almacena la dirección del ciclo de lectura o de escritura,
las salidas de este registro tienen conexión directa al bus de direcciones del
microprocesador.
Banderas
cff : Bandera de acarreo, cff = 1 si el resultado de una suma o resta genera un
bit adicional. cff se puede usar para comparar con AC así cff = 1 si AC es
superior o igual.
nff : Bandera de resultado negativo, nff = 1 si como resultado de una operación
lógica o aritmética el bit AC[0] = 1. Si la operación es de comparación entonces
nff = 1 si AC es el menor. Esta bandera es importante si la aplicación requiere
números con signo.
zff : Bandera de resultado cero, zff = 1 si como resultado de una operación
lógica o aritmética AC = 0. Si la operación es de comparación entonces zff = 1 si
ambos valores son iguales.
vff : Bandera de desbordamiento , vff = 1 si el resultado de una operación de
suma de dos números de igual signo posee signo diferente, esta condición se
señala como un desbordamiento de la capacidad de representación de
números con signo.
iff : Bandera de control de la interrupción, cuando el programador establece iff
se activa el reconocimiento de interrupciones a través de la entrada IRQ. Si por
el contrario se borra esta bandera entonces el micro no reconoce solicitudes de
interrupción en IRQ.
Arquitectura Interna de SIT

Registros utilitarios

Bus cin puede ser


1, 0, cff.
SIT

FORMATO DE INSTRUCCIONES
Patrón Para Instrucciones de SIT

Instrucciones de memoria.

0 2 3 4 5 6 15

OP 1 AM ADDR

Abreviatura Código OP Descripción (OV = M(ADDR))


ADC (010) AC <= AC + OV + cff ; suma con acarreo.
SBC (001) AC <= AC – OV – cff ; resta con acarreo.
ORA (110) AC <= AC or OV ; OR inclusivo bit-wise.
AND (101) AC <= AC and OV ; AND bit-wise.
XOR (111) AC <= AC xor OV ; XOR bit-wise.
LDA (100) AC <= OV ; Lectura de memoria.
STA (011) M(ADDR) <= AC ; Escritura en la memoria.
CMP (000) cff, vff, nff, zff <= AC – OV ; Compara AC con OV.
Patrón Para Instrucciones de SIT
Instrucciones de una sola dirección.

Campo AM (modo de direccionamiento).

Modo AM Descripción
Directo (00) ADDR es la dirección de OV.
Directo Indexado (01) ADDR + IX es la dirección de OV.
Indirecto Indexado (10) La dirección de OV es M(ADDR) + IX
Inmediato (11) ADDR es OV.

Simbolización de los modos de direccionamiento


LDA #ADDR ; Inmediato.
LDA ADDR ; Directo.
LDA ADDR,X ; Directo Indexado.
LDA (ADDR),X ; Indirecto Indexado.
Patrón Para Instrucciones de SIT
Instrucciones de ramificación (salto relativo).
0 2 3 4 7 8 15

111 0 condición desplazamiento


Instrucción Condición Descripción
I4 I5 I6 I7

BVS 0 0 0 0 branch si vff = 1


BVC 0 0 0 1 branch si vff = 0
BEQ 0 0 1 0 branch si zff = 1
BNE 0 0 1 1 branch si zff = 0
BCS 0 1 0 0 branch si cff = 1
BCC 0 1 0 1 branch si cff = 0
BMI 0 1 1 0 branch si nff = 1
BPL 0 1 1 1 branch si nff = 0
BRA 1 0 0 0 branch siempre
BRS 1 0 0 1 branch a subrutina
Ejemplo:
BRA DESPL => PC <= PC + DESPL
Patrón Para Instrucciones de SIT
Instrucciones de dos direcciones.
0 2 3 4 6 7 10 11 12 15

001 0 OP Rd R’/I Rf

^R/I Rf
0 => 0000 => AC
0001 => IX
0010 => SP
0100 => PC
1 Rf = Valor inmediato

Abrv. OP Descripción
ADC (010) Rd <= Rd+ Rf+ cff ; suma con acarreo.
SBC (001) Rd <= Rd – Rf – cff ; resta con préstamo.
ORA (110) Rd <= Rd or Rf ; OR inclusivo bit-wise.
AND (101) Rd <= Rd and Rf ; AND bit-wise.
XOR (111) Rd <= Rd xor Rf ; XOR bit-wise.
MOV (011) Rd <= Rf ; Transfiere de Rf a Rd.
CMP (000) cff, vff, nff, zff <= Rd – Rf ; Compara Rd con Rf..
Patrón Para Instrucciones de SIT

Instrucciones de control (CLI, SEI, CLC, SEC, WAIT, NOP)

0 2 3 4 6 7 15

0 1 0 0 OP 000000000

Instrucciones de control.
Mnemónico. OP Descripción
CLI 000 Borra iff.
SEI 001 Establece iff.
CLC 010 Borra cff.
SEC 011 Establece cff.
WAIT 100 Activa modo de espera.
ROTRASL 110 Traslación y Rotación de AC.
NOP 101 No operación.
Patrón Para Instrucciones de SIT

Instrucciones de Rotación y Traslación (LSR, ASR, SHL, ROR, ROL, RRC, RLC)

0 2 3 4 6 7 8 9 10 11 12 15

0 1 0 0 1 1 0 ^S/R ^A/L: C ^L/R 00 Distancia en bits

0 = traslación
1 = rotación
0 = izquierda
0 = con acarreo 1 = derecha
1 = sin acarreo
Abrev.
ASR 4 ;Traslación aritmética 4 bits a la derecha
0 = Aritmética
1 = Lógica
Patrón Para Instrucciones de SIT
Instrucciones de pila (PUSH, POP, RET y RTI).
0 2 3 4 6 7 11 12 15

100 0 OP 00000 REG

0000 => AC
0001 => IX
0010 => SP
0100 => PC
1000 => Flags

Abrev. OP Descripción
PSH 000 Deposita REG en la pila.
POP 001 Retira REG de la pila.
RTS 001 Retorna de la subrutina. (POP PC)
RTI 011 Retorna de la Interrupción.
Instrucciones de SIT
Tarea codificar las siguientes instrucciones en Presente una secuencia de instrucciones de SIT para
hex: realizar las siguientes acciones:

ADC #DIRECT ; Inmediato. 1. Borrar el acumulador ( AC = 0)


ADC DIRECT; Directo. 2. Establecer todos los bits del acumulador en 1.
ADC DIRECT, X ; Directo indexado. 3. Establecer el AC con el valor 7F67
ADC (DIRECT),X ; Indirecto indexado.
ADC AC, IX ; AC <= AC + IX + cff.
ADC IX, AC ; IX <= IX + AC + cff.
ADC SP, IX
BRA -25
BCS -12
BVS +13
PSH SP
POP AC
ROR 3
ROL 4
SHL 4
ASR 2
Inicio de la secuencia de control

SECUENCIA DE CONTROL
RESUMEN DE REGISTROS
MODULE: SIT.
MEMORY: AC[16]; IX[10]; SP[10]; PC[10];
IR[16]; MA[10]; MD[16]; SHC[4];CFF;
ZFF; VFF; NFF;IFF.
INPUTS: READY; IRQ; RST; CLK.
OUTPUTS: ADRBUS[10]; NOINST; WR; RD.
BUSES: ABUS[16]; BBUS[16]; OBUS[16]; CIN.
EXBUSES: DBUS[16].
CLOGICOS: ADD[17]; INC[16]; DEC[16]; DEC2[4];
DCD[16].
Preguntas Claves:
1. Presente un diagrama del circuito lógico que describe ADD[17] use el sumador completo como bloque de construcción básico.
2. Presente un diagrama del circuito INC[16].
Inicialización del PC
Registros susceptibles de Inicialización:
PC : Obligatorio.
SP : Opcional.

Opciones para PC

VECTOR. VALOR INICIAL.


Se reserva una posición de La señal de RESET asigna
memoria donde se un valor desde donde el
depositará el valor inicial microprocesador ejecuta la
del PC. primera instrucción
Flujo con Inicialización del PC tipo vector
1

MA <= 10$DIREC_VEC MA: controla el bus de direcciones

ADRBUS = MA ; RD = \1\ ; PC <= DBUS.

Inicio

ADRBUS = PC ; RD = \1\ ; IR <= DBUS; PC <= INC(PC)

EJECUTA INSTRUCCIÓN
Inicio PC y Lectura de la Instrucción

Como el micro almacena 1k, 1023 es el último bit


1 MA <= 10$1023; IFF <= \0\.
2 ADRBUS = MA; RD = \1\ ; MD <= DBUS;
=>(^READY)/(2).
3 ABUS = MD; OBUS = ABUS ; PC <= OBUS[6:15]. ¿Cómo cambiaría los
primeros tres pasos
"INICIA EL CICLO DE LECTURA DE INST."
en caso de usar la
4 BBUS = 6$0,PC; OBUS = BBUS ; MA <= OBUS[6:15]; otra opción para
=>(IRQ&IFF)/(56). "MA <= PC" iniciar el PC.?
5 ADRBUS = MA; RD = \1\ ; MD <= DBUS; "Lee INSTRUCCIÓN"
=>(^READY)/(5). Modifique el paso 5
6 NODELAY a fin de incluirle
BBUS = 6$0,PC; OBUS = INC(BBUS); PC <= OBUS[6:15]. el paso 6
7 ABUS = MD; OBUS = ABUS; IR <= OBUS. "IR <= MD"
"Inicia el ciclo de ejecución y resolución de AM"
8 =>(^IR[3])/(21). "IR3=0 para las instrucciones de registro"
Resolución de AM. Directo
0 2 3 4 5 6 15 Indexado
Indirecto
OP 1 AM ADDR Inmediato

AM Descripción
(00) ADDR es la dirección de OV.
(01) ADDR + IX es la dirección de OV.
(10) La dirección de OV es M(ADDR) + IX.
(11) ADDR es OV.
Secuencia de Control Para lectura de OV

9 NODELAY
ABUS = IR; OBUS = ABUS; MA <= OBUS[6:15]; "MA <= IR[6:15] inmdto"
=>(IR[4])/(12).
10 NODELAY
=>(^IR[5])/(16). "LectOV"
11 ABUS = 6$0,MA; BBUS = 6$0,IX; CIN = \0\;
OBUS = ADD[1:16](ABUS;BBUS;CIN); MA <= OBUS[6:15];
=>(16). "Directo e indexado: done"
12 NODELAY
=>(^IR[5])/(14).
13 ABUS = ^(6$0)&MA[0],MA; OBUS = ABUS; MD <= OBUS;
=>(20). "Inmediato: done"
14 ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(14).
15 ABUS = MD; OBUS = ABUS; MA <= ABUS[6:15];
=>(11).
Modificar esta sección a fin de reemplazar el modo indirecto indexado
por indexado indirecto es decir que primero se realice el indexado y
luego el indirecto
Secuencia de Control Para lectura de OV
NODELAY: Para leer las inst en un sol paso
9 NODELAY
ABUS = IR; OBUS = ABUS; MA <= OBUS[6:15]; "MA <= IR[6:15] inmdto"
=>(IR[4])/(12).
10 NODELAY
=>(^IR[5])/(16). "LectOV"
11 ABUS = 6$0,MA; BBUS = 6$0,IX; CIN = \0\;
OBUS = ADD[1:16](ABUS;BBUS;CIN); MA <= OBUS[6:15];
=>(16). "Directo e indexado: done"
12 NODELAY
=>(^IR[5])/(14).
13 ABUS = ^(6$0)&MA[0],MA; OBUS = ABUS; MD <= OBUS;
=>(20). "Inmediato: done"
14 ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(14).
15 ABUS = MD; OBUS = ABUS; MA <= ABUS[6:15];
=>(11).

Hasta este punto hemos calculado la dirección


efectiva
de cualquier modo de direccionamiento
del modo inmediato
Ciclo de Ejecución almacena en el regA,
STA es la única instrucción que no requiere lectura de STA sirve para cambiar una variable
operando pero si la escritura del AC en la memoria. no va a leer ningún operando

Abreviatura Código OP Descripción


ADC (010) AC <= AC + OV + cff
SBC (001) AC <= AC – OV – cff
ORA (110) AC <= AC or OV
AND (101) AC <= AC and OV
XOR (111) AC <= AC xor OV
LDA (100) AC <= OV
STA (011) M*DCD(f(ADDR)) <= AC
CMP (000) cff, vff, nff, zff <= AC – OV

16 NODELAY "Inicia Lectura de OV"


=>(^(^IR[0]&IR[1]&IR[2]))/(19).
17 BBUS = AC; OBUS = BBUS; MD <= OBUS.
18 ADRBUS = MA; WR = \1\; DBUS = MD;
=>(^READY,READY)/(18,4). "STA: done"
19 ADRBUS = MA; RD = \1\; MD <= DBUS;
17 AC se transf a MD =>(^READY)/(19).
"Lectura de operando: done"
READY: cuando está lista la memoria para
recibir un dato
Avance para las Instrucciones de Memoria

Hecho
• Modo de direccionamiento resuelto.
• Instrucción STA ejecutada.
• Dato de la instrucción en MD.
Pendiente
• Ejecución del resto de las instrucciones.
Ejecución de las Instrucciones de
Memoria
Abreviatura Código OP Descripción
ADC (010) AC <= AC + OV + cff
SBC (001) AC <= AC – OV – cff
ORA (110) AC <= AC or OV
AND (101) AC <= AC and OV
XOR (111) AC <= AC xor OV
LDA (100) AC <= OV
STA (011) M*DCD(f(ADDR)) <= AC
CMP (000) cff, vff, nff, zff <= AC – OV

Cuántas compuertas tiene el bus?


16 OR
cuántas entradas tiene?
3 entradas
Ciclo de Ejecución para Instrucciones de Memoria

Conexiones a los buses BBUS y ABUS. Abreviatura Código OP Descripción

BBUS = AC ADC
SBC
(100)
(001)
AC <= AC + OV + cff
AC <= AC – OV – cff
ORA (110) AC <= AC or OV
AND (101) AC <= AC and OV
XOR (111) AC <= AC xor OV
LDA (010) AC <= OV
STA (011) M*DCD(f(ADDR)) <= AC
CMP (000) cff, vff, nff, zff <= AC – OV

Análisis de ABUS:

resta: complemento a 2

ABUS = (MD! ^MD)*(IR[0]+IR[1], ^IR[0]&^IR[1])


Ciclo de Ejecución Abreviatura Código OP
ADC
Descripción
(010) AC <= AC + OV + cff
SBC (001) AC <= AC – OV – cff
ORA (110) AC <= AC or OV
AND (101) AC <= AC and OV
Conexiones del OBUS. XOR
LDA
(111)
(100)
AC <= AC xor OV
AC <= OV
STA (011) M*DCD(f(ADDR)) <= AC
CMP (000) cff, vff, nff, zff <= AC – OV

la instrucción CMP no afecta el AC

OBUS = ((ADD[1:16](ABUS;BBUS;CIN))!(ABUS @ BBUS)!(ABUS + BBUS)!(ABUS & BBUS)!BBUS)*


(^IR[0], IR[1]&IR[2], IR[0] &IR[1]& ^IR[2], IR[0]&^IR[1]&IR[2], IR[0]&^IR[1]&^IR[2])

Lleva el valor
de MD al AC
Ciclo de Ejecución Abreviatura Código OP
ADC
Descripción
(010) AC <= AC + OV + cff
SBC (001) AC <= AC – OV – cff
ORA (110) AC <= AC or OV

Conexiones del CIN. AND


XOR
(101)
(111)
AC <= AC and OV
AC <= AC xor OV
CIN: "Para dónde va" LDA (100) AC <= OV
STA (011) M*DCD(f(ADDR)) <= AC
CMP (000) cff, vff, nff, zff <= AC – OV

Compara

CMP $30 = AC - OV

AC + ^MD + 1 = AC - MD

CIN= (1 ! CFF!^CFF) * (^IR[1]&^IR[2], IR[1], IR[2])


Ciclo de Ejecución Abreviatura Código OP Descripción
ADC (010) AC <= AC + OV + cff
SBC (001) AC <= AC – OV – cff
ORA (110) AC <= AC or OV
AND (101) AC <= AC and OV
XOR (111) AC <= AC xor OV
LDA (100) AC <= OV
STA (011) M*DCD(f(ADDR)) <= AC
CMP (000) cff, vff, nff, zff <= AC – OV

20 BBUS = AC; CIN = (\1\!CFF!^CFF)*(^IR[1]&^IR[2],IR[1],IR[2]) ;


ABUS = (MD!^MD)*(IR[0]+IR[1],^IR[0]&^IR[1]);
OBUS = ((ADD[1:16](ABUS;BBUS;CIN))!(ABUS@BBUS)!(ABUS+BBUS)!
(ABUS&BBUS)!ABUS)*(^IR[0], IR[1]&IR[2],IR[0]&IR[1]&^IR[2],
IR[0]&^IR[1]&IR[2], IR[0]&^IR[1]&^IR[2]);
AC*(IR[0]+IR[1]+IR[2]) <= OBUS;
CFF*(^IR[0]) <= ADD[0](ABUS;BBUS;CIN); NFF <= OBUS[0];
ZFF <=^(+/OBUS);
VFF*(^IR[0])<= ^OBUS[0]&ABUS[0]&BBUS[0]+OBUS[0]&^ABUS[0]&^BBUS[0];
=>(4). "Instrucciones de memoria: done"
Procesan información disponible en los registros

INSTRUCCIONES DE REGISTRO
Instrucciones de dos direcciones

^R/I Rf (reg fuente)


0 => 0000 => AC
0001 => IX
0010 => SP
1 Rf = Valor inmediato

¡Cuál es el rango de valores inmediatos que puede tener el


campo Rf?

Si se asume que las instrucciones de registro se


especifican según la abreviatura OP Rd, Rf, presente la
codificación para las siguientes instrucciones:
ADC AC, IX
SBC IX, #-3
MOV AC, #0
Ejecución de Instrucciones de dos direcciónes

^R/I Rf
0 => 0000 => AC
0001 => IX
0010 => SP
1 => Rf = Valor inmediato
Instrucciones de dos direcciones.
(Proviene del paso 8)

21 NODELAY "Inicio de las instrucciones de registro"


=>(^(^IR[0]&^IR[1]&IR[2]))/(24). "Otras instrucciones de registro"
22 BBUS = (AC!^(6$0)&IX[0],IX!^(6$0)&SP[0],SP)*(^(+/IR[12:15]), IR[15], IR[14]);
ABUS = ^(12$0)&IR[12],IR[12:15];
OBUS = (ABUS!BBUS)*(IR[11],^IR[11]); MD <= OBUS.
¿Que objetivo logra el paso No 22 de la secuencia de control? Presente un diagrama lógico simplificado (Agrupación de
compuertas y registros en bloques) de la última línea del paso
22 si la consideramos en solitario
Ejecución de Instrucciones de dos direcciónes
Con el operando en MD la ejecución de las instrucciones con dos
registros guarda varias similitudes con la ejecución de las instrucciones
de memoria. Abreviatura Código OP Descripción
ADC (010) Rd <= Rd + Rf + cff
SBC (001) Rd <= Rd – Rf – cff
ORA (110) Rd <= Rd or Rf
^R/I Rf AND (101) Rd <= Rd and Rf
0 => 0000 => AC XOR (111) Rd <= Rd xor Rf
0001 => IX MOV (100) Rd <= Rf
0010 => SP XXX (011)
CMP (000) cff, vff, nff, zff <= Rd– Rf
1 Rf = Valor inmediato

Compare la descripción de BBUS del paso 23 con la del paso 20 y explique la razón de la diferencia

23 BBUS = (AC!^(6$0)&IX[0],IX!^(6$0)&SP[0],SP)*(^(+/IR[7:10]),IR[10],IR[9]);
CIN= (\1\!CFF!^CFF)*(^IR[5]&^IR[6],IR[5],IR[6]);
ABUS = (MD!^MD)*(IR[4]+IR[5],^IR[4]&^IR[5]);
OBUS = ((ADD[1:16](ABUS;BBUS;CIN))!(ABUS@BBUS)!(ABUS+BBUS)! (ABUS&BBUS)!ABUS)*
(^IR[4],IR[5]&IR[6],IR[4]&IR[5]&^IR[6], IR[4]&^IR[5]&IR[6],
IR[4]&^IR[5]&^IR[6]);
AC*((IR[4]+IR[5]+IR[6])&(^(+/IR[7:10]))) <= OBUS;
IX*((IR[4]+IR[5]+IR[6])&IR[10])<= OBUS[6:15];
SP*((IR[4]+IR[5]+IR[6])&IR[9])<= OBUS[6:15];
CFF*(^IR[4]) <= ADD[0](ABUS;BBUS;CIN); NFF <= OBUS[0];
ZFF <=^(+/OBUS);
VFF*(^IR[4])<= ^OBUS[0]&ABUS[0]&BBUS[0]+OBUS[0]&^ABUS[0]&^BBUS[0];
=>(4). "Instrucciones de registro de dos direcciones listas"

¿Cuantos ciclos toma la ejecución de las instrucciones ADC AC, IX; MOV IX, AC;
Descripción de RIC

INSTRUCCIONES DE RAMIFICACIÓN
Instrucciones de Ramificación
(salto relativo).
0 2 3 4 7 8 15

111 0 condición desplazamiento


Instrucción Condición Descripción
I4 I5 I6 I7
BVS 0 0 0 0 branch si vff = 1
BVC 0 0 0 1 branch si vff = 0
BEQ 0 0 1 0 branch si zff = 1
BNE 0 0 1 1 branch si zff = 0
BCS 0 1 0 0 branch si cff = 1
BCC 0 1 0 1 branch si cff = 0 ¿Qué significa que el salto sea relativo?

BMI 0 1 1 0 branch si nff = 1


BPL 0 1 1 1 branch si nff = 0
¿Cuántos ciclos toman en general las
BRA 1 0 0 0 branch siempre instrucciones de salto condicionado cuando
la condición se cumple?
BRS 1 0 0 1 branch a subrutina
¿Cuántos si la condición no se cumple?

Ejemplo:
BRA DESPL => PC <= PC + DESPL
DEL PASO 21
24 NODELAY
=>(^(&/IR[0:2]))/(31). "Salta a instrucciones especiales"
25 NODELAY
El desplazamiento es un valor con o sin signo explique
=>(^IR[4],IR[4]&IR[7],IR[4]&^IR[7])/(26,28,27).
26 NODELAY
=>(^(+/(DCD[0:7](IR[4:7])&(VFF,^VFF,ZFF,^ZFF,CFF,^CFF,NFF,^NFF))))/(4).
27 BBUS = 6$0,PC; ABUS = ^(8$0)&IR[8],IR[8:15]; CIN = \0\;
OBUS = ADD[1:16](ABUS;BBUS;CIN) ; PC <= OBUS[6:15];
=> (4).
28 BBUS = 6$0,SP; OBUS = DEC(BBUS) ; MA <= OBUS[6:15]; SP <= OBUS[6:15].
29 BBUS = 6$0,PC; OBUS = BBUS ; MD <= OBUS.
30 ADRBUS = MA ; DBUS = MD ; WR = \1\; De todos los saltos relativos ¿Cuáll es el que demora mas y por qué?
=>(^READY, READY)/(30,27). "instrucciones de ramificación”
¿Por qué en el paso 30 se salta al 27 y no directamente al 4?

Otras instrucciones especiales => 31


Descripción de SIT

INSTRUCCIONES DE CONTROL
FORMATO DE INSTRUCCIONES DE
CONTROL
SEI y CLI =>“ok”

SEC y CLC =>“ok”

WAIT y NOP =>“ok”


31 NODELAY
=>(^(^IR[0]&IR[1]&^IR[2]))/(41).
"A las instrucciones de pila"
32 NODELAY
=>(+/IR[4:5])/(34).
33 IFF <= IR[6];
=>(4).
34 NODELAY
=>(IR[4])/(36).
35 CFF <= IR[6];
=>(4).
36 NODELAY
=>(IR[5])/(39).
37 NODELAY
=>(IR[6])/(4).
38 =>(^IRQ,IRQ)/(38,4). "Ejecuta Wait"
39 INICIA TRASLACION Y ROTACION
FORMATO DE LA INSTRUCCIÓN DE TRASLACION Y ROTACIÓN

Instrucciones de Rotación y Traslación (LSR, ASR, SHL, ROR, ROL, RRC, RLC)
Instrucciones de Rotación y Traslación (LSR, ASR, RRC, ROR, SHL, ROL, RLC)

A[1:14] <= (A[0:13] ! A[2:15])*( IR[9], ^IR[9])


A[1] A[1] A[1] A[1]
A[0] 0 CFF A[15]

A[0]<=(A[1]!A[0]!CFF!A[15])*(^IR[9],^IR[7]&^IR[8]&IR[9],IR[7]&IR[8]&IR[9],
IR[7]&^IR[8]&1R[9])

A[1:14] <= (A[0:13] ! A[2:15])*( IR[9], ^IR[9])

39 SHC <= DEC2(IR[12:15]). “Corregir este paso para incorporar SHC al ABUS”
40 BBUS = AC ;
OBUS[0] = (BBUS[1]!BBUS[0]!CFF!BBUS[15]) *(^IR[9],^IR[7]&^IR[8]&IR[9],IR[7]&IR[8]&IR[9],
IR[7]&^IR[8]&IR[9]);
OBUS[15] = (BBUS[14]!CFF!BBUS[0])*( IR[9],^IR[9]&(^IR[7]+IR[8]),IR[7]&^IR[8]&^IR[9]);
OBUS[1:14] = (BBUS[0:13]!BBUS[2:15])*( IR[9],^IR[9]) ;
AC <= OBUS ; SHC <= DEC2(SHC);
CFF <= (BBUS[15]!CFF!BBUS[0])*(IR[9], ^IR[9]&^IR[7], ^IR[9]&IR[7]);
=>((+/SHC),^(+/SHC))/(40,4). "Completa las instrucciones de control"
SITFIE 1.01

INSTRUCCIONES DE PILA
Instrucciones de pila (PUSH, POP, RET y RTI).

0 2 3 4 6 7 11 12 15

100 0 OP 00000 REG

0000 => AC
0001 => IX
0010 => SP
0100 => PC
1000 => Flags

Abrev. OP Descripción
PSH 000 Deposita REG en la pila.
POP 001 Retira REG de la pila.
RTS 001 Retorna de la subrutina. (REG = PC)
RTI 011 Retorna de la Interrupción. (REG = PC)

Flags = 11$0,VFF,CFF,NFF,ZFF,IFF
Flags = 11$0,VFF,CFF,NFF,ZFF,IFF
41 NODELAY
=>(^(IR[0]&^IR[1]&^IR[2]),(IR[0]&^IR[1]&^IR[2]&IR[6]),
(IR[0]&^IR[1]&^IR[2]&^IR[6]))/(53,45,42).
"Inicia Instrucciones de pila"
42 BBUS[6:15] = (AC[6:15]!IX!SP!PC!5$0,VFF,CFF,NFF,ZFF,IFF)*(^(+/IR[12:15]),
IR[15], IR[14], IR[13], IR[12]);
BBUS[0:5] = (6$0!AC[0:5])*((+/IR[12:15]), ^(+/IR[12:15]));
OBUS = BBUS; MD <= OBUS.
43 BBUS = 6$0,SP; OBUS = DEC(BBUS) ;MA <= OBUS[6:15]; SP <= OBUS[6:15].
44 ADRBUS = MA ; DBUS = MD ; WR = \1\;
=>(^READY,READY)/(44,4). "PSH lista"
45 "Instrucciones que extraen de la pila"
BBUS = 6$0,SP; OBUS = BBUS; MA <= OBUS[6:15].
46 BBUS = 6$0,SP; OBUS = INC(BBUS); SP <= OBUS[6:15].
47 ADRBUS = MA ; MD <= DBUS ; RD = \1\;
=>(^READY)/(47). "Dato leido"
48 ABUS = MD; OBUS = ABUS;
AC*(^(+/IR[12:15])) <= OBUS;
IX*(IR[15]) <= OBUS[6:15];
SP*(IR[14]) <= OBUS[6:15];
PC*(IR[13]) <= OBUS[6:15];
(VFF,CFF,NFF,ZFF,IFF)*(IR[12]) <= OBUS[11:15];
=>(^IR[1])/(4).
49 BBUS = 6$0,SP; OBUS = BBUS; MA <= OBUS[6:15].
50 BBUS = 6$0,SP; OBUS = INC(BBUS); SP <= OBUS[6:15].
51 ADRBUS = MA ; MD <= DBUS ; RD = \1\;
=>(^READY)/(51). "Dato leido"
52 ABUS = MD; OBUS = ABUS; (VFF,CFF,NFF,ZFF,IFF)*(IR[12]) <= OBUS[11:15];
=>(4).
Instrucción de JMP absoluto

0 2 3 4 5 6 10

110 0 X X Dirección Absoluta

53 NODELAY
=>(^(IR[0]&IR[1]&^IR[2]))/(55).
54 ABUS = 6$0,IR[6:15]; OBUS = ABUS; PC<= OBUS[6:15];
=>(4).
55 NOINST = \1\; ADRBUS = MA;
=>(55).
Interrupción
• Detección de la entrada IRQ = \1\.
• Depositar Flags y PC en la Pila.
• Borrar la bandera de Interrupción.
• Recuperar el Vector de la Interrupción.
• Ejecutar el salto a la interrupción.
1 MA <= 10$1023; IFF <= \0\.
.
.
.
4 BBUS = PC; OBUS = BBUS ; MA <= OBUS ;
=>(IRQ&IFF)/(56).
Detección de la entrada IRQ = \1\.
Depositar PC y Flags en la Pila. Flags = 11$0,VFF,CFF,NFF,ZFF,IFF
Borrar la bandera de Interrupción.
Recuperar el Vector de la Interrupción.
Ejecutar el salto a la interrupción

1 MA <= 10$1023; IFF <= \0\.


.
.
4 BBUS = PC; OBUS = BBUS ; MA <= OBUS ;
=>(IRQ&IFF)/(56).
.
.
56 BBUS = 6$0,SP; OBUS = DEC(BBUS); MA <= OBUS[6:15];
SP <= OBUS[6:15]; IRQACK = /1/.
57 OBUS = 11$0,VFF,CFF,NFF,ZFF,IFF; MD <= OBUS.
58 ADRBUS = MA; DBUS = MD ; WR = \1\;
=>(^READY)/(58).
59 BBUS = 6$0,SP; OBUS = DEC(BBUS); MA <= OBUS[6:15];
SP <= OBUS[6:15].
60 BBUS = 6$0,PC; OBUS = BBUS; MD <= OBUS.
61 ADRBUS = MA; DBUS = MD ; WR = \1\;
=>(^READY)/(61).
62 MA <= 10$1022; IFF <= \0\.
63 ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(63).
64 BBUS = MD; OBUS = BBUS; PC <= OBUS ;
=>(4).
ENDSEQUENCE
CONTROLRESET(1).
END.
Ejercicios: (Con referencia a la secuencia de control de SIT)
1. Indique cuantos ciclos toma la ejecución de cada una de las siguientes instrucciones:
a. ADC 045
b. ASR 4
c. BRA -20
d. NOP
2. Presente las codificaciones de las instrucciones anteriores.
3. Explique como se ejecuta una instrucción de ramificación.
4. Se dice que la instrucción Salto a subrutina es de ida y vuelta, ¿Cómo se logra esto?
5. ¿Qué debe hacer el programador de SIT para que la primera instrucción se ejecute a partir de la dirección
512?
6. Presente los cambios que se requieren en la secuencia de control a partir del paso 53 para posibilitar que
SIT realice saltos indirectos es decir saltar a una dirección que está almacenada en la dirección indicada
por el campo [Link], asuma que el campo XX ahora vale 01 para señalar este modo de
direccionamiento.
7. Cuantos ciclos consume la ejecución del paso identificado con el número 20.
8. ¿Cuales son los circuitos lógicos que componen al ALU de SIT?
9. ¿Cuántos estados diferentes poseerá la máquina de estado para la sección de control de SIT?
10. Presente el resumen de conexiones relacionadas con el ABUS[16] de SIT según la secuencia de control.
11. Presente el resumen de transferencias relacionadas con el registro MA[10] de SIT.
Interrupción
• Detección de la entrada IRQ = \1\.
• Depositar Flags y PC en la Pila.
• Borrar la bandera de Interrupción.
• Recuperar el Vector de la Interrupción.
• Ejecutar el salto a la interrupción.
1 MA <= 10$1023; IFF <= \0\.
.
.
.
4 BBUS = PC; OBUS = BBUS ; MA <= OBUS ;
=>(IRQ&IFF)/(56).
Detección de la entrada IRQ = \1\.
Depositar PC y Flags en la Pila. Flags = 11$0,VFF,CFF,NFF,ZFF,IFF
Borrar la bandera de Interrupción.
Recuperar el Vector de la Interrupción.
Ejecutar el salto a la interrupción

1 MA <= 10$1023; IFF <= \0\.


.
.
4 BBUS = PC; OBUS = BBUS ; MA <= OBUS ;
=>(IRQ&IFF)/(56).
.
.
56 BBUS = 6$0,SP; OBUS = DEC(BBUS); MA <= OBUS[6:15];
SP <= OBUS[6:15]; IRQACK = /1/.
57 OBUS = 11$0,VFF,CFF,NFF,ZFF,IFF; MD <= OBUS.
58 ADRBUS = MA; DBUS = MD ; WR = \1\;
=>(^READY)/(58).
59 BBUS = 6$0,SP; OBUS = DEC(BBUS); MA <= OBUS[6:15];
SP <= OBUS[6:15].
60 BBUS = 6$0,PC; OBUS = BBUS; MD <= OBUS.
61 ADRBUS = MA; DBUS = MD ; WR = \1\;
=>(^READY)/(61).
62 MA <= 10$1022; IFF <= \0\.
63 ADRBUS = MA; RD = \1\; MD <= DBUS;
=>(^READY)/(63).
64 BBUS = MD; OBUS = BBUS; PC <= OBUS ;
=>(4).
ENDSEQUENCE
CONTROLRESET(1).
END.
Ejercicios: (Con referencia a la secuencia de control de SIT)
1. Indique cuantos ciclos toma la ejecución de cada una de las siguientes instrucciones:
a. ADC 045
b. ASR 4
c. BRA -20
d. NOP
2. Presente las codificaciones de las instrucciones anteriores.
3. Explique como se ejecuta una instrucción de ramificación.
4. Se dice que la instrucción Salto a subrutina es de ida y vuelta, ¿Cómo se logra esto?
5. ¿Qué debe hacer el programador de SIT para que la primera instrucción se ejecute a partir de la dirección
512?
6. Presente los cambios que se requieren en la secuencia de control a partir del paso 53 para posibilitar que
SIT realice saltos indirectos es decir saltar a una dirección que está almacenada en la dirección indicada
por el campo [Link], asuma que el campo XX ahora vale 01 para señalar este modo de
direccionamiento.
7. Cuantos ciclos consume la ejecución del paso identificado con el número 20.
8. ¿Cuales son los circuitos lógicos que componen al ALU de SIT?
9. ¿Cuántos estados diferentes poseerá la máquina de estado para la sección de control de SIT?
10. Presente el resumen de conexiones relacionadas con el ABUS[16] de SIT según la secuencia de control.
11. Presente el resumen de transferencias relacionadas con el registro MA[10] de SIT.

También podría gustarte