Sei sulla pagina 1di 3

Estructura y tecnología de computadores II:

Trabajo 2
Siguiendo la ruta de datos del computador microprogramado que se presentó en clase y con las
siguientes operaciones definidas:

Operaciones definidas en la ALU:

Código: 0000 Operación: A + B

Código: 0001 Operación: A and B

Código: 0010 Operación: A

Código: 0011 Operación: A’

Código: 0100 Operación: A or B

Código: 0101 Operación: A xor B

Condiciones de salto:

Código: 000 Operación: No salta.

Código: 001 Operación: Salta si N = 1

Código: 010 Operación: Salta si Z = 1

Código: 011 Operación: Salta si C = 1

Código: 100 Operación: Salta siempre.

Añadimos las siguientes instrucciones:

Código: 10001 ANDDx: AC  AC and M(x)

Código: 10010 CLR: AC  0

Código: 10011 MULx: AC  AC * M(x)

Código: 10100 DIVx: AC  AC / M(x)

Para ellos tenemos que escribir los microprogramas para cada instrucción:

ANDDx: AC  AC and M(X)

0: A  IR and OMASK; (Bus A  IR, Bus B  OMASK, ALU = And, Habilitar el bus C, A  Bus C)

1: MAR  A; Lectura (MAR = 1, R = 1, Bus B  A)

2: ; Lectura (R = 1)

3: A  MBR; (MUX = 1, ALU = A, Habilitar el Bus C, A  Bus C)

4: AC  AC and A; (Bus A  AC, Bus B  A, ALU = And, Habilitar el Bus C, AC  Bus C)

5: Ir a Búsqueda;
CLR: AC  0

0: AC  RCON1; (Bus A  RCON1, ALU = A, Habilitar el Bus C, AC  Bus C)

1: Ir a Búsqueda

MULx: AC  AC * M(x)

0: A  IR and OMASK; (Bus A  IR, Bus B  OMASK, ALU = AND, Habilitar el Bus C, A  Bus C)

1: MAR  A; Lectura (Bus B  A, MAR = 1, R = 1)

2: AC  0; Lectura (R = 1, Bus A  RCON1, ALU = A, Habilitar el bus C, AC  Bus C)

3: A  MBR; (MUX = 1, ALU = A, Habilitar el Bus C, A  Bus C)

4: B  AC; (Bus A  AC, ALU = A, Habilitar el Bus C, B  Bus C)

5: Repetir: AC  B + AC; (Bus A  B, Bus B  AC, ALU = Suma, Habilitar el Bus C, AC  Bus C)

6: A  A – 1; (Bus A  A, Bus B  RCON3, ALU = Suma, Habilitar Bus C, A  Bus C)

7: Si Z = 1 ir a Búsqueda;

8: Ir a Repetir;

DIVx: AC  AC / M(x)

0: A  AC; (Bus A  AC, ALU = A, Habilitar el Bus C, A  Bus C)

1: B  IR and OMASK; (Bus A  IR, Bus B  OMASK, ALU = And, Habilitar el Bus C, B  Bus C)

2: MAR  B; Lectura (Bus B  B, MAR = 1, R = 1)

3: AC  0; Lectura (R = 1, Bus A  RCON1, ALU = A, Habilitar el Bus C, AC  Bus C)

4: B  MBR; (MUX = 1, ALU = A, Habilitar el Bus C, B  Bus C)

5: Si Z=1 ir a Búsqueda;

6: B  ; (Bus A  B, ALU = A’, Habilitar el bus C, B  Bus C)

7: B  B + RCON2; (Bus A  B, Bus B  RCON2, ALU = Suma, Habilitar el Bus C, B  Bus C)

8: Repetir: A  A + B; (Bus A  A, Bus B  B, ALU = Suma, Habilitar el Bus C, A  bus C)

9: Si N = 1 ir a Búsqueda;

10: AC  AC + 1; (Bus A  AC, Bus B  RCON2, ALU = Suma, Habilitar el Bus C, AC  Bus C)

11: Ir a Repetir;

***Nota: Como la ALU no me permite realizar la operación de resta A – B tengo que buscar la forma de
hacer A + (-B), lo que hago es hallar primero el Complemento a 1 (que si que nos lo permite) y más tarde
le sumo 1 mediante el registro RCON2 para tener así el Complemento a 2 y poder realizar así la
operación A + (-B) = A – B.
- Memoria de control:

Código Mux Cond SH MBR MAR R W ENC A B C DIR ALU


10001 0 000 000 0 0 0 0 1 0011 0100 1010 - 0001
0 000 000 0 1 1 0 0 1010 -
0 000 000 0 0 1 0 0 -
1 000 000 0 0 0 0 1 1010 - 0010
0 000 000 0 0 0 0 1 0001 1010 0001 - 0001
0 100 000 0 0 0 0 0 Búsqueda
10010 0 000 000 0 0 0 0 1 0110 0001 - 0010
0 100 000 0 0 0 0 0 Búsqueda
10011 0 000 000 0 0 0 0 1 0011 0100 1010 - 0001
0 000 000 0 1 1 0 0 1010 -
0 000 000 0 0 1 0 1 0101 0001 - 0010
1 000 000 0 0 0 0 1 1010 - 0010
0 000 000 0 0 0 0 1 0001 1011 - 0010
0 000 000 0 0 0 0 1 1011 0001 0001 - 0000
0 000 000 0 0 0 0 1 1010 0111 1010 - 0000
0 010 000 0 0 0 0 0 Búsqueda
0 100 00 0 0 0 0 0 Repetir
10100 0 000 000 0 0 0 0 1 0011 0100 1010 - 0001
0 000 000 0 1 1 0 0 1010 -
0 000 000 0 0 1 0 1 0101 0001 - 0010
1 000 000 0 0 0 0 1 1010 - 0010
0 000 000 0 0 0 0 1 0001 1011 - 0010
0 010 000 0 0 0 0 0 Búsqueda
0 000 000 0 0 0 0 1 1010 1010 - 0011
0 000 000 0 0 0 0 1 1010 0110 1010 - 0000
0 000 000 0 0 0 0 1 1011 1010 1011 - 0000
0 001 000 0 0 0 0 0 Búsqueda
0 000 000 0 0 0 0 1 0001 0110 0001 - 0000
0 100 000 0 0 0 0 0 Repetir

Potrebbero piacerti anche