Bloques Combinacionales 1. Comparadores 2. Sumadores y Semisumadores 3. Multiplexores Demultiplexores 4. Codificadores Decodificadores 5. Convertidores de código 6. Generadores /comprobadores de paridad 7. Memorias ROM y Dispositivos PLA 8. Buffer triestado
Circuitos combinacionales Cuando se conectan puertas lógicas entre sí, sin que haya almacenamiento, el circuito resultante se califica como combinacional.
Por qué módulos estándar? Cualquier sistema combinacional puede implementarse como un sistema de 2 niveles: AND-OR Teóricamente es posible implementar cualquier sistema recurriendo a este modelo sistemático Utilizar esto para sistemas complejos, es muy costoso en tiempo y a veces imposible de implementar una network de 2 niveles debido a propiedades inherentes en las puertas lógicas: FAN IN: define el máximo número de inputs que una puerta lógica puede aceptar FAN OUT: define el máximo número de inputs que la salida de una puerta lógica puede alimentar. Estos motivos hacen que los sistemas complejos se implemente de forma jerárquica o modular.
Comparadores Comparador Básico
Especificación de un comparador Especificación en alto nivel Codificación:
Especificación de un comparador Función: Ecuación:
Sumadores y Semisumadores Suma de dos números
Sumadores y Semisumadores Ecuación:
Sumadores y Semisumadores
Semisumador elemental El semisumador (half adder) es un circuito que suma dos bits de entrada a i y b i y devuelve un bit de resultado z i y un bit de acarreo c i.
Sumador completo El sumador completo (full adder) es un circuito que suma dos bits de entrada a i y b i más un acarreo de entrada c i-1 y devuelve un bit de resultado z i y un bit de acarreo c i
Sumador completo (full adder) BC in A 00 01 11 10 0 0 1 0 1 1 1 0 1 0 = = = C C ABC + ABC + ABC + ABC = ( AB + AB) + C( AB + AB) = ( A B) + C( A B) = ( A B) C BC in A 00 01 11 10 0 0 0 1 0 1 0 1 1 1 Cout = AB + ACin + Cout = = = AB + AB + Cin AB + Cin ABCin + ( AB + AB) ( A B) BCin ABCin = =
Sumador completo compuesto de semisumadores
Sumador en paralelo de 4 bits (nibble) Un sumador de 4 bits se implementa mediante 4 full adders. Dependiendo del método elegido para manejar los acarreos el sumador puede ser acarreo serie acarreo anticipado
Ejemplo de aplicación
Sumador paralelo con acarreo serie Se construye asociando n sumadores elementales completos (full adder) que reciben y procesan todos ellos los datos en paralelo, si bien el acarreo se propaga en serie de un sumador a otro (circuito lento)
Ejemplo de retardo acarreo serie El tiempo de retardo considerado es el tiempo de suma del caso peor
Sumador de acarreo anticipado
Sumador de acarreo anticipado El sumador Paralelo con Acarreo Anticipado (Look Ahead Carry, LAC) es muy rápido porque evita el overhead de propagación del acarreo a costa de una penalización en área. No se basa en las ecuaciones directas para C i+1 y S i, sino en dos funciones adicionales llamadas de generación (G i ) y de propagación (P i ), para cada bit i (i = 0, 1, 2 ) Generación de Acarreo: tiene lugar cuando el sumador completo genera internamente un acarreo de salida. Solo cuando ambos bits son 1 se genera acarreo G i = AiBi Propagación de Acarreo: tiene lugar cuando el acarreo de entrada se transmite como acarreo de salida. Solo cuando un de los bits de entrada es 1 se propaga el acarreo Pi Ai Bi =
Sumador de acarreo anticipado La limitación mas importante es que a medida que aumenta el número de etapas (bits), la ecuación de acarreos se hace más larga aumentando así la complejidad del sistema.
Sumador de acarreo anticipado
Sumador/restador binario para números de 4 bits en Ca2 Para números en complemento a 2, la substracción se implementa con el mismo hardware, negado el sustraendo; el 1 se suma poniendo a 1 el acarreo inicial
Generación del segundo operando
Sumador/restador de 16 bits en ca2
Sumador BCD Suma números codificados en BCD y genera otro BCD
Decodificadores
Decodificador de n entradas
Decodificador de 2 entradas
Decodificador 4 bits Salida Activa a nivel Bajo
Codificadores
Codificadores: Decimal-BCD
Convertidores de Código Los convertidores de código son circuitos lógicos combinacionales que permiten el paso de un código a otro.
Convertidores de Código
Conversor BCD a 7-segmentos
Conversor BCD a decimal Un decodificador BCD a decimal convierte el código BCD en uno de los 10 posibles dígitos decimales.
Multiplexor de 2 n entradas
Multiplexor de 2 a 1
Multiplexor de 2 a 1
Multiplexor de 2 a 1
Multiplexores 4 a 1 Y = D 0 S 1 S 0 + D 1 S 1 S 0 + D 2 S 1 S 0 + D 3 S 1 S 0
Multiplexor como generador de funciones lógicas Sirven para generar funciones lógicas combinacionales en forma de Suma de Productos
Demultiplexores (DEMUX)
Generadores y comprobadores de paridad
Generadores y comprobadores de paridad Paridad Par: Paridad Impar: PO = I0 I1 PE = ( PO)' = ( I0 I1)'
Memorias ROM Tipos de memoria: Mask-programmed ROM Los datos son permanentes Económicamente posible en grandes cantidades debido al alto coste del diseño EPROM (erasable programmable ROM) Se graba con un programador Se borra con luz ultravioleta EEPROM (electrically erasable PROM) Se borra con pulsos eléctricos Se pudee reprogramar 100 a 1000 veces Flash memoria Similar a EEPROM pero se puede escribir sin necesidad de programador
Líneas externas de una ROM Líneas de datos
Tabla de datos
Almacenamiento de la información
Estructura de una ROM
Estructura de una ROM
Bloques de una ROM
Programmable-Logic-Arrays (PLAs) Módulo combinacional que proporciona una implementación NOT-AND-OR para generación de funciones. Por niveles: NOT: provee la capacidad de complementar las distintas señales de input AND: provee la capacidad de generar los productos OR: provee la capacidad de generar las sumas Una PLA por lo tanto implementa sumas de productos Como en el caso de las ROMs la programación de una PLA puede hacerse durante el proceso de fabricación (mask-programmed PLA) o bien sobre el field (field-programmable PLA o FPLA)
Estructura de una PAL NOTA: Los puntos fuertes de la figura indican aquellas conexiones que han sido programadas para una determinada función
Buffer tri-estado http://www.cs.umd.edu/class/spring2003/cms c311/notes/comporg/tristate.html