Universidad del País Vasco Facultad de Informática eman ta zabal zazu Departamento de Arquitectura y Tecnología de Computadores Laboratorio de Diseño Digital Ejercicios de diseño 1 1 Un sistema lógico debe contar el número de unos de una palabra de 20 bits. El esquema de entradas y salidas es el siguiente: dato resultado final dato (20 bits) calcular dato calcular resultado final dato a procesar, que también debe darse como salida señal de 1 bit que da inicio a la operación palabra que indica el número de unos que tiene el dato indica final de operación y debe durar activado 1 ms. La frecuencia del reloj es de 1 MHz. ¿cuál será el tiempo de respuesta? 2 Un algoritmo para el cálculo del Máximo Común Divisor de dos números es el que se presenta a continuación. Las variables que toman parte en el algoritmo son: MCD X0 e Y0 Resultado FIN señal de un bit que inicia el proceso de cálculo los dos números a procesar máximo común divisor de X0 e Y0 indica que el proceso ha terminado. Algoritmo: repetir mientras MCD=0 hacer X := X0 ; Y := Y0 finmientras; Fin := false; mientras X ≠ Y hacer si X < Y entonces Y := Y - X sino X := X - Y finmientras; Resultado := X ; Fin := true hasta que false Diseña un sistema para realizar esa operación, desarrollando la unidad de proceso y la de control. A continuación: a) Suponiendo que X0 = 12 e Y0 = 15 y que la frecuencia del reloj que controla la máquina es de 100 KHz, calcula el tiempo que necesitará tu diseño para ejecutar la operación. b) Tomando como referencia un retraso de 10 ns para todos los circuitos combinacionales y de 20 ns para todos los secuenciales, calcular la frecuencia máxima de funcionamiento si las señales deben ser estables en las entradas de los circuitos síncronos al menos 100 ns antes del flanco de reloj. Especificar para ello el camino de máximo retardo de la máquina. c) Suponer que la frecuencia del reloj es de 1 Mhz. y que MCD es una señal proveniente de un pulsador. ¿Qué tipo de problemas podrían presentarse? ¿Cómo se resolverían? Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 2 3 Diseñar un sistema que sume/reste números naturales de N bits y ofrezca su resultado acumulado. Los datos se introducirán mediante N interruptores y la máquina poseerá además tres pulsadores: LD (load), para cargar en el registro un dato de N bits; SUM (sumar) para sumar al contenido el número de entrada; RES (restar), para restar al contenido el número a la entrada. El resultado será de 2N bits y además del resultado se generarán dos indicadores a la salida para reflejar si ha existido overflow o underflow en la operación. Caso de ocurrir alguna de estas dos excepciones la única operación que se aceptará a continuación será la de carga 4 Diseñar un sistema contra el que se pueda jugar al siguiente juego (NIM). La máquina inicializa un marcador en 15 "objetos". El jugador empieza quitando 1, 2 o 3 "objetos" del total. A continuación, la máquina realiza su jugada, siguiendo así hasta dejar el marcador en 0. Pierde el que quita el último "objeto". La máquina tiene tres pulsadores: 1, 2 y 3 y un par de LEDs para indicar "ganar" y "perder". Un pulsador de RESET sirve para inicializar un nuevo juego. (Hay que diseñar la jugada óptima de la máquina). G P Reset 1 2 3 5 Un teclado puede verse como una matriz de pulsadores. En este ejemplo se quiere controlar una matriz 5 x 5 formada por 25 pulsadores. Deseamos diseñar un sistema que detecte que se ha pulsado algún pulsador y deje en un registro el código correspondiente. La matriz de pulsadores tiene 5 entradas -filas- y 5 salidas -columnas-. Los pulsadores se encuentran conectados entre una fila y una columna. Para detectar si se ha pulsado un pulsador activaremos la primera fila (conectando 5 volt) y leeremos las 5 columnas. Si no se ha pulsado ninguno de los pulsadores conectados a esa fila entonces a la salida (columnas) tendremos 00000, ya que no hay conexión; sin embargo, si alguno está pulsado, obtendremos 5 voltios en la columna correspondiente a la fila en la que está conectado. Este proceso hay que repetirlo de cíclicamente para todas las filas. Por lo tanto el algoritmo de lectura de un teclado es: activar la fila; leer las columnas; si todas las columnas están desactivadas entonces activar la siguiente fila, en caso contrario (una tecla activada) buscar cuál, buscar su posición en la matriz y devolver el código. En este caso, el código correspondiente a cada pulsador es de 8 bits y está almacenado en una memoria. Los pulsadores no tienen rebote. P 0 1 2 3 4 5 6 7 8 9 10 11 12 15 16 17 20 21 13 14 18 19 22 23 24 Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 3 6 Se dispone de una memoria EPROM en la que se han almacenado de manera comprimida, de cara a ahorrar espacio en memoria, un conjunto de datos que representan el comportamiento de una determinada variable física. El algoritmo de compresión utilizado es muy sencillo: • Se ha almacenado un dato si la diferencia de éste con el último almacenado supera una determinada cota de error. • Aún no superando la cota de error, un dato se almacena al superarse un número máximo de datos sin almacenar. • Los datos que se encuentran dentro de la cota de error se consideran "iguales". Por ello, junto con el dato, se almacena también el número de veces que ese dato se ha repetido, considerando el margen de error. Ejemplo: cota de error = 1 datos de entrada: información almacenada: 7 8 8 7 7 12 13 11 14 8 4 3 3 2 2 2 1 3 3 3 2 7 6 6 13 ..... 7 12 14 8 4 2 7 … datos 5 3 11383… número de repeticiones De este modo podría recuperarse la información original, aunque con un cierto nivel de error. Del ejemplo anterior obtendríamos: información reconstruida 7 7 7 7 7 12 12 12 14 8 4 4 4 2 2 2 2 2 2 2 2 7 7 7 … 15 10 5 0 0 5 10 15 20 25 Se trata de diseñar un sistema digital que imprima la serie de datos reconstruida de acuerdo al criterio anterior, enviando los datos a la entrada paralelo de una impresora. Las características del sistema en concreto son las siguientes: • Una señal de entrada, I, que indica el inicio de un proceso de impresión. • EPROM de 256 x 8 bits, divididos en dos campos de 4 bits: los cuatro bits de menos peso representan el dato almacenado (D) y los cuatro bits de más peso indican el número de veces que se repite (REP). • Los datos almacenados varían entre 0 y 9. • La serie comienza en la dirección 0 de la memoria y el fin de la misma viene dado por una posición de memoria en la que el campo REP vale 0. Esta posición no indica un dato válido; únicamente marca el fin de la serie. Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 4 La comunicación con la impresora se efectúa mediante el protocolo mostrado en la figura. La señal STRB.L indica a la impresora la existencia de un dato a imprimir. Como respuesta, ésta activa BUSY, indicando que está ocupada y devuelve la señal ACK.L, indicando que se ha aceptado el dato a imprimir. Al terminar la impresión, la impresora vuelve a poner BUSY a 0. BUSY 5µs (min) ACK.L 1 ms (max) DATA STRB.L 0.5 µs (min) 0.5 µs (min) 0.5 µs (min) DATA: los datos que se envían a la impresora, que deben ir en ASCII de 8 bits. Recuerda que el número x se codifica en ASCII como 3xH STRB.L: señal de validación que indica a la impresora que los datos están disponibles. BUSY: indica que la impresora no está disponible. Al acabar la impresión se pone a 0. ACK.L: confirmación de la recepción de un dato. La relación temporal entre señales es importante, debiendo cumplirse las condiciones que se indican en la figura. Si no se activa ACK.L en el tiempo máximo establecido se supondrá que hay un error, se suspenderá la transmisión y se indicará convenientemente. Los caracteres que se envían a una impresora sólo se imprimen si se completa una línea o si se reciben los caracteres especiales de cambio de línea (0AH 0DH). Por ello, en la EPROM, hay intercalados entre los datos caracteres de control. Estos caracteres de control son fáciles de detectar, ya que, a diferencia de los datos, el valor de los 4 bits de menos peso es mayor que 9. El campo REP de estos caracteres es 1, pues no se repiten. Aunque no es necesario, se sugiere dividir el diseño en dos módulos: uno encargado de leer la memoria y otro de la comunicación con la impresora, tal como se indica en la figura. El primer módulo obtiene cada dato de la memoria y le pide al segundo que inicie el protocolo de impresión. Al completarlo, el segundo módulo se lo indica al primero. Datos a imprimir Módulo 1 ENV 8 BUSY Módulo 2 ACK.L I impresora LISTO STRB.L error Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 5 7 Se recibe una serie de datos de 8 bits de la que se desea calcular su MODA (valor más frecuente). Los 8 bits de cada dato llegan en paralelo. Una señal DP ("dato presente") indica que existe un dato para ser procesado. La serie de datos termina al recibirse un 00, que no se toma como dato. Como resultado debe dejarse la MODA de la serie y su frecuencia absoluta de aparición en la misma en dos registros de 8 bits. Entradas: datos de 8 bits señal DP RESET (asíncrono) Salidas: MODA (8 bits) Frecuencia absoluta (8 bits) Diseñar un sistema que resuelva este problema usando un controlador microprogramado. 8 Diseñar un sistema que localice la dirección de un determinado dato en una lista de 100 elementos. En el caso de que el dato no se encuentre en la lista, el sistema debe obtener la dirección del dato inferior más próximo al buscado. De hallarse repetido el dato obtendremos su primera dirección. Las entradas y salidas del sistema serán las siguientes: ENTRADAS: • B: • DAT: da comienzo a la búsqueda dato de 8 bits del que se desea buscar la dirección en la lista SALIDAS: • • • • DIR: DIF: FIN: LOC: dirección del dato buscado o, en su defecto, del inferior más cercano si el dato no está en la lista, diferencia con el inferior más cercano señal de fin de búsqueda señal de "dato localizado" 8 B DAT 8 DIF DIR FIN LOC Realizar una Unidad de Control cableada en base a un algoritmo ASM. Especificar claramente las señales de control que se utilicen. Suponer para ello, que se dispone de una señal de reloj de 20 MHz y que el tiempo de ciclo de la memoria es de 200ns. De acuerdo a tu algoritmo de control, cuál sería el tiempo mínimo y máximo de búsqueda? 9 Por un bus de 5 bits se envía información a un sistema que debe almacenarla en forma condensada. El algoritmo de condensación es el siguiente: • Se almacena un dato si la diferencia con el último almacenado supera una cota de error. • Si los últimos 15 datos no se han guardado, el 16 se almacena obligatoriamente. • Por cada dato guardado, se almacena también el nº de datos llegados desde el anterior guardado. Ejemplo: cota de error = 2 datos de entrada: 7 8 8 7 7 12 13 11 14 8 4 3 3 2 2 2 1 3 3 3 2 7 ..... información almacenada: 7 12 8 4 1 7 datos 1 5 4165 nª de datos recibidos. De los 5 bits que llegan al sistema, 4 son de datos y el quinto es una señal READY, que indica, cuando se halla en cero voltios, que existe un dato válido en la entrada al sistema. (Tomar como ejemplo una memoria de 256 x 4) Universidad del País Vasco Facultad de Informática eman ta zabal zazu Laboratorio de Diseño Digital Departamento de Arquitectura y Tecnología de Computadores Ejercicios de diseño 6 10 Queremos diseñar un sistema para incluirlo dentro de un cajero automático y que se encargue de la verificación de la clave tecleada al insertar una tarjeta y de la actualización de información asociada a la misma. El esquema del sistema es el siguiente: INCORR Sistema a diseñar RETEN CORR IN 20 NUM TEC Cajero 4 DIG Entradas: IN: indica el comienzo de la operación (inserción de la tarjeta). NUM: 20 bits que indican el nº de la tarjeta. TEC: indica que se ha pulsado un dígito. DIG: 4 bits que indican el dígito tecleado. Salidas: CORR: indica que la clave es correcta. INCORR: indica que la clave es incorrecta. RETEN: indica que la tarjeta ha sido retenida. Al introducir la tarjeta, el cajero activa la señal IN y proporciona el nº de la tarjeta en NUM, manteniendo la información durante 3 ciclos de reloj. A continuación, nuestro sistema debe recoger los 4 dígitos de la clave, que llegan a medida que se teclean, por la entrada DIG. Cada vez que se teclea un dígito se activa TEC. El tiempo que transcurre entre la pulsación de dos dígitos es variable, pero lo vamos a limitar a un máximo de 5 segundos. Si se supera ese tiempo, hay que finalizar el proceso activando durante un ciclo la señal RETEN, que indica que la tarjeta es retenida por el sistema, y actualizar la información de memoria como se indica más adelante. Si se recoge la clave completa, hay que verificar si coincide con la clave asociada a la tarjeta y que está almacenada en una memoria. Tenemos dos casos posibles: • si ambas claves coinciden, hay que finalizar activando durante un ciclo CORR. • si no coinciden, hay que activar durante un ciclo INCORR, volver a leer una nueva clave completa (los 4 dígitos) tal y como se ha hecho antes y volver a hacer la verificación. El máximo número de fallos consecutivos para una misma tarjeta es de 3, de modo que si se recogen tres claves incorrectas, hay que finalizar el proceso activando durante un ciclo la señal RETEN. Aparte de la clave, en memoria se almacena más información para cada tarjeta. Cada palabra de memoria, de 48 bits, contiene: los 16 bits correspondientes a la clave asociada a la tarjeta, otros 16 bits que guardan el número total de accesos hechos con esa tarjeta, y otros 16 bits que indican el número total de fallos cometidos al teclear la clave. Cada vez que se introduce una tarjeta hay que actualizar dicha información, ya que como mínimo habrá que modificar el número de accesos (se incrementa en 1), y puede ser que también el número de fallos (puede incrementarse en 1, 2 o 3). a). Diseña el sistema de acuerdo a la metodología vista en el curso Vamos a suponer que la frecuencia del reloj del sistema es de 1 Mhz. b). De acuerdo con las características del sistema, responde brevemente a las siguientes cuestiones: o ¿qué tipo de memoria utilizarías en este sistema y por qué? o Dada tu solución y la frecuencia de reloj, ¿podrías tener problemas con la memoria? o ¿Sería posible utilizar una memoria RAM dinámica? ¿en qué variaría el algoritmo que propones? Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 7 11 Queremos diseñar un módulo capaz de enviar el contenido de una memoria EPROM a una impresora a través de su entrada paralelo Centronics. La siguiente figura muestra las señales que intercambian la impresora y nuestro módulo. I es una señal externa, un pulsador, que da comienzo al envío de datos a la impresora. BUSY ACK.L I impresora DATA STRB.L error La entrada paralelo de la impresora se controla mediante el protocolo de la figura. BUSY 5µs (min) BUSY: señal que indica que la impresora está ocupada ACK.L: aceptación de un dato (con cada byte) DATA: datos que se envían impresora (8 bits. ACK.L 1 ms (max) DATA STRB.L 0.5 µs (min) la STRB.L: señal que indica a la impresora que los datos están disponibles. 0.5 µs (min) 0.5 µs (min) a La secuencia de señales debe cumplir con las condiciones temporales que se indican en la figura. Si tras el tiempo acordado no se recibe la señal ACK.L se supondrá que hay un error en la impresora, se suspenderá la transmisión y se indicará convenientemente. La cadena de caracteres que se quiere imprimir termina con el código de fin_de_texto, 0000xxxxB. Este carácter deberá ser detectado pero no enviado a la impresora. 11b Una impresora recibe datos por su entrada paralelo de acuerdo a un determinado protocolo (idéntico al del ejercicio anterior). Los datos, de 8 bits, son almacenados temporalmente en una memoria RAM local de 80 caracteres. Los caracteres recibidos sólo se imprimen cuando se recibe el carácter Fin-de-Línea (FL), o bien cuando se han recibido ya 80 caracteres. Para ello, los caracteres ASCII almacenados en la memoria RAM son traducidos al código correspondiente (código dat de m bits, ver figura), y se envían junto con una señal P.L al dispositivo mecánico que los imprime. La señal P.L y el código final enviado a la parte mecánica han de durar al menos 0.1ms (ver figuras). Diseñar el módulo de la impresora indicado en la figura, desarrollando una unidad de control microprogramada y la correspondiente unidad de proceso. Especificar claramente las señales de control utilizadas. Indicar así mismo qué condiciones son necesarias para cumplir las especificaciones de tiempo fijadas. STRB.L DATA BUSY 8 m ? dat parte mecánica Dat PL 0,1 ms (min) P.l ACK.L Impresora. Hay que diseñar el módulo ? Protocolo para el envío de datos al dispositivo mecánico Universidad del País Vasco Facultad de Informática eman ta zabal zazu Departamento de Arquitectura y Tecnología de Computadores Laboratorio de Diseño Digital Ejercicios de diseño 8 12 Un determinado sistema digital recibe datos a través de una entrada de 3 bits de acuerdo al siguiente protocolo: DATOS 3 3 RES REC YA C_M La señal REC indica presencia de datos en las líneas de entrada de datos. La señal C_M indica "cambio de modo" en la recepción de datos. Los datos se reciben en dos modos diferentes: MODO 0 Modo 0 : los tres bits de entrada representan un número N0 de tres bits. Modo 1: los tres bits de entrada representan cada uno un bit de un número de tres bits diferente: N1, N2 y N3, que se van a ir recibiendo de manera continuada bit a bit, uno por ciclo de reloj; en serie por tanto. N0 D0 D1 D2 MODO 1 D0 D1 D2 N1.i N2.i N3.i El modo de recepción de datos sólo se cambia al recibir nuevos datos. Como resultado, el sistema debe ofrecer: En modo 0 RES = N0 En modo 1 RES = Mayor (N1, N2, N3) Una señal, YA, indica la presencia del resultado. a Construir un circuito digital que ofrezca el mayor de tres números de tres bits. b Construye la unidad de control y la unidad de proceso para solucionar el problema propuesto. Utiliza un contador de 3 bits para implementar la unidad de control y en la unidad de proceso el circuito construido en el apartado a. Especifica cómo se controlan todos los circuitos. c Indicar cómo se añadiría al sistema una señal luminosa que indicara de manera permanente el modo de recepción en que se halla el sistema: encendida, modo 0; apagada, modo 1. d Calcular el tiempo de respuesta en ambos modos si la señal de reloj es de 500 KHz. Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 9 13 Tenemos almacenados en memoria los elementos de un vector pero no en posiciones consecutivas, de modo que junto con cada elemento del vector se ha almacenado también la dirección del siguiente elemento, formando así una lista encadenada. dirección comienzo D1 DS D2 DS D3 DS DS = dirección siguiente Queremos diseñar un circuito digital para realizar la siguiente operación sobre dicho vector, consistente en comparar el campo de datos de dos elementos de manera que: Si D(i) < D(i+1) entonces D(i) := - D(i) (cambio de signo) Los datos están representados en SIGNO-MAGNITUD. La información de entrada es la siguiente: • OP: señal de un bit que indica el comienzo de la operación. • DCV: dirección de comienzo del vector • I: elementos del vector a comparar: el (i) y el (i+1). (i = 0 .. 254) EJEMPLO: si DCV = 100 e I = 7, hay que comparar los elementos 7 y 8 del vector que comienza en la dirección 100, para realizar la operación indicada anteriormente Como salida del circuito, además de realizar la operación ya indicada, hay que generar los dos bits siguientes: • FIN: indica final de la operación • CS: indica que se ha realizado el cambio de signo. OP DCV I FIN n p CS a Diseña un comparador de números en signo-magnitud para obtener la función a<b. b Diseña una unidad de proceso adecuada para realizar la operación descrita. Indica claramente los elementos utilizados así como las señales de control de los mismos. Utiliza el comparador construido en el apartado anterior como un elemento más. Junto a ello, diseña un algoritmo de control, lo más simple posible, para controlar la unidad de proceso anterior, indicando claramente las acciones a realizar en cada estado. Indica también las ecuaciones lógicas de todas las señales de control. c Dado un estado de tu algoritmo en el que se realiza un operación en memoria, indica cómo cambiaría si la memoria utilizada fuera dinámica. d Considera los siguientes datos: (tamaño de memoria: 1024 palabras, campo de datos de los elementos del vector: 8 bits). Construye la memoria del ejercicio usando como bloques básicos, chips de memoria de 512 x 4 bits). e El tiempo máximo para realizar esta operación es de 1 ms. ¿Cuál es la frecuencia más pequeña que se puede utilizar para la señal de reloj? A esa velocidad, ¿va a haber problemas con la memoria? ¿Por qué? Universidad del País Vasco Facultad de Informática Departamento de Arquitectura y Tecnología de Computadores eman ta zabal zazu Laboratorio de Diseño Digital Ejercicios de diseño 10 14 Se desea diseñar una máquina que permita a una persona jugar al siguiente juego. En la orilla de un río se encuentra un pastor con un lobo, una oveja y una berza con la intención de cruzar el mismo. Cuenta para ello con un bote en el que sólo caben él y una de las tres cosas que lleva. Nunca puede dejar solos en una orilla al lobo y a la oveja o a la oveja y a la berza debido a la "pérdida material" que ello conlleva. ¿Cómo llegar a la otra orilla con todas las pertenencias intactas? Diseña una máquina que pueda servir para jugar según lo explicado. Para poder jugar debe contar con 5 pulsadores que realizan las siguientes acciones: PAS: el pastor cruza solo el río LOB: el pastor cruza el río con el lobo OVE: el pastor cruza el río con la oveja BER: el pastor cruza el río con la berza RESET: comienzo de un nuevo juego Exito PAS LOB OVE Fracaso BER Reset Cuatro leds en cada orilla del río indicarán la presencia o ausencia de los elementos del juego en dicha orilla. Un par de leds más indicarán éxito o fracaso en el intento. (Aviso: no se trata de un sistema contra el que una persona deba jugar; hay que aceptar cualquier jugada solicitada, a pesar de que el resultado de la misma sea un desastre!)