Electronica Digital
Electronica Digital
Electronica Digital
DIGITAL
PROGRAMA SINTÉTICO
1 01 2
2 00 4
3 94
4 01
5 100
10 bits = 1024
4. Programación de la operación. Es bastante sencillo diseñar sistemas
digitales, cuya operación está controlada por medio de un grupo de
instrucciones archivadas denominado programa.
CARÁCTER CÓDIGO
0,1,2,3,4,5,6,7,8,9 Decimal
0,1 Binario
0,1,2,3,4,5,6,7 Octal
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Hexadecimal
Sistema posicional
Ejemplo:
Valor posicional
2 1 9
MSB LSB
25 24 23 22 21 20
1 1 0 0 1
2510 = 318
83 8 2 8 1 8 0
0 0 3 1
8x3 + 1x1 = 25
Conversión de sistema decimal a hexadecimal
161 160
16x1 1x9
16 + 9 = 25; 2510=1916
TABLA 1
Decimal Digito Dígitos binarios
hexadecimal
8=23 4=22 2=21 1=20
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
Ejemplo:
2BC = 0010 1011 1100
2 B C
Para convertir un número octal a binario se sustituye cada digito octal por su
representación binaria con tres dígitos.
TABLA 2
1 2 7 4
Suma
Ejemplos:
Resta
Ejemplos:
COMPLEMENTOS
Complemento a 1
Bit 0
Doble word 0000 0000 0000 0000 0000 0000 0000 0000
0 =1 [0,1]
00 =3 [0,1,2,3]
000 =7 [0,1,2,3,4,5,6,7]
0000 = 15 [0,…,15]
5 dígitos = 31
10 dígitos = 1,023
12 = 4,095
16 = 65,335
00010011
11101100
Complemento a 2
Por ejemplo,
el complemento a 2 de
00010011
11101100
000 10011 será 11101100
+1
11101101.
Restar
Ejemplo:
91 – 46 = 45
1 11
1 11
10 110
Ejemplo:
465 – 8F =
En algunas designaciones cero se conoce como nivel bajo y uno como nivel
alto.
COMPUERTAS LÓGICAS
AND OR NOT
Tabla de verdad
FAN OUT
DIAGRAMA DE TIEMPO
Los teoremas boléanos nos pueden servir para simplificar las expresiones y
los circuitos lógicos.
Utilizando los teoremas anteriores tenemos el siguiente ejemplo:
8 compuertas
7 compuertas
3 compuertas
COMPUERTA XOR
El resultado de salida será 1 si las dos entradas son distintas, sean 1-0, 0-1.
A B X
0 0 0
0 1 1
1 0 1
1 1 0
COMPUERTA XNOR
El resultado de salida será 1 si las dos entradas son del mismo valor.
A B C
0 0 1
0 1 0
1 0 0
1 1 1
TEOREMAS DE MORGAN
Ejemplos:
UNIVERSALIDAD DE COMPUERTAS NAND Y NOR
Ejemplos:
X = AB + CD
Y = (A + B) (C + D)
EJERCICIO 1
Salida del sensor P = 0, solo cuando la presión es menor que 220 psi.
T P R W
0 0 0 0
0 0 1 0
0 1 0 0 a) T P R
0 1 1 0 1 0 0
1 0 0 1
1 1 0
1 0 1 0
1 1 0 1
1 1 1 1
11 1
b)
EJERCICIO 2
S = Salida
Cin A B Cout S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
MAPA DE KARNAUGH
A B
0 0 1
0 1 0
1 0 0
1 1 1
CÓDIGO GRAY
Es un sistema utilizado principalmente en sistemas de posición. Ya sea
angular o lineal. Sus aplicaciones principales se encuentran en la industria y la
robótica. En esta última se utilizan unos discos codificados para dar la
información de posición que tiene un eje particular.
El Código Gray fue diseñado para prevenir señales espurias de los switches.
Actualmente es usado para facilitar la corrección en los sistemas de
comunicaciones.
Hasta la primera mitad de los años 40 los circuitos lógicos se realizaban con
válvulas de vacío y dispositivos electromecánicos. Los contadores
necesitaban potencias muy elevadas a la entrada y generaban picos de ruido
cuando varios bits cambiaban simultáneamente. Tomando esto en cuenta
Frank Gray invito un método para convertir señales analógicas a grupos de
código binario reflejado utilizando un aparato diseñado con válvulas de vacío,
con el cual garantizó que variaría con solo un bit.
011
100
El problema con el sistema binario es que con interruptores mecánicos es
realmente difícil que todos los interruptores cambien al mismo tiempo. En la
transacción de todos los estados mostrados tres interruptores cambian de
sitio, en el lapso en que los interruptores están cambiando, se pueden
presentar salidas de información espurias. Si las salidas mencionadas
alimentan un circuito secuencial, probablemente el sistema presentara un
error en la entrada de datos.
0 000 000
1 001 001
2 011 010
3 010 011
4 011 100
5 111 101
6 101 011
7 100 111
Agrupamiento
La expresión de salida X se puede simplificar adecuadamente combinando los
cuadrados en el mapa k que contenga 1
Cin A B Cout S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
EJERCICIO 3
ENTRADAS SALIDAS
A1 A0 B1 B0
0 0 0 0 0 0 1
0 0 0 1 0 1 0
0 0 1 0 0 1 0
0 0 1 1 0 1 0
0 1 0 0 1 0 0
0 1 0 1 0 0 1
0 1 1 0 0 1 0
0 1 1 1 0 1 0
1 0 0 0 1 0 0
1 0 0 1 1 0 0
1 0 1 0 0 0 1
1 0 1 1 0 1 0
1 1 0 0 1 0 0
1 1 0 1 1 0 0
1 1 1 0 1 0 0
1 1 1 1 0 0 1
QUINE McCLAUSKEY
EJERCICIO 4
ENTRADAS SALIDA
A B C D E S
0 0 0 0 0 0 0
1 0 0 0 0 1 1
2 0 0 0 1 0 1
3 0 0 0 1 1 1
4 0 0 1 0 0 0
5 0 0 1 0 1 1
6 0 0 1 1 0 0
7 0 0 1 1 1 1
8 0 1 0 0 0 0
9 0 1 0 0 1 0
10 0 1 0 1 0 0
11 0 1 0 1 1 1
12 0 1 1 0 0 0
13 0 1 1 0 1 1
14 0 1 1 1 0 0
15 0 1 1 1 1 0
16 1 0 0 0 0 0
17 1 0 0 0 1 1
18 1 0 0 1 0 0
19 1 0 0 1 1 1
20 1 0 1 0 0 0
21 1 0 1 0 1 0
22 1 0 1 1 0 0
23 1 0 1 1 1 1
Las salidas que no dan como resultado un número primo son:
Se agrupan términos con la misma cantidad de Se combinan los términos que tienen un solo
unos. uno con los que tienen dos unos, los que tienen
dos unos con los que tienen tres unos y así
sucesivamente. Dos términos se podrán
combinar siempre y cuando exista un solo
cambio entre ellos.
1,3 000-1
Cantidad Número
1,5 00-01
de unos
1,17 -0001
00001 1
1
2,3 0001-
00010 2
3,7 00-11
00011 3
3,11 0-011
2 00101 5
3,19 -0011
10001 17
5,7 001-1
00111 7
5,13 0-101
01011 11
3
17,19 100-1
01101 13
7,23 -0111
10011 19
19,23 10-11
4 10111 23
3,19 -0011
5,7 001-1
5,13 0-101 *
17,19 100-1
7,23 -0111
19,23 10-11
Los implicantes primos pueden formar parte de la función reducida, para esto se elabora una tabla
llamada de implicantes primos.
Se toman en cuenta los números que pueden ser generados por otros términos para no repetirlos
00 1 1 1 1 1
01 1 1
11
10 1 1 1
CIRCUITOS COMBINACIONALES
Circuitos MSI
Los sistemas combinacionales son aquellos en los que las salidas dependen exclusivamente de las
entradas, luego para una misma entrada siempre se tiene la misma salida.
Hasta ahora el diseño de funciones lógicas, o de circuitos lógicos, se ha realizado mediante el uso
exclusivo de compuertas básicas. Los circuitos que contienen estas puertas básicas son conocidos como
SSI (Small Scale of Integration) por que contienen un número pequeño de transistores.
Un paso más profundo en el diseño HARDWARE es realizar un diseño SEMI-CUSTOM, basado en el uso
de bloques constructores más complejos. Esto se puede hacer mediante el uso de sistemas o circuitos
MSI (Medium Scale of Integration) dónde el número de puertas básicas puede llegar a 100.
Más avanzados son los sistemas LSI (Large Scale of Integration ~1000), VLSI (Very Large Scale of
Integration >1000), y ULSI (Ultra Large Scale of Integration >100,000).
· CODIFICADORES Y DECODIFICADORES
· MULTIPLEXORES Y DEMULTIPLEXORES
· SUMADORES, COMPARADORES...
Además, estos dispositivos pueden usarse también para la realización de funciones complejas con un
considerable ahorro de área frente al uso de puertas básicas (circuitos SSI). Algunas de las ventajas la
podemos ver a continuación:
1. Realizaciones más compactas (al tener soluciones completas en un sólo circuito integrado con
algunas pocas puertas extra para realizar la adaptación en algunos casos).
2. Menos alambrado (puesto que para usar los circuitos MSI sólo se requiere alambrar entradas y
salidas, la función lógica que realizan ya está alambrada en su interior)
3. Soluciones modulares (toda la lógica relacionada con una subfunción está contenida en un sólo
circuito integrado)
CIRCUITOS SUMADORES
El sumador binario es la célula fundamental de todos los circuitos aritméticos, ya que mediante sumas
(y complementos) es posible realizar restas.
A continuación, se describe el diseño paso a paso de un sumador binario expandible de acuerdo con el
número de bits de los datos a sumar.
EL MEDIO SUMADOR
Un medio sumador es un sumador capaz de sumar dos datos de un sólo bit y producir un bit de acarreo
de salida. Como se muestra en el siguiente diagrama de bloques
La manera como realiza la suma y produce el acarreo el medio sumador se desglosa en la siguiente
tabla de verdad.
El medio sumador no puede ser interconectado con otros medios sumadores para formar un sumador
más grande, por ello es necesario diseñar un sumador que admita otra entrada aparte de los datos a
sumar, es decir, un sumador de 3 datos de 1 bit, éste es denominado sumador completo y su diagrama
de bloques es como se muestra a continuación
Un análisis de esta tabla de verdad y el uso de Mapas de Karnaugh nos lleva a las siguientes
expresiones para C1 y S:
EL SUMADOR BINARIO DE n BITS
La ventaja del sumador completo de un bit es que permite conectarse en cascada con otros sumadores
completos para realizar un sumador completo de varios bits. Por ejemplo, en la siguiente figura se
muestra cómo se conectarían cuatro sumadores completos de 1 bit para construir un sumador binario
de cuatro bits.
Algunos sumadores binarios en circuito integrado de la familia TTL son los siguientes:
En la siguiente figura se muestra el diagrama funcional del 74LS83 (sumador binario de 4 bits)
Sumador de 4 bits en Cascada
Sumador BCD
Consta de dos 7483 los cuales están conectados entre sí por medio de las salidas del 7483 #1 y las
entradas del 7483 #2. El resultado de la suma de los dos números binarios está dado en BCD.
Ejemplo: Sume 7+8. En binario sería 0111 + 1000 = 1111. Ahora para obtener el resultado en BCD
debemos sumarle 6 = 0110 y obtenemos 1 0101. Que en BCD equivale a 15.
Los dos números llegan a las entradas del 7483 #1 y éste realiza la suma en binario de los dos
números. Luego compara este resultado con el número 9 (binario). Si el resultado es mayor que nueve
el carry del 7483 #1 arroja un 1 lógico, lo que hace que las entradas B3 y B2 del 7483#2 queden en el
mismo estado que el carry, es decir, 1 lógico. Este número correspondería al seis que se suma en el
proceso. La respuesta de la suma se ve reflejada en las salidas del 7483 #2 y el carry del mismo.
Comparadores de Magnitud
Son circuitos que comparan el valor binario de dos números, proporcionando información de
cuál es mayor, menor, o si ambos son iguales. Son sistemas muy usados en ingeniería. Su bloque y
tabla de funcionamiento básico son los siguientes:
La figura muestra la simbología y la tabla de verdad para el comparador de magnitud 74HC84 de cuatro
bits que también está disponible como el 74LS85.
Entradas de Datos
El 74 HC85 compara dos números binarios sin signo de cuatro bits. Uno de ellos es A 3A2A1A0, al cual se
le llama palabra A; el otro es B3B2B1B0, al cual se le llama palabra B. El termino palabra se utiliza para
designar un grupo de bits que represente cierto tipo específico de información. Aquí las palabras A y B
representan cantidades numéricas.
Salidas
Posee tres salidas activas en ALTO. La salida OA>B estará en ALTO cuando la magnitud de la palabra A
sea mayor que la magnitud de la Palabra B. La salida de O A<B será ALTO cuando la magnitud de la
palabra A sea menor que la magnitud de la palabra B. La salida O A=B estará en ALTO cuando la palabra
A y B sean idénticas.
Entradas en Cascada
La conexión de las entradas en cascada nos proporciona un medio para expandir la operación de
comparación a más de cuatro bits. Cuando se van a conectar en cascada dos comparadores, las salidas
de menor orden se conectan con las entradas correspondientes del comparador de mayor orden. Esto
se muestra en la Figura en donde el comparador de la izquierda compara los cuatro bits menos
significativos. Sus salidas se alimentan a las entradas en cascada del comparador a la derecha, el cual
compara los bits de mayor orden. Las salidas del comparador de mayor orden son las salidas finales
que indican el resultado de la comparación de ocho bits.
Ejemplo
Describa la operación del arreglo de comparación de ocho bits de la figura para los siguientes casos:
solución:
a) El comparador de mayor orden compara sus entradas A7A6A5A4 = 1010 y B7B6B5B4 = 1011 y
produce OA<B = 1 sin importar que niveles se apliquen a sus entradas en cascada que provienen del
comparador de menor orden. En otras palabras, una vez que el comparador de mayor orden detecte
una diferencia en los bits de mayor orden de las dos palabras de ocho bits, sabra cual palabra de ocho
bits es mayor sin tener que analizar los resultados de la comparación de menor orden.
b) El comparador de mayor orden ve A 7A6A5A4 = B7B6B5B4 = 1010, por lo que debe analizar sus
entradas en cascada para ver el resultado de la comparación de menor orden. El comparador de menor
orden tiene A3A2A1A0= 1111 y B3B2B1B0 = 1001, lo cual produce un 1 en su salida OA>B y en la entrada
IA>B del comparador de mayor orden. Este comparador detecta el 1 y como sus entradas de datos son
iguales, produce un nivel ALTO en su salida O A>B para indicar el resultado de la comparación de ocho
bits.
DECODIFICADORES
Un decodificador es un circuito lógico con n entradas y 2 n salidas, tal que para cada combinación de
entradas se activa al menos una salida. Si sólo se activa una salida se denomina decodificador
completo.
Tanto las entradas como las salidas, principalmente estas últimas, pueden ser:
· ACTIVAS A NIVEL ALTO: la salida activa es 1 y la no activa 0.
Además, el número de entradas de Habilitación puede ser de una o más, y pueden estar activas a nivel
alto o bajo.
De 2 a 4 líneas
Un Decodificador de BCD a 7 Segmentos se utiliza para tomar una entrada BCD de cuatro bits y
proporcionar las salidas que pasaran corriente a través de los segmentos apropiados para que se
visualice el digito decimal. La lógica de este decodificador es diferente ya que cada salida se activa para
más de una combinación de entradas. Por ejemplo, el segmento e se debe activar para cualquiera de
los dígitos 0, 2, 6 y 8, lo cual significa que se activará cada vez que ocurra uno de los códigos 0000,
0010, 0110, 1000. El diagrama se muestra a continuación:
Dependiendo del dígito decimal que se muestre, se ilumina el conjunto parti cular de
LED. Por ejemplo, para mostrar el dígito numérico 4, necesitaremos encender cuatro
de los segmentos de LED correspondientes a b, c, f y g. Por lo tanto, los diversos
dígitos de «0 a 9» y los caracteres de «A a F» se pueden mostrar uti lizando una
pantalla de 7 segmentos como se muestra.
Selección de datos
Un multiplexor es un circuito lógico que acepta varias entradas de datos y
permite solo una de ellas alcanzar la salida, la dirección deseada de los datos
de entrada hacia la salida es controlada por entradas de selección. El
multiplexor, actúa como un interruptor de posiciones múltiples controlado
digitalmente, donde el código digital de la entrada de selección controla que
entrada de datos será trasladada hacia la salida.
Una señal que está multiplexada debe demultiplexarse en el otro extremo.
Según la forma en que se realice esta división del medio de transmisión,
existen varias clases de multiplexación:
1. Selector de entradas.
Un circuito decodificador completo genera todos los productos fundamentales (mintérminos) de las
variables de entrada. Cuando las salidas del decodificador son activas a nivel bajo, para realizar la
función en suma de productos basta con conectar las salidas correspondientes a los mintérminos de la
función usando puertas NAND:
A veces puede ocurrir que necesitemos decodificar más líneas de las que nos permite nuestro circuito,
se bebe entonces construir un decodificador de mayor tamaño usando decodificadores de menor
tamaño:
Por otro lado, la figura siguiente representa el diagrama lógico del circuito 74147, que es un codificador
de prioridad de Decimal a BCD natural; en la tabla de funcionamiento adjunta se puede notar la
diferencia con el anterior.
Poseen, n entradas de selección, para 2n entrada de datos, proporcionando dos salidas: una para el
dato directo y otra para el dato negado.
La idea fundamental en la utilización de multiplexores (MUX) y demultiplexores (DEMUX) es el ahorro
de líneas de comunicación, es decir, el uso de una sola línea para realizar múltiples funciones, o para
conectar a través de ella múltiples fuentes de información o señales a transmitir.
El uso de pocas líneas de comunicación se logra por compartir por tiempo la línea, es decir, en un
momento dado sólo una de las señales puede ser transmitida. El esquema fundamental para lograr
esto, se muestra en la siguiente figura:
Multiplexor de 8 Entradas
El IC más común en el mercado es el 74ALS151 y se muestra a continuación
Expansión usando Mux.
Las Entradas de selección S3S2S1S0 seleccionarán una de las entradas para que pase a X. La Entrada S 3
determinará que multiplexor estará habilitado, cuando sea igual a 0 el multiplexor superior estará
habilitado y pasará el dato hacia la compuerta OR, si es igual a 1 se habilitará el multiplexor inferior. Se
puede observar que para que exista diferentes estados en la entrada de Selección del multiplexor es
necesario un INVERSOR.
Al ser una función de 4 variables necesitamos un MUX de 8 a 1 líneas (o sea, con tres variables de
control)
2. Se crea un mapa de manera que la numeración en las columnas coincida con la entrada que se
pretende seleccionar.
Así, las columnas, vendrán determinadas por las variables de control del MUX, y las filas por el dato o
los datos que se quieren transmitir. Las variables de control deben ser las de menor peso. Evaluando
cada columna identificamos el valor que hay que colocar en cada entrada.
I0 I1 I2 I3 I4 I5 I6 I7
000 001 010 011 100 101 110 111
A 0 1 0 1 1 0 0 0 1
0 1 2 3 4 5 6 7
1 0 0 0 0 1 0 1
1 8 9 10 11 12 13 14 15
3. Hacemos el diagrama lógico del circuito colocando en las entradas de datos lo que la tabla nos
indique.
Nuestra tabla nos dice que en la entrada I0 de nuestro MUX, debemos colocar un 1; que en la I 1, un
0; ...
Nos debe quedar un circuito como el de la figura:
Deducir la función que realiza el siguiente circuito
Demultiplexores
En realidad, no existen como tales, sino que vienen definidos por los decodificadores/demultiplexores.
La función que debe realizar es la inversa de la que realiza el MUX, o sea, debemos seleccionar una
salida por donde transmitir el dato de la entrada.
Por tanto, el circuito constará de 1 entrada de datos, n entradas de selección de salida, y 2 n salidas. El
Decodificador/DEMUX 74138 que ya conocemos utiliza su entrada de habilitación G1 para entrada de
Datos:
DESARROLLO DE
PRÁCTICAS
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
ELECTRÓNICA
SUMADOR COMPLETO
COMPARADOR DE MAGNITUD
NÚMEROS PRIMOS
OBJETIVO:
SUMADOR COMPLETO
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
- Para Cout
- Para Salida
- Para Cout
- Para Salida
METODO McCLAUSKEY
- Para Cout
- Para Salida
COMPARADOR DE MAGNITUD
A B
A A A
0 0 0 0 0 0 1
0 0 0 1 0 1 0
0 0 1 0 0 1 0
0 0 1 1 0 1 0
0 1 0 0 1 0 0
0 1 0 1 0 0 1
0 1 1 0 0 1 0
0 1 1 1 0 1 0
1 0 0 0 1 0 0
1 0 0 1 1 0 0
1 0 1 0 0 0 1
1 0 1 1 0 1 0
1 1 0 0 1 0 0
1 1 0 1 1 0 0
1 1 1 0 1 0 0
1 1 1 1 0 0 1
METODO DE KARNAUGH
SALIDA A > B
Sal A > B
=
SALIDA A< B
Sal A < B
SALIDA A=B
Sal A = B =
=
METODO DE McCLAUSKEY
SALIDA A > B
4 0100
8 1000
9 1001
12 1100
13 1101
14 1110
(4,12) -100 *
(8,9) 100-
(8,12) 1-00
(9,13) 1-01
(12,13) 110-
(12,14) 11-0 *
1-0- (8,9,12,13) *
1-0- (8,12,9,13) *
SALIDA A< B
1 0001
2 0010
3 0011
6 0110
7 0111
11 1011
(1,3) 00-1 *
(2,3) 001-
(2,6) 0-10
(3,7) 0-11
(3,11) -011*
(6,7) 011-
(2,3,6,7) 0-1-
(2,6,3,7) 0-1-
a b a1 a 0 b0 a 0 b1b0 a1b1
a0 b0 a1 b1 a1b1
SALIDA A = B
0 0000 *
5 0101 *
10 1010 *
15 1111 *
Sal A = B =
SALIDA A< ơ
SALIDA A = ơ
=
NÚMEROS PRIMOS
Out:= + + + + + + + +
3 => 00011
5 => 00101
Out =
=
Transistor
Compuertas Digitales
Multiplexor
Circuitos
Combinatorios
MSI
PLA
GAL GAL
Compuesta por PLA y dispositivo de memoria
GAL
Circuitos Combinatorios y
Secuenciales
CPLD
LSI
VLSI
FPGA
El FPGA que es un dispositivo VLSI también puede estar compuesto por varios CPLD.
Además son Circuitos Combinatorios y secuenciales.
Dispositivos de Memoria
Microcontrolador.
Procesador Digital de
Señales
DSP
Los circuitos que se han considerado hasta ahora son circuitos combinatorios cuyos niveles
de salida, en cualquier instante, depende de los niveles presentes; en las entradas la fig. 1
muestra un diagrama de bloques para un sistema digital general, que conjuga compuertas
lógicas combinatorias con dispositivos de memoria.
NAND
00 1 S R Q Q
01 1 0 0 1* 1*
10 1 0 1 0 1
11 0 1 0 1 0
1 1 Q /Q
Este tipo de latch funciona de la siguiente manera; si tenemos S=0 y la otra entrada=0 y
C=0, entonces tenemos que: 0x0=1 (según compuerta NAND) y ese 1 pertenece a la
salida Q. Según el diagrama, 1 llega a la siguiente entrada de la compuerta AND, donde
C=0, por lo tanto, se tiene que 1x0=1 (valor de Q), y ese 1 llega a la entrada de la compuerta
AND donde S=0, por lo tanto 0x1=1 (valor de Q) y se hace el ciclo hasta que el latch ya se ha
estabilizado como en este caso. (Ver figura a).
En este caso, la salida Q=1 no es válida ya que por definición Q debe ser con valor 0.
Para las demás combinaciones se NOR hace lo mismo, por ejemplo cuando
tenemos S=0, entrada=0 y C=1, entonces, 0x0=1 (valor de Q), ese 1
llega a la entrada de la siguiente 00 1 compuerta AND y como C=1 se tiene
que 1x1=0 (valor de Q), ese 0 llega a la otra entrada de la compuerta AND
01 0
donde S=0 y 0x0=1, en ese momento se estabiliza el latch y tenemos que el valor
de Q=1 y Q=0 como se observa en la 10 0 tabla anterior.
11 0
El siguiente latch funciona de manera similar al anterior, solo que este contiene
compuertas tipo NOR.
S C Q Q
0 0 Q Q
0 1 1 0
1 0 0 1
1 1 0 0
Si tenemos S=0, entrada=1 y C=0, entonces 0+1=0 (valor de Q), ese 0 llega a la
entrada de la compuerta NOR en donde C=0 y como 0+0=1 (valor de Q), ese mismo 1 llega a
la entrada de la compuerta y 0+1=0, etc., se estabiliza el latch y tenemos como salida el
mismo valor de Q Y Q, es decir los valores no cambian.
En el caso de que S=1, entrada=0 y C=1, se tendrá: 1+0=0 (valor de Q) y ese 0 llega a
la entrada de la compuerta donde C=1, 0+1=0 (valor de Q), ese valor llega a la entrada de la
compuerta donde S=1 y se cumple el ciclo, el latch se estabiliza y los valores de salida quedan
Q=0 y Q=0, pero como ya se dijo en el ejemplo del primer latch, este valor no es válido para
Q.
La señal de reloj se distribuye a todas las partes del sistema y la mayoría de las salidas
del sistema (si no es que todas) pueden cambiar de estado solo cuando el reloj hace una
transición. Las transiciones se indican en la figura. Cuando un reloj cambia de 0 a 1, a esto se
le llama transición con pendiente positiva (TPP); cuando el reloj cambia de 1 a 0, a eso se le
llama transición con pendiente negativa (TPN).
Los símbolos siguientes se utilizan de acuerdo con el tipo de impulsos que queremos
ocupar, ya sea impulsos altos (Fig. 1) o impulsos bajos (Fig.2).
La siguiente figura representa un Flip-Flop:
El ejemplo siguiente muestra un tren de impulsos donde se tiene una señal de CLK, la
entrada S y la entrada C. Por lo tanto habrá una señal para QCLK.
Estas formas de onda se pueden analizar de la siguiente manera:
2.- Cuando ocurre la TPP del primer CLK (punto a), las entradas S Y C son =0 por lo
tanto el FF no se afecta y permanece en el estado Q=0.
3.- Cuando ocurre la TPP del segundo CLK (punto c) la entada S ahora es alta, con
C aun baja. Así, el FF se fija al estado 1 en el borde ascendente del CLK.
4.- Cuando el tercer CLK hace su transición positiva (punto e), encuentra que S=0 y
C=1 lo que ocasiona que el FF se borre al estado 0.
5.- El cuarto CLK establece el FF de nuevo al estado Q=1 (punto g), porque S=1 y
C=0 cuando ocurre la TPP.
6.- El quinto pulso también encuentra que S=1 y C=0 cuando hace la TPP. Sin
embargo Q ya es alta y permanece así.
7.- La condición S = C = 1no se debe usar porque da como resultado una condición
no válida.
A B C
0 0 0
0 1 1
1 0 1
TABLA11. C1OMPUERTA
1 OR
A B C
0 0 0
0 1 0
TABLA 2.1COMPUERTA
0 0 AND
1 1 1
DISPOSITIVOS DE COLECTOR ABIERTO
FLIP- FLOP J-K
Las entradas J y K controlan el estado del FF de la misma manera en que las entradas S
y C lo hacen para el FF sincronizado por reloj, excepto por una diferencia importante: la
condición J=K=1 no resulta en una salida ambigua (no válida). Para esta condición J=1, K=1,
el Flip-Flop siempre pasará a su estado opuesto cuando se lleve a cabo la transición positiva
de la señal del reloj. A esto se le llama operación “modo de cambio de estados”.
2. Cuando ocurre el borde con pendiente positiva del primer pulso de CLK (punto a),
existe la condición J=0, K=1. Así el FF limpiará al estado Q=0.
3. El segundo CLK encuentra J=K=1 cuando hace su transición positiva (punto c). Esto
hace que el FF cambie a su estado opuesto o complemente a Q=1.
Este FF solo tiene una entrada síncrona de control, D, que significa datos. La operación
del FF es muy simple: Q pasará al mismo estado que esté presente en la entrada D cuando
ocurra una TPP en CLK. En otras palabras, el nivel presente en D se almacenará en el FF en
el instante en que ocurre la TPP como se muestra en la siguiente figura.
FLIP-FLOP T
Solo posee una entrada además de la del reloj. Se le denomina "toggle". Si hay un 0 en
la entrada T, cuando se aplica el pulso de reloj la salida mantiene el valor del estado presente.
Si hay un 1 se complementa.
La tabla característica resume el comportamiento del FF tipo T disparado por flanco negativo.
EQUIVALENCIAS
Los tipos de Flip-Flop que vimos anteriormente tiene la capacidad de cambiar a otro tipo
de FF implementándole algunos cambios en sus entradas, por ejemplo: el tipo D lo podemos
transformar en un tipo T conectando su entrada a una compuerta AND (figura a). El tipo J-K se
puede cambiar por un tipo T (figura b) o un tipo D agregando un inversor al FF disparado por
el borde (figura c).
ENTRADAS ASÍNCRONAS
No importando las entradas, cuando se activan estas señales se les da la más alta
prioridad si S=0 (se activa), la salida Q=1, C=1. Si C=0 (se activa), la salida Q=0, S=1.
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 1 0
0 1 1 1
1 0 0 0
sea de 0 a 1 o de 1 a 0, dependiendo lo que diga la tabla de verdad del FF J-K. Y es así como
el contador va saltado un número en forma descendiente al del estado actual.
J, K = 1
2. Las entradas de la compuerta NAND son las salidas de los FFs B y C, y por ende la
salida de la compuerta pasará a BAJO cuando B=C=1. Esta condición ocurrirá cuando
el contador pase del estado 101 al estado 110 en la TPN del pulso de entrada 6. El
estado en BAJO de la salida de la compuerta inmediatamente reestablecerá el
contador al estado 000. Una vez que los FFs se hayan reestablecido, la salida de la
compuerta retornará a ALTO, ya que la condición B=C=1 ya no existe.
C B A
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1. Tiene cuatro FFs J-K con salidas Q0, Q1, Q2 y Q3, donde Q0 es el LSB y Q3 es el MSB.
2. Cada FF tiene una entrada CP (pulso de reloj, CLK). La entrada de reloj para Q 0 y Q1,
3. Cada FF tiene una entrada asíncrona CLEAR activa en BAJO, C D. Estas están
conectadas entre sí a la salida de una compuerta NAND de dos entradas, con
entradas MR1 y MR2 (Master Reset). Las dos entradas MR deben ser ALTAS para
reestablecer el contador a 0000.
Los contadores de rizo son el tipo más simple de contadores binarios, ya que requieren
de un número mínimo de componentes para producir una determinada operación de conteo.
Presentan una desventaja importante, cada FF es disparado por la transición en la salida del
FF anterior. Debido al retardo inherente en la propagación (t pd) de cada FF, el segundo FF no
responderá sino hasta un tiempo t pd después de que el primer FF reciba una transición activa
de reloj; el tercer FF no responderá hasta un tiempo igual a 2 t pd después de esa transición de
reloj. En otras palabras, los retardos de propagación de los FF se acumulan en forma tal que
el enésimo FF no puede cambiar de estado hasta un tiempo igual a N*t pd después que la
transición de reloj ocurra. Como se muestra en la figura siguiente.
Treloj N Ttransición
T transición= Periodo.
1
f max
N t pd
t pd = Tiempo de propagación.
Los contadores síncronos pueden ocuparse para contadores más rápidos para que no
exista tiempo de propagación.
En este tipo de contador todos los FF se disparan en forma simultánea por medio de los
pulsos de reloj.
Ventajas de los contadores síncronos sobre los asíncronos:
De manera similar, se puede ver que el FF D debe cambiar estados en cada TPN que
ocurra mientras A=B=C=1. Cuando el conteo es 0111 la siguiente la TPN debe cambiar D al
estado 1; cuando el conteo es 1111 la siguiente TPN debe cambiar D al estado 0. Conectando
la señal lógica ABC a las entradas J y K del FF D, este FF cambiará estados solo cuando
A=B=C=1.
Por lo tanto, el principio básico para construir un contador síncrono se puede establecer
así:
“Cada FF debe tener sus entradas J y K conectadas de tal forma que sean ALTAS solo
cuando las salidas de todos los FFs de orden inferior estén en el estado ALTO”.
of Clock
0 - 0 0 0
1 1 1 0 0
2 1 1 1 0
3 1 1 1 1
4 0 0 1 1
5 0 0 0 1
6 0 0 0 0
DISEÑO DE CONTADORES SÍNCRONOS
Existen varios métodos para diseñar contadores que sigan secuencias arbitrarias. Idea
básica en los controladores síncronos todos los FF son disparados al mismo tiempo. Antes de
cada pulso de reloj las entradas J y K de cada FF deben tener el nivel correcto para asegurar
que cada FF cambie hacia el estado correcto.
0 0 No hay cambio
0 → 0 0 0 0 *
Q
0 → 1 0 1 1 * 0 1 0
1 → 0 1 0 * 1 1 0 1
1 → 1 1 1 * 0 1 1 /Q
13 → 11 → 7 → 2 → 10 → 5 → 8
↑ ↓
− − − − − − − − 3 ← 12 ← 1
A B C D A B C D
0 0 0 0 0 − 1 0 0 0 1 0 * 0 * 0 * 1 *
0 0 0 1 1 − 12 1 1 0 0 1 * 1 * 0 * * 1
0 0 1 0 2 − 10 1 0 1 0 1 * 0 * * 0 0 *
0 0 1 1 3 − 13 1 1 0 1 1 * 1 * * 1 * 0
0 1 0 0 4 − 3 0 0 1 1 0 * * 1 1 * 1 *
0 1 0 1 5 − 8 1 0 0 0 1 * * 1 0 * * 1
0 1 1 0 6 − 10 1 0 1 0 1 * * 1 * 0 0 *
0 1 1 1 7 − 2 0 0 1 0 0 * * 1 * 0 * 1
1 0 0 0 8 − 1 0 0 0 1 * 1 0 * 0 * 1 *
1 0 0 1 9 − 11 1 0 1 1 * 0 0 * 1 * * 0
1 0 1 0 10 − 5 0 1 0 1 * 1 1 * * 1 1 *
1 0 1 1 11 − 7 0 1 1 1 * 1 1 * * 0 * 0
1 1 0 0 12 − 3 0 0 1 1 * 1 * 1 1 * 1 *
1 1 0 1 13 − 11 1 0 1 1 * 0 * 1 1 * * 0
1 1 1 0 14 − 0 0 0 0 0 * 1 * 1 * 1 0 *
1 1 1 1 15 − 0 0 0 0 0 * 1 * 1 * 1 * 1
DIAGRAMA DE ESTADOS
4 9
3 → 13 → 11
↑ ↓
14 12 7
↑ ↓
0 → 1 2
↑ ↓
15 8 ← 5 ← 10
6
JA CD
AB 00 01 11 10
00 0 1 1 1
01 0 1 0 1
11 * * * *
10 * * * *
J A C D BC C D
J A BC C D
KA
00 01 11 10
00 * * * *
01 * * * *
11 1 0 1 1
10 1 0 1 1
KA D C
JB CD
AB 00 01 11 10
00 0 1 1 0
01 * * * *
11 * * * *
10 0 0 1 1
J B AD AC
KB CD
AB 00 01 11 10
00 * * * *
01 1 1 1 1
11 1 1 1 1
10 * * * *
JC CD
AB 00 01 11 10
00 0 0 * *
01 1 0 * *
11 1 1 * *
10 0 1 * *
Jc= B/D + AD
KC CD
AB 00 01 11 10
00 * * 1 0
01 * * 0 0
11 * * 1 1
10 * * 0 1
K C A BD AB A D
K C A BD A B D
JD CD
AB 00 01 11 10
00 1 * * 0
01 1 * * 0
11 1 * * 0
10 1 * * 1
J D C AB
KD CD
AB 00 01 11 10
00 * 1 0 *
01 * 1 1 *
11 * 0 1 *
10 * 0 0 *
K D AC BC
MEMORIAS
Una máquina de estado simple usa uno o más FFs para almacenar el (los) estado (s)
interno (s). El patrón de unos y ceros en las salidas Q de los FFs son los ESTADOS
ACTUALES de la máquina de estado. Cuando ocurre un flanco positivo o negativo en la
entrada de la señal de reloj, el estado actual es reemplazado por el próximo estado. Esto es
posible construyendo un circuito lógico combinacional que acepte el estado actual como
entrada y calcule el siguiente estado como salida. Dicha salida es leída por los FFs en la
transición del siguiente pulso de reloj.
Una máquina de estado que únicamente usa el estado actual para calcular el estado
siguiente no es muy interesante. Una variación más útil es aquella que permite el uso de
entradas para afectar la transición de los estados. Las entradas externas interactúan dentro
del circuito lógico combinacional con el estado actual para determinar el estado siguiente (ej.
Un contador precargable). A este tipo de configuración que necesita del estado actual para
producir el siguiente se llama máquina tipo MOORE, y aquella máquina de estados que en
base al estado actual y entradas externas calcula el estado siguiente, esa llamada máquina de
estados tipo MEALY.
Entradas Externas
Cto. Lógico
Combinacional
Salidas Externas
Estado de Cto. Lógico
Próximo Información Estado Actual Combinacional
estado
110 001
010 111
100 011
000
101
Entradas Externas
Cto. Lógico
Combinacional
101
E=1
E=0
E=1
E=1
Este ejemplo nos dice que si mi entrada externa es 1 salta al siguiente número
consecutivo, si es 0 salta al número anterior.
VHDL (Hardware Description Lenguaje)
– Disponibilidad pública
Desventajas
– Complejo
Una entidad es el bloque elemental de diseño en VHDL, las entidades son todos los
elementos electrónicos (sumadores, contadores, compuertas, FF, memorias, multiplexores,
etc.) que forman de manera individual o en conjunto un sistema digital.
PUERTOS DE ENTRADA-SALIDA.
Cada una de las señales de entrada-salida en una entidad son referidas como PUERTO,
el cual es similar a una terminal (PIN) de un símbolo esquemático. Todos los puertos que son
declarados deben tener un nombre, un modo y un tipo de dato.
Comparador
A A=B
A<B o 3 pines.
El NOMBRE se utiliza como una forma de llamar al puerto; el MODO permite definir la
dirección que tomará la información y el TIPO define que clase de información se transmitirá
por el puerto.
Un modo puede tener uno de cuatro valores de: in (entrada), out (salida), in out
(entrada/salida) y buffer.
Modo in se refiere a las señales de entrada, es unidireccional y nada más permite el flujo
de datos hacia adentro de la entidad.
Modo out se refiere a las señales de salida, es unidireccional y nada más permite el flujo
de datos hacia adentro de la entidad.
TIPOS DE DATOS.
3. Bit_vector, que representa un conjunto de bits para cada variable de entrada y salida.
A1 A0 Bit_vector: se puede declarar el número de bits que sean necesarios.
A Bit
Cout Bit
Sumador de 1 bit.
Dentro de la programación se declara la entidad de la siguiente manera:
entity comp_and is
C: out bit);
end comp_and
entity circuito is
b0: in bit;
F: out bit);
end circuito;
entity circuito is
port ( a, b: in Bit_vector (3
down to 0);
F: out bit);
end circuito;
Para hacer la declaración de las librerías y paquetes en el programa de VHDL, se hace
de la siguiente manera:
– library ieee;
– use ieee.std_logic_1164.all;
– use work.std_arith.all;
La palabra all se introduce cuando queremos usar todas las funciones o paquetes que
contenga esa librería dentro del programa.
ARQUITECTURA.
– Funcional
– Estructural
begin
{cuerpo de la arquitectura}
end <nombre>;
Estilo funcional. Se expone la forma en la que trabaja el sistema, es decir, las
descripciones consideran la relación existente entre las entradas y las salidas del circuito, sin
importar cómo esté organizado en su interior. Se utilizan la declaración de procesos y las
instrucciones secuenciales del tipo if-then-else.
Ejemplo funcional:
Si a = b entonces c = 1
Si a /= b entonces c = 0
library ieee;
use ieee.std_logic_1164.all;
entity comp is
c: out bit);
end comp;
begin
process (a,b)
begin
end process;
end compara;
Estilo por flujo de datos. Indica la forma en que los datos se pueden transferir de una
señal a otra sin necesidad de declaraciones secuenciales. Se emplean ya sea las
instrucciones when-else, with-select-when, o bien, las ecuaciones booleanas que describen el
comportamiento del circuito.
library ieee;
use ieee.std_logic_1164.all;
entity comp_xor is
port ( a, b: in std_logic;
f: out std_logic);
end comp_xor;
begin
‘1’;
end comp;
Ejemplo de flujo de datos usando WITH-SELECT-WHEN
library ieee;
use ieee.std_logic_1164.all;
d: in std_logic_vector(0 to 2);
f: out std_logic);
end cto;
begin
with d select
end selec;
library ieee;
use ieee.std_logic_1164.all;
use work.compuerta.all;
entity estructura is
port ( a, b, s : in std_logic;
c: out std_logic);
end estructura;
begin
end estruc;
A continuación se muestra un ejemplo de un multiplexor 8 to 1 y la arquitectura que este
programa maneja.
library ieee;
use ieee.std_logic_1164.all;
i0,i1,i2,i3,i4,i5,i6,i7: in std_logic;
end multi;
begin
i1 when "001“,
i2 when "010",
i3 when "011",
i4 when "100",
i5 when "101",
i6 when "110",
i7 when others;
end mux;
Ejemplo de un decodificador:
library ieee;
use ieee.std_logic_1164.all;
end decodificador;
case entradas is
end process;
end deco;
Ejemplo de un FF-JK:
library ieee;
use ieee.std_logic_1164.all;
end ffjk;
end if;
end if;
end process;
end arq_ffjk;
library ieee;
use ieee.std_logic_1164.all;
clk, x: in std_logic;
y: out std_logic);
end maquina;
begin
case edo_presente is
when a =>
when b =>
when c =>
end case;
end if;
end mealy;
use ieee.std_logic_1164.all;
end contador;
begin
case edo_presente is
end if;
end cont;
VERILOG
Estos dos niveles de descripción pueden mezclarse, dando lugar a los denominados
diseños mixtos.
Existen multitud de lenguajes HDL en el mercado (de hecho inicialmente cada fabricante
disponía de su propio lenguaje), sin embargo la necesidad de unificación ha hecho que en la
actualidad sólo existan dos grandes lenguajes: VHDL y Verilog. Ambos están acogidos a
estándares IEEE (VHDL en 1987 y Verilog en 1995). Existen defensores y detractores de cada
uno de ellos. Con carácter general se dice que es más fácil aprender Verilog al ser un
lenguaje más compacto.
Verilog nació en 1985 como un lenguaje propietario de una compañía (Cadence Design
System), pero en 1990 se formó OVI (Open Verilog International) haciendo dicho lenguaje de
dominio público, permitiendo a otras empresas que pudieran emplear Verilog como lenguaje,
con objeto de aumentar la difusión de dicho lenguaje.
ESTRUCTURA GENERAL
<declaraciones de señales>
endmodule
o Cada módulo dispone de una serie de entradas y salidas a través de las que se
interconecta con otros módulos, aunque puede no tener entradas ni salidas.
o Fuera de los módulos sólo puede haber directivas de compilador, que afectan al
fichero a partir del punto en el que aparecen.
Los argumentos del módulo (que le permiten comunicarse con el exterior) pueden ser de
tres tipos:
o output: salidas del módulo. Según el tipo de asignación que las genere serán:
wire si proceden de una asignación continua o reg si proceden de una
asignación procedural.
o inout: entrada y salida del módulo. Son variables de tipo wire.
input Cin, a, b;
endmodule
input [3:0] a, b;
input cin;
assign {cout,sum}=a+b+cin;
endmodule
Ejemplo de un FF-D:
input set, reset, clk;
input [31:0] d;
output [31:0] q;
reg [31:0] q;
begin
if (reset)
q=0;
else if (set)
q=1;
else
q=d;
end
endmodule
Ejemplo de un Contador:
output [3:0]salida;
reg [3:0]salida;
integer i;
initial
begin
salida=0;
end
begin
if (reset)
begin
salida=0;
end
else
if (bandera)
begin
salida=salida+1;
$display("Salida=%d",salida);
end
else
begin
salida=salida-1;
$display("Salida=%d",salida);
end
end
endmodule