Electronica Digital

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 179

ELECTRÓNICA

DIGITAL
PROGRAMA SINTÉTICO

I. SISTEMAS NUMÉRICOS Y CÓDIGOS


II. ALGEBRA DE BOOLE Y MÉTODOS DE OPTIMIZACIÓN

III. CIRCUITOS COMBINADOS

IV. CIRCUITOS SECUENCIALES

V. PRINCIPIO DE CONVERSIÓN ANALÓGICA

VI. DISPOSITIVOS LÓGICOS PROGRAMABLES


INTRODUCCIÓN

ELECTRÓNICA es la ciencia que estudia los fenómenos relacionados


con el transporte de carga eléctrica en medios materiales, junto
con la construcción de dispositivos, circuitos y sistemas basados en
ellos. Esta ciencia se divide en Analógica y Digital.

La Electrónica Analógica es aquella que trabaja con variables


continuas, de tal forma que un pequeño cambio en alguna variable
puede producir un gran cambio en el comportamiento del circuito,
por lo tanto, las variables serán números reales. Un ejemplo de
esto puede ser un amplificador de señal.

La Electrónica Digital es aquella que trabaja con variables discretas.


Un pequeño cambio en alguna de las variables del circuito (siempre
que no cambie su valor discreto), no producirá un cambio
apreciable en el comportamiento del circuito, es decir, el
comportamiento del circuito no depende del valor exacto de la
señal. Sin conocer el valor exacto de la señal de entrada podemos
dar un valor de salida.

El termino digital se utiliza mucho en el vocabulario del mundo


actual, debido a que se han vuelto muy utilizadas las técnicas
digitales en casi todas las áreas de la vida: computadoras,
automatización, robots, ciencia médica, y tecnología, transporte,
telecomunicaciones, entrenamientos, exploración en el espacio,
etc. En este documento se encuentran los principios
fundamentales, conceptos y operaciones que son comunes para
todos los sistemas digitales.
VENTAJAS DE LAS TÉCNICAS DIGITALES

1. Los sistemas digitales generalmente son más fáciles de diseñar.


Emplean circuitos de comunicación donde no son importantes los
valores exactos de corriente y voltaje, si no únicamente el rango en el
que estos se encuentran.

2. Facilidad para almacenar información. Esto se logra con circuitos de


memoria que pueden almacenar información y retenerla el tiempo que
sea necesario. No necesariamente tiene que ser una memoria.

3. Mayor exactitud y precisión. Los sistemas digitales pueden manejar el


número de dígitos de precisión que usted necesite, siempre añadiendo
más circuitos de comunicación. En los sistemas analógicos, la precisión
está limitada a 3 o 4 dígitos, ya que los valores de voltajes y corrientes
dependen de forma directa y los valores componentes del circuito.

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.

5. Los circuitos digitales se afectan menos por el ruido. Las fluctuaciones


en el voltaje (ruido) no son tan críticas en los sistemas digitales porque
en ellos no es importante el valor exacto de un voltaje.

6. Se puede fabricar más circuitería digital sobre pastillas de circuito


integrado.
SISTEMAS NUMÉRICOS Y CÓDIGOS

Un sistema numérico es el conjunto de símbolos y reglas que se utilizan para


la representación de datos numéricos o cantidades.

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

Los sistemas de numeración son sistemas posiciónales en los que el valor


relativo que representa cada símbolo o cifra de una determinada cantidad
depende de su valor absoluto y de la posición relativa que ocupa dicha cifra;
el valor que proporciona cada posición está íntimamente ligado al valor de la
base del sistema de numeración utilizado. La base de un sistema es el
número de símbolos distintos que utiliza un sistema.

Ejemplo:

21910 = (100=102*2) + (10=101*1) + (1=100*9) = 200 + 10 + 9 = 219

Valor posicional

1012 = (4=22*1) + (2=21*0) + (1=20*1) = 4 + 0 + 1 = 510


Conversión de decimal a binario

Para convertir números enteros en decimal a su respectivo número en


binario, se divide sucesivamente el número decimal y los sucesivos cocientes
entre 2, hasta que el cociente en una de las divisiones tome el valor 0. La
unión de todos los restos obtenidos, escritos en orden inverso nos
proporciona el número inicial expresado en el sistema binario.

LSB bit menos significativo

MSB bit más significativo

2 1 9

MSB LSB

Ejemplo: conversión número 25 a binario


0 1 1 0 0 1

25 24 23 22 21 20

1 1 0 0 1

16x1 + 8 x1 + 4x0 + 2x0 + 1x1 = 25

Conversión de decimal a octal


Para convertir un número dado en sistema decimal a octal se puede proceder
de la misma manera que en el sistema binario, o simplemente se escribe un
número tomando en cuenta que valor posicional tienen en el sistema octal.

Utilizando el mismo número que en el sistema binario tenemos:

2510 = 318

83 8 2 8 1 8 0

0 0 3 1

8x3 + 1x1 = 25
Conversión de sistema decimal a hexadecimal

Para convertir un número de sistema decimal a hexadecimal se realiza de


forma similar a los dos sistemas anteriores.

161 160

16x1 1x9

16 + 9 = 25; 2510=1916

Conversión de octal y hexadecimal a binario

Para convertir un número hexadecimal a binario se sustituye cada digito


hexadecimal por su representación binaria con cuatro dígitos.

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

0010 1011 1100

Para convertir un número octal a binario se sustituye cada digito octal por su
representación binaria con tres dígitos.

TABLA 2

Digito octal Digitas binarios


4=22 2=21 1=20
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Ejemplo:

12748 =1 010 111 100

1 2 7 4

001 010 111 100


Operaciones básicas

Suma

Es semejante a la suma en el sistema decimal, con la diferencia que se


manejan los dígitos de cada sistema, de tal forma que cuando el resultado
excede de los símbolos utilizado se agrega el exceso (acarreo) a la suma
parcial siguiente a la izquierda.

Ejemplos:
Resta

Es similar a la decimal teniendo en cuenta que, al realizar los restos parciales


entre dos dígitos de idénticas posiciones, uno del minuendo y otro del
sustraendo, si el segundo excede al primero se sustrae una unidad de digito
demás a la izquierda en el minuendo.

Ejemplos:

COMPLEMENTOS

El problema que tratan de resolver los complementos es expresar números


negativos en el sistema binario, valiéndose únicamente de señales que solo
pueden ser verdaderas o falsas, es cierto que una de las señales podría
representar el signo y el resto de las cifras formarían siempre un valor
positivo, pero la electrónica del dispositivo seria compleja porque debería ser
capaz de restar cuando encontrara el signo menos. Los complementos
permiten hacer restas con sumas y reducen así la electrónica de la máquina.

Complemento a 1

Se obtiene invirtiendo estado de todas sus cifras incluyendo los ceros a la


izquierda hasta completar la capacidad del registro. Por ejemplo, el valor
10011 en un registro de 8 bits será 00010011 y su complemento a 1 será
11101100.

Bit 0

Nibble 0000 int, float

Byte 0000 0000 char -128, -126, …,-1, 0, 1, …,127

Unsigned char 0 … 255

Word 0000 0000 0000 0000

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

N dígitos = 2n-1 (valor máximo que puedo expresar con n dígitos)

00010011

11101100

Complemento a 2

Se obtiene sumando 1 al complemento a 1.

Por ejemplo,

el complemento a 2 de

00010011

11101100
000 10011 será 11101100

+1

11101101.

Restar

El complemento a 2 de un número binario se puede considerar directamente


su equivalente negativo. Por lo tanto, la resta de dos números puede
obtenerse sumando al minuendo el complemento a 2 del sustraendo.

Ejemplo:

91 – 46 = 45

1 11

1 11
10 110

Cuando en el resultado de la suma sobra un bit, que se desborda por la


izquierda, no se toma en cuenta ya que el número resultante no puede ser
más largo que el minuendo.

Para realizar operaciones de números en sistemas diferentes se convierten a


un sistema donde se pueda realizar la operación.

Ejemplo:

465 – 8F =

ALGEBRA DE BOOLE Y MÉTODOS DE OPTIMIZACIÓN

Constantes y variables booleanas


Una variable booleana es una cantidad que puede, en diferentes ocasiones
ser igual a cero o a uno. Las variables booleanas se emplean con frecuencia
para representar el nivel de voltaje presente en un alambre o en las
terminales de entrada y salida de un circuito. Por lo regular el valor booleano
de cero podría asignarse a cualquier voltaje en el intervalo de cero a 0.8
volts, en tanto que el valor booleano de uno podría ser asignado a cualquier
voltaje en el intervalo de 2 a 5 volts.

En algunas designaciones cero se conoce como nivel bajo y uno como nivel
alto.

COMPUERTAS LÓGICAS

AND OR NOT

C = A*B C=A+B A≠S


AND, NAND, OR, NOR, XOR, NOT

Tabla de verdad

Una tabla de verdad es un medio para describir la manera en que la salida de


un circuito lógico depende de los niveles lógicos que haya en la entrada del
circuito. La tabla enumera todas las combinaciones posibles de niveles
lógicos que se encuentren en las entradas con su nivel de salida
correspondiente.

FAN OUT

El término “fan” se traduce abanico y se emplea en los circuitos integrados


digitales para expresar su capacidad de “empuje” (fan out) o de “succión”
(fan in) para con otros circuitos lógicos

Es la capacidad de suministrar tensión a n entradas de n compuertas sin


siquiera deformar la señal dentro del margen del ruido admitido. Si el
número de compuertas se supera se puede tener un desequilibrio en los
niveles lógicos y el circuito no funcionará. También es llamado diseminación
de control o grado de absorción.
En algunos circuitos, a la salida de una puerta deben conectarse varias
entradas de otra puerta. El número de entradas que pueden conectarse a
una misma salida está limitada por un número máximo que debe calcularse
siempre conectando puertas pertenecientes a una misma familia lógica. El
fan-out se mide en unidades de carga.

Conviene no tener un fan-out ni muy alto, ni muy bajo, ya que es un posible


indicador de un diseño pobre, si no es posible evitarlo, es preferible un fan-
out bajo que un alto.
SALIDAS TÓTEM

Mediante el transistor T2 se consigue que cuando un transistor conduce (T 4)


el otro (T3) es abierto. De esta manera se consigue tener un 1 de salida pero
con la ventaja de que aunque pasa corriente por T 4 su caída de tensión es 0 v
y su disipación de potencia es 0 mv y la posición disipada en T 4 es baja ya que
T2 consigue que cuando T3 conduzca T4 esta abierto, provocando que la
intensidad en T4 = 0 mA.
BUFFER DE TERCER ESTADO

Un buffer es un dispositivo que evita el efecto de carga en un circuito. Es un


amplificador operacional funcionando como seguidor; por lo tanto, el voltaje
y la corriente no disminuye en el circuito, ya que este toma el voltaje de la
fuente de alimentación del operacional y no de la señal que se esta
introduciendo, por lo que si una señal llegara con poca corriente el circuito
seguidor compensaría esa pérdida con la fuente de alimentación del
amplificador operacional, ya sea este bipolar o unipolar.

DIAGRAMA DE TIEMPO

Un diagrama de tiempo es una gráfica de formas de ondas digitales, que


muestra la relación temporal entre varias señales y como varia cada señal en
relación con las demás. Puede contener cualquier número de señales
relacionadas entre sí. Examinando un diagrama se puede determinar los
estados nivel alto o nivel bajo de cada una de las señales.
Utilizando el circuito
IMPLEMENTACIÓN DE CIRCUITOS A PARTIR DE EXPRESIONES BOOLEANAS.

Si la operación de un circuito se detiene por medio de una expresión


booleana se puede implantar directamente un diagrama de circuito lógico a
partir de esa expresión.

Si se detiene a un circuito por x = A * B * C, inmediatamente sabríamos que


se requiere una compuerta AND de 3 entradas.

Si necesitáramos un circuito x = A + /B, emplearíamos una compuerta OR de


dos entradas con un inversor.
TEOREMAS DE BOOLE

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

Un avión emplea un sistema para vigilar las rpm, presión y temperatura de


sus motores usando sensores que operan como siguen.

 Salida del sensor de rpm = 0, solo cuando la velocidad es menor que


4800 rpm.

 Salida del sensor P = 0, solo cuando la presión es menor que 220 psi.

 Salida del sensor de T = 0, solo cuando la temperatura es menor a


200°F.

La figura muestra el circuito lógico de advertencia a la cabina para ciertas


combinaciones de condiciones del motor.

a) Determine qué condiciones del motor advierten al piloto.

b) Cambie este circuito a otro que utilice solo compuertas NAND.


Tabla de verdad

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

Tabla para un sumador completa de un bit.


A,B = Entradas de un bit

Cin = Acarreo de entrada

Cout = Acarreo de salida

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

El mapa de Karnaugh es un método gráfico que se utiliza para simplificar una


ecuación lógica para convertir una tabla de verdad a su circuito lógico
correspondiente en un proceso simple y ordenado. Aunque un mapa de
Karnaugh se puede utilizar para resolver problemas con cualquier número de
variables de entrada, su utilidad práctica se limita a 6 variables.

Formas del mapa de Karnaugh

Al igual que una tabla de verdad es un medio para demostrar la relación


entre las entradas lógicas y la salida que se busca.

 La tabla de verdad proporciona el valor de salida x para cada


combinación de valores de entrada. El mapa de Karnaugh proporciona
la misma información en forma diferente, cada caso en la tabla de
verdad corresponde a un cuadrado en el mapa.

A B
0 0 1

0 1 0

1 0 0

1 1 1

 Los cuadrados del mapa de Karnaugh se marcan de modo que los


cuadrados horizontalmente adyacentes solo difieran en una variable.

 Código Gray: es un sistema en el que dos valores sucesivos


difieren solamente en uno de sus dígitos, es usado para facilitar
la corrección de errores en los sistemas de comunicaciones.

 Se debe hacer lo mismo tanto de manera vertical como horizontal,

 Una vez que el mapa de karnaugh se ha llenado con 0 y 1, puede


obtenerse la expresión de suma de productos para la salida X
operando con OR aquellos que contienen un 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.

En la actualidad se sigue utilizando para el diseño de mapas de Karnaugh, los


cuales son utilizados a su vez en la implementación de circuitos
combinacionales y secuenciales.

Las computadoras antiguas indicaban posiciones abriendo y cerrando


interruptores utilizando tres posiciones como entrada usando base 2.

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.

El código Gray resuelve este problema cambiando solamente un digito a la


vez.

Decimal Gray Binario

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

Agrupamiento de números de pares

Se deben de agrupar un par de 1 que son vertical u horizontalmente


adyacentes entre sí. Estos dos términos se pueden agrupar para dar como
resultante que elimine una variable, ya que esta aparece en forma normal y
complementada.

El agrupamiento de un par de 1 adyacentes en un mapa k elimina la variable


que aparece en forma complementada y no complementada.
Ejemplos:

Se tienen los datos del ejercicio 2.

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

Tabla de un comparador de magnitud.

ENTRADAS SALIDAS

A B A>B A<B A=B

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

Es un método de simplificación de funciones booleanas, es funcionalmente


idéntico a la utilización del mapa de Karnaugh, pero su forma tabular lo hace
más eficiente para implementación en lenguajes computacionales.

La forma de desarrollar este método con una combinación binaria se muestra


en el siguiente ejemplo.

EJERCICIO 4

Tabla de los números primos que hay del 1 al 23

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:

1 00001 3 00011 7 00111 13 01101 19 10011

2 00010 5 00101 11 01011 17 10001 23 10111

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

Se vuelven a combinar los términos que tienen un solo cambio.


1,3,5,7 00--1 1,3 000-1

1,3,17,19 -00-1 1,5 00-01

1,5,3,7 00--1 1,17 -0001

1,17,3,19 -00-1 2,3 0001- *

3,7,19,23 -0-11 3,7 00-11

3,19,7,23 -0-11 3,11 0-011 *

3,19 -0011

5,7 001-1

5,13 0-101 *

17,19 100-1

7,23 -0111

19,23 10-11

Los términos que en su fila tienen * son los que


no se pudieron combinar a estos términos se
les denomina implicantes términos.

El resultado de la última combinación se pueden eliminar términos ya que son iguales.

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

000 001 011 010 110 111 101 100

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).

En un computador se realizan principalmente operaciones de codificación y decodificación de datos


usando codificadores y decodificadores; transmisión y control de datos usando líneas de bus,
multiplexores y demultiplexores; y procesado de datos mediante circuitería aritmética.

En nuestro computador podemos encontrarnos los siguientes sistemas MSI:

· 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)

4. Facilidad de mantenimiento (por la misma razón que el punto anterior).

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.

De lo cual es evidente la expresión lógica para cada salida: C= A.B y S =


Con lo cual, la implementación del medio sumador es como se muestra a continuación

EL SUMADOR COMPLETO DE UN BIT

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.

SUMADORES EN CIRCUITO INTEGRADO

Algunos sumadores binarios en circuito integrado de la familia TTL son los siguientes:

7480 Sumador Completo de 1 bit.

7482 Sumador Completo de 2 bits.

7483 Sumador Completo de 4 bits.

74283 igual al 7483 pero con diagrama de pines diferentes

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:

a) A7A6A5A4A3A2A1A0 = 10101111 B7B6B5B4B3B2B1B0 = 10110001

b) A7A6A5A4A3A2A1A0 = 10101111 B7B6B5B4B3B2B1B0 = 10101001

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.

Por ejemplo, este es un circuito decodificador completo de 3 a 8 líneas, permitiría la activación de un


dispositivo al proporcionarle la dirección de dicho dispositivo. Dispone de una entrada de
HABILITACIÓN (enable) que conecta o desconecta el dispositivo, en este caso dicha entrada es activa a
NIVEL BAJO, ya que el dispositivo se activa cuando dicha entrada recibe un ‘0’ lógico.

Los decodificadores pueden dividirse en diferentes tipos:

· EXCITADORES (DRIVERS) que controlan algún dispositivo.

· NO EXCITADORES, los que no se usan para dicho fin.

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.

· ACTIVAS A NIVEL BAJO: la salida activa es 0 y la no activa 1.

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.

Podemos encontrar decodificadores de muy diversos “tamaños”:

De 2 a 4 líneas

De 3 a 8 líneas (bin a oct)

De 4 a 16 líneas (bin a hex)

Convertidores de códigos: BCD/decimal y BCD/7-seg

Decodificador completo de 3 a 8 líneas: CIRCUITO 74X138


El decodificador 74138 posee salidas activas en BAJO, las cuales solamente se activará una
dependiendo de las entradas y de las líneas de HABILITACIÓN. Podemos ver en la tabla de verdad que a
medida que suceda el conteo binario se ira activando su salida correspondiente.
Decodificador de BCD a Decimal
También se encuentra disponible el 74LS42 o el 74HC42 como decodificador cuya salida cambia a BAJO
solo cuando se aplique su entrada BCD correspondiente. Se le conoce como decodificador de 4 a 10
líneas. Su representación gráfica y su tabla de verdad se muestran a continuación.

Decodificador de BCD a 7 Segmentos


Uno de los métodos más simples y populares para visualizar datos numéricos utiliza la configuración de
7 segmentos para formar los caracteres decimales del 0 al 9 y algunas veces los caracteres
hexadecimales A-F. Un arreglo común utiliza diodos emisores de luz (LEDs) para cada segmento. Al
controlar la corriente que fluye a través de cada LED, algunos segmentos se encenderán y otros no de
manera que se genere el patrón del carácter deseado. La figura muestra algunos patrones de cómo se
alumbran los segmentos. Por ejemplo, el número 6 se iluminan todos los segmentos a excepción del
segmento a.

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:

Existen dos ti pos de display de 7 segmentos , su principal diferencia es la conexión


que debemos implementar para encenderlos, anti guamente la electrónica digital era
lógica positi va o negati va de acuerdo con cómo lo elegía el diseñador o por
necesidad de la aplicación.
En los 7 segmentos de Cátodo Común, el punto circuital en común para todos los
Led es el Cátodo (Gnd), 0 Volt y se prenden con un UNO lógico mientras que el
Ánodo común el punto de referencia es Vcc (5 Volt) y se prenden con un CERO
lógico.

display 7 segmentos ánodo y cátodo común interior


Para encender y apagar una parte parti cular de la pantalla, confi gure el pin
apropiado ALTO o BAJO (HIGH o LOW) tal como lo harías con una salida normal. Para
que algunos segmentos sean claros y otros oscuros, permiti endo que se genere en la
pantalla el patrón de caracteres deseado del número. Esto nos permite mostrar cada
uno de los diez dígitos decimales del 0 al 9 en la misma pantalla de 7 segmentos.

¿Cómo Funciona Un Display 7 Segmentos?

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.

La siguiente tabla de la verdad muestra los segmentos individuales que deben


iluminarse para producir dígitos y caracteres. Tenga en cuenta que la tabla de
verdad para la pantalla de 7 segmentos del ánodo común es exactamente opuesta a
la de la pantalla de 7 segmentos del cátodo común.
MULTIPLEXORES

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:

 Multiplexación por división de frecuencia

 Multiplexación por división de tiempo

 Multiplexación por división de código

 Multiplexación por división de longitud de onda


Un multiplexor puede ser comparado con un conmutador controlado.

En electrónica digital, un multiplexor, es un circuito usado para el control de


un flujo de información que equivale a un conmutador. En su forma más
básica se compone de dos entradas de datos (A y B), una salida de datos y
una entrada de control. Cuando la entrada de control se pone a 0 lógico, la
señal de datos A es conectada a la salida; cuando la entrada de control se
pone a 1 lógico, la señal de datos B es la que se conecta a la salida...
El multiplexor es una aplicación particular de los decodificadores, tal que
existe una entrada de habilitación (EN) por cada puerta AND y al final se hace
un OR entre todas las salidas de las puertas AND.

La función de un multiplexor da lugar a diversas aplicaciones:

1. Selector de entradas.

2. Serializador: Convierte datos desde el formato paralelo al formato


serie.

3. Transmisión multiplexada: Utilizando las mismas líneas de conexión, se


transmiten diferentes datos de distinta procedencia.

4. Realización de funciones lógicas: Utilizando inversores y conectando a


0 ó 1 las entradas según interese, se consigue diseñar funciones
complejas, de un modo más compacto que con las tradicionales
puertas lógicas.
DEMULTIPLEXOR

Un demultiplexor suma varias entradas y transmite una de ellas a la salida.


Un demultiplexor efectúa la operación contraria, toma una sola entrada y la
distribuye en varias salidas.

Un demultiplexor es un circuito combinacional que tiene una entrada de


información de datos d y n entradas de control que sirven para seleccionar
una de las 2n salidas, por la que ha de salir el dato que presente en la
entrada. Esto se consigue aplicando a las entradas de control la combinación
binaria correspondiente a la salida que se desea seleccionar. Por ejemplo, si
queremos que la información que tenemos en la entrada d, salga por la salida
S4, en las entrada de control se ha de poner, de acuerdo con el peso de las
misma, el valor 100, que es el 4 en binario.

En el campo de las telecomunicaciones el demultiplexor es un dispositivo que


puede recibir a través de un medio de transmisión compartido una señal
compleja multiplexada y separar las distintas señales integrantes de la misma
encaminándolas a las salidas correspondientes.

La señal compleja puede ser tanto analógica como digital y estar


multiplexada en cualquiera de las distintas formas posibles para cada una de
ellas.
REALIZACIÓN DE FUNCIONES CON
DECODIFICADORES

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:

Por ejemplo: F(X,Y,Z) = Σ m(0, 3, 6)

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 ejemplo para 4 bits (X,Y,Z,W)


Codificadores
Son los dispositivos MSI que realizan la operación inversa a la realizada por los decodificadores.
Generalmente, poseen 2n entradas y n salidas. Cuando solo una de las entradas está activa para cada
combinación de salida, se le denomina codificador completo.

Anteriormente vimos que un decodificador de binario a octal (decodificador de 3 a 8 líneas) acepta un


código de tres bits y activa uno de ocho líneas de salida correspondientes a ese código. Un codificador
de octal a binario (codificador de 8 a 3 líneas) realiza la función opuesta acepta ocho líneas de entrada
y produce un código de salida de tres bits, correspondiente a la entrada que se activó.

El siguiente circuito proporciona a la salida la combinación binaria de la entrada que se encuentra


activada. En este caso se trata de un codificador completo de 8 bits, también llamado codificador de 8
a 3 líneas:

Las salidas codificadas, generalmente se usan para controlar un conjunto de 2 n dispositivos,


suponiendo claro está que sólo uno de ellos está activo en cualquier momento. Sin embargo, cuando
nos encontremos con que se deben controlar dispositivos que pueden estar activos al mismo tiempo,
problema que se suelen encontrar los sistemas microprocesadores, es preciso usar un dispositivo que
nos proporcione a la salida el código del dispositivo que tenga más alta prioridad.

En la siguiente figura se representa el diagrama lógico de un codificador completo de Decimal a BCD


natural, junto a su tabla de funcionamiento.

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.

Multiplexores (Selectores de Datos) y Demultiplexores (Distribuidores de Datos)


Multiplexar es pasar información de “muchos” canales o líneas a “pocos” canales o líneas.

Un MULTIPLEXOR (MUX) es un circuito combinacional que selecciona una entrada y la transfiere a la


salida. La selección de la entrada, o dato, se realiza según un conjunto de valores de las variables de
control.

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 Básico de Dos Entradas


Es un multiplexor con dos entradas de datos (I 0 e I1) y la entrada de SELECCIÓN. El nivel lógico que se
aplica a la entrada S determina cual salida estará habilitada de manera que esta saldrá hacia la Salida.

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.

Se desea un circuito total de 16 entradas de Datos pero se tienen solamente multiplexores de 8


entradas (74ALS151). La figura muestra la conexión de los dos ICs 74ALS151 para su respectivo diseño.

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.

Aplicaciones de los Multiplexores


Enrutamiento de Datos: Pueden enrutar datos de una de varias fuentes hacia un destino.
Conversion de Paralelo a Serial: Muchos sistemas digitales procesan datos binarios en formato
paralelo (todos los bits al mismo tiempo) porque es más rápido. No obstante, cuando los datos se van a
transmitir a través de distancias relativamente grandes no es conveniente el arreglo en paralelo ya que
se requiere un gran número de líneas de transmisión. Por esta razón, es común convertir los datos
binarios o la información en formato paralelo a formato serial antes de transmitirlos a un destino
remoto. Un método para realizar esta conversión de paralelo a serial utiliza un multiplexor como se
ilustra en la figura.
Realización de funciones combinacionales con Mux
Partimos de la siguiente afirmación: un multiplexor de 2 n entradas puede realizar cualquier función
lógica de n+1 variables.

1. A partir de la expresión canónica y se escoge un Mux determinado:

Sea f (A, B, C, D) = ∑4m (0,2,3,7,8,13,15)

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.

Realizamos dicho mapa para nuestra función:


BCD

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

UNIDAD PROFESIONAL AZCAPOTZALCO

ELECTRÓNICA

SUMADOR COMPLETO
COMPARADOR DE MAGNITUD
NÚMEROS PRIMOS
OBJETIVO:

El propósito principal de esta práctica es aplicar los conocimientos para


elaborar un circuito en función de las situaciones dadas, utilizando el menor
número de compuertas de acuerdo a los tres métodos de reducción, algebra
de Boole, mapa de Karnaugh y McClauskey.
INTRODUCCION

Existen varios métodos para utilizar el menor número de compuertas


posibles en la elaboración de un circuito lógico, estos métodos son:

 ALGEBRA DE BOOLE: Utiliza variables que se emplean para representar


el nivel de voltaje presente en las terminales de entrada y salida de un
circuito, así mismo, utiliza teoremas que sirven para simplificar la
expresión y los circuitos lógicos. Estos teoremas van de acuerdo a las
posibles entradas que se pueden encontrar en el circuito dando una
salida más corta o reducida. Ejemplo: X + X = X.

 MAPA DE KARNAUGH: Es un método grafico que se utiliza para


simplificar una ecuación lógica para convertir una tabla de verdad a su
circuito lógico. Cada caso en la tabla de verdad corresponde a una
casilla en el mapa k, proporcionando la información para cada
combinación de valores de entrada, estas casillas se etiquetan de
forma que las casillas adyacentes difieran en solo una variable, una vez
lleno el mapa de 0 y 1 se agrupan los unos para eliminar variables y
utilizando la operación OR se escribe la función reducida.

 McCLAUSKEY: Es un método de reducción que se desarrolla con una


combinación binaria presentando los minitérminos e indicando el
numero de 1 que tienen, los agrupa y los combina de tal forma que
exista solo un cambio entre ellos, los términos que ya no pueden
combinarse se les denomina implicantes primos y son los que forman
parte de la función reducida de acuerdo a una tabla llamada de
implicantes primos donde se observa con que implicantes primos se
forman las entradas, pudiendo eliminar algunos de ellos si varias
entradas coinciden con alguno de los implicantes, quedando la función
reducida.

SUMADOR COMPLETO

Cin A B Cout Salida

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

METODO ALGEBRA DE BOOLE

- Para Cout
- Para Salida

METODO MAPA DE KARNAUGH

- 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 =

MÉTODO ALGEBRA DE BOOLE


SALIDA A > ơ

SALIDA A< ơ

SALIDA A = ơ

=
NÚMEROS PRIMOS

Realizar un circuito que detecte los primeros 10 números primos y resolverlo


por el método de Karnaugh, álgebra de Boole y método de McClauskey:
MÉTODO ÁLGEBRA DE BOOLE

Out:= + + + + + + + +

MÉTODO DE MAPA DE KARNAUGH


MÉTODO DE MCCLAUSKEY:

1 => 00001 19 => 10011

2 => 00010 23 => 10111

3 => 00011

5 => 00101

17 => 10001 (1,3) => 000*1

7 => 00111 (1,5) => 00*01

11 => 01011 (1,17) => *0001

13 => 01101 (2,3) => 0001*


(3,7) => 00*11 (5,13) => 0*101

(3,11) => 0*011 (17,19) => 100*1

(3,19) => *0011 (7,23) => *0111

(5,7) => 001*1 (19,23) => 10*11

(1,3,5,7) => 00**1

(1,3,17,19) => *00*1

(1,5,3,7) => 00**1

(1,17,3,19) => *00*1

(2,3) => 0001*

(3,7,19,23) => *0*11

(3,19,7,23) => *0*11

(3,11) => 0*011

(5,13) => 0*101

Out =

=
Transistor

Compuertas Digitales

AND Circuitos Combinacionales

LSI Baja Escala de Integración


OR

Multiplexor

De multiplexor Circuitos Combinatorios

MSI Mediana Escala de Integración

Circuitos

Combinatorios

MSI

PLA

Suma de Productos Producto de Sumas

GAL GAL
Compuesta por PLA y dispositivo de memoria

GAL

Circuitos Combinatorios y

Secuenciales

CPLD

LSI

VLSI

NOTA: El CPLD puede estar compuesto por varios GAL.

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

Flip-Flop tipo: SR, D, T, JK

Contadores, Memorias, Máquinas de


estado Mealy, Moore

Microcontrolador.

Unidad Aritmética Lógica

Banco de Registros/ Memorias,


Multiplexores, Decodificadores, Máquinas
de Estado/ Contadores/Temporizadores

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.

El elemento más importante de la memoria es el FLIP-FLOP, que está formado por un


ensamble de compuertas lógicas. Aunque una compuerta lógica por sí sola, no tiene la
capacidad de almacenamiento, pueden conectarse varias de ellas de manera que permitan
almacenar información.

La figura 2 muestra el símbolo general empleado para un FLIP-FLOP.

A continuación, se muestran algunos ejemplos de “latch” y cómo funcionan estos.

Este es un tipo match con compuertas NAND.

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.

Para convertir un latch en un FLIP-FLOP, necesitamos convertir una entrada de reloj, un


pulso, un CLK.
Esta señal de reloj por lo general es un tren de pulsos rectangulares o una onda
cuadrada como se muestra a continuación:

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).

Básicamente un pulso de reloj lo que va a hacer en un circuito es retardar la señal de


entrada.

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:

1.- Inicialmente todas las entradas son 0, y se supone que Q=0.

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.

DISPOSITIVOS SALIDA TIPO TOTEM


INVERSOR (NOT)

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”.

En este modo, si J y K se dejan en ALTO, el FF cambiará estados (conmutará) para


cada TPP de reloj.

A continuación, se muestra un ejemplo de un FF sincronizado por reloj que responde


solo al borde positivo del CLK y como es el comportamiento de las señales de entrada y
salida.

1. Inicialmente todas las entradas son 0 y se supone que la salida Q=1.

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.

4. En el punto e en la forma de onda de reloj J y K son 0, de manera que el FF no


cambia estados en esta transición.

5. En el punto g, J=1 y K=0, esta es la condición que establece Q al estado 1. Sin


embargo, Q ya es 1 y por lo tanto permanecerá en ese estado.

6. En el punto i, J=K=1 y por lo tanto el FF complementa a 0. y lo mismo ocurre en el


punto k que complementa a 1.
FLIP-FLOP D

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.

Muchos FF Tienen una o dos entradas adicionales llamadas S- reajustada y C-


despejada.

La S también se llama preajustada, las entradas reajustada y despejada actúan como


entradas de posicionamiento y restablecimiento y son útiles para controlar las salidas del FF
con independencia de las entradas. Las entradas pueden ser síncronas o asíncronas. Una
entrada directa o asíncrona es una entrada que lleva acabo su función con independencia a la
entrada del CLK esta baja o alta. Una entrada síncrona es una entrada que depende del reloj.
La entrada D, T, R, S, J, K, son entradas síncronas debido a que la salida puede cambiar solo
cuando hay una transición de entrada de CLK.

A continuación, se muestra un ejemplo de un contador descendente.

Este tipo de contador funciona de la siguiente manera, si de entrada tenemos Q A=1,


QB=1, QC=1 y QD=1 (número 15) en el primer CLK, cuando ocurra el segundo CLK el estado
de QA pasará a 0, ya que tenemos 1 en su salida y 1 del CLK, por lo tanto se complementa
(según la tabla de verdad del FF J-K) y la salida de Q A ahora será 0. Consecuentemente no
activará al segundo FF y permanecerán en el mismo estado por lo ahora tendremos Q A=0,
QB=1, QC=1 y QD=1 (número 14). En el tercer CLK, tendremos 1 y 1 de nuevo, por lo que Q A
se complementa a 1 por estar en 0 anteriormente, así podrá activar al siguiente FF y de la
misma manera que el primer FF se complementa a 0 por tener 1 y 1, de aquí los demás FFs
permanecerán en el mismo estado porque no los puede activar el segundo FF, por lo que
tendremos QA=1, QB=0, QC=1 y QD=1 (número 13). Y así sucesivamente, a cada pulso de reloj
el contador cambiará de estado las salidas Q y saltará al número descendente al actual.
QD QC QB QA

0 0 0 0

0 0 0 1

0 0 1 0

0 0 1 1

Tomando en cuenta el tren de 0 1 0 0 pulsos anterior observamos que en


cada pulso de reloj una o varias de 0 1 0 1
las salidas Q cambian de estado, ya

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.

El CLK solo es activado o “excitado” cuando pasa de 0 a 1.

Si quiero un contador ascendente tomo Q negada.

CONTADOR ASÍNCRONO DE RIZO O CONTADORES MOD<2n

J, K = 1

Para N=3 MOD<8.


La figura anterior representa un contador de tres bits. Sin considerar por un
momento la compuerta NAND, se ve que el contador es un MOD-8 binario que contará en
secuencia de 000 a 111. Sin embargo, la presencia de la compuerta NAND modificará esta
secuencia como sigue:

1. La salida de la compuerta NAND está conectada a las entradas asíncronas CLEAR de


cada FF. Mientras que la salida de la compuerta NAND sea ALTA no tendrá efecto en
el contador inmediatamente pasará al estado 000.

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.

3. Por lo tanto, la secuencia de conteo es:

C B A

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0 Estado temporal necesario para


borrar el contador
1 1 1

Para CB=00, 01 y 10, la salida de la compuerta NAND = 1, por lo tanto, no se activa la


entrada asíncrona BORRAR o Restablecer. Para el caso CB = 11, se activa la entrada
asíncrona y los valores de salida para los 3 FF es 0 (CBA = 100).
CB = 11, por lo tanto, activa y cambia la entrada a estado borrar.

CONTADORES ASÍNCRONOS DE RIZO 74293

Estos tipos de FF operan de la siguiente manera:

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,

designadas , respectivamente son accesibles de forma externa. Las barras de


inversión sobre estas entradas indican que se activan mediante una TPN.

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.

4. Los FFs Q1, Q2 y Q3 ya están conectados como un contador de rizo de 3 bits. El FF Q 0


no está conectado internamente a nada. Esto permite que el usuario tenga la opción
de conectar Q0 a Q1 para formar un contador de cuatro bits.
*MR= Master Reset
RETARDO DE PROPAGACIÓN

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.

El siguiente ejemplo es un contador asíncrono y de igual manera se puede observa un


tiempo de propagación en cada una de sus salidas.
Para que pueda funcionar un contador de rizo tenemos que utilizar la fórmula para
calcular el número de pulsos que queremos (N).

Treloj  N  Ttransición

T transición= Periodo.

Y dicho en términos de la frecuencia de entrada de reloj, la frecuencia máxima que se


puede usar está determinada por

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.

CONTADORES SÍNCRONOS (PARALELOS)

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:

 Los retardos de propagación de los FF no se suman para reproducir


un retardo global, el tiempo total de respuesta de un contador síncrono
es igual al tiempo que le tomo a uno de los FF cambiar de estado más
el tiempo necesario para que los nuevos niveles lógicos se propaguen
por las compuertas y alcancen las entradas J y K.

Retraso Total = tpd del FF + tpd de la Compuerta


Para que este circuito realice el conteo adecuadamente en una TPN específica del reloj,
únicamente los FFs que se supone cambiarán estados en esa TPN deberán tener J=K=1
cuando ocurra esa TPN. Analicemos la secuencia de conteo de la tabla de verdad anterior
para ver que significa esto con respecto a cada FF.

En la secuencia de conteo se muestra que el FF A debe cambiar estados en cada TPN.


Por esta razón, sus entradas J y K están permanentemente en ALTO, de manera que
cambiará estados en cada TPN de la entrada de CLK.

En la secuencia de conteo se muestra que el FF B debe cambiar estados en cada TPN


que ocurra mientras A=1. Por ejemplo, cuando el conteo es 0001 la siguiente TPN debe
cambiar B al estado 1; cuando el conteo es 0011 la siguiente TPN debe cambiar B al estado 0,
y así sucesivamente. Esta operación se lleva a cabo conectando la salida A a las entradas J y
K del FF B, de manera que J=K=1 solo cuando A=1.

