You are on page 1of 270

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA


MECNICA Y ELCTRICA

UNIDAD PROFESIONAL ADOLFO LOPEZ MATEOS.

DEPARTAMENTO DE INGENIERA ELCTRICA.

ACADEMIA DE ELECTRNICA.

APUNTES DE ELECTRNICA III.

AUTOR: ING. DANIEL AVELINO GMEZ

FECHA DE ELABORACIN: ENERO_JUNO DE 2014.

FECHA DE APLICACIN: DESDE AGOSTO DE 2014.

10

11

12

13

INTRODUCCIN
Estos apuntes se realizaron para cubrir el temario de la asignatura Electrnica III, del
Departamento de Ingeniera Elctrica en el Instituto Politcnico Nacional que se imparte en el
sexto semestre de la carrera de ingeniera elctrica, unidad Zacatenco.

La informacin incluida en estos apuntes se obtuvo de fuentes que se citan al final en la


Bibliografa y la experiencia de varios aos de impartir esta materia, adems se hace el uso de
imgenes y tablas que ejemplifican de una mejor manera los temas desarrollados, para lograr un
aprendizaje significativo. Igualmente se detallan problemas resueltos con los que el alumno
puede guiarse y estudiar de manera autnoma (aprender a aprender).

En la primera unidad se abordan los sistemas numricos, donde el estudiante aprende a


convertir un nmero de base 10 a binario, octal y hexadecimal, y viceversa, para emplearlos en
la aritmtica binaria y hexadecimal, as como en los cdigos.

En la segunda unidad el alumno aprende a disear y comprobar el funcionamiento de los


circuitos digitales y dispositivos de memoria, empleando el simulador Digital Works.

En la tercera unida el estudiante aprende la arquitectura del microcontrolador JM60 de


Freescale, con la cual, realizara un trabajo al final del semestre.

En la cuarta unidad el estudiante aplica las instrucciones del JM60, para resolver problemas,
utilizando el simulador Code Warrior.

En la quinta unidad el estudiante utiliza los puertos de la tarjeta JM60, para comunicarse con el
mundo exterior, el convertidor analgico para medir la temperatura y las interrupciones para
controlar un proceso.

En la sexta unidad el estudiante realiza un proyecto de inters personal en el rea de ingeniera


elctrica, empleando la tarjeta JM60.

En el programa no se especifican los temas Teora de los conjuntos, Algebra Booleana y Mapas
de Karnaugh, sin embargo, son temas muy importantes (conocimiento previo) que presento de
manera rpida y fcil, 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 enseanza que no resulta en un aprendizaje.

Espero que estos apuntes sean un recurso valioso y prctico para encauzar adecuadamente los
procesos de enseanza y de aprendizaje, de los estudiantes con necesidades educativas de
calidad.

14

NDICE
UNIDAD I: Sistemas de Numeracin...16
1.1 Sistemas de numeracin signado.... 16
1.2 Conversin de sistemas decimal a cualquier base.25
1.3 Conversin de cualquier base a sistema decimal.......28
1.4 Relacin entre los sistemas binarios, octal y hexadecimal....29
1.5 Sistemas de numeracin signado y sus conversiones31
1.6 Aritmtica binaria y hexadecimal..34
1.7 Cdigos..46
UNIDAD II: Circuitos digitales y dispositivos de memoria.....61
2.1 Seales analgicas y digitales61
2.2 Compuertas lgicas73
2.3 Flip-Flops...81
2.4 Codificadores89
2.5 Decodificadores.93
2.6 Multiplexores.95
2.7 Circuitos aritmticos..99
2.8 Estructura y funcionamiento general de las memorias....122
2.9 Clasificacin de las memorias..131
2.10 Conexiones de memorias.134
UNIDAD III: Arquitectura general de una computadora137
3.1 Diagrama general de una computadora137
3.2 Buses.142
3.3 Arquitectura de la unidad microprocesador..146
3.4 Modelo de programacin..151
UNIDAD IV: Programacin bsica de la unidad microprocesador156
4.1 Modos de direccionamiento.156
4.2 Herramientas de programacin172
4.3 Instrucciones190
4.4 Ejemplos de programacin bsica205
UNIDAD V: Programacin de perifricos.209
5.1 Puertos Digitales..209
5.2 Adquisicin de seales analgicas220
5.3 Interrupciones..233
UNIDAD VI: Aplicacin de microcontroladores en ingeniera elctrica.244
6.1 Planteamiento del proyecto.244
6.2 Aceptacin del proyecto..247
6.3 Supervisin..255
6.4 Pruebas de aceptacin..259
6.5 Demostracin y exhibicin del proyecto.266

15

UNIDAD I
1.1 SISTEMAS DE NUMERACIN NO SIGNADO.
En la tecnologa digital se utilizan muchos sistemas de nmeros. Los ms comunes
son los sistemas decimal, binario, octal y hexadecimal.
El sistema decimal

es sin duda el ms conocido por nosotros ya que es una

herramienta de uso cotidiano. Si analizamos algunas de sus caractersticas podremos


entender mejor los dems sistemas de numeracin.
Sistema decimal.
El sistema decimal se compone de diez nmeros o smbolos. Estos 10 smbolos son
0, 1, 2, 3, 4, 5, 6, 7, 8, 9; al utilizar estos smbolos como dgitos de un nmero
podemos expresar cualquier cantidad.
El sistema decimal, tambin conocido como sistema de base 10, es un sistema de
valor posicional en el cual el valor de un digito depende de su posicin.
Consideremos el nmero decimal 45310.
Sabemos que el digito 4 representa en realidad cuatro centenas, el 5 representa
cinco decenas, y el 3 representa tres unidades.
En esencia el cuatro porta el valor mximo de los tres dgitos; a este se le conoce
como el digito ms significativo (MSD). El nmero tres tiene el menor valor y se le
denomina digito menos significativo (LSD).
Lo anterior se puede resumir as:

16

Como vamos a representar cantidades en diferentes bases, es conveniente usar


subndices para indicar la base a la que pertenecen.
La representacin de las cantidades 199210 y 3,141610 (valor de pi, ) es:
199210

= 1*103+ 9*102+ 9*101+ 2*100

= 100010 + 90010 + 9010 + 210.

3,141610 = 3*100+ 1*10-1+ 4*10-2+1*10-3+ 6*10-4 = 3 + 0,1 + 0,04 + 0,001 + 0,0006.


(Notar las potencias negativas 10-1 =0,1, 10-2 = 0,01, 10-3 =0,001 y 10-4 = 0,0001).
Desafortunadamente, el sistema

numrico decimal no se presta para una

implantacin conveniente en sistemas digitales.


En el sistema binario solamente

hay dos smbolos 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 numricos.
En general se necesitaran muchos dgitos para expresar una cantidad determinada.
El Sistema Binario: Es el sistema de numeracin que utiliza internamente el hardware
de las computadoras actuales. Se basa en la representacin de cantidades utilizando
los dgitos 1 y 0. Por lo tanto, su base es 2.
Cada dgito de un nmero representado en este sistema se denomina bit (Contraccin
de las palabras en ingls binary digit).

Conversin Decimal a Binario: Para convertir nmeros enteros de decimal a binario,


la forma ms simple es dividir sucesivamente el nmero decimal y los cocientes que
se van obteniendo entre 2, hasta que el cociente en una de las divisiones se haga 0.
La unin de todos los residuos obtenidos escritos en orden inverso nos proporciona el
nmero equivalente expresado en el sistema binario.
Ejemplos:

Convertir el nmero decimal 1010 a binario.

17

Convertir el nmero decimal 199210 a binario.

Convertir el nmero decimal 8610 a binario.

Conversin de Binario a Decimal.

Para determinar

su equivalente en el sistema decimal

simplemente se toma en

cuenta la suma de los productos de cada valor digital (0 o 1) por su valor posicional.

18

Ejemplo:
o

Convertir a nmero decimal el nmero binario 1010112.


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
Solucin

4310
1010112 = 43 10

El Sistema Octal: Es un sistema de numeracin cuya base es 8 y utiliza para la


representacin de cantidades, los siguientes smbolos:
0, 1, 2, 3, 4, 5, 6, 7.
Este sistema tambin es de los llamados posicinales y la posicin de sus cifras se
mide con relacin a la coma decimal que en caso de no aparecer se supone
implcitamente a la derecha del nmero.
La aritmtica en este sistema es similar a la de los sistemas decimal y binario, por lo
tanto entraremos en su estilo.
Ejemplo 1:
Qu nmero decimal representa el nmero octal 47018?
Un nmero octal por tanto puede convertirse

fcilmente en su equivalente decimal

multiplicando cada digito octal por su valor posicional.


4*83 + 7*82 +0*81 +1*80= 2048+ 448+ 0+ 1= 249710.
Ejemplo 2:
Qu nmero decimal representa el nmero octal 3728?
3728 = 3 x (82) + 7 x (81)+ 2 x (80)
= 3 x 64 + 7 x 8 + 2 x 1
= 250 10

19

Ejemplo 3:
Qu nmero decimal representa el nmero octal 24,68?
Nota. Las fracciones las separaremos con coma y no por punto.
24,68 = 2 x (81) + 4 x (80)+ 6 x (8-1)
= 2 x (8) + 4 x (1)+ 6 x (0,125)
=20,7510.

Conversin de decimal a octal.


Un entero decimal se puede convertir en octal mediante el uso del mismo mtodo de
divisin repetida que se us en la conversin decimal a binario, pero con un factor de
divisin de 8 en lugar de 2.
Ejemplo.
Qu nmero octal representa el nmero decimal 26610?
266 / 8 = 33 + residuo de 2
3 3/ 8 = 4

+ residuo de 1

Resultado

+ residuo de 4

.26610= 4128

/8=0

Note que su primer residuo se transforma en el digito menos significo (LSD) del
nmero octal y el ultimo residuo se convierte ms significativo (MSD).

Conversin de octal a binario.


La ventaja principal del

sistema numrico octal es la facilidad con la cual puede

realizarse la conversin entre nmeros binarios y octales.


La conversin de octal a binario se lleva a cabo convirtiendo cada digito octal en su
equivalente binario de tres bits.
Los ocho dgitos posibles se convierten como se indica en la siguiente tabla.
Octal

Binario

000

001

010

011

100

101

110

111

Por medio de estas conversiones cualquier digito octal se convierte en binario


convirtindolo de manera individual.

20

Ejemplo.
Convertir el nmero octal 4728 a binario (usar 3 bits para representar cada cifra):
4

100

111

010

Por tanto el nmero octal 4728 es equivalente al binario 1001110102.

Conversin de binario a octal.


La conversin de enteros binarios en octales es simplemente la operacin inversa del
proceso anterior.
Los bits del nmero binario se conjuntan en grupos de tres comenzando por el LSB.
Luego cada grupo se convierte en su equivalente octal.
Primer caso.
Ejemplo.
Para ilustrar lo antes dicho, consideremos la conversin de 1001110102 en octal.

28

Segundo caso.
Algunas veces el nmero binario no tendr grupos de 3 bits. En esos casos podemos
agregar uno o dos ceros a la izquierda del MSB del nmero binario a fin de completar
el ltimo grupo.
Ejemplo.
Para ilustrar lo antes dicho, consideremos la conversin de 110101102 en octal.
0

68

Note el cero agregado para completar el grupo de 3 bits.

21

Teorema Fundamental de la Numeracin (TFN).


Se trata de un teorema que relaciona una cantidad expresada en cualquier sistema de
numeracin con la misma cantidad expresada en el sistema decimal.
Ejemplo: Supongamos la cantidad 201,13 expresada en el sistema de numeracin de
base tres que utiliza los dgitos para la representacin de cantidades 0, 1 y 2 Cul
ser la representacin de la misma cantidad en el sistema decimal?
201,13 = 2*32+ 0*31+ 1*30+ 1*3-1 = 18+0+1+0,333=19,33310.
Recordar que usamos la coma decimal, en lugar del punto.
El Sistema Hexadecimal: Es un sistema posicional de numeracin en el que su base
es 16, por tanto, utilizar 16 smbolos para la representacin de cantidades. Estos
smbolos son:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Se le asignan los siguientes valores absolutos a los smbolos A, B, C, D, E, F:

SIMBOLO

VALOR ABSOLUTO

10

11

12

13

14

15

La conversin de hexadecimal a decimal es similar a las conversiones anteriores.


Ejemplo 1: Qu nmero decimal representa el nmero hexadecimal 2CA16 utilizando
el TFN (Teorema Fundamental de la Numeracin)?
2*162+ C*161+ A*160= 2*162+ 12*161+10*160= 51210+19210+1010= 71410.

22

Ejemplo 2: Qu nmero decimal representa el nmero hexadecimal 35616 utilizando


el TFN (Teorema Fundamental de la Numeracin)?

35616= 3 x 162 + 5 x 161 + 6 x 160


=76810 + 8010 + 610
= 85410.
Conversin de decimal a hexadecimal.
Recordemos que efectuamos la conversin de decimal a binario por medio de la
divisin repetida por dos y de decimal a octal por medio de la divisin repetida por 8.
De igual manera la conversin de decimal a hexadecimal se puede efectuar por
medio de la divisin repetida por 16.
Ejemplo 1.
Convierta el nmero decimal 42310 a hexadecimal.
Solucin:
423 /16 = 26 + residuo de 710 716

1 + residuo de 1010 ..A16

26 / 16

1 /16

= 0 + residuo de 1 ..116

Resultado

Respuesta 42310= 1A716


Ejemplo 2.
Convierta el nmero decimal 21410 a hexadecimal.
Solucin.
214 /16 =13 + residuo de 610..616
Resultado
13 /16 = 0 + residuo de 1310.D16

Respuesta 21410 = D616.

23

Conversin de hexadecimal a binario.

Al igual que el sistema numrico octal, el sistema hexadecimal se usa principalmente


para abreviar

la representacin de nmeros binarios. Es una tarea relativamente

simple convertir un nmero hexadecimal a binario.


Cada digito hexadecimal se convierte en su equivalente binario usando 4 bits.

Ejemplo.

Convertir el nmero hexadecimal 9F216 a binario (usar 4 bits para representar cada
cifra).

9 F 216 =

1001

1111

0010

Por lo tanto: 9F216 = 1001111100102.

Conversiones de binario a hexadecimal.

Esta conversin es exactamente la operacin reciproca del proceso anterior. El


nmero binario se agrupa en conjunto de cuatro bits y cada grupo se convierte en su
digito hexadecimal equivalente.

Ejemplo.
Convertir el nmero binario 1011101001102 a hexadecimal.
1110
1011101001102 = 1011

1010

610

1010

0110

A16

616

B16
= BA616

24

1.2 CONVERSIN DE SISTEMA DECIMAL A CUALQUIER BASE.

Este tipo de conversin se utiliza para cambiar un nmero N de base 10 a cualquier


otra base (b). Para ello, se deben realizar dos pasos por separado:

1. Convertir la parte entera del nmero N10, dividindola, sucesivamente, entre b,


hasta obtener un cociente ms pequeo que b. La parte entera del nmero que
estamos buscando lo compondr el ltimo cociente y los restos que se hayan
ido obteniendo, tomados en orden inverso.

2. Convertir la parte fraccionaria del nmero N10, multiplicndola, repetidamente,


por b, hasta obtener un cero en la parte fraccionaria o hasta que se considere
oportuno, ya que, puede ser que el cambio de base de una fraccin exacta se
convierta en una fraccin peridica. La parte fraccionaria del nmero buscado
lo formarn las partes enteras de los nmeros que se hayan ido obteniendo en
cada producto, tomados en ese mismo orden.

Ejemplo1.
Para convertir el nmero 13,312510 a base 2, en primer lugar hay que dividir,
sucesivamente, la parte entera del nmero, en este caso (1310), entre 2, hasta obtener
un cociente ms pequeo que 2.
13 L 2
1 6L2
0 3L2
1 1L2
1
Como el ltimo cociente vale 1, ya es ms pequeo que el divisor 2, tenemos que
parar de dividir. Por tanto,
1310 = 11012
El segundo paso consiste en convertir la parte fraccionaria del nmero (0,312510). Para
ello, se deben realizar los siguientes clculos:
0,3125 x 2 =

0,625

0,625 x 2 =

1,25; seguimos trabajando solo con la parte fraccionaria.

0,25

x2=

0,5

0,5

x2=

1,0; terminamos porque la parte fraccionaria es cero

La parte fraccionaria desaparece despus de realizar cuatro multiplicaciones. As


pues,

25

0,312510 = 0,01012.
En resumen.

Recuerde que usamos la coma en lugar del punto.

13,312510 = 1101,01012.
Para comprobar si los clculos estn bien hechos, podemos realizar la conversin
inversa, es decir, podemos pasar el nmero 1101,01012 a base 10. De manera que,
usando el TFN los clculos son:

1101,01012 = 1 * 23 + 1 * 22 + 0 * 21 + 1* 20 + 0 * 2-1 + 1 * 2-2 + 0 * 2-3 + 1 * 2-4 =


= 8 + 4 + 0 + 1 + 0 + 0,25 + 0 + 0,0625 = 13,312510.
1101,01012 = 13,312510.
Ejemplo 2.
Convertir: 220,910 a binario.
Para la parte entera tenemos:

Dando como resultado de la parte entera: 220D = 11011100B.


Posteriormente se procede a realizar las operaciones para la parte fraccionaria para
pasarlo a binario.

0,9x2=1,8
0,8x2=1,6
0,6x2=1,2
0,2x2=0,4
0,4x2=0,8
0,8x2=1,6

Observa cmo se vuelve a repetir esta cantidad.

26

Lo anterior implicara que tenemos una fraccin peridica (nunca termina).

Quedando la parte fraccionaria de la siguiente manera:


0,

Dando como resultado total:

220

Para comprobar pasaremos el resultado obtenido en el Sistema Binario al Sistema


Decimal.

= 11011100B + 0,111001B

Entero

fraccin

Convirtiendo la parte entera a decimal queda de la siguiente forma:

+ 8

+ 16

+ 64 + 128

= 22010.
Para comprobar la parte fraccionaria
Decimal, tenemos:

=0,5

obtenida en el Sistema Binario al Sistema

+ 0,25 + 0,125 +

=0,890625 0,9

27

0,015625

1.3 CONVERSIN DE CUALQUIER BASE A SISTEMA DECIMAL.

Si se tiene un nmero en base n, por ejemplo 1637(base 7), el proceso para convertirlo
a base decimal es el siguiente:

Entonces 163(7) equivale a 9410 en base decimal.

Ejemplo.
Aplicar este proceso para convertir el nmero binario 10012 a decimal.

Entonces 1001(2) equivale a 910 en base decimal.

Este mtodo es til para nmeros grandes, ya que para nmeros pequeos se puede
utilizar el clculo mental segn las potencias de la base, como se explic
anteriormente. De ser los nmeros muy grandes, habra que conocer las tablas de
multiplicar de las diferentes bases, lo que resultara tedioso. De ah la utilizacin de
ste sencillo mtodo 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 informtica y
sistemas de computacin.

28

1.4 RELACIN ENTRE LOS SISTEMAS BINARIOS, OCTAL Y


HEXADECIMAL.
Los sistemas octal y hexadecimal son la abreviatura de los sistemas binarios,
es decir, representarlos de forma ms compacta.
Ejemplo 1.
Convertir el nmero binario 101101112 a octal y hexadecimal.

Nmero en binario convertido a grupos de 3: 010 110 111


Cero agregado
Equivalente en base ocho

Resultado: 101101112 = 2678 = 267O (octal)


Nmero en binario convertido a grupos de 4: 1011 0111
Equivalente en base diecisis

Por lo tanto 101101112 = 2678 = B7!6.


Comprobacin.
101101112 = 1 + 2 + 4 + 16 + 32 + 128 = 18310.
2678 = 7 + 6 x 8 + 2 x 64 = 7 + 48 + 128 = 18310.
B716 = 7 + 11 x 16 = 7 + 176 = 18310.
Ejemplo 2.
Convertir el nmero hexadecimal 9B16 a binario y octal.
Donde 916 = 10012 y B16 = 10112. Por lo tanto 9B16 = 100110112.
100110112

010 011 011


2

Equivalente octal.

Por lo tanto: 9B16 = 100110112 = 2338.

29

Comprobacin.
9B16 = 11 + 9 x 16 = 11 + 144 = 15510.
100110112 = 1 + 2 + 8 + 16 + 128 = 15510.
2338 = 3 + 3 x 8 + 2 x 64 = 3 + 24 + 128 = 15510.

Ejemplo 3.
Convertir el nmero octal 3578 a binario y hexadecimal.
Donde 38=0112, 58=1012 y 78= 1112.
3578 = 0111011112.
Dado que 3578 = 0111011112, reagrupndolos en grupos de 4 bits, tenemos:

11102 = E16 y 111116 = F16. El cero que est a la izquierda no se toma en cuenta.
Por lo tanto 3578 = 0111011112 = EF16.
Comprobacin.

3578 = 7 x 80 + 5 x 81 + 3 x 82 = 7 x 1 + 5 x 8 + 3 x 64 = 7 + 40 + 192 = 23910.


111011112 = 1x20 + 1x21 + 1x22 + 1x23 + 0x24 + 1x25 + 1x26 + 1x27
= 1

+ 2

+ 4

+ 8

+ 0

= 23910.

EF16 = F x 160 + E x 161


= 15 x 1

+ 14 x 16

= 15

+ 224

= 23910.

30

+ 32 + 64 + 128.

1.5 SISTEMAS DE NUMERACIN SIGNADO Y SUS CONVERSIONES.


En los apartados anteriores solo vimos nmeros no signados (positivos), pero en la
prctica nos encontramos con nmeros negativos, por lo cual veremos los
complementos a 1 y 2.
i.

Complemento a dos.

El complemento a dos de un nmero N, compuesto por n bits, se define como:


C2N = 2n N.
Veamos un ejemplo: tomemos el nmero N = 4510 = 1011012, que tiene 6 bits, y
calculemos su complemento a dos:
N = 4510;

ii.

n = 610;

26 = 6410

y, por tanto: C2N = 6410 4510 = 1910 = 0100112.

Complemento a uno.

El complemento a uno de un nmero N, compuesto por n bits es, por definicin, una
unidad menor que el complemento a dos, es decir:
C1N = C2N 1.
Y, por la misma razn:
C2N = C1N + 1.
Calculemos el complemento a uno del mismo nmero del ejemplo anterior:
Siendo N = 4510 = 1011012, y su complemento a dos C2N = 0100112
C1N = C2N 1 = 0100112 0000012 = 0100102
C1N = 0100102

Da la sensacin de que calcular el complemento a uno no es ms que una forma


elegante de complicarse la vida, y que no va a ser ms sencillo restar utilizando el
complemento a dos, porque el procedimiento para calcular el complemento a dos es
ms difcil y laborioso que la propia resta. Pero es mucho ms sencillo de lo que
parece.

En realidad, el complemento a uno de un nmero binario es el nmero resultante de


invertir los UNOS y CEROS de dicho nmero.

31

Por ejemplo si:


N = 1101001012.
Obtenemos su complemento a uno invirtiendo ceros y unos, con lo que resulta:
C1N = 0010110102.
Y su complemento a dos es:

C2N = C1N + 1 = 0010110102 + 1 = 0010110112.

Ejemplo de clculo de complementos a uno y dos. Sea:

N = 01101101012.
El complemento a uno es (invierte ceros y unos):
C1N = 10010010102.
Y el complemento a dos es (smale 1):
C2N = 10010010112.

Representacin de nmeros enteros con signo.


Existen tres representaciones que han sido usadas para manejar internamente
nmeros 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).

La ms sencilla de las tres es la representacin en magnitud y signo; sin embargo, es


la que ocasiona mayores problemas al realizar operaciones aritmticas. Esta
representacin fue usada en las primeras computadoras digitales pero en la actualidad
ha cado en desuso.

Las dos representaciones que usan complemento permiten efectuar operaciones


aritmticas con relativa facilidad, esto ha contribuido a que ambas hayan sido
adoptadas en las computadoras actuales, siendo la representacin en complemento a
2 la ms usada. A continuacin se muestra esto.

32

Ejemplo.
Considere el nmero decimal +15 empleando un bit ms para su representacin
(magnitud y signo).
+1510 = 011112, si se pone un cero a su izquierda no altera su valor y permite
representar el signo +.
Si realizamos su complemento a uno tenemos;
011112

complemento a uno

100002

Como se observa el bit del signo ha cambiado, por lo que se trata del -1510, esto es:

-1510 = -011112 = 100002, si realizamos su complemento a uno nuevamente tenemos:

100002 complemento a uno

011112 = +1510.

Considere nuevamente el nmero decimal +15 empleando un bit ms para su


representacin, pero ahora utilizando complemento a dos.
+1510 = 011112

complemento a uno

100002, sumarle 1 para complemento a 2.

+1510 = 011112

complemento a dos

100012.

Como se observa el bit del signo tambin ha cambiado, por lo que se trata del -1510, en
complemento a 2, es decir:
-1510 = -011112 = 100012, si realizamos su complemento a dos nuevamente tenemos:
100012 complemento a uno

011102, sumarle 1 para complemento a 2

011112.

Obteniendo, el +15 = 011112.

En conclusin el complemento a uno y dos nos permiten obtener respectivamente


los nmeros negativos a partir de los positivos y viceversa, donde el MSB representa
el signo, de acuerdo a lo siguiente:

0 representa los positivos, y el 1 representa los negativos.

33

1.6 ARITMTICA BINARIA Y HEXADECIMAL.

La Unidad Aritmtico Lgica, en la CPU del procesador, es capaz de realizar


operaciones aritmticas, con datos numricos expresados en el sistema binario.
Naturalmente, esas operaciones incluyen la adicin, la sustraccin, el producto y la
divisin. Las operaciones se hacen del mismo modo que en el sistema decimal, pero
debido a la sencillez del sistema de numeracin, pueden hacerse algunas
simplificaciones que facilitan mucho la realizacin de las operaciones.

Suma en binario.

Para aprender a sumar, con cinco o seis aos de edad, tuviste que memorizar las 100
combinaciones posibles que pueden darse al sumar dos dgitos decimales. La tabla de
sumar, en binario, es mucho ms sencilla que en decimal. Slo hay que recordar
cuatro combinaciones posibles:
+

0+1

Las sumas 0 + 0, 0 + 1 y 1 + 0 son evidentes:


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 posicin siguiente a la izquierda. Veamos algunos ejemplos:

Ejemplo 1.
Sumar los nmeros binarios 1001002(3610) y 100102(1810).

1001002. 3610
0100102 ..1810
1101102.5410

Se observa que no se ha tenido ningn acarreo en las sumas parciales.

34

Ejemplo 2.
Sumar 110012 (2510) y 100112 (1910).

Ejemplo 3.
Sumar 12510 =125D = 11111012 = 1111101B y 8610 = 86D = 10101102 = 1010110B.
Observar que se puede usar el subndice 10 o D para el decimal y el subndice
para el binario.

125D1111101B
86D1010110B
211D. 11010011B

Otros ejemplos.
0102 + 1012 = 1112

210 + 510 = 710

0011012 + 1001012 = 1100102

1310 + 3710 = 5010

10110112 + 10110102 = 101101012

9110 + 9010 = 18110

1101110112+ 1001110112 = 10111101102

44310 + 31510 = 75810

Sustraccin en binario.
La tcnica de la resta en binario es, nuevamente, igual que la misma operacin en el
sistema decimal. Pero conviene repasar la operacin de restar en decimal para
comprender la operacin binaria, que es ms sencilla. Los trminos que intervienen en
la resta se llaman minuendo, sustraendo y diferencia.

1+1

Las restas 0 - 0, 1 - 0 y 1 - 1 son evidentes:

35

00=0
10=1
11=0
La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad
prestada de la posicin siguiente: 10 - 1, es decir, 210 110 = 1. Esa unidad prestada
debe devolverse, sumndola, a la posicin siguiente. Veamos algunos ejemplos:
1112 1012 = 0102

710 510 = 210

100012 010102 = 001112

1710 1010 = 710

110110012 101010112 = 001011102

21710 17110 = 4610

1111010012 1011011012 = 0011111002

48910 36510 = 12410

A pesar de lo sencillo que es el procedimiento de restar, es fcil confundirse. Tenemos


interiorizado el sistema decimal y hemos aprendido a restar mecnicamente, sin
detenernos a pensar en el significado del arrastre. Para simplificar las restas y reducir
la posibilidad de cometer errores hay varias soluciones:

Dividir los nmeros largos en grupos. En el siguiente ejemplo, vemos cmo se


divide una resta larga en tres restas cortas:

1001100111012
0101011100102
0100001010112

1001 1001 1101


- 0101 0111 0010
0100 0010 1011

Restar en binario usando el complemento a uno.

Y, por fin, vamos a ver cmo facilita la resta el complemento a uno. La resta binaria de
dos nmeros puede obtenerse sumando al minuendo el complemento a uno del
sustraendo. Veamos algunos ejemplos:
Primer ejemplo:

36

Segundo ejemplo:

Restar en binario usando el complemento a dos.

Ahora utilizaremos el complemento a 2, que es el que emplea la tarjeta JM60 que


usaremos en el curso.
Primer ejemplo:

Segundo ejemplo:

Otros ejemplos de complemento a dos.


Hagamos la siguiente resta, 9110 4610 = 4510, en binario:
10110112 01011102 = 01011012
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 nmero resultante no puede ser ms 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
El resultado de la resta ser: 110110112 + 111010012 = 1110001002.
Despreciando el bit que se desborda por la izquierda, llegamos al resultado correcto:
110001002 = 19610.

Multiplicacin binaria.
Hay varios mtodos de hacer la multiplicacin binaria, a continuacin se muestra la
manera en que aprendimos a multiplicar.

Comprobacin
1x20 + 1x21 + 0x22 + 0x23 + 0x24 + 1x25 + 1x26 = 1 + 2 + 32 + 64 = 9910

38

Este mtodo de trabajar es bueno, pero no es prctico para computadoras porque el


tipo de desplazamiento requerido hace que sea difcil su implementacin.
Uno de los mtodos para la multiplicacin usado por las computadoras es la suma
repetida. Para multiplicar 7 x 55 por ejemplo, la computadora puede sumar 7 veces el
55. Para nmeros ms grandes, este mtodo es lento.
Un mtodo ms rpido para computadoras y microprocesadores usa un algoritmo de
sumar y desplazar a la derecha.
Los nmeros a multiplicar se almacenan en 2 registros (B y C). El resultado se genera
en un registro especial llamado acumulador(A), el cual se inicializa a cero.
Para empezar, debemos checar si el digito del multiplicador es 1 o cero. Si el digito es
1, el multiplicando se le sumara al acumulador. Despus el acumulador se desplazara
una posicin a la derecha. El siguiente digito del multiplicador es checado y se repite el
paso anterior, hasta llegar al bit ms significativo del multiplicador.
A continuacin se muestra el proceso para el mismo ejercicio que se realiz antes.

Comprobacin
1x20 + 1x21 + 0x22 + 0x23 + 0x24 + 1x25 + 1x26 = 1 + 2 + 32 + 64 = 9910

39

Divisin binaria.
La divisin tambin se puede realizar de varias maneras. A continuacin se muestra la
manera en que aprendimos a dividir.

Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo
nmero de cifras (100 entre 110, en el ejemplo). Si no puede dividirse, se intenta la
divisin tomando un dgito ms (1001 entre 110).
Si la divisin es posible, entonces, el divisor slo 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 procedimiento de divisin contina del mismo modo que en el sistema decimal.
Otro mtodo de la divisin la cual es fcil de implementar para computadoras y
microprocesadores es ejecutando restas sucesivas. El divisor es restado del dividendo
y de cada sucesivo residuo hasta que un acarreo (borrow) se presenta. El cociente
deseado es uno menos que el nmero de sustracciones al producirse un acarreo.
Este mtodo es simple, pero para nmeros grandes es lento.
Para acelerar la divisin con nmeros grandes se usa el algoritmo de resta y
desplazamiento a la izquierda y puede ser usado en computadoras.
El proceso es similar al que aprendimos para hacer divisiones.
El divisor se resta del digito ms 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 ms 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
nmero es desplazado a la izquierda y se procede a resta nuevamente hasta terminar.
A continuacin se muestra un ejemplo para comprenderlo mejor.

40

Dividir 32810 entre 810.


32810 = 1010010002 = 1x28 + 1x26 + 1x23 = 256 + 64 + 8 = 32810.
810 = 10002 = 1x23 = 810.
32810 810 = 4110.

1010010002 entre 10002 = 1010012.

Registro de cociente = 1010012 = 1x25 + 1x23 + 1x20 = 32 + 8 +1 = 4110

41

Aritmtica hexadecimal.
En el sistema hexadecimal, al igual que en el sistema decimal, binario y octal, se
pueden hacer diversas operaciones matemticas. Entre ellas se encuentra la resta
entre dos nmeros en sistema hexadecimal, la que se puede hacer con el mtodo de
complemento a 15 o tambin utilizando el complemento a 16. Adems de stas,
deberemos manejar adecuadamente la suma en sistema hexadecimal, explicada a
continuacin:
Suma.
La adicin de los nmeros hexadecimales se efecta de manera similar a la adicin
decimal, siempre y cuando recuerde que el mayor digito hexadecimal es (F) y no 9
para realizar esta operacin se sugiere el siguiente procedimiento:

1.-sume los dos dgitos hexadecimales en decimal, insertando mentalmente el


equivalente decimal para nmeros mayores de 9.
2.-Si la suma es 15 o menos, esta puede expresarse directamente como un digito
hexadecimal.
3.-Si la suma es mayor o igual a 16, reste 16 y acarree un 1 hacia el digito de la
siguiente posicin.

Ejemplo.
Sumar los nmeros hexadecimales 3A943B16 y 3A943B16.
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.
Las restas Hexadecimales se pueden resolver fcilmente utilizando el complemento a
15 o el complemento a 16. Estos procesos hacen que una resta se convierta en una
suma en sistema hexadecimal.
Complemento a 15.

Podemos hacer la resta de dos nmeros hexadecimales utilizando el 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 nmeros. Para ello, aadiremos ceros al sustraendo hasta que sean
suficientes.
A4FC916
- 00DE816

Despus, crearemos un nuevo nmero con la misma cantidad de nmeros que el


nuevo sustraendo. Como en el sistema hexadecimal el mayor nmero que tenemos es
el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como
nmeros tiene el sustraendo. La resta se hace siguiendo las normas generales de la
resta comn.
FFFFF16
00DE816

FF21716

complemento a 15 de 00DE816.

La diferencia obtenida se denomina el complemento a 15. Recuerda el valor


correspondiente a cada letra al operar. Ahora tendremos que sumar el minuendo y el
complemento a 15 utilizando la suma en sistema hexadecimal, mencionada
anteriormente.
A4FC916
+ FF21716

1A41E016
Con la suma obtenemos el resultado 1A41E016, pero no es la respuesta final. Te
habrs dado cuenta que este nuevo nmero tiene ms cifras que los nmeros inciales
que tenamos que restar. Tenemos que quitar el nmero de la izquierda (en este caso,
el 1) y sumarlo.
A41E016
+
116

A41E116.

Comprobacin

Por lo tanto.

Hexadena que presto la F a C.

A4FC916
- 00DE816

A41E116.

Sumamos la diferencia con el sustraendo,


para obtener el minuendo.

116 + 816 = 916


E16 + E16 = C16 + 1016 = 1410 + 1410 = 1210 + 1610
Como F presto a C, esta se convirti en E.
116 + D16 = E16 = 1410.
416 + 016 = 416.
A16 + 016 = A16.

43

Complemento a 16.
Tambin podemos hacer la resta de dos nmeros hexadecimales utilizando el
complemento a 16, siguiendo un proceso similar que en el caso del complemento a 15.
Para resolver la resta, tendremos que sumar al minuendo el complemento a diecisis
del sustraendo.

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 nmeros, al igual que ocurre en el proceso del complemento a 15.

Para ello, aadiremos ceros al sustraendo hasta que sean suficientes.

A4FC916
- 00DE816

Despus, crearemos un nuevo nmero con la misma cantidad de nmeros que el


nuevo sustraendo.

Como en el sistema hexadecimal el mayor nmero que tenemos es el 15, que


corresponde a la letra F, tendremos que escribir la F tantas veces como nmeros tiene
el sustraendo. La resta se hace siguiendo las normas generales de la resta comn.
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 fcilmente. Adems, recuerda que ests sumando en sistema
hexadecimal, siguiendo el mismo proceso explicado anteriormente.

FF21716
+
116

FF21816

complemento a 16 de 00DE816

A la diferencia obtenida incrementada en uno le denominaremos el complemento a 16.

44

Ahora tendremos que sumar el minuendo y el complemento a 16.

A4FC916
+ FF21816

1A41E116.
Con la suma obtenemos el resultado 1A41E1.

Te habrs dado cuenta que este nuevo nmero tiene ms cifras que los nmeros
inciales que tenamos que restas, cosa imposible en una resta (que la diferencia sea
mayor que el minuendo y el sustraendo).

Por eso, y estando en complemento a 16, tendremos que despreciar (eliminar) el


nmero de la izquierda. En este caso es el 1.
La respuesta, por lo tanto, es A41E1.

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.

Finalmente realizaremos la misma resta como lo hacemos en forma decimal.

Ejemplo.

Restar el nmero hexadecimal DE816 de A4FC916 como lo hara en forma anloga al


sistema decimal.

E
A 4 F C 916
D E 816
A 4 1 E 116

Donde: 916 - 816 = 116


C16 E16, no se puede hacer y pedimos una hexadena al siguiente (F)
C16 + 1016 = 1210 + 1610 = 2810; 2810 E16 = 2810 1410 = 1410 = E16.
E16 D16 = 1410 1310 = 110 = 116.
A416 = A416.

Obteniendo el mismo resultado que con complemento a 16.

45

1.7 CDIGOS.
No toda la informacin que maneja un sistema digital es numrica, e inclusive, para la
informacin numrica a veces no es conveniente utilizar el sistema binario descrito
antes. Por ello es conveniente idear formas diferentes de representar (codificar)
informacin diversa usando solamente ceros y unos.
CDIGOS NUMRICOS.

Existen varias situaciones en las que no es conveniente utilizar el binario natural para
manejar informacin numrica, entre ellas se pueden mencionar las siguientes:

Cuando se busca una conversin ms sencilla decimal - binario (cdigos BCD).


Cuando adems de lo anterior se van a manejar nmeros negativos (Cdigos
BCD autocomplementarios).
Cuando se busca minimizar errores de censado en encoders de posicin de
una cantidad a otra (cdigo gray).
Cuando se quiere detectar errores en transmisin de datos (cdigo de paridad).
Cuando se quiere detectar y corregir errores en transmisin de datos (cdigo
Hamming)

A continuacin se tratan algunos de estos cdigos.

CDIGO BCD (Binario Codificado en Decimal).

Los cdigos BCD nos permiten representar cada uno de los dgitos decimales (0,...,9)
mediante 4 bits.
El ms sencillo de los cdigos BCD es el BCD8421 o BCD natural, que consiste
simplemente en representar cada dgito decimal por su binario equivalente. As
tenemos:

Dgito
Decimal
0

BCD8421

BCD8421

0000

Dgito
Decimal
5

0001

0110

0010

0111

0011

1000

0100

1001

46

0101

La conversin con el sistema decimal se realiza directamente, en grupos de cuatro bits


por cada dgito decimal con ponderacin 8421.
Este cdigo tiene aplicacin 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 nmero decimal 85 (recuerda usar 4 bits).
85
1000

0101

Conversin directa tpica entre un nmero en decimal y un BCD.

Ejemplo 2.

Qu nmero decimal representa el nmero binario 0011100101012?


(Recuerda agruparlos en 4 bits).
0011

1001 01012 = 39510.

En el cdigo BCD: los cuatro primeros bits representan el 3.Los siguientes cuatro
representan el 9 y los ltimos cuatro el 5.

Es muy importante comprender la diferencia entre conversin de un nmero decimal


binario y la codificacin binaria de un nmero decimal. En cada caso el resultado final
es una seria de bits. Los bits obtenidos de la conversin son dgitos binarios. Los bits
obtenidos de la codificacin son combinaciones de unos ceros arregladas de acuerdo
a las reglas del cdigo usado. Por tanto es extremadamente importante tener en
cuenta que una serie de unos y ceros en un sistema digital puede algunas veces
representar un nmero binario y otras veces representar alguna otras cantidad discreta
de informacin como se especifica en un cdigo binario dado. El cdigo BCD por
ejemplo, ha sido escogido de tal manera que es un cdigo y una conversin binaria
directa siempre y cuando los nmeros decimales sean algn entero entre 0 y 9.

Para nmeros mayores que 9, la conversin y la codificacin son completamente


diferentes. Este concepto es tan importante que vale la pena repetirlo usando otro
ejemplo: la conversin binaria del decimal 1310 es 11012; la codificacin decimal 1310
con BCD es 00010011BCD.

Decimal
1310

Conversin Binaria

Codificacin BCD

11012

0001 0011BCD

47

Suma BCD.
Las operaciones aritmticas se hacen siguiendo las reglas convencionales. La mayor
dificultad se encuentra en la generacin de acarreos.

Si a + b < 10 no existe acarreo y no se debe corregir:

Ejemplo :

3D
+5D
8D

0011BCD
+ 0101BCD
1000BCD

Si 9 < a + b < 16 y no existe acarreo, se debe corregir sumando


6D(01102):

Ejemplo :

6D

0110BCD

+ 8D
14D

+ 1000BCD
1110BCD

error

Al sumar en binario 0110 + 1000 se obtiene un cdigo BCD invlido, que hay que
corregir para producir un resultado correcto, es decir un acarreo y 0100. Esto es:

+
+

0110BCD
1000BCD
1110BCD

Cdigo BCD invalido

0110BCD

Factor de correcin

1 0100BCD

Esto significa el numero 14D( 0001 0100BCD)

Si a + b > 16 y existe acarreo, se debe corregir tambin sumando 6D(01102):

Ejemplo:

9D
8D
17D

1001BCD
+ 1000BCD
10001BCD

error

En este caso el resultado es vlido (tienen significado en decimal) pero incorrecto (ya
que es el nmero 11 en BCD). La correccin es:

+
+

1001BCD
1000BCD
10001BCD
0110BCD
10111BCD

error
Factor de correccin.
Esto significa 1l nmero 17D (0001 0111BCD).

48

La principal ventaja del cdigo BCD es la facilidad relativa para convertir a y


desde decimal. Slo se requiere recordar los grupos codificados de 4 bits para los
dgitos decimales del 0 al 9. Esta facilidad de conversin es especialmente importante
desde el punto de vista de circuitos, porque en un sistema decimal son los circuitos
lgicos los que ejecutan las conversiones a y desde decimal.
El cdigo BCD se usa en mquinas digitales siempre y cuando se aplique
informacin digital, ya sea como entradas o mostradas como salidas.
Los voltmetros digitales, contadores de frecuencia y relojes digitales usan todos BCD,
porque despliegan la informacin de salida en decimal. Las calculadoras electrnicas
usan BCD porque los nmeros de entrada vienen en decimal va el teclado y los
nmeros de salida son mostrados en decimal.
BCD no es a menudo usado en computadoras digitales modernas de alta velocidad
por dos buenas razones. Primero, como ya fue sealado, el cdigo BCD para un
nmero decimal dado requiere ms bits que el cdigo binario directo y es por
consiguiente menos eficiente. Esto es importante en computadoras digitales porque el
nmero de lugares en memoria donde estos bits pueden ser almacenados es limitado.
Segundo, los procesos aritmticos para nmeros representados en cdigo BCD son
ms complicados que en binario ordinario y requieren as de circuitera ms compleja.
La circuitera ms compleja contribuye a una disminucin en la velocidad a la cual
tienen lugar las operaciones aritmticas. Las calculadoras que usan BCD son, por
consiguiente, considerablemente ms lentas en su operacin que las computadoras.

CDIGO BCD EXCESO-3.

El cdigo BCD exceso-3 se obtiene a partir del cdigo BCD natural, simplemente
sumando 310 (00112) a cada cdigo BCD de cada dgito decimal. Esto se resume en la
siguiente tabla.
Dgito
Decimal
0
1
2
3
4

BCD
EXCESO-3
0011
0100
0101
0110
0111

Dgito
Decimal
5
6
7
8
9

BCD
EXCESO-3
1000
1001
1010
1011
1100

Este cdigo resulta de utilidad en aplicaciones donde se requiere realizar operaciones


aritmticas usando complementos. Este cdigo es llamado autocomplementario
porque el complemento a 9 de un nmero decimal puede ser obtenido
complementando cada bit individualmente y el resultado sigue siendo un cdigo vlido
en BCD exceso 3.
Ejemplo: Representar el nmero 90710 en BCD exceso-3 y usar el complemento a 1
para encontrar el complemento a 9 del nmero:
90710 = 1100 0011 1010exc-3
0011 1100 0101exc-3 complemento a 1
= 09210 complemento a 9.

49

CDIGO BCD 2421.


Este es otro cdigo BCD autocomplementario, y su nombre (2421) indica la
ponderacin de sus bits para obtener su equivalente en decimal y viceversa, en la
siguiente tabla se ilustra este cdigo.
Dgito

BCD

Dgito

BCD

Decimal

2421

Decimal

2421

0000

1011

0001

1100

0010

1101

0011

1110

0100

1111

Ejemplo: Representar el nmero 90710 en BCD 2421 y usar el complemento a 1 para


encontrar el complemento a 9 del nmero:
90710 = 1111 0000 11012421
0000 1111 00102421 complemento a 1
= 09210 complemento a 9.

CDIGO 2 DE 5 (BIQUINARIO).
El cdigo 2 de 5 es un cdigo multibit no ponderado, es decir, los cdigos no pueden
obtenerse usando una expresin polinomial; este cdigo est diseado para la
deteccin de errores en diferentes tipos de clculos y operaciones con registros de
corrimiento. Se usan cinco bits para representar los dgitos decimales (0-9). Como el
nombre lo implica slo dos de los cinco bits son 1.
Dgito

Cdigo

Dgito

Cdigo

Decimal

2 de 5

Decimal

2 de 5

00011

01100

00101

10001

00110

10010

01001

10100

01010

11000

Ejemplo: Representar el nmero decimal 23710 en cdigo 2 de 5.


23710 = 00110 01001 100102 de 5.

50

CDIGO GRAY.
El cdigo Gray es un tipo especial de cdigo binario que no es ponderado (los
dgitos que componen el cdigo no tienen un peso asignado).
Su caracterstica es que entre una combinacin de dgitos y la siguiente, sea sta
anterior o posterior, slo hay una diferencia de un dgito. Por eso tambin se le llama
cdigo progresivo.
Esta progresin sucede tambin entre la ltima y la primera combinacin. Por eso se
le llama tambin cdigo cclico. (Ver la tabla que se muestra abajo).
El cdigo Gray es utilizado principalmente en sistemas de posicin, ya sea angular o
lineal. Sus aplicaciones principales se encuentran en la industria y en robtica.
En robtica se utilizan unos discos codificados para dar la informacin de posicin
que tiene un eje en particular. Esta informacin se da en cdigo Gray.
La tabla siguiente es una lista del cdigo Gray de cuatro bits para nmeros decimales
del 0 al 15. Los nmeros binarios se muestran en la tabla como una referencia.
Como los nmeros binarios, el cdigo Gray puede tener cualquier nmero de bits.
DECIMAL

BINARIO

GRAY

0000

0000

0001

0001

0010

0011

0011

0010

0100

0110

0101

0111

0110

0101

0111

0100

1000

1100

1001

1101

10

1010

1111

11

1011

1110

12

1100

1010

13

1101

1011

14

1110

1001

15

1111

1000

Analizando la tabla se observa que:


Cuando un nmero binario pasa de: 01112 a 10002 (de 7 a 8 en decimal) o de
11112 a 00002 (de 15 a 0 en decimal) cambian todas las cifras.
Para el mismo caso pero en cdigo Gray: 0100 a 1100 (de 7 a 8 en decimal) o de
1000 a 0000 (de 15 a 0 en decimal) slo ha cambiado una cifra.

51

La caracterstica de pasar de un cdigo al siguiente cambiando slo un dgito asegura


menos posibilidades de error.
No es ponderado ni es un cdigo aritmtico; esto es, no hay pesos especficos
asignados a las posiciones de los bits. El carcter importante del cdigo Gray es que
exhibe solo un cambio de bit nico de un nmero de cdigo al siguiente. Esta
propiedad es muy importante para muchas aplicaciones, tales como codificadores de
posicin axial, donde la susceptibilidad a errores se incrementa con el nmero de
cambios de bit entre nmeros adyacentes en una secuencia.
CONVERSIN DE BINARIO A CDIGO GRAY.
La conversin entre el cdigo binario y el cdigo Gray a veces es muy til.
Primeramente, mostraremos cmo convertir un nmero binario a un nmero de cdigo
Gray. Se aplican las siguientes reglas:

El bit ms significativo (el ms a la izquierda) en el cdigo Gray es el mismo


que el MSB correspondiente en el nmero binario.
Yendo de izquierda a derecha, sume cada par adyacente de bits del cdigo
binario, para obtener el siguiente bit del cdigo Gray. Descarte acarreos.

Ejemplo: Paso 1. El digito del cdigo Gray ms a la izquierda es el mismo que el


digito del cdigo binario ms a la izquierda.
1 0 1 1 0 Binario
1

Gray

Paso 2. Sume el bit de cdigo binario ms a la izquierda el bit adyacente.


1 + 0 1 1 0 Binario
1

Gray

Paso 3. Sume el siguiente par adyacente.


1 0+1
1 1

1 0 Binario

Gray

Paso 4. Sume el siguiente par adyacente y descarte el acarreo.


1 0 1+1
1 1 1

0 Binario

Gray

Paso 5. Sume el ltimo par adyacente.


1 0 1 1 +0

Binario

1 1 1 0 1

Gray

La conversin ha sido completada; el cdigo Gray es 11101.

52

CONVERSIN DE GRAY A BINARIO.

Para convertir de cdigo Gray a Binario, se utiliza un mtodo similar, pero con algunas
diferencias. Se aplican las siguientes reglas:

El bit ms significativo (el ms a la izquierda) es el cdigo binario es el mismo


que el bit correspondiente en el cdigo Gray.
Sume cada bit generado del cdigo binario al bit del cdigo Gray en la
siguiente pocin adyacente. Descarte acarreos.

Ejemplo:
Paso 1. El digito del cdigo binario ms a la izquierda es el mismo que el digito del
cdigo Gray ms a la izquierda.
1 1 0 1 1 Gray
1

Binario

Paso 2. Sume el ltimo bit del cdigo binario que se acaba de generar al bit del cdigo
Gray en la siguiente posicin. Descarte acarreos. (En negrilla bit que se suman).
1 1

0 1 1 Gray

1 0

Binario

Paso 3. Sume el ltimo bit del cdigo binario que se acaba de generar al bit del cdigo
Gray en la siguiente posicin.
1 1 0 1 1 Gray
1 0 0

Binario

Paso 4. Sume el ltimo bit del cdigo binario que se acaba de generar al bit del cdigo
Gray en la siguiente posicin.
1 1 0 1 1 Gray
1 0 0 1

Binario

Paso 5. Sume el ltimo bit del cdigo binario que se acaba de generar al bit del cdigo
Gray en la siguiente posicin. Descarte acarreos.
1 1 0 1 1 Gray
1 0 0 1 0 Binario
La conversin ha sido completada; el cdigo binario es 100102.

53

APLICACIN A SENSORES PTICOS.

La principal caracterstica del cdigo Gray (que slo cambia un bit entre dos cdigos
consecutivos) es muy utilizada en sensores pticos para codificar la posicin (angular
o lineal) mediante discos o cintas codificadas en Gray, dependiendo del caso.

Por ejemplo, en la siguiente figura se ilustra la codificacin en dos colores (blanco y


negro) de un disco que ser montado sobre la flecha de un motor. Se usa el cdigo
Gray de 4 bits para codificar la posicin angular de la flecha. Cada sector en el disco
tiene un cdigo de posicin de 0 a 15. Se usarn sensores opto electrnicos reflectivos
para determinar la posicin de la flecha en un sector o sea, con una resolucin de 1/16
de vuelta, o de 22.5. Si se desea una mejor resolucin se debern usar ms bits, y
por lo tanto mayor nmero de sectores.

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 posicin. En cambio, si es en binario este
error puede ser tan grande como 180.

54

CDIGOS ALFANUMRICOS.
Muchas aplicaciones de sistemas digitales (especialmente en las computadoras o la
transmisin de textos) requieren del procesamiento de datos como nmeros, letras y
smbolos especiales. Para manejar estos datos usando dispositivos digitales, cada
smbolo debe estar representado por un cdigo binario. El cdigo alfanumrico ms
generalizado en la actualidad es el denominado ASCII (American Standard Code for
Information Interchange). Este es un cdigo de 7 bit. La siguiente tabla muestra una
parte del cdigo ASCII:

Rango (hexadecimal
0 al 19
30 al 39
41 al 5A
61 al 7A

Caracteres
cdigos de control y comunicaciones
dgitos del 0 al 9
letras maysculas de la A a la Z
letras minsculas de la a a la z

Ejemplo: la palabra "Start" se representa en cdigo ASCII como sigue


1010011 1110100 1100001 1110010 1110100
S

55

CDIGO DE SIETE SEGMENTOS.


Un dispositivo muy generalizado por su sencillez y bajo costo en dispositivos digitales
de visualizacin es el exhibidor o display de siete segmentos, el cual consiste en un
arreglo de siete indicadores luminosos (LEDs) u opacos (cristal lquido) arreglado
como se muestra en la siguiente figura. Existen dos tipos de exhibidores de siete
segmentos construidos con LEDs, estos son los de nodo comn y los de ctodo
comn, los cuales se muestran tambin en la figura.

Este tipo de displays permite la representacin de informacin de tipo numrico


principalmente, sin embargo, tambin permite algunos caracteres alfabticos, tales
como: a, A, b, c, C, d, E, F, G, H, y, j, L, o, O, p, q, r, s, u, z.
En la siguiente tabla se muestra el cdigo de 7 segmentos para un display de
ctodo comn para los dgitos decimales y el equivalente en BCD:

Decimal
Nmeros
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

Entradas en Salidas para el display


binario.
de 7 segmentos
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

56

a
1
0
1
1
0
1
1
1
1
1
x
x
x
x
x
x

b
1
1
1
1
1
0
0
1
1
1
x
x
x
x
x
x

c
1
1
0
1
1
1
1
1
1
1
x
x
x
x
x
x

d
1
0
1
1
0
1
1
0
1
1
X
X
X
X
X
X

e
1
0
1
0
0
0
1
0
1
0
x
x
x
x
x
x

f
1
0
0
0
1
1
1
0
1
1
x
x
x
x
x
x

g
0
0
1
1
1
1
1
0
1
1
x
x
x
x
x
x

CDIGOS PARA DETECCIN Y CORRECCIN DE ERRORES.


Los sistemas digitales pueden cometer errores de vez en cuando. Aunque los
dispositivos en circuito integrado tales como microprocesadores, compuertas lgicas o
circuitos de memoria carecen de partes mviles y por lo tanto tienen alta confiabilidad,
pero los dispositivos que tienen interaccin con partes mviles son menos confiables.
Se pueden producir errores por polvo en las cabezas lectoras de una unidad de disco.
Tambin es muy comn la ocurrencia de errores en la transmisin de datos a
distancia. Los datos que se transmiten por modem (a travs de lnea telefnica)
pueden recibirse incorrectamente si la lnea tiene ruidos. Tambin las perturbaciones
en el suministro de energa elctrica pueden producir errores. En resumen, cuando se
leen, escriben o transmiten caracteres de un sitio a otro, pueden producirse errores.
TRANSMISIN SERIE Y PARALELO.
Existen dos mtodos bsicos para transmitir informacin entre dos dispositivos
digitales, como se ilustra en la siguiente figura, la transmisin de datos digitales en
paralelo ocupa una lnea fsica por cada bit de los datos a enviar, esto hace que este
tipo de transmisin sea usada en distancias relativamente cortas (unos cuantos
metros), ya que de otra manera se vuelve muy costosa

Por otro lado, la transmisin de datos a distancias muy grandes (del orden de cientos
de metros a miles de kilmetros) hace necesario usar menos lneas fsicas, en este
caso puede usarse el esquema de la figura siguiente o transmisin en serie, la cual
utiliza una sola lnea para enviar el nmero de bits que se desee.

La transmisin en serie resulta econmica por el nmero reducido de lneas que


requiere e incluso el hecho de que permite usar en lugar de lneas conductoras, el aire
o el vaco, cuando en lugar de pulsos elctricos se usa radiacin electromagntica
(luz, ondas de radio, ultrasonido, etc.). A cambio de esta economa, el transmisor y el
receptor se vuelven un poco ms complejos, adems de que el trayecto que recorre la
informacin (por ser largo) se vuelve ms susceptible a interferencias.

57

CDIGO DE PARIDAD.
Un mtodo muy simple, pero ampliamente utilizado por su sencillez para detectar
errores en transmisin de datos consiste en aadir un bit de paridad (p) a cada
carcter, normalmente en la posicin ms significativa.
En el cdigo de paridad par, el bit de paridad (p) se elige de manera que el nmero
de bits 1 del dato sea un nmero par incluyendo el bit de paridad. En el cdigo de
paridad impar, el bit de paridad se elige de modo que el nmero de bits 1 (incluyendo
el de paridad) del dato sea impar.
De esta manera, cuando cambia un bit durante la transmisin, el nmero de unos en el
carcter recibido tendr la paridad equivocada y el receptor sabr que se ha producido
un error.
Ejemplo: La siguiente tabla muestra un cdigo de paridad par de 8 bits para los
caracteres ASCII FIE.

Ejemplo Si un transmisor enva la informacin anterior y hay errores en la transmisin,


suponiendo que el receptor recibe la informacin, mostrada en la siguiente tabla,
donde se anotan los datos que llegaron errneos y si se detect o no el error, agrega
en la columna vaca (bits errneos) cuantos bits cambiaron en la transmisin.

Como puede verse, el cdigo de paridad no siempre resulta efectivo para detectar
errores. Qu tipo de errores si detecta y cules no?

58

CDIGO DE HAMMING.
Richard Hamming (1950) ide un mtodo no slo para detectar errores sino tambin
para corregirlos, y se conoce como cdigo Hamming. En l se aaden k bits de
paridad a un carcter de n bits, formando un nuevo carcter de n + k bits. Los bits se
enumeran empezando por 1, no por 0, siendo el bit 1, el de la izquierda, el ms
significativo. Todo bit cuyo nmero sea potencia de 2 es un bit de paridad y todos
los dems se utilizan para datos.
Para un carcter ASCII de 7 bits, se aaden 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 nmero total
de unos en las posiciones comprobadas sea par, si se trata de paridad par.
Las posiciones de los bits comprobados por los de paridad son:
El bit 1 comprueba los bits 1, 3, 5, 7, 9 y 11.
El bit 2 comprueba los bits 2, 3, 6, 7, 10 y 11.
El bit 4 comprueba los bits 4, 5, 6 y 7.
El bit 8 comprueba los bits 8, 9, 10 y 11.
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 cdigo de Hamming para el carcter "b".
Cdigo ASCII para "b" (62H = 110 0010)
D6=1

D5=1

D4=0

D3=0

D2=0

D1=1

D0=0

Cdigo de Hamming para "b"

D6
1,3,5,7,9,11(para 2 unos)

D5

D4

D3

D2

D1

D0

4,5,6,7(para tener 2 unos) 8,9,10,11(para 2 unos)

2,3,6,7,10,11(para tener 2 unos)

59

Explicacin

El bit 1 se puso a cero porque los bits 3 y 5 estn en uno, para tener paridad par.
El bit 2 se puso a cero porque los bits 3 y 10 estn 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.

El carcter ASCII "b" se representa por el nmero binario 1100010.


El cdigo de Hamming para "b" en binario es 00111001010.

Ejemplo:

Considere que pasara si el bit 1 se modificara durante la transmisin. El carcter


recibido sera 10111001010 en lugar de 00111001010. El receptor comprobara los 4
bits de paridad con los resultados siguientes:

Bit de paridad 1 incorrecto (los bits 1, 3, 5, 7, 9 y 11 contienen tres unos).


Bit de paridad 2 correcto (los bits 2, 3, 6, 7, 10 y 11 contienen dos unos).
Bit de paridad 4 correcto (los bits 4, 5, 6 y 7 contienen dos unos).
Bit de paridad 8 correcto (los bits 8, 9, 10 y 11 contienen dos unos).

El nmero total de unos en los bits 1, 3, 5, 7, 9 y 11 debera 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
eleccin al 1 o 9. El bit de paridad 8 tambin 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, debera haberse transmitido como un 0. En esta forma se pueden corregir los
errores.

60

UNIDAD II
2.1 SEALES ANALGICAS Y DIGITALES.
La electrnica se divide en dos categoras.
a) Electrnica analgica:

Trata de circuitos en los que las seales elctricas pueden tomar infinidad de valores
dentro de un rango determinado.

Ejemplo del espectro medido de una seal de televisin analgica.


b) Electrnica digital:
Se encarga de estudiar los circuitos en los que las seales elctricas slo pueden
tomar dos valores: 1 o 0 (nivel alto, nivel bajo). La electrnica digital ha alcanzado una
gran importancia debido a que es utilizada para realizar autmatas y por ser la piedra
angular de los sistemas microprogramados como son los ordenadores o
computadoras.

61

Una seal analgica es un tipo de seal generada por algn tipo de fenmeno
electromagntico y que es representable por una funcin matemtica continua en la
que es variable su amplitud y periodo (representando un dato de informacin) en
funcin del tiempo. Algunas magnitudes fsicas comnmente portadoras de una seal
de este tipo son elctricas como la intensidad de corriente, la tensin y la potencia,
pero tambin pueden ser hidrulicas como la presin, trmicas como la temperatura,
mecnicas, etc.
En la naturaleza, el conjunto de seales que percibimos son analgicas, as la luz, el
sonido, la energa etc., son seales que tienen una variacin continua. Incluso la
descomposicin de la luz en el arco iris vemos como se realiza de una forma suave y
contina.
Una onda senoidal es una seal analgica de una sola frecuencia. Los voltajes de la
voz y del video son seales analgicas que varan de acuerdo con el sonido o
variaciones de la luz que corresponden a la informacin que se est transmitiendo.

Por otro lado, las seales digitales adquieren uno de dos valores a travs 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 transmisin es, primero, su inmunidad a las interferencias
ya que al digitalizar una seal se elimina el ruido producido por el medio ambiente,
produciendo una seal ms pura y de mayor resolucin (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 dgitos 1(encendido) y 0 (apagado). Ese tipo de
cdigo se presta al almacenamiento; o sea, se puede guardar en memorias de las
utilizadas en cmaras digitales y discos duros de computadoras.

62

Las seales de cualquier circuito o comunicacin electrnica 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 seal suele ser
acondicionada antes de ser procesada.

Ejemplo de ruido en una seal analgica

La gran desventaja respecto a las seales digitales es que en las seales analgicas
cualquier variacin en la informacin es difcil su recuperacin, y esta prdida afecta
en gran medida al correcto funcionamiento y rendimiento del dispositivo analgico. Un
sistema de control digital (como un ordenador, etc.) no tiene capacidad alguna para
trabajar con seales analgicas, de modo que necesita convertirlas en seales
digitales para poder trabajar con ellas.

Un sistema digital es cualquier dispositivo destinado a la generacin, transmisin,


procesamiento o almacenamiento de seales digitales. Tambin un sistema digital es
una combinacin de dispositivos diseado para manipular cantidades fsicas o
informacin que estn representadas en forma digital; es decir, que slo puedan tomar
valores discretos.

Antes de ver el tema 2.2 compuertas lgicas, considero apropiado dar un


repaso a la teora de los conjuntos y el lgebra booleana, que no estn
considerados en el programa de estudios en forma explcita
(conocimiento previo).

63

REPASO.

Teora de los conjuntos.

Un conjunto es una coleccin de elementos u objetos bien definidos, en tal forma que
se puede afirmar con certeza si cualquier objeto dado pertenece o no a la agrupacin.
Para denotar a los conjuntos, se usan letras maysculas y sus elementos con letras
minsculas.
Cuando un elemento x1 pertenece a un conjunto A se expresa de forma simblica
como: x1A.
En caso de que un elemento y1 no pertenezca a este mismo conjunto se utiliza la
notacin: y1A.
Existen cuatro formas de enunciar a los conjuntos:

1) Por extensin o enumeracin: los elementos son encerrados entre llaves y


separados por comas. Es decir, el conjunto se describe listando todos sus elementos
entre llaves.
2) Por comprensin: los elementos se determinan a travs de una condicin que se
establece entre llaves. En este caso se emplea el smbolo | que significa tal que". En
forma simblica es:
A= {x | P(x)} = {x1, x2, x3, .., xn}
Que significa que el conjunto A esta formado de todos los elementos x tales que la
condicin 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.
4) Por descripcin verbal: Es un enunciado que describe la caracterstica que es
comn para los elementos.

Ejemplo.
Dada la descripcin verbal el conjunto de las letras vocales, expresarlo por
extensin, comprensin y por diagrama de Venn.
Solucin.
Por extensin: V = a, e, i, o, u

Por comprensin: V x | x es una vocal

64


Por diagrama de Venn:

e
i
u
o

o
o

Operaciones con conjuntos.


Para realizar operaciones con conjuntos necesitamos un marco de referencia llamado
conjunto universo (U) y un conjunto vaco carente de elementos, que se denota
por:o bien por
a) La unin de los conjuntos A y B es el conjunto de todos los elementos de A con
todos los elementos de B sin repetir ninguno y se denota como A B. Esto es:

AB

| xA y/o xB

Grficamente:

65

b) La interseccin de los conjuntos A y B es el conjunto de los elementos de A


que tambin pertenecen a B y se denota como A B. Esto es:

A B

| xA y xB

Grficamente:

c) El complemento del conjunto A con respecto al conjunto universal U es el


conjunto de todos los elementos de U que no estn en A y se denota como A'.
Esto es:
A' xU | xA
Grficamente:

66

Ejemplo.
Sean los conjuntos:
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.

Solucin.

a) A B = {a, c, d, e, f, g, h, k, l, m, n}.
b) A B = {a, g, k, l}.
c) A' = {b, c, f, I, j, m}.
d) B' = {b, d, e, h, i, j, n}.

Propiedades de los conjuntos.


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:

AA.
AU U.
AU A.
A

2. Propiedades de idempotencia:
AA A.
AA A.
3. Propiedades de complemento:

AA' U.
AA'

67

4. Propiedades asociativas:

ABC AB C
ABC AB C

5. Propiedades conmutativas:

AB B A.
AB B A.
6. Propiedades distributivas:

AB CABAC
AB CABAC

Leyes de DMORGAN.
Estas leyes establecen los complementos de la unin e interseccin entre conjuntos:
Primera ley. El complemento de la unin de dos conjuntos es la interseccin de sus
complementos.
(A B)' = A'B'.

En el diagrama de la izquierda, A B viene dada por la regin en blanco y (A B)' est


representado por el rea sombreada verticalmente. Por su parte en el diagrama de la
derecha, A' es la regin sombreada horizontalmente, B' es el rea sombreada
verticalmente, por lo que A'B' est representado por la superficie cuadriculada. Las
regiones resultantes son iguales.

68

Segunda ley. El complemento de la interseccin de dos conjuntos es la unin


de sus complementos:
(A B)' = A'B'.

En el diagrama de la izquierda, A B est dada por la regin sombreada


horizontalmente y (A B)' est representado por el rea sombreada verticalmente. Por
su parte, en el diagrama de la derecha, A' es la regin sombreada horizontalmente, B'
es el rea sombreada verticalmente, por lo que A'B' est representado por la
superficie que no es blanca. Las regiones resultantes son iguales.
Para demostrar las leyes de De Morgan, realizaremos los siguientes ejercicios.
(

)(

( )

)(

( )

)(

) (

)(

A.

Del ejercicio 1 y 2 tenemos:


(

)(
(

)(

) (

)(

) (

Considerando ejercicio 1 tenemos:


(

)(

) (

= ( ).
5.- Demostrar la primera ley de De Morgan.
Considerando ejercicio 3, tenemos que:
(

)(

) (

)(

Considerando ejerci 4, tenemos:

69

( )

( )

( )

)(

) (

( )

Por lo tanto:
( )(

Proponiendo:

( )
( )
Si comparamos estas dos expresiones, podemos concluir que:

( )

Demostrando la primera ley de De Morgan.


( )

( )

( )

( )

( )

( )

( )

( )

Utilizando los resultados de los ejercicios 7 y 8, tenemos:


( )

( )

( )

( )

( )

( )

( )

Considerando el ejercicio 6, tenemos:


( )

( )

( )

( )
(

) (

9.- Demostrar la segunda ley de De Morgan.


Considerando el ejercicio 7, tenemos que:
( )

( )

( )

( )

Considerando el resultado del ejercicio 9, tenemos que:


( )

( )

( )

( )

Proponiendo:
(

(
)

Si comparamos estas dos expresiones, podemos concluir que:

(
)

( ).

Demostrando la segunda ley de De Morgan.

70

lgebra de Boole.
La herramienta fundamental para el anlisis y diseo de circuitos digitales es el
lgebra Booleana. Esta lgebra es un conjunto de reglas matemticas (similares en
algunos aspectos al lgebra convencional), que tienen la virtud de corresponder al
comportamiento de circuitos basados en dispositivos de conmutacin (interruptores,
relevadores, transistores, etc.).
El lgebra booleana es un sistema algebraico definido en un conjunto B, el cual
contiene dos o ms elementos y entre los cuales se definen dos operaciones
denominadas "suma u operacin OR" (+) y "producto o multiplicacin u operacin
AND" (.), es decir, la suma es la unin de conjuntos (U) y la multiplicacin es la
interseccin () de conjuntos.
Si consideramos lo anterior y adems, cambiamos por 0 y por 1, tenemos:

1. Propiedades de identidad:

AA;
A + 0 = A.
AU U;
A + 1 = 1.
AU A;
A . 1 = A.
A

2. Propiedades de idempotencia:
AA A;
AA A;

A + A = A.
A . A = A.

3. Propiedades de complemento:

AA' U;
A + A' = 1.
AA'
A' = 0.

4. Propiedades asociativas:

ABC AB C A+B+C A+B + C


ABC AB C A . B . C A . B . C

5. Propiedades conmutativas

AB B A;
AB B A;

A + B = B + A.
A . B = B . A.

6. Propiedades distributivas

AB CABAC

AB CABAC

A+B . CA+B.A +C
A.B + CA . B+A . C

71

Primera ley de De Morgan.

( )

(
)

);

( )

Segunda 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
mintrminos (la suma de productos dar 1), como se muestra a continuacin.

(
(

) (

) (
)

) (

( )

.
1.

mintrminos

En la mayor parte de los ejercicios de estos apuntes usaremos los mintrminos, es


decir, nos centraremos en los resultados que producen 1(esto se conoce como lgica
positiva).

Si recordamos el ejercicio 8 que tomamos como partida para la demostracin de la


segunda ley de De Morgan, nos permitir introducir el concepto de MAXTRMINOS (el
producto de las suma dar 0), como se muestra a continuacin.

( )

( )

( )

( )

MAXTERMINOS

72

2.2 COMPUERTAS LGICAS.


Las computadoras digitales utilizan el sistema de nmeros binarios, que tiene dos
dgitos 0 y 1. Un dgito binario se denomina un bit. La informacin est representada
en las computadoras digitales en grupos de bits. Utilizando diversas tcnicas de
codificacin los grupos de bits pueden hacerse que representen no solamente
nmeros binarios sino tambin otros smbolos discretos cualesquiera, tales como
dgitos decimales o letras de alfabeto. Utilizando arreglos binarios y diversas tcnicas
de codificacin, los dgitos binarios o grupos de bits pueden utilizarse para desarrollar
conjuntos completos de instrucciones para realizar diversos tipos de clculos.
La informacin binaria se representa en un sistema digital por cantidades fsicas
denominadas seales, Las seales elctricas tales como voltajes en el sistema digital
representan una variable binaria igual a 1 o 0. Por ejemplo, un sistema digital
particular puede emplear una seal de 3 volts para representar el binario "1" y 0.5
volts para el binario "0".

La siguiente ilustracin muestra un ejemplo de una seal binaria.

Como se muestra en la figura anterior, cada valor binario tiene una desviacin
aceptable del valor nominal. La regin intermedia entre las dos regiones permitidas se
cruza solamente durante la transicin de estado. Las terminales de entrada de un
circuito digital aceptan seales binarias dentro de las tolerancias permitidas y los
circuitos responden en las terminales de salida con seales binarias que caen dentro
de las tolerancias permitidas. La lgica binaria tiene que ver con variables binarias y
con operaciones que toman un sentido lgico. La manipulacin de informacin binaria
se hace por circuitos lgicos que se denominan compuertas.
Las compuertas son bloques del hardware que producen seales en binario 1 o 0
cuando se satisfacen los requisitos de entrada lgica. Las diversas compuertas lgicas
se encuentran comnmente en sistemas de computadoras digitales. Cada compuerta
tiene un smbolo grfico diferente y su operacin puede describirse por medio de una
funcin algebraica. Las relaciones entrada - salida de las variables binarias para cada
compuerta pueden representarse en forma tabular en una tabla de verdad.
A continuacin se detallan los nombres, smbolos, grficos, funciones algebraicas, y
tablas de verdad de las compuertas ms usadas.

73

Compuerta SI o Buffer.

Smbolo de la funcin lgica SI a) Contactos, b) Normalizado y c) No normalizado.

La compuerta lgica SI, realiza la funcin booleana igualdad. En la prctica se suele


utilizar como amplificador de corriente (buffer en ingls).

La ecuacin caracterstica que describe el comportamiento de la compuerta SI es:


F=A
Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta SI


Entrada A
Salida A
0
0
1
1

Compuerta Y (AND).

Smbolo de la funcin lgica Y a) Contactos, b) Normalizado y c) No normalizado


La compuerta lgica Y, ms conocida por su nombre en ingls AND, realiza la
funcin booleana de producto lgico. Su smbolo es un punto (), aunque se suele
omitir. As, el producto lgico 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:

Tabla de verdad de la compuerta AND


Entrada A
Entrada B
Salida AB
0
0
0
0
1
0
1
0
0
1
1
1

La ecuacin caracterstica que describe el comportamiento de la puerta AND,


considerando los unos (mintrminos) en la salida, tenemos que:
F = A.B = AB.
Se puede definir la puerta AND, como aquella compuerta que entrega un 1 lgico slo
si todas las entradas estn a nivel alto 1.

Compuerta O (OR).

Smbolo de la funcin lgica O a) Contactos, b) Normalizado y c) No normalizado.


La compuerta lgica O, ms conocida por su nombre en ingls OR, realiza la
operacin de suma lgica.
Su tabla de verdad es la siguiente:
Tabla de verdad de la compuerta OR
Entrada A
Entrada B
Salida A + B
0
0
0
0
1
1
1
0
1
1
1
1
La ecuacin caracterstica que describe el comportamiento de la puerta OR,
considerando los ceros (MAXTRMINOS) es:
F = (A + B) = A + B.

75

Si hubisemos seleccionados los unos (usando mintrminos), tendramos:

dado que A + A = A, entonces AB + AB = AB, por lo tanto

tenemos:

F = B + A = A + B, que es el resultado obtenido empleando MAXTRMINOS.


Podemos definir la compuerta OR como aquella que proporciona a su salida un 1
lgico si al menos una de sus entradas est a 1.

Compuerta O-exclusiva (XOR).

Smbolo de la funcin lgica O-exclusiva. a) Contactos, b) Normalizado y c) No


normalizado

La compuerta lgica O-exclusiva, ms conocida por su nombre en ingls XOR,


. Su smbolo es el ms (+) inscrito en un crculo.
realiza la funcin booleana
Su tabla de verdad es la siguiente:
Tabla de verdad de la compuerta XOR
Salida A
Entrada A
Entrada B
0
0
1
1

0
1
0
1

0
1
1
0

La ecuacin caracterstica que describe el comportamiento de la puerta XOR,


empleando mintrminos, es:

Su smbolo es el ms (+) inscrito en un crculo.

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 ms entradas, la XOR tomara la funcin de
suma de paridad, cuenta el nmero de unos a la entrada y si son un nmero impar,
pone un 1 a la salida, para que el nmero de unos pase a ser par. Esto es as porque
la operacin XOR es asociativa, para tres entradas escribiramos:
(
)o bien
(
)
Su tabla de verdad sera:

Entrada A
0
0
0
0
1
1
1
1

XOR de tres entradas


Entrada B
Entrada C
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1

Entrada A B C
0
1
1
0
1
0
0
1

Lgica negada.

Compuerta NO (NOT).

Smbolo de la funcin lgica NO a) Contactos, b) Normalizado y c) No normalizado


La compuerta lgica NO (NOT en ingls) realiza la funcin booleana de inversin o
negacin de una variable lgica.
Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta NOT


Entrada A
Salida
0
1

1
0

77

La ecuacin caracterstica 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.

Compuerta NO-Y (NAND).

Smbolo de la funcin lgica NO-Y. a) Contactos, b) Normalizado y c) No normalizado

La compuerta lgica NO-Y, ms conocida por su nombre en ingls NAND, realiza la


operacin de producto lgico negado.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta NAND


Entrada A
0

Entrada B
0

Salida
1

La ecuacin caracterstica que describe el comportamiento de la compuerta NAND,


empleando MAXTRMINOS (porque solo hay un cero) es:
F = ( A + B) = AB, aplicando la segunda ley de De Morgan.
Podemos definir a la compuerta NO-Y como aquella que proporciona a su salida un 0
lgico nicamente cuando todas sus entradas estn a 1.

78

Compuerta NO-O (NOR).

Smbolo de la funcin lgica NO-O. a) Contactos, b) Normalizado y c) No normalizado

La compuerta lgica NO-O, ms conocida por su nombre en ingls NOR, realiza la


operacin de suma lgica negada.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta NOR


Entrada A

Entrada B

Salida

La ecuacin caracterstica que describe el comportamiento de la compuerta NOR


(empleando mintrminos), es:

(
) aplicando la primera ley de De Morgan.

Podemos definir la compuerta NO-O como aquella que proporciona a su salida un 1


lgico slo cuando todas sus entradas estn a 0.

79

Compuerta NO O exclusiva (XNOR).

Smbolo de la funcin lgica equivalencia. a) Contactos, b) Normalizado y c) No


normalizado.

La compuerta lgica no o exclusiva, ms conocida por su nombre en ingls XNOR,


realiza la funcin booleana
. Su smbolo es un punto () inscrito en un
crculo, o tambin se representa como:.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta XNOR


Entrada A

Entrada B

Salida

La ecuacin caracterstica que describe el comportamiento de la puerta XNOR(


empleando mintrminos) es:

Se puede definir esta puerta como aquella que proporciona un 1 lgico, slo 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 despus de los temas 2.4, 2.5, 2.6 y 2.7.

80

2.3 FLIP FLOP.

Los circuitos lgicos que se han analizados anteriormente, las salidas en cualquier
momento depende exclusivamente de los valores de las entradas presentes, es decir,
a una misma combinacin 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 informacin pasada, es decir no poseen
memoria.

Un circuito cuya salida depende no solo de la combinacin de entrada, sino tambin


de la historia de las entradas anteriores se denomina Circuito Secuencial. La historia
de las entradas anteriores en un momento dado se encuentra resumida en el estado
del circuito, el cual se expresa en un conjunto de variables de estado.

El circuito secuencial debe ser capaz de mantener su estado durante algn 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
lgicas) 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
haba 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 sncronos y circuitos secuenciales asncronos.

En un circuito secuencial asncrono, los cambios de estado ocurren al ritmo natural


marcado por los retardos asociados a las compuertas lgicas utilizadas en su
implementacin, es decir, estos circuitos no usan elementos especiales de memoria,
pues se sirven de los retardos propios (tiempos de propagacin) de las compuertas
lgicas usados en ellos. Esta manera de operar puede ocasionar algunos problemas
de funcionamiento, ya que estos retardos naturales no estn bajo el control del
diseador y adems no son idnticos en cada compuerta lgica.

Los circuitos secuenciales sncronos, slo permiten un cambio de estado en los


instantes marcados por una seal de sincronismo de tipo oscilatorio denominada reloj.
Con esto se pueden evitar los problemas que tienen los circuitos asncronos
originados por cambios de estado no uniformes en todo el circuito.

81

Celda biestable o latch SR.


Una celda biestable o latch es un circuito lgico 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 informacin y funciona como sigue:
Si su entrada Set se activa su estado Q se pone en Alto.
Si su entrada Reset se activa su estado Q se pone en Bajo.
Si no se activa ni Set ni Reset su estado no cambia.
Por supuesto, no se permite activar Set y Reset simultneamente.
Diagrama de Bloques.

Aunque el biestable-SR posee dos entradas (S y R) y slo una salida (Q), es comn la
implementacin que provee adems de Q su versin complementada Q, como se
muestra en la figura siguiente.

R
qqQ
En la siguiente figura se muestra una celda biestable S-R construida con compuertas
NAND.
Q
Q

A continuacin se muestra una tabla que ilustra el funcionamiento del latch S-R.

QK (estado
presente)

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

82

QK+1
(siguiente
estado)
0
1
0
0
1
1
prohibido
prohibido

Si se considera que las entradas S y R nunca tomaran simultneamente los valores de


1, se obtiene la siguiente funcin 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.
Seales de reloj.

La mayora de los circuitos secuenciales se disean para operar de manera sincrnica,


esto es que los cambios en los entados internos de los circuitos solamente ocurren en
instantes predefinidos de tiempo, los cuales son controlados por una seal maestra de
reloj. La seal de reloj generalmente es una forma de onda cuadrada que alterna un
valor entre los niveles de voltaje correspondientes al 0 y al 1 lgico,

El estado de un circuito secuencial est formado por el conjunto de valores booleanos


almacenados internamente mediante latches. Para que un circuito secuencial opere en
forma de sincrnica es necesario usar celdas biestables que tengan una entrada de
reloj adems de las entradas S y R, en dicha entrada cada celda se alimentara de la
seal maestra de reloj, la cual sincronizara todas las celdas biestables para que
cambien al mismo tiempo. Estas celdas biestables con entrada de reloj se llaman
celdas de memoria o Flip-Flops.

Flip-Flop S-R.

Se pueden disear celdas biestables S-R con una entrada de reloj que cambien su
estado solamente cuando la seal 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 seal 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 seal 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

C
R

A continuacin se muestra su funcionamiento empleando diagramas de tiempo.

Si no se activa ninguna de las entradas, el biestable permanece en el estado que


posea tras la ltima operacin de borrado o grabado. En ningn caso deberan
activarse ambas entradas a la vez, ya que esto provoca que las salidas directas (Q) y
negada (Q) queden con el mismo valor. El problema de que ambas salidas queden al
mismo estado est en que al desactivar ambas entradas no se podr determinar el
estado en el que quedara la salida.

El Flip-Flop D (Delay Flip-Flop).


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.
La construccin de este flip-flop se basa en el flip-flop S-R, como se muestra a
continuacin.

Este circuito se puede reducir empleando una compuerta NAND en lugar de una
compuerta AND y un inversor, como se muestra a continuacin.

84

El funcionamiento de este Flip-Flop es muy simple. Cuando la seal de reloj toma el


valor de 1, el valor que est en la entrada D se almacena en su salida Q.
Por lo tanto su funcin es: Qsiguiente = D.
Su tabla de verdad es:

Presente

Qsiguiente

X=no importa

Su smbolo es:

El Flip-Flop T (Trigger Flip-Flop).


Este Flip-Flop tiene dos entradas: la de reloj (C) y la que controla su operacin (T),
como se muestra a continuacin:

85

El biestable T cambia de estado ("toggle" en ingls) 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 ecuacin caracterstica del biestable T que describe su
comportamiento es:
Qsiguiente =

Su tabla de verdad es:


T
0
0
1
1

Q
0
1
0
1

Qsiguiente
0
1
1
0

Aplicando minterminos tenemos que Qsiguiente =


Su smbolo es:
T

86

El Flip-Flop JK.
Este Flip-Flop es el ms verstil de todos ya que puede trabajar como el SR o el T.
Aadiendo bloques lgicos externos, tambin 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 seal de reloj vale 1.
Suponiendo que las entradas J y K no pueden valer 1 simultneamente, el flip-flop
operar como un SR, donde J hace las veces de la entrada S y K las veces de R. A
continuacin se muestra su configuracin.

A continuacin se muestra su funcionamiento empleando diagramas de tiempo.

Si no se activa ninguna de las entradas, el biestable permanece en el estado que


posea tras la ltima operacin de borrado o grabado. A diferencia del biestable S-R,
en el caso de activarse ambas entradas a la vez, la salida adquirir el estado contrario
al que tena.
La ecuacin caracterstica del biestable JK que describe su comportamiento es:
.
Y su tabla de verdad es:

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 fsica de 2000.
Biestable JK activo por flanco.

Smbolos normalizados: Biestables JK activo a) por flanco de subida y b) por flanco de


bajada
Junto con las entradas J y K existe una entrada C de sincronismo o de reloj cuya
misin es la de permitir el cambio de estado del biestable cuando se produce un flanco
de subida o de bajada, segn sea su diseo. Su denominacin en ingls es J-K FlipFlop Edge-Triggered. De acuerdo con la tabla de verdad, cuando las entradas J y K
estn a nivel lgico 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
basculacin (toggle en ingls).
Biestable JK Maestro-Esclavo.

Smbolos normalizados: Biestable JK Maestro-Esclavo a) activo por nivel alto y b)


activo por nivel bajo.
Aunque an puede encontrarse en algunos equipos, este tipo de biestable,
denominado en ingls J-K Flip-Flop Master-Slave, ha quedado obsoleto ya que ha sido
reemplazado por el tipo anterior.
Su funcionamiento es similar al JK activo por flanco: en el nivel alto (o bajo) se toman
los valores de las entradas J y K y en el flanco de bajada (o de subida) se refleja en la
salida.

88

2.4 CODIFICADORES.
Un codificador tiene 2n o menos lneas de entrada y n lneas de salida. Por ejemplo,
en una de las entradas se puede ingresar un dgito decimal u octal y generarse un
cdigo de salida en BCD o binario. Los codificadores se utilizan tambin para codificar
smbolos diferentes y caracteres alfabticos.
2n Entradas ------[ ]------ n salidas.

Codificador Binario.
El codificador binario tiene 2n entradas y n salidas. Slo, 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 dgitos y 3
salidas que conforman el nmero binario equivalente (A0 a A2). La siguiente figura
muestra en el diagrama de bloques del codificador.

La tabla de verdad se muestra en la tabla siguiente.

89

En la tabla de verdad, A0 tiene un 1 lgico para las columnas de entrada con subndice
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 lgicas 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.

Codificador sin prioridad.


Los circuitos codificadores pueden ser diseados con prioridad o sin ella. En los
codificadores sin prioridad con entradas activas altas, la activacin de ms de una
entrada simultneamente con valor 1, genera un cdigo errneo en la salida, de
acuerdo al nmero de entradas excitadas con el respectivo valor. La solucin ms
conveniente se logra empleando codificadores de prioridad.
Codificador con prioridad.
Los codificadores de prioridad seleccionan la entrada de mayor prioridad cuando se
presentan varias entradas activas simultneamente. En la tabla siguiente se muestra
la lgica de entrada y de salida de un codificador con 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.

Codificador Decimal BCD.


El codificador decimal a BCD posee diez entradas, correspondientes cada una a un
dgito decimal y cuatro salidas en cdigo BCD (8421). El diagrama de bloques de la
siguiente figura muestra la disposicin de entradas y salidas del decodificador.

A0

1
ENTRADA
DECIMAL

A1

SALIDA

4
5
6

BCD
A
2

7
8
9

En la siguiente tabla
decimal.

A3

se encuentra el cdigo BCD correspondiente a cada dgito

91

El bit A3 es el ms significativo del cdigo BCD y es 1 para los decimales 8 o 9. La


expresin para este bit en funcin de los dgitos decimales se escribe:
A3 = 8+9.
Por tanto las funciones siguientes corresponden a:
A2 = 4+5+6+7.
A1 = 2+3+6+7.
A0 = 1+3+5+7+9.
Ahora configurando el anlisis en un circuito combinacional, se obtiene el siguiente
circuito sin necesidad de una entrada para el bit 0.

Aplicaciones.
Los codificadores encuentran mayor aplicacin en los dispositivos de entrada y salida.
La seal de entrada es introducida de una forma comprensible para el usuario y la
"traduccin" la realiza el codificador a un cdigo comprensible para el equipo. En un
teclado, cuando se pulsa la tecla correspondiente a un dgito, esta entrada se codifica
en cdigo BCD.

92

2.5 DECODIFICADORES.

Un decodificador es un circuito lgico que tiene n entradas y 2n salidas. Para una


combinacin dada de las n entradas, solamente una salida tomar el valor de 1 y
todas las dems tomarn el valor de 0. Si se tienen n entradas para un circuito lgico,
existirn 2n combinaciones posibles de los valores de las variables independientes,
cada una de las cuales corresponder a un mintrmino de las n variables
independientes. Por consiguiente, cada mintrmino est asociado a una de las 2n
salidas. El nombre que se le da a este dispositivo es decodificador de n X 2n.

Estos dispositivos normalmente cuentan con una entrada adicional denominada


habilitadora. Cuando esta entrada vale 0, todas las salidas del decodificador son 0.
Cuando la entrada habilitadora vale 1, la salida correspondiente al mintrmino formado
por la combinacin presente en las n entradas tomar el valor de 1 y las dems
tomarn el valor de 0.

A continuacin se muestra el esquema y funcionamiento de un decodificador de 2 X 4.

Un valor x en las entradas C1 y C0, indican que puede tomar el de 1 o 0.


Las funciones lgicas para las salidas del decodificador de 2 X 4, usando mintrminos
son:

93

En la siguiente figura se muestra el circuito lgico de este decodificador.

Un tipo de decodificador muy empleado es el de siete segmentos. Este circuito


decodifica la informacin de entrada en BCD a un cdigo de siete segmentos
adecuado para que se muestre en un visualizador de siete segmentos (el diseo de
este decodificador se realizara al final del tema 2.7).

94

2.6 MULTIPLEXORES.

Los multiplexores MUX son circuitos combinacionales con varias entradas y una salida
de datos, y estn dotados de entradas de control capaces de seleccionar una, y slo
una, de las entradas de datos para permitir su transmisin desde la entrada
seleccionada a la salida que es nica.
La entrada seleccionada viene determinada por la combinacin de ceros (0) y unos
(1) lgicos en las entradas de control. La cantidad que necesitaremos ser igual a la
potencia de 2 que resulte de analizar el nmero de entradas. As, por ejemplo, a un
multiplexor de 8 entradas le correspondern 3 de control.
Podemos decir que la funcin de un multiplexor consiste en seleccionar una de entre
un nmero de lneas de entrada y transmitir el dato por un canal de informacin nico.
Por lo tanto, es equivalente a un conmutador de varias entradas y una salida.
Dentro de un multiplexor hay que destacar tres tipos de seales: los datos de entrada,
las entradas de control y la salida.
El diseo de un multiplexor se realiza de la misma manera que cualquier sistema
combinatorio desarrollado hasta ahora. Veamos, como ejemplo, el caso de un
multiplexor de cuatro entradas y una salida que tendr, segn lo dicho anteriormente,
dos entradas de control.

El valor de x en las entradas C1 y C0 indica que puede tomar el valor de 1 o 0.

95

Este dispositivo tambin 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.
La tabla de verdad para la salida S en funcin de las entradas de control ( C1 y C0) y la
entrada habilitadora (Hab.) es la siguiente:
Hab.
0
0
0
0
1
1
1
1

C1
0
0
1
1
0
0
1
1

C0
0
1
0
1
0
1
0
1

S
0
0
0
0
e0
e1
e2
e3

La funcin booleana para S es:


S = Hab.C1C0e0 + Hab.C1C0e1 + Hab.C1C0e2 + Hab.C1C0e3.

El circuito lgico para este multiplexor o selector se muestra a continuacin:

De forma semejante pueden definirse selectores de 8:1, 16:1, 32:1 y en forma general
de 2n : 1.
La principal utilizacin de este dispositivo es cuando se tienen N entradas posibles,
pero slo se desea seleccionar una de ellas (como veremos en el microcontrolador).

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 cul de las 2n
salidas de datos se conectara la entrada. A continuacin se muestra el diagrama de un
selector 1:4.

El valor de x en las entradas C1 y C0 indica que puede tomar el valor de 1 o 0.

Las funciones lgicas para las salidas del selector de 1:4 son:

97

El circuito lgico para este selector se muestra a continuacin.

De forma similar, se pueden definir selectores de 1:8, 1:16, 1:32 y en forma general,
de 1:2n.

La principal utilizacin 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 ARITMTICOS.


Un componente muy importante de la unidad central de proceso (CPU) es la unidad
aritmtica lgica (ALU). Esta unidad es un circuito combinatorio que permite realizar
las operaciones aritmticas bsicas como la suma, resta, multiplicacin y divisin, as
como operaciones lgicas simples tales como NOT, AND y OR.

Sumador bsico.

Un sumador bsico es un circuito combinatorio que tiene como entrada dos nmeros
binarios de n bits y da como salida la suma binaria de estos nmeros 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).

Semisumador o medio sumador.

Un semisumador, es un circuito que tiene como entradas dos nmeros de 1 bit y


produce como salidas la suma y el acarreo que se da entre estos 2 nmeros, como se
muestra a continuacin:

A0
B0

S0
Semisumador

C0

La tabla de verdad de este dispositivo es:

A0

B0

S0

C0

99

Las funciones de suma y acarreo empleando mintrminos son:

El circuito del semisumador se muestra a continuacin:

Sumador completo.
Un sumador completo es un circuito que tiene como entrada 3 nmeros de 1 bit y
produce como salidas la suma y el acarreo entre estos 3 nmeros, como se muestra
en la siguiente figura.

An

Sn

Bn

Cn
Sumador

Cn-1

La tabla de verdad de este dispositivo es la siguiente:

An
0
0
0
0
1
1
1
1

Bn
0
0
1
1
0
0
1
1

Cn.1
0
1
0
1
0
1
0
1

Sn
0
1
1
0
1
0
0
1

100

Cn
0
0
0
1
0
1
1
1

La funcin para la suma empleando mintrminos es:

).

(
)

)
(

La funcin para el acarreo empleando mintrminos es:

( ).

.
).

El circuito sumador se muestra a continuacin:

Para realizar un sumador de 3 bits, necesitamos un semisumador y 2 sumadores,


como se ilustra en seguida (usando bloques).

101

Restador bsico.
Un restador bsico es un circuito combinatorio que tiene como entrada dos nmeros
binarios de n bits y da como salidas la diferencia binaria de estos nmeros y un posible
prstamo.
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 prstamo 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 prstamo
(Borrown).

102

Semirestador o medio restador.


Un semirestador, es un circuito que tiene como entradas dos nmeros de 1 bit y
produce como salidas la resta y el prstamo que se da entre estos 2 nmeros, como
se muestra a continuacin:

A0

D0
Semirestador

B0

Borrow0

La tabla de verdad de este dispositivo es:

A0
0
0
1
1

B0
0
1
0
1

D0 Borrow0
0
0
1
1
1
0
0
0

Las funciones de la resta (Do) y el prstamo (Borrowo) empleando mintrminos son:

.
.

El circuito del semisumador se muestra a continuacin:

103

Restador completo.
Un restador completo es un circuito que tiene como entrada 3 nmeros de 1 bit y
produce como salidas la resta y el prstamo que se da entre estos 3 nmeros, como
se muestra en la siguiente figura.

An

Dn

Bn

Borrown
Restador

Borrown-1

La tabla de verdad de este dispositivo es la siguiente.

An
0
0
0
0
1
1
1
1

Bn
0
0
1
1
0
0
1
1

Borrown.1
0
1
0
1
0
1
0
1

Dn
0
1
1
0
1
0
0
1

Borrown
0
1
1
1
0
0
0
1

La funcin para la resta empleando mintrminos es:


)
(

).

(
).
).
.

La funcin para el prstamo usando mintrminos es:

(
()

104

).

El circuito restador se muestra a continuacin

Para realizar un restador de 3 bits, necesitamos un semirestador y 2 restadores, como


se ilustra en seguida (usando bloques).

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

Restador
.
Las diferencias
()

Dado que tendremos una misma terminal para Sn / Dn y otra para Cn / Borrown

Como se pudo observar en el semirestador y en el restador, las diferencias


encontradas se encuentran negadas.

Considere las siguientes figuras para poder tomar en cuenta estas diferencias.

106

Como se puede observar el botn adicional funcionaria como el definidor de hacer la


suma (no presionado = 0) o la resta (presionado = 1).

Considerando lo anterior, el circuito sumador restador de 3 bits, quedara as:

Este circuito presenta los resultados en binario, pero no todas las personas conocen
este sistema numrico, por lo que procederemos a disear un decodificador BCD de 7
segmentos como se cit en el apartado de los decodificadores.

107

A continuacin se muestra una tabla con los valores de entrada en binario que
deseamos mostrar en el display de 7 segmentos.
Decimal
Nmeros
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

Entradas
binario.
B C
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1

D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

en Salidas para el
de 7 segmentos
a b c d e
1 1 1 1 1
0 1 1 0 0
1 1 0 1 1
1 1 1 1 0
0 1 1 0 0
1 0 1 1 0
1 0 1 1 1
1 1 1 0 0
1 1 1 1 1
1 1 1 1 0
x x x x x
x x x x x
x x x x x
x x x x x
x x x x x
x x x x x

display
f
1
0
0
0
1
1
1
0
1
1
x
x
x
x
x
x

g
0
0
1
1
1
1
1
0
1
1
x
x
x
x
x
x

Como emplearemos un display de 7 segmentos con ctodo comn, presentaremos


unos para prender los segmentos.

Para obtener la salida debemos seleccionar los segmentos que debern prender, as
por ejemplo, el cero solo tenemos que apagar (0) el segmento g y los dems
prenderlos (1), para el numero uno se prenden b y c, y as sucesivamente hasta el
nmero 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 funcin de cada segmento utilizaremos los mintrminos, pero ahora
emplearemos un mtodo grfico, por lo que veremos mapas de Karnaugh.
Mapas de Karnaugh.
Es un diagrama en forma de matriz de cuadros, donde cada cuadro corresponde a un
mintrmino de la funcin.
Un mapa de Karnaugh provee una manera alternativa de simplificacin de circuitos
lgicos. En lugar de usar las tcnicas de simplificacin con el lgebra de Boole, t
puedes transferir los valores lgicos desde una funcin booleana o desde una tabla de
verdad a un mapa de Karnaugh. El agrupamiento de ceros y unos dentro del mapa te
ayuda a visualizar las relaciones lgicas entre las variables y conduce directamente a
una funcin booleana simplificada.
El mapa de Karnaugh es a menudo usado para simplificar los problemas lgicos con 2,
3, 4 o 5 variables.
Un mapa de Karnaugh de 2 variables es trivial pero puede ser usado para introducir el
mtodo que necesitas aprender. El mapa para una puerta OR de dos entradas es
como sigue:

Tabla de verdad de la compuerta OR


Entrada A
Entrada B
Salida A + B
0
0
0
0
1
1
1
0
1
1
1
1

B
0

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 agrupacin es conocida como
mintrminos y como expresin 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.
El grupo horizontal corresponde al valor de B = 1, y esta variable no cambia de valor,
se mantiene. En esta misma fila, en la celda de la izquierda A = 0 y en la de la derecha
A = 1, es decir la variable A cambia de valor. En otras palabras el valor de la variable A
no afecta al resultado final de la expresin booleana para estas celdas. Antes de
agruparlas, deberas haber escrito la expresin booleana para estas dos celdas como:

Despus de agruparlas esta misma expresin se reduce a:


(

De una forma similar, el grupo vertical de dos celdas podra 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:
(

De esta manera, el mapa de Karnaugh conduce a la expresin final:


A + B.
Esto no es muy emocionante, pero si se aplica el mismo mtodo a un problema de
lgica ms compleja, comenzars a entender cmo el mapa de Karnaugh conduce a
simplificar las funciones booleanas.

Mapa de Karnaugh de 3 variables.

A continuacin se muestra una tabla de verdad para un sistema de votacin por


mayora de 3 personas (ms de una persona).

La tabla de verdad se convierte en un mapa de Karnaugh como sigue:

110

A
0
0
0
0
1
1
1
1

B
0
0
1
1
0
0
1
1

C
0
1
0
1
0
1
0
1

Salida
0
0
0
1
0
1
1
1
AB

AB

00

01

11

10

C
0

1
1

1
BC

1
AC

Observa cuidadosamente las variables en la parte superior del mapa de Karnaugh.


Estas no estn escritas de forma ordenada 00, 01, 10, 11 en binario. De hecho, cada
columna difiere de la columna previa justo en un solo bit. Esto nos recuerda el cdigo
Gray y es esencial para que tu mapa de Karnaugh trabaje cuando t introduzcas los
valores de la columna en este orden.
En el mapa de Karnaugh puedes identificar 3 grupos de dos 1, como est indicado.
El grupo horizontal del lado izquierdo combina las celdas (
) y (A.B.C). Dentro de
este grupo el valor de A cambia, esto significa que esta variable, A, no afecta los
valores de las celdas. Entonces A puede ser eliminada de la expresin, 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 mintrminos (A.B.C) y ( ), la
variable que cambia es la B por lo tanto se puede eliminar y quedara (A.C).

) y (A.B.C) lo
Por ltimo, la agrupacin de 1 vertical involucra los mintrminos (
que da como resultado que cambie la variable C y es sta la que se puede eliminar
quedando: (A.B).
El resultado o expresin final simplificada es: A.B + A.C + B.C.

Con un poco de prctica, este mtodo va a ser ms rpido que la alternativa de


simplificar la expresin booleana derivada de la tabla de verdad como suma de
productos (mintrminos), que resulta ms complicada:

111

Mapa de Karnaugh de 4 variables.

Un mapa de 4 variables (A, B, C y D) contiene 24 = 16 celdas. Es importante escribir


los valores de las variables en las filas y columnas respetando el cdigo Gray.
Ejemplo.
Simplificar la expresin:

El mapa de Karnaugh de dicha expresin es:

CD
00

01

11

10

1
1

1
1

AB
00
01
11
10

1
1

AD

AC

Para dar la expresin booleana ms simple debers agrupar el mayor nmero de


trminos 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 expresin final simplificada ser:

Ahora si estamos preparados para disear el decodificador de 7 segmentos,


empleando el mtodo grfico.
Recordando nuestra tabla tenemos:

112

Entradas
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Salidas

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

1
0
1
1
0
1
1
1
1
1
x
x
x
x
x
x

1
1
1
1
1
0
0
1
1
1
x
x
x
x
x
x

1
1
0
1
1
1
1
1
1
1
x
x
x
x
x
x

1
0
1
1
0
1
1
0
1
1
x
x
x
x
x
x

1
0
1
0
0
0
1
0
1
0
x
x
x
x
x
x

1
0
0
0
1
1
1
0
1
1
x
x
x
x
x
x

0
0
1
1
1
1
1
0
1
1
x
x
x
x
x
x

113

114

115

116

117

118

119

El decodificador BCD de 7 segmentos que cumple con estas ecuaciones es:

Ahora tenemos las bases para construir los circuitos que convierten el cdigo binario
a Gray y viceversa.

120

El circuito que convierte el cdigo binario de 5 bits a Gray es:

El circuito que convierte el cdigo Gray de 5 bits a binario es:

121

2.8 ESTRUCTURA Y FUNCIONAMIENTO GENERAL DE LAS MEMORIAS.

Una caracterstica distintiva de los flip-flops es su capacidad de recordar el valor


anterior de una entrada, o lo que es lo mismo: tienen memoria.
Esta capacidad de memoria es fundamental no solo para la construccin de circuitos
secuenciales sino que tambin es la base para el almacenamiento de la informacin a
ser procesada en las computadoras en la forma en que stas estn organizadas en la
actualidad (arquitecturas de programa almacenado).
La base de la memoria es el flip-flop que es capaz, como vimos, de almacenar un bit.
Lo normal es utilizar un conjunto de bits, organizados en palabras de n bits cada una.
Cuando la memoria es de una sola palabra recibe el nombre de Registro y cuando
tiene mltiples palabras recibe la denominacin genrica de RAM.
El nombre RAM corresponde a Random Access Memory (memoria de acceso
aleatorio). En general una RAM es un arreglo de m =2M palabras de n bits cada una,
donde M es el nmero de lneas de entrada para seleccionar (direccionar) la palabra
deseada. Por lo que su capacidad estar definida como m x n.
La memoria principal de una computadora de propsito general normalmente est
formada en gran parte por circuitos de memoria RAM, y slo una pequea parte por
circuitos de memoria ROM (Read Only Memory).
La memoria de solo lectura es totalmente inalterable, sin esta memoria la maquina no
arrancara.

Memorias estticas.

Una memoria esttica puede considerarse como un conjunto de localidades en las


cuales est almacenada cierta informacin. Cada una de estas localidades se
identifica por una direccin nica.
Una memoria esttica tiene un conjunto de entradas que sirven para proporcionar la
direccin de la palabra cuya informacin 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 direccin, y una entrada de control para habilitar o deshabilitar la memoria.
Al conjunto de entradas donde se indica la direccin se le conoce como canal de
direcciones (address bus), a la entrada de control se le llama selector del circuito y al
conjunto de lneas de salida se le conoce como canal de datos (data bus).

A continuacin se ejemplifica una memoria esttica de M entradas en su canal de


direcciones y palabras de n bits. En esta memoria se tendrn 2M palabras de n bits,
cuyas direcciones estarn comprendidas de 0 a 2M- 1.

122

La principal caracterstica de las memorias estticas es que no son voltiles, 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 estticas que se construyeron son las conocidas como
memorias ROM, la informacin que est almacena en cada una de las palabras se fija
al momento de construir la memoria y ya no puede ser cambiada despus.
Lgicamente, su construccin 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.
Ejemplo. A continuacin se muestra una tabla con 4 palabras de 3 bits de informacin
cada una en la direccin especificada.
Direccin
A1
A0
0
0
0
1
1
0
1
1

Contenido
D2
D1 D0
0
1
1
0
1
0
1
0
0
1
1
1

Usando mintrminos, tenemos:

; Que asociaramos con S2 y S3 del decodificador.

; Que asociaramos con S0, S1 y S3 del decodificador.


; Que asociaramos con S0 y S3 del decodificador.

La construccin lgica de una ROM de 4 palabras de 3 bits con la informacin de la


tabla, se muestra en seguida:

123

1
El circuito presentado muestra el caso para la direccin 00 con el dato 011, pero se
puede comprobar para las restantes direcciones.
El circuito de una memoria ROM tambin puede ser construido con un decodificador y
una matriz de diodos. El diodo es un elemento analgico 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, slo que en cada una de stas puede leerse
informacin y tambin puede escribirse. Cada una de estas localidades de memoria se
identifica por una direccin nica, la cual recibe el nombre de palabra. En cada palabra
es posible leer o almacenar un nmero fijo de bits, los cuales pueden representar una
instruccin o dato.
El nmero de palabras que contiene una memoria siempre es una potencia de 2.
Adems 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 lneas 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 ingls Read / Write, se usa para indicar que la operacin de escritura se realiza
cuando en esta lnea se tiene un 0). Adems cuenta con un canal de datos el cual
normalmente es bidireccional, se comporta como un canal de entrada en la operacin
de escritura y como canal de salida en la operacin de lectura. La principal razn de

124

este canal bidireccional es reducir el nmero de conexiones externas en el circuito


integrado. La siguiente figura ejemplifica una memoria RAM de M lneas en el canal de
direcciones y de n lneas en el canal de datos.

La construccin interna de una memoria RAM de 2M palabras de n bits, consta de una


lgica de direccionamiento y de 2M x n celdas binarias (cb), en cada una de estas
celdas binarias puede almacenarse 1 bit de informacin y constituye el bloque bsico
de una memoria RAM.

Celda binaria.
Existen 2 modos de construir este bloque bsico: el esttico y el dinmico.
En las memorias RAM estticas, la celda binaria se construye esencialmente con un
latch S-R, la informacin no se pierde mientras el circuito permanece encendido.
Las celdas binarias de la memoria RAM dinmica estn construidas bsicamente por
medio de un capacitor que almacena la informacin 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
operacin de escritura de un 1 y as restaurar la carga en el capacitor. Los circuitos de
control de la RAM realizan esta operacin de escritura en forma automtica.
Incluso si la celda binaria nunca se lee, la carga almacenada tiende a desvanecerse
con el tiempo, tpicamente en pocos milisegundos. Para evitar que se pierda la
informacin, las memorias dinmicas deben ser restauradas a intervalos regulares. A
este proceso se le conoce como refresco de la memoria. Una celda se refresca
simplemente ejecutando una operacin de lectura (aunque no se necesite el dato).
Las memorias RAM dinmicas 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 direccin se realiza el refresco a una serie de direcciones (un bloque
de memoria). En la actualidad existen memorias RAM dinmicas que realizan el
refresco en forma transparente, a estas memorias se les llama RAM dinmicas

125

sincrnicas. En una computadora, el refresco de la memoria RAM se realiza mientras


la RAM est inactiva.
Al ser la celda binaria dinmica ms sencilla en su construccin, tiene circuitos
integrados con mayor capacidad y menor consumo de energa, su principal desventaja
es que stos tienen un mayor tiempo de acceso.
El funcionamiento lgico de una celda binaria esttica o dinmica es el mismo, la
siguiente figura muestra la lgica equivalente de una celda binaria.

Note que para hacer una escritura en la celda, es necesario poner en la lnea 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.
Para tener el valor de la celda en la lnea de salida, es necesario poner un 1 en la lnea
de R / y un 1 en el selector.
La siguiente figura muestra el diagrama de bloque de una celda binaria que se usara
en la construccin de una memoria RAM.

Memoria RAM de M x N.
La construccin interna de una memoria RAM de 2M palabras de N bits, bsicamente
consta de un decodificador de M x 2M y de 2M x n celdas binarias.

126

La construccin lgica de una RAM pequea 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 lneas, 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 operacin
que se desea realizar es una escritura, se pone en la lnea de R / un cero y las
celdas binarias seleccionadas guardarn los bits que se encuentran en el canal de
entrada. Para realizar una operacin de lectura, se pone la lnea 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.
El circuito de la memoria 4 x 4 incluyendo las celdas binarias y el decodificador se
muestra a continuacin:

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 smbolo 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 caracterstica que hace especial a esta
compuerta.
En la siguiente figura se muestra el circuito usado para hacer que una lnea de un
canal se comporte como lnea de entrada o como lnea de salida dependiendo de una
seal de control.

En la siguiente figura se muestra la memoria RAM de cuatro palabras de 4 bits con un


canal bidireccional.

129

La construccin lgica de una memoria con mayor capacidad, es una extensin directa
de la memoria que se ha presentado.
En la siguiente figura se exhibe el bloque de memoria que se usa para representar a
esta memoria RAM, as como el bloque de una memoria RAM de 1K palabras de 8
bits.

130

2.9 CLASIFICACIN DE LAS MEMORIAS


Los sistemas basados en microcontroladores necesitan dispositivos de memoria con
objeto de almacenar los programas y mantener los datos generados durante el
procesamiento.
Las RAM son memorias de lectura-escritura en las que los datos se pueden escribir o
leer en cualquier direccin seleccionada en cualquier secuencia. Cuando se escriben
los datos en una determinada direccin de la RAM, los datos de esa direccin
permanecen almacenados y no son borrados por la operacin de lectura. Esta
operacin no destructiva de lectura se puede entender como una copia del contenido
de una direccin, 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 alimentacin. A continuacin se muestra una
clasificacin de memorias RAM.

Las ROM mantienen los datos almacenados cuando se desconecta la alimentacin y


son, por tanto memorias no voltiles. A continuacin se muestra una clasificacin de
memorias ROM.

131

RAM esttica (SRAM)

Todas las RAM estticas se caracterizan por las celdas de memoria latch. Cuando se
aplica alimentacin continua a una celda de memoria esttica se puede mantener un
estado 1 a 0 indefinidamente. Si se retira la alimentacin, el bit de datos almacenado
se perder.

RAM dinmica (DRAM)

Las celdas de las memorias dinmicas almacenan un bit de datos en un condensador


en lugar de un latch. La ventaja de este tipo de celda es que es muy sencilla, lo que
permite construir matrices de memoria muy grandes en un chip, a un coste por bit ms
bajo que el de las memorias estticas. La desventaja es que con el condensador de
almacenamiento no puede mantenerse cargado ms que un perodo de tiempo y el
dato almacenado se pierde a no ser que su carga se refresque peridicamente.

MEMORIAS DE SLO LECTURA (ROM).


Una ROM mantiene de forma permanente o semipermanente los datos almacenados,
que pueden ser ledos de la memoria pero, o no se pueden cambiar en absoluto, o se
requiere un equipo especial para ello. Una ROM almacena datos que se utilizan
repetidamente en las aplicaciones, tales como tablas, conversiones o instrucciones

132

programadas para la inicializacin y el funcionamiento de un sistema. Las ROM


mantienen los datos almacenados cuando se desconecta la alimentacin y son, por
tanto memorias no voltiles. A continuacin se citan algunos tipos de memorias ROM.

LA ROM DE MSCARA.
Se denomina simplemente ROM, es una memoria programada de forma permanente
durante el proceso de fabricacin, para proporcionar funciones estndar de uso
extendido, tales como conversiones populares, o para proporcionar funciones
especificadas por el usuario. Una vez que se programa la memoria, est no puede
cambiarse.

MEMORIAS ROM PROGRAMABLES (PROM Y EPROM)


Las PROM son bsicamente iguales que las ROM de mscara, una vez que han sido
programadas. La diferencia consiste en que las PROM salen de fbrica sin estar
programadas y se programan para satisfacer las necesidades del usuario.

Memorias PROM.
Utilizan algn tipo de mecanismo de fundicin para almacenar bits, donde un hilo
(fusible) de memoria se funde o queda intacto para representar un 1 o un 0. El proceso
de fundicin 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 conexin elctrica y
puede almacenar una carga elctrica 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 voltiles, lo que significa que
pueden almacenarse los datos indefinidamente en ausencia de alimentacin. Estas
memorias se utilizan frecuentemente en las unidades de disco duro de baja capacidad
en las computadoras porttiles 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 ms
grandes, puede ser que se quiera una memoria con ms palabras o una que contenga
un tamao 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.
Cada memoria tiene un canal de direcciones de 10 lneas (A9A0), un canal de datos
de 8 lneas (D7D0) y 2 lneas de control (CS y R W).
Necesitamos una lnea de direccin ms significativa (A10), que determine cul de los
2 circuitos se selecciona, como se muestra en seguida.

Canal de direcciones de A9 a A0

RAM
CS

RAM

CS

R/W

1Kx8

R/W

R/W

1Kx8

A10
Canal de datos de D7 a D0

Si A10 vale cero se selecciona el circuito de la derecha. El segundo K de memoria se


encuentra en el circuito de la izquierda y se selecciona cuando vale 1.
Ahora se muestra en la siguiente figura una memoria de 1K palabras de 16 bits,
usando memorias de 1Kx8.
Canal de direcciones de A9 a A0

RAM
CS

RAM

R/W

CS

1Kx8

A10

R/W

R/W

1Kx8

D15 a D8

D0 a D7

Canal de datos de D15 a D0


En esta configuracin, los dos circuitos siempre son seleccionados cuando A10 vale
cero, y cada uno de ellos proporciona 8 lneas para formar el canal de datos de 16
lneas.
Al disear un sistema de memoria para una computadora, es necesario conocer
exactamente el tamao de la memoria que se requiere, que porcin o porciones de
sta sern RAM y ROM y con qu circuitos de memoria RAM o ROM se quiere
disear.

134

Para facilitar el diseo de un sistema de memoria se forma un mapa de direcciones de


memoria donde por medio de una tabla especfica, para cada circuito de memoria, se
establece el conjunto de direcciones de memoria que se le asignan.

Ejemplo.

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

Anlisis.

ROM= 64 K bytes de memoria - 48 K bytes de RAM = 16


Palabra = 4

bits.

1 byte = 4 bits + 4 bits = 8 bits


1K bytes
1RAM de 16K bytes =

K bytes.

= 2 palabras.
=

K palabras.

2 RAM de 16K palabras.

Reflexin

Cmo las conecta? ____En paralelo ________________________.


48K bytes de RAM = 2 memorias de 16K bytes + 2 memorias de 16Kpalabras.
1K = 2 a la 10= 1024; nmero de lneas en el canal de direcciones=_10__.
16K = 2 a la _14__=_16384___; nmero de lneas en el canal de direcciones=__14_.
1k implica de A0 a A9_ =10

lneas.

16K implica de A0 a A13__ =14 lneas


Para seleccionar dos bloques requiero __2___lneas ms.
Para seleccionar 4 bloques requiero __4___lneas ms.

Sntesis

Las direcciones de los 16K las controlo con las lneas de A0 a _A13___.
Las direcciones de los bloques con las lneas A14__ y A15___.
Las primeras direcciones corresponden a _RAM____ y las ms altas a __ROM__.
Armar el circuito considerando los canales de
_direcciones______________ y __control____________.

135

__Datos_________,

El circuito quedaria asi.

136

UNIDAD III

3.1 DIAGRAMA GENERAL DE UNA COMPUTADORA.

VON NEUMANN.

En el ao de 1903 nace en Hungra John Von Neumann, uno de los ms brillantes


matemticos de la era de la computacin. Durante la Segunda Guerra Mundial
particip como asesor en la construccin de la computadora ENIAC y ms tarde de la
UNIVAC, siendo su gran aporte el del concepto de programa almacenado o microcdigo. A l se debe la arquitectura en la que se fundamentan la mayora de los
microprocesadores y microcontroladores actuales.

Aunque las tecnologas empleadas en las computadoras digitales han cambiado


mucho desde que aparecieron los primeros modelos en los aos 40, la mayora
todava utiliza la Arquitectura de von Neumann, publicada a principios de los aos
1940 por John von Neumann, que otros autores atribuyen a John Presper Eckert y
John William Mauchly.

La arquitectura de Von Neumann describe una computadora con 4 secciones


principales: la unidad aritmtico lgica (ALU por sus siglas del ingls: Arithmetic Logic
Unit), la unidad de control, la memoria central, y los dispositivos de entrada y salida
(E/S). Estas partes estn interconectadas por canales de conductores denominados
buses:

La memoria es una secuencia de celdas de almacenamiento numeradas,


donde cada una es un bit o unidad de informacin. La instruccin es la
informacin necesaria para realizar lo que se desea con el computador. Las
celdas contienen datos que se necesitan para llevar a cabo las instrucciones,
con el computador. El nmero de celdas varan mucho de computador a
computador, y las tecnologas empleadas para la memoria han cambiado
bastante. En general, la memoria puede ser reescrita varios millones de veces
(memoria RAM); se parece ms a una pizarra que a una lpida (memoria
ROM) que slo puede ser escrita una vez.

El procesador (tambin llamado Unidad central de procesamiento o CPU)


consta de:

137

La unidad aritmtico lgica o ALU es el dispositivo diseado y construido para


llevar a cabo las operaciones elementales como las operaciones aritmticas
(suma, resta, ...), operaciones lgicas (Y, O, NO), y operaciones de
comparacin o relacionales. En esta unidad es en donde se hace todo el
trabajo computacional.

La unidad de control sigue la direccin de las posiciones en memoria que


contienen la instruccin que el computador va a realizar en ese momento;
recupera la informacin ponindola en la ALU para la operacin que debe
desarrollar. Transfiere luego el resultado a ubicaciones apropiadas en la
memoria. Una vez que ocurre lo anterior, la unidad de control va a la siguiente
instruccin (normalmente situada en la siguiente posicin, a menos que la
instruccin sea una instruccin de salto, informando al ordenador de que la
prxima instruccin estar ubicada en otra posicin de la memoria).

Los dispositivos E/S sirven a la computadora para obtener informacin del


mundo exterior y/o comunicar los resultados generados por el computador al
exterior. Hay una gama muy extensa de dispositivos E/S como teclados,
monitores, unidades de disco flexible o cmaras web.

Lo anterior se muestra en la siguiente figura.

Arquitectura Von Neumann.

138

HARVARD.

La arquitectura Harvard diseada por el seor Howard Aiken, graduado de la


Universidad de Harvard y desarrollada en 1944 durante el proyecto Mark I, tiene como
caracterstica ms importante tener los datos y las instrucciones en buses separados.
De esta manera se puede ejecutar en forma paralela una instruccin con su respectivo
dato, haciendo ms corto el tiempo de ejecucin.

El ncleo 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 slo almacena los datos y es
llamada memoria de datos. Ambos buses son totalmente independientes y pueden ser
de distintos tamaos.

A continuacin se muestra una figura con la arquitectura Harvard.

Arquitectura Harvard.

139

OTROS CONCEPTOS Y OTRAS ARQUITECTURAS.


En la bsqueda de ejecutar procesos cada vez ms rpidos, programas potentes
cargados de multiplicidad de funciones, manipulacin de grandes volmenes de
informacin, bajo consumo de energa y ocupacin de pequeos espacios, las
compaas que desarrollan microprocesadores y microcontroladores estn
permanentemente buscando nuevas arquitecturas. Es de anotar que las arquitecturas
de actualidad tienen su fundamento en la arquitectura madre, la arquitectura Von
Neumann, y en los elementos ms importantes de la arquitectura Harvard.

Conceptos de CISC y RISC.

Se hace necesario mencionar dos conceptos bastante relacionados con las


arquitecturas de actualidad, como lo son RISC y CISC, en donde:
RISC (Reduced Instruction Set Computer): Computador con juego reducido de
instrucciones. Generalmente este tipo de instrucciones son ejecutadas en un ciclo de
la mquina, utilizando modos de direccionamiento simples e instrucciones sencillas. El
concepto de segmentacin (ejecucin de varias instrucciones en el mismo ciclo de
mquina) es ms fcil aplicarlo a las instrucciones RISC debido a que stas tienen un
ancho en bits constante.
CISC (Complex Instruction Set Computer): Computador con juego complejo de
instrucciones. Un procesador cuyo ncleo est basado en el concepto CISC en su
repertorio de instrucciones, no necesita de compiladores costosos ni complejos en
mejora de sus prestaciones. El enfoque de este concepto es el desarrollo de lenguajes
de alto nivel (HLL: High Level Language). Este concepto tambin configura programas
ms cortos y de mejor aprovechamiento de la memoria. Se ha visto que algunos
algoritmos, de moderada y alta complejidad, se desarrollan mucho ms rpido en una
mquina CISC que en una RISC.
Es frecuente encontrar un sin nmero de artculos 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.
Concepto de arquitectura superescalar.

El fundamento del proceso superescalar, nacido en el ao 1987 y derivado del


procesamiento normal escalar, es el canal o cauce de instrucciones (PIPELINE) y
toma elementos del concepto RISC, pero tambin es posible implementarla sobre el
concepto CISC.
Un cauce de instrucciones consta de mltiples etapas de proceso distribuidas a lo
largo de los ciclos de mquina, en donde varias instrucciones pueden ser ejecutadas a
la vez. Si existen varios cauces de instrucciones se puede concluir que existe cierto
nivel de ejecucin en paralelo.

140

Concepto de procesadores vectoriales o paralelos.


La caracterstica ms importante de un procesador vectorial es la de contener varias
ALU con sus respectivos cauces de datos, y con el empleo de una sola unidad de
control.
El controlador encausa varias operaciones hacia las diferentes ALU, para que stas
sean ejecutadas en paralelo. Si a lo anterior se le aplica la segmentacin de
instrucciones, se obtendran mquinas con operaciones muy potentes y de
velocidades altas (ver la siguiente figura).

La tcnica vectorial de mayor actualidad es la de implementar sistemas con varios


microprocesadores en paralelo, para esto se recomienda dividir los programas en
subtareas, que se ejecutarn en paralelo.
La tcnica anterior va acompaada de una sincronizacin muy eficiente, que coordina
cada tarea (ver la siguiente figura).

141

3.2 BUSES.

Los buses son los medios que permiten establecer la comunicacin con los distintos
perifricos que podramos utilizar en conjunto con el microcontrolador (sensores,
memorias externas, puertos, etc.).

Los buses se pueden clasificar de la siguiente manera:

Clasificacin por su transmisin.

.
Bus unidireccional. Es aquel en donde la informacin va en una sola direccin.
Ejemplo: El bus de direcciones del microprocesador a las memorias.

Bus bidireccional. Los datos se mueven en ambas direcciones.


Ejemplo: El bus de datos del microprocesador y las memorias.

Bus serie. La comunicacin se efecta en ambas direcciones, pero con la diferencia


de ser bit a bit.

Bus paralelo. En este caso, los datos se transmiten a travs de varias lneas a la vez.

Clasificacin por su funcin

Bus de direcciones. Es el que emplea el microprocesador para seleccionar la


direccin de memoria o el dispositivo de I/O con el que se va a comunicar. Es del tipo
unidireccional.
Bus de datos. Es por donde el microprocesador intercambia los datos con el
elemento seleccionado por el bus de direccin. Es bidireccional.
Bus de control. Es por el que circulan las seales auxiliares de gobierno y
sincronizacin del sistema (seal de reloj, seal de reset, seales de lectura y escritura
en memoria, etc.).

Los buses seriales son ampliamente utilizados para comunicar microcontroladores con
memorias EEPROM, convertidores A/D y muchos otros perifricos. Los sistemas de
buses seriales tambin son ampliamente utilizados para implementar buses de control
dentro de equipos como televisores, equipos de msica y telfonos celulares.

142

La mayor ventaja de utilizar buses seriales es el pequeo nmero de cables


necesarios para establecer la comunicacin.

El BUS I2C

El I2C (Inter Integrated Circuits) es un bus de comunicaciones serial sncrono de dos


lneas que fue originalmente desarrollado por Philips Semiconductors (ahora nxp
semiconductors) desde los inicios de los 80. Hoy es un estndar aceptado y
respaldado por los fabricantes de dispositivos semiconductores.

El bus I2C permite la comunicacin entre mltiples dispositivos (en teora ms de


1000), todos conectados paralelamente a las dos lneas. Las transferencias de datos
siempre se realizan entre dos dispositivos a la vez y en una relacin maestro
esclavo.

La ventaja de este bus es que slo necesita de 2 lneas (clock y data) para una
comunicacin full duplex entre mltiples dispositivos. La interfaz tpicamente corre a
bajas velocidades (100kHz a 400khz). Con I2C, cada dispositivo en el bus tiene una
direccin de memoria nica. El dispositivo puede trabajar como receptor y/o transmisor
dependiendo de cmo 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 diseo de 2 cables
(SDA y SCL) y el formato del protocolo.

El dispositivo que controla la transferencia controlando el reloj es llamado maestro y el


dispositivo que es controlado por el maestro es llamado esclavo. El maestro puede
transmitir o recibir seales desde o hacia un esclavo o controlar el reloj para que dos
esclavos puedan comunicarse entre si. El bus I2C soporta ms de un maestro
conectado al mismo bus.

Para comenzar la comunicacin el dispositivo maestro (tpicamente un


microcontrolador) pone en el bus la direccin del dispositivo con el que se quiere
comunicar. Todos los dispositivos monitorean el bus para determinar si el maestro
est enviando su direccin. Solo el dispositivo con la direccin correcta puede
comunicarse con el maestro.

143

En la siguiente figura se muestra como conectar un microcontrolador como maestro y


los perifricos como esclavos, empleando este tipo de comunicacin.

Lo bueno de este bus como se aprecia en la imagen, es que requiere slo 4 pines para
hacer trabajar los perifricos:

Vcc (+5V)
GND
SDA (Serial Data). Es la lnea para la transferencia serie de los datos.
SCL (Serial Clock). Es la seal de reloj utilizada para la sincronizacin de los
datos.

Bus SPI

El bus SPI (Serial Peripheral Interface) es un sistema para la comunicacin serial que
utiliza hasta cuatro lneas (normalmente solo son necesarias tres), para recibir los datos,
para transmitir los datos, para sincronizar y (opcional) para seleccionar el dispositivo
con el que se comunica. Esto es la conexin full duplex, lo que significa que los datos se
envan y se reciben simultneamente.

La velocidad de transmisin mxima es mayor que en el sistema de conexin I2C.

Este bus es tambin del tipo maestro/esclavo. Cuando dos dispositivos se comunican,
uno ser el maestro y el otro el esclavo. El maestro maneja el reloj. Cuando se utiliza
SPI, los datos son simultneamente transmitidos y recibidos esto establece una
comunicacin full-duplex.

144

Los nombres que Motorola asign a las seales son los siguientes:

SCLK Para el reloj, el cual es siempre manejado por el dispositivo maestro.


MISO Master In Slave Out data.
MOSI Master Out Slave In data.
CS Chip Select Permite seleccionar distintos dispositivos conectados a un
mismo bus. Cada dispositivo conectado al bus necesita su propia seal CS. Por
ejemplo si se tienen 10 dispositivos conectados al mismo bus, entonces es
necesario utilizar 10 lneas de CS distintas, adems de las lneas compartidas del
reloj SCLK y las de datos MISO y MOSI.
La siguiente figura muestra la forma de establecer este tipo de comunicacin.

Bus SPI

UART (UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER) TRANSMISOR-RECEPTOR ASNCRONO UNIVERSAL

Este tipo de conexin es asncrona, lo que significa que no se utiliza una lnea especial
para transmitir la seal de reloj. En algunas aplicaciones este rasgo es crucial (por
ejemplo, en mandar datos a distancia por RF o por luz infrarroja). Puesto que se utiliza
slo una lnea de comunicacin, tanto el receptor como el transmisor reciben y envan
los datos a la misma velocidad que ha sido predefinida para mantener la
sincronizacin necesaria. Esto es una manera simple de transmitir datos, puesto que
bsicamente representa una conversin de datos de 8 bits en paralelo a serial. La
velocidad de transmisin no es alta.

145

3.3 ARQUITECTURA INTERNA DE LA UNIDAD MICROPROCESADORA.


La organizacin de una computadora digital y su arquitectura estn ntimamente
relacionadas; sin embargo, son dos conceptos diferentes que muchas veces se toman
como sinnimos.
La organizacin de una computadora digital se refiere a las unidades lgicas que la
componen (como la unidad central de proceso, la unidad de memoria, y la unidad de
entrada/salida), las funciones que realizan, su operacin y la forma en que se
relacionan y se comunican unas con otras.
La arquitectura de la computadora se enfoca en la forma de construir cada una de
estas unidades lgicas para que realicen las funciones especificadas por su
organizacin, as como la manera en que estas unidades van a comunicarse para
interactuar entre ellas.
Por ejemplo, el juego de instrucciones de mquina y los diferentes registros que tiene
el procesador se definen en la organizacin de la computadora. Los detalles de la
construccin de la unidad aritmtica/lgica y la unidad de control para que la
computadora ejecute dichas instrucciones, as como el nmero de bits utilizados para
representar los nmeros enteros, los nmeros reales y las instrucciones de mquina,
son detalles que se definen en su arquitectura.
La forma de manejar la memoria y los diferentes perifricos de la computadora,
tambin se definen en la organizacin de la computadora. Los detalles de la
construccin de la unidad de memoria y la unidad de entrada/salida se definen en la
arquitectura de la computadora.
La arquitectura de las computadoras digitales simples se clasifican en arquitecturas de
0, 1, 2 o 3 direcciones, de acuerdo con los operandos que se utilizan en las
operaciones aritmticas y lgicas. En forma general, una operacin aritmtica o lgica
puede definirse como:
Resultado = operando 1 operacin operando 2.
Donde la operacin puede ser cualquier operacin aritmtica o lgica que realice la
computadora a nivel de instruccin de mquina. Tpicamente, todas las computadoras
digitales efectan operaciones de suma, resta y operaciones lgicas. Algunas
computadoras tienen tambin operaciones de multiplicacin y divisin como parte de
su repertorio de instrucciones de mquina.
En las arquitecturas de 0 direcciones, los operandos se toman siempre de una pila y el
resultado de la operacin se deja en la pila. Por tanto, en las instrucciones aritmticas
y lgicas de estas mquinas no se especifica ninguna direccin para los operandos ni
para el resultado.
En las mquinas que tienen arquitectura de una direccin, 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 mquinas tienen solamente un
acumulador y las instrucciones aritmticas y lgicas solamente especifican la direccin
en memoria del segundo operando.
Las mquinas que tienen arquitectura de dos direcciones cuentan con instrucciones
aritmticas en las cuales se especifica de dnde se va a tomar cada uno de los dos

146

operandos de la instruccin. El resultado se deja en el lugar de donde se tom el


primer operando. Por ejemplo, en una mquina que tenga varios registros
acumuladores, se especifica como primer operando uno de estos registros
acumuladores y, como segundo operando, alguna direccin de memoria. El resultado
se deja en el acumulador de donde se toma el primer operando.
Por ltimo, en las mquinas con arquitectura de tres direcciones, se especifican tanto
el lugar de donde se tomarn los operandos como aqul donde se dejar el resultado.
Cualquiera de las direcciones corresponde a una direccin de memoria o un registro
del procesador.
INTRODUCCIN A LA ARQUITECTURA COLDFIRE V1 DE 32 BITS.
Como respuesta a la saturacin de las capacidades y desempeo de las mquinas de
8 y 16 bits, para ciertas aplicaciones, las compaas ubicadas a la vanguardia del
diseo de microcontroladores como Atmel, Freescale, Renesas, STMicroelectronics,
Oki, entre otras, estn desarrollando soluciones en 32 bits de bajo costo y muy bajo
consumo, para atraer a los diseadores.
Una de las opciones ms fuertes es la llamada Controller Continuum de Freescale.
Esta Compaa plantea la evolucin migratoria desde las mquinas de 8 bits hacia las
arquitecturas fuertes de 32 bits. Parte del proceso consista en encontrar el eslabn
perdido, y se refiere a los procesadores con arquitectura ColdFire V1.
Caractersticas generales.
Los tres principios importantes en el desarrollo de las mquinas ColdFire V1 son:
Su ncleo: De tamao reducido, la ms baja disipacin de potencia y el ms amplio
desempeo.
Perifricos y distribucin de pines: Compatibilidad total con las mquinas de 8 bits
de la familia HCS08.
Segmentacin (Pipeline): Derivada de la familia ColdFire V2, en forma
simplificada. Esta caracterstica le proporciona al ncleo un alto desempeo.
La mquina ColdFire V1 viene implementada sobre una arquitectura de
programacin llamada ISA-C, como una derivacin de las arquitecturas ISA-A e ISA-B
de mquinas superiores. La modificacin consiste en poder soportar los perifricos de
las mquinas de 8 bits y as generar la compatibilidad con la familia HCS08,
conjuntamente con la manipulacin de datos en 8 y 16 bits.
La arquitectura ISA nace junto con el diseo de la mquina M68000, que est
orientada al tratamiento de datos en 32 bits del tipo entero (integer) para lenguajes de
alto nivel, destacndose por su baja complejidad y costo. Los aportes nuevos de la
arquitectura ISAC se pueden resumir en:
Soporta tratamiento de datos tipo byte, word y long, sobre instrucciones de
movimiento y comparacin.

147

Ejemplo: La instruccin MOVE, que significa mover informacin desde una fuente
hacia un destino, puede ser ejecutada de las siguientes 3 maneras:
MOVE.B: Mover un dato tipo byte.
MOVE.W: Mover un dato tipo word.
MOVE.L: Mover un dato tipo long.
Posicionamiento de cdigo independiente.
Algunos tipos de operadores de manipulacin de bits.
La mitad de los registros de propsito general Rn, divididos en: tipo dato (Dn) y tipo
direccin (An), pasaron de ser 16 a 8. La arquitectura ISA-C utiliza desde D0 hasta D7
para los registros tipo dato y desde A0 hasta A7 para los registros tipo direccin.
La mquina ColdFire V1 tiene total compatibilidad de pines respecto de las mquinas
HCS08. En este sentido, existe un considerable sacrificio en la interfase de depuracin
respecto de las mquinas ColdFire V2 y superiores. Al existir un slo pin para la
depuracin (Interfase BDM), los procesadores ColdFire V1 presentan los siguientes
cambios:
Se pasa de una depuracin a tres pines del tipo Full Dplex, a un protocolo de un
solo pin del tipo half dplex. Este sacrificio redunda en una menor velocidad de
depuracin y una prdida del concepto de tiempo real.
La reduccin del paquete de dato de depuracin de 17 bits a 8 bits, hace que se
modifique el protocolo clsico de depuracin y se empleen tcnicas de compensacin
para las capacidades de trace y breakpoints en los eventos de depuracin. Lo
interesante del sacrificio en el mecanismo de depuracin es poder utilizar las mismas
herramientas para las mquinas de 8 bits (familia HCS08) y 32 bits (familia ColdFire
V1), logrndose la migracin al 100% de una tecnologa a otra.
Otras caractersticas generales son:
Modelo simplificado del modo supervisor, conteniendo un manejo aparte de puntero
a pila, un registro base para vectorizacin de eventos y un registro de configuracin de
la CPU.
Soporta mdulos opcionales (no vienen con la versin inicial) como las de divisin de
enteros, multiplicadoras/acumuladoras (MAC, EMAC), unidad de aceleracin
criptogrfica (CAU), entre otras.
Respuesta programable ante la ejecucin de cdigo ilegal o decodificacin de
direcciones de memoria no implementadas. Estos eventos se pueden tratar como de
excepcin o de generacin de RESET.
Hasta 50 MHz de velocidad de procesamiento del ncleo sobre una tecnologa de
0.25 micrones.

148

Con una marca de 0.85 Dhrystones, 2.1 MIPS (Millions of Instructions Per Second)
cuando se ejecuta en FLASH y 1.05 DMIPS (Dhrystone MIPS) cuando se ejecuta en
RAM.
FLASH de dos ciclos de acceso, con bajo consumo de energa. El controlador de la
FLASH permite acceso por especulacin como tcnica de reduccin de tiempos y
eficiencia en la ejecucin del programa del usuario.
RAM con un ciclo de acceso, implementada en la plataforma del procesador sobre un
bus de alta velocidad.
Controlador de interrupciones con las siguientes caractersticas:
Mapeado de los perifricos por fuera de la plataforma del mdulo esclavo. Consiste de
64 bytes localizados al final de la memoria direccionable (0x(FF)FF_FFC0
0x(FF)FF_FFFF). El modelo de programacin es accesado mediante el espacio
declarado para los perifricos. El nivel de las interrupciones es codificado y el vector
de atencin es enviado directamente al ncleo del procesador.
El controlador soporta directamente 30 interrupciones de perifricos ms 7
interrupciones por software (SWI).
Asociacin fija entre las fuentes que requieren atencin por interrupcin y el nivel de
interrupcin con su prioridad de atencin. Existen 30 interrupciones a las que se les
asignan 7 niveles de importancia y 9 prioridades por nivel. El sistema acoge al 100% la
estructura de prioridades de las mquinas de 8 bits de la familia HCS08. Es posible remapear hasta dos requerimientos de interrupcin, hacia los niveles ms altos de
interrupcin no enmascarable, asignando una prioridad.
Se asigna un nico nmero de vector por cada fuente de interrupcin, mediante la
siguiente ecuacin:
Nmero del vector en ColdFire_V1 = Nmero del vector en HCS08 + 62.
Arquitectura del ncleo.
El ncleo est formado por dos estructuras independientes de pipeline con una
interfase de bus unificada, para maximizacin del desempeo con una reduccin del
hardware del ncleo, logrndose una significativa reduccin del costo.
Las dos estructuras de segmentacin de cauce son:
IFP (Instruction Fetch Pipeline): Consiste de un cauce de dos niveles para la
prebsqueda de las instrucciones que luego son ingresadas al OEP, como se define a
continuacin.
OEP (Operand Execution Pipeline): Consiste de un cauce de dos niveles, en el
cual se decodifica la instruccin, se capturan los operandos desde el IFP y se ejecuta
la funcin asociada a la instruccin.
Ambas estructuras estn desacopladas mediante el empleo de un buffer, que opera
como una lista tipo FIFO, en donde el IFP acta como un dispensador en la pre-

149

bsqueda de las instrucciones que sern servidas al OEP, minimizando la prdida de


tiempo por paros en la espera de instrucciones.
En la pre-bsqueda realizada por el IFP, se pueden distinguir las siguientes etapas:
IAG (Instruction Address Generation): Etapa encargada de decodificar la
instruccin a ser ejecutada.
IC (Instruction fetch Cycle): Etapa de generacin de los ciclos de reloj necesarios
para la bsqueda de la instruccin.
IB: (Instruction Buffer): Etapa para el almacenamiento en la lista FIFO de las
instrucciones en espera de ejecucin.
La estructura de ejecucin OEP est implementada sobre un flujo tipo RISC (Reduced
Instruction Set Computer), soportada por un registro de archivo de lectura dual (RGF)
conectado a la unidad aritmtica y lgica (ALU). En la estructura son distinguibles las
siguientes etapas:
DSOC (Decode & Select Operand Cycle): Ciclo de decodificacin y seleccin de los
operandos.
AGEX (Address Generation Execute Cycle): Ciclo de generacin de la direccin
despus de ejecucin. Determina la direccin destino, como resultado de la operacin
ejecutada.
Con el objetivo de minimizar el costo en la fabricacin del circuito integrado, el bus de
direcciones del ncleo de las mquinas V1 ha sido reducido de 32 bits a 24 bits. De lo
anterior se deduce que la mxima capacidad direccionable por los procesadores
ColdFire V1 es de 16 MB. La siguiente Figura muestra un diagrama en bloques
resumido de la arquitectura del ncleo de la mquina ColdFire V1.

150

3.4 MODELO DE PROGRAMACIN.


Esta familia de microcontroladores de alto desempeo y bajo costo utiliza la
arquitectura ampliada con ncleo HCS08, velocidad de reloj de bus de hasta 24 MHz y
una amplia variedad de perifricos, tan til como el USB.
Compatible con las familias anteriores en 8 bits, el modelo de programacin conserva
la estructura de las primeras familias de microcontroladores de 8 bits. La siguiente
figura ilustra las componentes del modelo de programacin de las mquinas HCS08.

Acumulador (Acc, A):


Es el registro principal para operaciones matemticas, de transferencia de informacin
y operaciones lgicas. Es un registro de 8 bits de longitud sumamente usado en una
estructura Von Neumann y por lo tanto existen muchas instrucciones que lo involucran.
Registro ndice (H:X):
El registro ndice, es de 16 bits de longitud, formado por una parte "baja" (el byte de
menor peso) denominado "X" y una parte alta (el byte de mayor peso) denominado
"H". Estos registros se encuentran concatenados para formar un nico registro H:X.
Esto permite direccionamientos indexados de hasta 64 Kbytes de espacio de memoria.
Para conservar la compatibilidad con la familia HC705, en el registro ndice puede
utilizarse la parte baja ("X"), en los distintos modos de direccionamiento, de igual forma
que en esta. Solo se debe tener en cuenta que cuando en una instruccin con
direccionamiento indexado, se menciona el registro "X", en realidad se est haciendo
mencin al registro concatenado H:X de 16 bits de largo, por lo que deber ponerse a
cero (forzar el valor $00) la parte superior del registro ndice, o sea "H", para guardar
total compatibilidad con la familia HC705. De esta forma, cuando se utilice el registro
ndice, el contenido del mismo ser $00xx, donde "xx" contendr el valor del registro
"X" propiamente dicho.

151

Puntero de Pila (SP):


El puntero de pila (SP), es un registro de 16 bits que contiene la direccin del prximo
lugar en la pila (Stack). Durante un Reset, el puntero de pila, es puesto a $00FF. La
instruccin Reset Stack Pointer (RSP), asigna al byte menos significativo el valor $FF
y no afecta al byte ms significativo. Esto se hace para mantener la compatibilidad con
el modo de funcionamiento del puntero de pila de la familia HC705.
El puntero de pila es decrementado cuando un dato es almacenado (Push) dentro de
la pila e incrementado cuando un dato es recuperado (Pull) desde la pila.
La localizacin de la pila es arbitraria, y puede ser "re-ubicada" en cualquier parte de la
memoria RAM. Moviendo el puntero fuera de la pgina 0 ($0000 a $00FF) libera el
espacio del direccionamiento directo. Para una operacin correcta, el puntero de pila
debe apuntar solamente posiciones de RAM, aunque por su longitud, pueda "barrer"
todo el espacio de memoria del MCU.
Gracias a esta caracterstica, en los modos de direccionamiento con el SP (Stack
Pointer) con 8 bits de offset y 16 bits de offset, el puntero de pila (SP) puede funcionar
como un segundo registro ndice de 16 bits o bien para acceder a datos en la pila.
El uso del SP como un segundo registro ndice, es muy utilizado en los compiladores
de lenguaje de alto nivel como los compiladores "C" y otros.
Contador de Programa (PC):
Al igual que en el CPU05, el Contador de Programa (PC), es de 16 bits de longitud,
pero a diferencia de este, el PC del CPU08, no tiene bits fijos en algunas de sus
posiciones, o sea el PC puede moverse entre $0000 y $FFFF. De esta forma, el PC
puede moverse tericamente (muchos MCUs de la familia HC908, poseen memorias
de programas inferiores a los 64Kbytes) por los 64 Kbytes de espacio de memoria.
Durante el Reset, el contador de programa (PC) se carga con la direccin contenida en
el "Reset Vector" que para el MC68HC908 se encuentra en la posicin $FFFE y
$FFFF.
La direccin contenida en el vector, es la direccin de la primera instruccin a ser
ejecutada despus de salir del estado de RESET.
Registro de Cdigo de Condicin (CCR). El registro de cdigo de condicin contiene
una mscara de interrupcin y cinco indicadores de estado que reflejan el resultado de
operaciones aritmticas y de otro tipo de la CPU. En esencia, es idntico al del
CPU05, pero con el agregado de una nueva bandera, la de desborde (Overflow) o V
flag. Las cinco banderas son, Desborde (V), semi acarreo (H), mscara de interrupcin
(I), negativo (N), cero (Z) y acarreo / prstamo (C).
V - Flag overflow del Complemento a dos.
Vale 1 si una operacin aritmtica signada se ha desbordado
Utilizado en chequeos de operaciones aritmtica signadas
H - Half Carry flag.

152

Vale 1 si un carry (acarreo) ocurre desde el bit 3 al bit 4


Utilizado en operaciones aritmticas BCD
I - Global Interrupt Mask (Mascara Global de Interrupciones)
Cuando est con un valor de 1, deshabilita las interrupciones del CPU.
N Negativo.
Vale 1 si el bit 7 del Acumulador, tambin est en 1.
Z - Zero flag.
Vale 1 si todos los bits en el Acumulador son ceros.
C - Carry or Borrow flag.
Vale 1 si un carry o borrow ocurren durante una operacin.

La nomenclatura de la familia HC908 deriva de la primitiva familia de procesadores de


8 bits MC6800.
Las primeras dos letras (MC / XC / PC) califican el estado de madurez del producto
(segn las etapas de test cumplidas de los mismos). Por ejemplo un producto de
Motorola totalmente calificado llevar las letras MC.
Motorola, reserva el digito 9 para aquellos MCUs que poseen memoria de programa
FLASH, que es el caso de la familia HC908 que nos ocupa.
Las dems letras designan los sub grupos funcionales de la familia HC08.
A continuacin se muestran los mdulos que constituyen al microcontrolador.

El CPU 08 es el corazn de los MCUs de la familia HC908.

153

Dentro de la estructura interna de un HC908, el mdulo del CPU se vincula con el


resto de los mdulos del MCU por medio de un bus de datos interno de 8 bits, y un
BUS de Direcciones de 16 bits, que le permiten direccionar cdigo de hasta 64K bytes.
Este Bus es denominado IBUS (Internal Bus).
La frecuencia mxima del BUS interno es de 8 MHZ reales a 5 Volts de alimentacin y
4 MHZ a 3 Volts. Esta frecuencia de Bus implica que cada ciclo de Clock (reloj) del
Bus es de 125 nS
Recordemos que al ser el HC908 un MCU del tipo cerrado (single chip) no se tiene
acceso a los buses internos del mismo.

Veamos ahora un poco la arquitectura de ejecucin que presenta el CPU 08:

Arquitectura de Ejecucin:
El CPU 08 pertenece a la arquitectura del tipo Von Neumann clsica, caracterstica
de la familia 68xx de Motorola y ampliamente utilizada en el mundo.
En este tipo de arquitectura, existe un solo bus de datos, tanto para memoria de
programas como para memoria de datos, lo que da origen a un mapa lineal de
acceso a memoria y por consiguiente no existen instrucciones especiales y diferentes
para trabajar con datos o con cdigo de programa.
De esta forma, todas las instrucciones son aplicables en cualquier parte del mapa de
memoria sin importar si se trabaja con datos o cdigo. Por lo que no es raro encontrar

154

aplicaciones cuyos programas corren desde RAM como si estuvieran en Flash. Esto
no podra hacerlo una arquitectura Harvard clsica.
El CPU est formado por dos grandes bloques, el execution unit y el control unit.
El execution unit, contiene la Unidad Lgica y Aritmtica (encargada de todas las
operaciones lgicas binarias y aritmticas), Registros internos del CPU (Acumulador,
Puntero de pila, Contador de Programa, Registro ndice, Registro de Cdigo de
Condiciones) y la interface con el bus interno.
El control unit, contiene una mquina de estados finitos, unidades de control y tiempo
para manejar el execution unit.
A continuacin se ilustra la temporizacin interna.

El CPU08 contiene un opcode con un mecanismo de Pre-bsqueda hacia adelante.


Se hace ms eficiente la ejecucin por la remocin de tantos ciclos muertos de Bus
como sea posible.
De esta forma se obtienen instrucciones con menor nmero de ciclos de reloj,
mejorando la velocidad real de ejecucin de cdigo.
El flujo de instrucciones del CPU08 fue desarrollado para ser tan eficiente como sea
posible en una estructura del tipo pipeline.
El CPU08 necesita de un reloj de 4 fases para ejecutar un ciclo de mquina. Por ello,
en el HC908, se necesita un XTAL (Oscilador Externo) 4 veces superior a la frecuencia
de bus deseada. Por ejemplo, para trabajar con una Fbus de 8 MHz, se necesitar un
cristal de 32 MHz.
Gracias a una estructura interna del tipo pipeline en las distintas instrucciones del
CPU08 se remueven tantos ciclos de mquina como sean posibles, ya que mediante
un mecanismo de pre-bsqueda se minimizan los tiempos muertos (dead time)
tpicos de estructuras Von Neumann.

155

UNIDAD IV
4.1 MODOS DE DIRECCIONAMIENTO.

El campo de operacin de una instruccin especifica la operacin que se va a ejecutar.


Esta operacin debe realizarse sobre algunos datos almacenados en registros de
computadora o en palabras de memoria. La manera en que eligen los operandos
durante la ejecucin del programa depende del modo de direccionamiento de la
instruccin. El modo de direccionamiento especifica una regla para interpretar o
modificar el campo de direccin de la instruccin antes de que se haga la referencia
real al operando. Las computadoras utilizan tcnicas de modo de direccionamiento
para acomodar una o las dos siguientes consideraciones:

1. Proporcionar al usuario versatilidad de programacin al ofrecer facilidades


como apuntadores a memoria, contadores para control de ciclo, indexacin de
datos y reubicacin de datos.
2. Reducir la cantidad de bits en el campo de direccionamiento de la instruccin.

La disponibilidad de los modos de direccionamiento proporciona al programador con


experiencia en lenguaje ensamblador la flexibilidad para escribir programas ms
eficientes en relacin con la cantidad de instrucciones y el tiempo de ejecucin.
Para comprender los diferentes modos de direccionamiento que se presentaran en
esta seccin, es imperativo entender el ciclo de operacin bsico de la computadora.
La unidad de control de una computadora est diseada para recorrer un ciclo de
instrucciones que se divide en tres fases principales:

1. Bsqueda de la instruccin de la memoria.


2. Decodificar la instruccin.
3. Ejecutar la instruccin.

Hay un registro en la computadora llamado contador de programa o PC, que lleva un


registro de las instrucciones del programa almacenado en la memoria. PC contiene la
direccin de la siguiente instruccin que se va a ejecutar y se incrementa cada vez que
se recupera una instruccin de la memoria. La decodificacin realizada en el paso 2
determina la operacin que se va a ejecutar, el modo de direccionamiento de la
instruccin y la posicin de los operandos.
Despus la computadora ejecuta la instruccin y regresa al paso 1 para hacer la
bsqueda de la siguiente instruccin en secuencia.

156

En algunas computadoras el modo de direccionamiento de la instruccin se especifica


con un cdigo binario distinto, como se hace con el cdigo de operacin. Otras
computadoras utilizan un cdigo binario nico que representa la operacin y el modo
de la instruccin. Pueden definirse instrucciones con diversos modos de
direccionamiento y, en ocasiones, se combinan dos o ms modos de direccionamiento
en una instruccin.

El poder de cualquier computadora radica en la habilidad para acceder a memoria. Los


modos de direccionamiento de la CPU proveen esta capacidad. Los modos de
direccionamiento difieren la manera en que una instruccin obtendr el dato
requerido para su ejecucin. Debido a los diferentes modos de direccionamiento, una
instruccin puede acceder al operando en una de las diversas maneras. Cada variante
de diferente modo de direccionamiento de una instruccin debe tener un nico cdigo
de operacin de instruccin.
Aunque la mayora de los modos de direccionamiento modifican el campo de direccin
de la instruccin, hay dos modos que no necesitan el campo de direccin. Son los
modos implcito o inherente e inmediato.
A continuacin se muestran los modos de direccionamiento con un ejemplo para
comprender mejor cada uno de ellos.

157

158

159

160

161

162

163

164

165

166

167

Distribucin de la memoria.
La siguiente figura muestra la distribucin de la memoria, en los 64 KB configurables,
de las mquinas HCS08, para la familia JM.

Distribucin de los mdulos.


La siguiente Figura muestra la distribucin de los mdulos que conforman las
mquinas HCS08, para la familia JM.

168

EL CONCEPTO FLEXIS.
Freescale se ha convertido en la primera compaa que ha desarrollado mquinas de
8 bits que puedan migrar a mquinas de 32 bits, con la filosofa de hacer que los
diseos consuman la menor cantidad de energa y que el tiempo de desarrollo sea el
ms corto. Todo esto enmarcado en la estrategia llamada Controller Continuum
La estrategia Controller Continuum apunta a la migracin gradual desde los 8 bits
hasta las arquitecturas ms poderosas en ColdFire, como son las versiones de la V2
a la V4. La versin V1 puede ser llamada el eslabn perdido, que no es tan poderosa
como las versiones superiores pero permite la migracin paulatina hacia mquinas
ms complejas. Esta estrategia tambin hace atractivas las mquinas ColdFire, para
los millones de consumidores de las arquitecturas ColdFire/68K.
Las aplicaciones realizadas en esta familia pueden migrar, con unos pocos
movimientos del ratn, hacia la familia ColdFire V1 de 32 bits y viceversa. Lo
interesante de la migracin, radica en el poder de ampliacin que pueden tener los
proyectos realizados en arquitecturas de 8 bits hacia mquinas de 32 bits, por una
diferencia de costo muy reducida. En la migracin son conservados aspectos como: el
esquema de utilizacin de mdulos, el mecanismo de las interrupciones, la distribucin
de puertos, el mecanismo de reloj, los modos de operacin, entre otros.
La Tabla siguiente hace un comparativo para la segunda serie de la familia ColdFire
V1, llamada JM. El comparativo expone las principales componentes de los MCUs,
notndose la gran compatibilidad de ambas mquinas.

169

Para esta segunda serie de la familia FLEXIS, en el mapa de evolucin de las familias
ColdFire V1, se nota un gran cambio en el sentido de la riqueza y actualidad de sus
perifricos de comunicaciones. Aparecen buses tan importantes como el CAN y el
USB, que no tena la serie QE anterior.

El consumo es otro de los aspectos cruciales a la hora de migrar de tecnologas de 8 a


32 bits. En este aspecto, Freescale ha sido cuidadosa y ha sorprendido con las
mnimas diferencias de consumo entre las mquinas FLEXIS. Mientras que las
arquitecturas de 8 bits consumen en promedio 22 mA, las arquitecturas de 32 bits
consumen en promedio 60.9 mA. Estos datos son tomados en mximo desempeo y
un reloj de operacin de 48MHz.

CUIDADOS EN LA MIGRACIN.
El usuario deber tener ciertas precauciones al momento de migrar proyectos con la
tecnologa FLEXIS. Como ya se vio, las arquitecturas de los ncleos de las mquinas
son muy distintas, aunque se hayan conservado muchas de las caractersticas de los
perifricos de las MCUs.

Algunas de estas precauciones son listadas a continuacin.

Incompatibilidad de instrucciones a bajo nivel: Debido a la gran diferencia entre


sus ncleos, no es recomendable insertar como cdigo de un programa instrucciones
en lnea de lenguaje ensamblador.

Si en un programa es necesaria la inclusin de instrucciones a bajo nivel, el usuario


deber hacer la traduccin al nuevo lenguaje ensamblador. Pero en lo posible, es
recomendable eliminar el cdigo a bajo nivel y reemplazarlo por instrucciones en
C/C++. Por ejemplo:

En vez de usar la instruccin (del HCS08):


asm BSET 0, PTADD.

Mejor usar:

PTADD0 = 1;

170

Proceso de excepciones y vectorizacin de las interrupciones de perifricos:


Los vectores de atencin a las interrupciones de ambas mquinas no son
directamente compatibles, porque los nmeros de los vectores de atencin a
interrupciones no son los mismos. El usuario debe recordar la ecuacin que los
relaciona y que a continuacin se escribe.
Nmero del vector en ColdFire_V1 = Nmero del vector en HCS08 + 62.

Otra alternativa es consultar en el archivo que tiene la redefinicin, el nombre y el


nmero de la MCU que se va a utilizar (Por ejemplo: MCF51JM128.h), el cual se
localiza en el directorio Includes del proyecto. Por ejemplo, el vector de atencin a la
interrupcin del mdulo RTC en la mquina MC9S08JM60 es el 29, cuyo equivalente
en la mquina MCF51JM128 es el 91. Lo anterior se comprueba en la ecuacin:

Nmero del vector en ColdFire_V1 = 29 + 62.

La siguiente Figura explica dos maneras de hallar el vector correcto para migrar de 8
a 32 bits:

171

4.2 HERRAMIENTAS DE PROGRAMACIN.

INTRODUCCIN AL COMPILADOR CODEWARRIOR.

Definiremos brevemente los mens que componen el software CodeWarrior 6.2 y


que aparecen en el men principal segn la siguiente figura.

File: Relacionado con el manejo de los proyectos y archivos del sistema. La siguiente
figura muestra un despliegue de este men.

172

Startup Dialog: Presenta la ventana inicial, que aparece al lanzar el CodeWarrior


6.2 (ver siguiente figura.). Se emplea para configurar un proyecto inicial y puede ser
desde crear uno nuevo, cargar un ejemplo ya existente, cargar el inmediatamente
anterior, ejecutar un tutorial o comenzar desde cero.

Next Text File: Es el editor del software, utilizado para crear archivos de texto de
cualquier ndole (ver siguiente figura).

173

New Project: Usado para generar proyectos nuevos CodeWarrior. Se compone de las
ventanas:
- Device and Connection: Seleccin del MCU y el tipo de conexin para la
depuracin y programacin (ver siguiente figura).

Add Additional Files: Insercin de archivos adicionales que conformarn el cuerpo


del proyecto (C, C++, asm, h. etc.) (ver siguiente figura).

174

Processor Expert: Seleccionar la opcin del procesador experto, que facilita la


inicializacin de muchas de las funciones y perifricos de las mquinas (ver siguiente
figura).

C/C++ Options: Seleccin del nivel del cdigo a usar, de acuerdo al estndar de C, el
modelo de memoria y el formato de punto flotante. Todo lo anterior debe considerar la
mejor densidad de cdigo posible (ver siguiente figura).

175

Open: Clsico submen para abrir proyectos o archivos almacenados en memoria de


disco.
Find and Open File: Clsico submen para hallar y abrir archivos o proyectos.
Save, Save All, Save As, Save a Copy As, Revert: Serie de submens para guardar
archivos y/o proyectos. La opcin Revert, recupera la ltima versin guardada y la
sobrescribe en la presente.
(Open, Close, Save, Save As) Workspace: Serie de submens para aplicar al
ambiente de trabajo configurado.
(Import, Export) Project: Funciones para importar y exportar proyectos en el
ambiente CodeWarrior.
Page Setup: Opciones para el formato de edicin.
Print: Imprimir documento abierto.
Open Recent: Abrir los ltimos proyectos trabajados.
Exit: Salir del CodeWarrior 6.2.

Edit: Submen de edicin del CodeWarrior 6.2. Contiene las funciones normales de
un editor de textos, pero slo sern descritas las especiales del submen.
Preferences: Permite configurar preferencias generales y del editor de textos
(ver siguiente figura).

176

Build Settings: Preferencias en la construccin del proyecto.


- IDE Extras: Algunos aspectos adicionales de la apariencia del editor, como el tipo de
men, disponibilidad de mltiples documentos, entre otros.
- IDE Startup: Acciones a ejecutar cuando se abre el editor.
- Plugins Settings: Parmetros de visualizacin para los mensajes del editor.
- Shielded Folders: Bloqueo de directorios bajo ciertos smbolos.
- Source Trees: Definir los caminos para el almacenamiento de los proyectos y
archivos.
- Code Completion: Definir las reglas para autocompletar el cdigo escrito.
- Code Formating: Definir las reglas para el formato del cdigo escrito.
- Editor Settings: Configuracin general del editor de textos.
- Font and Tabs: Definir el tipo de la fuente de caracteres y el espaciamiento del
tabulador.
- Text Colors: Definir el color de la fuente de caracteres.
Standar Settings: Se utiliza para configurar los parmetros del destino sobre la accin
de encadenamiento (linker) (ver siguiente figura).

177

Target: Tipo de encadenador, caminos de acceso a los proyectos y archivos, entre


otros.

Language Settings: Configuracin sobre la norma del lenguaje (C, C++) y algunas
opciones de errores y mensajes de precaucin.

Code Generation: Eleccin del tipo de procesador, modelo de programacin, modelo


del dato y tipo de optimizacin en la compilacin del cdigo.

Linker: Configuracin sobre el des-ensamblador y el encadenador (linker).

VCS Settings: Se utiliza para configurar los parmetros de versin del cdigo y
seguridad del mismo (ver siguiente figura).

178

Customize IDE Commands: Relacionado con la configuracin de la apariencia del


editor IDE (ver siguiente figura).

View: Submen de visualizacin del CodeWarrior 6.2. Est compuesto por:


Toolbars: Barras de visualizacin de los men de herramientas del IDE.
Project Inspector: Se pueden visualizar, de manera rpida, algunos atributos del
proyecto (ver siguiente figura).

179

Destino del main.c del sistema (ver siguiente figura).

Browser Contents: Su funcin principal es la de poder visualizar informacin del tipo


de una variable:
- Class
- Constants
- Enums
- Functions
- Globals
- Macros
- Templates
- Typedefs
Ver en la siguiente figura.

180

Class Browser: Visualizacin por clases en el Browser.

Class Hierarchy: Visualizacin por jerarquas en el Browser.

Build Progress: Visualizacin del progreso en la construccin del proyecto.

Errors and Warnings: Visualizacin de errores y precauciones en la construccin del


proyecto.
View: Submen para la bsqueda, reemplazo y comparacin de informacin en un
texto que pertenezca a un texto. Para destacar de este men estn:

Compare Files: Compara contenidos de dos archivos y arroja las diferencias en un


reporte tipo texto
Apply Diferences: Actualiza el archivo destino con las diferencias encontradas en la
comparacin con el archivo fuente.
Unapply Diferences: Revierte el proceso anterior.
Project: Submen para administracin del proyecto.
Add main.c to Project: Adiciona un archivo main.c al proyecto.
Add Files: Adiciona archivos al proyecto.
Create a Group: Crea un nuevo directorio dentro del navegador del proyecto.
Create Target: Crear un nuevo destino para los archivos del proyecto.
Check Syntax: Evala la sintaxis del archivo abierto.
Preprocess: Pre-procesa el archivo abierto.
Precompile: Pre-compila el archivo abierto.
Compile: Ejecuta la compilacin de todo el proyecto.
Dissasemble: Desensambla el cdigo C/C++ a instrucciones en ensamblador y
cdigos de mquina.
Make: Compilacin completa del proyecto.
Stop Build: Interrumpe cualquier accin de compilacin.
Remove Object Code: Se usa para remover cdigo objeto binario del proyecto
activo.

181

Re-search for Files: Agiliza la construccin y otras operaciones del proyecto. El


software IDE captura la localizacin de los archivos del proyecto despus de
encontrarlos en las rutas de acceso. Esta opcin fuerza al IDE para olvidar las
localizaciones de los archivos del proyecto y reinicia su bsqueda en las rutas
sealadas.

Reset Project Entry Paths: Reinicia las rutas de archivos del proyecto.
Sincronize Modification Dates: Actualiza las fechas de modificacin de los datos
almacenados en el archivo del proyecto. El IDE verifica la fecha de modificacin de
cada archivo en el proyecto, y marca los archivos modificados, desde el ltimo proceso
de compilacin exitosa.

Debug: Lanza la opcin de depuracin, que depender del valor establecido en la


ventana del navegador del proyecto, segn indica el puntero del ratn en la siguiente
figura.

182

La ventana de simulacin se muestra en la siguiente figura:

Sus partes ms importantes son:

- Source: Programa fuente en depuracin. Muestra el cdigo tal cual se digit y que se
est ejecutando en el proceso de depuracin. Una barra azul indica la instruccin que
se va a ejecutar y su direccin debe coincidir con la direccin del registro PC. Dentro
de esta ventana, haciendo presin sobre el botn derecho del ratn, es posible
generar las siguientes acciones:
_ Set Breakpoint: Ubicar puntos de chequeo.
_ Run to Cursor: Ejecutar el programa hasta la posicin del cursor.
_ Show Breakpoints: Mostrar los puntos de chequeo activos.
_ Show Location: Mostrar la localizacin de la instruccin a ejecutar en la memoria y
en la ventana del ensamblador.
_ Set/Delete Mark Points: Ubicar/Retirar marcas de referencia visual.
_ Show Markpoints: Mostrar los puntos de referencia visual.

183

_ Set Program Counter: Cambiar el valor del PC.


_ Open Source File: Abrir un archivo fuente del proyecto.
_ Copy: Copiar.
_ Goto Line: Ir a un nmero de lnea del listado de programa.
_ Find: Buscar una secuencia de caracteres.
_ Find Procedure: Buscar un procedimiento.
_ Folding: Muestra o esconde una seccin del programa.

_ Marks: Ubica tringulos donde se pueden ubicar breakpoints.

Assembly: Muestra el cdigo ensamblado que corresponde a la instruccin en la


ventana del programa fuente (Source). Haciendo presin sobre el botn derecho del
ratn, es posible generar las siguientes acciones (se destacarn
aquellas que son nuevas al lector):
_ Display: Permite visualizar el cdigo en lenguaje ensamblador, la direccin de la
ubicacin de la instruccin en memoria de programa, los smbolos asignados a
direcciones y el cdigo de operacin de la instruccin.
_ Format: Seleccin del formato de presentacin de las cantidades numricas.
- Procedure: Muestra los procedimientos ejecutados y en ejecucin. Haciendo doble
pulsacin con el ratn, es posible cambiarse de procedimiento.
- Register: Muestra el estado de los registros internos al MCU. Tambin muestra el
nmero de ciclos de reloj consumidos durante la simulacin del programa. Haciendo
doble pulsacin sobre algn registro, es posible cambiar su valor. Haciendo presin
sobre el botn derecho del ratn, es posible generar la siguiente accin:
_ Format: Seleccin del formato de presentacin de las cantidades numricas.

- Data1, 2: Visualizacin de datos en general. Cualquier variable del sistema puede


ser visualizada y actualizada de valor haciendo doble pulsacin sobre la variable.
Haciendo presin sobre el botn derecho del ratn, es posible generar las siguientes
acciones:
_ Open Module: Llama las variables involucradas en un determinado mdulo o
proceso.
_ Add Expression: Adiciona variables a la ventana.
_ Set/Delete/Show Watchpoints: Permite establecer zonas de visualizacin de
variables, eliminarlas y mostrar cules estn activas.
_ Show Location: Muestra la ubicacin en memoria de la variable seleccionada.

184

_ Zoom In/Out: Amplifica/reduce al interior de los componentes de una determinada


variable.
_ Scope: Permite visualizar globalmente o localmente los datos del proyecto.
_ Mode: Modo de actualizacin del valor de los datos.
_ Format: seleccin del formato de presentacin de los datos.
_ Options: Permite presentar los punteros como arreglos y establecer el ancho en
caracteres de los datos.
_ Sort: Establece el orden de presentacin de los datos.

_ Refresh: Actualizacin inmediata del valor de los datos.

- Memory: Visualizacin de la memoria absoluta del sistema. Haciendo doble


pulsacin sobre el dato en memoria, es posible cambiar su valor (siempre y cuando se
pueda cambiar). Haciendo presin sobre el botn derecho del ratn, es posible
generar las siguientes acciones:
_ Word Size: Permite configurar la informacin de la memoria como byte, word o
longword.
_ Display: Visualizacin de la direccin de las celdas y el contenido en formato ASCII.
_ Fill: Se usa para llenar reas de memoria con un valor.
_ Address: Se usa para hallar una direccin especfica de memoria.
_ Copymem: Se usa para copiar un bloque de la memoria hacia otro destino.
_ Search Pattern: Se usa para hallar un patrn de valores de memoria.

- Command: Visualizacin de la de las acciones ejecutadas en la sesin de


simulacin (Debug). Haciendo presin sobre el botn derecho del ratn, es posible
generar las siguientes acciones:
_ Clear: Borra la historia de depuracin.
_ Execute File: Permite la ejecucin de un archivo como parte del proceso de
depuracin.
_ Cache Size: Permite definir el tamao del cache de depuracin.
Set Default Project: Cuando se tienen varios proyectos abiertos, esta opcin permite
darle la propiedad de proyecto por defecto a uno de ellos.
Change MCU Connection: Permite cambiar de modelo de MCU. Esta opcin es
importante cuando se va a migrar de una mquina a otra.

185

Processor Expert: Submen de la herramienta de pre-configuracin de proyectos.


Esta opcin puede generar cdigo de inicializacin y configuracin de los perifricos
de la MCU y externos; tambin puede generar algunos algoritmos de programacin.
Device Initialization: Esta herramienta permite generar cdigo de inicializacin de
los perifricos internos a la MCU, configuracin de la tabla de vectores de interrupcin
y establecer plantillas para las rutinas de atencin de interrupciones del sistema.
Window: Submen clsico para el manejo de ventanas.

Help: Submen de las ayudas. Se recomienda al lector hacer un ejercicio de


navegacin por este men.

BREVE DESCRIPCIN DE LA HERRAMIENTA.

Este sistema de desarrollo soporta los microcontroladores de Freescale: C9S08JM60


y MCF51JM128 en empaques 64LQFP, que pueden ser intercambiables bajo el
concepto FLEXIS (ver siguiente figura ).

186

Los contenidos ms importantes del sistema DEMOJM son:


Un analizador lgico de dos canales, que puede ser utilizado para la visualizacin de
datos en tiempo real sobre un PC. Se recomienda al usuario el DEMOJM para
informarse sobre esta aplicacin en el DVD-ROM incluido en el DEMOJM.
Un puerto virtual USB conectado a un puerto SCI del MCU JM. Un programa que
emula un terminal serial es suministrado en el DVD-ROM y que el usuario utilizara
como un puerto serial virtual.
Un conector asimtrico para la insercin de los MCUs (MC9S08JM60 o
MCF51JM128), llamado JM DAUGHTER CARD.
Una interfase embebida P&E MULTILINK, para la programacin y depuracin de los
programas.
Puerto SCI conectado, va puentes, a la interfase embebida P&E MULTILINK.
Interruptor ON/OFF con indicador a LED.
Conector de fuente externa entre 6Vcd y 8Vcd.
NOTA: No conectar un voltaje mayor a 8Vdc como fuente externa y verificar
bien la polaridad al conectar.
Seleccin, va puentes, del voltaje de alimentacin entre las siguientes fuentes:
Desde el MULTILINK embebido.
Desde fuente externa (ver punto anterior).
Desde el conector Mini AB.
Desde el conector a puertos I/O.
Pulsador de RESET e indicador a LED.
USB a conector Mini AB.
Mdulo CAN.
Acelermetro de tres ejes.
Ocho LEDs de usuario.
Cuatro pulsadores de usuario.
Un parlante piezo-elctrico.
Puerto IIC con pullups.
Un potencimetro de 10K

187

Algunas especificaciones del circuito son:

Dimensiones: 8.9cms x 10cms.


Alimentacin:

Cable USB: 5VCD @ 500mA mximo.

Fuente externa: 6VCD a 8VCD con positivo al centro.

La siguiente tabla muestra la ubicacin, por defecto, de los puentes:

188

La siguiente figura muestra la distribucin de pines (PINOUT) del conector MCU


PORT en el circuito impreso del DEMOJM. La mayora de los ejercicios harn
referencia de conexin sobre este conector.

189

4.3 INSTRUCCIONES.

Las instrucciones son las herramientas que permiten la comunicacin entre el


programador y el sistema basado en el microcontrolador, se tiene un lenguaje que
utiliza nemnicos (abreviaturas en ingls), y son utilizadas para generar una cadena
de sentencias que permita realizar una tarea, es decir, generar un programa a partir de
estas instrucciones y as poder realizar una accin determinada.

190

191

Movimientos de Datos:

Las instrucciones de movimientos de datos, han sido ampliadas notoriamente en la


familia HC908 en comparacin con la HC705.

El agregado de instrucciones que involucran al nuevo registro concatenado H:X de 16


bits como ser LDHX, STHX, otorgan gran flexibilidad en el manejo de tablas y rutinas
de acceso indexado, ahorrando cdigo y aumentando la velocidad de ejecucin de las
mismas.

Adems se puede apreciar que por cada tipo de instruccin, se agrega un nuevo modo
de direccionamiento, basado en el uso del Stack Pointer SP (puntero de pila) como
segundo registro ndice, lo que facilita el uso de lenguajes de alto nivel como el C y
otros.

Las instrucciones PUSH y PULL permiten resguardar y rescatar el contenido del


Acumulador (ACC) y del puntero ndice H:X en espacio de RAM, ante sub-rutinas e
interrupciones al programa (externas / internas), en forma ms rpida y transparente.
Las instrucciones MOV en sus diferentes versiones, facilitan el movimiento de datos
SIN AFECTAR LOS REGISTROS del CPU, de esta forma se consiguen operaciones
ms rpidas y algoritmos ms sencillos. Estas instrucciones son tiles en rutinas de
RX / TX en la SCI (UART) de los distintos MCUs de la familia. , o bien en movimientos
de datos de una tabla a otra.

192

193

MULTIPLICACIN Y DIVISIN:

La familia HC908 contiene instrucciones de Multiplicacin y de Divisin, a diferencia de


la familia HC705 que solo contena la Multiplicacin.

La instruccin de multiplicacin en el CPU08, es del tipo No signado (sin signo) de 8 x


8 bits. Se ejecuta en 5 ciclos de Clock versus los 11 ciclos necesarios en
HC705. En los registros A y X se cargan los valores a multiplicar, el resultado de la
operacin, se obtiene en los mismos registros A y X , en A se encontrar la parte
menos pesada del resultado , mientras que en X se encontrar la parte ms pesada
del resultado.

La instruccin Divisin es nueva para aquellos usuarios de HC705, en el CPU08 es del


tipo No signado (sin signo) de 16 / 8 bits. En el registro H se carga la parte ms
pesada del valor a dividir, en el registro A se carga la parte menos pesada de dicho
valor, mientras el divisor se carga en el registro X.
El resultado de la operacin, se carga en el registro A , mientras que el resto o
remanente se carga en el H. Si el resultado de la operacin es mayor que $ FF,
entonces se activar el flag de CARRY (C) en el CCR y el valor en el registro H
ser indeterminado.

194

195

196

Ms sobre la instruccin AIX.

AIX puede usarse:

Eficientemente en el incremento o decremento del registro H:X.


INCX / DECX solo afecta al registro X.
INCX / DECX afecta el CCR, AIX No lo afecta.
Bucles (loops) alrededor de un bloque de memoria.
Direccionamiento indexado con post incremento solo para incrementos.
Solamente disponible para instrucciones MOV y CBEQ.
La instruccin AIX permite adicionar en forma inmediata un nmero signado
(positivo o negativo) al registro ndice H:X, de esta forma pueden lograrse
manejos de tablas de manera ms eficiente, bsquedas ascendentes o
descendentes a partir de un punto, saltos discretos mayores a 1 en una
tabla, tanto positivos como negativos. La instruccin AIX no afecta el CCR
(registro de cdigo de condiciones), y permiten incrementar / decrementar los
registros H:X en forma amplia (16bits), y no reducida como las instrucciones
INCX / DECX que solo afectan al registro X.

197

198

199

200

CBEQ y DBNZ.
CBEQ combina las instrucciones CMP y BEQ.
Operaciones ms rpidas de bsqueda / acceso a tablas.
DBNZ combina las instrucciones DEC y BNE.
Loops ms rpidos y eficientes.
Con estas dos nuevas instrucciones, se consigue un manejo ms sencillo
eficiente de operaciones repetitivas como loops , bsqueda / acceso a tablas.
Se siguen conservando las instrucciones tradicionales para mantener la
compatibilidad con la familia. HC705.

A continuacin, veremos algunos ejemplos que utilizan estas instrucciones, con


notables ventajas a las instrucciones tradicionales.

201

202

203

204

4.4 EJEMPLOS DE PROGRAMAS BSICOS.

1.- Realizar un programa en ensamblador para el microcontrolador JM60 de


FREESCALE que sume los datos contenidos en las direcciones 0800 y 0801,
colocando el resultado en la direccin 0802.

LDA $0800
ADD $0801
STA $0802
SWI

2.- Realizar un programa en ensamblador para el microcontrolador JM60 de


FREESCALE que reste el dato contenido en la direcciones 0801 del contenido en la
direccin 0800, colocando el resultado en la direccin 0802.
LDA $0800
SUB $0801
STA $0802
SWI
3.- Realizar un programa en ensamblador para el microcontrolador JM60 de
FREESCALE que ejecute una multiplicacin de los datos contenidos en las
direcciones 0800 y 0801, dejando el resultado en las direcciones 0802 (parte alta) y
0803 (parte baja).
LDA $0800
LDX $0801
MUL
STX $0802
STA $0803
SWI

4.- Realizar un programa en ensamblador para el microcontrolador JM60 de


FREESCALE que ejecute una divisin, donde el dividendo se encuentra ocupando las
direcciones 0800 y 0801, y el divisor la direccin 0802. El cociente lo deber colocar
en la direccin 0803 y el residuo en la direccin 0804.

LDA $0800
PSHA
PULH
LDA $0801
LDX $0802
DIV
STA $0803
PSHH
PULA
STA $0804
SWI

205

5.- Realizar un programa en ensamblador para el microcontrolador JM60 de


FREESCALE que obtenga la raz cuadrada del nmero contenido en la direccin
0800, dejando el resultado en la direccin 0801 y el residuo en la direccin 0802

REPITE:

FIN:

CLR $0801
MOV # 1, $0803
LDA $0800
CMP $0803
BMI FIN
SUB $0803
INC $0801
INC $0803
INC $0803
STA $0802
SWI

6.- Realizar un programa en ensamblador para el microcontrolador JM60 de


FREESCALE que analice si un nmero es par o impar, el cual se encuentra en la
direccin 0800. El resultado se dejara en la direccin 0801 (1 indica impar y cero
indica par):
LDA $0800
AND #1
STA $0801
SWI

7.- Realizar un programa en ensamblador para el microcontrolador JM60 de


FREESCALE que genere los N primeros trminos de la serie Fibonacci, el nmero
solicitado de trminos se encuentra en la direccin 0800 y la serie se deber dejar a
partir de la direccin 08004:

LDHX #$0804
MOV #1, $0801
MOV #1, $0802
REPITE: LDA $0800
BEQ FIN
LDA $0801
STA 0, X
ADD $0802
MOV $0802, $0801
STA $0802
INX
DEC $0800
BRA REPITE
FIN:
SWI

206

8.- Realizar un programa en ensamblador para el rmicrocontrolador JM60 de


FREESCALE que ordene en forma descendente los N trminos de un vector que
empieza en la direccin 080A, el nmero de trminos del vector se encuentra en la
direccin 0800.

LDHX #$080A
STX $0801
LDA $0800
DECA
ADD $0801
STA $0802
OTRO2: LDA $0801
CMP $0802
BEQ FIN
LDA 0, X
OTRO1: INCX
CMP 0, X
BLT CAMBIA
VAGO: PSHA
TXA
CMP $0802
BEQ REPITE
PULA
BRA OTRO1
CAMBIA:STA $0804
LDA 0, X
STA $0805
LDA $0804
STA 0, X
LDA $0805
BRA VAGO
REPITE: LDX $0801
PULA
STA 0, X
INCX
STX $0801
BRA OTRO2
FIN: SWI

9.- Realizar un programa en ensamblador para el rmicrocontrolador JM60 de


FREESCALE que encienda y apague un LED que esta conectado en la terminal 3 del
puerto C (PTCD).

BSET 3, PTCDD; pin PTCD como salida.


BSET 3, PTCD; enciende led que esta en el pin 3.
BCLR 3, PTCD; apaga led que esta en el pin 3.
SWI

207

10.- Realizar un programa en lenguaje C para el rmicrocontrolador JM60 de


FREESCALE que encienda y apague un LED que esta conectado en la terminal 3 del
puerto C (PTCD).

#include <hidef.h> /* for EnableInterrupts macro */


#include "derivative.h" /* include peripheral declarations */

void main(void) {
EnableInterrupts; /* enable interrupts */

/* include your code here */


PTCDD_PTCDD3=1; Programar pin 3 del Puerto PTCD como salida.

for(;;) {
PTCD_PTCD3=1;

Dato a mostrar

PTCD_PTCD3=0; Cambiar dato

__RESET_WATCHDOG(); /* feeds the dog */


} /* loop forever */
/* please make sure that you never leave main */
}

Observe las diferencias entre ensamblador :


BSET 3, PTCDD; Programar pin 3 del Puerto PTCD como salida.
BSET 3, PTCD; enciende led que esta en el pin 3.
BCLR 3, PTCD; apaga led que esta en el pin 3.

Y lenguaje C:

PTCDD_PTCDD3=1; Programar pin 3 del Puerto PTCD como salida.


PTCD_PTCD3=1; enciende led que esta en el pin 3.
PTCD_PTCD3=0; apaga led que esta en el pin 3.

208

UNIDAD V
5.1 Puertos Digitales.
La mquina MCF51JM128 contiene 66 pines I/O en la versin de 80 pines, distribuidos
en 9 puertos (A, B, C, D, E, F, G, H, J) o 56 pines I/O en la versin de 64 pines.
Adicionalmente, los puertos C y E tienen control pin a pin, de tal manera que se
pueden forzar a 1 (SET), a 0 (RESET) o complementar su valor (TOGGLE).
La mayora de los pines cumplen una doble funcin y algunos una triple funcin, por
ejemplo: el pin PTD3 trabaja como pin de propsito general (I/O) o como una entrada
de la funcin KBI (KBIP3) o como una entrada del conversor anlogo a digital ADC
(ADP10).
Por defecto, cuando la mquina ha salido del estado de RESET, los pines son
configurados como entradas (alta impedancia). Lo anterior se debe a la seguridad que
brinda el establecimiento de un pin como entrada, en vez de salida. Si un pin es
inicializado como salida, se corre el riesgo de aplicarle al pin una diferencia de
potencial e incurrir en daos del MCU.
NOTA: Todos aquellos pines que no se utilicen en un proyecto debern ser definidos a
algn estado, siempre y cuando conserven su direccin como entrada. Lo anterior es
debido a la exposicin del sistema ante seales espurias o ruido EMI y/o a consumos
extras por pines flotantes.

La siguiente figura muestra un diagrama simplificado de la composicin de un pin de


un puerto.

209

Todo puerto est compuesto por un registro que configura la direccin de cada pin
asociado a este. Los registros PTxDD contienen los bits PTxDDn, que habilitan la
direccin de un pin.
Al registro que establece el valor lgico del pin, sea como entrada o salida, se le
conoce como el PTxD y los bits PTxDn contienen dicho valor.
NOTA: Es recomendable establecer primero el valor lgico del bit (o de los bits), antes
de resolver la direccin de este (o estos). Ejemplo:
PTAD = 0x00; //salidas del puerto A en 0
PTADD = 0xF0; //define el nibble de mayor peso del puerto A
//como salida
Registros asociados a los puertos I/O: Las funciones bsicas, que se pueden
definir alrededor de un puerto I/O, son soportadas por los siguientes registros:
Registro de datos (PTxD): La siguiente figura muestra la configuracin general de un
registro de datos de un puerto x.

PTxDn: Establece el estado de cada pin I/O del correspondiente puerto. Al salir del
estado de RESET, los pines son configurados como entradas en alta impedancia
(pullups deshabilitados). Los pines de salida se actualizan al valor de este registro, una
vez se haya definido su direccin.
La siguiente figura muestra la disposicin de este registro para todos los puertos de la
mquina.

210

Registro de direccin de pin (PTxDD): La siguiente figura muestra la configuracin


general de un registro de direccin de pines de un puerto x.

PTxDDn: Establece la direccin de cada pin I/O del correspondiente puerto.


0: El pin es definido como entrada (valor por defecto)
1: El pin es definido como salida
La siguiente Figura muestra la disposicin de este registro para todos los puertos de la
mquina.

Registro de habilitacin de pullups31 (PTxPE): La siguiente figura muestra la


configuracin general de un registro de habilitacin de pullups para los pines de
entrada de un puerto x.

PTxPEn: Establece una resistencia de pullup en el pin de entrada indicado.


0: El pullup interno para este pin es deshabilitado (valor por defecto).
1: El pullup interno para este pin es habilitado.

211

La siguiente figura muestra la disposicin de este registro para todos los puertos de la
mquina.
NOTA: Los pullups son tpicamente de 45K

Registro de habilitacin del slew rate (PTxSE): La siguiente figura muestra la


configuracin general de un registro de habilitacin del slew rate para los pines de
salida de un puerto x.

PTxSEn: Limita la razn de ascenso de la seal elctrica de un pin de salida. El efecto


es blindar el pin contra fenmenos del tipo EMI (ElectroMagnetic Interferences).
0: El slew rate interno para este pin es deshabilitado.
1: El slew rate interno para este pin es habilitado (valor por defecto).
La siguiente figura muestra la disposicin de este registro para todos los puertos de la
mquina.

212

Registro de habilitacin del drive strength (PTxDS): La siguiente figura muestra la


configuracin general de un registro de habilitacin del drive strength para los pines de
salida de un puerto x.

PTxDSn: Habilita el drenaje o suministro de altas corrientes para un pin de salida. El


efecto sobre la EMC (ElectroMagnetic Compliance, contrario a la EMI) es negativo y se
debe ser cuidadoso en su manejo.
0: Selecciona una baja capacidad de manejo de corriente a la salida (valor por
defecto).
1: Selecciona una alta capacidad de manejo de corriente a la salida
La siguiente figura muestra la disposicin de este registro para todos los puertos de la
mquina.

NOTA: La mxima corriente que entrega la MCU desde los puertos, sumadas todas
las corrientes parciales por cada pin de salida, es de 100mA @ 5V (60mA @ 3V). El
usuario deber tener este factor en cuenta, cuando est utilizando la propiedad del
drive strength.
Registro de habilitacin de un filtro a la entrada (PTxIFE): La siguiente figura
muestra la configuracin general de un registro de habilitacin de un filtro pasa bajos a
un pin de entrada al MCU.

213

PTxIFEn: Habilita la aplicacin de un filtro pasa bajos a un pin configurado como


entrada.
0: No hay un filtro pasabajos conectado a la entrada
1: Hay un filtro pasabajos conectado a la entrada (valor por defecto)
La siguiente figura muestra la disposicin de este registro para todos los puertos de la
mquina.

El primer programa en lenguaje C es desarrollado sobre el microcontrolador de 8 bits


MC9S08JM60.
Para el ejercicio es importante verificar que la JM DAUGHTER CARD corresponda con
la mquina de 8 bits MC9S08JM60.
El sistema enciende y apaga un LED conectado al pin PTE7 del DEMOJM.
Este ejemplo es realizado con la menor complejidad posible, con el objetivo de que el
estudiante se vaya adaptando a la filosofa de programacin que emplearemos en
estos apuntes.
Se pretende ilustrar al estudiante sobre la creacin de un primer proyecto y no se
profundiza sobre las tcnicas de desarrollo de programas en C para sistemas
embebidos con microcontroladores.
/* Archivos de cabecera */
#include <hidef.h> // macro para habilitar interrupciones
#include "derivative.h" // declaracin de perifricos
/* Macros y definiciones */
#define Disable_COP () SOPT1 &= 0x3F //deshabilita el COP
#define Led1_On () PTDD_PTDD2 = 0; PTDDD_PTDDD2 = 1 //macro para
encendido del LED PTD2
#define Led1_Off () PTDD_PTDD2 = 1; PTDDD_PTDDD2 = 1 //macro para apagado
del LED PTD2
/* Funcin Delay (): Retarda basado en una variable tipo entera*/
void Delay (void) {
unsigned int i;
i= 30000; //inicializa contador i en 30000
while (i > 0) { //llego a cero?

214

i--; //no --> decrementa


}
}
/* main(): Funcion principal*/
void main(void) {
MCGC1=0x04; //Reloj en modo FEI y divisor por 1
MCGC2=0x00;
Disable_COP (); //deshabilita el COP
EnableInterrupts; //habilita interrupciones
for (;;) {//iteracin infinita
Led1_On (); //enciende el Led1
Delay (); //llama funcin de retardo: Delay
Led1_Off (); //apaga el Led1
Delay (); //llama funcin de retardo: Delay
} /* es necesario asegurarse de nunca abandonar el main */
}
Para proceder a la depuracin es necesario establecer la conexin como se muestra
en la siguiente figura. El PC deber instalar automticamente el hardware del
DEMOJM y una vez reconocido seguir los pasos que se detallan a continuacin:

Paso 1: En el men principal del CodeWarrior 6.2 hacer la seleccin de la opcin


P&E Multilink/Cyclone Pro, que se encuentra en la ventana de navegacin del
proyecto.
Paso 2: Presionar el botn
(depurador), de esta manera el programa entrar al
depurador y la ventana de la siguiente figura mostrar la configuracin de la conexin
establecida.

215

Paso 3: Presionar el botn Connect (Reset) para establecer la conexin con el


depurador. La siguiente figura muestra una segunda ventana como ingreso al
depurador. Esta ventana indica que se va a borrar la FLASH del microcontrolador y
ante esto se debe elegir la opcin Yes.

216

Paso 4: A esta altura, la ventana del depurador deber estar presente. Con el botn
derecho del ratn, sobre la ventana Assembly del depurador, elegir la opcin: Display
> Simbolic
Observe que la primera instruccin en C a ser ejecutada es Disable_COP();, que
equivale a las instrucciones en assembler:
LDHX #SOPT1.Byte
LDA ,X
AND #0x3F
STA ,X
Sea que se ejecute en pasos de assembler o saltndose la instruccin en C, sera
interesante observar la accin de la funcin Disable_COP() sobre la direccin de
memoria 0x1802 (SOPT1). Para lo anterior se debe hacer presin sobre el botn
derecho del ratn en la ventana Memory, elegir la opcin Address y digitar el

valor que se indica en la siguiente figura .

En la siguiente figura se puede observar que la celda de memoria 1802 cambiar su


valor de 0xD3 a 0x13, con lo que se verifica la inhibicin de la accin del COP.

Paso 5: De igual manera se puede verificar la accin del macro EnableInterrupts().


Avanzar hasta la funcin Led1_On() y verificar el encendido del LED PTD2 en la board
DEMOJM.
Paso 6: Para la funcin Delay(), se recomienda ejecutarla paso a paso y verificar el
estado de la variable de control del retardo i. El estado de esta variable se puede

217

visualizar en la ventana Data: 2 y comprobar su decremento a medida que se ejecutan


pasos de simulacin. El usuario puede cambiar el estado de i, para acelerar el proceso
de la simulacin, haciendo doble pulsacin con el ratn sobre esta (ver siguiente figura
).

Comprobar la activacin y desactivacin retardada del LED ejecutando las funciones


Led1_On (), Delay() y Led1_Off().
Bajar el programa al DEMOJM: En este momento, el programa ya se encuentra
almacenado en la FLASH del sistema y est listo para ser ejecutado.
Paso 7: Poner en RUN el sistema, pulsando el cono y verificar la activacin y
desactivacin intermitente del LED, a una frecuencia aproximada de 12Hz, reportando
un reloj de bus interno de aproximadamente 16 MHz. Si el usuario desea, podra salir
de la ventana del depurador y verificar que el sistema qued programado y listo para
funcionar desde RESET.
Migrar el proyecto a 32 bits: Los siguientes pasos deben seguirse para migrar el
proyecto de un microcontrolador a otro, pero el alumno deber tener en cuenta las
consideraciones expuestas antes.
Paso 1: Seleccionar el men: Project/Change MCU/Connection y en la siguiente
ventana aparecer (ver siguiente figura ).

218

Paso 2: Seleccionar el microcontrolador a migrar MCF51JM128 como se indica en la


siguiente figura.

Paso 3: Compilar nuevamente el proyecto con la opcin: make cuyo icono es

Paso 4: Cambiar la JM DAUGHTER CARD por la mquina MCF51JM128, teniendo la


precaucin de retirar la alimentacin de la DEMOJM.
Paso 5: Energizar la DEMOJM y proceder a bajar el programa como se explic en los
pasos anteriores.
Se puede observar una frecuencia de apagado/encendido del LED mayor a la obtenida
con la mquina de 8 bits MC9S08JM60.
NOTA: Con la elaboracin de este ejercicio el alumno se puede dar cuenta de la
potencia de la mquina de 32 bits (MCF51JM128) sobre una mquina de 8 bits
(MC9S08JM60), aun trabajando a la mitad de la velocidad del bus interno.

219

5.2 ADQUISICIN DE SEALES ANALGICAS.


Breve repaso de la conversin analgica a digital.
Antes de comenzar el estudio del mdulo ADC de la mquina MCF51JM128, se har
un pequeo repaso sobre los conceptos relacionados con la conversin analgica a
digital de una seal.
Las mquinas, como los microcontroladores, tratan de medir y/o convertir las variables
analgicas que el hombre manipula y entiende, pero el proceso de convertir introduce
una inevitable prdida de informacin. Esta prdida es inherente al proceso de
discretizar las seales analgicas y continuas, que finalmente sern llevadas a
cantidades binarias.
La siguiente figura representa una seal analgica continua entre los puntos t0 y t1,
que desde el punto de vista de la magnitud ser sometida a un nmero discreto de
valores binarios y que la cantidad de valores se conoce con el nombre de Resolucin
del sistema.

La Resolucin de un convertidor analgico a digital es la cantidad de valores,


discretos, en los cuales se interpreta la seal a digitalizar. Por ejemplo, para un
procesador con un conversor A/D que tiene una resolucin de 12 bits el nmero de
valores discretos en los cuales se puede valorar a una seal, sera de 2 12 = 4096. El
valor ideal para esos valores sera un nmero infinito, pero tecnolgicamente es
imposible.
Esos valores deben estar comprendidos dentro de dos lmites, que forman la ventana
de conversin o valores de referencia (Vmin, VMax). Para la figura anterior, el punto P
tiene una interpretacin en el mundo de lo discreto y es de Vx.
Se recomienda que el alumno aproveche al mximo la resolucin del sistema,
adecuando la seal analgica para que se desplace de la manera ms completa en la
ventana de conversin. Por ejemplo, una seal con un valor mximo de 100mV deber
ser amplificada por un factor de 30, para una ventana de conversin de 3V y de sta
manera aprovechar la resolucin del sistema.
Para calcular el paso mnimo de conversin y por lo tanto conocer el intervalo de
prdida de informacin, supngase que se tiene una seal sometida a un conversor de

220

12 bits de resolucin, un Vmin = 0V y un Max = 5V. El paso mnimo de conversin est


dado por:
Paso mnimo = (VMax - Vmin) / Resolucin
Paso mnimo = (5V 0V) / 212
Paso mnimo = 1.22mV
El clculo anterior indica que la diferencia en magnitud entre el resultado de una
conversin y la inmediatamente superior (o inferior) es de 1.22mV. Todo valor que no
sea mltiplo entero de un paso mnimo, se deber aproximar al valor ms cercano y es
aqu donde un conversor A/D ignora informacin del mundo analgico.
El Muestreo (sample) es otra caracterstica importante de un conversor A/D y se
refiere a la cantidad de muestras en la unidad de tiempo que se pueden procesar y
convertir a cantidades discretas.
La siguiente figura presenta una seal analgica continua entre los puntos t0 y t1, que
desde el punto de vista del muestreo es sometida a un nmero finito de muestras y
que cada muestra es tomada a un intervalo constante T, llamado perodo de muestreo.

Al igual que en la resolucin, el muestreo introduce prdida de informacin, debido a


los valores que no son muestreados entre dos intervalos de muestreo contiguos.
Idealmente la razn de muestreo debera ser infinita, pero existen restricciones
tecnolgicas. Entonces, mientras menor sea la separacin entre los intervalos ms fiel
ser la seal digitalizada con respecto a la seal analgica original.
Breve descripcin del mdulo ADC y diagrama en bloques.
Algunas de las caractersticas ms importantes del mdulo ADC son:
Tcnica de conversin por aproximaciones sucesivas hasta 12 bits de resolucin.
Hasta 28 entradas analgicas.
Conversin programable para 8, 10 y 12 bits, justificada a la derecha y no signada.
Modo de conversin simple y continua.

221

Tiempo de conversin programable y modo de reduccin de consumo.


Evento de finalizacin de una conversin y generacin de evento de interrupcin al
finalizar la conversin.
Hasta cuatro fuentes de reloj de conversin.
Operacin en modo WAIT y STOP 3, para reduccin de ruido.
Posibilidad de seleccin de reloj asincrnico, para operacin en bajo ruido.
Posibilidad de elegir una seal de disparo por hardware (trigger), para iniciar
conversin.
Comparacin del valor convertido contra un valor programado, mayor que, igual que o
menor que.

La siguiente figura muestra el diagrama en bloques del mdulo ADC, en donde el


circuito (A) corresponde al sistema de reloj del ADC. Este circuito tiene la posibilidad
de seleccionar cuatro fuentes, como: Reloj asncrono (ADACK), reloj del BUS, reloj del
BUS dividido por dos y un reloj alterno (ALTCLK).

222

El circuito (B) corresponde a los registros de configuracin y control del ADC. El


circuito (C) sincroniza toda la operacin de conversin, actuando como una gran
mquina de estados. El circuito (D) multiplexa las diferentes entradas analgicas
(canales A/D) que puede atender el sistema ADC y establece la ventana de
conversin.
El circuito (E) es el corazn del mdulo ADC y corresponde al SAR (Succesive
Aproximation Register) de la conversin. El circuito (F) configura la lgica de
interrupcin del mdulo ADC y finalmente, el circuito (G) establece las componentes
para la comparacin del valor convertido contra un valor programado.
Registros asociados al mdulo ADC.
Registro de estado y control 1 (ADCSC1): La siguiente figura muestra la
configuracin del registro de estado y control 1 de mdulo ADC. El evento de escribir
en este registro hace que se aborte una conversin en proceso, inicializando una
nueva.

- COCO: Bandera de conversin completa. Cuando COCO es 1 y AIEN = 1,


entonces se genera un evento de interrupcin.
0: No se ha completado una conversin
1: Se ha completado una conversin
- AIEN: Bit para habilitar un evento de interrupcin por la finalizacin de una
conversin analgica a digital.
0: Inhibe evento de interrupcin por conversin completa
1: Habilita evento de interrupcin por conversin completa
- ADCO: Bit para seleccionar el modo de conversin.
0: Habilita conversin simple. Una sola conversin es iniciada cuando se escribe sobre
el registro ADCSC1 o cuando se trabaja con seal de disparo externa (external
trigger).
1: Habilita conversin continua. La conversin es iniciada cuando se escribe sobre el
registro ADCSC1 o cuando se trabaja con seal de disparo externa (external trigger).
ADCH: Bits para seleccionar el canal a convertir (multiplexor). En la siguiente tabla se
detalla la combinacin de bits segn el canal.

223

Registro de estado y control 2 (ADCSC2): La siguiente figura


configuracin del registro de estado y control 2 de mdulo ADC.

muestra la

- ADACT: Bit que indica cuando una conversin est en progreso. Este bit es puesto a
0 una vez se haya finalizado la conversin o se aborte el proceso.
0: No hay conversin en proceso.
1: Hay una conversin en proceso.
- ADTRG: Bit para seleccionar el tipo de seal que inicia una conversin. Cuando se
elige una conversin por hardware, el pin ADCHWT inicializa una conversin (esta
opcin viene implementada en ciertos modelos del MCF51JM128). Cuando se elige la
conversin por software, la simple escritura sobre el registro ADCSC1 inicializa una
conversin).
0: Disparo de conversin por software.
1: Disparo de conversin por hardware.
- ACFE: Bit para habilitar la funcin de comparacin del mdulo ADC.
0: Deshabilita modo de comparacin.
1: Habilita modo de comparacin.
- ACFGT: Bit para habilitar la comparacin si mayor que.
0: Funcin de comparacin si menor que.
1: Funcin de comparacin si mayor que.

