UNIVERSIDAD TECNOLOGICA DE PANAMA
FACULTAD DE INGENIERIA ELECTRICA
CAMPUS CENTRAL
MICROPROSESADORES
TAREA
PROFESOR:
MEDARDO LOGREIRA
ESTUDIANTE
RUBEN ROMERO 9-7601812
1EE-141
2024
Ejercicios: (Con referencia a la secuencia de control de SIT)
1. Ciclos de Ejución de Instrucciones
a. ADC 045 (Add with Carry)
- Paso 1: MA <= 10$1023; IFF <= \0\.
- Paso 4: BBUS = 6$0,PC; OBUS = BBUS; MA <= OBUS[6:15]; =>(IRQ&IFF)/(56). "MA <= PC"
- Paso 5: ADRBUS = MA; RD = \1\; MD <= DBUS; "Lee INSTRUCCIÓN" =>(^READY)/(5).
- Paso 6: BBUS = 6$0,PC; OBUS = INC(BBUS); PC <= OBUS[6:15].
- Paso 7: ABUS = MD; OBUS = ABUS; IR <= OBUS. "IR <= MD"
- Paso 8: =>(^IR[3])/(21). "IR3=0 para las instrucciones de registro"
- Paso 9: NODELAY
- Paso 10: =>(^IR[5])/(16). "LectOV"
- Paso 16: NODELAY "Inicia Lectura de OV" =>(^(^IR[0]&IR[1]&IR[2]))/(19).
- Paso 19: ADRBUS = MA; RD = \1\; MD <= DBUS; =>(^READY)/(19).
- Paso 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]);
- Paso 20 (Continuación): 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; =>(4).
Total, ciclos: 12 ciclos (1, 4, 5, 6, 7, 8, 9, 10, 16, 19, 20, 4)
b. ASR 4 (Arithmetic Shift Right)
- Paso 1: MA <= 10$1023; IFF <= \0\.
- Paso 4: BBUS = 6$0,PC; OBUS = BBUS; MA <= OBUS[6:15]; =>(IRQ&IFF)/(56).
"MA <= PC"
- Paso 5: ADRBUS = MA; RD = \1\; MD <= DBUS; "Lee INSTRUCCIÓN"
=>(^READY)/(5).
- Paso 6: BBUS = 6$0,PC; OBUS = INC(BBUS); PC <= OBUS[6:15].
- Paso 7: ABUS = MD; OBUS = ABUS; IR <= OBUS. "IR <= MD"
- Paso 8: =>(^IR[3])/(21). "IR3=0 para las instrucciones de registro"
- Paso 9: NODELAY
- Paso 10: =>(^IR[5])/(16). "LectOV"
- Paso 39: INICIA TRASLACION Y ROTACION
- Paso 39 (Continuación): A[1:14] <=(A[0:13] ! A[2:15])*( IR[9], ^IR[9]);
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])
Total, ciclos: 9 ciclos (1, 4, 5, 6, 7, 8, 9, 10, 39)
c. BRA -20 (Branch)
- Paso 1: MA <= 10$1023; IFF <= \0\.
- Paso 4: BBUS = 6$0,PC; OBUS = BBUS; MA <= OBUS[6:15]; =>(IRQ&IFF)/(56).
"MA <= PC"
- Paso 5: ADRBUS = MA; RD = \1\; MD <= DBUS; "Lee INSTRUCCIÓN"
=>(^READY)/(5).
- Paso 6: BBUS = 6$0,PC; OBUS = INC(BBUS); PC <= OBUS[6:15].
- Paso 7: ABUS = MD; OBUS = ABUS; IR <= OBUS. "IR <= MD"
- Paso 8: =>(^IR[3])/(21). "IR3=0 para las instrucciones de registro"
- Paso 25: =>(^IR[4],IR[4]&IR[7],IR[4]&^IR[7])/(26,28,27).
- Paso 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).
Total, ciclos: 8 ciclos (1, 4, 5, 6, 7, 8, 25, 27)
d. NOP (No Operation)
- Paso 1: MA <= 10$1023; IFF <= \0\.
- Paso 4: BBUS = 6$0,PC; OBUS = BBUS; MA <= OBUS[6:15]; =>(IRQ&IFF)/(56).
"MA <= PC"
- Paso 5: ADRBUS = MA; RD = \1\; MD <= DBUS; "Lee INSTRUCCIÓN"
=>(^READY)/(5).
- Paso 6: BBUS = 6$0,PC; OBUS = INC(BBUS); PC <= OBUS[6:15].
- Paso 7: ABUS = MD; OBUS = ABUS; IR <= OBUS. "IR <= MD"
- Paso 8: =>(^IR[3])/(21). "IR3=0 para las instrucciones de registro"
Total, ciclos: 8 ciclos (1, 4, 5, 6, 7, 8)
2. Codificaciones de Instrucciones
- ADC 045: 00001001 00000045 (Ejemplo, la codificación dependerá del formato
exacto del opcode y operandos)
- ASR 4: 00101100 00000100
- BRA -20: 00011101 11101100
- NOP: 00000000 00000000
3. Ejecución de una Instrucción de Ramificación
La ejecución de una instrucción de ramificación en el SIT implica los siguientes
pasos:
1. La instrucción se lee de la memoria y se coloca en el registro de instrucciones
(IR).
2. Se verifica el bit de operación correspondiente a las instrucciones de
ramificación.
3. Dependiendo del tipo de ramificación (ej. condicional, incondicional, etc.), se
evalúa la condición de salto.
4. Si la condición es verdadera, se calcula la nueva dirección de salto utilizando el
valor inmediato especificado en la instrucción.
5. El contador de programa (PC) se actualiza con la nueva dirección de salto.
4. Salto a Subrutina (Ida y Vuelta)
La instrucción de salto a subrutina en el SIT guarda la dirección de retorno en la pila
antes de saltar a la subrutina. Al final de la subrutina, se utiliza una instrucción de
retorno que extrae la dirección de retorno de la pila y la carga de nuevo en el
contador de programa (PC), asegurando así el retorno al punto de origen.
5. Primera Instrucción a Partir de Dirección 512
Para que la primera instrucción se ejecute a partir de la dirección 512, el
programador debe asegurarse de que el contador de programa (PC) esté
inicializado con el valor 512 antes de iniciar la ejecución. Esto puede lograrse
mediante una rutina de inicialización que cargue el valor 512 en el PC.
6. Cambios para Saltos Indirectos (a partir del paso 53)
Para habilitar los saltos indirectos, se pueden realizar los siguientes cambios:
- Paso 53 (Modificado):
```plaintext
53 NODELAY =>(^IR[0]&^IR[1]&IR[2]&IR[6])/(56).
```
- Nuevo Paso 56 (para saltos indirectos):
```plaintext
56 ADRBUS = MA; RD = \1\; MD <= DBUS; =>(^READY)/(56).
57 ABUS = MD; OBUS = ABUS; PC <= OBUS[6:15]; =>(4).
```
7. Ciclos en el Paso 20
El paso identificado con el número 20 consume 1 ciclo.
8. Circuitos Lógicos del ALU
El ALU (Unidad Aritmética Lógica) del SIT incluye los siguientes circuitos lógicos:
- Suma y resta (ADD/S
UB)
- AND, OR, NOT
- Shift y Rotate
- Comparadores
- Circuitos de control de acarreo y desbordamiento
9. Estados de la Máquina de Control del SIT
La máquina de estado para la sección de control del SIT tendrá un número de
estados que depende de la cantidad de pasos en la secuencia de control y los
diferentes caminos que pueden tomar. En base al código proporcionado, se pueden
identificar al menos unos 64 estados diferentes.
10. Resumen de Conexiones Relacionadas con el ABUS [16]
El ABUS [16] en la secuencia de control está involucrado en las siguientes
transferencias:
- Cargar direcciones desde IR a MA
- Realizar operaciones de incremento/decremento de PC y SP
- Transferencias de datos entre registros y buses internos
11. Resumen de Transferencias Relacionadas con el Registro MA [10]
El registro MA [10] participa en las siguientes transferencias:
- Carga de direcciones desde IR para modos de direccionamiento inmediato y
directo
- Transferencia de direcciones calculadas a partir de operaciones de índice y
desplazamiento
- Almacenamiento de direcciones de retorno en la pila para operaciones de
subrutina