Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 primera unidad se abordan los sistemas numéricos, donde el estudiante aprende a convertir
un número de base 10 a binario, octal y hexadecimal, y viceversa, para emplearlos en la aritmética
binaria y hexadecimal, así como en los códigos.
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.
En la tecnología digital se utilizan muchos sistemas de números. Los más comunes son
los sistemas decimal, binario, octal y hexadecimal.
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.
El sistema decimal, también conocido como sistema de base 10, es un sistema de valor
posicional en el cual el valor de un digito depende de su posición.
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).
En el sistema binario solamente hay dos símbolos o posibles valores digitales, el cero
y el 1. No obstante este sistema de base 2 se puede utilizar para representar cualquier
cantidad que se pueda denotar en decimal u otros sistemas numéricos.
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.
Este sistema también es de los llamados posiciónales y la posición de sus cifras se mide
con relación a la coma decimal que en caso de no aparecer se supone implícitamente a
la derecha del número.
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.
SIMBOLO VALOR
ABSOLUTO
A 10
B 11
C 12
D 13
E 14
F 15
22
2*162+ C*161+ A*160= 2*162+ 12*161+10*160= 51210+19210+1010= 71410.
= 85410.
Ejemplo 1.
Solución:
Ejemplo 2.
Solución.
Resultado
23
Respuesta 21410 = D616.
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.
Este tipo de conversión se utiliza para cambiar un número N de base 10 a cualquier otra
base (b). Para ello, se deben realizar dos pasos por separado:
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
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
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.
De todos modos, es altamente recomendable conocer las tablas de multiplicar del 2, del
8, y del 16; debido al amplio uso que se le da a éstos sistemas en informática y sistemas
de computación.
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
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
Considere el número decimal +15 empleando un bit más para su representación
(magnitud y signo).
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
La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada
de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1. Esa unidad prestada debe
devolverse, sumándola, a la posición siguiente. Veamos algunos ejemplos:
Dividir los números largos en grupos. En el siguiente ejemplo, vemos cómo se divide
una resta larga en tres restas cortas:
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.
3.-Si la suma es mayor o igual a 16, reste 16 y acarree un 1 hacia el digito de la siguiente
posición.
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
———————
Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad
de números. Para ello, añadiremos ceros al sustraendo hasta que sean suficientes.
A4FC916
- 00DE816
—————————
Después, crearemos un nuevo número con la misma cantidad de números que el nuevo
sustraendo. Como en el sistema hexadecimal el mayor número que tenemos es el 15,
que corresponde a la letra F, tendremos que escribir la F tantas veces como números
tiene el sustraendo. La resta se hace siguiendo las normas generales de la resta común.
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
También podemos hacer la resta de dos números hexadecimales utilizando el
complemento a 16, siguiendo un proceso similar que en el caso del complemento a 15.
Esta es la resta que tenemos que resolver (la misma del ejemplo anterior):
A4FC916
- DE816
—————————
Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad
de números, al igual que ocurre en el proceso del complemento a 15.
A4FC916
- 00DE816
—————————
Después, crearemos un nuevo número con la misma cantidad de números que el nuevo
sustraendo.
FFFFF16
- 00DE816
—————————
FF21716
.
Ahora tenemos que sumarle 1 a la diferencia obtenida. Este paso es muy importante,
ya que es la diferencia entre hacer la resta en complemento a 15 u 16, y se suele olvidar
fácilmente. Además, recuerda que estás sumando en sistema hexadecimal, siguiendo
el mismo proceso explicado anteriormente.
FF21716
+ 116
—————————
FF21816 complemento a 16 de 00DE816
44
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.
El código Gray es un tipo especial de código binario que no es ponderado (los dígitos
que componen el código no tienen un peso asignado).
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.
El bit más significativo (el más a la izquierda) en el código Gray es el mismo que
el MSB correspondiente en el número binario.
Yendo de izquierda a derecha, sume cada par adyacente de bits del código
binario, para obtener el siguiente bit del código Gray. Descarte acarreos.
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.
La transmisión en serie resulta económica por el número reducido de líneas que requiere
e incluso el hecho de que permite usar en lugar de líneas conductoras, el aire o el vacío,
cuando en lugar de pulsos eléctricos se usa radiación electromagnética (luz, ondas de
radio, ultrasonido, etc.). A cambio de esta economía, el transmisor y el receptor se
vuelven un poco más complejos, además de que el trayecto que recorre la información
(por ser largo) se vuelve más susceptible a interferencias.
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.
1) Por extensión o enumeración: los elementos son encerrados entre llaves y separados
por comas. Es decir, el conjunto se describe listando todos sus elementos entre llaves.
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
En la mayor parte de los ejercicios de estos apuntes usaremos los mintérminos, es decir,
nos centraremos en los resultados que producen 1(esto se conoce como lógica positiva).
(𝐴 ∪ 𝐵) ∩ (𝐴 ∪ 𝐵̅ ) ∩ (𝐴̅ ∪ 𝐵) ∩ (𝐴̅ ∪ 𝐵̅ ) = Φ.
(𝐴 + 𝐵) . ̅)
(𝐴 + 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).
La compuerta lógica Y, más conocida por su nombre en inglés AND, realiza la función
booleana de producto lógico. Su símbolo es un punto (·), aunque se suele omitir. Así, el
producto lógico de las variables A y B se indica como AB, y se lee A y B o simplemente
A por B.
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).
La compuerta lógica O, más conocida por su nombre en inglés OR, realiza la operación
de suma lógica.
F = (A + B) = A + B.
75
Si hubiésemos seleccionados los unos (usando mintérminos), tendríamos:
tenemos:
La compuerta lógica O-exclusiva, más conocida por su nombre en inglés XOR, realiza
la función booleana 𝐴̅𝐵 + 𝐴𝐵̅. Su símbolo es el más (+) inscrito en un círculo.
𝐹 = 𝐴̅𝐵 + 𝐴𝐵̅ = 𝐴 ⊕ 𝐵.
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.
Aunque aún puede encontrarse en algunos equipos, este tipo de biestable, denominado
en inglés J-K Flip-Flop Master-Slave, ha quedado obsoleto ya que ha sido reemplazado
por el tipo anterior.
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.
La entrada seleccionada viene determinada por la combinación de ceros (0) y unos (1)
lógicos en las entradas de control. La cantidad que necesitaremos será igual a la
potencia de 2 que resulte de analizar el número de entradas. Así, por ejemplo, a un
multiplexor de 8 entradas le corresponderán 3 de control.
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).
Un semisumador, es un circuito que tiene como entradas dos números de 1 bit y produce
como salidas la suma y el acarreo que se da entre estos 2 números, como se muestra
a continuación:
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.
Un semirestador, es un circuito que tiene como entradas dos números de 1 bit y produce
como salidas la resta y el préstamo que se da entre estos 2 números, como se muestra
a continuación:
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.
Un restador completo es un circuito que tiene como entrada 3 números de 1 bit y produce
como salidas la resta y el préstamo que se da entre estos 3 números, como se muestra
en la siguiente figura.
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.
Las x indican que podemos poner un 1 o un 0, pues nuestro decodificador solo mostrara
valores del 0 al 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.
A continuación se muestra una tabla de verdad para un sistema de votación por mayoría
de 3 personas (más de una persona).
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. El
̅ 𝐵 𝐶 ) y (A.B.C). Dentro de este
grupo horizontal del lado izquierdo combina las celdas (𝐴
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.
Además existen varias abreviaciones para indicar algunas potencias de 2, la letra K (de
Kilo) equivale a 210 = 1024 palabras, la letra M (de Mega) equivale 220 = 1048576
palabras, la letra G (de Giga) equivale a 230 = 1073741824 palabras y la letra T (de Tera)
que equivale a 240 palabras.
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.
Incluso si la celda binaria nunca se lee, la carga almacenada tiende a desvanecerse con
el tiempo, típicamente en pocos milisegundos. Para evitar que se pierda la información,
las memorias dinámicas deben ser restauradas a intervalos regulares. A este proceso
se le conoce como refresco de la memoria. Una celda se refresca simplemente
ejecutando una operación de lectura (aunque no se necesite el dato).
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 sincrónicas. En
125
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.
Al estar habilitado el decodificador seleccionará las celdas binarias de una de las cuatro
palabras, dependiendo del contenido del canal de direcciones. Si la operación que se
desea realizar es una escritura, se pone en la línea de R / 𝑊 ̅ un cero y las celdas
binarias seleccionadas guardarán los bits que se encuentran en el canal de entrada.
Para realizar una operación de lectura, se pone la línea R / 𝑊 ̅ un uno, lo que hace que
los bits de las celdas binarias seleccionadas pasen por los bloques OR al canal de
salida. Las celdas binarias de las palabras no seleccionadas mantienen su contenido.
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.
Las ROM mantienen los datos almacenados cuando se desconecta la alimentación y son,
por tanto memorias no volátiles. A continuación se muestra una clasificación de
memorias ROM.
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.
Aunque las tecnologías empleadas en las computadoras digitales han cambiado mucho
desde que aparecieron los primeros modelos en los años 40, la mayoría todavía utiliza
la Arquitectura de von Neumann, publicada a principios de los años 1940 por John von
Neumann, que otros autores atribuyen a John Presper Eckert y John William Mauchly.
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.
El bus I2C fue implementado para maximizar la eficiencia del hardware y la simplicidad
del circuito. La interfaz I2C es una simple interfaz maestro/esclavo. Como se mencionó
anteriormente la simplicidad del bus radica en el diseño de 2 cables (SDA, Serial Data
y SCL, Serial Clock) y el formato del protocolo. En realidad también se necesitarían dos
líneas más: la de alimentación y la de tierra común, pero estas ya se presuponen
existentes en el circuito.
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).
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.
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.
144
En las siguientes figuras se muestra el esquema de líneas de comunicación existentes
entre un maestro y un esclavo y entre un maestro y tres esclavos respectivamente. Se
puede observar que, para el caso de la existencia de varios esclavos es necesario
utilizar una línea “SS” diferente por cada uno de ellos, ya que esta línea es la que sirve
para activar el esclavo concreto que en cada momento el maestro desee utilizar (esto
no pasa con las líneas de reloj, “MOSI” y “MISO”, que son compartidas por todos los
dispositivos).Técnicamente hablando, el esclavo que reciba por su línea SS un valor de
voltaje BAJO será el que esté seleccionado en ese momento por el maestro, y los que
reciban el valor ALTO no lo estarán (de ahí el subrayado superior que aparece en la
figura).
Como se puede ver, el protocolo SPI respecto el I²C tiene la desventaja de exigir al
microcontrolador dedicar muchos más pines de E/S a la comunicación externa. En
cambio, como ventaja podemos destacar que es más rápido y consume menos energía que
I²C.
145
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
operandos de la instrucción. El resultado se deja en el lugar de donde se tomó el primer
146
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.
147
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?
148
A continuación se muestra la arquitectura AVR.
149
3.4 MODELO DE PROGRAMACIÓN.
150
151
152
UNIDAD IV: Programación básica de la
unidad microprocesadora.
4.1 MODOS DE DIRECCIONAMIENTO.
153
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.
154
155
156
157
158
Modos de Direccionamiento para la
memoria de programa.
Instrucciones
• Directo
• Indirecto
• Relativo
159
160
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
161
Seleccionamos el lenguaje, en nuestro caso Ensamblador (Assembler).
Presionamos OK.
162
En el editor colocaremos el programa a simular.
163
A continuación seleccionamos la opción construir (Build), que nos mostrara la
siguiente pantalla.
164
Damos continuar y seleccionamos el depurador/programador colocándolo en
simulador, como se muestra en seguida.
165
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.
166
4.3 INSTRUCCIONES.
Juego de Instrucciones.
167
168
169
170
171
172
173
174
175
4.4 EJEMPLOS DE PROGRAMAS BÁSICOS.
start:
LDS R16, $0112; cargar el registro 16 con el contenido de la localidad 112
LDS R17, $0113; cargar el registro 17 con el contenido de la localidad 113
ADD R16, R17; sumar al registro 16 el contenido del registro 17
STS $0114, R16; almacenar el contenido del registro 16 en la localidad 114
rjmp start
start:
LDS R16, $0112; cargar el registro 16 con el contenido de la localidad 112
LDS R17, $0113; cargar el registro 17 con el contenido de la localidad 113
SUB R16, R17; restar al registro 16 el contenido del registro 17
STS $0114, R16; almacenar el contenido del registro 16 en la localidad 114
rjmp start
start:
LDS R18, $0112; cargar el registro 18 con el contenido de la localidad 112
LDS R19, $0113; cargar el registro 19 con el contenido de la localidad 113
MUL R18, R19; la multiplicación de los registros se almacena en R1 y R2
STS $0114, R1; almacenar parte alta de la multiplicación en localidad 114
STS $0115, R0; almacenar parte baja de la multiplicación en localidad 115
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
176
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
177
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
178
UNIDAD V: Programación de periféricos.
5.1 Puertos Digitales.
179
180
181
182
183
184
185
186
187
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.
188
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 12 bits
de resolución, un Vmin = 0V y un Max = 5V.
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.
189
El ADC de un AVR
Los bits MUX[4:0] son parte del registro ADMUX, éste es un Registro I/O disponible para el
manejo del ADC y se describe mas adelante. Como en un ATMega8 se tienen menos opciones,
el bit MUX(4) no está implementado, en la tabla siguiente se muestra la selección de la entrada
para el ADC de un ATMega8.
190
Aunque el microcontrolador puede operar con osciladores en el orden de MHz, el ADC alcanza
su máxima resolución si trabaja a una frecuencia entre 50 KHz y 200 KHz. Es posible emplear una
frecuencia mayor con una resolución de 8 bits, pero esta frecuencia debería determinarse en
forma práctica. Los AVR incluyen un pre-escalador de 7 bits para generar la frecuencia de trabajo
del ADC a partir de la frecuencia del microcontrolador, éste se muestra en la siguiente figura.
Las señales de control del pre-escalador son parte de los bits del Registro A de Control y Estado
del ADC (ADCSRA, ADC Control and Status Register A), el cual se revisara mas adelante. Los
factores de división se seleccionan con los bits ADPS[2:0], las diferentes opciones se muestran
en la siguiente tabla
Con la primera conversión se inicializa la circuitería analógica, por lo que requiere de 25 ciclos
de reloj, para las conversiones siguientes sólo se emplean 13 ciclos.
191
El ADC y el multiplexor para la selección de la entrada analógica reciben su alimentación en la
terminal AVcc. La terminal está disponible para que la circuitería analógica pueda alimentarse
con un voltaje diferente al de la parte digital, proporcionando las facilidades para un posible
aislamiento. Sólo debe considerarse que AVcc no debe diferir más de ±0.3 V de Vcc.
En la mayoría de aplicaciones es suficiente con conectar a AVcc directamente con Vcc. De hecho,
es recomendable realizar esta conexión aun si no se va a emplear al ADC, para la adecuada
operación del puerto C de un ATMega8 y del puerto A de un ATMega16, porque en estos puertos
se encuentran los multiplexores para las entradas analógicas, como una función alternativa.
Para la conexión de AVcc con Vcc el fabricante recomienda el uso de un filtro pasa bajas, como
el mostrado en la siguiente figura, con la finalidad de cancelar el ruido. El filtro es importante si
la entrada analógica tiene un valor máximo pequeño, en relación al voltaje de alimentación, o
bien, si se utiliza una entrada diferencial, en el caso de un ATMega16.
El ADC utiliza un DAC durante el proceso de conversión, por ser un ADC de aproximaciones
sucesivas como el mostrado en la siguiente figura.
192
El DAC requiere un voltaje de referencia (VREF), el cual puede ser proporcionado por diferentes
fuentes, como se muestra en la siguiente figura.
La selección de VREF se realiza con los bits REFS1 y REFS0, del registro ADMUX. El voltaje de
referencia determina el rango de conversión del ADC, si el voltaje analógico excede a VREF, es
codificado como 0x3FF.
193
Si se utiliza a AVcc o al voltaje interno (opciones “01” y “11”) es recomendable el uso de un
capacitor de AREF a tierra, para que el voltaje de referencia tenga inmunidad al ruido.
Una opción muy simple, desde el punto de vista práctico, consiste en la conexión de la terminal
AREF con Vcc, empleando la combinación “00” para los bits REFS1 y REFS0, esta opción también
presenta inmunidad al ruido. Únicamente se requiere que la entrada analógica esté
acondicionada para proporcionar un voltaje entre 0 y Vcc.
Relacionando las señales de control del ADC de aproximaciones sucesivas con el ADC de un AVR,
se tiene que: el inicio de la conversión se realiza poniendo en alto al bit ADSC (Start Conversion),
el fin se indica con la puesta en alto de la bandera ADIF (Interrupt Flag); ésta puede sondearse
por software o bien, si se ajusta al bit ADIE (Interrupt Enable), va a producir una interrupción,
estos bits están en el registro ADCSRA.
Un ATMega8 puede ser configurado para operar en un modo de carrera libre, de manera que al
finalizar una conversión inicie con la siguiente, este modo se habilita con el bit ADFR (ADC Free
Running). En el ATMega16, además del modo de carrera libre, se puede configurar al hardware
para que el inicio de una conversión sea disparado por algún evento de otro recurso del
microcontrolador.
El canal de entrada analógica se selecciona escribiendo en los bits MUX en ADMUX. Como se
muestra en la siguiente figura.
194
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
195
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 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.
Se inicia una sola conversión desactivando el bit ADC Reducción de potencia, PRADC,
en "Minimizar el consumo de energía", escribiendo un cero lógico en él y escribiendo
uno lógico en el bit ADC de conversión de inicio, ADSC. Este bit se mantiene alto
mientras la conversión esté en curso y será borrado por el hardware cuando se complete
la conversión. Si se selecciona un canal de datos diferente mientras se está realizando
una conversión, el ADC finalizará la conversión actual antes de realizar el cambio de
canal.
196
Alternativamente, una conversión puede ser activada automáticamente por varias
fuentes. El desencadenamiento automático se habilita estableciendo el bit de
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.
197
Cambio de canal o selección de referencia.
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.
Antes de escribir el programa para la conversión analógica a digital, tenemos que cuidar
de la parte analógica del chip AVR. Esto incluye la alimentación de periféricos
analógicos mediante la aplicación de voltaje a AVCC, el ajuste del nivel de tensión de
referencia en AREF pin y garantizar una cierta protección contra el ruido de suministro
mediante la aplicación de filtro de paso bajo. Para las aplicaciones simples hoja de datos
recomienda agregar 100nF condensador y 10uH inductor a AVCC pin que realizan como
filtro pasa bajos. Como se muestra en la figura.
198
En nuestro ejemplo establecemos el voltaje de referencia igual que el voltaje de la fuente
de alimentación. Así que necesitamos conectar el pin de AREF a la fuente de AVCC. Si
se utiliza el voltaje de referencia interno de 1,1V tendríamos que conectar un
condensador entre el pin VREF y GND para reducir la posibilidad de ruido. En nuestro
ejemplo vamos a medir un valor de voltaje en el potenciómetro. El potenciómetro está
conectado al canal ADC0.
Para comenzar a usar ADC necesitamos inicializarlo primero. Para esto escribimos la
siguiente función.
void InicializarADC()
// Seleccionamos Vref=AVcc
ADMUX |= (1<<REFS0);
ADCSRA |= (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADEN);
199
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;
200
EJEMPLO CON EL MÓDULO ADC.
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.
201
Descripción del ejemplo.
V = (5.0* lectura)/1024.
202
A continuación se muestra la conexión realizada.
203
Programa para Matlab.
Al iniciar el programa en Matlab, nos aparece una barra donde nos indica la
temperatura en tiempo real.
204
5.3 INTERRUPCIONES.
Tipos de Interrupciones.
Las interrupciones se dividen en dos tipos las cuales son: Externas e Internas. Una
interrupción externa es provocada por un dispositivo externo al procesador. Las dos
líneas que pueden señalar interrupciones externas son la línea de interrupción no
enmascarable (NMI) y la línea de petición de interrupción (INTR).
Interrupciones Externas
Las interrupciones externas sirven para detectar un estado lógico o un cambio de estado
en alguna de las terminales de entrada de un microcontrolador, con su uso se evita un
sondeo continuo en la terminal de interés. Son útiles para monitorear interruptores,
botones o sensores con salida a relevador. En la tabla siguiente se describen las
interrupciones externas existentes en los AVR bajo estudio, en el ATMega8 se tienen 2
fuentes y en el ATMega16 son 3.
Las interrupciones externas pueden configurarse para detectar un nivel bajo de voltaje
o una transición, ya sea por un flanco de subida o de bajada. Con excepción de INT2,
que sólo puede activarse por flancos. Las interrupciones pueden generarse aun cuando
sus respectivas terminales sean configuradas como salidas.
205
Las transiciones en INT0/INT1 requieren de la señal de reloj destinada a los módulos de
los recursos (clk I/O) para producir una interrupción, esta señal de reloj es anulada en
la mayoría de los modos de bajo consumo. Por el contrario, un nivel bajo en INT0/INT1
y las transiciones en INT2 no requieren de una señal de reloj para producir una
interrupción, puede decirse que son eventos asíncronos, por lo que éstos son
adecuados para despertar al microcontrolador, sin importar el modo de reposo.
x puede ser 0 ó 1
La configuración de INT2 se define con el bit ISC2 ubicado en la posición 6 del registro
MCUCSR (MCU Control and Status Register).
206
• Bit 7 – INT1: Habilitador individual de la interrupción externa 1
207
208
Ejemplos de Uso de Interrupciones Externa
Realice un programa que conmute la salida menos significativa del puerto B (PB0) de
un ATMega8 cada vez que es presionado un botón conectado en INT0, como se
muestra en la siguiente figura
209
Para la solución en ensamblador debe inicializarse al apuntador de pila, por la rutina de
atención a la interrupción. La solución en ensamblador es:
210
LDI R16, 0B01000000 ; Habilita la INT0
OUT GICR, R16
CLR R16 ; Estado inicial de la salida
OUT PORTB, R16
LDI R17, 0B00000001 ; Para conmutar con OR exclusiva
SEI ; Habilitador
Lazo: RJMP Lazo ; Lazo infinito, permanece ocioso
Se observa que el trabajo del programa principal prácticamente es nulo, el recurso de la
interrupción externa es el encargado de monitorear al botón y en su ISR se realiza la
tarea deseada.
En lenguaje C es necesario incluir a la biblioteca interrupt.h para el manejo de las
interrupciones, la solución en este lenguaje es:
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(INT0_vect) { // ISR de la INT0
PORTB = PORTB ^ 0x01; // OR exclusiva para conmutar al LSB
}
int main() {
DDRD = 0x00; // Puerto D como entrada
PORTD = 0xFF; // Resistor de Pull-Up en el puerto D
DDRB = 0xFF; // Puerto B como salida
MCUCR = 0B00000010; // Configura INT0 por flanco de bajada
GICR = 0B01000000; // Habilita la INT0
PORTB = 0x00; // Estado inicial de la salida
sei(); // Habilitador global de interrupciones
while(1) { // Lazo infinito, permanece ocioso
asm( “nop”);
}
}
La función sei() es para poner en alto al habilitador global de interrupciones.
La inclusión de la instrucción nop en el lazo infinito hace posible una simulación por
pasos en el AVR Studio, si se omite, al no haber instrucciones dentro del while, no es
posible simular la introducción de eventos en PD2 que produzcan la interrupción.
Aunque el código máquina generado trabaja de manera correcta en el MCU.
211
UNIDAD VI: Aplicación de microcontroladores
en ingeniería eléctrica.
Hasta el día de hoy el STCM tiene 41 años de servicio, en los cuales ha existido
la modernización de su infraestructura, pero en años recientes ha habido un
rezago considerablemente notorio, ya que la mayoría de los sistemas utilizados
actualmente son obsoletos o se encuentran próximos a desaparecer, en los
cuales el aspecto del cuidado de la energía eléctrica ha sido tomado muy poco
en consideración, y se puede percatar que se desaprovechan grandes
cantidades de energía eléctrica en el rubro de la iluminación, debido a que al ser
un medio de transporte subterráneo y superficial no siempre necesita la misma
intensidad luminosa fuera de los túneles que dentro de los mismos, esto lleva
como consecuencia la disminución de vida útil de las luminarias ya que se
encuentran encendidas en situaciones y tiempos inútiles, generando consumos
y gastos innecesarios al mantener estas encendidas sin importar las condiciones
externas del recorrido.
La siguiente figura muestra el recorrido superficial del convoy con las luces
interiores encendidas a media tarde.
212
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.
213
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.
214
6.2 ACEPTACIÓN DEL PROYECTO.
215
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.
216
desarrollando a medida que van ganando popularidad los dispositivos de
iluminación led.
Si bien existen muchos tipos de control basados en este principio y los podemos
clasificar en clásicos e inteligentes como se describen a continuación.
217
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.
218
- 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.
219
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.
220
Las reglas involucradas en un sistema difuso, pueden ser aprendidas con
sistemas adaptativos que aprenden al ' observar ' como operan las personas los
dispositivos reales, o estas reglas pueden también ser formuladas por un experto
humano. En general la lógica difusa se aplica tanto a sistemas de control como
para modelar cualquier sistema continuo de ingeniería, física, biología o
economía.
Redes neuronales.
221
El controlador PID básico combina las acciones proporcional, derivativa e integral
mediante el siguiente algoritmo de control:
222
6.3 SUPERVISIÓN.
Etapa 1:
Etapa 2:
223
Etapa 3:
Etapa 4:
Esta etapa se enfoca principalmente al control del PWM, de acuerdo al dato que
envíe el control PI, el modulo del PWM solo se encargara de generar la señal
cuadrada correspondiente para enviarla al driver que controla a los leds
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.
224
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.
225
Control de la iluminación.
226
6.4 PRUEBAS DE ACEPTACIÓN
227
Respuesta del algoritmo de control PI.
228
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 %.
229
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.
230
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.
231
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.
232
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:
233
6.5 Demostración y exhibición del proyecto.
234
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.
235
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.
236
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.
Con esto se pretende llevar a cabo una educación en el aula centrada en el estudiante
y con el acompañamiento del docente, para que el alumno se vea motivado a estudiar
y cree su propio conocimiento.
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.
237
Bibliografía.
238