224

Registro del resultado alto de la conversin (ADCRH): La siguiente figura muestra


el registro del resultado alto de la conversin A/D, que contiene el nibble de mayor
peso en una conversin de 12 y 10 bits.

Registro del resultado bajo de la conversin (ADCRL): La siguiente figura muestra


el registro del resultado bajo de la conversin A/D, que contiene el byte de menor peso
en una conversin de 12 y 10 bits; y contiene los ocho bits de una conversin en 8
bits.

Registro alto de comparacin (ADCCVH): La siguiente figura muestra el registro alto


de la comparacin del A/D, que contiene el nibble de mayor peso en una comparacin
de 12 y 10 bits. El valor de este registro se compara con el registro ADCRH.

Registro bajo de comparacin (ADCCVL): La siguiente figura muestra el registro


bajo de la comparacin del A/D, que contiene el byte de menor peso en una
conversin de 12 y 10 bits; y contiene los ocho bits de una conversin en 8 bits. El
valor de este registro se compara con el registro ADCRL.

225

Registro de configuracin (ADCCFG): La siguiente figura muestra el registro de


configuracin del mdulo ADC.

- ADLPC: Bit para configurar el ADC en bajo consumo. Optimiza el SAR para bajo
consumo y reloj lento, esta opcin es adecuada para digitalizar seales de baja
velocidad.
0: No habilita modo de bajo consumo.
1: Habilita modo de bajo consumo.
- ADIV: Bits para configurar el divisor del reloj elegido para el mdulo ADC.
00: Divisor por 1.
01: Divisor por 2.
10: Divisor por 4.
11: Divisor por 8.
- ADSMP: Bit para disponer el ADC en conversiones rpidas, asociadas a entradas de
baja impedancia y consumos altos o para conversiones lentas de impedancias altas y
bajo consumo.
0: Tiempo corto para muestreo.
1: Tiempo largo para muestreo.
- MODE: Bits para seleccionar la resolucin de trabajo del ADC.
00: Conversin con resolucin en 8 bits.
01: Conversin con resolucin en 12 bits.
10: Conversin con resolucin en 10 bits.
11: Reservado.
- ADICLK: Bits para seleccionar el reloj que alimentar el mdulo ADC.
00: Reloj del BUS interno.
01: Reloj del BUS interno dividido por 2.

