ELO211: Sistemas Digitales Tomás Arredondo Vidal 1er Semestre – 2006 Este material está basado en: textos y material de apoyo: Contemporary Logic Design 1 st / 2 nd edition. Gaetano Borriello and Randy Katz. Prentice Hall, 1994, 2005 material del curso ELO211 del Prof. Leopoldo Silva material en el sitio http://es.wikipedia.org 7: Combinacionales 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
ELO211: Sistemas Digitales
Tomás Arredondo Vidal1er Semestre – 2006
Este material está basado en:
textos y material de apoyo: Contemporary Logic Design 1st / 2nd edition. Gaetano Borriello and Randy Katz. Prentice Hall, 1994, 2005
material del curso ELO211 del Prof. Leopoldo Silvamaterial en el sitio http://es.wikipedia.org
Cambios (rediseños) a estos diseños son difíciles de hacer
Hay que reconectar partes o puede necesitar mas componentesse diseñaba con compuertas extras en cada placa por si fuera necesario usarlas
Introducción: Bloques multi-uso
Hoy muy pocos de estas chips se utilizanPero, bibliotecas de estas compuertas se usan para diseñar nuevos chips
se reutilizan las compuertas ya caracterizadas las compuertas no existen en inventario se crean a medida que se van necesitando
Hoy se usan componentes de lógica programablese gana en flexibilidadtiempos mas cortos de diseñomas difícil de analizar en términos de compuertas especificasse analiza usando bloques multi-uso mas grandes
Se usan para conectar y rutearMuchos inputs a un output - multiplexorUn input a muchos outputs – demultiplexorSe pueden usan para conectar entre diferentes fuentes y destinos
A
B
Y
Z
Mux y demux (cont'd)
Uso de multiplexor/demultiplexor en conexiones multi-punto (como en este sumador)
MUX
A B
Sum
Ss
B0
MUX
DEMUX
B1A0 A1
S0 S1
Sa Sb múltiples fuentes de input
múltiple destinos de output
7: Combinacionales 7
Multiplexores
dos formas alternativaspara una tabla de verdad Mux 2:1
Multiplexores: concepto general2n data inputs, n inputs de control inputs, 1 outputse usan para conectar 2n puntos a un de punto salidapatrón de control binario indexa cual input se conecta al output
Decodificador/demultiplexor: concepto generalun input de datos, n inputs de control, 2n outputsinputs de control (llamado “selects” (S)) representan index binario de cual output se conecta el inputinput de datos típicamente se llama “enable” (G)
1:2 Decoder:O0 = G • S’O1 = G • S
3:8 Decoder: O0 = G • S2’ • S1’ • S0’O1 = G • S2’ • S1’ • S0O2 = G • S2’ • S1 • S0’O3 = G • S2’ • S1 • S0O4 = G • S2 • S1’ • S0’O5 = G • S2 • S1’ • S0O6 = G • S2 • S1 • S0’O7 = G • S2 • S1 • S0
2:4 Decoder: O0 = G • S1’ • S0’O1 = G • S1’ • S0O2 = G • S1 • S0’O3 = G • S1 • S0
7: Combinacionales 16
Implementación de demultiplexores
7: Combinacionales 17
active-high enable
active-low enable
active-high enable
active-low enable
O0G
S
O1
O0\G
S
O1
S1
O2
O3
O0G
O1
S0 S1
O2
O3
O0\G
O1
S0
decodificador 1:2
decodificador 2:4
Demultiplexores para implementar funciones
Un decoder n:2n puede implementar cualquier función de n variables
con las variables usadas como inputs de controllos inputs de enable conectados a 1los minterms sumados para formar la función
A'B'C'A'B'CA'BC'A'BCAB'C'AB'CABC'ABC
CA B
01234567
S2
3:8 DEC
S1 S0
“1”
demultiplexor genéra minterms apropiadosbasados en las señales de control ("decodifica" señales de control)
7: Combinacionales 18
Demultiplexores para implementar funciones
F1
F2
F3
F1 = A'BC'D + A'B'CD + ABCDF2 = ABC'D' + ABCF3 = (A' + B' + C' + D')
Antes de programarTodas las conexiones posibles están disponibles antes de “programar”
en realidad, todas las AND y ORs son NANDs
7: Combinacionales 24
Durante programación
7: Combinacionales 25
A B C
F1 F2 F3F0
AB
B'C
AC'
B'C'
A
Conexiones no deseadas se eliminanfuse (normalmente conectadas, se rompen esas no deseadas)anti-fuse (normalmente desconectadas, se hacen conexiones deseadas)
Representaciones alternativas
ejemplo:F0 = A B + A' B'F1 = C D' + C' D
AB+A'B'CD'+C'D
AB
A'B'
CD'
C'D
A B C D
Mas corta para no tener que dibujar todos los cable
significa conexión esta presente y señal perpendicular es input a una compuerta
7: Combinacionales 26
PLA: ejemplo
7: Combinacionales 27
A'B'C'
A'B'C
A'BC'
A'BC
AB'C'
AB'C
ABC'
ABC
A B C
F1 F2 F3 F4 F5F6
full decoder as for memory address
bits stored in memory
Múltiples funciones usando A, B, CF1 = A B CF2 = A + B + CF3 = A' B' C'F4 = A' + B' + C'F5 = A xor B xor CF6 = A xnor B xnor C
Programmable logic array (PLA)lo que hemos visto hasta ahoraarreglos AND y OR generales, sin restricciones
Programmable array logic (PAL)topología del arreglo OR es restringida (eg. 8, 4, 2 ORs, numero de inputs fijo para cada OR) plano de ORs es mas rápido y pequeñotodos los términos de los productos no se comparten entre los ouputs
Esto es mapeo de tecnologíamanipular funciones lógicas para poder usarrecursos disponibles
ABC
ABC’
A’C’
AB’
A’B
BC
B’C’
A B C
W X Y
7: Combinacionales 35
Read-only memories (ROM)
7: Combinacionales 36
decoder
0 n-1
Address
2 -1n
0
1 1 1 1
word[i] = 0011
word[j] = 1010
lineas de bits (normalmente subido a 1 a través de resistor – selectivamente conectado a zero por los switches controladospor las palabras)
j
i
líneas de palabras (solo unas es activa – decoder se usa por eso)
Arreglo bidimensional de 1s y 0sentrada (fila) se llama palabra ("word“)ancho de fila = word-sizeíndice es dirección ("address“)dirección es inputpalabra seleccionada es output
ROM: organizacion interna
ROMs y lógica combinacional
Implementando lógica combinacional con un ROM (forma canónica de dos niveles)
Estructura de ROMSimilar a PLA pero con un arreglo AND completamente decodificado
Arreglo OR completamente flexiblen address lines
• • •
inputs
decoder 2n wordlines
• • •
outputs
memoryarray
(2n wordsby m bits)
m data lines
7: Combinacionales 38
ROM vs. PLA
7: Combinacionales 39
ROM ventajoso cuandotiempo de diseño es corto (no hay que minimizar funciones de output)la mayoría de combinaciones de input se necesitan (e.g., conversores de código)no se comparten los productos
problemas ROMtamaño se duplica para cada input adicionalno se pueden utilizar don't cares
PLA ventajoso cuandohay herramientas para multi-output minimizaciónhay pocas combinaciones única de mintermsmuchos minterms son compartidos entre las funciones de output
problemas PALrestricciones de fan-ins en plano OR
Estructuras lógicas: ROM, PAL, PLA
7: Combinacionales 40
ROM – plano AND completo, plano OR generalbarato (componente de alto volumen)puede implementar cualquiera función de n inputsvelocidad media
PAL – plano AND programable, plano OR fijocosto intermediopuede implementar funciones con numero de términos limitadosalta velocidad (solo un plano programable)
PLA – planos AND y OR programmablesmas caro (complejo en diseño, herramientas mas sofisticadas)puede implementar cualquiera función has un limite de términoslento (dos planos programables)
Estructuras lógicas: ROM, PAL, PLA
Difícil lograr una estructura regular (celda o cell) para la conexión arbitraria para conexiones entre diferentes tipos de compuertas
requerimientos de eficiencia/velocidadfield programmable gate arrays (FPGAs) usan ese tipo de estructuras programables multi-nivel• multiplexores programables para conexiones• tablas de referencia para funciones lógicas• celdas multi-uso (utilización es lo importante)
Se pueden usar múltiples niveles de PALs/PLAs/ROMsoutput es resultado intermediose hace un input para ser usado en otra lógica
Dispositivos basados en arreglos bidimensionales de bloques lógicos y flip-flopsInterconexiones entre bloques, funciones lógicas y de control son programables usando HDLAlgunos tienen memoria y procesadores incorporadosAlgunos fabricantes proporcionan el código HDL de microprocesadores de 16 y 32 bits, unidades multiplicación y acumulación para implementar diferentes aplicaciones (e.g. filtros digitales)Diferentes opciones para los bloques lógicos incluyen: pares de transistores, compuertas NAND de dos entradas, compuertas AND y XOR, multiplexores y tablas de búsqueda 7: Combinacionales 43
FPGA (Field Programmable Gate Arrays)
7: Combinacionales 44
Ejemplo: celda basada en multiplexores
Esta celda es de 8 entradas y una salida implementa:f = (s0 + s1)’(sA’A0+sAA1)(s0 + s1)(sB’B0+sBB1)Esta celda puede implementar todas las funciones de dos variables, todas las de tres con al menos unas sin complementar, muchas de cuatro y hasta algunas de ocho
FPGA (Field Programmable Gate Arrays)Ejemplo: celda basada en tabla de búsqueda (LUT)
Esta celda es de 4 entradas y puede implementar cualquier función de cuatro variables
7: Combinacionales 45
Para su funcionamiento primero se graba la tabla de búsqueda con la tabla de verdad de la función, se direcciona usando el decodificadorUna ves configurada, se usa el multiplexor con la combinación de las variables de entrada y en la salida se obtiene el bit almacenado
FPGA (Field Programmable Gate Arrays)
7: Combinacionales 46
Ejemplo: implementación de función de cuatro variables usando celdas LUT de 3 variables: f = x2’x3 + x1’x2x3’ + x2x3’x4 + x1x2’x4’Usando el Teorema de Shannon:
Finalmente:
FPGA: Etapas de trabajoPara trabajar con FPGAs es necesario ingresar el diseño usando esquemáticos o usando un lenguaje HDL como Verilog o VHDL. Esta etapa es codificación.Luego se compila y simula el diseño de la cual se puede verificar el diseño lógico y el flujo de datosLuego se ejecuta la fase de síntesis, que implementa el diseño en compuertas básicas, minimizando las ecuacionesLa próxima fase el mapeo tecnológico, que implementa las ecuaciones con los elementos lógicos disponibles. También se hacen las localicaciones de los componentes y los enrutamientos y conexiones entre los componentes (place and route)Se ejecutan simulaciones temporales usando el diseño finalFinalmente se genera un archivo binario el cual se graba en el dispositivo.
Describen hardware en diferentes niveles de abstracciónDescripción estructural
reemplazo textual para una esquemáticacomposición jerárquica de módulos desde elementos primitivos
Descripción de Comportamiento y Funcionaldescribe lo que hace un modulo no los componentes específicosla etapa de síntesis genera el circuito para el modulo
Requerimientos para la simulacióncircuito de prueba
7: Combinacionales 49
HDLsAbel (circa 1983) – desarrollado por Data-I/O
usado para PLUsprincipalmente para maquinas de estados
ISP (circa 1977) – proyecto de CMUsimulación, pero no síntesis
Verilog (circa 1985) – desarrollado por Gateway (absorvido por Cadence)
similar a Pascal y Ceficiente y facil de usarstandard de IEEE
VHDL (circa 1987) – desarrollado por DoD de USAsimilar a Ada muy general pero complejostandard de IEEE
7: Combinacionales 50
VerilogPermite descripción estructurales y de comportamientoEstructural
estructura explicita del circuitoe.g., cada compuerta es instanciada y conectada a otras
Comportamientoprograma describe input/output del circuitopueden haber muchas implementaciones del mismo comportamientoe.g., diferentes implementaciones de una función Booleana
7: Combinacionales 51
Modelo Estructural
module xor_gate (out, a, b);input a, b;output out;wire abar, bbar, t1, t2;
always @(neighbors or self) begincount = 0;for (i = 0; i < 8; i = i+1) count = count + neighbors[i];out = (count == 3);out = out | ((self == 1) & (count == 2));
end
endmodule
HDL vs lenguajes de programación
7: Combinacionales 59
Estructura de programainstanciar múltiples componentes al mismo tiempoespecifican interconexión de módulos vía esquemáticajerarquía de módulos encapsulan bloques funcionales
Asignaciónasignación continua (lógica siempre calcula)retardos de propagación (computación toma tiempo)efectos temporales de señales es importante
Estructuras de datostamaño explícitamente especificado - no hay estructuras dinámicasno hay punteros
Paralelismohardware es naturalmente paraleloasignaciones pueden ocurrir en paralelo (no solo secuencialmente)