Tema1 PDF
Tema1 PDF
Tema1 PDF
Universidad de Huelva
CIRCUITOS COMBINACIONALES
MSI, PROGRAMABLES Y
ARITMÉTICA
TERCER CURSO. ELECTRÓNICA DIGITAL
e
Manuel Sánchez Raya
Versión 1.1
1 de Octubre de 2000
Contenido 1
ÍNDICE
- Simbólico: cada símbolo tiene un valor independientemente del lugar que ocupa. Por
ejemplo, los números romanos.
- Ponderado: Cada símbolo tiene un valor que es función de su posición. Cada número
tendrá un valor resultante como combinación del número asignado al símbolo y la
posición que ocupe dentro del número. Por ejemplo, todos los sistemas de
numeración posicionales.
Un número se puede representar en cualquier base por una parte entera y otra
fraccionaria.
?k
Ejemplos:
N(2 = 1101.011
N(10 = 23 + 22 + 20 + 2-2 + 2-3 = 13.375(10
Hay varios códigos potencia de dos, que son los más útiles:
Ejemplos:
271(8 = 185(10 271(8 = 010 111 001(2 = 0000 1011 1001(2 = 0B9(16
- Magnitud signo: se añade un bit al comienzo que será el bit de signo, codificando el
número como positivo si este vale cero o como negativo si vale uno.
-7.11 = 1 0000111 . 00011 con patrón byte. El bit subrayado es el bit de signo y el resto
de bits representa la mantisa.
Ejemplo:
Los códigos decimales codificados en binario se emplean para representar los decimales
mediante la combinación de los signos de base dos. Los códigos ponderados son los que cada
posición se le asigna un peso.
- BCD con pesos 8421: cada número decimal se codifica directamente en un código
binario de cuatro bits, siendo inválidas las combinaciones mayores de 9.
- BCD Aiken con pesos 2421: es un código autocomplementario, porque el
complemento a 9 se obtiene mediante inversión lógica de cada bit.
- 5421 : es un código ponderado pero no es autocomplementario.
- BCD en exceso 3: cada número decimal N se representa como N+3, no es un código
ponderado pero si es autocomplementario.
BCD
BCD BCD Aiken 5421
exceso3
0 0000 0000 0000 0011
1 0001 0001 0001 0100
2 0010 0010 0010 0101
3 0011 0011 0011 0110
4 0100 0100 0100 0111
5 0101 1011 1000 1000
6 0110 1100 1001 1001
7 0111 1101 1010 1010
8 1000 1110 1011 1011
9 1001 1111 1100 1100
El código ASCII (American Standard Code for Information Interchange) define códigos
de ocho bits para letras, números y símbolos especiales. El código ASCII de seis bits es el
siguiente:
Bits 6 0 0 1 1
4 3 2 1 \ 5 0 1 0 1
0 0 0 0 @ P Ð 0
0 0 0 1 A Q ! 1
0 0 1 0 B R » 2
0 0 1 1 C S # 3
0 1 0 0 D T $ 4
0 1 0 1 E U % 5
0 1 1 0 F V & 6
0 1 1 1 G W ‘ 7
1 0 0 0 H X ( 8
1 0 0 1 I Y ) 9
1 0 1 0 J Z * :
1 0 1 1 K [ + ;
1 1 0 0 L \ , <
1 1 0 1 M ] - =
1 1 1 0 N ? . >
1 1 1 1 O ? / ?
Elemento nulo: 0
Elemento universal: 1
Operación or (+): ? x, y ? B x ? y ? B
Operación and (·): ? x, y ? B x · y ? B
Complemento: ? x ? B, ? x ? B
- Teorema de dualidad:
Si en una identidad se sustituye cada (+, · , 0, 1) por ( · , +, 1, 0) se obtiene una función
dual de la anterior. Todo teorema tiene dos formas, la enunciada y su dual.
- Leyes de simplificación:
x + (x · y) = x+y x · (x + y) = x · y
- Teorema de De Morgan:
El complemento de la suma es el producto de los complementos. Su dual también es
cierto.
x + y + z + ... = x · y · z ·
x · y · z · ... = x ? y ? z ·
A NOT
0 1
1 0
2n ? 1
Para Mintérminos: ?
i? 0
m i (x 1 , x 2 , ... , x n ) ? 1
2n ? 1
Para Maxtérminos: ?
i? 0
M i (x1 , x 2 , ... , x n ) ? 1
X1 X2 X3 MINTÉRMINOS MAXTÉRMINOS
0 0 0 m 0 ? X1 X 2 X 3 M 0 ? X1 ? X 2 ? X 3
0 0 1 m1 ? X1 X 2 X 3 M1 ? X1 ? X 2 ? X 3
0 1 0 m 2 ? X1 X 2 X3 M 2 ? X1 ? X 2 ? X 3
0 1 1 m 3 ? X1 X 2 X 3 M 3 ? X1 ? X 2 ? X 3
1 0 0 m 4 ? X1 X 2 X 3 M 4 ? X1 ? X 2 ? X 3
1 0 1 m 5 ? X1 X 2 X 3 M 5 ? X1 ? X 2 ? X 3
1 1 0 m 6 ? X1 X 2 X 3 M 6 ? X1 ? X 2 ? X 3
1 1 1 m 7 ? X1 X 2 X 3 M 7 ? X1 ? X 2 ? X 3
- Tabla de Verdad:
c b a f3
0 0 0 0 0
1 0 0 1 0
2 0 1 0 0
3 0 1 1 0
4 1 0 0 1
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
- Esquema del circuito. Bloque o caja negra con entradas y salidas y descripción de la
función que realiza.
Entradas
Salidas
Multiplexor
- Expresión algebraica:
Para pasar a forma canónica mintérminos se multiplica por (x + x), donde x es el factor
que falta al término producto. Para pasar a forma canónica maxtérminos se suma (x · x), donde
x es el factor que falta al término suma.
f3 ? ?
3
m( 4,5,7) ? f3 ? ?
3
m(0,1,2,3,6)
Ejemplo:
f3 ? ?
3
M (0,1,2,3,6)
- Mapas de Karnaugh:
Tablas formadas por celdas donde cada celda adyacente varía en un solo bit.
ab
cd 00 01 11 10
00 0 4 12 8
01 1 5 13 9
11 3 7 15 11
10 2 6 14 10
El criterio que vamos a utilizar es el de obtener un circuito mínimo en dos niveles. Esto
se consigue a partir de una expresión booleana normalizada, bien como suma de productos,
bien como producto de sumas que sea mínima en cuanto al número de términos utilizados,
(producto o suma) y mínima en cuanto al número de literales de los mismos.
Los mapas de Karnaugh son tablas de verdad construidas de tal manera que mintérminos
(o maxtérminos) adyacentes ocupan una posición adyacente en la tabla.
ab
cd 00 01 11 10
00 0 4 12 1 8
01 1 1 5 1 13 9
11 3 1 7 1 15 11
10 2 6 1 14 1 10
f ? ac ? a c d ? abd
También se puede obtener a partir del diagrama de Karnaugh la función como producto
de sumas agrupando ceros en lugar de unos, en algunas ocasiones nos puede interesar hacerlo
de esta forma.
ab
cd 00 01 11 10
00 0 0 0 4 0 12 1 8
01 0 1 1 5 1 13 0 9
11 0 3 1 7 1 15 0 11
10 0 2 0 6 1 14 1 10
f ? (a ? c) · (c ? d) · (a ? d) · ( c ? b ? a)
Para simplificar funciones de más variables se emplean los otros métodos. Para cinco
variables se pueden hacer dos tablas de cuatro variables y para seis cuatro tablas.
Se llaman así a las funciones booleanas que no están definidas para todas las
combinaciones de entrada, esto es, su dominio es un subconjunto de todas las posibles
combinaciones de las variables de entrada.
Para obtener funciones booleanas mínimas utilizando los mapas de Karnaugh se siguen
los siguientes pasos:
Los diagramas lógicos de los sistemas combinacionales dan lugar a grafos acíclicos, esto
es, que no contienen bucles cerrados o lazos de realimentación.
NAND y NOR forman cada uno de ellos un conjunto completo de operadores, por tanto
cualquier función booleana puede implementarse utilizando exclusivamente uno de estos dos
tipos de puertas lógicas. Este tipo de implementaciones ofrece ciertas ventajas debido a que:
Para diseñar un circuito con puertas NAND o NOR, se parte de una expresión
normalizada y mínima, y se transforma utilizando los teoremas del álgebra de Boole, y
especialmente las leyes de De Morgan:
Ejemplo: f ? ab ? cde
Disponemos de:
- Bloques universales: aquellos mediante los cuales podemos diseñar cualquier
circuito combinacional. Ej: multiplexores, demultiplexores.
- Bloques específicos: orientados a realizar funciones concretas. Ej: sumador,
comparador.
1.2.5.1.- Decodificadores.
Los circuitos decodificadores son sistemas combinacionales que generan los productos
canónicos de un conjunto de variables binarias aplicadas a sus entradas.
E a b c 0 1 2 3 4 5 6 7
a
0 1 X X X 1 1 1 1 1 1 1 1
1
b
2
0 0 0 0 0 1 1 1 1 1 1 1
c DECODIFICADOR
3 a 8
3 0 0 0 1 1 0 1 1 1 1 1 1
4
5
.
EN
6 .
7
.
0 1 1 1 1 1 1 1 1 1 1 0
A
B U?
C 1 15
A Y0
D 2 14
B Y1
E 3 13
C Y2
12
Y3
11
Y4
6 10
G1 Y5
4 9
G2A Y6
5 7
G2B Y7
74LS138
U?
1 15
A Y0
2 14
B Y1
3 13
C Y2
12
Y3
11
Y4
6 10
G1 Y5
4 9
G2A Y6
5 7
G2B Y7
74LS138
U?
1 15
A Y0
U?A 2 14
B Y1
2 4 3 13
A Q0 C Y2
3 5 12
B Q1 Y3
6 11
Q2 Y4
1 7 6 10
E Q3 G1 Y5
4 9
G2A Y6
74LS139 5 7
G2B Y7
74LS138
U?
1 15
A Y0
2 14
B Y1
3 13
C Y2
12
Y3
11
Y4
6 10
G1 Y5
4 9
G2A Y6
5 7
G2B Y7
74LS138
Para realizar funciones se emplean junto con una puerta OR para sumar los productos
generados por el decodificador que intervienen en la función a realizar.
Ejemplo: f ? ? (0,3,6,7) g ? ? (1,3,4,7)
3 3
+V CATODO COMÚN
ANDO COMÚN
LT RBI D C B A a b c d e f g RBO
1 1 0 0 0 0 S S S S S S C 1
1 X 0 0 0 1 C S S C C C C 1
1 X 0 0 1 0 S S C S S C S 1
1 X 0 0 1 1 S S S S C C S 1
1 X 0 1 0 0 C S S C C S S 1
1 X 0 1 0 1 S C S S C S S 1
1 X 0 1 1 0 C C S S S S S 1
1 X 0 1 1 1 S S S C C C C 1
1 X 1 0 0 0 S S S S S S S 1
1 X 1 0 0 1 S S S C C S S 1
1 0 0 0 0 0 C C C C C C C 0
0 X X X X X S S S S S S S 1
1.2.5.2.- Codificadores.
Comparador de un bit:
1.2.5.4.- Multiplexor.
D0 D0
D1 D1
S
D2 D2
D3 D3
C1
C0
C1 S0
D0
C0 S
S1 S
D1
C0 C
D4 C1
D0
D5 D1
D6 S
D2
D7 D3 C2
D0 D1 D2 D3 C1 D0 D1 D2 D3 C1
S C0 S C0
S1 S0
1.2.5.5.- Demultiplexor.
Un circuito como el de la figura se dice que es multinivel, porque posee varios niveles de
puertas entre las entradas y las salidas. Mientras mayor sea el número de niveles de un circuito,
mayor será el retardo de propagación entrada-salida. Se denomina número de niveles de un
circuito lógico al número de puertas lógicas que intervienen en el camino más largo desde la
entrada a la salida. Los circuitos multinivel pueden presentar fenómenos aleatorios (riesgos) en
la propagación de los cambios de las entradas debido al diferente retardo de propagación de las
señales por los distintos caminos entrada-salida.
La respuesta en la salida solo depende de los valores que tenemos en la entrada del
circuito una vez que este se ha estabilizado cuando no hay lazos de realimentación ni elementos
de memoria. El análisis puede ser:
Proceso:
- Se identifican los distintos niveles del circuito o puertas.
- Se identifican las entradas, las salidas y las variables intermedias.
- Se escribe la expresión de salida en función de las entradas.
- Repetir para todos los niveles hasta que las variables de salida estén en función de las
entradas.
- FAN-IN. Número máximo de puertas del mismo tipo que la dada que pueden
conectarse a ésta, de manera que el circuito funcione correctamente.
- FAN-OUT. Número máximo de puertas del mismo tipo que la dada que pueden
conectarse como carga de ésta, de manera que el circuito funcione correctamente.
- Coste: El diseño puede ser más sencillo si empleamos más circuitos, pero el coste es
mayor y viceversa.
- Respuesta Temporal. La respuesta de una puerta lógica no es instantánea, requiere
un cierto tiempo para que un cambio a la entrada produzca un posible cambio a la
salida. Este retraso puede originar carreras o azares e incluso la no aparición de
respuesta para una posible entrada.
tPHL
V-SALIDA
tPLH
Las puertas lógicas introducen retardo en la propagación de las señales digitales que
representan a las variables lógicas que procesan. Este retardo no es constante, sino que puede
variar dentro de un intervalo acotado entre dos valores máximo y mínimo, especificados por el
fabricante, y que es consecuencia de la dispersión de los parámetros de fabricación. Por ello el
tiempo de propagación de una señal en un circuito combinacional es difícil de predecir con
exactitud.
Por otro lado, una salida de un sistema combinacional puede depender de una misma
variable de entrada de diversas formas que dan lugar a una multiplicidad de caminos de
entrada/salida, cada uno de los cuales puede llevar asociado diferentes tiempos de propagación.
Como consecuencia de esta diferencia, las transiciones de las salidas de un sistema, como
consecuencia de cambios en las entradas, pueden no ser limpias y presentar ciertas
fluctuaciones, de carácter aleatorio, hasta que alcanzan su valor final estable esperado. Estos
fenómenos aleatorios reciben el nombre de “riesgos” (hazards). Dependiendo del uso que se
haga del sistema estos fenómenos pueden ser más o menos peligrosos.
Clasificación:
Atendiendo a la forma de la fluctuación de la señal los riesgos se clasifican en riesgos
estáticos y riesgos dinámicos.
- Riesgo estático. Se llama así al riesgo en el que la excursión consiste en que la señal
pasa por un estado transitorio de nivel lógico contrario al esperado. Así se habla de
riesgo estático de tipo uno y riesgo estático de tipo cero según la señal presente de
forma transitoria un nivel lógico (1 o 0).
1 1
0 0
Riesgo estático de tipo uno Riesgo estático de tipo cero
- Riesgo dinámico. Se llama así al riesgo que se produce cuando una señal que debe
transitar de un nivel lógico a otro (0->1 o 1->0), no lo hace directamente sino que
realiza una o más oscilaciones entre ambos niveles antes de alcanzar su nivel estable
final.
1 1
0 0
Riesgo dinámico de cero a uno Riesgo dinámico de uno a cero
- Riesgo lógico. Se llama así al riesgo que aparece en un circuito como consecuencias
de una implementación física particular de una función booleana. Puede ser eliminado
rediseñando el circuito a partir de otra expresión booleana para dicha función.
- Riesgo funcional. Se llama así al riesgo que aparece en un circuito inducido por la
propia función, independientemente de la expresión booleana que sirve como base
para su implementación física. Por tanto, no puede ser eliminado rediseñando el
circuito a partir de otra expresión booleana para dicha función.
b) Se asume que existen riesgos y se trata de eludir su efecto nocivo sincronizando los
cambios de las señales con una señal maestra y definiendo en base a ésta instantes
activos, de manera que en un entorno de estos instantes esté garantizada la estabilidad
de todas las señales que debían conmutar. La velocidad de funcionamiento de estos
sistemas está pues limitada por la separación entre instantes activos, que ha de
coincidir con el máximo tiempo necesario para que se estabilicen todas las señales
que pueden conmutar en el sistema, teniendo en cuenta todas las situaciones posibles.
Una medida estimada de ese tiempo se obtiene calculando el tiempo de retardo del
circuito para todos los caminos posibles desde cada una de las entradas a cada una de
las salidas del sistema. Esta es la técnica más usada.
c) En algunos casos es posible aplicar ciertas reglas para rediseñar el circuito y obtener
expresiones algebraicas que producen circuitos libres de riesgos.
- Los riesgos lógicos estáticos se suelen producir cuando las entradas del sistema
transitan entre combinaciones adyacentes que producen la misma salida en la función
considerada y que en la expresión que implementa el circuito no están cubiertas por el
mismo implicante primo. Por tanto para estos riesgos la solución está en añadir a la
expresión que presenta el riesgo la adyacencia involucrada en él. Esta adyacencia se
llama término de consenso. Como procedimiento general suficiente, aunque no
necesario, los diseños libres de riesgos lógicos estáticos se obtiene de expresiones que
contienen todos los términos de consenso de la función.
- Los riesgos lógicos dinámicos pueden evitarse obteniendo las expresiones booleanas
de la función simplificando según el método de los mapas de Karnaugh. Así se
garantiza que la expresión obtenida no contiene relaciones del tipo A · A o A ? A .
Salidas
Entradas Red de
Lógica Red de Lógica
de Interconexión Interconexión de Entradas
Entrada AND OR Salida /Salidas
Programable Programable
Lógica
de
Realimentación
Entradas del
dispositivo
Líneas
suma
Líneas
producto
PLA (Programmable Logic Array) PAL (Programmable ‘AND’ Array Logic) PROM (Programmable Read Only Memory)
Matriz Lógica Programable Matriz Lógica ‘Y’ Programable Memoria programable de sólo lectura
Fusibles
Fusible Fusible
eliminado intacto
Definiciones:
- Línea producto: los términos productos se representan como una línea que llega a la
puerta AND.
- Línea suma: es una línea que representa a todos los productos que llegan a la puerta
OR.
- Sistemas Incompletos: son aquellos para los que el número de puertas AND es
mucho menor de 2 elevado al número de entradas. P << 2n , por ejemplo PLA y PAL.
- Sistemas con estructura completa: P = 2n, por ejemplo las ROM.
Entradas del
dispositivo
A B C A B C
F F
F
Circuito de ejemplo:
A
B’
C
F
A
C’
La conexión entre las salidas del decodificador y las entradas de las puertas OR pueden
ser especificadas de diferente manera de modo que el sistema resultante queda configurado
como un elemento de almacenamiento de información de modo permanente.
Una PROM se representa por el número de posiciones que coincide con el número de
puertas AND y por el número de salidas. Ej: PROM (8x4).
Ej: Una PROM de 512K x 8 tendrá 8 salidas, 28 = 512 · 1024 posiciones y el mismo
número de puertas AND.
PROM
10 1Kx4
10 4
PROM
1Kx4
10 4
PROM
1Kx4
10
4
PROM
1Kx4
1K x 16
PROM
10 256x4
EN
8 4
2
DEC
2 a 4 PROM
256x4
EN
8 4
PROM
256x4
EN
8
4
PROM
256x4
EN
Mientras que una ROM implementa todos los mintérminos de n variables, y resulta por
tanto adecuada para implementar funciones a partir de su tabla de verdad; un circuito PLA
permite implementar funciones booleanas a partir de expresiones normalizadas, con el ahorro
que ello supone en número de elementos a integrar en un chip, pero con la limitación, claro
está, de disponer de un número predeterminado (k) de términos producto.
Para realizar funciones booleanas con PLA es importante partir de una expresión que
contenga el menor número de términos producto y que cada uno de ellos tenga el menor
número de literales. Los programas de minimización de multifunciones booleanas tienen
especial importancia en el diseño con PLA.
Los datos para programar una PLA se muestran en forma tabular en la que se indica la
composición de cada uno de los términos producto y que términos producto forman parte de
cada término suma.
Ejemplo: Tabla que describe una PLA de tres entradas y dos salidas.
Términos Términos
producto suma
Entradas Salidas
A B C F1 F2
H L - ? ·
H - H ? ?
- H H · ?
Una PLA se representa por el número de entradas, número de términos producto y por el
número de salidas: PLA (3x3x2).
Al igual que una PLA, un circuito PAL permite implementar funciones booleanas a partir
de expresiones normalizadas, pero con las restricciones que impone el hecho de la no
programabilidad de la estructura OR. Un inconveniente adicional es la imposibilidad de
compartir términos producto comunes a varias funciones.
Una PAL se representa también por el número de entradas, número de términos producto
y por el número de salidas: PAL (3x3x2).
Se puede colocar en cascada dos unidades para ampliar el número de términos producto,
esta conexión solo es posible en dispositivos PAL porque en una PLA estarían presentes todos
los términos producto para sumarlos. El costo de hacer esto es un aumento del retardo y
desperdiciar dos patillas, una salida y una entrada, a no ser que dispongamos de realimentación
interna en la PAL. En este caso evitamos el desperdicio de patillas de entrada y reducimos el
retardo al no pasar estas señales por los buffers de entrada y salida. Varias funciones
aritméticas se pueden implementar de forma económica de esta forma, especialmente funciones
de paridad que requieren muchos términos productos.
A B C
Términos
realimentados
El problema general va a consistir en diseñar una red para implementar un bloque lógico
con M entradas, N salidas y R términos producto mediante dispositivos con un máximo de m
entradas, n salidas y r productos, donde al menos un de lo siguiente es cierto: m<M, n<N,
r<R.
En algunos casos tenemos un PLD que dispone de suficientes patillas de entrada y salida
pero con insuficientes términos producto para resolver el problema. Si en un dispositivo PAL
solo unas pocas salidas tienen este problema podemos conectar las salidas de varios
dispositivos directamente si disponen de salidas en colector abierto, para que este sistema
funcione, las polaridades de salida deben ser a nivel bajo y se debe conectar una resistencia
externa de PULL-UP.
AUMENTO DEL NÚMERO DE TÉRMINOS PRODUCTO EJEMPLO DE AUMENTO DEL NÚMERO DE TÉRMINOS
EN COLECTOR ABIERTO PLA o PAL [n x (n’· k) x m] PRODUCTO USANDO SALIDAS TRIESTADO
PLA (17 X 96 X 8)
X17
Xn Fm X17 EN F8
1 PLS100
1 EN
PLS100
K
X1 PLA o PAL F1
(n’) PLD 2
X2
Partición B
11
Xn Fm
3
PLA o PAL
(n’) Fm(k-1)+1
PLD 1
5 PLD 2 16
Fmk
K
La codificación de entrada y salida también puede usarse para reducir términos producto
reduciendo también algunas veces pines de entrada o salida.
F1 ? ab ? c d
F2 ? a ? e
F3(d, c, b, a) ? ?
4
(4,5,6,7,9,11)
?1 Si 7 ? m i ? 11
F4(d, c, b, a) ? ?
?0 En caso contrario
Name PLDDesign ;
Partno 18P8 ;
Revision 1 ;
Date 27/10/99 ;
Designer Manuel Sanchez ;
Company Universidad de Huelva ;
Assembly ;
Location Huelva ;
Device p18p8;
Format ;
F4 = [d,c,b,a]:[7..B];
*********************************************************************
PLDDesign
*********************************************************************
ADVANCED PLD 4.0 Serial# MW-67999999
Device p18p8 Library DLIB-h-36-3
Created mar nov 02 08.44.00 1999
Name PLDDesign
Partno 18P8
Revision 1
Date 27/10/99
Designer Manuel Sanchez
Company Universidad de Huelva
Assembly
Location Huelva
========================================================================
Expanded Product Terms
========================================================================
F1 =>
!a
# !b
# c & !d
F2 =>
a & !e
# !a & e
F3 =>
c & !d
# a & !c & d
F4 =>
a & b & c & !d
# !c & d
F1.oe =>
1
F2.oe =>
F3.oe =>
1
F4.oe =>
1
======================================================================
Symbol Table
======================================================================
F1 12 V 3 8 1
F2 13 V 2 8 1
F3 14 V 2 8 1
F4 15 V 2 8 1
a 1 V - - -
b 2 V - - -
c 3 V - - -
d 4 V - - -
e 5 V - - -
F1 oe 12 D 1 1 0
F2 oe 13 D 1 1 0
F3 oe 14 D 1 1 0
F4 oe 15 D 1 1 0
00684 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00720 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00756 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00792 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00828 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00864 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00900 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
00936 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #16 02595 Pol x
00972 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01008 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01044 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01080 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01116 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01152 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01188 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01224 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01260 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #15 02596 Pol -
01296 ------------------------------------
01332 x-x-x----x--------------------------
01368 -----x--x---------------------------
01404 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01440 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01476 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01512 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01548 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01584 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #14 02597 Pol -
01620 ------------------------------------
01656 ----x----x--------------------------
01692 --x--x--x---------------------------
01728 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01764 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01800 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01836 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01872 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
01908 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #13 02598 Pol -
01944 ------------------------------------
01980 --x----------x----------------------
02016 ---x--------x-----------------------
02052 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02088 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02124 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02160 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02196 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02232 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Pin #12 02599 Pol -
02268 ------------------------------------
02304 ---x--------------------------------
02340 -x----------------------------------
02376 ----x----x--------------------------
02412 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02448 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02484 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02520 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
02556 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
========================================================================
Chip Diagram
========================================================================
______________
| PLDDesign |
a x---|1 20|---x Vcc
b x---|2 19|---x
c x---|3 18|---x
d x---|4 17|---x
e x---|5 16|---x
x---|6 15|---x F4
x---|7 14|---x F3
x---|8 13|---x F2
x---|9 12|---x F1
GND x---|10 11|---x
|______________|
b a s (suma) c (acarreo)
0 0 0 0 S? a? b
0 1 1 0 C ? a·b
1 0 1 0
1 1 0 1
El semisumador debe modificarse más para que resulte útil en la mayoría de las
aplicaciones. En general, los números constan de más de un bit, por tanto, se precisa un circuito
sumador independiente para sumar cada par de bits y poderse realizar la suma en paralelo. Sin
embargo, cuando se suma en paralelo, la posición de cada bit afecta a la suma del bit de la
izquierda.
La tabla de valores de un F.A. (full-adder) de cuatro entradas xi, yi, ci y salidas ci+1 y si es:
xi yi ci Ci+1 Si
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1 ? Si ? x i ? y i ? c i
Así: ?
0 1 1 1 0 ? Ci? 1 ? x i y i ? x i ci ? y i ci
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
la implementación sería:
Xi Yi Ci
Si
Ci+1
Ci S i ? ( x i ? y i ) ? ci
Xi
Si
C i ? 1 ? x i y i ? ( x i ? y i ) ci ?
Yi
? x i y i ? x i y i ci ? y i x i ci
Ci+1
? y i ( x i ? x i c i ) ? y i x i ci
? x i y i ? y i ci ? y i x i c i
? x i y i ? y i ci ? x i ci
Para realizar sumadores de mayor número de bits, se pasan los acarreos de cada sumador
formando un sumador de Rizado (Ripple-Adder) o sumador en paralelo. El sumador paralelo
consta de varios pasos de circuitos de sumador completos que están conectados entre sí, de
forma que la salida de acarreo de un paso es la entrada de acarreo del paso siguiente. Por lo
tanto, un sumador paralelo de 4 pasos realizará la propagación de todos los acarreos y puede
usarse para sumar dos números cualesquiera de cuatro bit.
Los acarreos pasan en secuencia a través de todos los pasos del sumador paralelo y la
última salida de la suma no es correcta hasta que se genere el último acarreo. Este sumador se
denomina sumador en paralelo con arrastre en serie. Cada uno de los pasos del sumador
paralelo realiza una suma tan pronto como están presentes las entradas A y B, pero las salidas
ELECTRÓNICA DIGITAL Pág. 41/52
E.P.S. I.T.I. DE HUELVA Combinacionales MSI, Programables y Aritmética
de los pasos no son correctas hasta tanto no se procesen todos los acarreos. Por consiguiente, se
genera una salida de suma provisional incorrecta, lo cual, en general, no lo permitirán todos los
circuitos del sistema. Un sumador paralelo con arrastre en serie requiere un tiempo
relativamente largo para que todos los acarreos sean generados y procesados. Se considera este
tipo de sumadores como lentos, si bien son suficientes para la mayoría de las aplicaciones. Si el
tiempo de la suma de cada elemento es 30 ns, el tiempo máximo de suma de los cuatro bits será
4 x 30 ns = 120 ns.
A ?
S
B
Co Cn
El sumador de arrastre anticipado es un sumador paralelo que no tiene que esperar a que
se originen los acarreos para pasar de un paso sumador completo al siguiente. En realidad,
puede anticipar todas las señales de acarreo andes de que se generen, utilizando cierta lógica
auxiliar, la cual proporciona simultáneamente las entradas de acarreo a todos los pasos del
sumador, antes de que sean desarrollados por cada etapa independientemente y puede también
anticipar cuál será la salida de arrastre del último sumador completo. Estos sumadores, son más
rápidos que los sumadores paralelos de arrastre en serie y se emplean en los ordenadores
rápidos.
Las entradas de arrastre para todas las etapas de un sumador pueden desarrollarse tan
pronto como se reciben las señales de entrada A y B. No es necesario con este procedimiento
esperar a que se propaguen los arrastres por todas las etapas.
La limitación más importante del sumador de arrastre anticipado es que a medida que
aumenta el número de etapas, la ecuación precedente y cada uno de sus términos se hacen
demasiado largos. Cada vez se precisan más puertas para llevar a cabo la ecuación, y dichas
puertas necesitan cada vez mayor número de líneas de entrada (mayor fan-in). Como
Hay varias formas de hacer sumadores de 8 bits. Una de las posibilidades es utilizar dos
sumadores de arrastre anticipado de 4 bit con un arrastre en serie entre éstos; otra consiste en
utilizar dos sumadores de arrastre en serie de 4 bit, pero desarrollar únicamente el arrastre C4
mediante la lógica de anticipación de arrastre y permitir que ambas etapas de 4 bit realicen las
adiciones simultáneamente, en lugar de hacerlo en secuencia.
- 0 –0 = 0
- 0 – 1 = 1 y ‘llevamos’1
- 1 –0 = 1
- 1 –1 = 0
Estos algoritmos permiten la resta de dos números binarios cualesquiera, siempre que el
minuendo sea mayor que el sustraendo. No obstante existe otro método de resta más utilizado,
que se basa en sumar el complemento de un número a otro, en lugar de restar los números
directamente.
X0 X0’
X1 X1’
Xn-1 Xn-1’
.....
X’1 X’0
X’n-1 X’n-2
Este otro circuito calcula el complemento a uno si k=1, y efectúa la transferencia sin
modificación si k=0:
Xn-1 Xn-2 X1 X0
..... K
.....
signo de la suma o diferencia, es necesario saber los signos de los números que intervienen, así
como cuál de los números es el mayor.
- Si A positivo y A>B o bien A negativo y B>A, se suma el sustraendo en complemento a 1 y
luego se suma el acarreo generado al resultado.
- Si A positivo y A<B o bien A negativo y B<A, la resta es negativa, se suma el sustraendo
en complemento a 1 y luego se complementa el resultado y se añade el bit de signo.
S: selección de operación.
S2 ALU
R1
S1 S0 Op. Lógicas Op. Aritmética S1
R2
(S2=0) (S2=1) S0
R3
0 0 P and Q P mas Q R4
P
0 1 P or Q P menos Q
P=Q
1 0 P nand Q P mas 1
CG
1 1 P or excl Q P menos 1 Q
CP
Ci Co
Las entradas S2, S1 y S0 seleccionan el tipo de operación, a realizar con los dos operandos
de 4 bits P y Q. Ci es la entrada de acarreo y C0 la salida. Las unidades aritmético-lógicas
suelen incorporar una salida que detecta cuando los dos operandos son iguales.
S 3 3
ALU ALU
P 4 4 R P 4 4
R
Q 4 Q 4
Ci Co Ci Co
El multiplicador así obtenido tendrá un tiempo de respuesta función del número de veces
que se repite la suma, y generalmente largo. Otra técnica de respuesta más rápida para construir
multiplicadores consiste en implementar su tabla de verdad en ROM. Por ejemplo, un
multiplicador 2x2:
b2 b1 a2 a1 P3 P2 P1 P0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1
0 1 1 0 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 1 0
.......
- Manteniendo la coma que separa la parte fraccionaria de la entera fija. Coma Fija.
- Manteniendo el número normalizado y por tanto, la coma flotante puede variar de
posición. Por esto el número dispondrá además de un exponente para determinar la posición
de la coma, similar a la notación exponencial de base diez, pero ahora en base dos.
S Exponente Mantisa
- Existen cuatro casos especiales que facilitan el manejo de números en coma flotante, que
son: