Académique Documents
Professionnel Documents
Culture Documents
ACADEMIA DE ELECTRÓNICA.
1
2
3
4
5
6
7
8
9
10
11
12
13
INTRODUCCIÓN
Estos apuntes se realizaron para cubrir el temario de la asignatura “Electrónica III”, del
Departamento de Ingeniería Eléctrica en el Instituto Politécnico Nacional que se imparte en el
sexto semestre de la carrera de ingeniería eléctrica, unidad Zacatenco.
En la cuarta unidad el estudiante aplica las instrucciones del Atmega 328P, para resolver
problemas, utilizando el simulador Atmel Studio 7.0.
En la quinta unidad el estudiante utiliza los puertos de la placa Arduino, para comunicarse con
el mundo exterior, el convertidor analógico para medir la temperatura y las interrupciones para
controlar un proceso.
En el programa no se especifican los temas Teoría de los conjuntos, Algebra Booleana y Mapas
de Karnaugh, sin embargo, son temas muy importantes (conocimiento previo) que presento de
manera rápida y fácil, para que el estudiante pueda aprender el nuevo conocimiento, acorde al
nuevo modelo educativo por competencias.
Por ultimo quiero decir que carece de validez la enseñanza que no resulta en un aprendizaje.
Espero que estos apuntes sean un recurso valioso y práctico para encauzar adecuadamente los
procesos de enseñanza y de aprendizaje, de los estudiantes con necesidades educativas de
calidad.
14
ÍNDICE
15
UNIDAD I: Sistemas de Numeración.
1.1 SISTEMAS DE NUMERACIÓN NO SIGNADO.
El sistema decimal es sin duda el más conocido por nosotros ya que es una
herramienta de uso cotidiano. Si analizamos algunas de sus características podremos
entender mejor los demás sistemas de numeración.
Sistema decimal.
En esencia el cuatro porta el valor máximo de los tres dígitos; a este se le conoce
como el digito más significativo (MSD). El número tres tiene el menor valor y se le
denomina digito menos significativo (LSD).
16
Como vamos a representar cantidades en diferentes bases, es conveniente usar
subíndices para indicar la base a la que pertenecen.
(Notar las potencias negativas 10-1 =0,1, 10-2 = 0,01, 10-3 =0,001 y 10-4 = 0,0001).
La unión de todos los residuos obtenidos escritos en orden inverso nos proporciona el
número equivalente expresado en el sistema binario.
Ejemplos:
17
• Convertir el número decimal 199210 a binario.
18
Ejemplo:
1 0 1 0 1 12
1 * 20 = 110
1 * 21 = 210
0 * 22 = 010
1 * 23 = 810
0 * 24 = 010
1 * 25 = 3210
Suma 4310
Solución 1010112 = 43 10
0, 1, 2, 3, 4, 5, 6, 7.
Ejemplo 1:
Ejemplo 2:
= 3 x 64 + 7 x 8 + 2 x 1
= 250 10
19
Ejemplo 3:
=20,7510.
Un entero decimal se puede convertir en octal mediante el uso del mismo método de
división repetida que se usó en la conversión decimal a binario, pero con un factor de
división de 8 en lugar de 2.
Ejemplo.
266 / 8 = 33 + residuo de 2
3 3/ 8 = 4 + residuo de 1 Resultado
Note que su primer residuo se transforma en el digito menos significo (LSD) del
número octal y el ultimo residuo se convierte más significativo (MSD).
La ventaja principal del sistema numérico octal es la facilidad con la cual puede
realizarse la conversión entre números binarios y octales.
Octal 0 1 2 3 4 5 6 7
20
Ejemplo.
Convertir el número octal 4728 a binario (usar 3 bits para representar cada cifra):
4 7 2
Los bits del número binario se conjuntan en grupos de tres comenzando por el LSB.
Primer caso.
Ejemplo.
1 0 0 1 1 1 0 1 0
4 7 28
Segundo caso.
Algunas veces el número binario no tendrá grupos de 3 bits. En esos casos podemos
agregar uno o dos ceros a la izquierda del MSB del número binario a fin de completar
el último grupo.
Ejemplo.
0 1 1 0 1 0 1 1 0
3 2 68
21
Teorema Fundamental de la Numeración (TFN).
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
A 10
B 11
C 12
D 13
E 14
F 15
22
Ejemplo 2: ¿Qué número decimal representa el número hexadecimal 35616 utilizando
el TFN (Teorema Fundamental de la Numeración)?
= 85410.
Ejemplo 1.
Solución:
Ejemplo 2.
Solución.
Resultado
23
Conversión de hexadecimal a binario.
Ejemplo.
Convertir el número hexadecimal 9F216 a binario (usar 4 bits para representar cada
cifra).
9 F 216 = 9 F 2
Ejemplo.
= BA616
24
1.2 CONVERSIÓN DE SISTEMA DECIMAL A CUALQUIER BASE.
Ejemplo1.
Para convertir el número 13,312510 a base 2, en primer lugar hay que dividir,
sucesivamente, la parte entera del número, en este caso (1310), entre 2, hasta obtener
un cociente más pequeño que 2.
13 L 2
1 6L2
0 3L2
1 1L2
1
Como el último cociente vale 1, ya es más pequeño que el divisor 2, tenemos que
parar de dividir. Por tanto,
1310 = 11012
El segundo paso consiste en convertir la parte fraccionaria del número (0,312510). Para
ello, se deben realizar los siguientes cálculos:
0,3125 x 2 = 0,625
25
En resumen.
13,312510 = 1101,01012.
Para comprobar si los cálculos están bien hechos, podemos realizar la conversión
inversa, es decir, podemos pasar el número 1101,01012 a base 10. De manera que,
usando el TFN los cálculos son:
1101,01012 = 13,312510.
Ejemplo 2.
0,9x2=1,8
0,8x2=1,6
0,6x2=1,2
0,2x2=0,4 Observa cómo se vuelve a repetir esta cantidad.
0,4x2=0,8
0,8x2=1,6
26
Quedando la parte fraccionaria de la siguiente manera:
0,9𝐷 = 0,111001𝐵
220, 9𝐷 = 11011100,111001𝐵
Entero fracción
= 4 + 8 + 16 + 64 + 128
= 22010.
=0,890625 ≈0,9
27
1.3 CONVERSIÓN DE CUALQUIER BASE A SISTEMA DECIMAL.
Si se tiene un número en base n, por ejemplo 1637(base 7), el proceso para convertirlo
a base decimal es el siguiente:
Ejemplo.
Este método es útil para números grandes, ya que para números pequeños se puede
utilizar el cálculo mental según las potencias de la base, como se explicó
anteriormente. De ser los números muy grandes, habría que conocer las tablas de
multiplicar de las diferentes bases, lo que resultaría tedioso. De ahí la utilización de
éste sencillo método de multiplicaciones y sumas.
28
1.4 RELACIÓN ENTRE LOS SISTEMAS BINARIOS, OCTAL Y
HEXADECIMAL.
Ejemplo 1.
Comprobación.
Ejemplo 2.
2 3 3 Equivalente octal.
29
Comprobación.
Ejemplo 3.
3578 = 0111011112.
11102 = E16 y 111116 = F16. El cero que está a la izquierda no se toma en cuenta.
Comprobación.
= 1 + 2 + 4 + 8 + 0 + 32 + 64 + 128.
= 23910.
= 15 x 1 + 14 x 16
= 15 + 224
= 23910.
30
1.5 SISTEMAS DE NUMERACIÓN SIGNADO Y SUS CONVERSIONES.
i. Complemento a dos.
C2N = 2n – N.
N = 4510; n = 610; 26 = 6410 y, por tanto: C2N = 6410 – 4510 = 1910 = 0100112.
El complemento a uno de un número N, compuesto por n bits es, por definición, una
unidad menor que el complemento a dos, es decir:
C1N = C2N – 1.
C2N = C1N + 1.
C1N = 0100102
31
Por ejemplo si:
N = 1101001012.
C1N = 0010110102.
N = 01101101012.
C2N = 10010010112.
Existen tres representaciones que han sido usadas para manejar internamente
números enteros con signo en las computadoras digitales. Estas son:
• Magnitud y signo.
• Complemento a 1 (complementos a la base disminuida).
• Complemento a 2 (complemento a la base).
32
Ejemplo.
Como se observa el bit del signo ha cambiado, por lo que se trata del -1510, esto es:
Como se observa el bit del signo también ha cambiado, por lo que se trata del -1510, en
complemento a 2, es decir:
33
1.6 ARITMÉTICA BINARIA Y HEXADECIMAL.
Suma en binario.
Para aprender a sumar, con cinco o seis años de edad, tuviste que memorizar las 100
combinaciones posibles que pueden darse al sumar dos dígitos decimales. La tabla de
sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar
cuatro combinaciones posibles:
+ 0 1
0 0 1
1 1 0+1
0+0=0
0+1=1
1+0=1
Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en
binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma
a la posición siguiente a la izquierda. Veamos algunos ejemplos:
Ejemplo 1.
1001002……………. 3610
+ 0100102 …………..1810
1101102…………….5410
34
Ejemplo 2.
Ejemplo 3.
125D………………………………1111101B
+ 86D………………………………1010110B
211D……………………………. 11010011B
Otros ejemplos.
Sustracción en binario.
- 0 1
0 0 1
1 1+1 0
35
0–0=0
1–0=1
1–1=0
Y, por fin, vamos a ver cómo facilita la resta el complemento a uno. La resta binaria de
dos números puede obtenerse sumando al minuendo el complemento a uno del
sustraendo. Veamos algunos ejemplos:
Primer ejemplo:
36
Segundo ejemplo:
Primer ejemplo:
Segundo ejemplo:
Tiene alguna dificultad, cuando se acumulan los arrastres a la resta siguiente. Pero
esta misma resta puede hacerse como una suma, utilizando el complemento a dos del
sustraendo:
37
En el resultado de la suma nos sobra un bit, que se desborda por la izquierda. Pero,
como el número resultante no puede ser más largo que el minuendo, el bit sobrante se
desprecia.
Hagamos esta otra resta, 21910 – 2310 = 19610, utilizando el complemento a dos:
21910 = 110110112
2310 = 000101112
C2 de 23 = 11101001
110001002 = 19610.
Multiplicación binaria.
Comprobación
38
Este método de trabajar es bueno, pero no es práctico para computadoras porque el
tipo de desplazamiento requerido hace que sea difícil su implementación.
Uno de los métodos para la multiplicación usado por las computadoras es la suma
repetida. Para multiplicar 7 x 55 por ejemplo, la computadora puede sumar 7 veces el
55. Para números más grandes, este método es lento.
Comprobación
39
División binaria.
Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo
número de cifras (100 entre 110, en el ejemplo). Si no puede dividirse, se intenta la
división tomando un dígito más (1001 entre 110).
Si la división es posible, entonces, el divisor sólo podrá estar contenido una vez en el
dividendo, es decir, la primera cifra del cociente es un UNO. En ese caso, el resultado
de multiplicar el divisor por 1 es el propio divisor. Restamos las cifras del dividendo del
divisor y bajamos la cifra siguiente.
El divisor se resta del digito más significativo del dividendo. Si el bit de sobreflujo o
acarreo producido por la resta es cero entonces la resta fue posible y se pone en 1
el registro del cociente. El resultado de la resta es desplazado a la izquierda un lugar.
El divisor es restado del resultado desplazado. Cuando el bit de sobreflujo o acarreo
es 1 porque el divisor es más grande, se pone 0 en el siguiente bit del registro del
cociente. El divisor es agregado al resultado de la resta para restituir el valor. Este
número es desplazado a la izquierda y se procede a resta nuevamente hasta terminar.
40
A continuación se muestra un ejemplo para comprenderlo mejor.
Dividir 32810 entre 810.
41
Aritmética hexadecimal.
Suma.
Ejemplo.
1 11 Acarreos
3A943B16 Donde: B16 + 516 = 1110 + 510 = 1610 = 1016 (0 y llevamos 1).
+ 23B7D516 116 + 316 + D16 = 410 + 1310 = 1710 = 1116 (1 y llevamos 1).
5E4C1016 116 + 416 + 716 = 510 + 710 = 1210 = C16 (no hay acarreo).
916 + B16 = 910 + 1110 = 2010 =1416 (4 y llevamos 1).
116 + A16 + 316 = 410 + 1010 = 1410 = E16 (no hay acarreo).
316 + 216 = 516 (no hay acarreo).
Resta Hexadecimal.
Complemento a 15.
Para ello tendremos que sumar al minuendo el complemento a quince del sustraendo,
y finalmente sumarle el bit de overflow (bit que se desborda).
42
Para entender la resta en complemento a 15 lo analizaremos con un ejemplo. Esta es
la resta que tenemos que resolver:
A4FC916
- DE816
———————
A4FC916
- 00DE816
—————————
FFFFF16
- 00DE816
—————————
FF21716 complemento a 15 de 00DE816.
A4FC916
+ FF21716
—————————
1A41E016
A41E016 Comprobación
+ 116
—————— Sumamos la diferencia con el sustraendo,
A41E116.
para obtener el minuendo.
Por lo tanto. Hexadena que presto la F a C.
43
Complemento a 16.
Esta es la resta que tenemos que resolver (la misma del ejemplo anterior):
A4FC916
- DE816
—————————
A4FC916
- 00DE816
—————————
FFFFF16
- 00DE816
—————————
FF21716
.
FF21716
+ 116
—————————
FF21816 complemento a 16 de 00DE816
44
Ahora tendremos que sumar el minuendo y el complemento a 16.
A4FC916
+ FF21816
—————————
1A41E116.
Te habrás dado cuenta que este nuevo número tiene más cifras que los números
iníciales que teníamos que restas, cosa imposible en una resta (que la diferencia sea
mayor que el minuendo y el sustraendo).
En ambos casos la respuesta obtenida deberá ser la misma, ya que hemos resuelto la
misma resta en sistema hexadecimal.
Por lo tanto, podremos comprobar que hemos operado bien comparando las
respuestas obtenidas en complemento a 15 y en complemento a 16 para una misma
resta.
Ejemplo.
E
A 4 F C 916 Donde: 916 - 816 = 116
- D E 816 C16 – E16, no se puede hacer y pedimos una hexadena al siguiente (F)
A 4 1 E 116 C16 + 1016 = 1210 + 1610 = 2810; 2810 – E16 = 2810 – 1410 = 1410 = E16.
E16 – D16 = 1410 – 1310 = 110 = 116.
A416 = A416.
45
1.7 CÓDIGOS.
CÓDIGOS NUMÉRICOS.
Existen varias situaciones en las que no es conveniente utilizar el binario natural para
manejar información numérica, entre ellas se pueden mencionar las siguientes:
• Cuando se busca una conversión más sencilla decimal - binario (códigos BCD).
• Cuando además de lo anterior se van a manejar números negativos (Códigos
BCD autocomplementarios).
• Cuando se busca minimizar errores de censado en “encoders” de posición de
una cantidad a otra (código gray).
• Cuando se quiere detectar errores en transmisión de datos (código de paridad).
• Cuando se quiere detectar y corregir errores en transmisión de datos (código
Hamming)
Los códigos BCD nos permiten representar cada uno de los dígitos decimales (0,...,9)
mediante 4 bits.
El más sencillo de los códigos BCD es el BCD8421 o BCD “natural”, que consiste
simplemente en representar cada dígito decimal por su binario equivalente. Así
tenemos:
46
La conversión con el sistema decimal se realiza directamente, en grupos de cuatro bits
por cada dígito decimal con ponderación 8421.
Este código tiene aplicación en visualizadores (displays) hechos con leds o LCD, los
cuales poseen previamente convertidores que transforman el grupo de cuatro bits BCD
en otro especial, llamado 7 segmentos.
Ejemplo 1.
Codificar en BCD el número decimal 85 (recuerda usar 4 bits).
85
1000 0101
Ejemplo 2.
En el código BCD: los cuatro primeros bits representan el 3.Los siguientes cuatro
representan el 9 y los últimos cuatro el 5.
47
Suma BCD.
Las operaciones aritméticas se hacen siguiendo las reglas convencionales. La mayor
dificultad se encuentra en la generación de acarreos.
Ejemplo : 3D 0011BCD
+5D + 0101BCD
8D 1000BCD
Ejemplo :
6D 0110BCD
+ 8D + 1000BCD
14D 1110BCD error
Al sumar en binario 0110 + 1000 se obtiene un código BCD inválido, que hay que
corregir para producir un resultado correcto, es decir un acarreo y 0100. Esto es:
0110BCD
+ 1000BCD
1110BCD Código BCD invalido
+ 0110BCD Factor de correción
1 0100BCD Esto significa el numero 14D( 0001 0100BCD)
Ejemplo:
9D 1001BCD
+ 8D + 1000BCD
17D 10001BCD error
En este caso el resultado es válido (tienen significado en decimal) pero incorrecto (ya
que es el número 11 en BCD). La corrección es:
1001BCD
+ 1000BCD
10001BCD error
+ 0110BCD Factor de corrección.
48
La principal ventaja del código BCD es la facilidad relativa para convertir a y
desde decimal. Sólo se requiere recordar los grupos codificados de 4 bits para los
dígitos decimales del 0 al 9. Esta facilidad de conversión es especialmente importante
desde el punto de vista de circuitos, porque en un sistema decimal son los circuitos
lógicos los que ejecutan las conversiones a y desde decimal.
Los voltímetros digitales, contadores de frecuencia y relojes digitales usan todos BCD,
porque despliegan la información de salida en decimal. Las calculadoras electrónicas
usan BCD porque los números de entrada vienen en decimal vía el teclado y los
números de salida son mostrados en decimal.
49
CÓDIGO BCD 2421.
Este es otro código BCD autocomplementario, y su nombre (2421) indica la
ponderación de sus bits para obtener su equivalente en decimal y viceversa, en la
siguiente tabla se ilustra este código.
0 0000 5 1011
1 0001 6 1100
2 0010 7 1101
3 0011 8 1110
4 0100 9 1111
CÓDIGO 2 DE 5 (BIQUINARIO).
El código 2 de 5 es un código multibit no ponderado, es decir, los códigos no pueden
obtenerse usando una expresión polinomial; este código está diseñado para la
detección de errores en diferentes tipos de cálculos y operaciones con registros de
corrimiento. Se usan cinco bits para representar los dígitos decimales (0-9). Como el
nombre lo implica sólo dos de los cinco bits son 1.
0 00011 5 01100
1 00101 6 10001
2 00110 7 10010
3 01001 8 10100
4 01010 9 11000
50
CÓDIGO GRAY.
Esta progresión sucede también entre la última y la primera combinación. Por eso se
le llama también código cíclico. (Ver la tabla que se muestra abajo).
La tabla siguiente es una lista del código Gray de cuatro bits para números decimales
del 0 al 15. Los números binarios se muestran en la tabla como una referencia.
Como los números binarios, el código Gray puede tener cualquier número de bits.
Para el mismo caso pero en código Gray: 0100 a 1100 (de 7 a 8 en decimal) o de
1000 a 0000 (de 15 a 0 en decimal) sólo ha cambiado una cifra.
51
La característica de pasar de un código al siguiente cambiando sólo un dígito asegura
menos posibilidades de error.
Ejemplo: Paso 1. El digito del código Gray más a la izquierda es el mismo que el
digito del código binario más a la izquierda.
1 0 1 1 0 Binario
1 Gray
1 + 0 1 1 0 Binario
1 1 Gray
1 0+1 1 0 Binario
1 1 1 Gray
1 0 1+1 0 Binario
1 1 1 0 Gray
1 0 1 1 +0 Binario
1 1 1 0 1 Gray
52
CONVERSIÓN DE GRAY A BINARIO.
Para convertir de código Gray a Binario, se utiliza un método similar, pero con algunas
diferencias. Se aplican las siguientes reglas:
Ejemplo:
Paso 1. El digito del código binario más a la izquierda es el mismo que el digito del
código Gray más a la izquierda.
1 1 0 1 1 Gray
1 Binario
Paso 2. Sume el último bit del código binario que se acaba de generar al bit del código
Gray en la siguiente posición. Descarte acarreos. (En negrilla bit que se suman).
1 1 0 1 1 Gray
1 0 Binario
Paso 3. Sume el último bit del código binario que se acaba de generar al bit del código
Gray en la siguiente posición.
1 1 0 1 1 Gray
1 0 0 Binario
Paso 4. Sume el último bit del código binario que se acaba de generar al bit del código
Gray en la siguiente posición.
1 1 0 1 1 Gray
1 0 0 1 Binario
Paso 5. Sume el último bit del código binario que se acaba de generar al bit del código
Gray en la siguiente posición. Descarte acarreos.
1 1 0 1 1 Gray
1 0 0 1 0 Binario
53
APLICACIÓN A SENSORES ÓPTICOS.
La principal característica del código Gray (que sólo cambia un bit entre dos códigos
consecutivos) es muy utilizada en sensores ópticos para codificar la posición (angular
o lineal) mediante discos o cintas codificadas en Gray, dependiendo del caso.
Aunque el disco pudiera ser codificado en binario natural, el hacerlo en Gray tiene la
ventaja de que si el sensor queda ubicado entre dos sectores, la lectura tomada
producirá un error de cuando mucho media posición. En cambio, si es en binario este
error puede ser tan grande como 180°.
54
CÓDIGOS ALFANUMÉRICOS.
S t a r t
55
CÓDIGO DE SIETE SEGMENTOS.
56
CÓDIGOS PARA DETECCIÓN Y CORRECCIÓN DE ERRORES.
Los sistemas digitales pueden cometer errores de vez en cuando. Aunque los
dispositivos en circuito integrado tales como microprocesadores, compuertas lógicas o
circuitos de memoria carecen de partes móviles y por lo tanto tienen alta confiabilidad,
pero los dispositivos que tienen interacción con partes móviles son menos confiables.
Se pueden producir errores por polvo en las cabezas lectoras de una unidad de disco.
Existen dos métodos básicos para transmitir información entre dos dispositivos
digitales, como se ilustra en la siguiente figura, la transmisión de datos digitales en
paralelo ocupa una línea física por cada bit de los datos a enviar, esto hace que este
tipo de transmisión sea usada en distancias relativamente cortas (unos cuantos
metros), ya que de otra manera se vuelve muy costosa
Por otro lado, la transmisión de datos a distancias muy grandes (del orden de cientos
de metros a miles de kilómetros) hace necesario usar menos líneas físicas, en este
caso puede usarse el esquema de la figura siguiente o transmisión en serie, la cual
utiliza una sola línea para enviar el número de bits que se desee.
57
CÓDIGO DE PARIDAD.
Un método muy simple, pero ampliamente utilizado por su sencillez para detectar
errores en transmisión de datos consiste en añadir un bit de paridad (p) a cada
carácter, normalmente en la posición más significativa.
En el código de paridad par, el bit de paridad (p) se elige de manera que el número
de bits 1 del dato sea un número par incluyendo el bit de paridad. En el código de
paridad impar, el bit de paridad se elige de modo que el número de bits 1 (incluyendo
el de paridad) del dato sea impar.
Ejemplo: La siguiente tabla muestra un código de paridad par de 8 bits para los
caracteres ASCII “FIE.”
Como puede verse, el código de paridad no siempre resulta efectivo para detectar
errores. ¿Qué tipo de errores si detecta y cuáles no?
58
CÓDIGO DE HAMMING.
Richard Hamming (1950) ideó un método no sólo para detectar errores sino también
para corregirlos, y se conoce como código Hamming. En él se añaden k bits de
paridad a un carácter de n bits, formando un nuevo carácter de n + k bits. Los bits se
enumeran empezando por 1, no por 0, siendo el bit 1, el de la izquierda, el más
significativo. Todo bit cuyo número sea potencia de 2 es un bit de paridad y todos
los demás se utilizan para datos.
Para un carácter ASCII de 7 bits, se añaden 4 bits de paridad. Los bits 1, 2, 4 y 8 son
bits de paridad; 3, 5, 6, 7, 9, 10 y 11 son los 7 bits de datos. Cada bit de paridad
comprueba determinadas posiciones de bit y se ajusta de modo que el número total
de unos en las posiciones comprobadas sea par, si se trata de paridad par.
En general, el bit n es comprobado por los bits b1, b2,....,bj, tales que b1 + b2 + .... + bj
= n. Por ejemplo, el bit 5 es comprobado por los bits 1 y 4 porque 1 + 4 = 5. El bit 6 es
comprobado por los bits 2 y 4 porque 2 + 4 = 6.
Ejemplo: Usando paridad par, construir el código de Hamming para el carácter "b".
D6 D5 D4 D3 D2 D1 D0
59
Explicación
El bit 1 se puso a cero porque los bits 3 y 5 están en uno, para tener paridad par.
El bit 2 se puso a cero porque los bits 3 y 10 están en uno, para tener paridad par.
El bit 4 se puso a uno porque el bit 5 está en uno, para tener paridad par.
El bit 8 se puso a uno porque el bit 10 está en uno, para tener paridad par.
Ejemplo:
El número total de unos en los bits 1, 3, 5, 7, 9 y 11 debería de ser par, ya que se está
usando paridad par. El bit incorrecto debe ser uno de los bits comprobados por el bit
de paridad 1, es decir, uno de los bits 1, 3, 5, 7, 9 u 11. Como el bit de paridad 2 es
correcto, sabemos que los bits 2, 3, 6, 7, 10 y 11 son correctos, de forma que el error
no estaba en los bits 3, 7 u 11. Esto deja los bits 1, 5 y 9. El bit de paridad 4 es
correcto, lo cual significa que los bits 4, 5, 6 y 7 no contienen errores. Esto reduce la
elección al 1 o 9. El bit de paridad 8 también es correcto y, por lo tanto, el bit 9 es
correcto. Por consiguiente, el bit incorrecto debe ser el 1. Dado que se recibió como un
1, debería haberse transmitido como un 0. En esta forma se pueden corregir los
errores.
60
UNIDAD II: Circuitos digitales y dispositivos de memoria.
2.1 SEÑALES ANALÓGICAS Y DIGITALES.
a) Electrónica analógica:
Trata de circuitos en los que las señales eléctricas pueden tomar infinidad de valores
dentro de un rango determinado.
b) Electrónica digital:
Se encarga de estudiar los circuitos en los que las señales eléctricas sólo pueden
tomar dos valores: 1 o 0 (nivel alto, nivel bajo). La electrónica digital ha alcanzado una
gran importancia debido a que es utilizada para realizar autómatas y por ser la piedra
angular de los sistemas microprogramados como son los ordenadores o
computadoras.
61
Una señal analógica es un tipo de señal generada por algún tipo de fenómeno
electromagnético y que es representable por una función matemática continua en la
que es variable su amplitud y periodo (representando un dato de información) en
función del tiempo. Algunas magnitudes físicas comúnmente portadoras de una señal
de este tipo son eléctricas como la intensidad de corriente, la tensión y la potencia,
pero también pueden ser hidráulicas como la presión, térmicas como la temperatura,
mecánicas, etc.
Una onda senoidal es una señal analógica de una sola frecuencia. Los voltajes de la
voz y del video son señales analógicas que varían de acuerdo con el sonido o
variaciones de la luz que corresponden a la información que se está transmitiendo.
Por otro lado, las señales digitales adquieren uno de dos valores a través del tiempo,
como se puede apreciar en la figura anterior. Su comportamiento se puede equiparar
al de un interruptor (o switch) que tiene uno de dos estados: encendido o apagado.
Las ventajas de este tipo de transmisión es, primero, su inmunidad a las interferencias
ya que al digitalizar una señal se elimina el “ruido” producido por el medio ambiente,
produciendo una señal más pura y de mayor resolución (si se cumplen otros requisitos
que no son importantes en este momento); y, segundo, que puede codificarse usando
el sistema binario que se basa en los dígitos 1(encendido) y 0 (apagado). Ese tipo de
código se presta al almacenamiento; o sea, se puede guardar en memorias de las
utilizadas en cámaras digitales y discos duros de computadoras.
62
Las señales de cualquier circuito o comunicación electrónica son susceptibles de ser
modificadas de forma no deseada de diversas maneras mediante el ruido, lo que
ocurre siempre en mayor o menor medida. Para solucionar esto la señal suele ser
acondicionada antes de ser procesada.
La gran desventaja respecto a las señales digitales es que en las señales analógicas
cualquier variación en la información es difícil su recuperación, y esta pérdida afecta
en gran medida al correcto funcionamiento y rendimiento del dispositivo analógico. Un
sistema de control digital (como un ordenador, etc.) no tiene capacidad alguna para
trabajar con señales analógicas, de modo que necesita convertirlas en señales
digitales para poder trabajar con ellas.
63
REPASO.
Un conjunto es una colección de elementos u objetos bien definidos, en tal forma que
se puede afirmar con certeza si cualquier objeto dado pertenece o no a la agrupación.
Para denotar a los conjuntos, se usan letras mayúsculas y sus elementos con letras
minúsculas.
Que significa que el conjunto A esta formado de todos los elementos x tales que la
condición Pxes verdadera, como x1, x2, x3, etc.
3) Diagramas de Venn: son regiones cerradas que sirven para visualizar el contenido
de un conjunto o las relaciones entre conjuntos.
Ejemplo.
Dada la descripción verbal “el conjunto de las letras vocales”, expresarlo por
extensión, comprensión y por diagrama de Venn.
Solución.
64
Por diagrama de Venn:
a e
o u
Gráficamente:
65
b) La intersección de los conjuntos A y B es el conjunto de los elementos de A
que también pertenecen a B y se denota como A∩ B. Esto es:
A'𝐴̅xU | xA
Gráficamente:
66
Ejemplo.
U = {a, b, c, d, e, f, g, h, i, j, k, l, m, n}.
A = {a, d, e, g, h, k, l, n}.
B = {a, c, f, g, k, l, m}.
Obtener:
a) A ∪ B, b) A ∩ B, c) A' y d) B’.
Solución.
a) A∪ B = {a, c, d, e, f, g, h, k, l, m, n}.
b) A∩ B = {a, g, k, l}.
Sean los conjuntos A, B, C dentro del universo U. Las seis propiedades que rigen las
operaciones con esos conjuntos son las siguientes:
1. Propiedades de identidad:
A∪A.
A∪U U.
A∩U A.
A∩
2. Propiedades de idempotencia:
A∪A A.
A∩A A.
3. Propiedades de complemento:
A∪A' U.
A∩A'
67
4. Propiedades asociativas:
6. Propiedades distributivas:
A∪B ∩CA∪B∩A∪C
A∩B ∪CA∩B∪A∩C
Leyes de D’MORGAN.
(A ∪ B)' = A'∩B'.
68
Segunda ley. El complemento de la intersección de dos conjuntos es la unión
de sus complementos:
(A ∩ B)' = A'∪B'.
1. − (𝐴 ∩ 𝐵) ∪ (𝐴 ∩ 𝐵̅) = 𝐴 ∩ (𝐵 ∪ 𝐵̅) = 𝐴 ∩ Ω = A.
4. − (𝐴 ∩ 𝐵) ∪ (𝐴 ∩ 𝐵̅) ∪ (𝐴̅ ∩ 𝐵) =
= (𝐴 ∪ 𝐵).
69
(𝐴 ∩ 𝐵) ∪ (𝐴 ∩ 𝐵̅) ∪ (𝐴̅ ∩ 𝐵) = (𝐴 ∪ 𝐵).
Por lo tanto:
(𝐴 ∪ 𝐵) ∪ (𝐴̅ ∩ 𝐵̅) = Ω.
Proponiendo:
(𝐴 ∪ 𝐵) ∪ ̅̅̅̅̅̅̅̅̅̅
(𝐴 ∪ 𝐵) = Ω.
̅̅̅̅̅̅̅̅̅̅ ̅∩𝑩
(𝑨 ∪ 𝑩) = (𝑨 ̅ ).
6. − (𝐴 ∪ 𝐵) ∩ (𝐴 ∪ 𝐵̅) = 𝐴 ∪ (𝐵 ∩ 𝐵̅) = 𝐴 ∪ Φ = 𝐴.
9. − (𝐴 ∪ 𝐵) ∩ (𝐴 ∪ 𝐵̅) ∩ (𝐴̅ ∪ 𝐵) =
= (A ∩ 𝐵).
(A ∩ 𝐵) ∩ (𝐴̅ ∪ 𝐵̅) = Φ.
Proponiendo:
(A ∩ 𝐵) ∩ ̅̅̅̅̅̅̅̅̅̅
(A ∩ 𝐵) = Φ.
̅̅̅̅̅̅̅̅̅̅ ̅∪𝑩
(𝐀 ∩ 𝑩) = (𝑨 ̅ ).
70
Álgebra de Boole.
1. Propiedades de identidad:
A∪A; A + 0 = A.
A∪U U; A + 1 = 1.
A∩U A; A . 1 = A.
A∩
2. Propiedades de idempotencia:
A∪A A; A + A = A.
A∩A A; A . A = A.
3. Propiedades de complemento:
6. Propiedades distributivas
71
Primera ley de De Morgan.
̅̅̅̅̅̅̅̅̅̅ ̅∩𝑩
(𝑨 ∪ 𝑩) = (𝑨 ̅ ); ̅̅̅̅̅̅̅̅̅̅ ̅. 𝑩
(𝑨 + 𝑩) = (𝑨 ̅ ).
̅̅̅̅̅̅̅̅̅̅ ̅∪𝑩
(𝐀 ∩ 𝑩) = (𝑨 ̅ ); ̅̅̅̅̅̅̅̅ ̅+𝑩
(𝐀. 𝑩) = (𝑨 ̅ ).
El ejercicio 3, que realizamos para usarlo como base para demostrar la primera ley de
De Morgan es muy importante porque nos permite introducir el concepto de
mintérminos (la suma de productos dará 1), como se muestra a continuación.
(𝐴 ∩ 𝐵) ∪ (𝐴 ∩ 𝐵̅ ) ∪ (𝐴̅ ∩ 𝐵) ∪ (𝐴̅ ∩ 𝐵̅ ) = Ω.
mintérminos
(𝐴 ∪ 𝐵) ∩ (𝐴 ∪ 𝐵̅ ) ∩ (𝐴̅ ∪ 𝐵) ∩ (𝐴̅ ∪ 𝐵̅ ) = Φ.
(𝐴 + 𝐵) . ̅)
(𝐴 + B . ̅ + 𝐵)
(A . ̅+B
(A ̅) = 0.
MAXTERMINOS
72
2.2 COMPUERTAS LÓGICAS.
Las computadoras digitales utilizan el sistema de números binarios, que tiene dos
dígitos 0 y 1. Un dígito binario se denomina un bit. La información está representada
en las computadoras digitales en grupos de bits. Utilizando diversas técnicas de
codificación los grupos de bits pueden hacerse que representen no solamente
números binarios sino también otros símbolos discretos cualesquiera, tales como
dígitos decimales o letras de alfabeto. Utilizando arreglos binarios y diversas técnicas
de codificación, los dígitos binarios o grupos de bits pueden utilizarse para desarrollar
conjuntos completos de instrucciones para realizar diversos tipos de cálculos.
Como se muestra en la figura anterior, cada valor binario tiene una desviación
aceptable del valor nominal. La región intermedia entre las dos regiones permitidas se
cruza solamente durante la transición de estado. Las terminales de entrada de un
circuito digital aceptan señales binarias dentro de las tolerancias permitidas y los
circuitos responden en las terminales de salida con señales binarias que caen dentro
de las tolerancias permitidas. La lógica binaria tiene que ver con variables binarias y
con operaciones que toman un sentido lógico. La manipulación de información binaria
se hace por circuitos lógicos que se denominan compuertas.
Las compuertas son bloques del hardware que producen señales en binario 1 o 0
cuando se satisfacen los requisitos de entrada lógica. Las diversas compuertas lógicas
se encuentran comúnmente en sistemas de computadoras digitales. Cada compuerta
tiene un símbolo gráfico diferente y su operación puede describirse por medio de una
función algebraica. Las relaciones entrada - salida de las variables binarias para cada
compuerta pueden representarse en forma tabular en una tabla de verdad.
73
Compuerta SI o Buffer.
F=A
Compuerta Y (AND).
74
Su tabla de verdad es la siguiente:
F = A.B = AB.
Se puede definir la puerta AND, como aquella compuerta que entrega un 1 lógico sólo
si todas las entradas están a nivel alto 1.
Compuerta O (OR).
F = (A + B) = A + B.
75
Si hubiésemos seleccionados los unos (usando mintérminos), tendríamos:
tenemos:
𝐹 = 𝐴̅𝐵 + 𝐴𝐵̅ = 𝐴 ⊕ 𝐵.
76
Se puede definir esta compuerta como aquella que da por resultado uno, cuando los
valores en las entradas son distintos. ej.: 1 y 0, 0 y 1 (en una compuerta de dos
entradas). Si la compuerta tuviese tres o más entradas, la XOR tomaría la función de
suma de paridad, cuenta el número de unos a la entrada y si son un número impar,
pone un 1 a la salida, para que el número de unos pase a ser par. Esto es así porque
la operación XOR es asociativa, para tres entradas escribiríamos: 𝐴⨁(𝐵 ⊕ 𝐶)o bien
(𝐴⨁𝐵)⨁𝐶.
Lógica negada.
Compuerta NO (NOT).
77
La ecuación característica que describe el comportamiento de la puerta NOT es:
̅
𝑭 = 𝑨.
Se puede definir como una compuerta que proporciona el estado inverso del que esté
en su entrada.
La compuerta lógica NO-Y, más conocida por su nombre en inglés NAND, realiza la
operación de producto lógico negado.
78
Compuerta NO-O (NOR).
La compuerta lógica NO-O, más conocida por su nombre en inglés NOR, realiza la
operación de suma lógica negada.
0 0 1
0 1 0
1 0 0
1 1 0
̅̅̅̅̅̅̅̅̅̅̅
𝐹 = 𝐴̅. 𝐵̅ = (𝐴 + 𝐵), aplicando la primera ley de De Morgan.
79
Compuerta NO O exclusiva (XNOR).
𝐹 = 𝐴̅. 𝐵̅ + 𝐴. 𝐵 = 𝐴 ⊙ 𝐵 = ̅̅̅̅̅̅̅̅
𝐴 ⊕ 𝐵.
Se puede definir esta puerta como aquella que proporciona un 1 lógico, sólo si las dos
entradas son iguales, esto es, 0 y 0 o 1 y 1 (2 encendidos o 2 apagados).
NOTA: El tema 2.3 se sugiere verlo después de los temas 2.4, 2.5, 2.6 y 2.7.
80
2.3 FLIP FLOP.
Los circuitos lógicos que se han analizados anteriormente, las salidas en cualquier
momento depende exclusivamente de los valores de las entradas presentes, es decir,
a una misma combinación de entrada responden siempre con la misma salida. Debido
a esto, estos circuitos se denominan combinacionales.
Los circuitos combinacionales tienen muchas limitantes debido a que no son capaces
de reconocer el orden en que se van presentando las combinaciones de entradas con
respecto al tiempo, es decir, no pueden reconocer una secuencia de combinaciones,
ya que no poseen una manera de almacenar información pasada, es decir no poseen
memoria.
El circuito secuencial debe ser capaz de mantener su estado durante algún tiempo,
para ello se hace necesario el uso de dispositivos de memoria. Los dispositivos de
memoria utilizados en circuitos secuenciales pueden ser tan sencillos como un simple
retardador (inclusive, se puede usar el retardo natural asociado a las compuertas
lógicas) o tan complejos como un circuito completo de memoria denominado
multivibrador biestable o Flip_Flop.
Como puede verse entonces, en los circuitos secuenciales entra un factor que no se
había considerado en los combinacionales, dicho factor es el tiempo. De hecho, los
circuitos secuenciales se clasifican de acuerdo a la manera como manejan el tiempo
en circuitos secuenciales síncronos y circuitos secuenciales asíncronos.
81
Celda biestable o latch SR.
Una celda biestable o latch es un circuito lógico que puede almacenar un valor
booleano o un bit.
El latch S-R es un dispositivo con dos entradas (Set y Reset) y una variable de estado
o salida (Q) capaz de “guardar” un bit de información y funciona como sigue:
Diagrama de Bloques.
Aunque el biestable-SR posee dos entradas (S y R) y sólo una salida (Q), es común la
implementación que provee además de Q su versión complementada Q, como se
muestra en la figura siguiente.
S Q
R 𝑄̅
qqQ
Escriba
En la siguiente figura se muestra unaaquí la ecuación.
celda biestable S-R construida con compuertas
NAND. ̅
𝑄Q
Escriba aquí la ecuación.
Q
A continuación se muestra una tabla que ilustra el funcionamiento del latch S-R.
S R QK (estado QK+1
presente) (siguiente
estado)
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 prohibido
1 1 1 prohibido
82
Si se considera que las entradas S y R nunca tomaran simultáneamente los valores de
1, se obtiene la siguiente función para el Flip_Flop S-R:
QK+1=S+𝑅̅Q.
La cual indica que el siguiente estado del Flip_Flop será 1 cuando S=1 o cuando el
estado actual es 1 y R=0.
Señales de reloj.
Flip-Flop S-R.
Se pueden diseñar celdas biestables S-R con una entrada de reloj que cambien su
estado solamente cuando la señal de reloj tenga el valor de 1. Estas celdas se
conocen como flip-flop S-R que operan con nivel de reloj alto, como se muestra en la
siguiente figura.
Cuando la señal de reloj (entrada C) vale 0, la salida de los bloques AND seran 0. Esta
condicion es analoga a cuando se tenian ceros en las entradas del latch SR antes
visto, la cual originaba que conservara su estado. Cuando la señal de reloj vale 1, las
entradas SR se aplican a las compuertas NAND y la celda funciona exactamente igual
al latch SR analizado anteriormente.
83
A continuacion se muestra el simbolo del flip-flop SR.
S Q
C
𝑄̅
R
𝑄̅
A continuación se muestra su funcionamiento empleando diagramas de tiempo.
𝑄̅
Dado que un flip-flop puede guardar un valor booleano, se pensó en crear uno que
tuviera una sola entrada en la cual se pusiera el valor que se deseara guardar,
adicionalmente a la entrada de reloj para controlar el momento en que cambie su
estado. Para lograr esto, se diseñó el Flip-Flop D, el cual tiene una entrada
denominada D, y la entrada de reloj C.
Este circuito se puede reducir empleando una compuerta NAND en lugar de una
compuerta AND y un inversor, como se muestra a continuación.
84
El funcionamiento de este Flip-Flop es muy simple. Cuando la señal de reloj toma el
valor de 1, el valor que está en la entrada D se almacena en su salida Q.
D Presente Qsiguiente
0 X 0
1 X 1
X=no importa
Su símbolo es:
D Q
𝑄̅
C
C Q
Este Flip-Flop tiene dos entradas: la de reloj (C) y la que controla su operación (T),
como se muestra a continuación:
85
El biestable T cambia de estado ("toggle" en inglés) cuando T esta en alto y la entrada
de sincronismo o de reloj esta en alto. Si la entrada T está a nivel bajo, el biestable
retiene el nivel previo. La ecuación característica del biestable T que describe su
comportamiento es:
Qsiguiente = 𝑇 ⨁ 𝑄.
T Q Qsiguiente
0 0 0
0 1 1
1 0 1
1 1 0
Su símbolo es:
T Q
C 𝑄̅
C Q
86
El Flip-Flop JK.
Añadiendo bloques lógicos externos, también puede hacerse funcionar como Flip-Flop
D.
Cuando las dos entradas J y K valen 1 este Flip-Flop opera como un Flip-Flop T,
cambiando de estado cuando la señal de reloj vale 1.
87
J K Q Qsiguiente
0 0 0 0
0 0 1 1
0 1 X 0
1 0 X 1
1 1 0 1
1 1 1 0
X = no importa
El biestable se denomina así por Jack Kilby (JK), el inventor de los circuitos integrados
en 1958, por lo cual se le concedió el Premio Nobel en física de 2000.
Junto con las entradas J y K existe una entrada C de sincronismo o de reloj cuya
misión es la de permitir el cambio de estado del biestable cuando se produce un flanco
de subida o de bajada, según sea su diseño. Su denominación en inglés es J-K Flip-
Flop Edge-Triggered. De acuerdo con la tabla de verdad, cuando las entradas J y K
están a nivel lógico 1, a cada flanco activo en la entrada de reloj, la salida del biestable
cambia de estado. A este modo de funcionamiento se le denomina modo de
basculación (toggle en inglés).
Biestable JK Maestro-Esclavo.
88
2.4 CODIFICADORES.
Codificador Binario.
El codificador binario tiene 2n entradas y n salidas. Sólo, una sola de las entradas
puede estar activada. La salida suministra el valor binario correspondiente a la entrada
activada.
Codificador de 8 a 3.
El codificador 8 a 3 tiene 8 entradas (I0 a I7), una para cada uno de los ocho dígitos y 3
salidas que conforman el número binario equivalente (A0 a A2). La siguiente figura
muestra en el diagrama de bloques del codificador.
89
En la tabla de verdad, A0 tiene un 1 lógico para las columnas de entrada con subíndice
impar. La salida A1 es 1 en las columnas I2, I3, I6 e I7 y la salida A2 es 1 en las columnas
I4, I5, I6 e I7. Las expresiones lógicas son las siguientes:
A0 = I1 + I3 + I5 + I7
A1 = I2 + I3 + I6 + I7
A2 = I4 + I5 + I6 + I7
Por ejemplo, sí está activada la entrada 3, la salida es 011. El circuito se construye con
compuertas OR y se muestra en la siguiente figura.
Los circuitos codificadores pueden ser diseñados con prioridad o sin ella. En los
codificadores sin prioridad con entradas activas altas, la activación de más de una
entrada simultáneamente con valor 1, genera un código erróneo en la salida, de
acuerdo al número de entradas excitadas con el respectivo valor. La solución más
conveniente se logra empleando codificadores de prioridad.
90
Cuando la entrada 7 vale cero, la salida es cero, cuando la entrada 7 vale uno, la
salida es 1, si las entradas 6 y 7 valen 1, la salida es 2, cuando las entradas 7, 6 y 5
valen uno, la salida es 3 y así sucesivamente.
0 A0
1
2 A1
ENTRADA
3
SALIDA
DECIMAL
4
BCD
5 A2
6
8
A3
9
91
El bit A3 es el más significativo del código BCD y es 1 para los decimales 8 o 9. La
expresión para este bit en función de los dígitos decimales se escribe:
A3 = 8+9.
A2 = 4+5+6+7.
A1 = 2+3+6+7.
A0 = 1+3+5+7+9.
Aplicaciones.
92
2.5 DECODIFICADORES.
Las funciones lógicas para las salidas del decodificador de 2 X 4, usando mintérminos
son:
93
𝑆o = Hab. ̅C1
̅̅̅ ̅̅̅̅
C0 .
𝑆1 = Hab. ̅C1
̅̅̅ C0.
̅̅̅̅ .
𝑆2 = 𝐻𝑎𝑏. 𝐶1 𝐶0
𝑆3 = Hab. C1 C0 .
94
2.6 MULTIPLEXORES.
Los multiplexores MUX son circuitos combinacionales con varias entradas y una salida
de datos, y están dotados de entradas de control capaces de seleccionar una, y sólo
una, de las entradas de datos para permitir su transmisión desde la entrada
seleccionada a la salida que es única.
Dentro de un multiplexor hay que destacar tres tipos de señales: los datos de entrada,
las entradas de control y la salida.
95
Este dispositivo también tiene una entrada para habilitarlo, la cual debe tener el valor
de 1 para que en la salida se obtenga el valor de la entrada seleccionada por las
entradas de control. Si la entrada habilitadora toma el valor de 0, la salida tomara el
valor de 0, independientemente de los valores presentes en las otras entradas.
Hab. C1 C0 S
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 e0
1 0 1 e1
1 1 0 e2
1 1 1 e3
Símbolo.
De forma semejante pueden definirse selectores de 8:1, 16:1, 32:1 y en forma general
de 2n : 1.
96
Demultiplexores.
Este dispositivo tiene n entradas de control, una entrada habilitadora, una sola entrada
de datos y 2n salidas. Las entradas de control sirven para seleccionar a cuál de las 2n
salidas de datos se conectara la entrada. A continuación se muestra el diagrama de un
selector 1:4.
Las funciones lógicas para las salidas del selector de 1:4 son:
̅̅̅̅ 𝐶𝑜
𝑆𝑜 = 𝐻𝑎𝑏. 𝐶1 ̅̅̅̅ 𝑒.
𝑆1 = 𝐻𝑎𝑏. ̅̅̅̅
𝐶1 𝐶𝑜 𝑒.
97
𝑆2 = 𝐻𝑎𝑏. 𝐶1 ̅𝐶𝑜
̅̅̅ 𝑒
𝑆3 = 𝐻𝑎𝑏. 𝐶1 𝐶𝑜 𝑒.
De forma similar, se pueden definir selectores de 1:8, 1:16, 1:32 y en forma general,
de 1:2n.
La principal utilización de este dispositivo es cuando se tiene una sola entrada que
puede ser dirigida a solamente una de las N salidas posibles.
98
2.7 CIRCUITOS ARITMÉTICOS.
Sumador básico.
Un sumador básico es un circuito combinatorio que tiene como entrada dos números
binarios de n bits y da como salida la suma binaria de estos números y un posible
acarreo.
Al empezar la suma de los bits menos significativos (A0+ B0), se requiere de un circuito
que solamente sume dos bits, el cual genera dos salidas; una para dar la suma de
estos dos bits (S0) y la otra para indicar el posible acarreo que se pueda generar (C0).
Para sumar los bits restantes es necesario un circuito que sume 3 bits ( Ai+ Bi+ Ci-1),
para que genere como salida la suma (Si) y el posible acarreo (Ci).
A0 S0
B0 Semisumador C0
A0 B0 S0 C0
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
99
Las funciones de suma y acarreo empleando mintérminos son:
𝑆𝑜 = ̅̅̅̅
𝐴𝑜 𝐵𝑜 + 𝐴𝑜 ̅̅̅̅
𝐵𝑜 = 𝐴𝑜 ⊕ 𝐵𝑜.
𝐶𝑜 = 𝐴𝑜 𝐵𝑜.
Sumador completo.
An Sn
Sumador
Bn Cn
Cn-1
An Bn Cn.1 Sn Cn
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
100
La función para la suma empleando mintérminos es:
̅̅̅̅ 𝐵𝑛
𝑆𝑛 = 𝐴𝑛 ̅̅̅̅ 𝐶𝑛 − 1 + ̅̅̅̅
𝐴𝑛 𝐵𝑛 ̅̅̅̅̅̅̅̅̅ ̅̅̅̅ ̅̅̅̅̅̅̅̅̅
𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛 𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛 𝐶𝑛 − 1.
𝑆𝑛 = ̅̅̅̅̅
𝐴𝑛 (𝐵𝑛̅̅̅̅ 𝐶𝑛 − 1 + 𝐵𝑛̅̅̅̅̅̅̅̅̅̅ ̅̅̅̅ ̅̅̅̅̅̅̅̅̅
𝐶𝑛 − 1) + 𝐴𝑛 (𝐵𝑛 𝐶𝑛 − 1 + 𝐵𝑛 𝐶𝑛 − 1).
̅̅̅̅ ( 𝐵𝑛 ⊕ 𝐶𝑛 − 1 ) + 𝐴𝑛 ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑆𝑛 = 𝐴𝑛 ( 𝐵𝑛 ⊕ 𝐶𝑛 − 1 ).
𝑆𝑛 = 𝐴𝑛 ⊕ ( 𝐵𝑛 ⊕ 𝐶𝑛 − 1 ) .
𝑆𝑛 = 𝐴𝑛 ⊕ 𝐵𝑛 ⊕ 𝐶𝑛 − 1.
̅̅̅̅ 𝐵𝑛 𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛
𝐶𝑛 = 𝐴𝑛 ̅̅̅̅ 𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛 ̅̅̅̅̅̅̅̅̅
𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛 𝐶𝑛 − 1 .
̅̅̅̅ 𝐵𝑛 + 𝐴𝑛 𝐵𝑛
𝐶𝑛 = ( 𝐴𝑛 ̅̅̅̅ )𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛 ( ̅̅̅̅̅̅̅̅̅
𝐶𝑛 − 1 + 𝐶𝑛 − 1).
𝐶𝑛 = ( 𝐴𝑛 ⊕ 𝐵𝑛 )𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛 (1).
𝐶𝑛 = ( 𝐴𝑛 ⊕ 𝐵𝑛 )𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛.
( 𝐴𝑛 ⊕ 𝐵𝑛 )
( 𝐴𝑛 ⊕ 𝐵𝑛 )𝐶𝑛 − 1
101
Restador básico.
Un restador básico es un circuito combinatorio que tiene como entrada dos números
binarios de n bits y da como salidas la diferencia binaria de estos números y un posible
préstamo.
Al empezar la resta de los bits menos significativos (A0 - B0), se requiere de un circuito
que solamente reste dos bits, el cual genera dos salidas; una para dar la diferencia de
estos dos bits (D0) y la otra para indicar el posible préstamo que se pueda solicitar
(Borrow0).
Para restar los bits restantes es necesario un circuito que reste 3 bits ( An – Bn -
Borrown-1), para que genere como salidas la diferencia (Dn) y el posible préstamo
(Borrown).
102
Semirestador o medio restador.
A0 D0
B0 Semirestador Borrow0
A0 B0 D0 Borrow0
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0
𝐷𝑜 = ̅̅̅̅
𝐴𝑜 𝐵𝑜 + 𝐴𝑜 ̅̅̅̅
𝐵𝑜.
𝐷𝑜 = 𝐴𝑜 ⊕ 𝐵𝑜.
̅̅̅̅ 𝐵𝑜.
𝐵𝑜𝑟𝑟𝑜𝑤𝑜 = 𝐴𝑜
103
Restador completo.
An Dn
Bn Restador Borrown
Borrown-1
An Bn Borrown.1 Dn Borrown
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
̅̅̅̅ 𝐵𝑛
𝐷𝑛 = 𝐴𝑛 ̅̅̅̅̅𝐵𝑛 ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
̅̅̅̅ 𝐵𝑜𝑟𝑟𝑜𝑤n − 1 + 𝐴𝑛 ̅̅̅̅ ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝐵𝑜𝑟𝑟𝑜𝑤n − 1 + 𝐴𝑛 𝐵𝑛 𝐵𝑜𝑟𝑟𝑜𝑤n − 1 + 𝐴𝑛 𝐵𝑛 𝐵𝑜𝑟𝑟𝑜𝑤n − 1 .
𝐷𝑛 = ̅̅̅̅
𝐴𝑛(𝐵𝑛̅̅̅̅ 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1 + 𝐵𝑛 ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1) 𝐵𝑛 ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
+ 𝐴𝑛( ̅̅̅̅ 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1 + 𝐵𝑛 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1) .
𝐷𝑛 = 𝐴𝑛 ⊕ (𝐵𝑛 ⊕ 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1) .
𝐷𝑛 = 𝐴𝑛 ⊕ 𝐵𝑛 ⊕ 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1 .
̅̅̅̅ 𝐵𝑛
𝐵𝑜𝑟𝑟𝑜𝑤𝑛 = (𝐴𝑛 ̅̅̅̅̅𝐵𝑛(𝐵𝑜𝑟𝑟𝑜𝑤𝑛
̅̅̅̅ + 𝐴𝑛 𝐵𝑛)𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1 + 𝐴𝑛 ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
− 1 + 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1).
104
El circuito restador se muestra a continuación
105
Deseamos usar un solo circuito para sumar y restar, por lo que compararemos las
ecuaciones del sumador y restador.
Semisumador:
𝑆𝑜 = ̅̅̅̅
𝐴𝑜 𝐵𝑜 + 𝐴𝑜 ̅̅̅̅
𝐵𝑜 = 𝐴𝑜 ⊕ 𝐵𝑜..
C0 = A0.B0
Semirestador
𝐷𝑜 = ̅̅̅̅
𝐴𝑜 𝐵𝑜 + 𝐴𝑜 ̅̅̅̅
𝐵𝑜 = 𝐴𝑜 ⊕ 𝐵𝑜
La diferencia
𝐵𝑜𝑟𝑟𝑜𝑤𝑜 = ̅̅̅̅
𝐴𝑜 𝐵𝑜
Dado que tendremos una misma terminal para S0 / D0 y otra para C0 / Borrow0
Sumador
𝑆𝑛 = 𝐴𝑛 ⊕ 𝐵𝑛 ⊕ 𝐶𝑛 − 1.
𝐶𝑛 = ( 𝐴𝑛 ⊕ 𝐵𝑛 )𝐶𝑛 − 1 + 𝐴𝑛 𝐵𝑛.
Restador
𝐷𝑛 = 𝐴𝑛 ⊕ 𝐵𝑛 ⊕ 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1.
Las diferencias
𝐵𝑜𝑟𝑟𝑜𝑤𝑛 = (̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
𝐴𝑛 ⊕ 𝐵𝑛) 𝐵𝑜𝑟𝑟𝑜𝑤𝑛 − 1 + ̅̅̅̅
𝐴𝑛 𝐵𝑛
Dado que tendremos una misma terminal para Sn / Dn y otra para Cn / Borrown
Considere las siguientes figuras para poder tomar en cuenta estas diferencias.
106
Como se puede observar el botón adicional funcionaria como el definidor de hacer la
suma (no presionado = 0) o la resta (presionado = 1).
Este circuito presenta los resultados en binario, pero no todas las personas conocen
este sistema numérico, por lo que procederemos a diseñar un decodificador BCD de 7
segmentos como se citó en el apartado de los decodificadores.
107
A continuación se muestra una tabla con los valores de entrada en binario que
deseamos mostrar en el display de 7 segmentos.
Para obtener la salida debemos seleccionar los segmentos que deberán prender, así
por ejemplo, el cero solo tenemos que apagar (0) el segmento g y los demás
prenderlos (1), para el numero uno se prenden b y c, y así sucesivamente hasta el
número 9.
108
Para simplificar la función de cada segmento utilizaremos los mintérminos, pero ahora
emplearemos un método gráfico, por lo que veremos mapas de Karnaugh.
Mapas de Karnaugh.
El mapa de Karnaugh es a menudo usado para simplificar los problemas lógicos con 2,
3, 4 o 5 variables.
Un mapa de Karnaugh de 2 variables es trivial pero puede ser usado para introducir el
método que necesitas aprender. El mapa para una puerta OR de dos entradas es
como sigue:
A 0 1
B
0 1
1
1 1
Los valores de una variable aparecen sobre la parte superior del mapa, definiendo los
valores de la columna, mientras los valores de la otra variable aparecen a un lado,
definiendo los valores de la variable en cada fila.
109
El mapa de Karnaugh se va completando colocando los unos “1” en la celda
apropiada, ayudados por la tabla de verdad. Esta agrupación es conocida como
mintérminos y como expresión booleana viene a ser una suma de productos.
Usualmente no se escriben los ceros en la tabla, ya que solo se agrupan los unos.
En el mapa las celdas adyacentes que contienen unos se agrupan de dos, de cuatro,
o de a ocho (En general 2n ). En este caso, hay un grupo horizontal y otro vertical que
puede agruparse de a dos. Se indican los agrupamientos dibujando un contorno
alrededor de los unos.
𝐴̅ 𝐵 + 𝐴 𝐵.
(𝐴̅ + 𝐴)𝐵 = 𝐵.
De una forma similar, el grupo vertical de dos celdas podría haber sido escrito como:
𝐴 𝐵̅ + 𝐴 𝐵.
Desde el mapa, puedes ver que el valor de B no afecta el valor escrito en las celdas
para este grupo. En otras palabras, el grupo vertical se reduce a:
𝐴 ( 𝐵̅ + 𝐵) = 𝐴.
A + B.
110
A B C Salida
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
AB
AB 00 01 11 10
C
0 1
1
1 1 1
BC AC
En el mapa de Karnaugh puedes identificar 3 grupos de dos “1”, como está indicado.
̅ 𝐵 𝐶 ) y (A.B.C). Dentro de
El grupo horizontal del lado izquierdo combina las celdas (𝐴
este grupo el valor de A cambia, esto significa que esta variable, A, no afecta los
valores de las celdas. Entonces A puede ser eliminada de la expresión, quedando
(B.C).
Operando sobre los otros grupos de forma similar observamos que en el agrupamiento
horizontal de “1” de la derecha, que incluye los mintérminos (A.B.C) y (𝐴 𝐵 ̅ 𝐶 ), la
variable que cambia es la B por lo tanto se puede eliminar y quedaría (A.C).
Con un poco de práctica, este método va a ser más rápido que la alternativa de
simplificar la expresión booleana derivada de la tabla de verdad como suma de
productos (mintérminos), que resulta más complicada:
𝐴 𝐵 𝐶̅ + 𝐴 𝐵̅ 𝐶 + 𝐴̅ 𝐵 𝐶 + 𝐴 𝐵 𝐶
111
Mapa de Karnaugh de 4 variables.
Ejemplo.
Simplificar la expresión:
𝑥 = 𝐴 𝐵 𝐶̅ 𝐷
̅ + 𝐴 𝐵̅ 𝐶̅ 𝐷
̅+ 𝐴𝐵𝐶𝐷+ 𝐴𝐵𝐶𝐷
̅ + 𝐴 𝐵̅ 𝐶 𝐷 + 𝐴 𝐵̅ 𝐶 𝐷
̅
CD
00 01 11 10
AB
00
01
11 1 1 1
1 1 1
10
AD AC
Para dar la expresión booleana más simple deberás agrupar el mayor número de
términos o de celdas, en lo posible. En este caso se han redondeado y agrupado dos
grupos de 4 unos, uno de los cuales lo hace con 2 unos de la parte extrema y otros
dos en la parte inferior del mapa. Debes identificar qué variables de cada grupo se
mantienen constantes, sin cambiar de “1” a “0” o viceversa, y eliminas aquellas
variables que sí cambian. En nuestro caso hay 2 que cambian y otras 2 que no
cambian. La expresión final simplificada será:
̅.
𝑥 =𝐴𝐶+𝐴𝐷
112
Entradas Salidas
Decimal A B C D a b c d e f g
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 1 0 1 1
10 1 0 1 0 x x x x x x x
11 1 0 1 1 x x x x x x x
12 1 1 0 0 x x x x x x x
13 1 1 0 1 x x x x x x x
14 1 1 1 0 x x x x x x x
15 1 1 1 1 x x x x x x x
113
114
115
116
117
118
Para el segmento g el estudiante puede usar el siguiente software en linea para
autoevalurse.
̅ + 𝐵𝐶̅ + 𝐵̅𝐶
𝑔 = 𝐴 + 𝐶𝐷
119
El decodificador BCD de 7 segmentos que cumple con estas ecuaciones es:
Ahora tenemos las bases para construir los circuitos que convierten el código binario
a Gray y viceversa.
120
El circuito que convierte el código binario de 5 bits a Gray es:
121
2.8 ESTRUCTURA Y FUNCIONAMIENTO GENERAL DE LAS MEMORIAS.
Memorias estáticas.
Una memoria estática tiene un conjunto de entradas que sirven para proporcionar la
dirección de la palabra cuya información que se desea conocer, un conjunto de
salidas, que corresponden a cada uno de los bits de la palabra que se ha seleccionado
mediante la dirección, y una entrada de control para habilitar o deshabilitar la memoria.
122
La principal característica de las memorias estáticas es que no son volátiles, por lo
cual son muy útiles en un sistema computacional, para que al momento de encenderlo
éste tenga algunas rutinas y datos en su memoria o para tener cargadas en la
memoria principal rutinas de uso frecuente, y así no tener que cargarlas desde la
memoria secundaria.
Las primeras memorias estáticas que se construyeron son las conocidas como
memorias ROM, la información que está almacena en cada una de las palabras se fija
al momento de construir la memoria y ya no puede ser cambiada después.
Lógicamente, su construcción está hecha con base en un decodificador y un bloque
OR por cada uno de los bits de la palabra, los cuales tienen una entrada por cada
palabra.
Dirección Contenido
A1 A0 D2 D1 D0
0 0 0 1 1
0 1 0 1 0
1 0 1 0 0
1 1 1 1 1
̅̅̅̅ 𝐴0
𝐷1 = 𝐴1 ̅̅̅̅ + 𝐴1
̅̅̅̅ 𝐴0 + 𝐴1 𝐴0 ; Que asociaríamos con S0, S1 y S3 del decodificador.
𝐷0 = ̅̅̅̅
𝐴1 ̅̅̅̅
𝐴0 + 𝐴1 𝐴0 ; Que asociaríamos con S0 y S3 del decodificador.
123
1
El circuito presentado muestra el caso para la dirección 00 con el dato 011, pero se
puede comprobar para las restantes direcciones.
El circuito de una memoria ROM también puede ser construido con un decodificador y
una matriz de diodos. El diodo es un elemento analógico pero en su comportamiento
ideal puede utilizarse como un elemento digital.
Memoria RAM.
Al igual que una memoria ROM, la memoria RAM puede ser considerada como un
conjunto de localidades de memoria, sólo que en cada una de éstas puede leerse
información y también puede escribirse. Cada una de estas localidades de memoria se
identifica por una dirección única, la cual recibe el nombre de palabra. En cada palabra
es posible leer o almacenar un número fijo de bits, los cuales pueden representar una
instrucción o dato.
Una memoria RAM tiene como entradas, un canal de direcciones, para especificar la
palabra con la cual se desea trabajar, y 2 líneas de control; una para habilitar o
deshabilitar la memoria, llamada selector del circuito o habilitador del circuito (Chip
̅
Select, CS) y la otra para indicar si se desea realizar una lectura o una escritura R / 𝑊
̅
(del inglés Read / Write, se usa 𝑊 para indicar que la operación de escritura se realiza
cuando en esta línea se tiene un 0). Además cuenta con un canal de datos el cual
normalmente es bidireccional, se comporta como un canal de entrada en la operación
de escritura y como canal de salida en la operación de lectura. La principal razón de
124
este canal bidireccional es reducir el número de conexiones externas en el circuito
integrado. La siguiente figura ejemplifica una memoria RAM de M líneas en el canal de
direcciones y de n líneas en el canal de datos.
Celda binaria.
Las celdas binarias de la memoria RAM dinámica están construidas básicamente por
medio de un capacitor que almacena la información y un transistor. El transistor
permite cargar o descargar el capacitor, así como leer el valor que tiene éste. La
carga almacenada en el capacitor tiende a desaparecer al momento de leerla, por lo
cual siempre que se lee una celda binaria con valor de 1, debe ser seguida de una
operación de escritura de un 1 y así restaurar la carga en el capacitor. Los circuitos de
control de la RAM realizan esta operación de escritura en forma automática.
Las memorias RAM dinámicas se refrescan mediante un circuito externo, que lea una
secuencia de direcciones. Normalmente no es necesario leer todas las direcciones, ya
que al leer una dirección se realiza el refresco a una serie de direcciones (un bloque
de memoria). En la actualidad existen memorias RAM dinámicas que realizan el
refresco en forma transparente, a estas memorias se les llama RAM dinámicas
125
sincrónicas. En una computadora, el refresco de la memoria RAM se realiza mientras
la RAM está inactiva.
Note que para hacer una escritura en la celda, es necesario poner en la línea de R/ 𝑊 ̅
un 0, en el selector un 1 y el dato que se desea escribir en la entrada. Si éste es un 1,
se dará un SET en el latch, y si es un 0 se dará un RESET en el latch.
La siguiente figura muestra el diagrama de bloque de una celda binaria que se usara
en la construcción de una memoria RAM.
Memoria RAM de M x N.
126
La construcción lógica de una RAM pequeña de 4 x 4, en forma simplificada se
muestra en la siguiente figura.
Esta memoria cuenta con 4 palabras de 4 bits. Para seleccionar una de las 4 palabras
se requiere de un canal de direcciones de 2 líneas, a1 y a0 (a de address), las cuales
entran al decodificador.
127
128
Para unir el canal de entrada y el de salida en uno solo es necesario introducir una
nueva compuerta, ésta es el buffer de tres estados. En la siguiente figura se muestra
el símbolo usado para dicha compuerta, así como su funcionamiento.
La compuerta tiene una entrada de control y una entrada normal, cuando la primera
(C) tiene el valor de 1, la salida de la compuerta tiene el valor que se encuentra en la
entrada (E), el cual puede ser un 1 o un 0 (2 estados). Si la entrada de control vale 0,
la salida pasa a un estado de alta impedancia (tercer estado), lo que equivale a
desaparecer la compuerta y separar la entrada de la salida. El estado de alta
impedancia que tiene la salida es la característica que hace especial a esta
compuerta.
En la siguiente figura se muestra el circuito usado para hacer que una línea de un
canal se comporte como línea de entrada o como línea de salida dependiendo de una
señal de control.
129
La construcción lógica de una memoria con mayor capacidad, es una extensión directa
de la memoria que se ha presentado.
130
2.9 CLASIFICACIÓN DE LAS MEMORIAS
Las RAM son memorias de lectura-escritura en las que los datos se pueden escribir o
leer en cualquier dirección seleccionada en cualquier secuencia. Cuando se escriben
los datos en una determinada dirección de la RAM, los datos de esa dirección
permanecen almacenados y no son borrados por la operación de lectura. Esta
operación no destructiva de lectura se puede entender como una copia del contenido
de una dirección, dejando dicho contenido intacto. La RAM se utiliza habitualmente
para almacenamiento de datos a corto plazo ya que no puede conservar los datos
almacenados cuando se desconecta la alimentación. A continuación se muestra una
clasificación de memorias RAM.
131
RAM estática (SRAM)
Todas las RAM estáticas se caracterizan por las celdas de memoria latch. Cuando se
aplica alimentación continua a una celda de memoria estática se puede mantener un
estado 1 a 0 indefinidamente. Si se retira la alimentación, el bit de datos almacenado
se perderá.
132
programadas para la inicialización y el funcionamiento de un sistema. Las ROM
mantienen los datos almacenados cuando se desconecta la alimentación y son, por
tanto memorias no volátiles. A continuación se citan algunos tipos de memorias ROM.
LA ROM DE MÁSCARA.
Las PROM son básicamente iguales que las ROM de máscara, una vez que han sido
programadas. La diferencia consiste en que las PROM salen de fábrica sin estar
programadas y se programan para satisfacer las necesidades del usuario.
Memorias PROM.
Utilizan algún tipo de mecanismo de fundición para almacenar bits, donde un hilo
(fusible) de memoria se funde o queda intacto para representar un 1 o un 0. El proceso
de fundición es irreversible; una vez que una PROM ha sido programada no puede
cambiarse.
Memorias EPROM.
Una EPROM es una PROM borrable. A diferencia de una PROM ordinaria, una
EPROM puede ser reprogramada si antes se borra el programa existente en la matriz
de memoria. Una EPROM utiliza una matriz NMOSFET con una estructura de puerta
aislada. La compuerta del transistor aislada no tiene ninguna conexión eléctrica y
puede almacenar una carga eléctrica durante un periodo de tiempo indefinido. Los bits
de datos en este tipo de matriz se representan mediante la presencia o ausencia de
una carga almacenada en la compuerta. El borrado de un bit de datos es un proceso
que elimina la carga de la compuerta.
MEMORIAS FLASH.
Las memorias flash son memoria de lectura/escritura de alta densidad (alta densidad
equivale a gran capacidad de almacenamiento de bits) no volátiles, lo que significa que
pueden almacenarse los datos indefinidamente en ausencia de alimentación. Estas
memorias se utilizan frecuentemente en las unidades de disco duro de baja capacidad
en las computadoras portátiles y en los microcontroladores para almacenar los
programas.
133
2.10 CONEXIONES DE MEMORIAS.
Con frecuencia se usan varios circuitos de memoria para formar memorias más
grandes, puede ser que se quiera una memoria con más palabras o una que contenga
un tamaño de palabra mayor. Suponga que se tienen varios circuitos de memoria RAM
de 1K palabras de 8 bits y se desea formar una memoria de 2K palabras de 8 bits.
Necesitamos una línea de dirección más significativa (A10), que determine cuál de los
2 circuitos se selecciona, como se muestra en seguida.
Canal de direcciones de A9 a A0
A10
Canal de datos de D7 a D0
Canal de direcciones de A9 a A0
RAM RAM
CS R/W CS R/W R/W
1Kx8 1Kx8
A10
D15 a D8 D0 a D7
En esta configuración, los dos circuitos siempre son seleccionados cuando A10 vale
cero, y cada uno de ellos proporciona 8 líneas para formar el canal de datos de 16
líneas.
134
Para facilitar el diseño de un sistema de memoria se forma un mapa de direcciones de
memoria donde por medio de una tabla específica, para cada circuito de memoria, se
establece el conjunto de direcciones de memoria que se le asignan.
Ejemplo.
Diseñe un sistema de memoria de 64K bytes, en el que los primeros 48K bytes son de
RAM y el resto es de ROM. Se cuenta con dos memorias RAM de 16K bytes, dos
memorias RAM de 16K palabras de 4 bits y una memoria ROM de 16K bytes.
• Análisis.
Palabra = 4 bits.
1K bytes = 2 K palabras.
• Reflexión
• Síntesis
Las direcciones de los 16K las controlo con las líneas de A0 a _A13___.
135
El circuito quedaria asi.
136
UNIDAD III: Arquitectura general de una
computadora.
3.1 DIAGRAMA GENERAL DE UNA COMPUTADORA.
VON NEUMANN.
En el año de 1903 nace en Hungría John Von Neumann, uno de los más brillantes
matemáticos de la era de la computación. Durante la Segunda Guerra Mundial
participó como asesor en la construcción de la computadora ENIAC y más tarde de la
UNIVAC, siendo su gran aporte el del concepto de programa almacenado o micro-
código. A él se debe la arquitectura en la que se fundamentan la mayoría de los
microprocesadores y microcontroladores actuales.
137
• La unidad aritmético lógica o ALU es el dispositivo diseñado y construido para
llevar a cabo las operaciones elementales como las operaciones aritméticas
(suma, resta, ...), operaciones lógicas (Y, O, NO), y operaciones de
comparación o relacionales. En esta unidad es en donde se hace todo el
trabajo computacional.
138
HARVARD.
El núcleo de la CPU está conectado a dos memorias por intermedio de dos buses
separados. Una de las memorias contiene solamente las instrucciones del programa, y
es llamada memoria de programa. La otra memoria sólo almacena los datos y es
llamada memoria de datos. Ambos buses son totalmente independientes y pueden ser
de distintos tamaños.
Arquitectura Harvard.
139
OTROS CONCEPTOS Y OTRAS ARQUITECTURAS.
Es frecuente encontrar un sin número de artículos que hablan bien o mal de RISC y de
CISC, pero a estas alturas se concluye que lo mejor es tomar lo bueno de un concepto
y del otro, como lo han hecho muchos fabricantes de microprocesadores y que han
tenido gran éxito.
140
Concepto de procesadores vectoriales o paralelos.
El controlador encausa varias operaciones hacia las diferentes ALU, para que éstas
sean ejecutadas en paralelo. Si a lo anterior se le aplica la segmentación de
instrucciones, se obtendrían máquinas con operaciones muy potentes y de
velocidades altas (ver la siguiente figura).
141
3.2 BUSES.
Los buses son los medios que permiten establecer la comunicación con los distintos
periféricos que podríamos utilizar en conjunto con el microcontrolador (sensores,
memorias externas, puertos, etc.).
Bus paralelo. En este caso, los datos se transmiten a través de varias líneas a la vez.
Los buses seriales son ampliamente utilizados para comunicar microcontroladores con
memorias EEPROM, convertidores A/D y muchos otros periféricos. Los sistemas de
buses seriales también son ampliamente utilizados para implementar buses de control
dentro de equipos como televisores, equipos de música y teléfonos celulares.
142
El BUS I2C
El I2C (Inter Integrated Circuits, también conocido con el nombre de TWI –de “TWo-
wIre”, literalmente “dos cables” en inglés) es un bus de comunicaciones serial síncrono
de dos líneas que fue originalmente desarrollado por Philips Semiconductors (ahora
nxp semiconductors) desde los inicios de los ‘80. Hoy es un estándar aceptado y
respaldado por los fabricantes de dispositivos semiconductores.
El bus I2C permite la comunicación entre múltiples dispositivos (en teoría más de
1000), todos conectados paralelamente a las dos líneas. Las transferencias de datos
siempre se realizan entre dos dispositivos a la vez y en una relación maestro –
esclavo.
La ventaja de este bus es que sólo necesita de 2 líneas (clock y data) para una
comunicación full dúplex entre múltiples dispositivos. La interfaz típicamente corre a
bajas velocidades (100kHz a 400khz). Con I2C, cada dispositivo en el bus tiene una
dirección de memoria única. El dispositivo puede trabajar como receptor y/o transmisor
dependiendo de cómo haya sido configurado.
Cada dispositivo conectado al bus I²C tiene una dirección única que lo identifica
respecto el resto de dispositivos, y puede estar configurado como “maestro” o como
“esclavo”. Un dispositivo maestro es el que inicia la transmisión de datos y además
genera la señal de reloj, pero no es necesario que el maestro sea siempre el mismo
dispositivo: esta característica se la pueden ir intercambiando ordenadamente los
dispositivos que tengan esa capacidad
143
Tal como se muestra en el diagrama anterior, para funcionar correctamente tanto la
línea “SDA” como la “SCL” necesitan estar conectadas mediante una resistencia “pull-
up” a la fuente de alimentación común, la cual puede proveer un voltaje generalmente
de 5 V o 3,3 V (aunque sistemas con otros voltajes pueden ser posibles).
144
Las transacciones en el bus I2C tienen el siguiente formato:
145
Cuando los datos son enviados por SDA, los pulsos de reloj son enviados por SCL
para mantener al maestro y el esclavo sincronizados. Puesto que los datos son
enviados como un bit en cada pulso de reloj, la transferencia de datos es un octavo la
frecuencia de reloj.
Esta librería permite comunicar con I2C/TWI Arduino con otros dispositivos. En las
placas Arduino con el diseño R3 (1.0 terminal de salida), la SDA (línea de datos) y
SCL (línea de reloj) están en los pines cerca del pin AREF.
Bus SPI
El bus SPI (Serial Peripheral Interface), al igual que el sistema I²C, el sistema de
comunicación SPI es un estándar que permite controlar (a cortas distancias) casi
cualquier dispositivo electrónico digital que acepte un flujo de bits serie sincronizado
(es decir, regulado por un reloj). Igualmente, un dispositivo conectado al bus SPI
puede ser “maestro” –en inglés, “master” – o “esclavo” –en inglés, “slave“–, donde el
primero es el que inicia la transmisión de datos y además genera la señal de reloj
(aunque, como con I²C , con SPI tampoco es necesario que el maestro sea siempre el
mismo dispositivo) y el segundo se limita a responder.
146
La mayor diferencia entre el protocolo SPI y el I²C es que el primero requiere de cuatro
líneas (“cables”) en vez de dos. Una línea (llamada normalmente “SCK”) envía a todos
los dispositivos la señal de reloj generada por el maestro actual; otra (llamada
normalmente “SS”) es la utilizada por ese maestro para elegir en cada momento con
qué dispositivo esclavo se quiere comunicar de entre los varios que puedan estar
conectados (ya que solo puede transferir datos con un solo esclavo a la vez); otra
(llamada normalmente “MOSI”, Master Out Slave In data) es la línea utilizada para
enviar los datos –0s y 1s– desde el maestro hacia el esclavo elegido; y la otra (llamada
normalmente “MISO”, Master In Slave Out data ) es la utilizada para enviar los datos
en sentido contrario: la respuesta de ese esclavo al maestro. Es fácil ver que, al haber
dos líneas para los datos la transmisión de información es “full duplex” (es decir, que la
información puede ser transportada en ambos sentidos a la vez).La velocidad de
transmisión máxima es mayor que en el sistema de conexión I2C.
147
El funcionamiento para un envío de un maestro es el siguiente:
148
A diferencia de otros buses el SPI no implementa el nivel del enlace entre dispositivos,
es decir no hay un campo para la dirección ni un campo para ACK, etc. El SPI se
comporta como un registro de desplazamiento donde a cada ciclo de reloj se captura
un bit. No es necesario hacer un direccionamiento de los dispositivos ya que mediante
la señal CS, habilitamos al integrado al que queremos enviar los datos.
Desventajas de SPI:
Tanto el bus SPI como el I2C son llamados buses de tarjeta, es decir están pensados
para trabajar a distancias pequeñas del entorno de una tarjeta, en caso de necesitar
un bus serie a larga distancia hay que ir a buses de campo como RS485, CAN, etc.
149
3.3 ARQUITECTURA INTERNA DE LA UNIDAD MICROPROCESADORA.
Por ejemplo, el juego de instrucciones de máquina y los diferentes registros que tiene
el procesador se definen en la organización de la computadora. Los detalles de la
construcción de la unidad aritmética/lógica y la unidad de control para que la
computadora ejecute dichas instrucciones, así como el número de bits utilizados para
representar los números enteros, los números reales y las instrucciones de máquina,
son detalles que se definen en su arquitectura.
Donde la operación puede ser cualquier operación aritmética o lógica que realice la
computadora a nivel de instrucción de máquina. Típicamente, todas las computadoras
digitales efectúan operaciones de suma, resta y operaciones lógicas. Algunas
computadoras tienen también operaciones de multiplicación y división como parte de
su repertorio de instrucciones de máquina.
En las máquinas que tienen arquitectura de una dirección, uno de los operandos es
siempre el registro acumulador y el otro corresponde a un operando en memoria. El
resultado se deja en el registro acumulador. Estas máquinas tienen solamente un
acumulador y las instrucciones aritméticas y lógicas solamente especifican la dirección
en memoria del segundo operando.
Las máquinas que tienen arquitectura de dos direcciones cuentan con instrucciones
aritméticas en las cuales se especifica de dónde se va a tomar cada uno de los dos
150
operandos de la instrucción. El resultado se deja en el lugar de donde se tomó el
primer operando. Por ejemplo, en una máquina que tenga varios registros
acumuladores, se especifica como primer operando uno de estos registros
acumuladores y, como segundo operando, alguna dirección de memoria. El resultado
se deja en el acumulador de donde se toma el primer operando.
Por último, en las máquinas con arquitectura de tres direcciones, se especifican tanto
el lugar de donde se tomarán los operandos como aquél donde se dejará el resultado.
Cualquiera de las direcciones corresponde a una dirección de memoria o un registro
del procesador.
¿QUÉ ES UN MICROCONTROLADOR?
Diferentes tipos de memorias: son en general las encargadas de alojar tanto las
instrucciones como los diferentes datos que estas necesitan. De esta manera
posibilitan que toda esta información (instrucciones y datos) esté siempre disponible
para que la CPU pueda acceder y trabajar con ella en cualquier momento.
Generalmente encontraremos dos tipos de memorias: las que su contenido se
almacena de forma permanente incluso tras cortes de alimentación eléctrica (llamadas
“persistentes”), y las que su contenido se pierde al dejar de recibir alimentación
(llamadas “volátiles”). Según las características de la información a guardar, esta se
grabará en un tipo u otro de memoria de forma automática, habitualmente.
151
entorno, y en sus patillas de salida podremos conectar actuadores para que el
microcontrolador pueda enviarles órdenes e así interactuar con el medio físico. De
todas formas, muchas patillas de la mayoría de microcontroladores no son
exclusivamente de entrada o de salida, sino que pueden ser utilizados indistintamente
para ambos propósitos (de ahí el nombre de E/S).
¿QUÉ ES ARDUINO?
152
información existente sobre Arduino y la gran cantidad de opciones que tiene a la hora
de desarrollar un sistema.
Microcontrolador ATmega328P
Voltaje de funcionamiento: 5V
Voltaje de entrada recomendado: 7-12V
Voltaje de entrada mínimo-máximo: 6-20V
Pines digitales I/O:14( de los cuales 6 pueden usarse como salida PWM)
Entradas analógicas: 6
Corriente DC para I/O Pin: 20mA
Corriente DC para 3.3V PIN: 50mA
Memoria FLASH de 32 KB(ATmega328P) de los cuales 0.5 KB son usados por el
bootlader
Memoria SRAM de 2 KB(ATmega328P)
Memoria EEPROM de 1 KB (ATmega328P)
Velocidad de reloj de 16MHz
5V: Este pin de salida proporciona 5V desde el regulador de la placa. La placa puede
ser alimentada con y desde DC power jack (7-12V), el conector USB (5V) o el pin VIN
(7-12V). No debe ser alimentada la placa desde este pin pues puede ser dañada.
3.3V: Parecido al anterior pin solo que este suministra 3.3V. Tiene una corriente
máxima de 50 mA.
153
IOREF: Este pin proporciona el voltaje de referencia con el que Arduino Uno está
trabajando. La configuración puede ser 3.3V o 5V.
Pines Serial: 0(RX) y 1(TX). Usados para recibir y transmitir por el puerto serial
datos.
PWM: Los pines 3, 5, 6, 9,10 y 11. Proporciona una salida PWM de 8 bits.
SPI: Los pines 10(SS), 11(MOSI), 12(MISO), 13 (SCK). Estos pines apoyan las
comunicaciones SPI basándose en la librería SPI.
LED: Pin 13.Cuando el valor es alto el LED está encendido, cuando es bajo
está apagado.
I2C: A4 o SDA pin y el A5 o SCL pin. Soportara una comunicación I2C usando
la librería wire.
A continuación se muestra la relación de pines entre el microprocesador ATmega328p
y la placa Arduino UNO rev3.
154
A continuación se describe el software que utilizaremos para el desarrollo del
proyecto.
Arduino IDE
Este entorno de programación tiene entre sus puntos a favor que facilita la
implementación de un gran número de bibliotecas, que desarrollan numerosas
funciones matemáticas o de comunicación para su aplicación en el código. Cabe
destacar que es un software libre y la existencia de un puerto terminal serie para la
comunicación con la placa que es muy útil a la hora de probar que el código cumpla
con los esperado.
155
A continuación se muestra la arquitectura interna de la CPU AVR del ATmega328p.
156
3.4 MODELO DE PROGRAMACIÓN.
157
158
159
UNIDAD IV: Programación básica de la
unidad microprocesadora.
4.1 MODOS DE DIRECCIONAMIENTO.
160
En algunas computadoras el modo de direccionamiento de la instrucción se especifica
con un código binario distinto, como se hace con el código de operación. Otras
computadoras utilizan un código binario único que representa la operación y el modo
de la instrucción. Pueden definirse instrucciones con diversos modos de
direccionamiento y, en ocasiones, se combinan dos o más modos de direccionamiento
en una instrucción.
161
162
163
164
165
Modos de Direccionamiento para la
memoria de programa.
Instrucciones
• Directo
• Indirecto
• Relativo
166
167
4.2 HERRAMIENTAS DE PROGRAMACIÓN.
Los pasos para crear un proyecto nuevo y poder escribir el código del
programa se detalla a continuación.
Accedamos a Atmel Studio 7.0
168
Seleccionamos el lenguaje, en nuestro caso Ensamblador (Assembler).
Presionamos OK.
169
En el editor colocaremos el programa a simular.
170
A continuación seleccionamos la opción construir (Build), que nos mostrara la
siguiente pantalla.
171
Damos continuar y seleccionamos el depurador/programador colocándolo en
simulador, como se muestra en seguida.
172
Observar que muestra el estado de la memoria FLASH (DONDE SE
ENCUENTRA EL ROGRAMA), también podemos visualizar en esta sección la
memoria RAM al colocar la opción en la sección Memory y la dirección en
Address.
173
4.3 INSTRUCCIONES.
Juego de Instrucciones.
174
175
176
177
178
179
180
181
182
4.4 EJEMPLOS DE PROGRAMAS BÁSICOS.
start:
LDS R16, $0112;
LDS R17, $0113;
ADD R16, R17;
STS $0114, R16;
rjmp start
start:
LDS R16, $0112;
LDS R17, $0113;
SUB R16, R17;
STS $0114, R16;
rjmp start
start:
LDS R18, $0112;
LDS R19, $0113;
MUL R18, R19;
STS $0114, R1;
STS $0115, R0;
rjmp start
start:
LDS R16, $0112;
LDS R17, $0113;
LDI R18, 0;
division:
CP R16, R17;
BRMI FIN;
SUB R16, R17;
INC R18;
RJMP division;
FIN: STS $0114, R18;
STS $0115, R16;
rjmp start
183
5.- Realizar un programa en ensamblador para el microcontrolador Atmega 328P que
obtenga la raíz cuadrada del número contenido en la dirección $0100, dejando el
resultado en la dirección $0112 y el residuo en la dirección $0113.
start:
LDI R17, 0;
LDI R19, 1;
LDS R16, $100;
REPITE:
CP R16, R19;
BRMI FIN;
SUB R16, R19;
INC R17;
INC R19;
INC R19;
JMP REPITE;
FIN: STS $0113, R16;
STS $0112, R17;
rjmp start
start:
LDS R16, $0112
ANDI R16, 1;
STS $0113, R16
rjump start
start:
LDI R27, $01
LDI R26, $13
LDS R16, $0112
LDI R17, $1
LDI R18, $1
repite: CPI R16, $0
BREQ fin
ST X+, R17
DEC R16
ADD R17, R18
MOV R19, R17
MOV R17, R18
184
MOV R18, R19
JMP repite
fin:
rjmp start
start:
SIGUE:
CP R1, R0
BREQ FIN
LD R16, X
REPITE:
INC R26
LD R17, X
CP R16, R17
BRMI CAMBIA
REGRESA:
CP R1, R26
BREQ OTRO
JMP REPITE
CAMBIA:
ST X, R16
MOV R16, R17
JMP REGRESA
OTRO:
MOV R26, R0
ST X, R16
INC R0
MOV R26, R0
JMP SIGUE
FIN:
rjmp start
185
UNIDAD V: Programación de periféricos.
5.1 Puertos Digitales.
186
187
188
189
190
191
192
193
194
5.2 ADQUISICIÓN DE SEÑALES ANALÓGICAS.
Las máquinas, como los microcontroladores, tratan de medir y/o convertir las variables
analógicas que el hombre manipula y entiende, pero el proceso de convertir introduce
una inevitable pérdida de información. Esta pérdida es inherente al proceso de
digitalizar las señales analógicas y continuas, que finalmente serán llevadas a
cantidades binarias.
La siguiente figura representa una señal analógica continua entre los puntos t0 y t1,
que desde el punto de vista de la magnitud será sometida a un número discreto de
valores binarios y que la cantidad de valores se conoce con el nombre de Resolución
del sistema.
Esos valores deben estar comprendidos dentro de dos límites, que forman la ventana
de conversión o valores de referencia (Vmin, VMax). Para la figura anterior, el punto P
tiene una interpretación en el mundo de lo discreto y es de Vx.
195
Para calcular el paso mínimo de conversión y por lo tanto conocer el intervalo de
pérdida de información, supóngase que se tiene una señal sometida a un conversor de
La siguiente figura presenta una señal analógica continua entre los puntos t0 y t1, que
desde el punto de vista del muestreo es sometida a un número finito de muestras y
que cada muestra es tomada a un intervalo constante T, llamado período de muestreo.
196
Convertidor analógico digital del AVR
El Convertidor Analógico Digital del ATmega32 es por Aproximaciones Sucesivas con
una resolución de 10 bits. El ADC se conecta a un multiplexor de 8 canales análogicos
el cual permite 8 voltajes de entrada en una solo extremo, construido en los pines del
puerto A. El voltaje de entrada de una solo extremo se refiere a 0 V (GND).
197
El ADC tiene un pin para la fuente de voltaje separado, AVCC. El AVCC no debe diferir
más de ±0.3 V de Vcc.
Los voltajes de referencia nominales internos 2.56V de AVCC son provistos dentro del
chip. El voltaje de referencia puede ser externamente desacoplado del pin AREF por
un capacitor para un mejor desempeño de ruido.
Operación
198
factor de ganancia seleccionado. Este valor amplificado entonces llega a ser la entrada
análoga del ADC. Si se usan las terminaciones independientes de los canales, el
amplificador de ganancia es “bypassed” juntos.
El ADC genera un resultado de 10 bits el cual se presenta en los registros de datos del
ADC, ADCH y ADCL. Por default, el resultado se presenta con ajuste a la derecha,
pero puede ser opcionalmente presentado con ajuste a la izquierda colocando el bit
ADLAR en ADMUX.
El ADC tiene su propia interrupción la cual puede ser disparada cuando una
conversión se completa. Cuando el ADC accede al registro de datos, se prohíbe entre
la lectura de ADCH y ADCL sea disparada la interrupción aún si el resultado se pierde.
199
Cualquiera de los pines de entrada ADC, así como GND y una referencia fija de voltaje, se
pueden seleccionar como entradas de un solo extremo para el ADC. El ADC se habilita
estableciendo el bit ADC Enable, ADEN en ADCSRA. Como se muestra en la figura
200
La referencia de voltaje y las selecciones de canales de entrada no entrarán en vigor
hasta que se ajuste ADEN. El ADC no consume energía cuando ADEN se borra, por lo
que se recomienda desconectar el ADC antes de entrar en modos de ahorro de
energía.
El ADC genera un resultado de 10 bits que se presenta en los registros de datos ADC,
ADCH y ADCL. Como se muestra en la figura.
201
De forma predeterminada, el resultado se presenta ajustado a la derecha, pero
opcionalmente se puede presentar a la izquierda ajustado ajustando el bit ADLAR en
ADMUX.
El ADC tiene su propia interrupción que puede ser activada cuando se completa una
conversión. Cuando se prohíbe el acceso de ADC a los registros de datos entre la
lectura de ADCH y ADCL, la interrupción se activará incluso si se pierde el resultado.
202
habilitación de disparador automático ADC ADATE en ADCSRA. El origen del
disparador se selecciona ajustando los bits de selección de disparo ADC, ADTS.
Cuando se produce un flanco positivo en la señal de disparo seleccionada, el pre-
escalador ADC se restablece y se inicia una conversión. Esto proporciona un método
para iniciar conversiones a intervalos fijos. Si la señal de activación todavía se
establece cuando se completa la conversión, no se iniciará una nueva conversión. Si
se produce otro flanco positivo en la señal de disparo durante la conversión, el borde
se ignorará. Tenga en cuenta que una bandera de interrupción se establecerá incluso
si la interrupción específica está deshabilitada o se bloquea el bit de habilitación de
interrupción global en SREG. Una conversión puede así ser activada sin causar una
interrupción. Sin embargo, la bandera de interrupción debe borrarse para activar una
nueva conversión en el siguiente evento de interrupción. Como se muestra en la
siguiente figura.
203
El Pre-escalador y tiempo de conversión.
El módulo ADC contiene un pre-escalador, que genera una frecuencia de reloj ADC
aceptable desde cualquier frecuencia de CPU por encima de 100kHz. La pre-escala es
establecida por los bits ADPS en ADCSRA. El pre-escalador comienza a contar desde
el momento en que se enciende el ADC ajustando el bit ADEN en ADCSRA. El pre-
escalador continúa funcionando mientras el bit ADEN está ajustado, y se restablece
continuamente cuando ADEN está bajo. Como se muestra en la figura.
204
Una conversión normal toma 13 ciclos de reloj ADC. La primera conversión después
del encendido del ADC (ADEN en ADCSRA está configurado) toma 25 ciclos de reloj
ADC para inicializar el circuito analógico.
Cuando se usa un rango de voltajes como entrada al ADC, tomará un cierto tiempo
para que el voltaje se estabilice. Si no se estabiliza, el primer valor leído después de la
primera conversión puede estar equivocado.
La muestra sostenida real tiene lugar 1,5 ciclos de reloj ADC después del inicio de una
conversión normal y 13,5 ciclos de reloj ADC después del inicio de una primera
conversión. Cuando se completa una conversión, el resultado se escribe en los
registros de datos ADC y ADIF. En el modo de conversión única, ADSC se borra
simultáneamente. El software puede volver a establecer ADSC y se iniciará una nueva
conversión en la subida de reloj de ADC.
Los bits MUXn y REFS1: 0 en el Registro ADMUX están almacenados en una sola
memoria intermedia a través de un registro temporal al que la CPU tiene acceso
aleatorio. Esto asegura que los canales y la selección de referencia sólo se realicen en
un punto seguro durante la conversión. El canal y la selección de referencia se
actualizan continuamente hasta que se inicia una conversión. Una vez que se inicia la
conversión, el canal y la selección de referencia se bloquean para asegurar un tiempo
de muestreo suficiente para el ADC. La actualización continua se reanuda en el último
ciclo de reloj ADC antes de que se complete la conversión (se establece ADIF en
ADCSRA). Tenga en cuenta que la conversión comienza en el siguiente flanco de reloj
de ADC ascendente después de que se escribe ADSC. Se aconseja al usuario que no
escriba nuevos valores de selección de canal o referencia a ADMUX hasta que se
haya escrito un ciclo de reloj ADC después de que se haya escrito ADSC.
Si se utiliza Disparo automático, la hora exacta del evento de disparo puede ser
indeterminista. Se debe tener especial cuidado al actualizar el Registro ADMUX, para
controlar qué conversión será afectada por los nuevos ajustes.
Durante la conversión, mínimo un ciclo de reloj ADC después del evento de disparo.
205
Después de una conversión, antes de que se borre la bandera de interrupción utilizada
como fuente de disparo.
Para comenzar a usar ADC necesitamos inicializarlo primero. Para esto escribimos la
siguiente función.
206
void InicializarADC()
// Seleccionamos Vref=AVcc
ADMUX |= (1<<REFS0);
ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN);
Como podemos ver, en primer lugar tenemos que seleccionar la fuente de voltaje de
referencia. Al establecer REFS0 en el registro ADMUX. Como la hoja de datos dice
AREF debe estar conectado a AVCC, sólo tenemos que conectar el condensador
entre el la terminal AREF y tierra.
El ADC debe ser sincronizado a una frecuencia entre 50 y 200kHz. Por lo tanto,
necesitamos establecer los bits del pre-escalador apropiados para que el reloj de
sistema quede en este rango. Como nuestro AVR está sincronizado a 16MHz, vamos
a utilizar el factor de escala 128 al ajustar los bits ADPS0, ADPS1 y ADPS2 en el
registro ADCSRA. Esto da 16000000/128 = 125 kHz de reloj ADC.
Ahora ADC está ajustado y podemos comenzar la conversión, para ello preparamos la
siguiente función que lee el valor ADC del canal seleccionado y devuelve un valor de
16 bits.
ADCSRA |= (1<<ADSC);
return ADC;
207
Antes de seleccionar el canal ADC en el registro ADMUX utilizamos una máscara
(0b00001111) que protege contra la alteración no intencional del registro ADMUX.
Para ilustrar la operación del módulo ADC se trabajará sobre el clásico ejemplo de la
medida de temperatura con un transductor de bajo costo, como lo es el LM35. El
problema consiste en la medida en grados Celsius de la temperatura ambiente y
visualización de la misma en un display LCD.
f (T) = 10mV / °C
Este está conectado a una placa de Arduino que cuenta con un programa por
el cual recoge los datos del sensor de temperatura y los transforma en grados
centígrados.
208
Diagrama de bloques:
V = (5.0* lectura)/1024.
209
A continuación se muestra la conexión realizada.
210
Programa para Matlab.
Al iniciar el programa en Matlab, nos aparece una barra donde nos indica la
temperatura en tiempo real.
211
5.3 INTERRUPCIONES.
Por ejemplo, para monitorear el estado lógico que tiene un pin, habrá que leer
su valor continuamente; si en un momento específico este pin tiene 5 V y no se lee,
debido a que el microcontrolador está ejecutando otras instrucciones, se corre el
enorme riesgo que cuando se lea, el valor del pin ha cambiado sin ser detectado por el
microcontrolador, perdiendo informaciónn valiosa del sensor o sistema.
Monitorear información de un evento usando polling, genera un alto riesgo para perder
lecturas o información del sistema, por lo tanto, hoy en día, esta técnica resulta
inadecuada e ineficiente.
212
Tipos de Interrupciones.
Procesamiento de la interrupción
213
En la figura anterior, si el proceso 1 solicita servicio de interrupción mientras se
encuentra el microcontrolador atendiendo la interrupción del proceso 0, entonces su
ejecución dependerá del nivel de prioridad, es decir si la interrupción del proceso 1 es
de menor prioridad, tendrá que esperar a que termine la interrupción del proceso 0, de
otra manera la interrupción del proceso 1 se ejecutará inmediatamente, suspendiendo
momentáneamente la interrupción del proceso 0, al terminar la tarea del proceso 1,
retornará a las actividades pendientes de la interrupción anterior
214
215
216
217
218
219
220
UNIDAD VI: Aplicación de microcontroladores
en ingeniería eléctrica.
La siguiente figura muestra el recorrido superficial del convoy con las luces
interiores encendidas a media tarde.
221
El tipo de luminarias utilizadas dentro de los vagones del metro se compone de
gabinetes con 1 lámpara fluorescente tipo t8, además lleva un difusor, que
permite entre la protección de la propia lámpara, la difusión del flujo luminoso
dentro de esta.
222
principal sistema de transporte público vemos que su mantenimiento es nulo, al
menos en este aspecto.
Es muy raro encontrar dentro del metro algún convoy que tenga funcional su
iluminación al interior, claro a excepción de los vagones de la línea 2 modelo
NM-02 y algunos de la línea A modelo FM-95A, los modelos restantes como lo
son: NE-92,FM-86, NM-83B, NM-83A, NM-82, MP-82, NC-82, NM-79, NM-73B,
NM-73A, MP-68R96 Y MP-68R93 contienen luminarias dañadas, incluso las
lámparas de emergencia no funcionan de manera adecuada, como se puede
observar en la siguiente figura.
223
6.2 ACEPTACIÓN DEL PROYECTO.
224
Dentro del desarrollo de nuevos sistemas de iluminación en los últimos años se
han venido acrecentando las tendencias por buscar dispositivos de iluminación
más eficientes con menor costo, mayor tiempo de vida, bajo mantenimiento,
alta eficiencia luminosa y sobre todo compactos.
Dentro del estudio de costos que lleva este trabajo es posible notar que si bien
la inversión inicial es relativamente baja para los dispositivos convencionales,
es un poco alta para una lámpara led, ya que al ser una tecnología en
desarrollo, los medios por el cual ser fabrican no son los más económicos y
además no son de manufactura nacional, sino que todo es de importación lo
que incrementa en cierta cantidad su precio final.
225
desarrollando a medida que van ganando popularidad los dispositivos de
iluminación led.
226
Controladores clásicos.
Según una estimación dada por Amstrom: El 95% de los bucles de control en la
industria son del tipo PID, y fundamentalmente PI. La amplia implantación del
control PID en la industria, se debe fundamentalmente a los siguientes factores:
- Existen sencillas reglas heurísticas que permiten obtener los parámetros del
controlador PID.
Dichas reglas hacen posible el ajuste del controlador, sin presuponer un gran
conocimiento en teoría de control automático por parte del operador.
227
- En estructuras de control más sofisticadas, donde exista cierta organización
jerárquica, el controlador PID puede utilizase a un nivel bajo.
Controlador P
En ciertos tipos de procesos es posible trabajar con una ganancia elevada sin
tener ningún problema de estabilidad en el controlador. Muchos procesos que
poseen una constante de tiempo dominante o son integradores puros caen en
esta categoría. Una alta ganancia en un controlador P significa que el error en
estado estacionario será pequeño y no se necesitara incluir la acción integral.
Un ejemplo característico en el que no es muy relevante el error en régimen
permanente, es el bucle interno de un controlador en cascada; el que la
variable que se ha tomado como secundaria no alcance su valor no debe
preocupar excesivamente.
Controlador PD.
228
Tan solo tiene validez para pequeños valores de Td. Debido a los tiempos
muertos hay un retardo antes de que los efectos de cualquier acción de control
se puedan detectar sobre la variable de proceso. Es, por lo tanto,
considerablemente mejor con esta clase de procesos, intentar predecir su
acción futura, analizando la señal de control en combinación con un modelo del
proceso.
Controlador PI.
Controlador PID.
Controladores inteligentes.
Lógica difusa.
229
entonces posible con la lógica difusa gobernar un sistema por medio de reglas
de 'sentido común' las cuales se refieren a cantidades indefinidas.
Redes neuronales.
230
considerar no solo el seguimiento de referencia sino también el rechazo de
perturbaciones y ruidos en la medida.
231
6.3 SUPERVISIÓN.
Etapa 1:
Etapa 2:
232
Etapa 3:
Etapa 4:
Etapa 5:
Esta etapa, es una etapa de potencia ya que con el dato adquirido del PWM el
driver se encargara de brindar una nueva intensidad luminosa por medio del
incremento o decremento de la corriente que circula por la lámpara de leds.
Normatividad.
233
característica de adquirir cualquier valor que se le asigne, traducido de la
intensidad luminosa que se desee proporcionar.
Mientras más elevado sea el valor del “set point” mayor será la intensidad
luminosa proporcionada por la lámpara, de forma inversa un valor menor
asignado en el “set point” proporcionara una intensidad luminosa menor.
Leds de potencia.
Los leds de potencia son muy diferentes a los leds estándar en cuanto a sus
características eléctrica y técnicas, estos emiten una gran cantidad de flujo luminoso
que es cientos de veces mayor a la de los leds normales, a pesar de esto, su consumo
eléctrico es elevado en comparación de los normales, ya que llegan a consumir de 350
mA hasta 3.5 A para un solo led.
Se pueden manejar arreglos en serie como los leds normales, la única diferencia es la
tensión que se debe aplicar para lograr hacer circular la corriente necesaria para hacer
operar el led.
Una característica importante de estos leds es que al hacer circular a través de estos
una corriente elevada, sufren un calentamiento excesivo, el cual se controla con
disipadores de calor, de no hacerlo se estaría degradando el led y por consecuente
reduciendo su vida útil.
La lámpara led que se utilizara para probar el control PI está compuesta por 7 leds de
potencia de 1 watt, que consumen 350 mA de corriente máxima. Los leds se montaron
sobre un disipador de calor para evitar un sobrecalentamiento.
234
Control de la iluminación.
235
6.4 PRUEBAS DE ACEPTACIÓN
236
Respuesta del algoritmo de control PI.
237
Como se puede notar en la gráfica anterior, las oscilaciones se van atenuando hasta
ser constantes cuando llegamos a la iteración 83, esto significa que el control PI estará
enviando 100 datos con oscilaciones de 10 %.
238
La siguiente figura muestra la respuesta de la corriente en el driver dada la respuesta
del PI actual.
Decimos que para este caso si se cumple el control PI ya que la señal azul es la sonda
que está conectada en la entrada del sensor, y da un valor cercano a los 2.23 volts,
que es muy aproximado al valor de referencia que es 2.35 volts.
239
Pruebas al 40% de intensidad luminosa.
Un valor de 40% es cuando el modulo del microcontrolador envía una señal con voltaje
RMS de 0.84 volts, del valor total que está programado para suministrar, además
significa que; las condiciones externas son buenas pero no las óptimas, así que se
necesita el 40% de la capacidad total de la lámpara para suministrar un flujo luminoso
optimo dentro del vagón.
Una vez más se puede corroborar que el control PI está igualándose al valor de
referencia, obsérvese que la sonda del canal 2 del osciloscopio sigue manteniendo un
voltaje de 2 volts, buscando la igualación al valor de referencia de 2.35v.
La siguiente figura muestra la lámpara emitiendo el 40% de su intensidad total.
240
Pruebas al 80% de intensidad luminosa.
Un 80% de intensidad luminosa proporcionada por el módulo PWM significa que las
condiciones externas ya no son tan favorables, en otras palabras significa que ya casi
no existe luz externa y consecuentemente se necesita más iluminación.
241
Pruebas al máximo de la intensidad luminosa.
Solo queda probar el último caso; como tal nos indica que se está utilizando el dato
máximo permitido para generar la máxima intensidad luminosa en la lámpara led,
significa que se ha sondeado el flujo exterior y este indica una ausencia total de luz,
por lo tanto el error de comparación es grande, por consecuente se envían datos
cercanos al máximo permitido para comenzar a hacer el error más pequeño.
El valor del voltaje que emite en módulo de PWM en estas condiciones es de 2.1 volts
lo que provoca que el driver suministre los 350 mA para que las lámparas emitan su
máxima intensidad buscando igualar al dato de referencia como se puede ver una vez
más en la siguiente figura:
242
6.5 Demostración y exhibición del proyecto.
243
La demostración del sistema de control PI a través del microcontrolador se realizó en
ausencia de luz y en presencia de la misma, simulando la entrada y salida a un túnel,
como se muestra en la siguiente figura.
244
A continuación se cubrieron algunas ventanas del salón, para disminuir la entrada de
luz. La siguiente figura muestra la lámpara emitiendo el 40% de su intensidad total.
Posteriormente se cubrieron más ventanas para disminuir más la intensidad de luz que
entraba al salón, haciendo que la lámpara brillara a un 80 % de su capacidad, como se
muestra a continuación.
245
Finalmente se cubrió la totalidad del salón impidiendo que entrara la luz exterior, para
que la lámpara brillara a su máxima intensidad como se muestra en seguida.
Yo creo que todos los procedimientos para evaluar contribuyen para recabar algunos
datos, pero lo más importante es el enfoque y la combinación de diversos
procedimientos de evaluación para obtener una aproximación más cercana del
desarrollo de las competencias de los estudiantes.
246
Bibliografía.
247