Subsistemas combinacionales Subsistema: todo circuito integrado cuya complejidad supere al de una simple puerta lógica se considera como subsistema. • Un subsistema puede verse como una caja negra con múltiples entradas y salidas: Subsistema combinacional n m • Las líneas de entrada y salida pueden clasificarse en: • de datos: llevan la información original o procesada por el subsistema • de control: indican al subsistema qué operación realizar o permiten al subsistema indicar al usuario el estado resultante de la operación • La característica fundamental de un subsistema es su capacidad de reutilización. Líneas de control. ENABLE • Las líneas de control pueden ser, según su nivel de activación: • activas a nivel alto o “activas en alta”: nivel de activación = ‘1’ • activas a nivel bajo o “activas en baja”: nivel de activación = ‘0’ Entrada activa en baja Salida activa en alta Entrada activa en alta n Subsistema combinacional Salida activa en baja m • Una de las entradas de control más comunes es Enable (“habilitación”): • Enable activo: el subsistema opera normalmente • Enable inactivo: el subsistema entra en un estado de reposo Entradas E Salidas Entradas E Salidas 1 Clasificación de los subsistemas • Los subsistemas pueden clasificarse del siguiente modo: • Subsistemas de propósito general: son aquellos que permiten implementar cualquier función lógica • Subsistemas de propósito específico: son aquellos que no pueden, por sí solos, implementar cualquier función lógica • de propósito general: • Multiplexores • ROMs • PLDs (PALs y PLAs) • de propósito específico: • Decodificadores • Codificadores • Convertidores de código • Comparadores de magnitud • Demultiplexores Subsistemas de propósito específico Decodificadores • Estructura: • n entradas de datos • m salidas de datos, con m ≤ 2n, activas en alta o baja • Denominación: DECn : m, DECn a m • Propósito: generar m mintérminos (salidas activas en alta) o m maxtérminos (salidas activas en baja) asociados a las n entradas (por tanto, tan sólo puede haber una salida activa al tiempo) • Símbolo, tabla de verdad y ecuaciones de salida: A1 1 A0 0 _ _ O0= A1 A0 0 1 2 3 O0 O1 O2 O3 _ O1= A1 A0 A1 A0 O0 O1 O2 O3 0 0 1 1 1 0 0 0 0 1 0 1 _ O2= A1 A0 0 1 0 0 0 0 1 0 0 0 0 1 O3= A1 A0 2 Subsistemas de propósito específico Decodificadores (2) A1 1 A0 0 A1 1 A0 0 0 1 2 3 O0 O1 O2 O3 0 1 2 3 O0 O1 O2 O3 A1 A0 O0 O1 O2 O3 0 0 1 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 A1 A0 O0 O1 O2 O3 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 _ _ O0= A1 A0 _ O1= A1 A0 _ O2= A1 A0 O3= A1 A0 O0= A1+A0 _ O1= A1+A0 _ O2= A1+A0 _ _ O3= A1+A0 Decodificadores (3) Subsistemas de propósito específico A1 A0 A1 A0 E 0 1 2 0 3 O0 O1 O2 O3 E 0 1 1 2 0 3 O0 O1 O2 O3 1 E A1 A0 O0 O1 O2 O3 0 1 1 1 1 0 1 0 0 0 X 0 0 1 1 X 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 E A1 A0 O0 O1 O2 O3 1 0 0 0 0 1 0 1 1 1 X 0 0 1 1 X 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 _ _ O0= E A1 A0 _ O1= E A1 A0 _ O2= E A1 A0 O3= E A1 A0 O0= E+A1+A0 _ O1= E+A1+A0 _ O2= E+A1+A0 _ _ O3= E+A1+A0 3 Subsistemas de propósito específico Subsistemas de propósito específico Decodificadores (4): 74AS138 Decodificadores (5): 74AS138 4 Decodificadores (6): asociación Subsistemas de propósito específico E E 0 1 2 0 3 DEC2:4 1 A2 A1 E 0 1 2 0 3 DEC2:4 O0 O1 O2 O3 E 0 1 2 0 3 DEC2:4 O4 O5 O6 O7 1 1 A0 DEC3:8 Subsistemas de propósito específico Codificadores • Estructura: • m entradas de datos, activas en alta o baja • n salidas de datos, activas en alta o baja • Propósito: proporcionan un código de salida (binario, gray, etc.) asociado a la entrada activa (que sólo puede ser una al tiempo) • Si m = 2n, el codificador se dice que es completo • Símbolo, tabla de verdad y ecuaciones de salida (codificador binario): I0 I1 I2 I3 O1 O0 0 I0 O1 1 O0= I1+I3 1 I1 1 0 0 0 0 0 0 1 0 0 0 1 I2 O0 2 O1= I2+I3 0 0 0 1 0 1 0 3 I3 0 0 0 1 1 1 • Símbolo, tabla de verdad y ecuaciones de salida (codificador gray): I0 I1 I2 I3 O1 O0 0 I0 O1 1 O0= I1+I2 1 I1 1 0 0 0 0 0 0 1 0 0 0 1 I2 O0 2 O1= I2+I3 0 0 0 1 0 1 1 3 gray I3 0 0 0 1 1 0 5 Codificadores (2): codificador de prioridad Subsistemas de propósito específico • Permite que haya más de una entrada activa simultáneamente: I0 I1 I2 I3 0 1 2 3 E 1 O1 0 O0 I0 I1 I2 I3 E O1 O0 1 x x x 0 0 1 x x 0 0 0 1 x 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 ____ E= I0 I1 I2 I3 O1= I2+I3 _ O0= I1 I2+I3 • Codificador de prioridad 74LS148 Convertidores de código Subsistemas de propósito específico • Propósito: transforman una palabra de un código a una palabra de otro código, por ejemplo: • de código binario a gray o viceversa • de código BCD a 7-segmentos • Tabla de verdad y circuito para un convertidor binario a gray de 2 bits: Con subsistemas DEC2:4 A1 A0 0 0 1 1 0 1 0 1 O1 O0 0 0 1 1 0 1 1 0 A1 1 A0 0 0 1 2 3 0 1 2 3 1 O1 0 O0 gray O1 A1 A0 & ≥1 & O0 Con puertas 6 Convertidores de código (2) • Tabla de verdad y símbolo para un convertidor BCD a 7-segmentos: Subsistemas de propósito específico b3 b2 b1 b0 BCD-7seg b3 b2 b1 b0 a b c d e f g 0 0 0 0 0 0 0 0 1 1 a f g e b c d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 a b c d e f g 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 Subsistemas de propósito específico Comparadores de magnitud • Estructura: • Entradas: dos números de n bits cada uno (An-1,0, Bn-1,0) • Entradas: 3 líneas para conexión en cascada G0, E0, L0 • Salidas: resultados de la comparación G (A>B), E (A=B), L (A<B) activas en alta • Operación (tabla resumida): • Símbolo (n=4 bits): a3 a2 a1 a0 G0 E0 L0 b3 b2 b1 b0 A A>B A=B A<B B G E L A B G E L A>B A=B A<B 1 0 0 G0 E0 L0 0 0 1 • Operación normal (tabla resumida): A B G E L A>B A=B A<B 1 0 0 0 1 0 0 0 1 luego (G0, E0, L0) = (0, 1, 0) 7 Comparadores de magnitud (2) Subsistemas de propósito específico • Tabla completa (74LS85): Comparadores de magnitud (3) Subsistemas de propósito específico • Expansión mediante conexión en cascada: permite la comparación de números de más bits a3 a2 a1 a0 b3 b2 b1 b0 A 0 1 0 G0 E0 L0 B A>B G A=B E A<B L a7 a6 a5 a4 b7 b6 b5 b4 A G0 E0 L0 B A>B G A=B E A<B L a11 a10 a9 a8 b11 b10 b9 b8 A G0 E0 L0 A>B G A=B E A<B L B 8 Subsistemas de propósito específico Demultiplexores • Estructura: • Entradas: n líneas de selección de canal (An-1, ..., A0) • Entrada: 1 línea de datos (E) • Salidas: m(=2n) líneas de datos (“canales”, Om-1, ..., O0) • Denominación: DEMUX1 : m, con m = número de canales (2n) • Propósito: transfiere el valor presente en la entrada E al canal de salida indicado por las líneas de selección • Símil mecánico: • Símbolo: 3 2 1 0 E 1 0 3 2 1 0 O3 O2 E O1 O0 1 0 • Tabla de verdad: O3 O2 O1 O0 A1 A0 A1 A0 E A1 A0 O0 O1 O2 O3 0 1 1 1 1 0 1 0 0 0 X 0 0 1 1 X 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 Subsistemas de propósito general Multiplexores • Estructura: • Entradas: m(=2n) líneas de datos (“canales”, dm-1, ..., d0) • Entradas: n líneas de selección de canal (An-1, ..., A0) • Salida: 1 línea de datos (z) • Denominación: MUXm : 1, con m = número de canales (2n) • Propósito: transfiere el valor presente en el canal indicado por las líneas de selección a la salida z (función inversa a la del demultiplexor) • Símil mecánico: • Símbolo: d0 d1 d2 d3 0 1 2 3 1 0 A1 A0 z d0 d1 d2 d3 0 1 2 3 1 0 • Tabla de verdad (resumida): z A1 A0 z 0 0 1 1 d0 d1 d2 d3 0 1 0 1 A1 A0 9 Subsistemas de propósito general Multiplexores (2) A1 A0 z 0 0 1 1 d0 d1 d2 d3 0 1 0 1 _ _ _ _ z = A1 A0 d0 + A1 A0 d1 + A1 A0 d2 + A1 A0 d3 _ _ _ _ f = x1 x0 f(0) + x1 x0 f(1) + x1 x0 f(2) + x1 x0 f(3) (Teorema de expansión) • Por esta propiedad, el multiplexor puede usarse como generador de funciones lógicas: basta hacer Ai = xi y dk = f(k) • Ejemplo: implementar 0 1 f(x, y, z) = Σ(0, 4, 5, 7) 1 0 con un MUX8:1 2 0 (el número de variables 3 0 f coincide con el número 4 1 de entradas de 5 1 6 0 selección en el MUX) 7 2 1 0 1 x y z Multiplexores (3) Subsistemas de propósito general • Si el número de variables es superior al número de entradas de selección en el MUX, la implementación se realiza extrayendo los residuos de f • Ejemplo: implementar f(x, y, z) = Σ(0, 4, 5, 7) con MUX4:1 f(0,0,z) f(0,1,z) f(1,0,z) f(1,1,z) 0 1 2 3 f(0, 1, z)=0 z y 00 0 f 01 11 1 1 0 1 2 3 f(1, 1, z)=z x y 1 0 x _ z 0 1 z f _ f(0, 0, z)=z 10 1 1 1 f(x, y, z) f(1, 0, z)=1 1 0 x y 10 Multiplexores (4): asociación z(0, 0, 0) Subsistemas de propósito general z(0, 0, 1) z(0, 1, 0) z(0, 1, 1) z(1, 0, 0) z(1, 0, 1) z(1, 1, 0) z(1, 1, 1) d0 d1 0 1 d2 d3 0 1 d4 d5 0 1 d6 d7 0 1 z(0, 0, A0) 0 z(0, 1, A0) 0 z(1, 0, A0) 0 0 1 0 1 z(0, A1, A0) 0 0 0 1 z(A2, A1, A0) 0 z(1, A1, A0) z(1, 1, A0) 0 A0 A1 A2 Subsistemas de propósito general ROM (Read-Only Memory) • Estructura: • Entradas: n líneas de dirección (An-1, ..., A0) • Salidas: m líneas de datos (Dm-1, ..., D0) • Propósito: las ROMs son circuitos de memoria que permiten recuperar información programada previamente. Los datos se organizan a modo de tablas, presentando un total de 2n filas y teniendo cada fila m bits. • Denominación: ROM 2n x m (2n x m = capacidad de la ROM, en bits) • Organización: • Símbolo: A2 A1 A0 3 2 1 0 ROM8x4 2 1 0 D3 D2 D1 D0 A2 A1 A0 000 001 010 011 100 101 110 111 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 D3 D2 D1 D0 11 ROM (2) Subsistemas de propósito general • Circuito interno de una ROM 4x2 “virgen” (sin programar): A1 1 A0 0 0 1 2 3 ≥1 ≥1 D1 D0 • Una ROM genera funciones como suma de productos, donde los productos son fijos (proporcionados por el DEC) mientras las sumas (“plano OR”) son programables. ROM (3) Subsistemas de propósito general • Circuito interno de una ROM 4x2 programada: A1 1 A0 0 0 1 2 3 O0 0 0 O3 0 0 O2 O3 ≥1 ≥1 D1 D0 A1 A0 0 0 1 1 0 1 0 1 A1 1 A0 0 D1 D0 1 0 0 1 0 0 1 1 0 1 2 3 ≥1 ≥1 D1 D0 12 ROM (4) • Chip Select (CS): entrada de control que indica si las salidas deben estar activas o pasar a alta impedancia (HI) CS Subsistemas de propósito general La salida de alta impedancia (HI) se consigue con buffers triestado: X In Out Símil eléctrico: X Out A1 1 0 1 HI In A0 0 0 1 2 3 ≥1 ≥1 X In Out ROM4x2 D1 D0 ROM (5) Subsistemas de propósito general • Ejemplo: implementar f = Σ(1,3,5,7) y g = Σ(0,2,4,5) mediante ROM. • f y g tienen 3 variables de entrada => n=3 líneas de dirección • hay que generar 2 funciones => m=2 líneas de datos • Por tanto, es necesaria una ROM8x2 (2n x m) x y z 2 1 ROM 8x2 0 1 0 f g x y z 000 001 010 011 100 101 110 111 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 f g Tabla de verdad POS[$] CONT[$] 0 1 2 3 4 5 6 7 1 2 1 2 1 3 0 2 Tabla de contenido (hexadecimal) 13 ROM (6): asociación • Aumentando el ancho del bus de direcciones. Ejemplo: ROM16x4 a • Aumentando el ancho del bus de datos. Ejemplo: ROM8x4 a partir partir de 2 chips ROM8x2. ROM16x2 de 2 chips ROM8x2. ROM8x4 Subsistemas de propósito general CS A2 A1 A0 CS 2 1 ROM 8x2 0 1 0 CS 2 1 ROM 8x2 0 1 0 D3 D2 D1 D0 A2 A1 A0 CS 2 1 ROM 8x2 0 1 0 CS 2 1 ROM 8x2 0 1 0 D1 D0 • Aumentando el ancho del bus de datos y de direcciones: consiste en combinar las técnicas anteriores. PAL (Programmable Array Logic) • Estructura: • Entradas: n variables (In-1, ..., I0) • Salidas: m funciones (Om-1, ..., O0) • k términos producto por salida Subsistemas de propósito general 1 A3 • Propósito: las PALs son circuitos que generan funciones como suma de productos en las que los productos (“plano AND”) son programables mientras las sumas son fijas (al contrario que las ROMs). • Circuito interno (n=3 entradas, m=3 salidas, k=3 términos producto por salida): _ _ _ I2 I2 I1 I1 I0 I0 & & ≥1 O2 & k=3 I2 & & ≥1 O1 ≥1 O0 & I1 & & & I0 14 PAL (2) _ _ _ I 2 I2 I 1 I1 I 0 I0 & & ≥1 O2 Subsistemas de propósito general & _ _ _ I2 I2 I1 I1 I0 I0 I2 & I2 1 1 _ I1 I0 1 PAL (3) _ _ _ x x y yz z • Implementar en una PAL: f = Σ(0, 2, 4, 7) g = Σ(0, 1, 2, 6, 7) h = Σ(6, 7) z 00 01 1 1 0 11 10 1 1 1 f(x, y, z)=x’z’+xyz+xy’z’ x’z’ & xyz ≥1 & f xy’z’ No es necesario simplificar al máximo, tan sólo conseguir que la función quepa en la PAL & x’y’ & x’yz’ ≥1 & g xy y x y z & x x y Subsistemas de propósito general & _ I2 I1 I0 00 01 11 10 0 1 1 1 & 1 1 1 & xyz ≥1 & g(x, y, z)=x’y’+x’yz’+xy h(x, y, z)=xyz’+xyz xyz’ h 0 z 15 _ _ _ I0 I0 I1 I1 I2 I2 PAL (4) _ I3 I3 & • PAL con triestado y realimentación: • salidas invertidas: hay que implementar f’ (p.e., & & Subsistemas de propósito general • una salida puede realimentarse en el plano AND para implementar funciones más complejas (sumas de más de k términos producto) HI ≥1 I3 & I0 f’ = tp1+tp2+tp3+tp4+tp5) • si una salida está en alta impedancia, la línea puede usarse como entrada 0 & 1 & tp1 & tp2 & I1 & tp3 tp1+tp2+tp3 1 & tp1+tp2+tp3 & tp4 & I2 tp1+tp2+tp3 ≥1 f _ f ≥1 tp5 Subsistemas de propósito general PLA (Programmable Logic Array) • Estructura: • Entradas: n variables (In-1, ..., I0) • Salidas: m funciones (Om-1, ..., O0) • k términos producto • Propósito: las PLAs son circuitos que generan funciones como suma de productos en las que tanto los productos como las sumas (planos AND y OR) son programables. La ventaja principal es que los términos producto comunes a las diferentes salidas se implementan una sola vez. • Circuito interno (n=3 entradas, m=3 salidas, k=3 términos producto): • Ejemplo: & f(x, y, z)=x’+y g(x, y, z)=x’y+xz’ h(x, y, z)=xz’+x’+y & & & Términos producto: x’, y, x’y, xz’ & x’ & y & x’y & xz’ ≥1 ≥1 ≥1 ≥1 ≥1 ≥1 x y z f g h 16