Estructura y Tecnolog´ıa de Computadores II Teor´ıa y problemas Sergio D´ıaz Ruiz Mar´ıa del Carmen Romero Ternero Alberto J. Molina Cantero Enero, 2009
1.1
Ejercicios
EXAMEN DE ETCII 1º I.T.I. GESTION
SEPTIEMBRE 2001
1.- Enunciado Diseñar una1-1 unidad de control (carta ASM, implementación con 1 biestable por estado) que actúe sobre la unidad de datos de la figura de forma que pueda usarse para realizar divisiones enteras. El usuario coloca los valores a dividir en los registros DIVIDENDO y DIVISOR, tras lo cual activa la señalDise˜ de ninicio Cuando el sistema termina su laoperación, FIN indicando que el e una Xs. unidad de control que act´ ue sobre unidad deactivará datos delalaseñal figura 1 para que pueda realizar divisiones resultado de la divisiónenteras. está disponible en los registros COCIENTE y RESTO.
DIVIDENDO RT
Xs
DIVISOR Unidad de control
ALU
FIN
COCIENTE
AC RESTO
Figura 1: Unidad de datos del sistema (enunciado 1-1)
Deberá especificar claramente qué señales de control debe presentar cada subsistema de la unidad de datos. 1 2.Dados los siguientes valores iniciales de registros y memoria, indicar los resultados obtenidos tras ejecutar cada instrucción siguiente: Registro A0 D2 D3 D4
Valor 0000 0004 0123 ABCD 000C 0002 0000 0008
Dirección 00 0008 00 0009 00 000A 00 000B 00 000C 00 000D 00 000E
Valor 1D 1B 1C 14 0C 0A 00
2 El usuario coloca los valores a dividir en los registros DIVIDENDO y DIVISOR, tras lo cual activa la se˜ nal de inicio Xs. Cuando el sistema termina su operaci´on, activar´a la se˜ nal FIN indicando que el resultado de la divisi´on est´a disponible en los registros COCIENTE y RESTO. Deber´ a especificar claramente qu´e se˜ nales de control debe presentar cada subsistema de la unidad de datos, elaborar las cartas ASM de datos y control e implementar la unidad de control mediante la t´ecnica de 1 biestable por estado.
Enunciado 1-2 Dise˜ ne un sistema digital (unidad de datos, carta ASM y controlador 1 biestable/estado) que permita programar memorias ROM. El sistema dispone de una memoria RAM cuyo contenido es fijado externamente antes de recibir un pulso por la l´ınea de inicio Xs. Tras dicho pulso, el sistema debe realizar el proceso de programaci´on, es decir, copiar todo el contenido de la memoria RAM en la memoria ROM (ambas tienen la misma capacidad). Tenga en cuenta lo siguiente:
• La memoria ROM dispone de una entrada de control de programaci´on denominada PGM. Para escribir correctamente un cierto valor en una posici´on determinada de la ROM, hay que activar PGM durante, al menos, 10 milisegundos, durante los cuales hay que mantener tanto el valor como la posici´ on en los buses de datos y direcciones de la ROM. • La se˜ nal de reloj tiene un per´ıodo de 1 milisegundo.
Al finalizar la ejecuci´ on, debe activarse la se˜ nal FIN durante un ciclo de reloj.
Enunciado 1-3 Se desea realizar el dise˜ no de un sistema (unidad de datos, carta ASM de control e implementaci´ on de un biestable por estado) que permita el control de un t´ unel de lavado de coches. Para ello hay que tener en cuenta la siguiente informaci´on:
• Entradas del sistema – ON: indica que el sensor de entrada ha detectado un coche • Salidas del sistema nal que el sistema activa para poner en verde el sem´aforo de – PUEDES ENTRAR: se˜ entrada. Si no est´ a activada, el sem´aforo de entrada permanece en rojo – MUEVE: se˜ nal que el sistema activa para mover el coche por los carriles situados al efecto – AGUA: se˜ nal que el sistema activa para la salida de los chorros de agua ´ – JABON: se˜ nal que el sistema activa para la salida del jab´on
1.1. EJERCICIOS
3
– AIRE: se˜ nal que el sistema activa para la salida del aire nal que el sistema activa para poner en verde el sem´aforo de – PUEDES SALIR: se˜ salida. Si no est´ a activada, el sem´aforo de salida permanece en rojo • El lavado completo dura 3 minutos y tiene cuatro fases diferenciadas: – fase de inicio de operaci´ on, que dura 30seg, – fase de lavado, que dura 1 minuto – fase de secado, que dura 1 minuto – y fase de salida, que dura 30 seg • La operaci´ on del sistema es como sigue: Al principio, la m´ aquina se encuentra en estado de reposo esperando a que alg´ un coche active el sensor del carril por donde se trasladar´a el coche. Cuando el sensor detecta un coche, comienza la fase de inicio, durante la cual se activa la se˜ nal de movimiento del coche. Una vez acabada esta fase, empieza la siguiente, durante la cual el coche seguir´a en movimiento y se activar´ a la salida de agua y jab´on en la m´aquina. Tras esta fase, el coche se sigue moviendo y se activa la salida de aire para el secado. Por u ´ltimo, una vez acabada la fase de secado, el coche se sigue moviendo durante la fase de salida y cuando ´esta acaba se pone en verde el sem´ aforo de la salida. Mientras se est´ a lavando un coche, el sem´aforo de la entrada debe permanecer en rojo hasta que finalice el lavado completo del primer coche. Los sem´ aforos de la entrada y la salida siempre tienen que estar en verde o en rojo, seg´ un el caso. Notas: • El per´ıodo de la se˜ nal de reloj es de 5 segundos. • Todas las se˜ nales de control se consideran activas en alto.
Enunciado 1-4 Partiendo de la unidad de datos de la figura 2, obtener la carta ASM y la implementaci´on del controlador (mediante la t´ecnica de un biestable por estado) de un sistema digital que calcule la media de un conjunto de 4 medidas, cuyos valores llegan al sistema por medio del registro A, seg´ un se indica a continuaci´ on. • Entradas del sistema: – Xs: se˜ nal de inicio. – MEDIDA: cuando vale 1, indica que en el registro A se ha almacenado (externamente al sistema) una nueva medida. • Salidas del sistema:
4
A [n] Sumador n bits
RA ZA
B [n] AC [n]
RAC WAC CLAC SHRAC
RB WB
CONT mód-4 CL UP CY
Figura 2: Unidad de datos del sistema (enunciado 1-4) – FIN: se˜ nal que el sistema activa para indicar el fin de la operaci´on. • Funcionamiento: 1. El sistema comienza a operar al activarse la se˜ nal de inicio Xs. 2. Cada vez que la se˜ nal MEDIDA se active, hay que comprobar si el registro A vale 0. En tal caso, debe ignorarse dicho valor, quedando el sistema de nuevo a la espera de la activaci´ on de la se˜ nal MEDIDA. 3. Si MEDIDA se ha activado, y el registro A contiene un valor distinto de 0, deber´ a usarlo para calcular la media, quedando despu´es en espera de la siguiente activaci´ on de la se˜ nal MEDIDA. 4. Cuando el sistema haya calculado la media aritm´etica a partir de 4 medidas distintas de 0, deber´ a almacenar el resultado en el registro B, y despu´es activar la se˜ nal FIN. • Notas: 1. Dado que el sistema s´ olo debe considerar las medidas distintas de 0, puede que el sistema necesite recibir m´as de 4 medidas para poder calcular la media. 2. El registro A tiene una se˜ nal de salida, ZA, que se activa si A = 0. 3. El registro AC tiene entradas de desplazamiento a la derecha, SHRAC, y puesta a cero, CLAC.
Enunciado 1-5 Se desea dise˜ nar un sistema digital con el esquema de bloques indicado en la figura 3 y que realice las siguientes macro-operaciones: C ← 4A - B C ← 4A + B
Prueba de evaluación continua: Sistemas Digitales Curso 2006/2007
Se desea diseñar un sistema digital que realice las siguientes macro-operaciones: C ← 4A – B C ← 4A + B D ← número de unos que hay en A D ← n´ umero de unos que hay en A D ← número de ceros que hay en A
1.2. EJERCICIOS
5
D ← n´ umero de ceros que hay en A
FIN
A
Salidas de control
IR1-0
B
UC
UD C
Estado de la UD o entradas de control
D
Xs Figura 3: Esquema de bloques del sistema digital (enunciado 1-5)
a) Diseñe la unidad de datos necesaria para ello, realizando una descripción completa con el lenguaje RT de todos los elementos que considere necesarios.
a) Dise˜ ne la unidad de datos necesaria para ello, realizando una descripci´on completa con el lenguaje RT de todos los elementos que considere necesarios.
b) Realice las cartas ASM de datos y de control para esas cuatro macrooperaciones.
b) Realice las cartas ASM de datos y de control para esas cuatro macrooperaciones.
c) Implemente la unidad de control del sistema utilizando la técnica de un biestable por
estado. c) Implemente la unidad de control del sistema utilizando la t´ecnica de un biestable por estado.
1.2
Ejercicios
Enunciado 1-6 Se desea implementar un programa con las instrucciones del CS2 que, con los valores almacenados desde la direcci´ on de memoria $DF hasta la $D0, sume, por un lado, todos los datos pares y, por otro, todos los datos impares; y almacene los resultados en las direcciones SUMPAR y SUMIMPAR respectivamente. Adem´ as, el programa tambi´en debe calcular la media de los valores y almacenarla en la direcci´ on MEDIA.
Enunciado 1-7 Se dispone de una variante del computador simple 2 (CS2) tal que incluye una nueva instrucci´on de almacenamiento con direccionamiento indirecto: STAI $n. Usando esta instrucci´on, y las convencionales del CS2, implemente un programa que sume dos vectores de 16 componentes, obteniendo como resultado un tercer vector. Los vectores operando est´an almacenados en las
6 posiciones $D0-$DF y $E0-$EF, mientras que el vector resultado debe ocupar las posiciones $A0-$AF. NOTA: el programa debe usar un bucle, de tal forma que resulte sencillo modificar el algoritmo para que acepte vectores de tama˜ no distinto a 16.
Enunciado 1-8 Escriba un programa para el CS2 (pseudoc´odigo y ensamblador) que calcule el producto escalar, P , de dos vectores X ≡ (X0 , X1 , X2 , . . . X15 ) e Y ≡ (Y0 , Y1 , Y2 , . . . Y15 ), almacenados en las posiciones $A0-$AF y $B0-$BF, respectivamente. El producto escalar es un valor (no un vector) que se calcula del siguiente modo: P = X0 · Y0 + X1 · Y1 + X2 · Y2 + . . . + X15 · Y15 donde Xi e Yi son las componentes i-´esimas de los vectores X e Y . No se tendr´an en cuenta los problemas de desbordamiento.
Enunciado 1-9 Suponiendo que el CS2 tiene una instrucci´on de almacenamiento con direccionamiento indirecto (stai PUNT):
(a) Rellene la tabla 1 describiendo lo que hace el c´odigo e indicando el pseudoc´odigo. Nota: Si lo considera necesario para su explicaci´on, puede hacer agrupaciones de l´ıneas de c´odigo. Tabla 1: Explicaci´on del c´odigo y pseudoc´odigo (enunciado 1-9) Ensamblador equ PUNT $B0
Descripci´on de la operaci´on
equ TEMP $B1 operacion: laim 0 sta PUNT bucle: laim 0 addi PUNT clc rol sta TEMP sta TEMP laim 1 Sigue . . .
Pseudoc´odigo
1.3. EJERCICIOS
7
Tabla 1: Explicaci´ on del c´ odigo y pseudoc´odigo (enunciado 1-9) (cont.) Ensamblador add PUNT sta PUNT lda TEMP addi PUNT sta TEMP laim 1 add PUNT sta PUNT lda TEMP stai PUNT laim 1 add PUNT sta PUNT laim 252 sub PUNT bcs terminar jmp bucle terminar: rts
Descripci´on de la operaci´on
Pseudoc´odigo
(b) Explique qu´e ocurrir´ıa si se ejecuta este fragmento de c´odigo en el CS2.
Enunciado 1-10 Sup´ ongase que una de las 16 instrucciones del CS2 es: LSL n,$A (desplazar a la izquierda n veces el contenido de la posici´ on de memoria $A), en la que, por cuestiones de almacenamiento, el valor inmediato n se encuentra en la direcci´on de memoria siguiente a la propia instrucci´on (que contiene el c´ odigo de operaci´ on y la direcci´on $A). Represente, en una carta ASM, la secuencia de micro-operaciones necesarias para la b´ usqueda y ejecuci´on de esta instrucci´on.
1.3
Ejercicios
Enunciado 1-11 Dise˜ nar el subsistema de memoria para un microprocesador de 16 l´ıneas de direcciones y 8 bits de datos. Se dispone de chips de memoria RAM de 8Kx8 (con se˜ nal de selecci´on activa a nivel bajo), y con ellos se desea cubrir completamente el espacio de direcciones del microprocesador.
8 (a) Representar el mapa de memoria, el circuito de decodificaci´on y la interconexi´on entre chips de memoria. (b) Si el microprocesador coloca en su bus de direcciones el valor $A03B, ¿qu´e chip ser´ a seleccionado, y qu´e posici´ on del mismo ser´a accedida? (c) Suponiendo que el pen´ ultimo chip de RAM (seg´ un el orden del mapa de memoria dise˜ nado) est´ a siendo seleccionado, y que se est´a accediendo a la posici´on $1EC2 del mismo, ¿qu´e valor ha colocado el microprocesador en su bus de direcciones?
Enunciado 1-12 Dise˜ nar el subsistema de memoria para un microprocesador de 16 l´ıneas de direcciones y 8 bits de datos. Se dispone de dos chips de memoria RAM, de 16Kx8 (M1) y 4Kx8 (M2), y un chip de ROM de 8Kx8 (M3), todos ellos con se˜ nal de selecci´on activa a nivel bajo. Las posiciones m´ as bajas del del espacio de direccionamiento deben estar cubiertos con un total de 20KB de RAM, mientras que en las posiciones m´ as altas deben ubicarse 8KB de ROM. El resto del espacio de direccionamiento debe quedar libre para futuras ampliaciones del subsistema de memoria. (a) Representar el mapa de memoria, el circuito de decodificaci´on y la interconexi´on entre chips de memoria. (b) Determinar qu´e chip ser´ a seleccionado, y qu´e posici´on del mismo ser´a accedida, si el microprocesador coloca en el bus de direcciones los valores: (b.1) $25F8, (b.2) $F01A, (b.3) $6ABD. (c) Determinar qu´e direcci´ on est´a proporcionando el microprocesador si el chip seleccionado y la posici´ on f´ısica accedida dentro del mismo es: (c.1) M3, $1BFF; (c.2) M2, $1732; (c.3) M2, $74A.
Enunciado 1-13 Determinar cu´ ales de los subsistemas de memoria de la figura 4 est´a mal dise˜ nado, justificando brevemente las respuestas.
1.3. EJERCICIOS
A15
9
a14-0
D7-0
CS
d7-0
a14-0
ROM 32K×8
CS
CS d7-0
a14-0
ROM 32K×8
A14-0
15
D7-0
8
15 8
(b)
CS a14-0
CS
A0 d3-0
ROM 32K×4
D7-4
a14-0
4
A14-0 D7-0
CS d3-0
ROM 32K×4 15 8
d7-0
ROM 32K×8
CS a14-0
d7-0
ROM 32K×8
(a)
A15
d7-0
ROM 32K×8
a14-0 A14-0
A15
CS
D3-0
a14-0
4
A15-1 D7-0
d7-0
ROM 32K×8 15
(c)
8
(d)
Figura 4: Mapa de memoria (enunciado 1-13)
Enunciado 1-14 Se dispone de un microprocesador de 16 bits de datos y 15 bits de direcciones y de cuatro chips de 4Kx8 de RAM y dos de 8Kx8 de ROM, con se˜ nales de selecci´on activas a nivel alto. Se desea que las posiciones de memoria m´ as bajas est´en ocupadas por ROM y las m´as altas por RAM. Dise˜ nar el sistema de decodificaci´ on.
Enunciado 1-15 Se dispone de un microprocesador de 16 bits de datos y 23 bits de direcciones y de chips de RAM de 256Kx8, con se˜ nales de selecci´ on activas a nivel bajo. (a) Dise˜ nar un subsistema de memoria de 2MB de RAM, ubicados en las posiciones m´as altas
10 del espacio de direccionamiento. Considerar que las se˜ nales de selecci´on de byte BE1 y BE0 son activas a nivel bajo. (b) Determinar el chip seleccionado y la direcci´on f´ısica accedida si el microprocesador realiza una lectura de tama˜ no byte de la posici´on l´ogica $F00150. Considerar que las posiciones pares se acceden mediante D15−8 y las impares mediante D7−0 . (c) Repetir el apartado anterior para la posici´on l´ogica $F00151. (d) Determinar la posici´ on l´ ogica que implique un acceso de tama˜ no palabra de 16 bits a la direcci´ on f´ısica $10FA0 de los chips que ocupan las posiciones m´as bajas.
1.4
Ejercicios
Enunciado 1-16 Partiendo del estado inicial indicado, ejecutar independientemente las instrucciones (a)-(j), especificando c´ omo quedan los registros y la memoria.
A0 D0 D1
0000 0200 0000 0011 1F0B 0002
1. MOVE.W #$1000, (A0)+ 2. LEA $1000, A0 3. ADDQ.W #6, D0 4. MULU (A0), D0 5. DIVU -4(A0, D1.W), D0 6. CMP.L D1, D0 7. OR.B D0, -(A0) 8. ROL.W #4, D0 9. SWAP D0 10. EXG D1, D0
$0001FE $0001FF $000200 $000201 $000202 $000203
00 02 00 03 0B 1F
1.4. EJERCICIOS
11
Enunciado 1-17 Partiendo del estado inicial siguiente, determine la ejecuci´on del siguiente programa:
A0 D0 D1 D2
0020 FFFF ???? ????
Direcci´ on $200000 $200002 $200004
0000 0003 2410 ????
Contenido ???? ABCD 0008
fin:
MOVE.W ASR.W MOVE.L CMP.B BNE ADD.W SWAP EXT.L LEA BRA
D1,(A0) (A0) -1(A0,D0.W),D2 D2,1(A0) fin D2,D0 D0 D0 $200003, A0 fin
Enunciado 1-18 Se desea desarrollar una subrutina en el MC68000 que permita determinar si un tri´angulo es rect´ angulo o no. Dicha subrutina utiliza las longitudes (tama˜ no palabra) A, B, C del tri´angulo, que est´ an almacenadas en la memoria, y devuelve RES=1 (tambi´en por memoria) en caso de que el tri´ angulo sea rect´ angulo y RES =0 en otro caso. Se sabe que un tri´angulo es rect´angulo cuando cumple la relaci´ on C 2 = A2 +B 2 . Siga el algoritmo que se muestra a continuaci´on, donde las variables temporales Miembro1 y Miembro2 deber´an implementarse por los registros D1 y D2 respectivamente. Todas las variables de memoria deben situarse a partir de la direcci´on $1000 y la subrutina debe ubicarse a partir de la direcci´on $2000.
Subrutina RECTANGULO (A,B,C) dev RES RES ← 0 Miembro1 ← A2 + B 2 Miembro2 ← C 2 Si Miembro1 = Miembro2 RES ← 1 Fsi End RECTANGULO
Enunciado 1-19 Se desea conocer, a partir de una tabla de menos de 255 datos tipo byte con signo almacenados en la direcci´ on de memoria TABLA, cu´ antos datos son positivos y cu´antos negativos, descartando aquellos que son cero. El tama˜ no de la tabla se almacena en la direcci´on N, el n´ umero de datos positivos se almacenar´ a en la variable POSITIVOS y el n´ umero de los negativos en NEGATIVOS.
12 Todas las variables que use el programa, junto con la propia tabla, deben estar situadas a partir de la direcci´ on $4000. Asimismo el programa debe estar ubicado a partir de la direcci´on $1000.
Enunciado 1-20 Se dispone de chips RAM y ROM de 8 bits para implementar un mapa de memoria entorno al MC68000 teniendo en cuenta que, para acceder a ROM, se han reservado el rango de direcciones: $000000-$00FFFF y, para la RAM, el rango: $020000-$023FFF. Dise˜ ne el sistema de decodificaci´ on.
Enunciado 1-21 Un determinado dispositivo basado en el MC68000 dispone de ciertas funciones b´asicas de entrada/salida (BIOS) a las que se puede acceder mediante las instrucciones de TRAP. En concreto, la funci´ on 0 del TRAP #2 permite presentar un mensaje en el monitor del sistema. Al ejecutar el TRAP #2, la rutina de excepci´on que viene incluida en el BIOS y que no hay que dise˜ nar, busca la palabra contenida del registro D0; si ´esta es 0 (funci´on 0 del TRAP #2) entonces toma el contenido del registro de direcciones A0 como puntero a la cadena de texto ASCII que se representar´ a en la pantalla. La funci´on 0 de la rutina TRAP #2 mostrar´a todos los caracteres encontrados en la cadena hasta que alcance el byte $0. Se desea dise˜ nar la rutina de excepci´ on asociada a Divisi´ on por Cero, de forma que ´esta, usando los servicios que ofrece el TRAP #2, presente en pantalla el mensaje: Error de divisi´on por cero.