DISEÑO COMBINACIONAL Asignatura: Carrera: DIGITAL I Ingeniería Electrónica Facultad de Ciencias Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario Año 2011 DISEÑO LÓGICO RESOLUCIÓN DE PROBLEMAS ABIERTOS DE INGENIERÍA Habitualmente el Diseño Lógico se inserta en un proceso más amplio de la resolución de problemas abiertos de ingeniería. Podríamos especificar este proceso de la siguiente manera: ANÁLISIS DEL PROBLEMA A RESOLVER Señales lógicas de entrada DISEÑO LÓGICO Señales lógicas de salida INTERFASES DE ENTRADA Y SALIDA La etapa de ANÁLISIS DEL PROBLEMA parte de algo que se quiere lograr pero que no está completamente definido todavía, constituyendo un PROBLEMA ABIERTO. Por ejemplo, supongamos que el problema fuese diseñar el control automático de un sistema de dos ascensores para un edificio de oficinas de 10 pisos. Hasta este punto hay muchas opciones para elegir. Lo que se hace es seleccionar los criterios más adecuados. Por ejemplo, un criterio podría ser que el flujo de personas a las oficinas sea lo más fluido posible, para evitar demoras. Esto implicaría un análisis de la manera cómo debería comportarse el sistema. Habría que analizar por ejemplo, cómo es el flujo de personas, si en general se dirigen solamente de la planta baja a una oficina en particular, o hay un desplazamiento entre oficinas, etc. Por ejemplo, si convendría que cada ascensor recorriera todos los pisos o estuviese dedicado a ciertos pisos en particular. Si el botón de llamada de cada piso sería único para los dos ascensores o habría uno para cada ascensor. Si al llamar al ascensor se especificaría la dirección (Ascenso/Descenso) o no, etc. También habría que definir cómo se comportaría cada ascensor, cuáles serán las reglas que gobernarían su comportamiento, si el comportamiento de los ascensores sería independiente o estarían relacionados, etc. En esta etapa se pueden aplicar conocimientos de otras áreas de la ingeniería, más allá de los Sistemas Lógicos propiamente dichos. Una vez concluida esta etapa se tiene un PROBLEMA CERRADO para encarar la etapa del Diseño Lógico. La etapa de DISEÑO LÓGICO trabaja únicamente con la relación entre las señales lógicas de entrada y las señales lógicas de salida. Si las señales lógicas de salida dependen solamente del valor de las señales lógicas de entrada en cualquier ó todo momento en cual se analice, el sistema a diseñar será de tipo Combinacional o Combinatorio, constituyendo lo que denominaremos DISEÑO LÓGICO COMBINACIONAL. Si las señales lógicas de salida dependen del valor de las señales lógicas de entrada en ese mismo momento y de las secuencias anteriores de entradas, el sistema a diseñar será de tipo Secuencial y será un sistema con memoria. Dicho de otra manera, las salidas dependerán de las entradas y del estado interno del sistema. A este tipo de diseño lo denominaremos DISEÑO LÓGICO SECUENCIAL. Luego de la etapa de Diseño Lógico propiamente dicha, resta la integración con el mundo físico (por ejemplo, una señal lógica puede comandar una etapa de potencia para controlar dispositivos, etc.). En esta etapa, se trabaja con las INTERFASES DE ENTRADA Y SALIDA. Ahora nos centraremos en la etapa de DISEÑO LÓGICO propiamente dicha. En el proceso general de Diseño de un Sistema Lógico, se pueden identificar las siguientes ETAPAS: Etapa 1: ESPECIFICACIÓN. Es de donde se parte. Consiste en una descripción del comportamiento lógico deseado en lenguaje natural. Si el problema a resolver está mal especificado puede no ser resoluble o el resultado no ser el que en realidad se esperaba. Un problema está mal especificado cuando a partir de un proceso de diseño sin errores se llega a un resultado diferente al esperado. Etapa 2: MODELIZACIÓN Es un proceso de formalización que permite construir una Representación Formal del comportamiento en algún lenguaje formal apropiado, constituyendo un Modelo del Sistema. Existen distintos tipos de modelos del comportamiento de un sistema. En correspondencia con esto, también existen diversas Metodologías de Diseño. Etapa 3: OPTIMIZACIÓN (opcional) Habitualmente se busca optimizar la representación formal, según algún tipo de criterio (costo, rapidez, confiabilidad, etc.). De esta manera se puede obtener un Modelo Optimizado según el criterio adoptado. En realidad la optimización no es independiente de la tecnología que se adoptará para su implementación. Por ejemplo, si el sistema es combinacional y se implementará con compuertas lógicas y se aplica el criterio de Karnaugh, el modelo optimizado será la expresión algebraica mínima según dicho criterio. En cambio, si se implementará mediante un multiplexor, el criterio puede ser disminuir el número de canales necesarios, y el modelo optimizado puede ser una manipulación del mapa de Karnaugh asociado a la Tabla de Verdad, para ver cómo conviene utilizar las variables en el multiplexor, ya que no se utiliza la expresión algebraica para este tipo de implementación. El propio criterio de optimización puede servir para seleccionar la tecnología de implementación más apropiada para un caso en particular. Etapa 4: SÍNTESIS En esta etapa se parte del Modelo Optimizado y se realiza la implementación física (circuito lógico). PROCESO COMPLETO DE DISEÑO LÓGICO Comportamiento Lógico (lenguaje natural) (Especificación) Modelización Representación Formal (Modelo) Optimización Representación Formal Optimizada (Modelo Optimizado) Síntesis Implementación Física (Circuito Lógico) En ocasiones se requiere realizar sólo alguno de las etapas marcadas, sin partir de la especificación y/o sin llegar a la implementación física, de cualquier manera se las reconoce como tareas de Diseño1. 1 Cabe mencionar que los profesionales suelen tener que recorrer las etapas anteriores, pero en sentido contrario al indicado por las flechas. Partiendo de un dispositivo físico para terminar “interpretando” el comportamiento del mismo, incluso en algunos casos se busca reestablecer una “Especificación”, por ejemplo cuando se requiere perfeccionar la documentación asociada a un equipo en funcionamiento. Las tareas realizadas en este sentido, aún cuando recorren sólo una parcialidad de las etapas, se denominan de Análisis. DISEÑO LÓGICO COMBINACIONAL En este tipo de Diseño pueden diferenciarse tres tipos de METODOLOGÍAS DE DISEÑO: 1. Modelización Algebraica Directa 2. Diseño mediante Interconexión de Bloques Funcionales 3. Diseño Tabular MODELIZACIÓN ALGEBRAICA DIRECTA En este tipo de metodología de diseño, se escribe directamente la expresión algebraica que representa el comportamiento lógico esperado. Este método suele utilizarse cuando se deben expresar comportamientos sencillos, generalmente controlados por pocas variables o una relación simple de un grupo grande de variables, por ejemplo el producto booleano de todas ellas. Por ejemplo, al modelizar Sistemas Secuenciales con Redes de Petri, las Condiciones Lógicas de disparo de cada transición está constituida por una expresión algebraica (combinacional), muchas veces de algunas de las variables de entrada. Estas expresiones suelen escribirse de manera directa (sin aplicar metodologías sistemáticas como por ejemplo establecer un comportamiento en forma explícita planteando la tabla de verdad respectiva). DISEÑO MEDIANTE INTERCONEXIÓN DE BLOQUES FUNCIONALES Esta metodología es muy apropiada en ciertos tipos de problemas. En general cuando el comportamiento global del sistema se puede subdividir en varios comportamientos parciales en relación a grupos parciales o subconjuntos de variables, datos o señales. Particularmente si estos subcomportamientos se repiten entre los distintos subconjuntos mencionados. El interés en esta metodología aumenta en los caso de sistemas que deben manejar una gran cantidad de variables que se presten a la subdivisión en grupos, con subcomportamientos congruentes o semejantes. Por ejemplo, en los circuitos aritméticos se puede partir de bloques funcionales conocidos integrando los circuitos por interconexión de eso bloques. Por ejemplo, con 4 Sumadores Totales Binarios de 4 bits se puede armar un Sumador Binario de 16 bits de manera muy sencilla. Si en este caso se pretendiese hacer una tabla de verdad, dado que entran dos números binarios de 16 bits cada uno, la misma tendría 232 filas, lo cual hace la metodología impracticable. Y por otra parte, aunque fuese posible representarlo, el costo del circuito resultante sería elevadísimo, ya que cada sumador tendría un circuito totalmente diferente dependiente del número de bits del mismo. En cambio, al trabajar con bloques funcionales estándar (de bajo costo) el proceso de diseño es muy simple y el costo muy reducido. DISEÑO TABULAR (mediante Tablas de Verdad) Cuando la complejidad del comportamiento pretendido dificulta escribir la expresión algebraica de manera directa y no se localizan bloques funcionales apropiados que permitan hacer el diseño mediante su interconexión, lo que se hace es utilizar la Tabla de Verdad del sistema para el diseño. Podríamos especificar las siguientes fases de este proceso, a partir de la especificación del comportamiento: 1. Diagrama de E/S (con Diccionario con el significado físico de los valores lógicos de las señales de entrada y de salida) 2. Armado De la Tabla de Verdad a partir del comportamiento deseado. 3. Optimización y síntesis (depende de la tecnología de implementación), por ejemplo: a. Implementación con memorias PROM: se usa la Tabla para cargar los registros de la PROM. No se optimiza. b. Implementación con Multiplexores: se transcribe la Tabla en un Mapa de Karnaugh y se manipulan las variables para disminuir el número de canales necesarios del multiplexor (no se saca la expresión algebraica) c. Implementación con Decodificadores o Demultiplexores: se transcribe la Tabla en un Mapa de Karnaugh y se manipulan las variables para poder implementarlo con un Decodificador más pequeño (no se saca la expresión algebraica) d. Implementación con Compuertas lógicas, en circuitos con lógica de dos niveles: se transcribe la Tabla en un Mapa de Karnaugh y se aplica el criterio de Karnaugh para obtener la expresión mínima según ese criterio, de manera de obtener el menor número de términos con el menor número de variables por término. SISTEMAS MULTIFUNCIÓN Cuando un sistema lógico tiene más de una salida lo denominaremos Sistema Multifunción. En este caso, la Tabla de Verdad en vez de tener una columna para la salida, tendrá tantas columnas como salidas marque su diagrama de entradas y salidas. Si la síntesis se pretende hacer usando la metodología de los Mapas de Karnaugh, será necesario disponer un mapa para cada función, estableciendo la correspondencia con cada variable de salida y su respectivo Mapa de Karnaugh. Es decir, si el sistema tiene N salidas, la tabla de Verdad tendrá N columnas del lado derecho y habrá asociados N Mapas de Karnaugh (uno por cada salida). SISTEMAS NO TOTALMENTE ESPECIFICADOS Cuando un grupo de combinaciones de entradas son imposibles, no hay que especificar el valor de las salidas para dichas combinaciones de entradas, de manera que el sistema será NO TOTALMENTE ESPECIFICADO, dando origen a un conjunto de REDUNDANCIAS de salida. Es decir, habrá ciertas combinaciones de entradas que no tendrán asociada una salida definida, ya que esas combinaciones de entrada nunca se van a presentar. Las redundancias se simbolizan con alguno de estos símbolos: - ,X,Φ En realidad, para poder sintetizar el circuito lógico se deben definir valores concretos para las salidas indefinidas, ya que todo circuito SIEMPRE tiene TODAS las salidas definidas (0 o 1). Lo que habitualmente se hace es valorar cada una de las redundancias por separado, asignándole un valor, aprovechando esta posibilidad para que produzca alguna conveniencia, generalmente tecnológica en la implementación. Por ejemplo si se está implementando un circuito a partir de un Mapa de Karnaugh con redundancias, se valorará a cada una de ellas, con el valor que produzca la cubertura más conveniente, extendiendo en lo posible los implicantes primos tomados en la cubertura. Logrando de esta manera que la expresión algebraica sea la mínima posible según el criterio de Karnaugh. DIAGRAMAS TEMPORALES Para ensayar un Circuito Lógico ya implementado como un dispositivo físico, deberíamos someterlo a todas las combinaciones posibles de los valores de las entradas e ir registrando los valores producidos en la salida. Teóricamente sería adecuado realizar un ensayo que evalúe todas las combinaciones en forma simultánea, pero eso en la realidad resulta totalmente imposible. En contrapartida resulta simple generar todas las combinaciones de los valores de entradas no simultáneamente si no organizadas en una secuencia y a medida que van pasando una a una las combinaciones ir registrando los valores que se producen en la salida (los Generadores de ondas proporcionan estas secuencias). Debemos tener muy presente que en los sistemas Combinatorios Esencialmente, no tiene NINGUNA importancia la duración en el cual se está sometiendo al circuito a una combinación en particular de las entradas, para constatar su salida. Tampoco tendría NINGUNA importancia el orden en el cual aparece cada una de las combinaciones, en relación a las anteriores. La propuesta de ensayo basadas en un generador de ondas normal (que hace evolucionar las combinaciones de valores en un orden preestablecido y mantiene cada de ellas un lapso también preestablecido, generalmente constante) no contempla para nada estas CONDICIONES ESENCIALES de los Sistemas combinatorios. Por lo cual se debe enfatizar que el conjunto de valores de salida es totalmente independiente de ambas restricciones impuestas por el método de ensayo. Los valores surgidos del uso de este dispositivo frecuentemente se grafican, incluso suelen aparecer en pantallas de los mismos aparatos de ensayo, estableciendo los llamados “Diagramas Temporales”. El nombre mismo de esta representación habla del divorcio entre la representación y lo que se quiere representar. Claramente parece inadecuado llamar “Temporal” algún atributo de sistemas que esencialmente NO DEPENDEN del TIEMPO. De cualquier manera la sencillez del ensayo ha popularizado este tipo de gráficos, aún para Sistemas Combinatorios, que por cierto no es una representación adecuada del comportamiento. Supongamos la función lógica F(A,B,C)=∑ mi (1,3,6)=A´B´C+ A´B C + A B C´. 3 Dadas una serie de combinaciones de entradas como las indicadas, podría graficarse: A t B t C t ABC F 000 001 010 011 100 101 110 111 000 (combinación de entradas) t Este Diagrama Temporal podría aparecer en un simulador. No hay que confundir esta representación temporal con una representación equivalente a la tabla de verdad del sistema. Cabe aclarar que un Diagrama Temporal idéntico a éste podría corresponder a un Sistema Secuencial donde no se puso de manifiesto este hecho. En ese caso podría ocurrir que alguna secuencia posterior produjese una salida diferente para la misma combinación de entradas. Es decir, esta representación sirve a modo de verificación del comportamiento del sistema, pero no es una representación completa del comportamiento del sistema. PRÁCTICA de Modelización Algebraica Directa ENUNCIADOS En todos los problemas, escribir de manera directa la/s expresión/es algebraica/s de la/s salida/s. Problema N° 1: La salida Alarma debe activarse (A=1) cuando esté la alarma Habilitada (H=1) y se produce alguna de estas situaciones: Ventana abierta (V=1) o Puerta abierta (P=1). Problema N° 2: Un DEMULTIPLEXOR de 2 canales (C0, C1), una entrada de selección (S) y una entrada de habilitación (H) debe generar una salida (Z), cuyo valor coincida con el valor del respectivo canal de entrada: S = 0 Z = C0 S = 1 Z = C1 cuando el DEMUX esté habilitado (H=1) o que sea Z=0 cuando el DEMUX esté inhabilitado (H=0). Problema N° 3: Un TANQUE DE AGUA cuenta con 3 sensores de nivel (N1, N2 y N3), una llave selectora (M) y una bomba (B) para su llenado, con los siguientes significados físicos de sus valores lógicos: N1 = 1 nivel por debajo del valor mínimo N2 = 1 nivel igual o por encima del valor intermedio N3 = 1 nivel por debajo del valor máximo M = 1 Modo Manual M = 1 Modo Automático B = 1 bomba encendida A = 1 luz de alarma encendida Escribir de manera directa: a) La expresión algebraica de la función que maneja la bomba de agua (B), de manera que esté encendida si está en Modo Manual y el nivel por debajo del máximo, o si está en Modo Automático y el nivel por debajo del valor intermedio. b) La expresión algebraica de la función que maneja la luz de alarma (A), de manera que esté encendida si el nivel está por debajo del mínimo cuando está en Modo Automático. Problema N° 4: Un SILO DE GRANOS cuenta con sensores de temperatura y de humedad y con una llave selectora de programa, con los siguientes significados físicos de sus valores lógicos: T1=1 temperatura del silo ≤ admisible T2=1 temperatura del silo ≤ temperatura ambiente H1=1 humedad del silo ≥ admisible H2=1 humedad ambiente ≥ 90% P=1 programa manual P=0 programa automático Escribir de manera directa directa, la expresión algebraica de la función que maneja el ventilador (V), si se espera el siguiente comportamiento del mismo: Estará encendido (V=1) si la temperatura del silo es mayor a la admisible o mayor a la temperatura ambiente, en ambos casos, con una humedad ambiente < 90%, o si la humedad del silo es mayor o igual a la admisible en cualquier caso. Todo esto, siempre y cuando esté seleccionado el programa automático. En caso de estar seleccionado el programa manual, debe permanecer encendido permanentemente. SOLUCIONES A LOS PROBLEMAS Problema N° 1: A = H. (V+P) Problema N° 2: Z = (S´.C0+S.C1). H Problema N° 3: a) B = M.N3 + M´.N2´ b) A = N1.M´ Problema N° 4: V = [(T1´+T2´).H2´+H1]. P´+ P Se puede observar que en realidad no es necesario multiplicar el [ ] por P´ ya que si fuese P=1 el otro término forzaría que sea V=1. Esto que puede razonarse intuitivamente, podría haberse deducido aplicando el teorema del Álgebra de Boole: P + P´. X = P + X , quedando: V = (T1´+T2´).H2´+ H1 + P PRÁCTICA de Diseño mediante Interconexión de Bloques Funcionales ENUNCIADOS Diseñar los siguientes circuitos, mediante interconexión de bloques funcionales (en este caso los bloques funcionales serían las compuertas lógicas): Problema 1: Para generar un Código de Paridad, se agrega un Bit de Paridad (Bp) de manera que el nuevo código tenga un nùmero de unos siempre Par (Código de Paridad PAR) o siempre Impar (código de Paridad IMPAR). Estos son Códigos Detectores de Errores de 1 bit, ya que si en el proceso de transmisión un bit llegara cambiado esto afectaría la paridad y el error sería detectado. Se pide diseñar un Generador de Paridad. I3 I2 I1 I0 a) Generador de Paridad PAR b) Generador de Paridad IMPAR Generador de Paridad I3 I2 I1 I0 Bp Problema 2: Se pide diseñar un Comparador de Palabras de 2 bits (A = A1A0, B = B1B0). A1 A0 B1 B0 Si A>B MA=1 Si B>A MB=1 Si A=B I=1 Comparador de Palabras MA MB I Problema 3: Se pide diseñar un Detector de Paridad. Al recibirse el código (4 bits de Información y 1 bit de Paridad), se genera una salida P=1 si la paridad es la esperada. I3 I2 I1 I0 Detector de Paridad a) PAR: P=1 si la Paridad es PAR b) IMPAR: P=1 si la Paridad es IMPAR Generador de Paridad P Problema 4: Diseñar un Inversor Controlado de 4 bits: E3 E2 E1 E0 Inversor Controlado C Si C=1 Sn=E´ (invierte) Si C=0 Sn=E (no invierte) S3 S2 S1 S0 PRÁCTICA de Diseño Tabular (mediante Tablas de Verdad) ENUNCIADOS En todos los problemas se pide hacer el diagrama de E/S con diccionario, la Tabla de Verdad, los mapas de Karnaugh y las ecuaciones mínimas e implementar circuitalmente con compuertas lógicas. Problema 1: Diseñar un Circuito de Mayoría, con 3 entradas y 1 salida, la cual debe ponerse en alto cuando haya mayoría de “1´s” a su entrada. Problema 2: Diseñar un conversor de código Binario de 4 bits a código Gray. B3 B2 B1 B0 Binario / Gray G3 G2 G1 G0 Problema 3: Diseñar un conversor de código BCD (decimal codificado en binario) a 7 segmentos, para excitar un display. B3 B2 B1 B0 a f g b e d c BCD / 7 seg a b c Problema 4: Diseñar un conversor de código Binario de 4 bits a código BCD. A3 B3 B2 B1 B0 A2 A1 A0 C3 C2 C1 C0 d e f g Problema 5: Diseñar un conversor de código BCD de 2 dígitos decimales a código Binario. Problema 6: Diseñar un dispositivo integrado por 4 teclas y 2 lámparas indicadoras, al cual llega la señal de un Reloj (R), de manera que: T 3 T 2 T 1 T0 R La lámpara intermitente (LI) se enciende y apaga a la frecuencia del reloj cuando: t • No se pulsa ninguna tecla • Se pulsa sólo una tecla • Se pulsan sólo T2 y T0 La lámpara fija (LF) se enciende cuando no se cumple ninguna LI LF de las condiciones anteriores. Problema 7: Diseñar un Multiplicador binario de dos números de 2 bits: A1 A0 B1 B0 Multiplicador C3 C2 C1 C0 Problema 8: Para controlar el llenado de un tanque de agua se dispone de 2 sensores ubicados a distintos niveles (N1 inferior, N2 superior). Éstos presentan un nivel lógico “1” a su salida cuando les toca el agua. Para el llenado del tanque se dispone de 2 bombas A y B, y hay una válvula de consumo cuya posición también es sensada (V=1 válvula abierta). El llenado del tanque debe hacerse de la siguiente manera: • Si el nivel del agua está por debajo de los dos sensores, deben funcionar ambas bombas. • Si el nivel del agua está entre sensores y la válvula está abierta, deben funcionar ambas bombas. • Si el nivel del agua está entre sensores y la válvula está cerrada, sólo debe funcionar la bomba A. • Si el nivel llega al sensor superior (tanque lleno), deben estar ambas bombas apagadas. Problema 9: A un sistema ingresa un código de 4 bits que nunca puede contener más de 3 bits en “1”. El sistema debe encender una lámpara L1 cuando el número de variables de entrada en “1” sea superior al número de variables de entrada en “0” y encender una lámpara L2 cuando sean iguales. C3 L2 C2 C1 C0 L1 Problema 10: Un codificador de posición de eje proporciona una señal de 4 bits que indica la posición de un eje en pasos de 30º usando un código reflejado (Gray), como se indica en la tabla siguiente. Se puede suponer que las 4 combinaciones posibles de 4 bits no usados, no se producirán jamás. Se desea diseñar un sistema que dadas estas señales, genere una señal S que sea “1” siempre que el eje se encuentre dentro del primer cuadrante (0º - 89º) Al resolver el problema, respetar la definición de Tabla de Verdad en cuanto a la manera de estructurarla. Posición del eje 0º - 29º 30º - 59º 60º - 89º 90º - 119º 120º - 149º 150º - 179º 180º - 209º 210º - 239º 240º - 269º 270º - 299º 300º - 329º 330º - 359º E1 0 0 0 0 0 0 1 1 1 1 1 1 Salida del Codificador E2 E3 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 E4 1 0 0 1 1 0 0 1 1 0 0 1 Problema 11: Un blanco de tiro con arco y flecha está formado por 8 bandas concéntricas asignándosele a la banda central el valor “10” y en orden decreciente lleva el valor “3” la exterior. La información de en qué banda se produjo el impacto se obtiene a partir de 4 señales ( I, P, C, E ) que el dispositivo sensor entrega al sistema a diseñar ( ∑ ). I D3 (MSB) 10 9 8 7 6 5 4 3 P D2 ∑ C D1 E D0 (LSB) Señales I=1 P=1 C=E=0 C=0 , E=1 C=1 , E=0 C=E=1 SIGNIFICADO Flecha impacta en una banda IMPAR Flecha impacta en una banda PAR Flecha impacta en la banda 3 o 4 Flecha impacta en la banda 5 o 6 Flecha impacta en la banda 7 u 8 Flecha impacta en la banda 9 o 10 El sistema a diseñar ( ∑) debe indicar en BINARIO, el número de banda en la cual hizo impacto la flecha (siendo D3 el bit más significativo -MSB- , y D0 el bit menos significativo -LSB- ). En caso que no se haya hecho blanco la indicación debe ser “cero” y además debe ser N=1.