En la secuencia de conteo se muestra que el FF C debe cambiar estados en cada TPN


que ocurra mientras A=B=1. Por ejemplo, cuando el conteo es 0011, la siguiente TPN debe
cambiar C al estado 1; cuando el conteo es 0111, la siguiente TPN debe cambiar C al estado
0, y así sucesivamente. Conectando la señal lógica AB a las entradas J y K del FF C, este FF
cambiará estados cuando A=B=1.

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”.

Johnson Ring Counter


No of positive edge Serial Input = Q0 Q2 MSB Q1 Q0 LSB

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.

Tabla de Excitación J-K Tabla de verdad

Estado Presente Estado Siguiente


Transición de Salida J K
Q (N) Q (N+1) J K Q

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

A continuación, se muestra la secuencia de un contador aleatorio, lo analizaremos para


realizar el circuito correspondiente.

13 → 11 → 7 → 2 → 10 → 5 → 8

↑ ↓

− − − − − − − − 3 ← 12 ← 1

Estados Presentes Estados Siguientes J A KA J B KB J C KC J D KD

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

Mapa de Karnaugh de JA:

JA   CD

AB   00 01 11 10

00 0 1 1 1

01 0 1 0 1

11 * * * *

10 * * * *

Se analizan las entradas J y K para el estado presente

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 * * * *

KB=B; KB=1 (al seleccionar las 16 entradas=1)

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 memoria almacena información que puede ser recuperada o retirada


posteriormente.

El tipo de FF más sencillo utilizado en las memorias es el FF tipo D.

Las memorias operan de 2 maneras:

1. Modo de escritura, se utiliza para introducir datos (números)

2. Modo de lectura, se utiliza para obtener los datos de regreso.

Modelo para una memoria de acceso aleatorio (RAM)


MEMORIA ASÍNCRONA
Bus de entrada y/o salida
MÁQUINA DE ESTADO

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.

Un buen ejemplo de una máquina de estado simple es un CONTADOR, el valor actual


del contador se mantiene en los FFs, y el valor siguiente es incrementado / decrementado con
la siguiente transición de CLK.

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.

 Máquina tipo Moore:

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

Contador aleatorio Contador ascendente 3 bits

 Máquina de estado Mealy:

Entradas Externas
Cto. Lógico
Combinacional

Estado de Cto. Lógico


Salidas Externas
Información Combinacional
Estado Actual
001
E=1
000
010
E=1
111 E=0 E=0 011
E=1 E=0
110
100
E=0 E=1

101

E=1 E=0 E=0

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)

Es un lenguaje de descripción de hardware o modelado de sistemas digitales, mediante


el cual se pueden describir, analizar y evaluar el comportamiento de un sistema electrónico
digital. Se pueden elaborar en un dispositivo Lógico Programable sea de baja capacidad de
integración como un GAL, o de mayor capacidad como el CPLD y FPGA.

Ventajas del VHDL

– Disponibilidad pública

– Independencia tecnológica de diseño

– Reutilización del código.

– Capacidad descriptiva en distintos niveles de abstracción, etc.

Desventajas

– Complejo

Campos de aplicación de VHDL.

Telecomunicaciones, sistemas de adquisición de datos, computación, redes, medicina, filtros


digitales, telefonía, juguetes electrónicos, aeronáutica, videojuegos, electrodomésticos,
sistemas de seguridad, etc.

La estructura general de un programa está formada por módulos o unidades de diseño


cada uno de ellos compuesto por un conjunto de declaraciones e instrucciones que definen,
describen, estructuran, analizan y evalúan el comportamiento de un sistema digital.

Existen 5 tipos de unidades de diseño: declaración de entidad, arquitectura,


configuración, declaración del paquete y cuerpo del paquete. En el desarrollo de programas
pueden utilizarse 3 de los 5 módulos, pero dos de ellos son indispensables en la
estructuración de un programa, (entidad y arquitectura).

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

B A>B Puerto de 3 salidas

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.

Modo in out permite declarar a un puerto de forma bidireccional; además permite la


retroalimentación de señales dentro o fuera de la entidad.

Modo buffer permite hacer retroalimentaciones internas dentro de la entidad, pero a


diferencia del modo in out el puerto declarado se comporta como una terminal de salida.

TIPOS DE DATOS.

Alguno de los tipos más utilizados en VHDL son:


1. Bit, el cual tiene valores de 0 a 1 lógico.

2. Boolean (Booleano), que define valores de verdadero o falso en una expresión.

3. Bit_vector, que representa un conjunto de bits para cada variable de entrada y salida.

4. Integer, que representa un número entero (arreglo de 16 bits).

Por ejemplo, un sumador de un bit:

A1 A0 Bit_vector: se puede declarar el número de bits que sean necesarios.

A Bit

Cout Bit

A Integer (16 bits)

Sumador de 1 bit.
Dentro de la programación se declara la entidad de la siguiente manera:

entity comp_and is

port (A, B: in bit;

C: out bit);

end comp_and

En el siguiente ejemplo se observa la diferencia entre la declaración de entidad con


Modo in, out y Modo bit_vector.

entity circuito is