226

10: Reloj alterno ALTCLK.


11: Reloj asncrono ADACK.
Registro de control de pin del ADC o habilitacin de canal A/D (APCTLx): La
siguiente figura muestra los registros de control de pines del ADC.

Todo canal que se desee habilitar necesita ser confirmado escribiendo un 1 en el


respectivo bit ADPCx
Clculo del tiempo de una conversin.
Para efectos del clculo del tiempo que toma una conversin en ejecutarse, la
siguiente tabla relaciona el tiempo dependiendo del reloj elegido (ADCLK =
ADICLK/ADIV) y el bit ADSMP (tiempo corto o largo).

Por ejemplo, supngase que se est realizando una conversin A/D con resolucin de
12 bits. Para la conversin se ha elegido el reloj de bus interno, que es de 16MHz. La
conversin se realizar en modo continuo y tiempos cortos de muestreo.
Como se recordara, la frecuencia mxima de reloj de conversin para el ADC del
MCF51JM128 es de 8MHz, entonces es necesario aplicar un valor de ADIV = 01
(divisor por 2). El valor resultante conformara el ADCK de la conversin, de tal manera
que el tiempo total de conversin, para las muestras subsecuentes se calcula as:
Tiempo de conversin = 20 ADCK ciclos / (16MHZ / 2).
Tiempo de conversin = 2.5 x 10-6 seg.

