Professional Documents
Culture Documents
Segundo Curso
Tema 4: Minimización.................................................................................................. 62
4.1 Realizaciones mínimas.......................................................................................... 62
4.2 Adyacencias de una función ................................................................................. 64
4.2.1 Método de Quine-McCluskey................................................................. 64
4.3 Implicantes primos................................................................................................ 66
4.3.1 Tabla de implicantes ............................................................................... 67
4.3.2 Tabla de implicantes reducida ................................................................ 68
4.3.3 Tablas cíclicas y método de Petrick........................................................ 69
Contenido 2
Tema 1
Sistemas de numeración y
codificación de la información
Sistemas de numeración y codificación de la información ......................................... 4
1.1 Números binarios..................................................................................................... 4
1.1.1 Cambio de base decimal/binario................................................................... 7
1.1.2 Base octal ...................................................................................................... 8
1.1.3 Base hexadecimal ........................................................................................ 10
1.2 Aritmética Binaria ................................................................................................. 11
1.2.1 Suma aritmética binaria .............................................................................. 12
1.2.2 Resta aritmética binaria .............................................................................. 12
1.2.3 Multiplicación aritmética binaria ............................................................... 14
1.3 Números negativos ................................................................................................ 15
1.3.1 Representación SM (Signo-Módulo)............................................................ 16
1.3.2 Representación en complemento a 2 (C2) ................................................... 17
1.3.3 Representación en complemento a 1 (C1) ................................................... 19
1.4 Codificación........................................................................................................... 20
1.4.1 Código ASCII............................................................................................... 20
1.4.2 Código BCD ................................................................................................ 22
1.4.3 Código Gray ................................................................................................ 24
1.5 Detección de errores .............................................................................................. 27
1.6 Corrección de errores............................................................................................. 29
1.6.1 Código Hamming......................................................................................... 30
Ejemplo 1.2: Representar el número decimal 243 como suma de potencias de 10.
Ejemplo 1.3: Representar el número decimal 586,23 como suma de potencias de 10.
En este caso se han de asociar potencias de exponente negativo para la parte decimal.
Sería por tanto 586,23 = 5·102 + 8·101 + 6·100 + 2·10-1 + 3·10-2
Ejemplo 1.4: Expresar el número decimal 243 como suma ponderada de potencias de 6.
Las cuatro primeras potencias de 6 son las siguientes: 60=1, 61=6, 62=36 y 63=216
Por tanto si expresamos el numero 24310 como 1·63 + 0·62 + 4·61 + 3·60 tendríamos
que 24310=10436.
En los sistemas digitales (sistemas basados en la electrónica) existen sólo “dos dedos”,
que corresponden a la existencia de tensión en un punto (el 1) o su ausencia (el 0). Por
tanto en los sistemas digitales se trabaja con el sistema de numeración binario, en el que
la base es el 2 y cuyos caracteres son el 0 y el 1, a los cuales ya no se les denomina
dígitos, sino bits (del inglés BInary digiT).
1910 = 16 + 2 + 1 = 1·24 + 1·21 +1·20 = 1·24 + 0·23 + 0·22 + 1·21 + 1·20 = 100112
Ejemplo 1.6: Determinar cuántos números podemos representar con tres dígitos. Ídem
con tres bits.
Con 3 dígitos (sistema decimal) podemos representar desde el 0 al 999, es decir, 1000
números. Con 3 bits, desde el 000 al 111 (7 en decimal), es decir un total de 8 números
distintos.
En los sistemas digitales (aparte del sistema numérico decimal) se usan principalmente
los tres siguientes sistemas de numeración:
Ejemplo 1.7: Representar el número 102010 en las bases binaria, octal y hexadecimal.
El resultado es el siguiente (el modo de llegar a este resultado se verá más adelante):
Los caracteres utilizados para representar los números por cada una de los sistemas de
numeración anteriores son:
Se denomina MSB (Most Significant Bit) al bit de mayor peso dentro del número
binario, es decir el situado más a la izquierda. Análogamente se denomina LSB (Least
Significant Bit) al bit de menor peso dentro del número binario, es decir el situado más
a la derecha.
Ejemplo 1.8: Determinar el valor decimal del MSB del número binario 101011.
El MSB es el sexto por la derecha (101011), de modo que el valor que aporta el número
anterior es de 1·25=32.
Ejemplo 1.9: Determinar el valor decimal del LSB del número binario 101011.
El LSB es el primero por la derecha (101011), de modo que el valor que aporta el
número anterior es de 1·20=1.
n 2n
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
Figura 1. 2: 10 primeras potencias de 2
11011012 = 64 + 32 + 8 + 4 + 1 = 10910
Cambio de decimal a binario (10 → 2): Se divide el número decimal entre 2 sucesivas
veces hasta que el dividendo sea menor que 2.
Tema 1. Sistemas de numeración y codificación de la información 8
Ejemplo 1.12: Pasar el número decimal 109 a binario mediante el método de suma de
pesos.
El número 270 es un número octal, ya que sólo utiliza caracteres de este sistema de
numeración, sin embrago el 279 utiliza el número 9, el cual no pertenece a los
caracteres del sistema octal y por consiguiente no se trata de un número octal.
Tema 1. Sistemas de numeración y codificación de la información 9
Tenemos cuatro caracteres, por lo que debemos conocer las 4 primeras potencias del 8,
que son las siguientes: 80=1, 81=8, 82=64, 83=512. Para ello se puede hacer uso del
conocimiento de las potencias de dos ya que por ejemplo 83 es igual a (23)3 = 29 = 512.
Por tanto la solución es: 23748 = 2·512 + 3·64 + 7·8 + 4·1 = 127610.
Al igual que en el caso binario podría utilizarse el método de suma ponderada de pesos,
pero en este caso no es tan aconsejable al ser menos conocidas las potencias de 8.
Las conversiones octal-binario son mucho más sencillas que aquellas a/desde el sistema
decimal. En ellas sólo hay que conocer la representación decimal de los números octales
0 al 7 y contraer / expandir el número según esta representación. Los caracteres octales
en representación binaria son los siguientes:
octal binario
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Figura 1. 6: Representación binaria de los caracteres octales
Tema 1. Sistemas de numeración y codificación de la información 10
En este caso hay que agrupar los bits de 3 en 3 empezando por la derecha (por el LSB)
y completar con ceros en caso de que en el último dígito octal tenga menos de 3 bits. En
este caso:
10 111 1002 = 2748
De este modo la correspondencia entre los caracteres de las bases decimal, binaria y
hexadecimal es la siguiente:
Según la tabla 1.7 y sabiendo que las 4 primeras potencias de 16 son 160=1, 161=16,
162=256 y 163=4096 tenemos que:
Como hay que expresar con 32 bits el resultado hay que añadir ceros a la izquierda
hasta completar los 32 bits resultando el número 0000 028A16
En este caso hay que sustituir cada carácter hexadecimal por su equivalente en binario,
de acuerdo a la tabla 1.7:
Ejemplo 1.21: Sea el siguiente número binario 10101001102, ¿cuál es el valor de este
numero en representación hexadecimal?
En este caso hay que agrupar de 4 en 4 bits, y completar por la derecha en caso de que
haga falta. Por tanto:
En este tipo de operaciones, al igual que en la aritmética decimal, existen los conceptos
de resultado y acarreo (positivo o negativo) y no deben confundirse con las operaciones
lógicas (a nivel de bit) que se verán más adelante.
- Suma binaria
- Resta binaria
- Multiplicación binaria
Suma Acarreo
0+0=0 0
0+1=1 0
1+0=1 0
1+1=0 1
Obsérvese que si se ve la operación de suma como una caja negra, existen dos entradas
a dicha caja (los operandos) y dos salidas (el resultado y el acarreo).
a) 11 + 11
b) 100 + 10
c) 110 + 100
d) 111 + 011
e) 1111 + 1111 + 1111
Resta Adeudo
0-0=0 0
0-1=1 1
1-0=1 0
1-1=0 0
a) 11 – 01
b) 111 – 100
c) 110 – 101
d) 11011 – 1110
e) 1110 - 11011
Es por ello, y por algunas razones más que se verán en un próximo apartado, por lo que
es el complemento a 2 el formato que se ha elegido en la mayoría de los computadores y
lenguajes de programación para representar los números enteros (tanto positivos como
negativos).
Tema 1. Sistemas de numeración y codificación de la información 14
Producto
0·0=0
0·1=0
1·0=0
1·1=1
Para realizar la multiplicación habrá que multiplicar realizar los mismos pasos que en
las multiplicaciones con números decimales:
a) 11 · 11
b) 1101 · 1010
c) 1111 · 1111
Esta representación no tiene ninguna causa en especial, se podía haber elegido justo la
contraria sin que una supusiera ventaja sobre la otra. Aparte de esta primera distinción,
que en sí afecta sólo al signo del número, existen varias alternativas para representar la
parte numérica del número en cuestión cuando este se trate de un número negativo.
Antes entrar a verlas en detalle, conviene comentar las similitudes y diferencias de las
tres representaciones más comunes utilizadas para representar números negativos:
- Signo-Módulo (SM)
- Complemento a 2 (C2)
- Complemento a 1 (C1)
a3 a2 a1 a0 SM C2 C1
0000 +0
0001 +1
0010 +2
0011 +3
0100 +4
0101 +5
0110 +6
0111 +7
1000 -0 -8 -7
1001 -1 -7 -6
1010 -2 -6 -5
1011 -3 -5 -4
1100 -4 -4 -3
1101 -5 -3 -2
1110 -6 -2 -1
1111 -7 -1 -0
Figura 1. 8: Representaciones en SM, C2 y C1 de números binarios de 4 bits
- Los números positivos se representan igual en las tres representaciones (si N>0
entonces NSM = NC2 = NC1).
Tema 1. Sistemas de numeración y codificación de la información 16
- Las representaciones SM y C1 tienen dos ceros (+0 y -0). Por tanto “desperdician”
una combinación.
- Por lo anterior la representación C2 es la que más números diferentes puede
representar.
- Si N es un número negativo se tiene que NC2 = NC1 – 1, es decir que ante una misma
combinación de bits de un número negativo, el número en C2 será “más negativo”
que si se considera expresado en C1.
Ejemplo 1.25: Si sabemos que un número binario en C1 tiene un valor decimal de -433,
¿cuál será el valor decimal de esa misma combinación de bits si se considera que
representa a un número en C2?
- Tiene la misma cantidad de números positivos que negativos, en total 2n-1-1 de cada
tipo.
- Existen dos representaciones del 0: { +0 , -0 }
- Para n bits existen 2n-1 números distintos posibles de representar, desde el -(2n-1 – 1)
al 2n-1 – 1.
En primer lugar se pasa a binario el módulo del número -39, estos es, se expresa en
binario natural el número 39 utilizando 7 bits. El resultado es 00100111.
Tras ello, se añade el bit de signo, y como en este caso se trata de un número negativo,
éste será 1, resultando finalmente que el número binario pedido es 100100111.
Ejemplo 1.27: Sea la secuencia de bits 10010101. A qué valor corresponde dicha
secuencia si representa a:
00101012 = 1 + 4 + 16 = 2110
Se verá más adelante que con las otras representaciones las operaciones aritméticas son
mucho más sencillas y por tanto fáciles de implementar en circuitos digitales.
Se dijo anteriormente que los números positivos se representaban igual en las tres
representaciones, es decir en binario natural. Por tanto con 8 bits el número +3910 será
(con el bit de signo ya incluido en la MSB):
- Expresar el valor absoluto del número en binario natural con 7 bits. Ya lo tenemos
hecho del caso anterior resultando 010 0111.
- Invertir los 7 bits del paso anterior. Resulta el número 101 1000.
- Sumar 1 al resultado anterior. En este caso 101 1000 + 1 = 101 1001.
- Añadir el bit de signo en la MSB. El resultado final es de este modo 1101 1001C2.
a) 99 + 32
b) (-99) + (-32)
Como se ha dicho al principio las operaciones aritméticas son más complejas de realizar
en C1 que si se realizan en C2, por lo que no se describirán (remitirse a la bibliografía si
se desea más información al respecto).
1.4 Codificación
Se entiende por codificación a la representación de información no binaria en formato
binario. En los siguientes apartados se van a ver los siguientes sistemas de codificación
textual y numérica:
- Código ASCII
- Código BCD
- Código Gray
Está formado por 128 (27) caracteres del siguiente tipo: 96 caracteres imprimibles:
letras, números y marcas de puntuación y 32 caracteres no imprimibles: caracteres de
control. Si el ANSI ASCII se representa con 8 bits, entonces estos 128 primeros
caracteres establecen el MSB a 0.
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 SP ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL
Figura 1. 11: Código ASCII estándar (ANSI ASCII)
Ejemplo 1.31: ¿Qué texto se encuentra tras la siguiente secuencia de bits si sabemos
que se encuentra codificada en ASCII de 8 bits?
En primer lugar pasamos a hexadecimal el texto anterior para poder consultar la tabla
1.11. Resulta el siguiente fragmento:
48 6F 6C 61 20
4D 75 6E 64 6F
Existe un conjunto de caracteres ASCII extendido que comprende los caracteres con
MSB a 1 del 128 al 255 e incluyen:
Este conjunto de caracteres extendido no es estándar y por tanto difiere entre distintos
equipos. Por ejemplo el sistema operativo MS Windows posee tres codificaciones
diferentes para una misma zona geográfica (Windows, DOS y Unicode).
DEC 0 1 2 3 4 5 6 7 8 9
BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
DEC 10 11 12 13 14 15
No BCD 1010 1011 1100 1101 1110 1111
Figura 1. 14: Código BCD
Obsérvese que los números caracteres binarios del 1010 al 1111 no son caracteres BCD
válidos.
Tema 1. Sistemas de numeración y codificación de la información 23
Ejemplo 1.33: Indicar a qué números decimales corresponderían las siguientes cadenas
binarias si sabemos que están codificadas en BCD. ¿Y si están codificadas en binario
natural?
a) 0101 0001
b) 1010 1000
En el caso a) tenemos que, si el dato binario está codificado en BCD, según la tabla
1.14, correspondería al número 5110, y en el caso b), y bajo el mismo presupuesto, se
observa que no se trata de un código BCD, ya que el carácter 1010 no pertenece al
conjunto de caracteres BCD.
En caso de que los datos binarios representaran números en binario natural, éstos
corresponderían a los números 8110 y 16810 respectivamente.
a) 5 + 3 b) 5 + 6 c) 8 + 9
La solución es la siguiente:
a) b)
Tema 1. Sistemas de numeración y codificación de la información 24
c)
Esta veleta interiormente posee un disco rotatorio con el viento (figura 1.16) sobre el
que existen tres escobillas conductoras de electricidad que se sitúan en cada momento
sobre las tres porciones en las que se divide cada sector. Cada una de estas áreas tiene
una superficie metálica cargada situada bajo un elemento aislante que las recubre
inicialmente. Para asignar a una porción de sector un uno lógico hay que retirar dicho
aislante, de modo que cuando la escobilla toque la parte metálica interpretará la
lectura de dicha área de sector como un “1”, mientras que si toca la superficie aislante
lo interpretará como un “0”.
La primera solución que se nos ocurre es codificar el disco usando el código binario
natural de 3 bits, resultando el disco de la figura 1.16 en la que las zonas negras son
las zonas metálicas descubiertas y las blancas aquellas en las que no se ha retirado el
aislante:
Tema 1. Sistemas de numeración y codificación de la información 25
El problema con esta codificación es que si las tres escobillas no están totalmente
alineadas al producirse una transición de un sector a otro podrían producirse valores
intermedios incorrectos. Por ejemplo si la escobilla central se encontrara ligeramente
desplazada a la izquierda respecto a las de los extremos y se produjera un cambio de
viento que diera lugar a una transición desde el sector 0 (000) al sector 7 (111), se
generaría el valor intermedio erróneo 010 (sector 2) lo cual podría interpretarse como
que en la transición del sector 0 al 7 se ha pasado por 2, lo cual es imposible.
Para solucionar este tipo de problemas aparecen los códigos cíclicos, de los cuales el
código Gray es el más popular. Este tipo de códigos se caracterizan porque entre un
carácter y su siguiente sólo existe un bit de diferencia. En la tabla siguiente se muestra
un código Gray de 3 bits:
Gray (3 bits) 000 001 011 010 110 111 101 100
Decimal 0 1 2 3 4 5 6 7
Ya se verá más adelante cómo se crea un código de este tipo, pero volviendo al ejemplo
si se utiliza el código anterior se obtiene una codificación más segura que la primera,
en la cual ya no se producirían errores en las transiciones, puesto que entre dos
sectores contiguos sólo variaría una porción de sector, tal y como puede verse en la
figura 1.17:
Existen diferentes formas para construir un código Gray con n bits siendo la más usual
la realizada a partir de un dato binario, dada por la siguiente fórmula:
G = B ⊕ ( B >> 1)
XOR
0⊕0=0
0⊕1=1
1⊕0=1
1⊕1=0
Figura 1. 18: Función lógica XOR
1 0 1 1 0 BIN
1 0 1 1 0 BIN>>1
1 1 1 0 1 GRAY
Existen otros dos métodos para realizar la conversión no sólo de binario a Gray, sino de
Gray a binario.
Ejemplo 1.37: Convertir a Gray el dato binario 10110. Hacer el proceso inverso con el
dato Gray 11101.
1 0 1 1 0 Binario 1 1 1 0 1 Gray
1 1 1 0 1 Gray 1 0 1 1 0 Binario
1 1⊕ 0 0 ⊕ 1 1 ⊕ 1 1⊕ 0 1 1 ⊕ 1 0 ⊕ 1 1⊕ 0 1 ⊕ 1
Si observamos el código recibido, todos los caracteres son correctos (2 unos y 3 ceros)
excepto el cuarto (el 00111). Esto quiere decir que ha habido algún error en la
transmisión por lo que no se autorizará la transacción (ya que no se puede decodificar
el número de tarjeta), de modo que la central probablemente solicitará el reenvío del
número de tarjeta.
El ejemplo anterior muestra que a partir de la forma en que se han codificado los datos,
se ha obtenido una cierta seguridad en la veracidad de los mismos, aunque, si en vez de
haber sido sólo un bit el erróneo (00011 00111), hubieran sido dos (00011 00101)
se habría pasado por alto el error de transmisión y lamentablemente (para el afectado) se
habría cargado el importe de la transacción a un número de cuenta diferente.
Si observamos la tabla 1.20 vemos que la distancia que existe entre dos caracteres
cualesquiera es como mínimo de 2 bits, por lo que se concluye que la distancia
Hamming dH del código 2 en 5 es dH = 2.
Algunos ejemplos de códigos con distancia mínima 1 son el código BCD, el código
ASCII, el binario natural, etc. Este tipo de códigos no permiten detección de errores ya
que un cambio en un bit en un carácter da lugar a otro carácter válido.
Los códigos con distancia mínima 2, como por ejemplo el código 2 en 5, permiten la
detección de errores de hasta 1 bit.
Un método muy utilizado para generar códigos con distancia mínima 2 es la generación
de un bit de paridad. Este bit de paridad P se genera a partir del resto de bits de un
carácter y se suele concatenar al carácter como MSB. Existen dos posibilidades de
generación de un bit de paridad:
- Bit de paridad par: se genera el bit P de forma que el número de unos del carácter
codificado (incluido P) debe ser par.
- Bit de paridad impar: se genera el bit P de forma que el número de unos del carácter
codificado (incluido P) debe ser impar.
Este método se basa en el hecho de que si dos caracteres binarios difieren en un sólo bit,
es claro que el número de unos en uno de ellos será par y en el otro impar. Lo que se
hace por tanto es añadir un bit extra a cada uno de los caracteres que los etiquete como
“par” o “impar”, de modo que pasen a ser de uno a dos los bits en los que difieran.
Tema 1. Sistemas de numeración y codificación de la información 29
Una solución puede ser añadir un bit de paridad par al código BCD. Se tendría el
siguiente código de 5 bits:
DEC 0 1 2 3 4 5 6 7 8 9
BCD 00000 10001 10010 00011 10100 00101 00110 10111 11000 01001
Ejemplo 1.41: Sea el siguiente código de 4 caracteres de 5 bits: 00000, 10101, 11010,
01111.
a) Calcular su distancia Hamming.
b) Determinar el número de bits erróneos que permite detectar.
c) Determinar el número de bits erróneos que permite corregir.
Solución:
a) Se observa que el número de bits en el que difieren dos caracteres cualesquiera es
como mínimo 3, por lo que la distancia Hamming dH es igual a 3.
b) Por el resultado anterior tenemos que, para que un carácter del código se
transforme en otro carácter válido, es necesario que como mínimo 3 bits modifiquen su
valor, por lo que si se produce un error en sólo 2 bits se detectará el error.
Generalizando los resultados del ejemplo anterior se pueden deducir las siguientes
ecuaciones:
Cada carácter codificado en código Hamming de H bits está formado por los siguientes
bits:
- P bits de paridad
- D bits de datos
-H=D+P
- Los bits de paridad se colocan en las posiciones potencias de 2 dentro del carácter
codificado final.
- Se calcula el valor de cada uno de los bits de paridad sabiendo éstos establecen
paridad par entre todos los bits cuyo índice en binario contenga un 1 en la posición
en la que el índice del bit de paridad tiene el 1.
Dado que 9BCD = 1001, necesitaremos como mínimo 4 bits de datos para codificarlo.
Para ello con 3 bits de paridad es suficiente ya que 23 – 3 – 1 = 4, que son los bits de
datos que se pueden codificar con 3 bits de paridad.
El código Hamming constará de este modo de 3 bits de paridad (P1, P2 y P4) y 4 bits de
datos (D3, D5, D6 y D7), 7 bits en total que se numeran del 1 al 7 y se ordenan del
siguiente modo: D7D6D5P4D3P2P1.
A los bits de datos se le asignan los valores del dato a codificar en el siguiente orden:
D7D6D5D3=1001.
Para ver qué bits de datos se asocian a cada uno de los bits de paridad, representamos
en una tabla los 7 índices en binario de cada uno de los bits Hamming:
Tema 1. Sistemas de numeración y codificación de la información 31
A partir de esta tabla se ve que el bit de paridad 4 (100) “controlará” la paridad de los
bits de datos 5, 6 y 7, ya que sus índices en binario tienen un 1 en la posición más a la
izquierda, la misma donde P4 tiene el 1. Análogamente se obtienen el resto de
relaciones entre los bits de paridad y los de datos que se resumen en la siguiente tabla:
Resta únicamente el cálculo de los bits de paridad según los valores que tengan los bits
de datos. Este cálculo es el siguiente (PP ≡ Paridad Par):
P1 = PP(1,0,1) = 0
P2 = PP(1,0,1) = 0
P4 = PP(0,0,1) = 1
En primer lugar hay que ver la representación binaria del carácter ASCII “f”. Según la
tabla 1.11 se tiene que corresponde al hexadecimal 66, que en binario de 8 bits es
01100110.
Necesitamos codificar 8 bits, por lo que con 3 bits de paridad no es suficiente. Con 4
bits de paridad podemos codificar 24 – 4 – 1 = 11 bits de datos, por lo que el resto de
bits los dejaremos a 0. Tendremos 11 bits de datos y 4 bits de paridad.
El código Hamming deberá tener por tanto 15 bits ordenados del siguiente modo:
D15D14D13D12D11D10 D9P8D7D6D5P4D3P2P1
P1 = PP(0, 1, 0, 0, 1, 0, 0) = 0
P2 = PP(0, 1, 0, 1, 1, 0, 0) = 1
P4 = PP(1, 1, 0, 0, 0, 0, 0) = 0
P8 = PP(0, 1, 1, 0, 0, 0, 0) = 0
- Se calculan las paridades a posteriori de cada uno de los grupos de bits de datos
controlados por bits de paridad incluyendo en el cálculo el propio bit de paridad.
- Se forma un número binario E con el resultado del cálculo de las paridades a
posteriori. Pueden ocurrir varias cosas:
⋅ Si el número E es cero quiere decir que no ha habido error
⋅ Si el número E es distinto de cero el propio valor decimal de E es el bit erróneo.
En este caso bastará con invertir el valor de dicho bit para recuperar su valor
original.
- Por último se extraen los bits de datos
Tema 1. Sistemas de numeración y codificación de la información 33
E1 = PP(0, 1, 0, 0) = 1
E2 = PP(0, 1, 0, 0) = 1
E4 = PP(1, 0, 0, 0) = 1
Como E es distinto de cero existe error de un bit, siendo dicho bit erróneo el 7 (D7). El
valor de este bit se invierte (0 1) con lo que el código Hamming original era
1001100. De este código se pueden extraer ahora los bits de datos resultando que el
dato codificado era 1001 (9BCD).
Tema 2. Álgebra de Boole 34
Tema 2
Álgebra de Boole
Álgebra de Boole........................................................................................................... 34
2.1 Introducción.......................................................................................................... 34
2.2 Leyes del Álgebra de Boole.................................................................................. 35
2.3 Circuitos de conmutación ..................................................................................... 36
2.4 Puertas lógicas básicas ......................................................................................... 38
2.5 Funciones de conmutación ................................................................................... 40
2.5.1 Funciones de conmutación de una variable............................................ 42
2.5.2 Funciones de conmutación de dos variables........................................... 43
2.1 Introducción
En 1854 George Boole desarrolla el álgebra que lleva su nombre “Álgebra de Boole”
considerada como las matemáticas de los sistemas digitales. Años más tarde, en 1934
Claude Shannon la aplica al análisis y diseño de circuitos dándole la popularidad que
tiene hoy en día. Como toda álgebra está compuesta por elementos, operaciones y
reglas. Veamos como ejemplo el álgebra de Boole de dos elementos (también conocida
como Teoría de la Conmutación). Esta sencilla álgebra está formada por:
· 0 1 + 0 1 A A
0 0 0 0 0 1 0 1
1 0 1 1 1 1 1 0
Producto Lógico Suma Lógica Complemento
Figura 2. 1: Operaciones del Álgebra de Boole de 2 elementos
Este será el álgebra usual en el que se trabaje en el resto de esta asignatura, aunque no
debe olvidarse que se pueden construir otras álgebras de Boole con otro tipo de
elementos y otro tipo de operaciones, siempre que se verifiquen las reglas que se verán
más adelante. Como ejemplo, se puede demostrar que el conjunto de números divisores
de 10 junto con las operaciones Mcd y mcm (máximo común divisor y mínimo común
múltiplo) forman un álgebra de Boole.
Según la figura 2.2 la expresión dual será A * 0 = 0, de modo que ya sea A=0 o A=1 en
ambos casos se cumple la tabla de la figura 2.1.
A + AB = A A (A + B) = A
VIII) Leyes de absorción
A+ AB = A+ B A(A + B) = AB
a) A + AB = A ( 1 + B) = A ( 1 ) = A
b) A + A B = (A + AB) + A B = A + B( A + A ) = A + B (1) = A + B
Tema 2. Álgebra de Boole 36
Solución: x + y + z = x · y · z = x · y · z
Solución: w ·x · y ·z = w + x + y + z = w + x + y + z
Solución:
(AB+ C)(A+ BC) = (AB+ C) + (A+ BC) = AB·C + A·BC = (A+ B) C + A(B + C) =
= A C+ BC + AB + AC = (AC+ AC) + AB + BC = AC + AB + BC
Solución:
A+ BC + D (E+ F) = (A+ BC)·(D (E+ F)) = (A+ BC)·(D+ (E+ F)) = (A+ BC)·(D+ (E+ F)) =
= (A+ BC)·(D+ E+ F)
X1 z1
. . . .
Circuito
n . . . . m
de
. . . .
conmutación
Xn zm
xi, zi pertenecen a { 0, 1 }
z1
x Circuito
de z2
y conmutación
z3
xy z1 z2 z3
00 0 0 0
01 1 0 1
10 1 0 1
11 1 1 0
Ejemplo 2.9: Si la forma de onda en función del tiempo del voltaje en un terminal de
salida de un circuito de conmutación es el de la figura 2.6, escribir las posibles lecturas
analógicas y digitales en la parte central de cada periodo de la señal de salida.
Medida analógica (V) 0,2 4,8 0,3 0,1 4,7 0,5 0,4 0,4
Medida digital 0 1 0 0 1 0 0 0
Tema 2. Álgebra de Boole 38
Como puede observarse el rango de salida analógico es infinito (son números reales),
sin embargo el rango de salida digital es discreto { 0, 1 }.
V I
x x x
x x 0 1
1 0 x
x y x+ y x
0 0 0
x y
y x+ y 0 1 1
1 0 1
1 1 1 x+ y
Símbolo Tabla verdad Cronograma
Como se dijo anteriormente en este apartado, una vez vistas las tres puertas lógicas
básicas, se van a construir estas puertas en base a circuitos eléctricos macroscópicos
basados en interruptores.
a) Puerta OR “macroscópica“:
A A
B B
AB = 00 AB = 11
A B A B
AB = 00 AB = 11
A A
A=0 A=1
Tema 2. Álgebra de Boole 40
Ejemplo 2.10: Escribir la tabla verdad del circuito eléctrico que controla la luz de una
habitación con dos interruptores. Construir un circuito lógico macroscópico que
implemente dicha tabla verdad.
Esta tabla verdad corresponde a la puerta lógica EXOR (se verá más adelante). Un
circuito eléctrico que sirva para implementar esta función podría ser el siguiente:
A B A B
AB = 00 AB = 11
Combinaciones de apagado
A B A B
AB = 01 AB = 11
Combinaciones de encendido
Para representar una función matemática que actúe sobre un conjunto infinito (por
ejemplo sobre el conjunto de los números reales) es necesario expresarla en forma de
ecuación (forma algebraica). Sin embargo las funciones de conmutación, gracias a que
el conjunto de posibles combinaciones de las entradas es finito, pueden definirse
explicitando el valor de la salida para cada combinación de las entradas.
Tema 2. Álgebra de Boole 41
Existen los cuatro siguientes métodos para definir una función de conmutación:
- Tablas verdad
- Función algebraica
- Puertas lógicas
- Cronogramas
Ejemplo 2.11: Representar de todas las formas posibles las tres funciones de
conmutación que implementa el circuito del ejemplo 2.8.
xy z1 z2 z3
00 0 0 0
01 1 0 1
10 1 0 1
11 1 1 0
Las funciones algebraicas que describen las tres salidas en función de las entradas
también fueron definidas en el enunciado del ejemplo resultando las siguientes:
z1 = x + y z2 = x · y z3 = x ⊕ y
Sin embargo cuando hablamos de funciones de conmutación, debido a que tanto las
entradas como las salidas sólo pueden tomar valores discretos, y ayudados por las reglas
del álgebra de Boole, se tiene que el número de funciones de conmutación de una
variable es un número finito. En concreto el número de funciones de conmutación de
una variable es únicamente de cuatro:
x f0 f1 f2 f3
0 0 0 1 1
1 0 1 0 1
Figura 2. 9: Funciones de conmutación de una variable
Como puede verse, sólo existen dos posibles entradas (0 y 1), y ante ellas sólo existen
cuatro formas distintas de responder (siempre con 0’s, siempre con 1’s, con 0/1 y con
1/0).
Las cuatro funciones anteriores poseen los siguientes nombres y formas algebraicas:
- Función nula: f 0 ( x) = 0
- Función transferencia: f1 ( x) = x
- Función complemento: f 2 ( x) = x
- Función unidad: f 0 ( x) = 1
En primer lugar, sabemos por las leyes VI-dual y VII-dual de la tabla 2.3 que: x ⋅ x = 0 ,
x ⋅ x = x y x ⋅ x = x , de modo que la función puede reducirse a f ( x) = x + x .
De nuevo, por la ley VII-normal tabla 2.3 se llega a que la función anterior es la
función unidad: f(x)=1.
N = 22 = 4 ⇒ 24 = 16 funciones de conmutación
Salida
Función Ecuación Nombre
00 01 10 11
f0 0 Nula 0 0 0 0
f1 xy AND 0 0 0 1
f2 xy 0 0 1 0
f3 x 0 0 1 1
f4 xy 0 1 0 0
f5 y 0 1 0 1
f6 x ⊕ y = xy + xy EXOR 0 1 1 0
f7 x+ y OR 0 1 1 1
f8 x+ y = x⋅y NOR 1 0 0 0
f9 x: y = x y + x y EXNOR 1 0 0 1
f10 y 1 0 1 0
f11 x+ y 1 0 1 1
f12 x 1 1 0 0
f13 x+y 1 1 0 1
f14 xy = x + y NAND 1 1 1 0
f15 1 Unidad 1 1 1 1
Figura 2. 10: Funciones de conmutación de dos variables
Dado que la tabla anterior es simétrica respecto de sus salidas, las funciones anteriores
cumplen que fi = f15−i con i = 0 ... 15 (por ejemplo f 4 = f11 ).
Las funciones producto sólo presentan un 1 a su salida para todas las combinaciones de
las entradas. Dentro de ellas tenemos las cuatro siguientes:
Tema 2. Álgebra de Boole 44
a) Función AND
x y f x
0 0 0
x y
y f ( x, y ) = xy 0 1 0
1 0 0
1 1 1 f
Símbolo de la puerta Tabla verdad Cronograma
b) Función NOR
x y f x
0 0 1
x y
y f (x, y) = x + y 0 1 0
1 0 0
1 1 0 f
Símbolo de la puerta Tabla verdad Cronograma
c) Funciones de inhibición
x y f x
0 0 0
x y
y f ( x , y ) = xy 0 1 0
1 0 1
1 1 0 f
Símbolo de la puerta Tabla verdad Cronograma
x y f x
0 0 0
x
y f ( x, y ) = xy 0 1 1 y
1 0 0
1 1 0 f
Símbolo de la puerta Tabla verdad Cronograma
Tema 2. Álgebra de Boole 45
Las funciones suma sólo presentan un 0 a su salida para todas las combinaciones de las
entradas. Dentro de ellas tenemos las cuatro siguientes:
a) Función OR
x y f x
0 0 0
x y
y f ( x, y) = x + y 0 1 1
1 0 1
1 1 1 f
Símbolo de la puerta Tabla verdad Cronograma
b) Función NAND
x y f x
0 0 1
x y
y f ( x , y ) = xy 0 1 1
1 0 1
1 1 0 f
Símbolo de la puerta Tabla verdad Cronograma
c) Funciones de implicación
x y f x
0 0 1
x y
y f ( x, y ) = x + y 0 1 0
1 0 1
1 1 1 f
Símbolo de la puerta Tabla verdad Cronograma
x y f x
0 0 1
x y
y f ( x, y ) = x + y 0 1 1
1 0 0
1 1 1 f
Símbolo de la puerta Tabla verdad Cronograma
Tema 2. Álgebra de Boole 46
Las funciones de exclusividad son muy útiles siendo sus principales funciones las
siguientes (PP ≡ paridad par y PI ≡ paridad impar):
x y f x
0 0 0
x y
y f ( x, y ) = x ⊕ y 0 1 1
1 0 1
1 1 0 f
Símbolo de la puerta Tabla verdad Cronograma
x y f x
0 0 1
x y
y f ( x, y ) = x : y 0 1 0
1 0 0
1 1 1 f
Símbolo de la puerta Tabla verdad Cronograma
Como puede verse en sus tablas verdad, ambas funciones son mutuamente
complementarias.
Solución:
x ⊕ y = xy + xy = xy ⋅ xy = ( x + y ) ⋅ ( x + y ) = ( x + y ) ⋅ ( x + y ) = x x + x y + y x + y y =
= x y + x y = x: y
Tema 2. Álgebra de Boole 47
Tema 3. Funciones de conmutación 48
Tema 3
Funciones de conmutación
Funciones de conmutación........................................................................................... 48
3.1 Minterms y maxterms........................................................................................... 48
3.2 Desarrollo de Shannon ......................................................................................... 50
3.3 Adyacencias.......................................................................................................... 52
3.4 Funciones incompletamente especificadas........................................................... 54
3.5 Mapas de Karnaugh .............................................................................................. 55
3.6 Minimización multifuncional ............................................................................... 59
Ejemplo 3.1: Indicar cuales de las siguientes expresiones sobre las variables {x, y, z}
son minterms y cuales no:
a) x y z b) x y z c) x y z d) x y z z e) x + y + z f) x + y
Rep. binaria
Rep. algebraica Rep. numérica
xyz
000 xyz m0
001 xyz m1
010 x yz m2
011 x yz m3
100 xyz m4
101 xyz m5
110 xyz m6
111 x y z m7
Tema 3. Funciones de conmutación 49
m6
Ejemplo 3.4: Indicar cuales de las siguientes expresiones sobre las variables {x, y, z}
son maxterms y cuales no:
a) x y z b) x + y + z c) x + y + z d) x + y + z + z e) x y + z f) x + z
Rep. binaria
Rep. algebraica Rep. numérica
xyz
000 x+ y+z M0
001 x + y + z M1
010 x + y + z M 2
011 x + y + z M 3
100 x + y+z M4
101 x + y+z M5
110 x+y+z M6
111 x+y+z M7
Tema 3. Funciones de conmutación 50
M6
Este resultado quiere decir que para implementar cualquier circuito digital que lleve a
cabo una determinada función de conmutación de n variables, sólo se necesitan dos
niveles de puertas.
Solución:
x + y + z = ( x + y ) ⋅ z = xz + yz = x( y + y ) z + ( x + x ) yz = x y z + x y z + x y z + x y z =
x y z + x y z + x y z = Σ m (2, 4, 6)
x + y + z = ( x + y ) ⋅ z = ( x + y + zz ) ⋅ ( yy + z ) = ( x + y + z ) ⋅ ( x + y + z ) ⋅ ( y + z ) ⋅ ( y + z ) =
= ( x + y + z ) ⋅ ( x + y + z ) ⋅ ( xx + y + z ) ⋅ ( xx + y + z ) =
= ( x + y + z) ⋅ ( x + y + z ) ⋅ ( x + y + z) ⋅ ( x + y + z) ⋅ ( x + y + z) ⋅ ( x + y + z) =
= Π M (0,1,3,5, 7)
xyz x+ y+ z
000 0
001 0
010 1
011 0
100 1
101 0
110 1
111 0
Como puede observarse, observando los unos de la tabla verdad se obtiene la expresión
de la función de conmutación como suma de minterms en formato numérico, es decir,
en la forma ∑ m(2, 4, 6). Los ceros dan la expresión numérica como producto de
maxterms, esto es ∏ M(0, 1, 3, 5,7).
3.3 Adyacencias
Definición: Se define adyacencia a un producto de variables de conmutación en el que
no aparecen todas las variables posibles.
Las adyacencias se pueden formar a partir de minterms haciendo uso de la propiedad del
álgebra de Boole A + A = 1 junto a la ley distributiva.
Una propiedad de las adyacencias es que la representación binaria de los minterms que
forman una adyacencia sólo difieren en un bit.
Es importante notar que una adyacencia de orden p sólo estará formada por 2
adyacencias de orden p-1. De este modo una adyacencia siempre estará formada por un
número de minterms potencia de 2 (2 minterms, 4 minterms, 8 minterms, etc.).
Solución:
a) Para determinar si los minterms pueden formar una adyacencia, los
representaremos en forma vectorial: m4 = 0100, m7 = 0111, m12 = 1100.
Como vemos los únicos minterms que difieren en un bit y que por tanto pueden formar
una adyacencia son m4 y m12.
b) a4,12 = Σm (4,12) = x y z u + x y z u = ( x + x ) ⋅ y z u = y z u
Solución:
a) Minterms en forma vectorial:
Vemos los minterms 4 y 5 pueden formar una adyacencia de primer orden. Por otro
lado los minterms 12 y 13 también pueden formar otra adyacencia también de primer
orden. Si representamos vectorialmente ambas adyacencias se tiene:
El apartado anterior podría haber sido resuelto mediante las adyacencias de primer
orden a4,12 y a5,13. No obstante en dicho caso se hubiera llegado (aunque por otro
camino) a la misma adyacencia de segundo orden a4,5,12,13.
Solución:
a) Minterms en forma vectorial:
Para determinar las posibles adyacencias en este caso conviene hacerlo de una manera
gráfica mediante los denominados mapas de Karnaugh. Se verán más adelante los
mapas de Karnaugh, por el momento ser mostrará la disposición de las casillas de un
mapa de Karnaugh de 4 variables:
En dicha tabla cada celda puede formar una adyacencia con su inmediatamente
adyacente (de ahí el nombre de adyacencia), teniendo en cuenta que las filas 1 y 4 son
adyacentes así como las columnas 1 y 4 (tiene forma toroidal).
Tema 3. Funciones de conmutación 54
Observando esta tabla se tiene que es posible formar una adyacencia tercer orden a
partir de 2 adyacencias de segundo orden. No obstante no existe una única forma para
conseguir esta adyacencia de tercer orden a partir de 2 de segundo orden, sino que son
tres las formas de construirla:
b) La representación vectorial sería por ejemplo la formada por las dos siguientes
adyacencias de segundo orden:
∑ m(4, 5, 6, 7) = 0 1 – –
∑ m(12, 13, 14, 15) = 1 1 – –
Solución:
b) Producto de maxterms: f = ∏ M(1, 5, 6, 9, 10, 11, 13, 15) · d(0, 13, 15)
En un próximo apartado se verá como decidir el valor de las indiferencias para construir
el circuito más económico de todos los posibles.
La ventaja de este método es su facilidad de uso, aunque como desventaja decir que es
poco sistemático y su uso es sencillo hasta 6 variables como máximo, aunque en este
tema se restringirá su uso para funciones de conmutación de hasta 5 variables.
a) f ( x, y ) = xy + xy
b) f ( x, y , z ) = x y z + x y z + x y z
c) f ( a, b, c, d ) = Σm(2,3, 4, 6,8,12,14) + d (0,13,15)
d) f ( a, b, c, d , e) = Σm(2, 4, 6,18, 25,30) + d (0,8,16)
Tema 3. Funciones de conmutación 56
Solución:
0 1
0 1
1 1
2 3
yz
00 01 11 10
x
0 1
0 1 3 2
1 1 1
4 5 7 6
cd
00 01 11 10
ab
00 1 1
0 1 3 2
01 1 1
4 5 7 6
11 1 1
12 13 15 14
10 1
8 9 11 10
cde
000 001 011 010 110 111 101 100
ab
00 1 1 1
0 1 3 2 6 7 5 4
01
8 9 11 10 14 15 13 12
11 1 1
24 25 27 26 30 31 29 28
10 1
16 17 19 18 22 23 21 20
Solución:
a) En primer lugar se representa la función de conmutación en un MK de 4 variables:
cd
00 01 11 10
ab
00 1
0 1 3 2
01 1 1 1
4 5 7 6
11 1
12 13 15 14
10 1
8 9 11 10
Tema 3. Funciones de conmutación 58
En segundo lugar se identifican las adyacencias esenciales, es decir aquellas que son
las únicas que pueden contener a un determinado 1. En este caso resultan las tres
siguientes adyacencias esenciales:
cd
00 01 11 10
ab
00 1
0 1 3 2
01 1 1 1
4 5 7 6
11 1
12 13 15 14
10 1
8 9 11 10
00 1
0 1 3 2
01 1 1 1 C
4 5 7 6
11 1
12 13 15 14
10 1
8 9 11 10
D
A
Una vez encontradas las adyacencias el paso siguiente es expresar las adyacencias en
formato algebraico. Para ello en primer lugar las expresamos en formato vectorial tras
lo cual sustituimos los 1’s por variables en forma normal y los 0’s por variables
complementadas como puede verse en la siguiente tabla:
abcd abcd
1001
A 1–01 acd
1101
0111
B 0–11 acd
0011
0111
C 011– abc
0110
0101
D 01–1 abd
0111
b) En este caso toda la primera parte del proceso de minimización es igual que en el
apartado anterior resultando el MK siguiente:
B
cd
00 01 11 10
ab
00 0
0 1 3 2
01 0 0 0 C
4 5 7 6
11 0
12 13 15 14
10 0
8 9 11 10
D
A
Tras lo cual las adyacencias serían los siguientes:
abcd abcd
1001
A 1–01 a +c+d
1101
0111
B 0–11 a+c +d
0011
0111
C 011– a+b +c
0110
0101
D 01–1 a+b +d
0111
f ( a , b, c , d ) = A ⋅ B ⋅ C ⋅ D = ( a + c + d ) ⋅ ( a + c + d ) ⋅ ( a + b + c ) ⋅ ( a + b + d )
Una primera solución a este problema es tratar por separado cada una de las salidas
minimizándolas como si se trataran de funciones independientes. Esta solución es
aceptable y da lugar a buenas soluciones la mayoría de las veces, aunque en otras
ocasiones una visión conjunta del problema puede hacer que se compartan puertas
lógicas entre los circuitos de cada una de las salidas, dando lugar a una reducción global
del circuito, a pesar de que, individualmente cada uno de los circuitos por separado no
sean implementaciones mínimas. Para llevar a cabo este procedimiento de minimización
Tema 3. Funciones de conmutación 60
00 1 1 00 1
0 1 3 2 0 1 3 2
01 1 1 01 1
4 5 7 6
ab
4 5 7 6
11 1 1 11 1 1 1 1
12 13 15 14 12 13 15 14
ac
10 1 1 10 1 acd
8 9 11 10 8 9 11 10
f = a d +ac g = a c d + ab + acd
00 1 1 00 1
0 1 3 2 0 1 3 2
01 1
01 1 1 cd ab
4 5 7 6 4 5 7 6
11 1 1 11 1 1 1 1
12 13 15 14 12 13 15 14
10 1 1 acd 10 1 acd
8 9 11 10 8 9 11 10
Por tanto la solución de minimización conjunta precisa de una puerta menos, siendo de
este modo la más económica, aunque el número de conexiones medio por puerta sea
mayor que la otra opción.
a b c d a b c d
f
f
g
g
Tema 4
Minimización
Minimización................................................................................................................. 62
4.1 Realizaciones mínimas ......................................................................................... 62
4.2 Adyacencias de una función ................................................................................. 64
4.2.1 Método de Quine-McCluskey ................................................................ 64
4.3 Implicantes primos ............................................................................................... 66
4.3.1 Tabla de implicantes............................................................................... 67
4.3.2 Tabla de implicantes reducida ................................................................ 68
4.3.3 Tablas cíclicas y método de Petrick ....................................................... 69
4.4 Síntesis NAND-NOR ........................................................................................... 70
4.4.1 Circuitos con dos niveles........................................................................ 70
4.4.2 Circuitos con más de dos niveles............................................................ 71
4.5 Riesgos en circuitos combinacionales .................................................................. 72
4.5.1 Riesgos lógicos ....................................................................................... 74
4.5.2 Riesgos funcionales ................................................................................ 75
Existe un procedimiento que aunque es arduo de seguir a mano, tiene la ventaja de que
es sistemático y fácilmente programable en una computadora. Se trata del método de
Quine-McCluskey (Q-M en adelante).
Existen muchos más métodos de minimización aparte de los del mapa de Karnaugh y de
Q-M que no se van a estudiar aquí, sobre todo métodos computacionales (también
llamados heurísticos) que hacen uso de la capacidad computacional del ordenador.
Los factores a tener en cuenta para evaluar la “bondad” un circuito de conmutación son
principalmente dos:
- La velocidad de respuesta
- El coste de las puertas
Tema 4. Minimización 63
Por otro lado los procedimientos de simplificación para obtener circuitos con más de
dos niveles de puertas son bastante complejos por lo que nos vamos a concentrar en el
diseño de circuitos de dos niveles de puertas.
Una vez centrados en el diseño de circuitos de dos niveles de puertas volvemos a ver
cual sería la realización mínima de un circuito teniendo en cuenta los dos factores
anteriores: velocidad de respuesta y coste
Velocidad de respuesta: dado que sólo existen dos niveles de puertas en todas nuestras
soluciones el retardo va a ser el mismo en todas ellas, por lo que la velocidad de
respuesta dejará de ser un factor a tener en cuenta en los procedimientos de
minimización.
El coste de las puertas básicas (AND, OR y NOT) es muy similar o idéntico. Por otro
lado las entradas a las puertas suelen estar en forma normal y complementada por lo que
no hay que incluir en el cálculo del coste de un circuito el coste de complementar las
entradas.
La norma genérica entonces para determinar cual es el menor coste de dos circuitos que
implementen la misma función de conmutación con dos niveles de puertas es (en orden
de importancia):
F (x, y, z, u, v) = Σ m (0,2,3,5,7,8,10,11,13,15,22,29,30)
Segundo paso: agrupar los minterms según el número de unos que contengan (su
índice):
Índice Minterms
0 0 9
1 2 9
8 9
2 3 9
5 9
10 9
3 7 9
11 9
13 9
22 9
4 15 9
29 9
30 9
Tercer paso: para obtener las adyacencias de primer orden hay que realizar los
siguientes pasos y reglas:
Tema 4. Minimización 65
1º ) Comparar cada minterm con sus adyacentes (es decir los de índice
inmediatamente superior)
2º ) Un minterm sólo puede ser adyacente con otro del siguiente grupo siempre
que tenga un valor decimal mayor
3º ) Un minterm sólo puede ser adyacente con otro siempre que su diferencia sea
una potencia de 2.
4º ) Escribimos según esto otra tabla donde además de las parejas de minterms que
forman adyacencias de primer orden, aparezca entre paréntesis la diferencia
entre sus valores decimales. Esta diferencia dará la posición de la coordenada
vacua –. Los dos minterms los escribiremos ordenados (a la izquierda el
menor).
5º ) Los minterms que vayamos usando para obtener adyacencias los marcaremos
en la tabla anterior para saber que han sido cubiertos
Quinto paso: seguiríamos con las adyacencias de tercer orden y superior con el mismo
procedimiento anterior hasta que ya no se obtengan más adyacencias.
Sexto paso: nombramos las adyacencias no cubiertas empezando por las del final
(mayor orden) hacia las del principio (menor orden)
Orden Adyacencia
2 5-7-13-15 a
2 3-7-11-15 b
2 2-3-10-11 c
2 0-2-8-10 d
1 22-30 e
1 13-29 f
Es decir, si la tabla verdad de f tiene al menos todos los “1” de la tabla verdad de g.
Sabemos que una función de conmutación se puede expresar como una suma de
minterms; en caso de que dos minterms formen una adyacencia de primer orden las
expresiones de los dos minterms se transformarían un una única expresión (de una
variable menos). Así seguiríamos sucesivamente hasta llegar a las adyacencias de mayor
orden posible.
Cuando tenemos una adyacencia (implicante) que ya no puede ser incluida en otra de
orden superior decimos que tenemos un implicante primo.
Tema 4. Minimización 67
La lista de adyacencias obtenida en el apartado anterior está formada por los implicantes
primos de la función de conmutación del ejemplo.
9 9 9 9 9 9 9 9 9 9 9
0 2 3 5 7 8 10 11 13 15 22 29 30
9 a x x x x
b x x x x
c x x x x
9 d x x x x
9 e x x
9 f x x
En las filas colocamos los implicantes primos encontrados y en las columnas los
minterm de la función. En las intersecciones ponemos una “x” en caso de que el
implicante contenga al minterm en cuestión.
En segundo lugar, una vez determinados los implicantes primos esenciales marcamos
(9) los minterms cubiertos por ellos así como los implicantes primos esenciales. En
nuestro caso quedan todos los minterms marcados excepto { 3, 11 }
En tercer lugar hay que escoger implicantes primos que cubran los minterms no
cubiertos. Este paso suele ser sencillo y normalmente puede hacerse por simple
inspección. En nuestro caso cualquiera de los dos implicantes b y c cubre los minterms
por cubrir (3 y 11) por lo que dado que ambos son del mismo coste (mismo número de
entradas) elegiremos cualquiera de los dos indistintamente.
Se tiene por tanto que la función de conmutación simplificada puede expresarse del
siguiente modo:
F=a+b+d+e+f ó F=a+c+d+e+f
x y z u v
a = 0 – 1 – 1 = x’z v
b = 0 - - 1 1 = x’u v
c = 0 – 0 1 - = x’z’u
d = 0 – 0 – 0 = x’z’v’
e = 1 – 1 1 0 = x z u v’
f = - 1 1 0 1 = y z u’v
F (x, y, z, u, v) = Σ m (0,1,4,7,9,11,12,13,16,20,21,25,27,28,29,31)
9 9 9 9 9 9 9 9 9 9 9 9 9
0 1 4 7 9 11 12 13 16 20 21 25 27 28 29 31
9 a x x x x
9 b x x x x
c x x x x
d x x x x
9 e x x x x
f x x x x
9 g x x x x
h x x
i x x
9 j x
1 12 13
c x x
d x
f x
h x
i x
El procedimiento para obtener los implicantes primos que cubran los minterms
pendientes es el de ir eliminando filas basándonos en los conceptos de equivalencia y
dominancia.
Definición: Decimos que dos filas de una tabla de implicantes reducida son
equivalentes si cubren los mismos minterms (tienen las mismas marcas).
Tema 4. Minimización 69
Definición: Decimos que una fila de una tabla de implicantes reducida domina a otra si
cubre todos sus minterms y algunos más.
En este último ejemplo las filas h e i son equivalentes ya que ambas cubren únicamente
al mismo minterm (el 1). Si volvemos a la tabla de implicantes de la que proceden
vemos que además ambos implicantes primos son del mismo coste (mismo número de
puertas), por lo que escogeremos cualquiera de ellos.
Por otro lado vemos que el implicante primo d está dominado por el c, por lo que el d
puede descartarse. Igualmente el implicante f está también dominado por el c, por lo que
para cubrir los minterms 12 y 13 utilizamos el implicante primo dominante c.
Las dos posibles combinaciones de implicantes primos no esenciales para cubrir los
minterms no cubiertos 1, 12 y 13 son entonces c + h ó c + i.
No obstante existen ciertos casos en los que se llega a una tabla reducida en la que no
existen implicantes esenciales ni relaciones de dominancia ni equivalencia, dando lugar
a tablas cíclicas como la del ejemplo siguiente:
0 1 4 9 12 13
a x x
b x x
c x x
d x x
e x x
f x x
Para ver la cobertura mínima de minterms en estos casos hay que aplicar el método de
Petrick. Lo que se busca es cubrir todos los minterms con la realización de menor coste
posible. Para cubrir el minterm 0 hay que escoger entre el implicante a o el b. Para el
minterm 1 entre el implicante a O c. Se sigue este razonamiento sucesivamente y se
tiene que la cobertura final (la llamaremos G) debe cumplir:
Para que la función de conmutación valga 1 basta con que lo sea cualquiera de los
productos que la forman. Como lo que queremos es una realización mínima en este
ejemplo podremos escoger entre ade y bcf, ya que con sólo tres implicantes cubrimos
todos los minterms. Una vez hecho esto habría que ver volviendo a la tabla “padre” de
la reducida cual de los dos grupos de implicantes tiene un menor coste escogiéndose la
solución más ventajosa.
Por otro lado, se tiene que las puertas NAND (o NOR) constituyen por separado un
conjunto suficiente de operadores, es decir, que todas las funciones de conmutación
podrán expresarse con sólo puertas NAND (o NOR) y complementadores. La ventaja de
esto es que sólo utilizaríamos un mismo tipo de puertas que serían del mismo o menor
coste que las AND y OR.
Demostración:
Teorema: Dado un circuito de dos niveles OR–AND en el que todas las entradas
externas actúen sobre las puertas OR, si cada una de las puertas del circuito se sustituye
por una puerta NOR del mismo número de entradas, la función realizada por el circuito
no cambia.
Demostración:
Tema 4. Minimización 71
Demostración:
En segundo lugar supongamos circuitos con puertas AND y OR más de dos niveles:
yz
00 01 11 10
x
0 1
000 001 011 010
1 1 1 1
100 101 111 110
x y z P1 P2 P1 + P2 f
101 0 1 0+1=1 1
100 1 0 1+0=1 1
Se observa que el valor que la función de conmutación es 1 para los valores de las
entradas xyz = { 100 y 101 } (celdas 100 y 101). Por tanto si las entradas varían desde
por ejemplo xyz=101 a xyz=100 no deberíamos ver cambio en la salida de la función de
conmutación. Sin embargo un estudio detallado del comportamiento del circuito nos
demostrará que en esa transición la función de conmutación realiza una breve excursión
al 0. Estas excursiones no deseadas reciben el nombre de riesgos. Si analizamos por
separado el valor en los puntos P1=y’z’ y P2=xz para las entradas 100 y 101 vemos que:
Por tanto aunque la salida siempre debería valer finalmente 1, tanto la salida de la puerta
AND1 como la puerta AND2 varían de 0 → 1 y de 1 → 0 respectivamente en la
transición:
- AND1: 0 → 1
- AND2: 1 → 0
El problema es que la puerta AND2 obtiene el valor 0 en su salida (P2) antes de que la
puerta AND1 obtenga el 1 en su salida (P1) debido a que la señal de entrada que varía (la
entrada z) se aplica por un lado directamente a la puerta AND2 mientras que por otro
antes de aplicarse a la puerta AND1 dicha señal debe pasar por un inversor previo, por lo
que se introduce un pequeño retardo adicional en este camino. Esto provocará que en un
pequeño periodo de tiempo P1 y P2 valgan 0, por lo que la función de conmutación en
ese breve periodo de tiempo valdrá también 0. Todo ello ha sido debido como puede
verse a que la señal z ha viajado por dos caminos diferentes con retardos desiguales.
Este comportamiento no deseado puede verse en el siguiente cronograma general de las
entradas, valores intermedios y salida, donde además pueden observarse los retardos en
la transmisión de la señal al atravesar las puertas AND.
1 1
x x
0 0
1 1
y y
0 0
1 1
y' y'
0 0
1 1
z z
0 0
1 1
z' z'
0 0
1 1
P2 P2
0 0
1 1
P1 P1
0 0
1 1
f f
0 0
Tema 4. Minimización 74
Existe otro tipo de riesgo donde la función de conmutación tiene que cambiar de valor,
pero en el cambio vuelve momentáneamente a su valor anterior. A estos riesgos se les
conoce como riesgos dinámicos.
1 1
x x
0 0
1 1
y y
0 0
Se puede demostrar que los riesgos dinámicos son consecuencia de los riesgos estáticos
internos al circuito por lo que si se eliminan los riesgos estáticos habremos eliminado
también los riesgos dinámicos del circuito. Para solucionar esto, se tiene un
procedimiento inmediato consistente en incluir todos los implicantes primos (tanto los
esenciales como los no esenciales) en la realización de la función de conmutación. Para
ello no realizaríamos la última etapa de elección de implicantes primos esenciales del
método de Quine-McCluskey. En el ejemplo de la función anterior f(x, y,
z)=∑m(0,4,5,7) si simplificamos con el método de Q-M (se deja como ejercicio para el
alumno) se llega a que la función quedaría como suma de los siguientes implicantes
primos:
f(x, y, z) = xz + /y/z
De este modo el circuito resultante incluiría una puerta más y una entrada más en la
puerta OR de salida, pero estaría libre de riesgos ya que la puerta P3 proporciona
siempre un 1 a la entrada de la puerta OR de salida
x y z: 101 100
Se deja para el alumno la construcción del cronograma de este circuito y la
comprobación con él de que ya no se produce la excursión al 0 en la transición 101 →
100.
zu
xy
00 01 11 10
00 1
01 1 1
11 1
10 1 1
zu
xy
00 01 11 10
00 1
01 1 1
11 1
10 1 1
zu
xy
00 01 11 10
00 1
01 1 1
11 1
10 1 1
Riesgo dinámico
se produce un riesgo dinámico en cualquiera de los dos posibles caminos que la función
siga entre ambas combinaciones de entradas:
De todos modos lo normal es que pulsos erróneos sean de muy corta duración (espurios)
y su duración dependa de los parámetros del circuito, tipos de puertas utilizadas, etc…
Como hemos visto los riesgos sólo aparecen en las transiciones por lo que en las
respuestas estacionarias (de larga duración en el tiempo) no tienen efecto. Este es el
caso de los circuitos combinacionales en donde lo que nos interesa son las respuestas
estacionarias por lo que los riesgos no suelen afectar demasiado a los circuitos
combinacionales.
Tema 5. Circuitos combinacionales 78
Tema 5
Circuitos combinacionales
Circuitos combinacionales ........................................................................................... 78
5.1 Puertas combinacionales........................................................................................ 78
5.1.1 Niveles de integración ................................................................................. 79
5.2 Circuitos aritméticos.............................................................................................. 80
5.2.1 Sumadores ................................................................................................... 80
5.2.2 Sumador BCD.............................................................................................. 83
5.2.3 Restadores ................................................................................................... 86
5.2.4 Comparadores ............................................................................................. 89
5.3 Codificadores......................................................................................................... 91
5.3.1 Conversores de código ................................................................................ 94
5.3.2 Generación y comprobación de la paridad................................................. 94
5.4 Decodificadores ..................................................................................................... 95
5.5 Demultiplexores..................................................................................................... 99
5.6 Multiplexores....................................................................................................... 102
5.6.1 Los MUX como módulos lógicos universales............................................ 106
5.6.2 El MUX como selector de datos ................................................................ 106
5.7 Acceso a buses..................................................................................................... 107
5.8 Memorias ROM ................................................................................................... 108
5.8.1 ROM programables ................................................................................... 111
5.8.2 La ROM como módulo lógico universal.................................................... 111
5.9 PLA y PAL .......................................................................................................... 112
5.10 Resumen ............................................................................................................ 114
- Seis inversores
- Cuatro puertas ( AND, OR, NAND, NOR, EXOR ) de dos entradas
- Tres puertas de tres entradas
- Dos puertas de cuatro entradas
- Una puerta de 8 entradas
- Una puerta de 13 entradas
- Dos combinaciones AND-OR de 4 entradas, etc...
Tema 5. Circuitos combinacionales 79
Sea como ejemplo el siguiente circuito integrado formado por 4 puertas OR:
En este tema vamos a tratar al principio CI de tipo SSI y MSI. Las memorias ROM,
RAM las PLA y los microprocesadores pertenecen al nivel VLSI.
- Sumadores
- Restadores
- Comparadores
5.2.1 Sumadores
Intentaremos sintetizar la función de conmutación y el circuito correspondiente de la
suma de dos números binarios positivos. Para ello fijémonos en el siguiente ejemplo:
1 1 1 1 1
0 0
1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
+ + + +
0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1
Paso 1
0 Paso 2
0 0 Paso 5
1 1 0 Paso 8
1 0 1 0
0 1 1
1 1 0 1 0 1
1 0 1 1 1 0 1 1 1 0 1 1
+ + +
0 1 1 1 0 1 1 1 0 1 1 1
0 0 1 1 0 1 1 1 0
1 0 0 1 0 0 0 1 0
Paso 3 Paso 6 Paso 9
1 1
0 1 1
1 0 0
1 0 1 1 1 0 1 1 1 0 1 1
+ + +
0 1 1 1 0 1 1 1 0 1 1 1
1 0 0 1 0 1 0 0 1 0
Paso 4 Paso 7 Paso 10
Tema 5. Circuitos combinacionales 81
( x0 + y0 ) → ( s0, a0)
( x1 + y1 + a0) → ( s1, a1)
( x2 + y2 + a1) → ( s2, a2)
( x3 + y3 + a2) → ( s3, a3)
( x4 + y4 + a3) → ( s4, a4)
( a4 ) → ( s5 )
xi yi si ai
00 00
01 10
10 10
11 01
A partir de dicha tabla sabemos que las funciones de conmutación que las sintetizan
serían las siguientes:
si = xi yi + xi yi = xi ⊕ yi
ai = xi yi
Aplicándolo al ejemplo de antes las entradas y salidas a lo largo el circuito serian las
siguientes:
La tabla verdad para las dos salidas en función de las tres entradas sería la siguiente:
x y a- s a+
000 00
001 10
010 10
011 01
100 10
101 01
110 01
111 11
De donde se obtiene que:
Este sumador completo puede usarse para sumar palabras de n bits uniéndolos en
cascada tal y como se muestra en la siguiente figura:
Este sumador paralelo de n bits es conocido como sumador con acarreo en cascada. El
inconveniente del mismo es el retardo introducido por la propagación del acarreo en las
sucesivas etapas, ya que para obtener el resultado final es necesario que el acarreo
inicial y de las sucesivas etapas llegue al SC final. Cuando el número de bits a sumar es
Tema 5. Circuitos combinacionales 83
Un circuito sumador BCD debe por tanto ser capaz de de realizar lo siguiente:
Las salidas s4s3s2s1s0 pueden variar desde 00000 (cuando A=0000 (0) y B=0000 (0))
hasta 10010 (cuando A=1001 (9) y B=1001 (9)).
Podemos obtener una función de conmutación que valga 1 solamente en los casos
anteriores si:
s4 = 1 (≥ 16)
s3 = 1 (≥ 8) y { s1=1 o s2 = 1 o s2 = s1 = 1 }
x = s4 + s3(s1 + s2)
Y el circuito sería:
Por tanto siempre que x=1 habrá que sumar 0110 a los bits de la suma s3s2s1s0 y generar
un acarreo.
- A = 0101 y B = 0011
- A = 0111 y B = 0110
Podemos simplificar el dibujo del circuito sumador en BCD de forma genérica como
sigue:
Si queremos por ejemplo sumar dos números decimales de 3 cifras codificados en BCD
podríamos hacer:
Tema 5. Circuitos combinacionales 86
Ejemplo: determinar las entradas y las salidas del circuito anterior si sumamos los
números codificados en BCD: 247 + 538
5.2.3 Restadores
Vamos a sintetizar la función de conmutación y el circuito correspondiente a la resta de
dos números binarios positivos. Las tablas verdad de la resta de dos bits y su adeudo
correspondiente es la siguiente:
xy rd
00 00
01 11
10 10
11 00
r = x y + xy = x ⊕ y
d = xy
Tema 5. Circuitos combinacionales 87
Podríamos diseñar un circuito que sirviera tanto para sumar como para restar 2 bits
controlando la operación por una señal de control:
Podemos diseñar también restadores completos (RC) formados por tres entradas y dos
salidas. La tabla verdad sería como sigue:
x y d- r d+
0 0 0 0 0 (0 – 0)
0 0 1 1 1 (0 – 01)
0 1 0 1 1 (0 – 1)
0 1 1 0 1 (0 – 11)
1 0 0 1 0 (1 – 0)
1 0 1 0 0 (1 – 01)
1 1 0 0 0 (1 – 1)
1 1 1 1 1 (1 – 11)
Tema 5. Circuitos combinacionales 88
Con ellas se podría construir un restador con adeudo en cascada de manera análoga a
como se hizo con el sumador con acarreo en cascada.
5.2.4 Comparadores
En el procesamiento de la información es frecuente tener que comparar dos palabras o
datos en general. Por ejemplo al ordenar de menor a mayor una tabla de números o al
ordenar alfabéticamente una serie de palabras se van comparando los elementos de dos
en dos y se ordenan en consecuencia.
Sean X e Y los elementos a ordenar; para esta funcionalidad pueden utilizarse los
comparadores que son circuitos combinacionales disponibles en forma integrada.
El comparador más simple es el de palabras de 1 bit (n=1). Veamos las tablas verdad de
las tres funciones a sintetizar:
1º) X = Y
Tema 5. Circuitos combinacionales 90
2º) X > Y
3º) X < Y
Obviamente las entradas en cascada del comparador precedente sólo se utilizan en caso
de que en el comparador actual X=Y. En ese caso se transmite a la salida la misma
combinación de entradas recibida del comparador precedente.
Tema 5. Circuitos combinacionales 91
5.3 Codificadores
Un codificador funciona de manera que a la salida se tiene el código con q bits de uno
de los caracteres que se están codificando.
Los codificadores más frecuentes son los binarios, en los que cada entrada corresponde
a un número decimal y la salida es la representación binaria de ese número decimal.
DEC A3 A2 A1 A0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
A3 = 8 + 9
A2 = 4 + 5 + 6 + 7
A1 = 2 + 3 + 6 + 7
A0 = 1 + 3 + 5 + 7 + 9
Tema 5. Circuitos combinacionales 92
Ejemplo: Construir un codificador sin prioridad que codifique los 10 dígitos decimales
en el código 2 a 5.
Entrada activa z4 z3 z2 z1 z0
Ninguna 0 0 0 0 0
0 0 0 0 1 1
1 0 0 1 0 1
2 0 0 1 1 0
3 0 1 0 0 1
4 0 1 0 1 0
5 0 1 1 0 0
6 1 0 0 0 1
7 1 0 0 1 0
8 1 0 1 0 0
9 1 1 0 0 0
De modo que:
z4 = 6 + 7 + 8 + 9
z3 = 3 + 4 + 5 + 9
z2 = 1 + 2 + 5 + 8
z1 = 0 + 2 + 4 + 7
z0 = 0 + 1 + 3 + 6
Tema 5. Circuitos combinacionales 93
Entradas
Salidas
activas
3210 z1 z0
0000 0 0
0001 0 0
0010 0 1
0011 0 1
0100 1 0
0101 1 0
0110 1 0
0111 1 0
1000 1 1
1001 1 1
1010 1 1
1011 1 1
1100 1 1
1101 1 1
1110 1 1
1111 1 1
De donde son inmediatos los circuitos conversores de código de 4 bits Gray ↔ binario:
x y ⊕ Paridad
0 0 0 Par
0 1 1 Impar
1 0 1 Impar
1 1 0 Par
Tema 5. Circuitos combinacionales 95
Con este tipo de circuitos podríamos tanto comprobar como generar paridad par. Con
circuitos con puertas EXNOR construiríamos análogamente generadores y
comprobadores de paridad impar.
5.4 Decodificadores
Un decodificador es un bloque combinacional cuya función es la inversa a la realizada
por un codificador:
Ejemplo: Diseñar un decodificador que detecte la presencia del número binario 1011 en
la entrada, de modo que en dicho caso la salida sea 1.
Entradas Salidas
x3 x2 x1 x0 z9 z8 z7 z6 z5 z4 z3 z2 z1 z0
0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 1 0 1 0 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0
Por tanto:
O de forma esquemática:
Tema 5. Circuitos combinacionales 97
Comparando los codificadores con los decodificadores observamos que la puerta básica
de los primeros es de puerta OR, mientras que en los segundos es la puerta AND.
a = ∑ m (0,2,3,5,6,7,8,9)
o más sencillo:
a = π M (1,4) = ( x3 + x2 + x1 + x0 )( x3 + x2 + x1 + x0 )
a = x3 + x1 + x2 x0 + x2 x0 = x3 + x1 + x0 ⊗ x2
Tema 5. Circuitos combinacionales 99
5.5 Demultiplexores
La acción del demultiplexor es conectar la única entrada de datos con una y sólo una de
las salidas. La salida elegida dependerá del valor de las entradas de control. Veamos un
ejemplo de demultiplexor de 1 a 4 líneas:
Como vemos hemos creado 3 niveles controlados cada uno de ellos por la misma
entrada de control. La señal x se irá encaminando a través de los distintos
demultiplexores dependiendo de dichas entradas de control.
Esta idea de conexión en cascada puede ser utilizada para ampliar el abanico de salida
de los decodificadores.
5.6 Multiplexores
Un multiplexor es un boque combinacional para la conducción de la información que
tiene p entradas de control, 2P entradas de datos y una salida de datos:
Tema 5. Circuitos combinacionales 103
La función del multiplexor es conectar a la única salida de datos una y sólo una de las
entradas, viniendo decidida esa entrada de datos por los valores que tomen las entradas
de control.
Entradas
Salida
de control
y2 y1 y0 z
000 x0
001 x1
010 x2
011 x3
100 x4
101 x5
110 x6
111 x7
Ejemplo: Y = 1 0 0 = Y2 Y1 Y0
xyz F
000 1
001 0
010 0
011 0
100 1
101 0
110 1
111 1
Ejemplo: Multiplexor 4 a 1.
Tema 5. Circuitos combinacionales 107
Hemos aplicado por tanto las 2n palabras de control a intervalos regulares sobre la
entrada de datos.
De manera análoga podríamos utilizar los DEMUX para transformar información serie
en información paralela, aunque en realidad esto se realiza con otros procedimientos
que veremos más adelante.
El número mínimo de buses de un sistema será como mínimo igual al número máximo
de fuentes que deben enviar información simultáneamente.
Por tanto en un bus habrá también varios destinos de la información o subsistemas a los
que deberá llegar la misma.
Cada celda de memoria contiene un bit de información, que a través de las salidas de
datos puede ser leído cuando se desee.
Para leer una palabra dada, primero se direcciona dicha palabra con los n bits, y después
se extraen los m bits que forman la palabra contenida en dicha dirección.
Tema 5. Circuitos combinacionales 109
Ejemplo: ¿Que señales de dirección habría que suministrar a una memoria de palabra de
32 bits para acceder al contenido de la posición de memoria 1024? ¿Cuantas señales
necesitaríamos si la memoria tiene una máximo de 16GB?
Cualquier red lógica combinacional con n entradas y m salidas puede considerarse como
una memoria de sólo lectura con 2n palabras de m bits, donde las entradas a la red
serían las entradas de dirección y las salidas de la red serían las salidas de datos. La
información escrita en esa memoria sería la correspondiente a las funciones de
conmutación sintetizadas por la red combinacional.
puede ser considerado como una memoria de sólo lectura con 3 entradas (x,y,z), 1 salida
(F) y 8 palabras de 1 bit almacenadas (1,0,0,0,1,0,1,1).
Aunque cualquier red lógica combinacional puede ser vista como una memoria de sólo
lectura, esta denominación suele reservarse a las memorias ROM (Read Only Memory).
1 0 0 1
0 1 1 1
0 1 0 1
1 0 0 1
1 1 1 0
1 0 1 0
1 1 1 1
0 0 0 1
- Programables por máscara (mask programmable): son memorias en las que las
conexiones entre las puertas AND y OR se establecen durante el proceso de
fabricación por el propio fabricante.
Desde el punto de vista funcional los 3 tipos de memorias ROM anteriores son
exactamente iguales.
Ejercicio: Diseñar una memoria ROM que permita sintetizar simultáneamente las
siguientes funciones de conmutación de 3 variables:
z5 = ∑ m (3,4,5,7)
z4 = ∑ m (0,2,5,7)
z3 = ∑ m (0,1,2,3,4,5)
z2 = ∑ m (0,6)
z1 = ∑ m (1,4,5,7)
z0 = ∑ m (0,2,3,6)
Las aplicaciones de las memorias ROM en los sistemas digitales sin muy variadas.
Además de usarlas para la conversión de códigos o para la síntesis simultánea de varias
funciones de conmutación, se utilizan para grabar tablas de uso frecuente, para la
grabación de secuencias específicas de caracteres, y sobre todo para la grabación
permanente de las rutinas más usadas en el sistema digital de que se trate.
Para sacar provecho de esta circunstancia habría que modificar la matriz de puertas
AND para hacerla programable, ya que recordemos que en el caso de las ROM esta
matriz es fija. Además el hecho de que dicha matriz sea fija implica que un aumento en
una variable de entrada de lugar a una duplicación en el número de puertas AND de
dicha matriz.
Para soluciona esta ligazón entre el número de entradas y el número de puertas AND se
han desarrollado estructuras programables (PAL y PLA) con la misma tipología que las
ROM, es decir:
- entradas
- matriz de puertas AND
- matriz de puertas OR
- salidas
Una PLA (Programmable Logic Array) se diferencia de una PAL en que en ella no solo
es programable la matriz de puertas AND, sino también la matriz de puertas OR.
Como ocurre con las memorias ROM, tanto las PAL como las PLA pueden utilizarse
para sintetizar simultáneamente varias funciones de conmutación, pero dada la
programabilidad de las conexiones entre las puertas AND y las entradas en las PLA y
PLA podríamos utilizar dichos circuitos para sintetizar varias funciones de conmutación
de varias variables.
5.10 Resumen
Tema 5. Circuitos combinacionales 115
Tema 6. Elementos de memoria 116
Tema 6
Elementos de memoria
Elementos de memoria ............................................................................................... 116
6.1 Sistemas secuenciales ......................................................................................... 116
6.1.1 Señal de reloj ........................................................................................ 116
6.2 El elemento básico de memoria.......................................................................... 117
6.3 Biestable SR (Set-Reset) .................................................................................... 119
6.3.1 Captación de los ceros y los unos......................................................... 122
6.4 Biestable JK........................................................................................................ 123
6.4.1 Biestables dueño-esclavo...................................................................... 124
6.5 Biestable D ......................................................................................................... 125
6.6 Biestable T.......................................................................................................... 126
6.7 Tablas de excitación para los diferentes biestables: ........................................... 127
6.8 Biestables disparados por flanco ........................................................................ 127
6.9 Estructura de los sistemas secuenciales síncronos ............................................. 129
6.10 Análisis de un sistema secuencial síncrono...................................................... 131
6.11 Diagramas de estados ....................................................................................... 133
- El estado inicial
- Valor inicial de las entradas
Un sistema secuencial pasa por tanto por diferentes estados de modo que la misma
combinación de entradas puede dar lugar a diferentes salidas si estas se aplican estando
el sistema en estados diferentes.
Por todo esto a los sistemas combinacionales se les llama también sistemas sin
memoria, y a los secuenciales sistemas con memoria. La necesidad de almacenar el
estado del sistema da lugar a la necesidad de nuevos elementos: los biestables.
También se le suele llamar cerrojo o latch. Para introducir un valor en este elemento de
memoria hay que introducir el valor a almacenar en una de las salidas directamente.
Este proceso puede resultar costoso por lo que otra posibilidad más fiable podría ser la
siguiente (basada en puertas NAND):
Por tanto siempre que AB=10 independientemente del estado del biestable el estado
final es Q=0. En segundo lugar veamos que cuando la entrada es AB=0:
AB Q n Qn Q n +1 Qn +1
10 10 01
10 01 01
01 10 10
01 01 10
En tercer lugar veamos que ocurre cuando AB=11 para cualquier estado Q del biestable:
Es decir que cuando AB=11 el estado del biestable no cambia. A esta combinación se la
llama combinación de reposo o almacenamiento.
Por tanto con AB=00 las salidas dejan de ser complementarias, por lo que esta
combinación debe evitarse. La tabla de este biestable es entonces finalmente:
AB Q n +1 Qn +1
00 11 A evitar
01 10
AB
10 01
11 Q n Qn Reposo
MN Q n +1 Qn +1
00 Q n Qn Reposo
01 10
MN
10 01
11 00 A evitar
Estas dos estructuras son el núcleo de todos los biestables que veremos más adelante.
Los biestables (también llamados flip-flops) que vamos a estudiar son: SR, JK, D y T.
Por otro lado cuando SR=00 (independientemente de la señal de reloj Rl) tenemos la
combinación de reposo o almacenamiento:
Pero además si estando ambas salidas a 1 la señal de reloj pasa a 0 (Rl=0) el biestable
comenzará a oscilar:
La tabla que determina el comportamiento del circuito en función de las entradas y del
estado anterior del biestable es:
Todo ello se hace siempre en sincronía con la señal de reloj. Por ello a estas entradas se
les llama en ocasiones entradas síncronas.
Para controlar el estado del biestable sin depender de la señal de reloj (es decir con
Rl=0) podemos incluir en el circuito entradas asíncronas. Con ellas se puede establecer
el valor del biestable a inicial.
Las señales asíncronas deben aplicarse con Rl=0, permaneciendo en si estado estable
(PrCl=11) cuando Rl=1.
Este tipo de biestables pueden dar lugar a valores erróneos si de manera indeseada las
entradas cambian mientras Rl=1. A este fenómeno se le llama de captación de los ceros
y captación de los unos:
Para solucionar este problema se hace que las entradas al biestable sean significativas
únicamente en un breve periodo de tiempo conocido como flanco de subida o flanco de
bajada.
Se puede transformar cualquier biestable disparado por nivel en biestable disparado por
flanco del siguiente modo:
Tema 6. Elementos de memoria 123
6.4 Biestable JK
El biestable SR tiene el inconveniente de que debe evitar una de las combinaciones de
entrada (SR=11) para que no aparezcan indefiniciones en las salidas. Para evitar esta
dificultad se puede utilizar el biestable JK que tiene 2 entradas síncronas JK y en el que
se resuelven las entradas problemáticas haciendo Q n +1 = Qn y en el resto de los casos
actúa como el biestable SR. Las tablas de transición de ambos biestables son entonces:
SR JK
QnSR Qn+1 QnJK Qn+1
000 0 000 0
001 0 001 0
010 1 010 1
011 * 011 1
100 1 100 1
101 0 101 0
110 1 110 1
111 * 111 0
Se puede demostrar que la ecuación que gobierna la salida de dicho circuito es:
Q n +1 = Qn J + Q n K
Como vemos en las filas -11 de la tabla de transición del biestable JK:
6.5 Biestable D
Un tipo de biestable muy sencillo y muy útil es el biestable D (de Delay):
En forma de cronograma:
6.6 Biestable T
Tiene la siguiente estructura:
Funcionamiento:
Todos los biestables están controlados por la misma señal de reloj. Cuando llega una
señal de reloj los p biestables harán una transición a un nuevo estado. Un estado está
compuesto por el valor almacenado por los p biestables.
Se obtiene que:
Tema 6. Elementos de memoria 132
Como sabemos que para los biestables D se tiene yn+1 = Dn obtenemos la tabla de
transiciones:
Ambas tablas se suelen dibujar juntas llamándose tabla de transiciones y salidas. Para
simplificar se suelen dar nombres simbólicos a cada uno de los estados obteniéndose la
tabla de estados:
Tema 6. Elementos de memoria 133
Tenemos 15 estados, por lo que necesitamos 4 variables de estado para codificarlos, por
tanto necesitamos 4 biestables. Codificaremos los 15 estados como sigue:
Tema 7
Registros, contadores y memorias
Registros, contadores y memorias............................................................................. 138
7.1 Registros .............................................................................................................. 138
7.2 Registros de desplazamiento................................................................................ 139
7.3 Contadores ........................................................................................................... 141
7.3.1 Contadores síncronos ................................................................................ 142
7.3.2 Contadores asíncronos .............................................................................. 147
7.4 Contadores obtenidos con registros de desplazamiento ...................................... 148
7.4.1 Contadores en anillo ................................................................................. 148
7.4.2 Contadores Johnson .................................................................................. 149
7.4.3 Generadores de secuencias ....................................................................... 151
7.5 Memorias RAM ................................................................................................... 154
7.5.1 Celda elemental de memoria ..................................................................... 155
7.5.2 Expansión de memorias RAM.................................................................... 157
7.5.3 Decodificación bidimensional ................................................................... 159
7.6 Memorias LIFO (Pila) ......................................................................................... 160
7.6.1 Memorias LIFO con registros de desplazamiento .................................... 161
7.6.2 Memorias LIFO con memoria RAM .......................................................... 161
7.7 Memorias FIFO (Cola) ........................................................................................ 162
7.7.1 Memorias FIFO con registros de desplazamiento .................................... 163
7.7.2 Memorias FIFO con memoria RAM.......................................................... 164
Biestables:
- Elementos básicos para el almacenamiento de información
- Almacenan un bit (cantidad mínima de información)
Registros y contadores:
- Almacenan y procesan bloques de bits (palabras)
Memorias:
- Almacenan bloques de bits (palabras)
- Permite escritura y lectura
7.1 Registros
Definición: son sistemas secuenciales síncronos formados por agrupaciones de
biestables que incorporan señales de control y entradas asíncronas comunes son
activados por la misma señal de reloj y almacenan (y pueden procesar) información.
Señales de control
Entradas
(síncronas y B0 B1 B2 B3 Salidas
asíncronas) (síncronas)
Señal de reloj
Qm-1 Qm-2 Q1 Q0
Figura 2: Registro de desplazamiento a la derecha de m bits
Pr Pr Pr Pr
x D3 Q3 D2 Q2 D1 Q1 D0 Q0 z
Rl Rl Rl Rl
Cl Cl Cl Cl
Clear
Rl
Suponiendo que todos los biestables inicialmente a cero, y que son activados por flanco
de bajada, ante la secuencia de entrada x = 01010 obtendríamos el siguiente
cronograma:
Rl
Q3
Q2
Q1
Q0
- SISO (Series Input / Series Output): una entrada y una salida (ambas en serie).
Provoca un retardo temporal en la salida de m pulsos de reloj respecto de la entrada.
E ... S
- SIPO (Series Input / Parallel Output): entrada serie y m salidas en paralelo. Puede
verse como un convertidor serie-paralelo.
E ...
Sm-1 Sm-2 S1 S0
- PISO (Parallel Input / Series Output): m entradas en paralelo y una salida serie.
Puede verse como un convertidor paralelo-serie.
Em-1 Em-2 E1 E0
... S
Em-1 Em-2 E1 E0
...
Sm-1 Sm-2 S1 S0
7.3 Contadores
Definición: un contador es un sistema secuencial con una entrada de pulsos x (que en
particular puede ser una señal de reloj) y m señales de salida zm-1,...,z0, las cuales, en
respuesta a cada pulso de entrada, toman un valor determinado de una serie de posibles
configuraciones cíclicas preestablecidas.
Señales de control
Entradas de datos
Se denominan contadores porque las salidas suelen ser una cuenta cíclica de los pulsos
de entrada en una base determinada. Por ejemplo en la siguiente figura se tiene el
diagrama de estados de un contador modulo 8.
B H
C G
D F
En este tipo de contadores las excitaciones de los biestables son función de sus propias
salidas, por lo que además de los biestables existe una lógica combinacional (figura 11).
Para su síntesis se sigue el procedimiento estándar de diseño de sistemas secuenciales
síncronos.
y0
... ... ...
ym-1
... ... ... ...
Em-1 E0 zn-1 z0
...
Bm-1 B0
Sm-1 S0
Rl
Tenemos pues que diseñar un circuito que ante la llegada pulsos de reloj presente las
configuraciones 000, 001, 010, ... , 110, 111, 000, ..., de manera indefinida. Tenemos 8
estados diferentes, de modo que el diagrama de estados correspondería al de la figura
10. Para representar los 8 estados necesitamos 3 biestables obteniendo la asignación de
estados y tabla de transiciones siguiente:
Tabla de excitaciones
y2y1y0 (n) y2y1y0 (n+1) J2K2 J1K1 J0K0
000 001 0- 0- 1-
001 010 0- 1- -1
010 011 0- -0 1-
011 100 1- -1 -1
100 101 -0 0- 1-
101 110 -0 1- -1
110 111 -0 -0 1-
111 000 -1 -1 -1
Figura 13: Tabla de excitaciones
Minimizando a partir de la tabla anterior se obtienen las siguientes ecuaciones para las
entradas de los biestables:
J2 = K2 = y1y0 J1 = K1 = y0 J0 = K0 = 1
y0
y1
y2
J2 K2 J1 K1 J0 K0
y2 y1 y0
Rl
Como vemos en este caso tenemos 6 estados, aunque como vemos sólo existen cinco
valores distintos de las salidas. Dado que existe una combinación de las salidas (la 5)
que se repite, la cual corresponde a dos estados diferentes, en este caso ya no podemos
hacer que las salidas del sistema sean igual a las salidas de los biestables.
Asignación de estados
Estado y2y1y0
A 000
B 001
C 010
D 011
E 100
F 101
Figura 15: Tabla de asignación de estados
111
110 111
000
001 101
010 100
011
D2 = y2 y1 y0 + y2 y1 y0 D1 = y2 y1 y0 + y2 y1 y0 D0 = y2 y0 + y2 y1 y0
z2 = y2 y1 y0 + y1 y0 + y2 y0 z1 = y2 y1 y0 + y1 y0 z0 = y2 y0 + y1
y0
y0
y1
y1
y2
y2
D2 D1 D0 z2 z1 z0
y2 y2 y1 y1 y0 y0
Rl
T0 Q0 T1 Q1 T2 Q2
x Rl Rl Rl
Q0 Q0
Q1
(LSB) (MSB)
Q0
Q1
Q2
T0 Q0 T1 Q1 T2 Q2
x Rl Rl Rl
(LSB) Q0 Q1 (MSB) Q 2
- Contadores en anillo
- Contador Johnson
- Generadores de secuencias
0 1 0 0 0 Q0
t Q4Q3Q2Q1Q0
0 10000
1 01000
2 00100
3 00010
4 00001
Figura 25: Tabla de posibles configuraciones
Tema 7. Registros, Contadores y Memorias 149
t0 t1 t2 t3 t4
Rl
Q0
f C = f Rl / m
Es obvio que si las configuraciones iniciales hubieran sido 00000 o 11111 el contador
quedaría atrapado en ellas indefinidamente.
Comparando este tipo de contador en anillo con los vistos anteriormente ([a]síncronos)
observamos (suponemos que están formados por m biestables):
Q0
t Q4Q3Q2Q1Q0
0 00000
1 10000
2 11000
3 11100
4 11110
5 11111
6 01111
7 00111
8 00011
9 00001
Figura 29: Tabla de configuraciones del contador Johnson del ejemplo
Esta misma tabla, pero leyendo los bits al revés da lugar al código Johnson, que se trata
de un código decimal progresivo.
Código Código
Decimal Johnson
0 00000
1 00001
2 00011
3 00111
4 01111
5 11111
6 11110
7 11100
8 11000
9 10000
t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
Rl
Q0
Como vemos, se trata de una onda que se repite cada 2m pulsos de reloj (al contrario del
contador en anillo que lo hacía cada m pulsos) por lo que se pueden utilizar este tipo de
circuitos como contadores módulo 2m.
Q0
Q4 Q3 Q2 Q1 Q0
L.C.
Este tipo de circuitos sirven para generar una secuencia de bits predeterminada en
sincronía con una señal de reloj.
Los pasos para diseñar un generador de secuencias son los dos siguientes:
Como tenemos cuatro estados (0, 00, 000, 0001), necesitaremos como mínimo 2
biestables. Dado que la base de nuestro circuito es un registro de desplazamiento y la
secuencia a generar (0001) se obtendrá de la salida Q0 del último biestable durante
cuatro pulsos de reloj, la tabla de configuraciones será la siguiente:
Tema 7. Registros, Contadores y Memorias 152
t Q0Q1
0 00
1 00
2 01
3 10
f (Q 0 , Q1 , Q 2 ) Q0
Q2 Q1 Q0
f (Q0 , Q1 , Q 2 )
1 0 0 0 0 0 1 0 0 0
t=0 t=1
f (Q0 , Q1 , Q 2 ) f (Q0 , Q1 , Q 2 )
0 0 1 0 0 0 0 0 1 1
t=2 t=3
f (Q0 , Q1 , Q 2 ) f (Q0 , Q1 , Q 2 )
Hasta ahora sabemos los valores que debe tomar f en los casos conocidos. Para terminar
hay que dar valores adecuados a f para los estados erróneos con el fin de evitar los
ciclos erróneos.
Q0Q1Q2 f
000 1
Tema 7. Registros, Contadores y Memorias 153
001 0
010 0
011 -
100 0
101 -
110 -
111 -
Figura 32: Tabla verdad de la función f
El valor más sencillo de determinar es f(1,1,1), que debe ser 0, ya que un valor
f(1,1,1)=1 metería al circuito en un ciclo erróneo.
Los otros tres hay que determinarlos uno a uno eligiendo salidas que lleven
directamente (si es posible) a un estado correcto, o en su defecto indirectamente a través
de otro estado erróneo. En el caso del ejemplo se tiene:
0 1 1 0 0 1 1
Q2 Q1 Q0
f (Q0 , Q1 , Q 2 )
1 1 1 0 1 1 1
Q2 Q1 Q0
f (Q 0 , Q1 , Q 2 )
- Si el estado es Q0Q1Q2=101:
o si f=0 el estado siguiente es el 010 (estado correcto)
o si f=1 el estado siguiente es el 011
- Si el estado es Q0Q1Q2=110:
o si f=0 el estado siguiente es el 100 (estado correcto)
o si f=1 el estado siguiente es el 101
Tema 7. Registros, Contadores y Memorias 154
De estas dos últimas posibilidades elegimos f=0 por llevar a estados correctos
directamente. De la primera elegimos la salida f=0 por llevar a un estado correcto en
menos pasos (011110100) que con f=1 (011111110100).
Q0Q1Q2 f
000 1
001 0
010 0
011 0
100 0
101 0
110 0
111 0
Figura 35: Tabla verdad final
x
Q2 Q2 Q1 Q1 Q0 Q0
c
p
d n
2n · m
z
celdas m
x m
En este tipo de memorias la lectura de los datos es no destructiva, es decir, los datos se
pueden leer tantas veces como se desee.
Otro tipo de memorias son las memorias de acceso secuencial, que son aquellas en las
que sólo se puede acceder a una posición determinada de la memoria en un momento
dado. Dicha posición puede además variar dependiendo de si la operación va a ser de
lectura o escritura.
SP
Celda básica
E de memoria L
(1 bit)
LE
Figura 38: Esquema de una celda elemental de memoria RAM
s0 s1 s2
SP
SP LE
e0 e1 e2
Figura 39: Memoria RAM de 4 palabras de 3 bits
SP LE
d0
d1
s0
RAM (4x3) s1
e0 s2
e1
e2
En primer lugar se necesitan como es obvio tres pastillas de palabras de 1 bit. Para
construir la memoria pedida no hay más que hacer comunes a las tres pastillas las
señales de control y las de dirección. Las entradas para escritura y lectura de datos serán
individuales de cada pastilla. Con estas directrices se obtiene la memoria buscada, tal y
como puede verse en la figura 41:
SP
LE
d0
d1
Figura 41: Memoria RAM 4x3 construida a partir de pastillas RAM 4x1
Con este procedimiento se obtiene la memoria ampliada que puede verse en la figura
42.
Tema 7. Registros, Contadores y Memorias 159
d2 d3
SP SP
SP SP
LE
d0 d1
e0 e1 e2
s0 s1 s2
Figura 42: Memoria RAM de 16x3 construida a partir de pastillas RAM 4x3
Por último señalar que combinando las dos técnicas anteriores se puede aumentar tanto
la arquitectura de la memoria RAM como su tamaño.
d0
d1
d2
d3
obtienen circuitos mucho más simétricos y por tanto fáciles de implementar en las
pastillas de silicio.
La solución sería por tanto la de la figura 44. En ella con los bits de dirección d0 yd1 se
selecciona una de las 4 filas de la matriz de celdas, y con d2 y d3 la celda
correspondiente dentro de esa fila.
d2 d3
d0
d1
No debe olvidarse que aunque las celdas estén dispuestas en formato de filas y
columnas, en realidad sigue siendo una memoria de 16 palabras de 1 bit (no 4 palabras
de 4 bits).
Por otro lado desde el punto de vista funcional no hay ninguna diferencia entre
memorias que usen uno u otro tipo de decodificación.
- m palabras de n bits
- n entradas de datos
- p entradas de control
- n salidas de datos
La lectura de datos en las memorias LIFO es destructiva, de modo que una vez leído un
dato, éste desaparece.
Tema 7. Registros, Contadores y Memorias 161
e s
n n
· m palabras
c ·
p ·
n bits
La escritura se hace sobre la palabra 0 y antes de introducir un dato hay que desplazar
todas las palabras a la derecha. A esta operación se la denomina “apilamiento”. Para
indicar que el desplazamiento sea hacia la derecha se activa la señal de control D I = 1 .
La lectura se hace de manera análoga sobre la palabra 0. Tras leer la palabra hay que
desplazar todas las demás palabras hacia la izquierda (haciendo D I = 0 ) en la
operación que denominada “desapilamiento”.
e0 e1 e2
s0 s1 s2
DI
Figura 46: Memoria LIFO de 8 palabras de 3 bits construida con registros de desplazamiento
- Operación de escritura:
1º) Incrementar el contador ( AD = 1 )
2º) Escribir en la dirección de memoria a la que apunta el contador
- Operación de lectura:
1º) Leer el dato apuntado por el contador
2º) Decrementar el contador ( AD = 0 )
Memoria RAM
AD
·
Contador ·
·
- m palabras de n bits
- n entradas de datos
- p entradas de control
- n salidas de datos
e
· m palabras
c ·
p ·
s
n bits
La lectura de datos en las memorias FIFO es, al igual que en las LIFO, destructiva.
Al igual que con las memorias LIFO existen dos formas de implementar este tipo de
memorias:
a) con registros de desplazamiento
b) con memoria RAM
mediante multiplexores con tantas entradas como longitud tengan los registros de
desplazamiento (figura 49).
e0 e1 e2
Contador
s0 s1 s2
Figura 49: Memoria FIFO de 8 palabras de 3 bits construida con registros de desplazamiento
- Operación de escritura:
1º) Incrementar el contador CE
2º) Escribir el dato en la posición indicada por CE
- Operación de lectura:
1º) Leer el dato apuntado por el contador CL
2º) Decrementar el contador CL
Destacar que cuando CL=CE la memoria estará vacía y cuando exista algún dato se
tendrá que CE>CL.
Tema 7. Registros, Contadores y Memorias 165
Memoria RAM
Escritura
CE
·
·
·
Lectura
CL