port (a3, b3, a2, b2, a1, b1, a0,

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:

Librerías y paquetes. Permiten declarar y almacenar estructuras lógicas.

– IEEE: std_logic_1164, contiene todos los tipos de datos.

– WORK: numeric_std, std_arith, gatespkg.

Para utilizar un paquete es necesario llamar la librería en la que se encuentra, ejemplo:

– 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.

Describe el funcionamiento interno de la entidad. Establece la relación existente entre


las señales de entrada y de salida.

Existen tres estilos de programación

– Funcional

– Por flujo de datos

– Estructural

architecture <nombre> of <nombre_entidad> is

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:

Comparador de dos números de dos bits.

Si a = b entonces c = 1

Si a /= b entonces c = 0

library ieee;

use ieee.std_logic_1164.all;

entity comp is

port ( a, b: in Bit_vector (1 down to 0);

c: out bit);

end comp;

architecture compara of comp is

begin

process (a,b)

begin

if a = b then c <= ‘1’;

else c <= ‘0’;


end if;

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.

Ejemplo de flujo de datos usando WHEN-ELSE

– Modele la operación de una compuerta XOR.

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;

architecture comp of comp_xor is

begin

f <= ‘0’ when (a = ‘0’ and b = ‘0’) else

‘0’ when (a = ‘1’ and b = ‘1’) else

‘1’;

end comp;
Ejemplo de flujo de datos usando WITH-SELECT-WHEN

– Modele la operación del siguiente circuito

library ieee;

use ieee.std_logic_1164.all;

entity cto is port (

d: in std_logic_vector(0 to 2);

f: out std_logic);

end cto;

architecture selec of cto is

begin

with d select

f <= ‘1’ when “001”,

‘1’ when “110”,


‘1’ when “111”,

‘0’ when others;

end selec;

Estilo estructural. Basa su comportamiento en modelos lógicos establecidos


(compuertas, sumadores, contadores, etc.). El usuario puede diseñar estas estructuras y
guardarlas para su uso posterior. Por ejemplo:

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;

architecture estruc of estructura is

signal x: bit_vector (0 to 1);

begin

U0: and2 port map (s, a, x(0));

U1: and2 port map (s, b, x(1));

U2: or2 port map (x(0), x(1), c);

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;

entity multi is port (

i0,i1,i2,i3,i4,i5,i6,i7: in std_logic;

sel: in std_logic_vector(2 downto 0);

sal: out std_logic);

end multi;

architecture mux of multi is

begin

with sel select

sal <= i0 when "000",

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;

entity decodificador is port (

entradas: in std_logic_vector(2 downto 0);

sal: out std_logic_vector(7 downto 0));

end decodificador;

architecture deco of decodificador is begin

process (entradas) begin

case entradas is

when "000" => sal <= "11111110";

when "001" => sal <= "11111101";

when "010" => sal <= "11111011";

when "011" => sal <= "11110111";

when "100" => sal <= "11101111";

when "101" => sal <= "11011111";

when "110" => sal <= "10111111";

when others => sal <="01111111";


end case;

end process;

end deco;

Ejemplo de un FF-JK:

library ieee;

use ieee.std_logic_1164.all;

entity ffjk is port (

clear, clk: in std_logic;

JK: in std_logic_vector(1 downto 0);

Q, Qn: inout std_logic);

end ffjk;

architecture arq_ffjk of ffjk is begin

process (JK, clk, clear) begin

if clear='0' then Q<='0'; Qn<='1';

elsif (clk='1' and clk'event) then

if (JK = "11") then Q<= not Q; Qn<=not Qn;

elsif (JK ="10") then Q<='1'; Qn<='0';

elsif (JK ="00") then Q<=Q; Qn<=Qn;

else Q<='0'; Qn<='1';

end if;

end if;
end process;

end arq_ffjk;

Ejemplo Máquina de Mealy:

library ieee;

use ieee.std_logic_1164.all;

entity maquina is port (

clk, x: in std_logic;

y: out std_logic);

end maquina;

architecture mealy of maquina is

type estados is (a, b, c);

signal edo_presente, edo_futuro: estados;

begin

uno: process (edo_presente, x) begin

case edo_presente is

when a =>

if x=‘0’ then edo_futuro <= a; y<=‘0’;


else edo_futuro <= b; y<=‘0’; end if;

when b =>

if x=‘0’ then edo_futuro <= b; y<=‘0’;

else edo_futuro <= c; y<=‘0’; end if;

when c =>

if x=‘1’ then edo_futuro <= c; y<=‘0’;

else edo_futuro <= a; y<=‘1’; end if;

end case;

end process uno;

dos: process (clk, reset) begin

if reset='1' then edo_presente <= a;

elsif (clk'event and clk='1') then

edo_presente <= edo_futuro;

end if;

end process dos;

end mealy;

Ejemplo Máquina Moore:


library ieee;

use ieee.std_logic_1164.all;

entity contador is port (

clk, x, reset: in std_logic;

q: out std_logic_vector(1 downto 0));

end contador;

architecture cont of contador is

type estados is (d0,d1,d2,d3);

signal edo_presente, edo_futuro: estados;

begin

conteo: process (edo_presente) begin

case edo_presente is

when d0 => Q <="00";

if (x=‘0’) then edo_futuro<=d1;

else edo_futuro<=d3; end if;

when d1 => Q <="01";

if (x=‘0’) then edo_futuro<=d2;

else edo_futuro<=d0; end if;

when d2 => Q <="10";

if (x=‘0’) then edo_futuro<=d3;

else edo_futuro<=d1; end if;

when d3 => Q <="11";

if (x=‘0’) then edo_futuro<=d0;

else edo_futuro<=d2; end if;


end case;

end process conteo;

reloj: process(clk, reset) begin

if reset=‘1’ then edo_presente<=d0;

elsif (clk'event and clk='1') then

edo_presente <= edo_futuro;

end if;

end process reloj;

end cont;

VERILOG

Verilog es un lenguaje para la descripción de sistemas digitales (HDL: Hardware


Description Language).

Los sistemas pueden ser descritos:

o Nivel estructural, empleando elementos de librería o bien elementos previamente


creados, se realiza la interconexión de unos con otros. Sería similar a una
captura esquemática donde la función del diseñador es instanciar bloques y
conectarlos entre si.

o Nivel de comportamiento, el diseñador describe la transferencia de información


entre registros (nivel RTL: Register Transfer Level).

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

En Verilog un sistema digital está compuesto por la interconexión de un conjunto de


módulos.

module <nombre del modulo> ( <señales> );

<declaraciones de señales>

<funcionalidad del módulo>

endmodule

Algunos aspectos a recordar son:

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 No existen variables globales.

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.

o A pesar de que se pueden realizar varias simulaciones concurrentes


(funcionando paralelamente con la misma base de tiempos), en general se suele
tener un único módulo superior que emplea módulos previamente definidos

o Como se ha comentado con anterioridad cada módulo se puede describir de


forma arquitectural o de comportamiento.

Los argumentos del módulo (que le permiten comunicarse con el exterior) pueden ser de
tres tipos:

o input: entradas del módulo. Son variables de tipo wire

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.

A continuación se muestran una serie de ejemplos de programación en VERILOG:

Ejemplo de un sumador completo 1 bit:

module SumCompleto3 (Cin, a, b, Cout, Sum);

input Cin, a, b;

output Cout, Sum;

assign {Cout, Sum} = {1'b0,a}+{1'b0,b}+{1'b0,Cin};

endmodule

Ejemplo de un sumador completo 4 bit:

module sumconcat(a, b, cin, sum, cout);

input [3:0] a, b;

input cin;

output [3:0] sum, cout;

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;

always @ (posedge clk)

begin

if (reset)

q=0;

else if (set)

q=1;

else

q=d;

end

endmodule

Ejemplo de un Contador:

module contador(bandera, reset, salida, clk);

input bandera, reset, clk;

output [3:0]salida;

reg [3:0]salida;

integer i;

initial
begin

salida=0;

end

always@ (posedge clk)

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

También podría gustarte