227

EJEMPLO CON EL MDULO ADC.

Para ilustrar la operacin del mdulo ADC se trabajar sobre el clsico 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
visualizacin de la misma en un display LCD.

El fenmeno propone un sistema de inercia grande, de tal manera que se trabajar el


mdulo ADC en bajo consumo y tiempos largos de muestreo. La siguiente figura ilustra
el circuito sugerido para el ejercicio.

La funcin de transferencia del LM35 es:

f(T) = 10mV / C
De tal manera que si el ambiente se encuentra a una temperatura de 25C, a la salida
del sensor se tendra un voltaje de 250mV.
Las referencias de conversin VREFH y VREFL del sistema DEMOJM, estn
alimentadas a 4.64 V. Si se trabaja con una resolucin de 12 bits, un paso de
conversin sera de 4.64V / 4096 = 1.132 mV. Este valor sera bastante apropiado
para el sistema, porque la variacin de un grado centgrado en el sensor es de 10mV.

228

Un programa en C que resuelve el ejercicio de la temperatura planteado, se detalla a


continuacin.
/******************************************************************************************/
/* DISTRIBUCION DE LOS PINES DE LOS PUERTOS */
/******************************************************************************************/
/******************************************************************************************/
/* PUERTO * PIN * I/O * TIPO * INICIA * COMENTARIO */
/******************************************************************************************/
/*PTA * - * - * - * - *LCD */
/* *PTA0 * O * D * 1 *D4 del LCD */
/* *PTA1 * O * D * 1 *D5 del LCD */
/* *PTA2 * O * D * 1 *D6 del LCD */
/* *PTA3 * O * D * 1 *D7 del LCD */
/* *PTA4 * O * D * 1 *Seal ENABLE del LCD */
/* *PTA5 * O * D * 1 *Seal RS del LCD */
/******************************************************************************************/
/******************************************************************************************/
/*PTB * - * - * - * *Medida de la temperatura */
/* *PTB0 * I * A * - *Entrada de la seal temperatura del sensor */
/******************************************************************************************/
/*PTC * - * - * - * - *No usado */
/******************************************************************************************/
/*PTD * - * - * - * - *No usado */
/******************************************************************************************/
/*PTE * - * - * - * - *No usado */
/******************************************************************************************/
/*PTF * - * - * - * - *No usado */
/******************************************************************************************/
/*PTG * - * - * - * - *No usado */
/******************************************************************************************/
/*PTH * - * - * - * - *No usado */
/******************************************************************************************/
/******************************************************************************************/
/*PTJ * - * - * - * - *No usado */
/******************************************************************************************/
/* Archivos de cabecera */
#include <hidef.h> //macro para interrupciones
#include "derivative.h" //macro de declaraciones del MCU
/* Declaracin de variables y constantes */
byte bandera=0; //bandera de propsito general
word dato_ADC=0;
unsigned long retardo=0; //parmetro para hacer retardo
char i=0; //variable de iteracin
char PTAD_Config=0; //byte de inicializacin del registro PTAD
char PTADD_Config=0; //byte de inicializacin del registro PTADD
char PTAPE_Config=0; //byte de inicializacin del registro PTAPE
char PTASE_Config=0; //byte de inicializacin del registro PTASE
char PTADS_Config=0; //byte de inicializacin del registro PTADS
char PTAIFE_Config=0; //byte de inicializacin del registro PTAIFE

229

char ADCSC1_Config=0; //byte de inicializacin del registro ADCCFG


char ADCCFG_Config=0; //byte de inicializacin del registro APCTL1
char APCTL1_Config=0; //byte de inicializacin del registro APCTL1
char ADCSC2_Config=0; //byte de inicializacin del registro ADCSC2
char dec_ad,uni_ad,dem_ad,cem_ad; //variables para conversin de la
temperatura a ASCII
char comando8=0; //parmetro inicializacin LCD modo 8 bits
char dato4; //dato a enviar al LCD
char rs=0; //seal de dato o comando al LCD
char a=0; //variable temporal
const unsigned char mensaje[] = "TEMP = . C"; //Arreglo del mensaje para llevar
al LCD
char *pM; //puntero a mensaje para el LCD
/* Macros y definiciones */
#define Disable_COP() SOPT1 &= 0x3F //deshabilita el COP
/* Declaracin de funciones */
void Delay(unsigned long retardo); //funcin para hacer retardos varios
void LCD_Init(void); //funcin para inicializar LCD
void Lcd_4bit_Wr(char dato4,char rs); //funcin para escribir dato al LCD
void Comando_8bit(char comando8); //funcin para inicio del LCD a 8 bits
void PTA_Init(char PTAD_Config,char PTADD_Config, char PTAPE_Config, char
PTASE_Config, char PTADS_Config, char
PTAIFE_Config);
//declare funcin que inicializa PTA
void
ADC_Init(char
ADCCFG_Config,
char
ADCSC2_Config,char
APCTL1_Config,char ADCSC1_Config);
//declare funcin para inicializar ADC
/* main(): Funcin principal */
void main(void) {
MCGC1=0x04; //reloj en modo FEI y divisor por 1
MCGC2=0x00;
MCGC4=0x22; //rango alto
Disable_COP(); //deshabilita el COP
PTA_Init(0x00,0xFF,0x00,0xFF,0x00,0xFF); //pines inician en "0",pines como
salida, no pullups,
//si slew, no strength y si filtro
LCD_Init(); //inicialice LCD
pM = (char *)mensaje; //puntero toma direccin del mensaje con definicin
for (i=0;i<=13;i++){ //ciclo para imprimir 15 caracteres del mensaje
Lcd_4bit_Wr(*pM,1); //enva carcter al LCD
pM++; //incrementa puntero al arreglo del mensaje
}
ADC_Init(0x97,0x00,0x01,0x40); //habilita nter, ADC ON, conversin simple, bajo
consumo
//divisor x 1, muestreo largo, 12 bits resolucin, canal 0
//reloj ADACK
EnableInterrupts; //habilita interrupciones
for(;;) { //iteracin para presentacin de la temperatura (for infinito)
if (bandera==1){

230

ADCSC1 = 0x00; //inhibe interrupcin por A/D


bandera=0; //aclara bandera
dato_ADC = dato_ADC*113; //ajuste resultado (1LSb = 0.001132V), escalado por
10000
dec_ad = dato_ADC/10000; //halle decenas de grados C
uni_ad = (dato_ADC - dec_ad*10000)/1000; //halle unidades de grados C
dem_ad = (dato_ADC - dec_ad*10000-uni_ad*1000)/100; //halle decimas de
grados C
cem_ad = (dato_ADC - dec_ad*10000-uni_ad*1000-dem_ad*100)/10; //halle
centsimas de grados C
Lcd_4bit_Wr(0x8B,0); //prepare para enviar centsimas de temperatura
Lcd_4bit_Wr(cem_ad+0x30,1); /enva las centsimas de temperatura
Lcd_4bit_Wr(0x8A,0); //prepare para enviar decimas de temperatura
Lcd_4bit_Wr(dem_ad+0x30,1); //enva las decimas de temperatura
Lcd_4bit_Wr(0x88,0); //prepare para enviar unidades de temperatura
Lcd_4bit_Wr(uni_ad+0x30,1); //enva las unidades de temperatura
Lcd_4bit_Wr(0x87,0); //prepare para enviar decenas de temperatura
Lcd_4bit_Wr(dec_ad+0x30,1); //enva las decenas de temperatura
Delay(5000000); //retardo entre muestras
ADCSC1 = 0x40; //habilita otra conversin por A/D
}
}
}
/* es necesario asegurarse de nunca abandonar el main */
/* Funcin para inicializar el puerto A */
void PTA_Init(char PTAD_Config,char PTADD_Config,char PTAPE_Config, char
PTASE_Config, char PTADS_Config, char
PTAIFE_Config){
PTAD=PTAD_Config; //inicialice estado pines PTA
PTADD=PTADD_Config; //inicialice direccin de pines PTA
PTAPE=PTAPE_Config; //inicialice estado de pullups PTA
PTASE=PTASE_Config; //inicialice estado del slew rate PTA
PTADS=PTADS_Config; //inicialice estado de drive strength PTA
PTAIFE=PTAIFE_Config; //inicialice estado del filtro PTA
}
/*Funcin para inicializacin del ADC */
void
ADC_Init(char
ADCCFG_Config,char
ADCSC2_Config,char
APCTL1_Config,char ADCSC1_Config){
ADCCFG=ADCCFG_Config; //inicializa registro ADCCFG del ADC
ADCSC2=ADCSC2_Config; //inicializa registro ADCSC2 del ADC
APCTL1=APCTL1_Config; //inicializa registro APCTL1 del ADC
ADCSC1=ADCSC1_Config; //inicializa registro ADCSC1 del ADC
}
/* Funcin para inicializacin del LCD a 4 bits */
void LCD_Init(void){
Delay(200000); // hacer un retardo
Comando_8bit(0x30); //llama funcin enviar comando en 8 bits con comando
Delay(200000); //hace retardo
Comando_8bit(0x30); //llama funcin enviar comando en 8 bits con comando
Delay(200000); //hace retardo
Comando_8bit(0x20); //LCD 2x16 y manejo a 4 bits
Lcd_4bit_Wr(0x28,0); //LCD 2x16 y manejo a 4 bits
Lcd_4bit_Wr(0x0C,0); //ON LCD, OFF cursor

231

Lcd_4bit_Wr(0x01,0); //borrar pantalla LCD


Lcd_4bit_Wr(0x06,0); //desplaza cursor a la derecha con cada carcter
Lcd_4bit_Wr(0x80,0); //primer carcter fila 1 columna 1
}
/* Funcin para escribir a 4 bits en el LCD */
void Lcd_4bit_Wr(char dato4,char rs){
if (rs==0){ //pregunte si se va a enviar un comando o un dato
PTAD_PTAD5=0; //prepara envo de comando RS = 0
}
else{
PTAD_PTAD5=1; //prepara envi de dato RS = 1
}
a=dato4; //almacena temporalmente el dato
a=a>>4; //desplaza parte alta dato para la baja
PTAD&=0xF0; //enmascara parte alta del puerto A
a&=0x0F; //enmascara parte baja del dato a enviar al LCD
PTAD_PTAD4=1; //sube pin de enable
Delay(20000); //hace retardo
PTAD|=a; //enva nibble alto del dato
Delay(20000); //hace retardo
PTAD_PTAD4=0; //baja pin de enable
Delay(20000); //hace retardo
PTAD&=0xF0; //enmascara parte alta del puerto A
dato4&=0x0F; //enmascara parte baja del dato a enviar al LCD
PTAD_PTAD4=1; //sube pin de enable
Delay(20000); //hace retardo
PTAD|=dato4; //enva nibble bajo del dato
Delay(20000); //hace retardo
PTAD_PTAD4=0; //baja pin de enable
Delay(20000); //hace retardo
}
/* Funcin para envi de comando en 8 bits al LCD (solo para inicio) */
void Comando_8bit(char comando8){
PTAD_PTAD5=0; //prepara envi de comando
PTAD&=0xF0; //enmascara parte baja del puerto A
comando8&=0xF0; //enmascara parte alta de comando a enviar al LCD
comando8=comando8>>4; //desplaza para tomar nibble alto
PTAD_PTAD4=1; //sube pin de enable
Delay(20000); //hace retardo
PTAD|=comando8; //enva comando
Delay(20000); //hace retardo
PTAD_PTAD4=0; //sube pin de enable
Delay(20000); //hace retardo
}
/* Funcin Delay(): Retarda basado en una variable tipo entero */
void Delay(unsigned long retardo){
while(retardo>0){ //llego a cero?
retardo--; //no --> decrementa
}}
/* Funcin de atencin a la interrupcin del ADC canal 0 */
interrupt VectorNumber_Vadc void ISR_ADC (void){
//ADCSC1 = 0x40; //reconozca interrupcin e inicie otra
dato_ADC=ADCR; /capture dato del conversor
bandera=1;} //ponga bandera en "1".

232

5.3 INTERRUPCIONES.
Una interrupcin es una operacin que suspende la ejecucin de un programa de
modo que el sistema pueda realizar una accin especial. La rutina de interrupcin
ejecuta y por lo regular regresa el control al procedimiento que fue interrumpido, el
cual entonces contina su ejecucin.

Tipos de Interrupciones.
Las interrupciones se dividen en dos tipos las cuales son: Externas e Internas. Una
interrupcin externa es provocada por un dispositivo externo al procesador. Las dos
lneas que pueden sealar interrupciones externas son la lnea de interrupcin no
enmascarable (NMI) y la lnea de peticin de interrupcin (INTR).
LAS FUENTES DE RESET.
Son mltiples las fuentes de RESET que posee la mquina MCF51JM128. Todas
estas dejan huella en el registro SRS, que permite al programador poder consultar
quin (o quienes) ha sido el causante de un RESET. Las fuentes de RESET de la
mquina JM de 32 bits son:
Reset en el encendido: Power-on reset (POR).
Reset por pin externo: External pin reset (PIN).
Temporizador del computador operando apropiadamente: Computer operating
properly (COP) timer.
Deteccin de una instruccin ilegal: Illegal opcode detect (ILOP).
Deteccin de un acceso a direccin ilegal: Illegal address detect (ILAD).
Deteccin de bajo voltaje: Low-voltage detect (LVD).
Prdida del enganche del generador de reloj externo: Clock generator (MCG) loss of
clock reset (LOC).
Reset por forzado a entrada en modo de depuracin: Background debug forced reset.
A continuacin se hace una breve definicin de cada una de estas fuentes.
Reset en el encendido (POR): Cuando la mquina est comenzando a ser
energizada o cuando el voltaje de alimentacin (Vdd) cae por debajo de los niveles
mnimos permitidos, el circuito del POR genera un estado de RESET a la mquina. El
bit POR del registro SRS se pone a 1 indicando el evento de RESET (ver siguiente
figura).

233

Reset por pin externo (PIN): Obedece al flanco de bajada que se presenta como
seal externa, aplicada al pin de RESET. El bit PIN del registro SRS se pone a 1
indicando el evento de RESET (ver siguiente figura).

Reset por COP (Computer Operating Properly): Mecanismo equivalente al


Watchdog de otras mquinas, que detecta la prdida de flujo del programa y genera
un RESET al procesador.
Una vez habilitado el COP, es necesario poner a cero peridicamente el contador
asociado a este (escribir en el registro SRS algn valor) y as evitar que se genere
RESET al sistema. El COP puede ser configurado desde los registros SOPT1 y
SOPT2 (como se muestra en la siguiente figura).

COPT: Seleccin del perodo del COP.


COPCLKS: Seleccin del tipo de reloj que alimenta el contador del COP.
COPW: Ventana de activacin del COP. Slo para operacin con el BUSCLK y de
estar activo, es necesario escribir sobre el SRS durante el 25% final del perodo del
COP seleccionado.

234

En donde los bits asociados a la operacin del COP (COPT, COPCLKS y COPW),
trabajan como se indica en la siguiente tabla

La seal 1KHz LPOCLK es un reloj de bajo consumo e independiente del reloj del
sistema, esto hace que el reloj del Watchdog no dependa del reloj de la mquina. El
alumno puede optar por el uso del BUSCLK (reloj de bus interno de la MCU), pero
debe ser consciente de la posible prdida del COP debido a la prdida del reloj del
sistema.
El contador del COP inicia una vez que se halla escrito sobre los registros SOPT1 y
SOPT2. La puesta a cero del COP (escribiendo sobre el registro SRS) no deber ser
hecho en una atencin a interrupcin, porque se puede caer en la atencin reiterada
de la ISR y descuidar el refresco del COP.
Cuando se trabaja con el reloj BUSCLK y se est en modo BDM (Background Mode
Debug) o mientras el sistema se encuentra en modo STOP, el contador del COP no se
incrementa y retiene su valor. Esto se hace una vez que se supere el modo BDM o
STOP y el COP contina su conteo.
Cuando se trabaja con el reloj LPOCLK, el contador del COP es inicializado a cero
para los modos BDM y STOP, tanto para entrar como para salir de estos modos. El bit
COP del registro SRS se pone a 1 indicando el evento de RESET (ver siguiente
figura).

El CodeWarrior 6.2 contiene macros para controlar la activacin e inhibicin del


COP. Por ejemplo, la siguiente macro pone a cero el contador que causa sobreflujo del
sistema del COP:
#define __RESET_WATCHDOG () (void) (SRS = 0x00)
Para desactivar la accin del COP se puede definir una macro con el siguiente
contenido:
#define Disable_COP() SOPT1=0x3F;

235

Reset por ILOP (Illegal Opcode): Por defecto, la mquina ColdFire V1 habilita la
posibilidad de detectar la ejecucin de una operacin ilegal. Tambin, este tipo de
RESET es generado cuando se intenta ejecutar un instruccin con privilegio para el
modo supervisor, desde el modo de usuario.
Intentar ejecutar las instrucciones STOP y HALT cuando no han sido habilitadas,
genera un estado de RESET a la mquina. El bit ILOP del registro SRS se pone a 1
indicando el evento de RESET (ver siguiente figura ).

Reset por ILAP (Illegal Address): Por defecto, la mquina ColdFire V1 habilita la
posibilidad de detectar el acceso a una direccin ilegal, error por terminacin de bus,
error por formato de RTE (Return of Exception) o una condicin fault on fault. El bit
ILAD del registro SRS se pone a 1 indicando el evento de RESET (ver siguiente
figura).

Reset por LVD (Low Voltaje Detect): La mquina ColdFire V1 contiene un


mecanismo para la deteccin de un evento, por bajo voltaje en la fuente de
alimentacin. Este mecanismo protege el contenido de la memoria y los estados de
control del sistema, ante variaciones en el voltaje de alimentacin.
Para habilitar el sistema LVD es necesario poner a 1 el bit SPMSC1[LVDE] y elegir
un voltaje de comparacin adecuado con el bit SPMSC3[LVDV]. La operacin por LVD
no ser habilitada si la CPU se encuentra en los modos STOP2 y STOP3, a menos
que el bit SPMSC1[LVSE] se encuentre en 1. Si los bits SPMSC1[LVDE] y
SPMSC1[LVSE] se encuentran ambos en 1, el sistema entra en el modo STOP4.
Si se quiere que el LVD genere RESET a la mquina, ser necesario poner a 1 el bit
SPMSC1[LVRE].
Existe un sistema de precaucin (LVW: Low Voltaje warning), para la deteccin
anticipada de variacin en el voltaje de alimentacin. El objetivo es indicarle al usuario
que la fuente se encuentra cercana al umbral de deteccin de bajo voltaje (Vtrip) y la
manera como lo indica es con la bandera LVWF (Low Voltaje Warning Flag).
Es posible generar un evento de interrupcin por LVW, poniendo a 1 el bit
SPMSC3[LVWIE]. Para aclarar la bandera LVWF es necesario escribir un 1 en el bit
SPMSC3[LVWACK]. Existen dos niveles de comparacin para el Vtrip y se eligen con
el bit SPMSC3[LVWV]. El bit LVD del registro SRS se pone a 1 indicando el evento
de RESET (ver siguiente figura).

236

Reset por prdida del enganche del reloj externo (LOC): En caso de perderse el
reloj que se genera externamente, el sistema de excepciones genera un RESET por
evento LOC(Loss Of Clock). El bit LOC del registro SRS se pone a 1 indicando el
evento de RESET (ver siguiente figura ).

EL CONTROLADOR DE INTERRUPCIONES (CF1_INTC)


Est diseado para la lnea de microcontroladores ColdFire V1 de Freescale, que
generalmente soportan menos programabilidad que las gamas superiores.
El diseo del controlador se enfoca en la compatibilidad entre la familia de 8 bits
HCS08 y la familia de 32 bits ColdFire V1, conservando caractersticas tan
importantes como la compatibilidad en la prioridad de atencin a las interrupciones y
similitud en el modo de procesamiento de las interrupciones (con un solo nivel de
anidacin).
La siguiente tabla hace un resumen de la similitud de estas dos arquitecturas, desde
el punto de vista del control de las interrupciones.

237

Un proceso de excepcin por interrupcin consta de los siguientes pasos, generales:

Reconocimiento de la interrupcin presente.


Proceso de suspensin de la instruccin que est siendo ejecutada por la CPU.
Almacenamiento de 8 bytes en la pila. La informacin que se almacena en la pila
durante la atencin a una excepcin de interrupcin es:
4 bytes con la direccin de retorno. Contenido del PC antes de atender la interrupcin
en proceso.
2 bytes para el registro SR (Status Register).
2 bytes para el F/V (Format Vector Word).
Clculo del vector apropiado para atender la interrupcin.
Paso del control a la subrutina que atiende la interrupcin

Las mquinas ColdFire revisan el estado de las interrupciones con cada instruccin
que ejecutan, esto coincide con cada ciclo del OEP (Operand Execution Pipeline).
Para el manejo de los niveles de interrupcin, la mquina est dotada de la mscara
de interrupciones I. La mscara I est formada por tres bits, que definen siete niveles
de interrupciones con capacidad automtica de anidacin.
El nivel ms alto es el 7 y as en forma descendiente hasta el nivel 1, el nivel 0 (I=0)
significa la habilitacin de todas las interrupciones del sistema.
El nivel 7 aplica para las interrupciones no enmascarables sensibles a flanco y las
interrupciones del nivel 6 al 1 son enmascarables y sensibles al nivel.
Toda interrupcin que se presente y tenga un nivel de interrupcin menor o igual al
nivel de la interrupcin presente, ser inhibida. Lo anterior es una norma, excepto para
la interrupcin no enmascarable de nivel 7 y sensible a flanco.
Los procesadores ColdFire contienen una tabla de 1024 bytes, localizada mediante
el vector VBR y alineada con un vecindario de 1MB. Lo anterior se hace por
compatibilidad entre las mquinas desde la versin V1 hasta la V4, para la versin V1
esta localizacin tiene sentido en las direcciones 0x(00)00_0000 (FLASH) y la
0x(00)80_0000 (RAM).

La siguiente tabla contiene la ubicacin de cada vector de excepcin para la familia


ColdFire.

238

239

Cada nivel de interrupcin soporta nueve asignaciones de prioridad, esto hace que sea
posible establecer un total de 63 jerarquas. La relacin entre el clculo del vector de
las interrupciones de las mquinas HCS08 y ColdFire, est establecida por la
ecuacin:
Nmero del vector en ColdFire_V1 = Nmero del vector en HCS08 + 62.
Para emular las capacidades de nivel 1 de las mquinas HCS08 en las mquinas
ColdFire V1, se implementa el manejo de slo dos valores para la mscara SR[I].
SR[I] = 7, Se usa para inhibir la interrupciones.
SR[I] = 0, Se usa para habilitar las interrupciones.
EL PIN DE INTERRUPCIN (IRQ).
El registro IRQSC es el encargado de manipular la seal externa de IRQ, que ocupa
lugar privilegiado dentro de los niveles y prioridades en la mquina de las
interrupciones. El procesador monitorea permanentemente la lgica del pin de IRQ y
puede validar tanto el flanco, como el flanco y nivel de la seal presente en el pin.
La interrupcin generada por el pin IRQ puede sacar a la mquina de STOP, an con
el reloj suspendido. La siguiente figura ilustra sobre el registro IRQSC.

Bit IRQPDD (IRQ Pull Device Disable): Deshabilita la resistencia de pullup/pulldown


asociada al pin IRQ.
IRQPDD = 0: La resistencia est habilitada.
IRQPDD = 1: La resistencia esta deshabilitada.
Bit IRQEDG (IRQ Edge Select): Configura el flanco que activar la entrada de IRQ.
IRQEDG = 0: El pin IRQ ser sensible al flanco de bajada o flanco de bajada y nivel
bajo (de existir una resistencia asociada al pin, deber ser de pullup).
IRQEDG = 1: El pin IRQ ser sensible al flanco de subida o flanco de subida y nivel
alto (de existir una resistencia asociada al pin, deber ser de pulldown).
Bit IRQPE (IRQ Pin Enable): Habilita el funcionamiento del pin IRQ.
IRQPE = 0: El pin IRQ ha sido deshabilitado.
IRQEDG = 1: El pin IRQ ha sido habilitado.
Bit IRQF (IRQ Flag): Bandera que indica cuando un evento de IRQ ha ocurrido.

240

IRQPE = 0: No hay evento de IRQ.


