Beruflich Dokumente
Kultur Dokumente
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 Silva
material en el sitio http://es.wikipedia.org
7: Combinacionales 1
7-Sistemas Combinacionales
7.1 Introducción
7.2 Multiplexores, Demultiplexores,
Decodificador
7.3 PLAs, PALs, ROMs
7.4 FPGAs
7.5 HDLs
7: Combinacionales 2
Introducción: Componentes básicos
7: Combinacionales 4
7-Sistemas Combinacionales
7.1 Introducción
7.2 Multiplexores, Demultiplexores,
Decodificadores
7.3 PLAs, PALs, ROMs
7.4 FPGAs
7.5 HDLs
7: Combinacionales 5
Mux/Demux A Y
B Z
Se usan para conectar y rutear
Muchos inputs a un output - multiplexor
Un input a muchos outputs – demultiplexor
Se pueden usan para conectar entre diferentes fuentes y
destinos
control control
7: Combinacionales 6
Mux y demux (cont'd)
Uso de multiplexor/demultiplexor en conexiones
multi-punto (como en este sumador)
A0 A1 B0 B1
A B
Sum
S0 S1
7: Combinacionales 7
Multiplexores
7: Combinacionales 8
Multiplexores (cont'd)
7: Combinacionales 9
Implementación de multiplexores
usando compuertas
2:1 mux
4:1 mux
7: Combinacionales 10
Multiplexores en cascada
Se pueden implementar multiplexores mas grandes usando
multiplexores mas pequeños en cascada
8:1
I0
I1 4:1 mux
I2 mux implementación
I3 2:1 alternativa
Z
mux I0
I4 2:1 8:1
I5 4:1 I1 mux mux
I6 mux
I7 I2 2:1
I3 mux 4:1 Z
B C A mux
I4 2:1
I5 mux
señales de control B y C simultáneamente seleccionan
una de I0, I1, I2, I3 y una de I4, I5, I6, I7 I6 2:1
I7 mux
señal de control A elige cual de los outputs
de los mux’s se envia a Z
C A B
7: Combinacionales 11
Multiplexores para implementar funciones
Un multiplexor 2n:1 puede implementar cualquiera función de n
variables
con las variables usadas como inputs de control y
los inputs de datos con 0 o 1
básicamente, una tabla de referencia
Ejemplo:
F(A,B,C) = m0 + m2 + m6 + m7 1 0
1
= A'B'C' + A'BC' + ABC' + ABC
0
1 2
0 3
4 8:1 MUX Z
F
0
= A'B'C'(1) + A'B'C(0) 0 5
+ A'BC'(1) + A'BC(0) 1 6
7
+ AB'C'(0) + AB'C(0) 1
S2 S1 S0
+ ABC'(1) + ABC(1)
A B C
Z = A'B'C'I0 + A'B'CI1 + A'BC'I2 + A'BCI3 +
AB'C'I4 + AB'CI5 + ABC'I6 + ABCI7
7: Combinacionales 12
Multiplexores para implementar funciones
Un multiplexor 2n-1:1 puede implementar cualquier función de n
variables
con n-1 variables usadas como inputs de control y
los inputs de datos con la ultima variable o su complemento
Ejemplo:
F(A,B,C) = m0 + m2 + m6 + m7
= A'B'C' + A'BC' + ABC' + ABC
= A'B'(C') + A'B(C') + AB'(0) + AB(1)
1 0
0 1 A B C F
1 2 0 0 0 1
C' C' 0
0 3 0 0 1 0 F
0 1 0 1 C' 1 4:1 MUX
0 4 8:1 MUX F C'
0 1 1 0 0 2
0 5 1 3
1 6 1 0 0 0 S1 S0
0
1 7 1 0 1 0
S2 S1 S0 1 1 0 1 A B
1
1 1 1 1
7: Combinacionales 13
A B C
Multiplexores para implementar funciones
Generalización I0 I1 . . . In-1 In F cuatro posibles
configuraciones
. . . . 0 0 0 1 1 de filas de la
n-1 variables de tabla de verdad
control . . . . 1 0 1 0 1 se pueden
expresar como
una variable de una función de In
datos
A B C D G 0 In In' 1
0 0 0 0 1
Ejemplo: 0 0 0 1 1
1
0 0 1 0 0
G(A,B,C,D) 0 0 1 1 1 D
1 0
0 1 0 0 0 D 1
se puede realizar
0
0 1 0 1 0 0 2
0 1 1 0 1 1 3
con un MUX 8:1
1
0 1 1 1 1 D’ 4 8:1 MUX
1 0 0 0 1 D 5
1 0 0 1 0 D' D’ 6
elegir A,B,C como 1 0 1 0 0 D’ 7
variables de control 1 0 1 1 1 D
S2 S1 S0
1 1 0 0 1
1 1 0 1 0 D’
1 1 1 0 1 A B C
D’
1 1 1 1 0 7: Combinacionales 14
Actividad
Realizar F = B’CD’ + ABC’ con un 4:1 multiplexor y
un minimo numero de compuertas:
A B C D Z 0 when B’C’
0 0 0 0 0
0 0 0 1 0
0 0 1 0 1
0 0 1 1 0 D’ when B’C
0 1 0 0 0 0 0
0 1 0 1 0 D’ 1 4:1 MUX F
0 1 1 0 0 A 2
0 1 1 1 0 A when BC’ 0 3 S1 S0
1 0 0 0 0
1 0 0 1 0 B C
1 0 1 0 1 0 when BC
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 0 Z = B’C’(0) + B’C(D’) + BC’(A) + BC(0)
1 1 1 1 0
7: Combinacionales 15
Demultiplexor/decodificador
7: Combinacionales 16
Implementación de demultiplexores
decodificador 1:2
active-high active-low
enable enable
G O0 \G O0
S S
O1 O1
decodificador 2:4
G \G O0
O0
active-high active-low
enable O1 enable O1
O2 O2
O3 O3
S1 S0 S1 S0
7: Combinacionales 17
Demultiplexores para implementar funciones
A B C
7: Combinacionales 18
Demultiplexores para implementar funciones
A B C D
7: Combinacionales 19
Decodificadores en cascada
decodificador 5:32
0 A'B'C'D'E' 0
decodificador 1x2:4 1 1
2 2 A'BC'DE'
decodificador 4x3:8 3:8 DEC3 3:8 DEC 3
4 4
5 5
6 6
7 7
S2 S1 S0 S2 S1 S0
0
F 2:4 DEC 1
2
S1 S0 3
0 0 AB'C'D'E'
A B 1 1
2 2
3:8 DEC3 3:8 DEC 3
4 4
5 5
6 6
7 ABCDE 7 AB'CDE
S2 S1 S0 S2 S1 S0
C D E C D E
7: Combinacionales 20
7-Sistemas Combinacionales
7.1 Introducción
7.2 Multiplexores, Demultiplexores,
Decodificador
7.3 PLAs, PALs, ROMs
7.4 FPGAs
7.5 HDLs
7: Combinacionales 21
Programmable logic arrays
Bloque constructivo de lógica de muchas compuertas AND/OR
en realidad se usan NOR o NAND
"personalizado" al hacer/romper conexiones entre las
compuertas
diagrama de PLA para forma suma de productos
• • •
inputs
OR
AND
product array
array
terms
outputs
• • •
7: Combinacionales 22
PLAs: Concepto que permite implementación
Términos de productos son compartidos
entre los outputs
F0 = A + B' C'
ejemplo: F1 = A C' + AB
F2 = B' C' + AB
F3 = B' C + A
input side:
personality matrix
1 = uncomplemented in term
0 = complemented in term
product inputs outputs – = does not participate
term A B C F0 F1 F2 F3
AB 1 1 – 0 1 1 0 output side:
B'C – 0 1 0 0 0 1 1 = term connected to output
0 = no connection to output
AC' 1 – 0 0 1 0 0
B'C' – 0 0 1 0 1 0
reuso de terminos
A 1 – – 1 0 0 1
7: Combinacionales 23
Antes de programar
Todas las conexiones posibles están
disponibles antes de “programar”
en realidad, todas las AND y ORs son NANDs
7: Combinacionales 24
Durante programación
Conexiones no deseadas se eliminan
fuse (normalmente conectadas, se rompen esas no
deseadas)
anti-fuse (normalmente desconectadas, se hacen
conexiones deseadas)
A B C
AB
B'C
AC'
B'C'
7: Combinacionales 25
F0 F1 F2 F3
Representaciones alternativas
Mas corta para no tener que dibujar todos los
cable
significa conexión esta presente y señal
perpendicular es input a una compuerta
ejemplo:
F0 = A B + A' B'
F1 = C D' + C' D
A B C D
AB
A'B'
CD'
C'D
AB+A'B'
CD'+C'D
7: Combinacionales 26
PLA: ejemplo
Múltiples funciones usando A, B, C
F1 = A B C
full decoder as for memory address
F2 = A + B + C
bits stored in memory
F3 = A' B' C'
A B C
7: Combinacionales 28
Ejemplo: PALs y PLAs
7: Combinacionales 29
Ejemplo: PALs y PLAs (cont)
Conversor de código: PLA
funciones minimizadas:
A B C D
W = A + BD + BC
X = B C'
A Y=B+C
Z = A'B'C'D + BCD + AD' + B'CD'
BD
BC
BC'
no es un buen candidato para
implementación en PLA
B ya que los términos no son
compartidos entre los outputs
C
A'B'C'D
pero la implementación es mucho
BCD mas compacta y regular que usando
AD' compuertas AND y OR discretas
BCD'
W X Y Z
7: Combinacionales 30
Ejemplo: PALs y PLAs (cont)
Conversor de código: PAL
A B C D
A
BD
BC
0
BC'
0
0
0
4 términos de B
productos por cada C
compuerta OR
0
0
A'B'C'D
BCD
AD'
B'CD'
W X Y Z
7: Combinacionales 31
Ejemplo: PALs y PLAs (cont)
Conversor de código: implementación con
compuertas individuales NAND
se pierde regularidad, mas difícil de entender
mas difícil hacer cambios
A
A B
C
B W D
D
B
B C
C D Z
A
B \D
X \B
C C
\D
Y
B
7: Combinacionales 32
Ejemplo2: PALs y PLAs
Comparador AB vs CD
A B C D
A'B'C'D'
A'BC'D
A B C D EQ NE LT GT ABCD
0 0 0 0 1 0 0 0
0 0 0 1 0 1 1 0 AB'CD'
0 0 1 0 0 1 1 0
AC'
0 0 1 1 0 1 1 0
0 1 0 0 0 1 0 1 A'C
0 1 0 1 1 0 0 0
0 1 1 0 0 1 1 0 B'D
0 1 1 1 0 1 1 0 BD'
1 0 0 0 0 1 0 1
1 0 0 1 0 1 0 1 A'B'D
1 0 1 0 1 0 0 0
B'CD
1 0 1 1 0 1 1 0
1 1 0 0 0 1 0 1 ABC
1 1 0 1 0 1 0 1
1 1 1 0 0 1 0 1 BC'D'
1 1 1 1 1 0 0 0
funciones minimizadas:
EQ NE LT GT
EQ = A’B’C’D’ + A’BC’D + ABCD + AB’CD’ NE = AC’ + A’C + B’D + BD’
LT = A’C + A’B’D + B’CD GT = AC’ + ABC + BC’D’ 7: Combinacionales
33
Actividad
W X Y
7: Combinacionales 34
W = AB + A’C’ + BC’
Actividad (cont) X = ABC + AB’ + A’B
Y = ABC’ + BC + B’C’
7: Combinacionales 35
Read-only memories (ROM)
Arreglo bidimensional de 1s y 0s
entrada (fila) se llama palabra ("word“)
ancho de fila = word-size líneas de palabras (solo
unas es activa – decoder
índice es dirección ("address“) se usa por eso)
dirección es input 1 1 1 1
palabra seleccionada es output
n
2 -1
i word[i] = 0011
ROM: organizacion interna decoder
j word[j] = 1010
0 n-1
Address
lineas de bits (normalmente subido a 1
a través de resistor – selectivamente
conectado a zero por los switches controlados
por las palabras)
7: Combinacionales 36
ROMs y lógica combinacional
memory
decoder 2n word
array
n
(2 words
lines
by m bits)
outputs
• • •
m data lines
7: Combinacionales 38
ROM vs. PLA
ROM ventajoso cuando
tiempo 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 ROM
tamaño se duplica para cada input adicional
no se pueden utilizar don't cares
PLA ventajoso cuando
hay herramientas para multi-output minimización
hay pocas combinaciones única de minterms
muchos minterms son compartidos entre las funciones de
output
problemas PAL
restricciones de fan-ins en plano OR
7: Combinacionales 39
Estructuras lógicas: ROM, PAL, PLA
ROM – plano AND completo, plano OR general
barato (componente de alto volumen)
velocidad media
7: Combinacionales 41
7-Sistemas Combinacionales
7.1 Introducción
7.2 Multiplexores, Demultiplexores,
Decodificador
7.3 PLAs, PALs, ROMs
7.4 FPGAs
7.5 HDLs
7: Combinacionales 42
FPGA (Field Programmable Gate Arrays)
Dispositivos basados en arreglos bidimensionales de
bloques lógicos y flip-flops
Interconexiones entre bloques, funciones lógicas y de
control son programables usando HDL
Algunos tienen memoria y procesadores incorporados
Algunos 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)
Ejemplo: celda basada en
multiplexores
Finalmente:
7: Combinacionales 46
FPGA: Etapas de trabajo
Para 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 datos
Luego se ejecuta la fase de síntesis, que implementa el diseño en
compuertas básicas, minimizando las ecuaciones
La 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 final
Finalmente se genera un archivo binario el cual se graba en el
dispositivo.
7: Combinacionales 47
7-Sistemas Combinacionales
7.1 Introducción
7.2 Multiplexores, Demultiplexores,
Decodificador
7.3 PLAs, PALs, ROMs
7.4 FPGAs
7.5 HDLs
7: Combinacionales 48
HDLs (Hardware description
languages)
Describen hardware en diferentes niveles de
abstracción
Descripción estructural
reemplazo textual para una esquemática
composición jerárquica de módulos desde elementos
primitivos
Descripción de Comportamiento y Funcional
describe lo que hace un modulo no los componentes
específicos
la etapa de síntesis genera el circuito para el modulo
Requerimientos para la simulación
circuito de prueba
7: Combinacionales 49
HDLs
Abel (circa 1983) – desarrollado por Data-I/O
usado para PLUs
principalmente para maquinas de estados
ISP (circa 1977) – proyecto de CMU
simulación, pero no síntesis
Verilog (circa 1985) – desarrollado por Gateway (absorvido por
Cadence)
similar a Pascal y C
eficiente y facil de usar
standard de IEEE
VHDL (circa 1987) – desarrollado por DoD de USA
similar a Ada
muy general pero complejo
standard de IEEE
7: Combinacionales 50
Verilog
Permite descripción estructurales y de comportamiento
Estructural
estructura explicita del circuito
e.g., cada compuerta es instanciada y conectada a otras
Comportamiento
programa describe input/output del circuito
pueden haber muchas implementaciones del mismo
comportamiento
e.g., diferentes implementaciones de una función
Booleana
7: Combinacionales 51
Modelo Estructural
endmodule
7: Combinacionales 52
Modelo simple de comportamiento
Asignación continua
assign #6 out = a ^ b;
endmodule
retardo desde cambio en input
hasta cambio en output
7: Combinacionales 53
Modelo simple de comportamiento
bloque always
module xor_gate (out, a, b);
input a, b;
output out;
reg out;
7: Combinacionales 54
Activando la simulación usando
un banco de prueba (testbench)
module testbench (x, y);
output x, y; vector de 2-bits
reg [1:0] cnt;
a z
x
test-bench y
b
7: Combinacionales 56
Ejemplo comparador
7: Combinacionales 57
Modelo de comportamiento mas
complejo
module life (n0, n1, n2, n3, n4, n5, n6, n7, self, out);
input n0, n1, n2, n3, n4, n5, n6, n7, self;
output out;
reg out;
reg [7:0] neighbors;
reg [3:0] count;
reg [3:0] i;
assign neighbors = {n7, n6, n5, n4, n3, n2, n1, n0};
endmodule
7: Combinacionales 58
HDL vs lenguajes de programación
Estructura de programa
instanciar múltiples componentes al mismo tiempo
especifican interconexión de módulos vía esquemática
jerarquía de módulos encapsulan bloques funcionales
Asignación
asignación continua (lógica siempre calcula)
retardos de propagación (computación toma tiempo)
efectos temporales de señales es importante
Estructuras de datos
tamaño explícitamente especificado - no hay estructuras
dinámicas
no hay punteros
Paralelismo
hardware es naturalmente paralelo
asignaciones pueden ocurrir en paralelo (no solo
secuencialmente) 7: Combinacionales 59