IRQEDG = 1: Ha ocurrido un evento de IRQ.
Bit IRQACK (IRQ Acknowledge): Bit para el reconocimiento de un evento de IRQ.
Escribiendo un 1 en este bit, se aclara la bandera IRQF. El alumno deber poner a
cero este bit en la atencin al evento, siempre y cuando el modo de operacin no se
encuentre en flanco y nivel (IRQMOD=1) y est activo.
IRQACK = 0: No tiene efecto.
IRQACK = 1: Pone a cero la bandera de IRQF con IRQMOD=0.
Bit IRQIE (IRQ Interrupt Enable): Habilita un evento de interrupcin, ante la
aparicin de un evento de IRQ.
IRQIE = 0: No se habilita evento de interrupcin por IRQ. El alumno puede usar la
lectura iterativa (polling) sobre la bandera IRQF, siempre y cuando el pin est
habilitado.
IRQIE = 1: Habilita el evento de interrupcin por IRQ.
Bit IRQMOD (IRQ Mode): Elige el modo de operacin, elctrico, con el pin de IRQ.
IRQMOD = 0: El pin de IRQ slo acta con el flanco de la seal elctrica presente.
IRQIE = 1: El pin de IRQ acta tanto en el flanco, como en el nivel de la seal
elctrica.
EJERCICIO CON EL PIN IRQ
El siguiente ejercicio detecta una interrupcin asignada al pin IRQ (pin 2 del conector
MCU-Port del DEMOJM) del MCU y hace un toggle sobre el LED PTD2 del DEMOJM.
El circuito de la siguiente figura ilustra la conexin sugerida para la prueba del
ejercicio.

241

El programa, desarrollado en C, es mostrado a continuacin.

/* Archivos de cabecera */

#include <hidef.h> //macro para interrupciones


#include "derivative.h" //macro de declaraciones del MCU

/* Declaracin de variables y constantes */

byte bandera=0;
char byteConfig=0;

/* Macros y definiciones */

#define Disable_COP() SOPT1 &= 0x3F //deshabilita el COP


#define Led1_On() PTDD_PTDD2 = 0; PTDDD_PTDDD2 = 1
//macro para encendido de Led1
#define Led1_Off() PTDD_PTDD2 = 1; PTDDD_PTDDD2 = 1
//macro para apagado de Led1

/* Declaracin de funciones */

void IRQ_Init(char byteConfig); //declaracin de funcin que inicializa la IRQ


/* main(): Funcion principal */
void main(void) {

242

Led1_On(); //el LED inicia encendido


Disable_COP(); //deshabilita el COP
EnableInterrupts; //habilita interrupciones
IRQ_Init(IRQSC_IRQPE_MASK | IRQSC_IRQACK_MASK | IRQSC_IRQIE_MASK);
//Flanco de bajada, habilita interrupcin y se da ACK
for(;;) { //iteracin infinita
}
/* es necesario asegurarse de nunca abandonar el main */
}

/* Funcin para inicializar la IRQ */

void IRQ_Init(char byteConfig){ //parmetros de entrada a la funcin


IRQSC = byteConfig; //modifique parmetros de inicializacin
}

/* Funcin de atencin a la IRQ */

interrupt VectorNumber_Virq void ISR_IRQ (void){


IRQSC_IRQACK=1; //aclara bandera de interrupcin por IRQ
if(bandera==1){ //si bandera es 1
Led1_On(); //active el LED
bandera=0; // borrar la bandera
}else{ //si no..
Led1_Off(); //desactive el LED
bandera=1;}} //ponga bandera a 1

243

UNIDAD VI
6.1 PLANTEAMIENTO DEL PROBLEMA.
Hoy en da el STCM es uno de los medios de transporte de mayor afluencia en
la cd de Mxico debido a la gran demanda que presenta, este medio de
transporte presta servicio ininterrumpido los 365 das de ao a excepcin de
situaciones especiales, el parque vehicular se conforma por trenes articulados
de 9 y 6 vagones, los cuales funcionan con energa elctrica.
El recorrido del tren se concibe de manera subterrnea y superficial, adems
cuenta con 12 estaciones y una dcima tercera en construccin.
Hasta el da de hoy el STCM tiene 41 aos de servicio, en los cuales ha
existido la modernizacin de su infraestructura, pero en aos recientes ha
habido un rezago considerablemente notorio, ya que la mayora de los
sistemas utilizados actualmente son obsoletos o se encuentran prximos a
desaparecer, en los cuales el aspecto del cuidado de la energa elctrica ha
sido tomado muy poco en consideracin, y se puede percatar que se
desaprovechan grandes cantidades de energa elctrica en el rubro de la
iluminacin, debido a que al ser un medio de transporte subterrneo y
superficial no siempre necesita la misma intensidad luminosa fuera de los
tneles que dentro de los mismos, esto lleva como consecuencia la
disminucin de vida til de las luminarias ya que se encuentran encendidas en
situaciones y tiempos intiles, 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.

244

El tipo de luminarias utilizadas dentro de los vagones del metro se compone de


gabinetes con 1 lmpara fluorescente tipo t8, adems lleva un difusor, que
permite entre la proteccin de la propia lmpara, la difusin del flujo luminoso
dentro de esta.
La siguiente figura muestra la lmpara fluorescente tipo t8 dentro de su
gabinete con su respectivo difusor.

El control que se tiene sobre la iluminacin dentro de los vagones del


metro, es nulo, ya que siempre estn encendidas, ya sea en sus
primeras horas de servicio, pasando por la maana, medio da, tarde
hasta el anochecer, lo cual representa en horas de luz, gastos
innecesarios de energa elctrica.
Finalmente se tiene otro factor que se ha venido acrecentando en tiempos
recientes como lo es el poco mantenimiento de las luminarias, esto repercute
indudablemente en la calidad de la iluminacin que se tiene dentro de los
vagones, y como tal las consecuencias no son de gravedad pero como

245

principal sistema de transporte pblico vemos que su mantenimiento es nulo, al


menos en este aspecto.
Es muy raro encontrar dentro del metro algn convoy que tenga funcional su
iluminacin al interior, claro a excepcin de los vagones de la lnea 2 modelo
NM-02 y algunos de la lnea 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 daadas, incluso las
lmparas de emergencia no funcionan de manera adecuada, como se puede
observar en la siguiente figura.

De llevar la misma administracin de energa elctrica, el

STCM seguir

generando prdidas tanto monetarias como energticas que se pueden evitar


diseando un sistema de iluminacin inteligente utilizando luminarias de tipo
led manipulado por microcontroladores.

246

6.2 ACEPTACIN DEL PROYECTO.


Hoy en da la energa elctrica es parte fundamental en el desarrollo humano,
es casi tan importante como lo es el agua para los seres vivos; la unin del
intelecto humano en conjunto con sus avances cientficos y tecnolgicos han
logrado manipular esta energa para resolver los problemas y las necesidades
a las que el ser humano se enfrenta da con da.
En Mxico, la competitividad en la industria que hace uso intenso de energa ha
sido impactada debido a las fluctuaciones en los precios de los energticos,
especialmente del gas natural y de la electricidad.
La manipulacin de esta energa ha llevado a desarrollar nuevas mquinas e
instrumentos de las cuales muchas de estas funcionan principalmente con
electricidad, pudiendo

mencionar

artculos tan bsicos como lo son una

aspiradora, secadora, licuadora hasta llegar a otras mquinas ms complejas


como lo son elevadores, escaleras elctricas, horno de arco elctrico,
transformadores de potencia etc.
En las grandes ciudades principalmente podemos observar el cambio y la
diferencia que marcan estas tecnologas, pero aun as estas no logran resolver
todas las carencias, problemas y deficiencias que existen en las ciudades y
principalmente en los medios de transporte, por otra parte, al ser de uso diario
y estar sometido a los tratos ms rudos que puede haber por parte de la
poblacin, vemos con gran frecuencia que su deterioro fsico como eficaz va
en decremento a tal grado que por falta de servicio y mantenimiento falla o se
vuelve obsoleto, tal es el caso de la iluminacin dentro de los vagones del
Sistema de transporte Colectivo Metro.
Idealmente el ahorro de energa elctrica con un constante flujo luminoso se
efectuara regulando el nivel de iluminacin de las lmparas, lo cual nos lleva a
incrementar o decrementar su consumo de corriente (Para el caso de los leds),
adems la comparacin de los flujos de iluminacin existentes tendran que ser
monitoreados constantemente para as poder discernir entre la cantidad de
corriente necesaria que se requiere para igualar al valor de referencia base,
adems debe de existir una retroalimentacin que permita comparar la nueva
informacin de datos que afecta al sistema con los datos que provocaron el
resultado actual.

247

Dentro del desarrollo de nuevos sistemas de iluminacin en los ltimos aos se


han venido acrecentando las tendencias por buscar dispositivos de iluminacin
ms eficientes con menor costo, mayor tiempo de vida, bajo mantenimiento,
alta eficiencia luminosa y sobre todo compactos.
Dentro del aspecto que abarca la viabilidad para el cambio de luminarias
convencionales por lmparas leds, se pueden encontrar diversos documentos y
trabajos que avalan y hacen

favorables a los leds como futuros sistemas

predilectos de iluminacin.
Se encontr que mientras que los dispositivos convencionales de iluminacin
consumen grandes cantidades de energa, los leds utilizando la misma
cantidad de energa, son capaces de alimentar una gran cantidad de los
mismos teniendo como consecuencia la generacin de un flujo luminoso mucho
mayor con respecto al dispositivo comparado.
El anlisis de la durabilidad arrojo que en promedio la vida til de una lmpara
convencional por mnimo es de aproximadamente 10 000 horas hasta las 30
000 horas y despus puede seguir operando o simplemente fallar debido a
diversos factores, entre ellos destaca el mantenimiento, por otra parte una
luminaria led tuvo un resultado sorprendente, ya que se pudo notar que su vida
til en promedio es de al menos 100 000 horas, esto significa que despus de
este tiempo los leds no dejaran de funcionar si no que comenzara un proceso
en el cual poco a poco dejaran de emitir el flujo luminoso normal hasta que
finalmente sea nulo o muy bajo.
Dentro del estudio de costos que lleva este trabajo es posible notar que si bien
la inversin inicial es relativamente baja para los dispositivos convencionales,
es un poco alta para una lmpara led, ya que al ser una tecnologa en
desarrollo, los medios por el cual ser fabrican no son los ms econmicos y
adems no son de manufactura nacional, sino que todo es de importacin lo
que incrementa en cierta cantidad su precio final.
El estudio de estos dispositivos no solo se limitan a sustituir a las luminarias
actuales de mayor popularidad sino que tambin buscan encontrar un modo de
control que ofrezca una estabilidad eficiente y discreta, es por esta razn que el
desarrollo de sistemas de control inteligentes se han ido estudiando y

248

desarrollando a medida que van ganando popularidad los dispositivos de


iluminacin led.
Existen diversos estudios realizados que abarcan el anlisis de comparacin de
sistemas de iluminacin convencionales contra sistemas de iluminacin led,
estos hacen principal nfasis en enmarcar que dentro de las caractersticas
ms destacables de los leds con respecto a luminarias convencionales se
encuentra la durabilidad de los mismos, ya que al ser dispositivos que estn
sometidos a un control de corriente constante y estn aislados de disturbios
que existen dentro de la seal de alimentacin no tienden a fallar por disturbios
pequeos en la red, sin embargo esto se logra por medio de una fuente
regulada que preferentemente es una fuente conmutada.
Los dispositivos de control como lo son los microcontroladores, son empleados
en la elaboracin de sistemas de control de baja y alta potencia, por mencionar
solo una de tantas aplicaciones, que tienen estos.
El desarrollo de los modelos de programacin con

lgica difusa o PID

aplicados a sistemas que atienden situaciones especficas apoyados por el uso


de microcontroladores, nos proporcionan un monitoreo permanente, exacto y
confiable, siendo el microcontrolador quien ser responsable de procesar y
controlar los datos correspondientes.
El objetivo es elaborar un controlador PI que permita regular la iluminacin
dentro de los vagones del transporte colectivo metro utilizando leds de
potencia, mediante la programacin en C, basndose en el microcontrolador
JM60 para que funcione como controlador y administre la energa y niveles de
iluminacin adecuados para los vagones
El control automtico asienta sus bases esencialmente en el concepto de
realimentacin. Este concepto se concreta en una estructura de control en la
cual el controlador se puede entender como un operador, que en funcin de la
salida deseada, y la salida real medida, proporciona la accin de control a
aplicar sobre el sistema.
Si bien existen muchos tipos de control basados en este principio y los
podemos clasificar en clsicos
continuacin.

249

e inteligentes como se describen a

Controladores clsicos.
El control proporcional, derivativo e integral (PID), es el que mayor implantacin
tiene en la industria de procesos. Dicho control consiste esencialmente en
obtener la accin de control como la suma de tres trminos:
Proporcional Derivativo Integral.
Se pueden obtener variaciones en este esquema, consistentes en la no
introduccin de los trminos derivativo e integral; en dicho caso el control
coincide con el llamado control proporcional. Si solamente se prescinde de la
accin integral, el control se denomina control proporcional derivativo (PD).
Si, por el contrario, el nico trmino que desaparece es el derivativo, el control
se denomina proporcional integral (PI).
Segn una estimacin dada por Amstrom: El 95% de los bucles de control en la
industria son del tipo PID, y fundamentalmente PI. La amplia implantacin del
control PID en la industria, se debe fundamentalmente a los siguientes factores:
- La actuacin en funcin de la seal de error proporciona una estructura de
realimentacin negativa, que como es conocido, permite obtener en muchas
ocasiones un comportamiento satisfactorio del sistema a pesar de la existencia
de perturbaciones e incertidumbres sobre el modelo del sistema.
- El trmino derivativo proporciona cierta anticipacin sobre la respuesta al
sistema.
- El trmino integral permite eliminar el error en rgimen permanente.
- El control PID obtiene resultados satisfactorios para una amplia gama de
procesos.
- Existen sencillas reglas heursticas que permiten obtener los parmetros del
controlador PID.
Dichas reglas hacen posible el ajuste del controlador, sin presuponer un gran
conocimiento en teora de control automtico por parte del operador.

250

- En estructuras de control ms sofisticadas, donde exista cierta organizacin


jerrquica, el controlador PID puede utilizase a un nivel bajo.
- El controlador PID se puede adquirir como un mdulo compacto, donde los
distintos parmetros del controlador se pueden ajustar manualmente.
Actualmente muchos de los PIDs industriales proporcionan ciertas opciones de
auto sintona.
Controlador P
En ciertos tipos de procesos es posible trabajar con una ganancia elevada sin
tener ningn problema de estabilidad en el controlador. Muchos procesos que
poseen una constante de tiempo dominante o son integradores puros caen en
esta categora. Una alta ganancia en un controlador P significa que el error en
estado estacionario ser pequeo y no se necesitara incluir la accin integral.
Un ejemplo caracterstico en el que no es muy relevante el error en rgimen
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.
En lneas generales, el control PD puede ser apropiado cuando el proceso a
controlar incorpore ya un integrador. Por ejemplo, un proceso trmico con un
buen aislamiento opera de forma anloga a un integrador. Casi toda la energa
que se le suministra se emplea en elevar la temperatura del horno ya que las
prdidas son despreciables. Con esta clase de procesos es posible trabajar con
ganancias elevadas en el controlador sin que sea necesario introducir la accin
integral. La accin derivada es sensible al ruido ya que a altas frecuencias tiene
una ganancia relativamente elevada, por lo tanto, en presencia de altos niveles
de ruido se debe limitar dicha ganancia, o prescindir de la accin derivativa.
Asimismo, en procesos con grandes tiempos muertos la accin anticipativa del
trmino derivativo deja de ser efectiva ya que la aproximacin es lineal, es
decir:

251

Tan solo tiene validez para pequeos valores de Td. Debido a los tiempos
muertos hay un retardo antes de que los efectos de cualquier accin de control
se puedan detectar sobre la variable de proceso. Es, por lo tanto,
considerablemente mejor con esta clase de procesos,

intentar predecir su

accin futura, analizando la seal de control en combinacin con un modelo del


proceso.
Controlador PI.
Es la estructura ms usual del controlador. La introduccin de la accin integral
es la forma ms simple de eliminar el error en rgimen permanente. Otro caso
en el que es comn utilizar la estructura PI es cuando el desfase que introduce
el proceso es moderado (procesos con una constante de tiempo dominante o
incluso integradores puros). La accin derivativa ms que una mejora en esta
situacin es un problema ya que amplifica el ruido existente. Tambin se
recomienda la accin PI cuando hay retardos en el proceso, ya que como se ha
visto en el punto anterior, la accin derivativa no resulta apropiada en este tipo
de sistemas. Un tercer caso en el que se deber desconectar la accin
derivativa es cuando el proceso est contaminado con niveles de ruido
elevados. Se deber filtrar el ruido existente, pero en algunas ocasiones esto
no es suficiente.
Controlador PID.
La accin derivativa suele mejorar el comportamiento del controlador, ya que
permite aumentar las acciones proporcional e integral. Se emplea para mejorar
el comportamiento de procesos que no poseen grandes retardos pero que si
presentan grandes desfases. Este es el caso tpico de procesos con mltiples
constantes de tiempo.
Controladores inteligentes.
Lgica difusa.
La lgica difusa es una rama de la inteligencia artificial que se funda en el
concepto "Todo es cuestin de grado", lo cual permite manejar informacin
vaga o de difcil especificacin, si quisiramos hacer cambiar con esta
informacin el funcionamiento o el estado de un sistema especfico [X]. Es

252

entonces posible con la lgica difusa gobernar un sistema por medio de reglas
de 'sentido comn' las cuales se refieren a cantidades indefinidas.
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 tambin ser formuladas por un
experto humano. En general la lgica difusa se aplica tanto a sistemas de
control como para modelar cualquier sistema continuo de ingeniera, fsica,
biologa o economa.
Redes neuronales.
Debido a su constitucin y a sus fundamentos, las redes neuronales artificiales
presentan un gran nmero de caractersticas semejantes a las del cerebro. Por
ejemplo, son capaces de aprender de la experiencia, de generalizar de casos
anteriores a nuevos casos, de abstraer caractersticas esenciales a partir de
entradas que representan informacin irrelevante, etc. Esto hace que ofrezcan
numerosas ventajas y que este tipo de tecnologa se est aplicando en
mltiples reas.
Existen numerosas formas de definir a las redes neuronales; desde las
definiciones cortas y genricas hasta las que intentan explicar ms
detalladamente qu son las redes neuronales. Por ejemplo:
1) Una nueva forma de computacin, inspirada en modelos biolgicos.
2) Un modelo matemtico compuesto por un gran nmero de elementos
procesales organizados en niveles.
3) Un sistema de computacin compuesto por un gran nmero de elementos
simples, elementos de procesos muy interconectados, los cuales procesan
informacin por medio de su estado dinmico como respuesta a entradas
externas.
Eleccin del tipo de controlador.
Es

frecuente el diseo de un controlador PID teniendo en cuenta

exclusivamente el seguimiento de la referencia. En el diseo se debe

253

considerar no solo el seguimiento de referencia sino tambin el rechazo de


perturbaciones y ruidos en la medida.
El controlador PID bsico combina las acciones proporcional, derivativa e
integral mediante el siguiente algoritmo de control:

Como es bien sabido, el trmino proporcional contribuye a la reduccin del


error en rgimen permanente. Ahora bien, la ganancia requerida para que
dicho error se reduzca hasta los niveles deseados con la aplicacin de un
control proporcional puede ser incompatible con las especificaciones de sobre
oscilacin y estabilidad relativa del sistema. La accin integral tiene un efecto
cualitativo sobre el error en rgimen permanente, ya que garantiza la anulacin
de este cuando la referencia es de tipo escaln. El trmino derivativo permite
una cierta prediccin del futuro error y por tanto juega un papel anticipativo.

Sin embargo la anticipacin de la situacin que se viene a presentar no


siempre puede ser predicha por la accin derivativa, ya que para la situacin en
donde va a estar implementado el control contiene una cierta variacin del valor
de referencia difcil de anticipar, lo que significa que si la seal de control va
siendo sobre amortiguada debido a la prediccin del control derivativo cuando
se pase de una situacin cercana al valor de referencia a una muy lejana
debido al cambio repentino de la condicin censada es muy probable que se
presenten sobre oscilaciones muy severas, que obviamente tendrn cambios
muy abruptos para los cuales el sistema no estaba preparado.
De esta manera y considerando las oscilaciones que se pueden presentar
debido a los cambios para los cuales no estaba preparado el sistema de
control, se continua considerando la seal de error actual y una condicin de
estado anterior, lo que ayuda al sistema de control a seguir con una cierta
lgica de operacin, ya que las repuesta de control solo estar dada por dichos
parmetros y no por condiciones supuestamente probables, por esta razn el
control ideal y ms adecuado es del tipo Proporcional e integral (PI).

254

6.3 SUPERVISIN.
Las consideraciones anteriores sirven como precursor para poder describir el
sistema que se tiene planeado desarrollar, este desarrollo comprende 5 etapas,
las cuales se muestran en la siguiente figura formando un ciclo cerrado:

Etapa 1:
Est conformada por un sensor (fotorresistencia) el cual, al incidir un haz
luminoso sobre este, tendr un cambio en la resistencia interna, la cual atiende
las especificaciones del diseo, la magnitud que la fotorresistencia obtenga
esta en relacin directa al tiempo de incidencia y a la intensidad mxima de luz
que incide sobre el sensor, principalmente.
Etapa 2:
La magnitud de esta variacin ser ingresada al microcontrolador por medio de
un pin que se denomin como entrada y cuya funcin es convertir esta seal en
un dato hexadecimal, que obviamente tendr variaciones con respecto al
tiempo y la intensidad luminosa que incida sobre el sensor, es importante
mencionar que el tiempo con el cual se realiza una nueva conversin va en
relacin al control PI que en conjunto arrojaran un resultado diferente por cada
conversin en el tiempo de muestreo indicado.

255

Etapa 3:
Esta etapa es en donde se aplica de lleno el control PI ya que el dato obtenido
por medio de la conversin se compara con un punto de referencia, este dato
es un valor al cual se debe acercar o igualar la iluminacin requerida, el control
PI incluye como en la etapa anterior un tiempo de muestreo que permite la
conversin e interpretacin de los datos para que se procesen y se obtenga el
nuevo dato que se enva a la etapa 4 para su uso, sin embargo aqu mismo se
contemplan los resultados obtenidos del error anterior y el dato corregido que
se envi previo al nuevo sondeo, de esta forma siempre se toman en cuenta
las condiciones anteriores para el procesamiento de nuevos datos.
Etapa 4:
Esta etapa se enfoca principalmente al control del PWM, de acuerdo al dato
que enve el control PI, el modulo del PWM solo se encargara de generar la
seal 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 lmpara de leds.
De esta manera se vuelve a repetir el ciclo volviendo el sensor a adquirir un
nuevo dato con la intensidad luminosa actual.
Normatividad.
La norma vigente de iluminacin que se utiliza para la diferentes reas de
trabajo es la Norma Oficial Mexicana NOM-025-STPS-2008, la cual hace
referencia a los porcentajes y niveles de iluminacin que son ptimos, para los
distintos tipos de reas, los

niveles de iluminacin estn sujetos a los

parmetros del diseador, pero no debe de perderse de vista la norma en


vigencia.
Dentro del desarrollo de un sistema de control de iluminacin, la normatividad
que se llegue a aplicar al sistema, tendr la capacidad de acoplarse al nivel de
iluminacin deseado, debido a que el valor conocido como set point tiene la

256

caracterstica de adquirir cualquier valor que se le asigne, traducido de la


intensidad luminosa que se desee proporcionar.
Mientras ms elevado sea el valor del set point mayor ser la intensidad
luminosa proporcionada por la lmpara, de forma inversa un valor menor
asignado en el set point proporcionara una intensidad luminosa menor.
Existen otras normas que ayudan al diseo y certificacin que se utilizan en
sistemas de iluminacin led, como las siguientes:
- UNE-EN 60598-2-3 (Luminarias led)
- UNE-EN 60598-2-5 (Proyectores led)
- UNE-EN 62031 (Leds)

Leds de potencia.
Los leds de potencia son muy diferentes a los leds estndar

en cuanto a sus

caractersticas elctrica y tcnicas, 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
elctrico es elevado en comparacin 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
tensin que se debe aplicar para lograr hacer circular la corriente necesaria para hacer
operar el led.
Una caracterstica importante de estos leds es que al hacer circular a travs de estos
una corriente elevada, sufren un calentamiento excesivo, el cual se controla con
disipadores de calor, de no hacerlo se estara degradando el led y por consecuente
reduciendo su vida til.
Lmpara led de prueba.
La lmpara led que se utilizara para probar el control PI esta compuesta por 7 leds de
potencia de 1 watt, que consumen 350 mA de corriente mxima. Los leds se montaron
sobre un disipador de calor para evitar un sobrecalentamiento.

257

Control de la iluminacin.

El control se realizara mediante un driver que es un convertidor dc-dc tipo buck-boost.


Este driver como se le conoce usualmente tiene destinado una terminal la cual
admite una seal de PWM la cual permite valores de 0 a 5 volts como mximo para
poder regular el paso de la corriente atreves de los leds.

El driver modelo AMLDL-3035Z tiene las caractersticas de proporcionar hasta


400 mA y una tensin de 8 a 30 volts, estas caractersticas se acoplan a una
carga de 7 leds de potencia que consuman nominalmente 350 mA como
mximo para evitar sobrecalentamientos y una degradacin potencialmente
peligrosa. Para controlar un arreglo de 7 leds de potencia se propone la
siguiente configuracin.

258

6.4 PRUEBAS DE ACEPTACIN

Prueba del sistema de control PI.

La prueba del sistema de control PI a travs del microcontrolador se realiz en


ausencia de luz y en presencia de la misma, simulando la entrada y salida a un tnel,
esto tiene como finalidad variar el flujo luminoso que incide en el sensor, finalmente el
dato adquirido repercute en el resultado de la ecuacin de control PI que se encuentra
almacenada en el programa del microcontrolador, asignando diferentes datos al
mdulo de PWM y por consecuente variando la intensidad luminosa, como se muestra:

Sondeo de la seal de salida del PWM


Las diferentes condiciones que se pueden presentar las resumiremos en 4 estados, al
mnimo posible, 40%, 80% y a la mxima intensidad, esto lo podemos sondear por
medio de un osciloscopio, en la terminal de salida del microcontrolador que en este
caso es la terminal nmero 22 del microcontrolador, como se ilustra en la siguiente
figura.

259

Respuesta del algoritmo de control PI.

Para el anlisis de este nos enfocaremos en la parte en donde el dato corregido es


enviado al mdulo de PWM, para lo cual utilizamos el valor de 5CH, que detecta el
ADC, expresado en voltaje equivalente a 1.812 v, esto nos indica que el valor medido
actual es menor al valor de referencia propuesto, esto cumple la primera condicin,
inicindose as la ecuacin de control PI, esta ecuacin oscilara en un ciclo cerrado
hasta que el valor medido alcance al valor de referencia, en la prueba se sondearon
150 iteraciones con el fin de acercar el valor medido al valor de referencia como se
muestra a continuacin:

260

Como se puede notar en la grfica anterior, las oscilaciones se van atenuando hasta
ser constantes cuando llegamos a la iteracin 83, esto significa que el control PI estar
enviando 100 datos con oscilaciones de 10 %.

Pruebas al mnimo de intensidad luminosa.

Cuando decimos que es al mnimo de intensidad luminosa se entiende que la lmpara


est proporcionando un mnimo de flujo luminoso, esto se debe a que los datos
obtenidos por parte de ADC muestran que es mucho mayor flujo luminoso proveniente
del exterior al valor de referencia, proporcionando por consecuente un error muy
pequeo, esto significa que el dato enviado al mdulo de PWM es muy pequeo y esto
se refleja automticamente en una intensidad luminosa baja.
La siguiente figura

muestra la respuesta ante un dato ADC mayor al dato de

referencia.

261

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

La siguiente figura muestra la lmpara emitiendo el mnimo de su intensidad total.

262

Pruebas al 40% de intensidad luminosa.


Un valor de 40% es cuando el modulo del microcontrolador enva una seal con voltaje
RMS de 0.84 volts, del valor total que est programado para suministrar, adems
significa que; las condiciones externas son buenas pero no las ptimas, as que se
necesita el 40% de la capacidad total de la lmpara para suministrar un flujo luminoso
optimo dentro del vagn.
La siguiente figura muestra al mdulo de PWM suministrando un 40% de su capacidad
para obtener una intensidad luminosa ptima.

Una vez ms se puede corroborar que el control PI esta igualndose al valor de


referencia, obsrvese que la sonda del canal 2 del osciloscopio sigue manteniendo un
voltaje de 2 volts, buscando la igualacin al valor de referencia de 2.35v.
La siguiente figura muestra la lmpara emitiendo el 40% de su intensidad total.

263

Pruebas al 80% de intensidad luminosa.


Un 80% de intensidad luminosa proporcionada por el mdulo 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 ms iluminacin.
El voltaje que el mdulo de PWM al 80% de su capacidad es de 1.68 volts, como se
muestra en la siguiente figura.

Volvemos a observar que el comportamiento es el esperado y el control PI busca una


vez ms igualarse al valor de referencia mediante una iluminacin ms intensa por
medio de la lmpara de leds, como se muestra a continuacin.

264

Pruebas al mximo de la intensidad luminosa.


Solo queda probar el ltimo caso; como tal nos indica que se est utilizando el dato
mximo permitido para generar la mxima intensidad luminosa en la lmpara led,
significa que se ha sondeado el flujo exterior y este indica una ausencia total de luz,
por lo tanto el error de comparacin es grande, por consecuente se envan datos
cercanos al mximo permitido para comenzar a hacer el error ms pequeo.
El valor del voltaje que emite en mdulo de PWM en estas condiciones es de 2.1 volts
lo que provoca que el driver suministre los 350 mA para que las lmparas emitan su
mxima intensidad buscando igualar al dato de referencia como se puede ver una vez
ms en la siguiente figura:

La siguiente figura muestra la lmpara led suministrando la mxima intensidad


luminosa

265

6.5 Demostracin y exhibicin del proyecto.

La demostracin y exhibicin del proyecto se realiz en el saln de clase ante los


compaeros de grupo e invitados de la academia de electrnica, los cuales
participaron como evaluadores del proyecto.

El objetivo del proyecto es disear un control PI que permita mantener la intensidad


luminosa dentro del vagn del convoy del STCM con una intensidad luminosa
constante, teniendo en cuenta las condiciones externas de iluminacin, de tal manera
que cuando la intensidad externa tenga un valor elevado la intensidad interna en el
vagn disminuya logrando as una iluminacin adecuada, constante y que reduzca el
consumo energtico interno del vagn en situaciones y horarios diferentes, el
diagrama de bloques del sistema es el siguiente:

266

La demostracin del sistema de control PI a travs del microcontrolador se realiz en


ausencia de luz y en presencia de la misma, simulando la entrada y salida a un tnel,
como se muestra en la siguiente figura.

Con el saln plenamente iluminado, la siguiente figura muestra la lmpara emitiendo


el mnimo de su intensidad total.

267

A continuacin se cubrieron algunas ventanas del saln, para disminuir la entrada de


luz. La siguiente figura muestra la lmpara emitiendo el 40% de su intensidad total.

Posteriormente se cubrieron ms ventanas para disminuir ms la intensidad de luz que


entraba al saln, haciendo que la lmpara brillara a un 80 % de su capacidad, como se
muestra a continuacin.

268

Finalmente se cubri la totalidad del saln impidiendo que entrara la luz exterior, para
que la lmpara brillara a su mxima intensidad como se muestra en seguida.

El trabajo en grupos cooperativos y con tareas centradas en el aprendizaje por


investigacin, trata de fomentar el aprendizaje activo y lo ms autnomo posible por
parte del alumnado, que se ve confrontado a tomar decisiones en torno a cmo
proceder en el aprendizaje, qu recursos utilizar, cmo seleccionar y elaborar la
informacin encontrada, cmo organizar y repartir el trabajo entre los miembros del
grupo y cmo presentar el producto resultante.

Con esto se pretende llevar a cabo una educacin en el aula centrada en el


estudiante y con el acompaamiento del docente, para que el alumno se vea motivado
a estudiar y cree su propio conocimiento.
Contribuir a desarrollar en el alumno las habilidades en el manejo de la expresin
visual y escrita, con una aplicacin prctica del microcontrolador y contribuir al
bienestar de la sociedad.
Yo creo que todos los procedimientos para evaluar contribuyen para recabar algunos
datos, pero lo ms importante es el enfoque y la combinacin de diversos
procedimientos de evaluacin para obtener una aproximacin ms cercana del
desarrollo de las competencias de los estudiantes.

269

Bibliografa.

Espinosa, R. D. (2009). Diseo digital para ingeniera. Colombia.


Ferreira, J. C. (2007). Microcontroladores Motorola - Freescale. Mxico: Alfaomega.
Galeano, G. (2009). Programacin de sistemas embebidos en c. Mxico: Alfaomega.
Hoyos, D. A. (s.f.). Microcontroladores de 32 bits COLDFIRE V1 FAMILIA JM.
Rodrguez, J. M. (2000). Organizacin y arquitectura de computadoras. Mxico:
Prentice Hall.
Tocci, R. (2003). Sistemas digitales, principios y aplicaciones. Mxico: Pearson.

270

You might also like