apuntes de electronica iii docx

270
1 INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD PROFESIONAL ADOLFO LOPEZ MATEOS. DEPARTAMENTO DE INGENIERÍA ELÉCTRICA. ACADEMIA DE ELECTRÓNICA. APUNTES DE ELECTRÓNICA III. AUTOR: ING. DANIEL AVELINO GÓMEZ FECHA DE ELABORACIÓN: ENERO_JUNO DE 2014. FECHA DE APLICACIÓN: DESDE AGOSTO DE 2014.

Upload: esime2009

Post on 02-Dec-2015

60 views

Category:

Documents


5 download

DESCRIPTION

buenos apuntes para estudiar electronica digital

TRANSCRIPT

Page 1: Apuntes de Electronica III Docx

1

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA

MECÁNICA Y ELÉCTRICA

UNIDAD PROFESIONAL ADOLFO LOPEZ MATEOS.

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA.

ACADEMIA DE ELECTRÓNICA.

APUNTES DE ELECTRÓNICA III.

AUTOR: ING. DANIEL AVELINO GÓMEZ

FECHA DE ELABORACIÓN: ENERO_JUNO DE 2014.

FECHA DE APLICACIÓN: DESDE AGOSTO DE 2014.

Page 2: Apuntes de Electronica III Docx

2

Page 3: Apuntes de Electronica III Docx

3

Page 4: Apuntes de Electronica III Docx

4

Page 5: Apuntes de Electronica III Docx

5

Page 6: Apuntes de Electronica III Docx

6

Page 7: Apuntes de Electronica III Docx

7

Page 8: Apuntes de Electronica III Docx

8

Page 9: Apuntes de Electronica III Docx

9

Page 10: Apuntes de Electronica III Docx

10

Page 11: Apuntes de Electronica III Docx

11

Page 12: Apuntes de Electronica III Docx

12

Page 13: Apuntes de Electronica III Docx

13

Page 14: Apuntes de Electronica III Docx

14

INTRODUCCIÓN

Estos apuntes se realizaron para cubrir el temario de la asignatura “Electrónica III”, del

Departamento de Ingeniería Eléctrica en el Instituto Politécnico Nacional que se imparte en el

sexto semestre de la carrera de ingeniería eléctrica, unidad Zacatenco.

La información incluida en estos apuntes se obtuvo de fuentes que se citan al final en la

Bibliografía y la experiencia de varios años de impartir esta materia, además se hace el uso de

imágenes 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 autónoma (aprender a aprender).

En la primera unidad se abordan los sistemas numéricos, donde el estudiante aprende a

convertir un número de base 10 a binario, octal y hexadecimal, y viceversa, para emplearlos en

la aritmética binaria y hexadecimal, así como en los códigos.

En la segunda unidad el alumno aprende a diseñar 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 analógico para medir la temperatura y las interrupciones para

controlar un proceso.

En la sexta unidad el estudiante realiza un proyecto de interés personal en el área de ingeniería

eléctrica, empleando la tarjeta JM60.

En el programa no se especifican los temas Teoría de los conjuntos, Algebra Booleana y Mapas

de Karnaugh, sin embargo, son temas muy importantes (conocimiento previo) que presento de

manera rápida y fácil, para que el estudiante pueda aprender el nuevo conocimiento, acorde al

nuevo modelo educativo por competencias.

Por ultimo quiero decir que carece de validez la enseñanza que no resulta en un aprendizaje.

Espero que estos apuntes sean un recurso valioso y práctico para encauzar adecuadamente los

procesos de enseñanza y de aprendizaje, de los estudiantes con necesidades educativas de

calidad.

Page 15: Apuntes de Electronica III Docx

15

ÍNDICE

UNIDAD I: Sistemas de Numeración………………………………………………...…16

1.1 Sistemas de numeración signado……………………………………………...…. 16

1.2 Conversión de sistemas decimal a cualquier base………………………………….25

1.3 Conversión de cualquier base a sistema decimal……………………………….......28

1.4 Relación entre los sistemas binarios, octal y hexadecimal……………………...….29

1.5 Sistemas de numeración signado y sus conversiones………………………………31

1.6 Aritmética binaria y hexadecimal…………………………………………………..34

1.7 Códigos……………………………………………………………………………..46

UNIDAD II: Circuitos digitales y dispositivos de memoria…………..………………...61

2.1 Señales analógicas y digitales………………………………………………………61

2.2 Compuertas lógicas…………………………………………………………………73

2.3 Flip-Flops……...……………………………………………………………………81

2.4 Codificadores………………………………………………………………………89

2.5 Decodificadores…………………………………………………………………….93

2.6 Multiplexores……………………………………………………………………….95

2.7 Circuitos aritméticos………………………………………………………………..99

2.8 Estructura y funcionamiento general de las memorias………………………..…..122

2.9 Clasificación de las memorias……………………………………………………..131

2.10 Conexiones de memorias……………………………………………………….134

UNIDAD III: Arquitectura general de una computadora………………………………137

3.1 Diagrama general de una computadora……………………………………………137

3.2 Buses……………………………………………………………………………….142

3.3 Arquitectura de la unidad microprocesador………………………………………..146

3.4 Modelo de programación…………………………………………………………..151

UNIDAD IV: Programación básica de la unidad microprocesador……………………156

4.1 Modos de direccionamiento……………………………………………………….156

4.2 Herramientas de programación……………………………………………………172

4.3 Instrucciones………………………………………………………………………190

4.4 Ejemplos de programación básica………………………………………………205

UNIDAD V: Programación de periféricos…….………………………………………209

5.1 Puertos Digitales…………………………………………………………………..209

5.2 Adquisición de señales analógicas………………………………………………220

5.3 Interrupciones……………………………………………………………………..233

UNIDAD VI: Aplicación de microcontroladores en ingeniería eléctrica…………….244

6.1 Planteamiento del proyecto……………………………………………………….244

6.2 Aceptación del proyecto…………………………………………………………..247

6.3 Supervisión…………………………………….………………………………….255

6.4 Pruebas de aceptación…………………………………….……………………….259

6.5 Demostración y exhibición del proyecto………………………………………….266

Page 16: Apuntes de Electronica III Docx

16

UNIDAD I

1.1 SISTEMAS DE NUMERACIÓN NO SIGNADO.

En la tecnología digital se utilizan muchos sistemas de números. Los más comunes son los sistemas decimal, binario, octal y hexadecimal.

El sistema decimal es sin duda el más conocido por nosotros ya que es una

herramienta de uso cotidiano. Si analizamos algunas de sus características podremos

entender mejor los demás sistemas de numeración.

Sistema decimal.

El sistema decimal se compone de diez números o símbolos. Estos 10 símbolos son

0, 1, 2, 3, 4, 5, 6, 7, 8, 9; al utilizar estos símbolos como dígitos de un número

podemos expresar cualquier cantidad.

El sistema decimal, también conocido como sistema de base 10, es un sistema de

valor posicional en el cual el valor de un digito depende de su posición.

Consideremos el número 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 máximo de los tres dígitos; a este se le conoce

como el digito más significativo (MSD). El número tres tiene el menor valor y se le

denomina digito menos significativo (LSD).

Lo anterior se puede resumir así:

Page 17: Apuntes de Electronica III Docx

17

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

subíndices para indicar la base a la que pertenecen.

La representación 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 numérico decimal no se presta para una

implantación conveniente en sistemas digitales.

En el sistema binario solamente hay dos símbolos o posibles valores digitales, el

cero y el 1. No obstante este sistema de base 2 se puede utilizar para representar

cualquier cantidad que se pueda denotar en decimal u otros sistemas numéricos.

En general se necesitaran muchos dígitos para expresar una cantidad determinada.

El Sistema Binario: Es el sistema de numeración que utiliza internamente el hardware

de las computadoras actuales. Se basa en la representación de cantidades utilizando

los dígitos 1 y 0. Por lo tanto, su base es 2.

Cada dígito de un número representado en este sistema se denomina bit (Contracción

de las palabras en inglés binary digit).

Conversión Decimal a Binario: Para convertir números enteros de decimal a binario,

la forma más simple es dividir sucesivamente el número decimal y los cocientes que

se van obteniendo entre 2, hasta que el cociente en una de las divisiones se haga 0.

La unión de todos los residuos obtenidos escritos en orden inverso nos proporciona el

número equivalente expresado en el sistema binario.

Ejemplos:

Convertir el número decimal 1010 a binario.

Page 18: Apuntes de Electronica III Docx

18

Convertir el número decimal 199210 a binario.

Convertir el número decimal 8610 a binario.

Conversión 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.

Page 19: Apuntes de Electronica III Docx

19

Ejemplo:

o Convertir a número decimal el número 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 4310

Solución 1010112 = 43 10

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

representación de cantidades, los siguientes símbolos:

0, 1, 2, 3, 4, 5, 6, 7.

Este sistema también es de los llamados posiciónales y la posición de sus cifras se

mide con relación a la coma decimal que en caso de no aparecer se supone

implícitamente a la derecha del número.

La aritmética en este sistema es similar a la de los sistemas decimal y binario, por lo

tanto entraremos en su estilo.

Ejemplo 1:

¿Qué número decimal representa el número octal 47018?

Un número octal por tanto puede convertirse fácilmente 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é número decimal representa el número octal 3728?

3728 = 3 x (82) + 7 x (81)+ 2 x (80)

= 3 x 64 + 7 x 8 + 2 x 1

= 250 10

Page 20: Apuntes de Electronica III Docx

20

Ejemplo 3:

¿Qué número decimal representa el número 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.

Conversión de decimal a octal.

Un entero decimal se puede convertir en octal mediante el uso del mismo método de

división repetida que se usó en la conversión decimal a binario, pero con un factor de

división de 8 en lugar de 2.

Ejemplo.

¿Qué número octal representa el número decimal 26610?

266 / 8 = 33 + residuo de 2

3 3/ 8 = 4 + residuo de 1 Resultado

4 / 8 = 0 + residuo de 4 …………………………….26610= 4128

Note que su primer residuo se transforma en el digito menos significo (LSD) del

número octal y el ultimo residuo se convierte más significativo (MSD).

Conversión de octal a binario.

La ventaja principal del sistema numérico octal es la facilidad con la cual puede

realizarse la conversión entre números binarios y octales.

La conversión de octal a binario se lleva a cabo convirtiendo cada digito octal en su

equivalente binario de tres bits.

Los ocho dígitos posibles se convierten como se indica en la siguiente tabla.

Octal 0 1 2 3 4 5 6 7

Binario 000 001 010 011 100 101 110 111

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

convirtiéndolo de manera individual.

Page 21: Apuntes de Electronica III Docx

21

Ejemplo.

Convertir el número octal 4728 a binario (usar 3 bits para representar cada cifra):

4 7 2

100 111 010

Por tanto el número octal 4728 es equivalente al binario 1001110102.

Conversión de binario a octal.

La conversión de enteros binarios en octales es simplemente la operación inversa del

proceso anterior.

Los bits del número 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 conversión de 1001110102 en octal.

1 0 0 1 1 1 0 1 0

4 7 28

Segundo caso.

Algunas veces el número binario no tendrá grupos de 3 bits. En esos casos podemos

agregar uno o dos ceros a la izquierda del MSB del número binario a fin de completar

el último grupo.

Ejemplo.

Para ilustrar lo antes dicho, consideremos la conversión de 110101102 en octal.

0 1 1 0 1 0 1 1 0

3 2 68

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

Page 22: Apuntes de Electronica III Docx

22

Teorema Fundamental de la Numeración (TFN).

Se trata de un teorema que relaciona una cantidad expresada en cualquier sistema de

numeración con la misma cantidad expresada en el sistema decimal.

Ejemplo: Supongamos la cantidad 201,13 expresada en el sistema de numeración de

base tres que utiliza los dígitos para la representación de cantidades 0, 1 y 2 ¿Cuál

será la representación 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 numeración en el que su base

es 16, por tanto, utilizará 16 símbolos para la representación de cantidades. Estos

símbolos 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 símbolos A, B, C, D, E, F:

SIMBOLO VALOR ABSOLUTO

A 10

B 11

C 12

D 13

E 14

F 15

La conversión de hexadecimal a decimal es similar a las conversiones anteriores.

Ejemplo 1: ¿Qué número decimal representa el número hexadecimal 2CA16 utilizando

el TFN (Teorema Fundamental de la Numeración)?

2*162+ C*161+ A*160= 2*162+ 12*161+10*160= 51210+19210+1010= 71410.

Page 23: Apuntes de Electronica III Docx

23

Ejemplo 2: ¿Qué número decimal representa el número hexadecimal 35616 utilizando

el TFN (Teorema Fundamental de la Numeración)?

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

=76810 + 8010 + 610

= 85410.

Conversión de decimal a hexadecimal.

Recordemos que efectuamos la conversión de decimal a binario por medio de la

división repetida por dos y de decimal a octal por medio de la división repetida por 8.

De igual manera la conversión de decimal a hexadecimal se puede efectuar por

medio de la división repetida por 16.

Ejemplo 1.

Convierta el número decimal 42310 a hexadecimal.

Solución:

423 /16 = 26 + residuo de 710 …………………716

26 / 16 = 1 + residuo de 1010 ………….….A16 Resultado

1 /16 = 0 + residuo de 1 ………………..116

Respuesta 42310= 1A716

Ejemplo 2.

Convierta el número decimal 21410 a hexadecimal.

Solución.

214 /16 =13 + residuo de 610…….…….616

Resultado

13 /16 = 0 + residuo de 1310…………….D16

Respuesta 21410 = D616.

Page 24: Apuntes de Electronica III Docx

24

Conversión de hexadecimal a binario.

Al igual que el sistema numérico octal, el sistema hexadecimal se usa principalmente

para abreviar la representación de números binarios. Es una tarea relativamente

simple convertir un número hexadecimal a binario.

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

Ejemplo.

Convertir el número hexadecimal 9F216 a binario (usar 4 bits para representar cada

cifra).

9 F 216 = 9 F 2

1001 1111 0010

Por lo tanto: 9F216 = 1001111100102.

Conversiones de binario a hexadecimal.

Esta conversión es exactamente la operación reciproca del proceso anterior. El

número binario se agrupa en conjunto de cuatro bits y cada grupo se convierte en su

digito hexadecimal equivalente.

Ejemplo.

Convertir el número binario 1011101001102 a hexadecimal.

1110 1010 610

1011101001102 = 1011 1010 0110

B16 A16 616

= BA616

Page 25: Apuntes de Electronica III Docx

25

1.2 CONVERSIÓN DE SISTEMA DECIMAL A CUALQUIER BASE.

Este tipo de conversión se utiliza para cambiar un número N de base 10 a cualquier otra base (b). Para ello, se deben realizar dos pasos por separado:

1. Convertir la parte entera del número N10, dividiéndola, sucesivamente, entre b, hasta obtener un cociente más pequeño que b. La parte entera del número 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 número N10, multiplicándola, 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 fracción exacta se convierta en una fracción periódica. La parte fraccionaria del número buscado lo formarán las partes enteras de los números que se hayan ido obteniendo en cada producto, tomados en ese mismo orden.

Ejemplo1.

Para convertir el número 13,312510 a base 2, en primer lugar hay que dividir, sucesivamente, la parte entera del número, en este caso (1310), entre 2, hasta obtener un cociente más pequeño que 2.

13 L 2 1 6 L 2 0 3 L 2 1 1 L 2 1 Como el último cociente vale 1, ya es más pequeño que el divisor 2, tenemos que parar de dividir. Por tanto,

1310 = 11012 El segundo paso consiste en convertir la parte fraccionaria del número (0,312510). Para ello, se deben realizar los siguientes cálculos:

0,3125 x 2 = 0,625

0,625 x 2 = 1,25; seguimos trabajando solo con la parte fraccionaria. 0,25 x 2 = 0,5

0,5 x 2 = 1,0; terminamos porque la parte fraccionaria es cero

La parte fraccionaria desaparece después de realizar cuatro multiplicaciones. Así pues,

Page 26: Apuntes de Electronica III Docx

26

0,312510 = 0,01012. Recuerde que usamos la coma en lugar del punto. En resumen.

13,312510 = 1101,01012.

Para comprobar si los cálculos están bien hechos, podemos realizar la conversión inversa, es decir, podemos pasar el número 1101,01012 a base 10. De manera que, usando el TFN los cálculos son:

1101,01012 = 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 Observa cómo se vuelve a repetir esta cantidad. 0,4x2=0,8 0,8x2=1,6

Page 27: Apuntes de Electronica III Docx

27

Lo anterior implicaría que tenemos una fracción periódica (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 fracción

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

= 4 + 8 + 16 + 64 + 128

= 22010.

Para comprobar la parte fraccionaria obtenida en el Sistema Binario al Sistema

Decimal, tenemos:

=0,5 + 0,25 + 0,125 + 0,015625

=0,890625 0,9

Page 28: Apuntes de Electronica III Docx

28

1.3 CONVERSIÓN DE CUALQUIER BASE A SISTEMA DECIMAL.

Si se tiene un número en base n, por ejemplo 1637(base 7), el proceso para convertirlo

a base decimal es el siguiente:

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

Ejemplo.

Aplicar este proceso para convertir el número binario 10012 a decimal.

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

Este método es útil para números grandes, ya que para números pequeños se puede

utilizar el cálculo mental según las potencias de la base, como se explicó

anteriormente. De ser los números muy grandes, habría que conocer las tablas de

multiplicar de las diferentes bases, lo que resultaría tedioso. De ahí la utilización de

éste sencillo método de multiplicaciones y sumas.

De todos modos, es altamente recomendable conocer las tablas de multiplicar del 2,

del 8, y del 16; debido al amplio uso que se le da a éstos sistemas en informática y

sistemas de computación.

Page 29: Apuntes de Electronica III Docx

29

1.4 RELACIÓN ENTRE LOS SISTEMAS BINARIOS, OCTAL Y

HEXADECIMAL.

Los sistemas octal y hexadecimal son la abreviatura de los sistemas binarios,

es decir, representarlos de forma más compacta.

Ejemplo 1.

Convertir el número binario 101101112 a octal y hexadecimal.

Número en binario convertido a grupos de 3: 010 110 111

Cero agregado

Equivalente en base ocho 2 6 7

Resultado: 101101112 = 2678 = 267O (octal)

Número en binario convertido a grupos de 4: 1011 0111

Equivalente en base dieciséis B 7

Por lo tanto 101101112 = 2678 = B7!6.

Comprobación.

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 número hexadecimal 9B16 a binario y octal.

Donde 916 = 10012 y B16 = 10112. Por lo tanto 9B16 = 100110112.

100110112 010 011 011

2 3 3 Equivalente octal.

Por lo tanto: 9B16 = 100110112 = 2338.

Page 30: Apuntes de Electronica III Docx

30

Comprobación. 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 número octal 3578 a binario y hexadecimal.

Donde 38=0112, 58=1012 y 78= 1112.

3578 = 0111011112.

Dado que 3578 = 0111011112, reagrupándolos 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.

Comprobación.

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 + 32 + 64 + 128.

= 23910.

EF16 = F x 160 + E x 161

= 15 x 1 + 14 x 16

= 15 + 224

= 23910.

Page 31: Apuntes de Electronica III Docx

31

1.5 SISTEMAS DE NUMERACIÓN SIGNADO Y SUS CONVERSIONES.

En los apartados anteriores solo vimos números no signados (positivos), pero en la

práctica nos encontramos con números negativos, por lo cual veremos los

complementos a 1 y 2.

i. Complemento a dos.

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

C2N = 2n – N.

Veamos un ejemplo: tomemos el número N = 4510 = 1011012, que tiene 6 bits, y calculemos su complemento a dos:

N = 4510; n = 610; 26 = 6410 y, por tanto: C2N = 6410 – 4510 = 1910 = 0100112.

ii. Complemento a uno.

El complemento a uno de un número N, compuesto por n bits es, por definición, una unidad menor que el complemento a dos, es decir:

C1N = C2N – 1.

Y, por la misma razón:

C2N = C1N + 1.

Calculemos el complemento a uno del mismo número del ejemplo anterior:

Siendo N = 4510 = 1011012, y su complemento a dos C2N = 0100112

C1N = C2N – 1 = 0100112 – 0000012 = 0100102

C1N = 0100102

Da la sensación de que calcular el complemento a uno no es más que una forma elegante de complicarse la vida, y que no va a ser más sencillo restar utilizando el complemento a dos, porque el procedimiento para calcular el complemento a dos es más difícil y laborioso que la propia resta. Pero es mucho más sencillo de lo que parece.

En realidad, el complemento a uno de un número binario es el número resultante de invertir los UNOS y CEROS de dicho número.

Page 32: Apuntes de Electronica III Docx

32

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 cálculo 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 (súmale 1):

C2N = 10010010112.

Representación de números enteros con signo.

Existen tres representaciones que han sido usadas para manejar internamente números enteros con signo en las computadoras digitales. Estas son:

Magnitud y signo.

Complemento a 1 (complementos a la base disminuida).

Complemento a 2 (complemento a la base).

La más sencilla de las tres es la representación en magnitud y signo; sin embargo, es la que ocasiona mayores problemas al realizar operaciones aritméticas. Esta representación fue usada en las primeras computadoras digitales pero en la actualidad ha caído en desuso.

Las dos representaciones que usan complemento permiten efectuar operaciones aritméticas con relativa facilidad, esto ha contribuido a que ambas hayan sido adoptadas en las computadoras actuales, siendo la representación en complemento a 2 la más usada. A continuación se muestra esto.

Page 33: Apuntes de Electronica III Docx

33

Ejemplo.

Considere el número decimal +15 empleando un bit más para su representación (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 número decimal +15 empleando un bit más para su representación, 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 también 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 conclusión el complemento a uno y dos nos permiten obtener respectivamente los números 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.

Page 34: Apuntes de Electronica III Docx

34

1.6 ARITMÉTICA BINARIA Y HEXADECIMAL.

La Unidad Aritmético Lógica, en la CPU del procesador, es capaz de realizar operaciones aritméticas, con datos numéricos expresados en el sistema binario. Naturalmente, esas operaciones incluyen la adición, la sustracción, el producto y la división. Las operaciones se hacen del mismo modo que en el sistema decimal, pero debido a la sencillez del sistema de numeración, pueden hacerse algunas simplificaciones que facilitan mucho la realización de las operaciones.

Suma en binario.

Para aprender a sumar, con cinco o seis años de edad, tuviste que memorizar las 100 combinaciones posibles que pueden darse al sumar dos dígitos decimales. La tabla de sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar cuatro combinaciones posibles:

+ 0 1

0 0 1

1 1 0 + 1

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

Ejemplo 1.

Sumar los números binarios 1001002(3610) y 100102(1810).

1001002……………. 3610

+ 0100102 …………..1810

1101102…………….5410

Se observa que no se ha tenido ningún acarreo en las sumas parciales.

Page 35: Apuntes de Electronica III Docx

35

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 subíndice 10 o D para el decimal y el subíndice 2 o B para el binario.

125D………………………………1111101B

+ 86D………………………………1010110B

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

Sustracción en binario.

La técnica de la resta en binario es, nuevamente, igual que la misma operación en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia.

- 0 1

0 0 1

1 1 + 1 0

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

Page 36: Apuntes de Electronica III Docx

36

0 – 0 = 0

1 – 0 = 1

1 – 1 = 0

La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos algunos ejemplos:

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 fácil confundirse. Tenemos interiorizado el sistema decimal y hemos aprendido a restar mecánicamente, 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 números largos en grupos. En el siguiente ejemplo, vemos cómo se divide una resta larga en tres restas cortas:

1001100111012 1001 1001 1101

- 0101011100102 - 0101 0111 0010

0100001010112 0100 0010 1011

Restar en binario usando el complemento a uno.

Y, por fin, vamos a ver cómo facilita la resta el complemento a uno. La resta binaria de dos números puede obtenerse sumando al minuendo el complemento a uno del sustraendo. Veamos algunos ejemplos:

Primer ejemplo:

Page 37: Apuntes de Electronica III Docx

37

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:

Page 38: Apuntes de Electronica III Docx

38

En el resultado de la suma nos sobra un bit, que se desborda por la izquierda. Pero, como el número resultante no puede ser más largo que el minuendo, el bit sobrante se desprecia.

Hagamos esta otra resta, 21910 – 2310 = 19610, utilizando el complemento a dos:

21910 = 110110112 2310 = 000101112 C2 de 23 = 11101001

El resultado de la resta será: 110110112 + 111010012 = 1110001002.

Despreciando el bit que se desborda por la izquierda, llegamos al resultado correcto:

110001002 = 19610.

Multiplicación binaria.

Hay varios métodos de hacer la multiplicación binaria, a continuación se muestra la manera en que aprendimos a multiplicar.

Comprobación

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

Page 39: Apuntes de Electronica III Docx

39

Este método de trabajar es bueno, pero no es práctico para computadoras porque el tipo de desplazamiento requerido hace que sea difícil su implementación.

Uno de los métodos para la multiplicación usado por las computadoras es la suma repetida. Para multiplicar 7 x 55 por ejemplo, la computadora puede sumar 7 veces el 55. Para números más grandes, este método es lento.

Un método más rápido para computadoras y microprocesadores usa un algoritmo de sumar y desplazar a la derecha.

Los números 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. Después el acumulador se desplazara una posición a la derecha. El siguiente digito del multiplicador es checado y se repite el paso anterior, hasta llegar al bit más significativo del multiplicador.

A continuación se muestra el proceso para el mismo ejercicio que se realizó antes.

Comprobación

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

Page 40: Apuntes de Electronica III Docx

40

División binaria.

La división también se puede realizar de varias maneras. A continuación se muestra la manera en que aprendimos a dividir.

Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo número de cifras (100 entre 110, en el ejemplo). Si no puede dividirse, se intenta la división tomando un dígito más (1001 entre 110).

Si la división es posible, entonces, el divisor sólo podrá estar contenido una vez en el dividendo, es decir, la primera cifra del cociente es un UNO. En ese caso, el resultado de multiplicar el divisor por 1 es el propio divisor. Restamos las cifras del dividendo del divisor y bajamos la cifra siguiente.

El procedimiento de división continúa del mismo modo que en el sistema decimal.

Otro método de la división la cual es fácil 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 número de sustracciones al producirse un acarreo.

Este método es simple, pero para números grandes es lento.

Para acelerar la división con números 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 más significativo del dividendo. Si el bit de sobreflujo o acarreo producido por la resta es cero entonces la resta fue posible y se pone en 1 el registro del cociente. El resultado de la resta es desplazado a la izquierda un lugar. El divisor es restado del resultado desplazado. Cuando el bit de sobreflujo o acarreo es 1 porque el divisor es más grande, se pone 0 en el siguiente bit del registro del cociente. El divisor es agregado al resultado de la resta para restituir el valor. Este número es desplazado a la izquierda y se procede a resta nuevamente hasta terminar.

A continuación se muestra un ejemplo para comprenderlo mejor.

Page 41: Apuntes de Electronica III Docx

41

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

Page 42: Apuntes de Electronica III Docx

42

Aritmética hexadecimal. En el sistema hexadecimal, al igual que en el sistema decimal, binario y octal, se pueden hacer diversas operaciones matemáticas. Entre ellas se encuentra la resta entre dos números en sistema hexadecimal, la que se puede hacer con el método de complemento a 15 o también utilizando el complemento a 16. Además de éstas, deberemos manejar adecuadamente la suma en sistema hexadecimal, explicada a continuación: Suma. La adición de los números hexadecimales se efectúa de manera similar a la adición decimal, siempre y cuando recuerde que el mayor digito hexadecimal es (F) y no 9 para realizar esta operación se sugiere el siguiente procedimiento: 1.-sume los dos dígitos hexadecimales en decimal, insertando mentalmente el equivalente decimal para números 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 posición. Ejemplo. Sumar los números 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 fácilmente 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 números 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).

Page 43: Apuntes de Electronica III Docx

43

Para entender la resta en complemento a 15 lo analizaremos con un ejemplo. Esta es la resta que tenemos que resolver: A4FC916

- DE816

——————— Primero tenemos que hacer que el minuendo y el sustraendo tengan la misma cantidad de números. Para ello, añadiremos ceros al sustraendo hasta que sean suficientes. A4FC916

- 00DE816

————————— Después, crearemos un nuevo número con la misma cantidad de números que el nuevo sustraendo. Como en el sistema hexadecimal el mayor número que tenemos es el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como números tiene el sustraendo. La resta se hace siguiendo las normas generales de la resta común. FFFFF16

- 00DE816

————————— FF21716 complemento a 15 de 00DE816.

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 habrás dado cuenta que este nuevo número tiene más cifras que los números iníciales que teníamos que restar. Tenemos que quitar el número de la izquierda (en este caso, el 1) y sumarlo. A41E016

+ 116

—————— A41E116.

Por lo tanto. Hexadena que presto la F a C. A4FC916 116 + 816 = 916

- 00DE816 E16 + E16 = C16 + 1016 = 1410 + 1410 = 1210 + 1610

————————— Como F presto a C, esta se convirtió en E. A41E116. 116 + D16 = E16 = 1410. 416 + 016 = 416. A16 + 016 = A16.

Comprobación

Sumamos la diferencia con el sustraendo,

para obtener el minuendo.

Page 44: Apuntes de Electronica III Docx

44

Complemento a 16. También podemos hacer la resta de dos números hexadecimales utilizando el complemento a 16, siguiendo un proceso similar que en el caso del complemento a 15. Para resolver la resta, tendremos que sumar al minuendo el complemento a dieciséis 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 números, al igual que ocurre en el proceso del complemento a 15. Para ello, añadiremos ceros al sustraendo hasta que sean suficientes. A4FC916

- 00DE816

————————— Después, crearemos un nuevo número con la misma cantidad de números que el nuevo sustraendo. Como en el sistema hexadecimal el mayor número que tenemos es el 15, que corresponde a la letra F, tendremos que escribir la F tantas veces como números tiene el sustraendo. La resta se hace siguiendo las normas generales de la resta común. FFFFF16

- 00DE816

————————— FF21716

. Ahora tenemos que sumarle 1 a la diferencia obtenida. Este paso es muy importante, ya que es la diferencia entre hacer la resta en complemento a 15 u 16, y se suele olvidar fácilmente. Además, recuerda que estás sumando en sistema hexadecimal, siguiendo el mismo proceso explicado anteriormente. FF21716

+ 116

————————— FF21816 complemento a 16 de 00DE816

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

Page 45: Apuntes de Electronica III Docx

45

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

+ FF21816

————————— 1A41E116.

Con la suma obtenemos el resultado 1A41E1. Te habrás dado cuenta que este nuevo número tiene más cifras que los números iníciales que teníamos que restas, cosa imposible en una resta (que la diferencia sea mayor que el minuendo y el sustraendo). Por eso, y estando en complemento a 16, tendremos que despreciar (eliminar) el número 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 número hexadecimal DE816 de A4FC916 como lo haría en forma análoga al sistema decimal.

E A 4 F C 916 Donde: 916 - 816 = 116

- D E 816 C16 – E16, no se puede hacer y pedimos una hexadena al siguiente (F) A 4 1 E 116 C16 + 1016 = 1210 + 1610 = 2810; 2810 – E16 = 2810 – 1410 = 1410 = E16.

E16 – D16 = 1410 – 1310 = 110 = 116.

A416 = A416.

Obteniendo el mismo resultado que con complemento a 16.

Page 46: Apuntes de Electronica III Docx

46

1.7 CÓDIGOS.

No toda la información que maneja un sistema digital es numérica, e inclusive, para la información numérica a veces no es conveniente utilizar el sistema binario descrito antes. Por ello es conveniente idear formas diferentes de representar (codificar) información diversa usando solamente ceros y unos. CÓDIGOS NUMÉRICOS. Existen varias situaciones en las que no es conveniente utilizar el binario natural para manejar información numérica, entre ellas se pueden mencionar las siguientes:

Cuando se busca una conversión más sencilla decimal - binario (códigos BCD).

Cuando además de lo anterior se van a manejar números negativos (Códigos BCD autocomplementarios).

Cuando se busca minimizar errores de censado en “encoders” de posición de una cantidad a otra (código gray).

Cuando se quiere detectar errores en transmisión de datos (código de paridad).

Cuando se quiere detectar y corregir errores en transmisión de datos (código Hamming)

A continuación se tratan algunos de estos códigos.

CÓDIGO BCD (Binario Codificado en Decimal). Los códigos BCD nos permiten representar cada uno de los dígitos decimales (0,...,9) mediante 4 bits. El más sencillo de los códigos BCD es el BCD8421 o BCD “natural”, que consiste simplemente en representar cada dígito decimal por su binario equivalente. Así tenemos:

Dígito Decimal

BCD8421 Dígito Decimal

BCD8421

0 0000 5 0101

1 0001 6 0110

2 0010 7 0111

3 0011 8 1000

4 0100 9 1001

Page 47: Apuntes de Electronica III Docx

47

La conversión con el sistema decimal se realiza directamente, en grupos de cuatro bits por cada dígito decimal con ponderación 8421. Este código tiene aplicación en visualizadores (displays) hechos con leds o LCD, los cuales poseen previamente convertidores que transforman el grupo de cuatro bits BCD en otro especial, llamado 7 segmentos.

Ejemplo 1.

Codificar en BCD el número decimal 85 (recuerda usar 4 bits).

85

1000 0101

Conversión directa típica entre un número en decimal y un BCD.

Ejemplo 2.

¿Qué número decimal representa el número binario 0011100101012? (Recuerda agruparlos en 4 bits). 0011 1001 01012 = 39510.

En el código 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 conversión de un número decimal binario y la codificación binaria de un número decimal. En cada caso el resultado final es una seria de bits. Los bits obtenidos de la conversión son dígitos binarios. Los bits obtenidos de la codificación son combinaciones de unos ceros arregladas de acuerdo a las reglas del código 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 número binario y otras veces representar alguna otras cantidad discreta de información como se especifica en un código binario dado. El código BCD por ejemplo, ha sido escogido de tal manera que es un código y una conversión binaria directa siempre y cuando los números decimales sean algún entero entre 0 y 9. Para números mayores que 9, la conversión y la codificación son completamente diferentes. Este concepto es tan importante que vale la pena repetirlo usando otro ejemplo: la conversión binaria del decimal 1310 es 11012; la codificación decimal 1310 con BCD es 00010011BCD.

Decimal Conversión Binaria Codificación BCD

1310 11012 0001 0011BCD

Page 48: Apuntes de Electronica III Docx

48

Suma BCD.

Las operaciones aritméticas se hacen siguiendo las reglas convencionales. La mayor dificultad se encuentra en la generación de acarreos.

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

Ejemplo : 3D 0011BCD

+ 5D + 0101BCD

8D 1000BCD

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

6D(01102):

Ejemplo :

6 D 0110BCD

+ 8 D + 1000BCD

14 D 1110BCD error

Al sumar en binario 0110 + 1000 se obtiene un código BCD inválido, que hay que corregir para producir un resultado correcto, es decir un acarreo y 0100. Esto es:

0110BCD

+ 1000BCD

1110BCD Código BCD invalido

+ 0110BCD Factor de correción

1 0100BCD Esto significa el numero 14D( 0001 0100BCD)

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

Ejemplo:

9 D 1001BCD

+ 8 D + 1000BCD

17 D 1 0001BCD error

En este caso el resultado es válido (tienen significado en decimal) pero incorrecto (ya que es el número 11 en BCD). La corrección es:

1001BCD

+ 1000BCD

1 0001BCD error

+ 0110BCD Factor de corrección.

10111BCD Esto significa 1l número 17D (0001 0111BCD).

Page 49: Apuntes de Electronica III Docx

49

La principal ventaja del código BCD es la facilidad relativa para convertir a y desde decimal. Sólo se requiere recordar los grupos codificados de 4 bits para los dígitos decimales del 0 al 9. Esta facilidad de conversión es especialmente importante desde el punto de vista de circuitos, porque en un sistema decimal son los circuitos

lógicos los que ejecutan las conversiones a y desde decimal.

El código BCD se usa en máquinas digitales siempre y cuando se aplique información digital, ya sea como entradas o mostradas como salidas.

Los voltímetros digitales, contadores de frecuencia y relojes digitales usan todos BCD, porque despliegan la información de salida en decimal. Las calculadoras electrónicas usan BCD porque los números de entrada vienen en decimal vía el teclado y los

números de salida son mostrados en decimal.

BCD no es a menudo usado en computadoras digitales modernas de alta velocidad por dos buenas razones. Primero, como ya fue señalado, el código BCD para un número decimal dado requiere más bits que el código binario directo y es por consiguiente menos eficiente. Esto es importante en computadoras digitales porque el número de lugares en memoria donde estos bits pueden ser almacenados es limitado. Segundo, los procesos aritméticos para números representados en código BCD son más complicados que en binario ordinario y requieren así de circuitería más compleja. La circuitería más compleja contribuye a una disminución en la velocidad a la cual tienen lugar las operaciones aritméticas. Las calculadoras que usan BCD son, por

consiguiente, considerablemente más lentas en su operación que las computadoras.

CÓDIGO BCD EXCESO-3.

El código BCD exceso-3 se obtiene a partir del código BCD natural, simplemente sumando 310 (00112) a cada código BCD de cada dígito decimal. Esto se resume en la siguiente tabla.

Dígito Decimal

BCD EXCESO-3

Dígito Decimal

BCD EXCESO-3

0 0011 5 1000

1 0100 6 1001

2 0101 7 1010

3 0110 8 1011

4 0111 9 1100

Este código resulta de utilidad en aplicaciones donde se requiere realizar operaciones

aritméticas usando complementos. Este código es llamado autocomplementario

porque el complemento a 9 de un número decimal puede ser obtenido

complementando cada bit individualmente y el resultado sigue siendo un código válido

en BCD exceso 3.

Ejemplo: Representar el número 90710 en BCD exceso-3 y usar el complemento a 1

para encontrar el complemento a 9 del número:

90710 = 1100 0011 1010exc-3

0011 1100 0101exc-3 complemento a 1

= 09210 complemento a 9.

Page 50: Apuntes de Electronica III Docx

50

CÓDIGO BCD 2421.

Este es otro código BCD autocomplementario, y su nombre (2421) indica la

ponderación de sus bits para obtener su equivalente en decimal y viceversa, en la

siguiente tabla se ilustra este código.

Dígito

Decimal

BCD

2421

Dígito

Decimal

BCD

2421

0 0000 5 1011

1 0001 6 1100

2 0010 7 1101

3 0011 8 1110

4 0100 9 1111

Ejemplo: Representar el número 90710 en BCD 2421 y usar el complemento a 1 para

encontrar el complemento a 9 del número:

90710 = 1111 0000 11012421

0000 1111 00102421 complemento a 1

= 09210 complemento a 9.

CÓDIGO 2 DE 5 (BIQUINARIO).

El código 2 de 5 es un código multibit no ponderado, es decir, los códigos no pueden

obtenerse usando una expresión polinomial; este código está diseñado para la

detección de errores en diferentes tipos de cálculos y operaciones con registros de

corrimiento. Se usan cinco bits para representar los dígitos decimales (0-9). Como el

nombre lo implica sólo dos de los cinco bits son 1.

Dígito

Decimal

Código

2 de 5

Dígito

Decimal

Código

2 de 5

0 00011 5 01100

1 00101 6 10001

2 00110 7 10010

3 01001 8 10100

4 01010 9 11000

Ejemplo: Representar el número decimal 23710 en código 2 de 5.

23710 = 00110 01001 100102 de 5.

Page 51: Apuntes de Electronica III Docx

51

CÓDIGO GRAY.

El código Gray es un tipo especial de código binario que no es ponderado (los dígitos que componen el código no tienen un peso asignado).

Su característica es que entre una combinación de dígitos y la siguiente, sea ésta anterior o posterior, sólo hay una diferencia de un dígito. Por eso también se le llama código progresivo.

Esta progresión sucede también entre la última y la primera combinación. Por eso se le llama también código cíclico. (Ver la tabla que se muestra abajo).

El código Gray es utilizado principalmente en sistemas de posición, ya sea angular o lineal. Sus aplicaciones principales se encuentran en la industria y en robótica.

En robótica se utilizan unos discos codificados para dar la información de posición que tiene un eje en particular. Esta información se da en código Gray.

La tabla siguiente es una lista del código Gray de cuatro bits para números decimales del 0 al 15. Los números binarios se muestran en la tabla como una referencia. Como los números binarios, el código Gray puede tener cualquier número de bits.

DECIMAL BINARIO GRAY

0 0000 0000

1 0001 0001

2 0010 0011

3 0011 0010

4 0100 0110

5 0101 0111

6 0110 0101

7 0111 0100

8 1000 1100

9 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 número 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 código Gray: 0100 a 1100 (de 7 a 8 en decimal) o de 1000 a 0000 (de 15 a 0 en decimal) sólo ha cambiado una cifra.

Page 52: Apuntes de Electronica III Docx

52

La característica de pasar de un código al siguiente cambiando sólo un dígito asegura menos posibilidades de error.

No es ponderado ni es un código aritmético; esto es, no hay pesos específicos asignados a las posiciones de los bits. El carácter importante del código Gray es que exhibe solo un cambio de bit único de un número de código al siguiente. Esta propiedad es muy importante para muchas aplicaciones, tales como codificadores de posición axial, donde la susceptibilidad a errores se incrementa con el número de cambios de bit entre números adyacentes en una secuencia.

CONVERSIÓN DE BINARIO A CÓDIGO GRAY.

La conversión entre el código binario y el código Gray a veces es muy útil. Primeramente, mostraremos cómo convertir un número binario a un número de código Gray. Se aplican las siguientes reglas:

El bit más significativo (el más a la izquierda) en el código Gray es el mismo que el MSB correspondiente en el número binario.

Yendo de izquierda a derecha, sume cada par adyacente de bits del código binario, para obtener el siguiente bit del código Gray. Descarte acarreos.

Ejemplo: Paso 1. El digito del código Gray más a la izquierda es el mismo que el digito del código binario más a la izquierda.

1 0 1 1 0 Binario

1 Gray

Paso 2. Sume el bit de código binario más a la izquierda el bit adyacente.

1 + 0 1 1 0 Binario

1 1 Gray

Paso 3. Sume el siguiente par adyacente.

1 0 + 1 1 0 Binario

1 1 1 Gray

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

1 0 1 + 1 0 Binario

1 1 1 0 Gray

Paso 5. Sume el último par adyacente.

1 0 1 1 +0 Binario

1 1 1 0 1 Gray

La conversión ha sido completada; el código Gray es 11101.

Page 53: Apuntes de Electronica III Docx

53

CONVERSIÓN DE GRAY A BINARIO.

Para convertir de código Gray a Binario, se utiliza un método similar, pero con algunas diferencias. Se aplican las siguientes reglas:

El bit más significativo (el más a la izquierda) es el código binario es el mismo que el bit correspondiente en el código Gray.

Sume cada bit generado del código binario al bit del código Gray en la siguiente poción adyacente. Descarte acarreos.

Ejemplo:

Paso 1. El digito del código binario más a la izquierda es el mismo que el digito del código Gray más a la izquierda.

1 1 0 1 1 Gray

1 Binario

Paso 2. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos. (En negrilla bit que se suman).

1 1 0 1 1 Gray

1 0 Binario

Paso 3. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.

1 1 0 1 1 Gray

1 0 0 Binario

Paso 4. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición.

1 1 0 1 1 Gray

1 0 0 1 Binario

Paso 5. Sume el último bit del código binario que se acaba de generar al bit del código Gray en la siguiente posición. Descarte acarreos.

1 1 0 1 1 Gray

1 0 0 1 0 Binario

La conversión ha sido completada; el código binario es 100102.

Page 54: Apuntes de Electronica III Docx

54

APLICACIÓN A SENSORES ÓPTICOS.

La principal característica del código Gray (que sólo cambia un bit entre dos códigos consecutivos) es muy utilizada en sensores ópticos para codificar la posición (angular o lineal) mediante discos o cintas codificadas en Gray, dependiendo del caso.

Por ejemplo, en la siguiente figura se ilustra la codificación en dos colores (blanco y negro) de un disco que será montado sobre la flecha de un motor. Se usa el código Gray de 4 bits para codificar la posición angular de la flecha. Cada sector en el disco tiene un código de posición de 0 a 15. Se usarán sensores opto electrónicos reflectivos para determinar la posición de la flecha en un sector o sea, con una resolución de 1/16 de vuelta, o de 22.5°. Si se desea una mejor resolución se deberán usar más bits, y por lo tanto mayor número 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 posición. En cambio, si es en binario este error puede ser tan grande como 180°.

Page 55: Apuntes de Electronica III Docx

55

CÓDIGOS ALFANUMÉRICOS.

Muchas aplicaciones de sistemas digitales (especialmente en las computadoras o la transmisión de textos) requieren del procesamiento de datos como números, letras y símbolos especiales. Para manejar estos datos usando dispositivos digitales, cada símbolo debe estar representado por un código binario. El código alfanumérico más generalizado en la actualidad es el denominado ASCII (American Standard Code for Information Interchange). Este es un código de 7 bit. La siguiente tabla muestra una parte del código ASCII:

Rango (hexadecimal Caracteres

0 al 19 códigos de control y comunicaciones

30 al 39 dígitos del 0 al 9

41 al 5A letras mayúsculas de la A a la Z

61 al 7A letras minúsculas de la “a” a la z

Ejemplo: la palabra "Start" se representa en código ASCII como sigue

1010011 1110100 1100001 1110010 1110100

S t a r t

Page 56: Apuntes de Electronica III Docx

56

CÓDIGO DE SIETE SEGMENTOS.

Un dispositivo muy generalizado por su sencillez y bajo costo en dispositivos digitales de visualización es el exhibidor o display de siete segmentos, el cual consiste en un arreglo de siete indicadores luminosos (LED’s) u opacos (cristal líquido) arreglado como se muestra en la siguiente figura. Existen dos tipos de exhibidores de siete segmentos construidos con LED’s, estos son los de ánodo común y los de cátodo común, los cuales se muestran también en la figura.

Este tipo de displays permite la representación de información de tipo numérico principalmente, sin embargo, también permite algunos caracteres alfabéticos, 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 código de 7 segmentos para un display de cátodo común para los dígitos decimales y el equivalente en BCD:

Decimal Entradas en binario.

Salidas para el display de 7 segmentos

Números A B C D a b c d e f g

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

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

2 0 0 1 0 1 1 0 1 1 0 1

3 0 0 1 1 1 1 1 1 0 0 1

4 0 1 0 0 0 1 1 0 0 1 1

5 0 1 0 1 1 0 1 1 0 1 1

6 0 1 1 0 1 0 1 1 1 1 1

7 0 1 1 1 1 1 1 0 0 0 0

8 1 0 0 0 1 1 1 1 1 1 1

9 1 0 0 1 1 1 1 1 0 1 1

10 1 0 1 0 x x x X x x x

11 1 0 1 1 x x x X x x x

12 1 1 0 0 x x x X x x x

13 1 1 0 1 x x x X x x x

14 1 1 1 0 x x x X x x x

15 1 1 1 1 x x x X x x x

Page 57: Apuntes de Electronica III Docx

57

CÓDIGOS PARA DETECCIÓN Y CORRECCIÓN DE ERRORES.

Los sistemas digitales pueden cometer errores de vez en cuando. Aunque los dispositivos en circuito integrado tales como microprocesadores, compuertas lógicas o circuitos de memoria carecen de partes móviles y por lo tanto tienen alta confiabilidad, pero los dispositivos que tienen interacción con partes móviles son menos confiables. Se pueden producir errores por polvo en las cabezas lectoras de una unidad de disco.

También es muy común la ocurrencia de errores en la transmisión de datos a distancia. Los datos que se transmiten por modem (a través de línea telefónica) pueden recibirse incorrectamente si la línea tiene ruidos. También las perturbaciones en el suministro de energía eléctrica pueden producir errores. En resumen, cuando se leen, escriben o transmiten caracteres de un sitio a otro, pueden producirse errores.

TRANSMISIÓN SERIE Y PARALELO.

Existen dos métodos básicos para transmitir información entre dos dispositivos digitales, como se ilustra en la siguiente figura, la transmisión de datos digitales en paralelo ocupa una línea física por cada bit de los datos a enviar, esto hace que este tipo de transmisión sea usada en distancias relativamente cortas (unos cuantos metros), ya que de otra manera se vuelve muy costosa

Por otro lado, la transmisión de datos a distancias muy grandes (del orden de cientos de metros a miles de kilómetros) hace necesario usar menos líneas físicas, en este caso puede usarse el esquema de la figura siguiente o transmisión en serie, la cual utiliza una sola línea para enviar el número de bits que se desee.

La transmisión en serie resulta económica por el número reducido de líneas que requiere e incluso el hecho de que permite usar en lugar de líneas conductoras, el aire o el vacío, cuando en lugar de pulsos eléctricos se usa radiación electromagnética (luz, ondas de radio, ultrasonido, etc.). A cambio de esta economía, el transmisor y el receptor se vuelven un poco más complejos, además de que el trayecto que recorre la información (por ser largo) se vuelve más susceptible a interferencias.

Page 58: Apuntes de Electronica III Docx

58

CÓDIGO DE PARIDAD.

Un método muy simple, pero ampliamente utilizado por su sencillez para detectar errores en transmisión de datos consiste en añadir un bit de paridad (p) a cada carácter, normalmente en la posición más significativa.

En el código de paridad par, el bit de paridad (p) se elige de manera que el número de bits 1 del dato sea un número par incluyendo el bit de paridad. En el código de paridad impar, el bit de paridad se elige de modo que el número de bits 1 (incluyendo el de paridad) del dato sea impar.

De esta manera, cuando cambia un bit durante la transmisión, el número de unos en el carácter recibido tendrá la paridad equivocada y el receptor sabrá que se ha producido un error.

Ejemplo: La siguiente tabla muestra un código de paridad par de 8 bits para los caracteres ASCII “FIE.”

Ejemplo Si un transmisor envía la información anterior y hay errores en la transmisión, suponiendo que el receptor recibe la información, mostrada en la siguiente tabla, donde se anotan los datos que llegaron erróneos y si se detectó o no el error, agrega en la columna vacía (bits erróneos) cuantos bits cambiaron en la transmisión.

Como puede verse, el código de paridad no siempre resulta efectivo para detectar errores. ¿Qué tipo de errores si detecta y cuáles no?

Page 59: Apuntes de Electronica III Docx

59

CÓDIGO DE HAMMING.

Richard Hamming (1950) ideó un método no sólo para detectar errores sino también para corregirlos, y se conoce como código Hamming. En él se añaden k bits de paridad a un carácter de n bits, formando un nuevo carácter de n + k bits. Los bits se enumeran empezando por 1, no por 0, siendo el bit 1, el de la izquierda, el más significativo. Todo bit cuyo número sea potencia de 2 es un bit de paridad y todos los demás se utilizan para datos.

Para un carácter ASCII de 7 bits, se añaden 4 bits de paridad. Los bits 1, 2, 4 y 8 son bits de paridad; 3, 5, 6, 7, 9, 10 y 11 son los 7 bits de datos. Cada bit de paridad comprueba determinadas posiciones de bit y se ajusta de modo que el número total de unos en las posiciones comprobadas sea par, si se trata de paridad par.

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 código de Hamming para el carácter "b".

Código ASCII para "b" (62H = 110 0010)

D6=1 D5=1 D4=0 D3=0 D2=0 D1=1 D0=0

Código de Hamming para "b"

D6 D5 D4 D3 D2 D1 D0

1,3,5,7,9,11(para 2 unos) 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)

Page 60: Apuntes de Electronica III Docx

60

Explicación

El bit 1 se puso a cero porque los bits 3 y 5 están en uno, para tener paridad par.

El bit 2 se puso a cero porque los bits 3 y 10 están en uno, para tener paridad par.

El bit 4 se puso a uno porque el bit 5 está en uno, para tener paridad par.

El bit 8 se puso a uno porque el bit 10 está en uno, para tener paridad par.

El carácter ASCII "b" se representa por el número binario 1100010.

El código de Hamming para "b" en binario es 00111001010.

Ejemplo:

Considere que pasaría si el bit 1 se modificara durante la transmisión. El carácter recibido sería 10111001010 en lugar de 00111001010. El receptor comprobaría 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 número total de unos en los bits 1, 3, 5, 7, 9 y 11 debería de ser par, ya que se está usando paridad par. El bit incorrecto debe ser uno de los bits comprobados por el bit de paridad 1, es decir, uno de los bits 1, 3, 5, 7, 9 u 11. Como el bit de paridad 2 es correcto, sabemos que los bits 2, 3, 6, 7, 10 y 11 son correctos, de forma que el error no estaba en los bits 3, 7 u 11. Esto deja los bits 1, 5 y 9. El bit de paridad 4 es correcto, lo cual significa que los bits 4, 5, 6 y 7 no contienen errores. Esto reduce la elección al 1 o 9. El bit de paridad 8 también es correcto y, por lo tanto, el bit 9 es correcto. Por consiguiente, el bit incorrecto debe ser el 1. Dado que se recibió como un 1, debería haberse transmitido como un 0. En esta forma se pueden corregir los errores.

Page 61: Apuntes de Electronica III Docx

61

UNIDAD II

2.1 SEÑALES ANALÓGICAS Y DIGITALES.

La electrónica se divide en dos categorías.

a) Electrónica analógica:

Trata de circuitos en los que las señales eléctricas pueden tomar infinidad de valores dentro de un rango determinado.

Ejemplo del espectro medido de una señal de televisión analógica.

b) Electrónica digital: Se encarga de estudiar los circuitos en los que las señales eléctricas sólo pueden tomar dos valores: 1 o 0 (nivel alto, nivel bajo). La electrónica digital ha alcanzado una gran importancia debido a que es utilizada para realizar autómatas y por ser la piedra angular de los sistemas microprogramados como son los ordenadores o computadoras.

Page 62: Apuntes de Electronica III Docx

62

Una señal analógica es un tipo de señal generada por algún tipo de fenómeno electromagnético y que es representable por una función matemática continua en la que es variable su amplitud y periodo (representando un dato de información) en función del tiempo. Algunas magnitudes físicas comúnmente portadoras de una señal de este tipo son eléctricas como la intensidad de corriente, la tensión y la potencia, pero también pueden ser hidráulicas como la presión, térmicas como la temperatura, mecánicas, etc.

En la naturaleza, el conjunto de señales que percibimos son analógicas, así la luz, el sonido, la energía etc., son señales que tienen una variación continua. Incluso la descomposición de la luz en el arco iris vemos como se realiza de una forma suave y continúa.

Una onda senoidal es una señal analógica de una sola frecuencia. Los voltajes de la voz y del video son señales analógicas que varían de acuerdo con el sonido o variaciones de la luz que corresponden a la información que se está transmitiendo.

Por otro lado, las señales digitales adquieren uno de dos valores a través del tiempo, como se puede apreciar en la figura anterior. Su comportamiento se puede equiparar al de un interruptor (o switch) que tiene uno de dos estados: encendido o apagado. Las ventajas de este tipo de transmisión es, primero, su inmunidad a las interferencias ya que al digitalizar una señal se elimina el “ruido” producido por el medio ambiente, produciendo una señal más pura y de mayor resolución (si se cumplen otros requisitos que no son importantes en este momento); y, segundo, que puede codificarse usando el sistema binario que se basa en los dígitos 1(encendido) y 0 (apagado). Ese tipo de código se presta al almacenamiento; o sea, se puede guardar en memorias de las utilizadas en cámaras digitales y discos duros de computadoras.

Page 63: Apuntes de Electronica III Docx

63

Las señales de cualquier circuito o comunicación electrónica son susceptibles de ser modificadas de forma no deseada de diversas maneras mediante el ruido, lo que ocurre siempre en mayor o menor medida. Para solucionar esto la señal suele ser acondicionada antes de ser procesada.

Ejemplo de ruido en una señal analógica

La gran desventaja respecto a las señales digitales es que en las señales analógicas cualquier variación en la información es difícil su recuperación, y esta pérdida afecta en gran medida al correcto funcionamiento y rendimiento del dispositivo analógico. Un sistema de control digital (como un ordenador, etc.) no tiene capacidad alguna para trabajar con señales analógicas, de modo que necesita convertirlas en señales digitales para poder trabajar con ellas.

Un sistema digital es cualquier dispositivo destinado a la generación, transmisión, procesamiento o almacenamiento de señales digitales. También un sistema digital es una combinación de dispositivos diseñado para manipular cantidades físicas o información que estén representadas en forma digital; es decir, que sólo puedan tomar valores discretos.

Antes de ver el tema 2.2 compuertas lógicas, considero apropiado dar un repaso a la teoría de los conjuntos y el álgebra booleana, que no están considerados en el programa de estudios en forma explícita (conocimiento previo).

Page 64: Apuntes de Electronica III Docx

64

REPASO. Teoría de los conjuntos. Un conjunto es una colección de elementos u objetos bien definidos, en tal forma que se puede afirmar con certeza si cualquier objeto dado pertenece o no a la agrupación. Para denotar a los conjuntos, se usan letras mayúsculas y sus elementos con letras minúsculas. Cuando un elemento x1 pertenece a un conjunto A se expresa de forma simbólica

como: x1A. En caso de que un elemento y1 no pertenezca a este mismo conjunto se utiliza la

notación: y1A. Existen cuatro formas de enunciar a los conjuntos: 1) Por extensión o enumeración: los elementos son encerrados entre llaves y separados por comas. Es decir, el conjunto se describe listando todos sus elementos entre llaves. 2) Por comprensión: los elementos se determinan a través de una condición que se establece entre llaves. En este caso se emplea el símbolo | que significa “tal que". En forma simbólica 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

condición Pxes verdadera, como x1, x2, x3, etc. 3) Diagramas de Venn: son regiones cerradas que sirven para visualizar el contenido de un conjunto o las relaciones entre conjuntos. 4) Por descripción verbal: Es un enunciado que describe la característica que es común para los elementos. Ejemplo. Dada la descripción verbal “el conjunto de las letras vocales”, expresarlo por extensión, comprensión y por diagrama de Venn.

Solución.

Por extensión: V = a, e, i, o, u

Por comprensión: Vx | x es una vocal

Page 65: Apuntes de Electronica III Docx

65

Por diagrama de Venn:

Operaciones con conjuntos. Para realizar operaciones con conjuntos necesitamos un marco de referencia llamado conjunto universo (U) y un conjunto vacío carente de elementos, que se denota

por:o bien por

a) La unión 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:

A∪Bx | xA y/o xB

Gráficamente:

a e

i

u

o

o

o u

V

Page 66: Apuntes de Electronica III Docx

66

b) La intersección de los conjuntos A y B es el conjunto de los elementos de A que también pertenecen a B y se denota como A∩ B. Esto es:

A ∩ Bx | xA y xB

Gráficamente:

c) El complemento del conjunto A con respecto al conjunto universal U es el conjunto de todos los elementos de U que no están en A y se denota como A'. Esto es:

A' xU | xA

Gráficamente:

Page 67: Apuntes de Electronica III Docx

67

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

Solución.

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:

A∪A.

A∪U U.

A∩U A.

A∩

2. Propiedades de idempotencia:

A∪A A.

A∩A A.

3. Propiedades de complemento:

A∪A' U.

A∩A'

Page 68: Apuntes de Electronica III Docx

68

4. Propiedades asociativas:

A∪B∪C A∪B ∪C

A∩B∩C A∩B ∩C

5. Propiedades conmutativas:

A∪B B ∪A.

A∩B B ∩A.

6. Propiedades distributivas:

A∪B ∩CA∪B∩A∪C

A∩B ∪CA∩B∪A∩C Leyes de D’MORGAN. Estas leyes establecen los complementos de la unión e intersección entre conjuntos: Primera ley. El complemento de la unión de dos conjuntos es la intersección de sus complementos.

(A ∪ B)' = A'∩B'.

En el diagrama de la izquierda, A∪ B viene dada por la región en blanco y (A ∪ B)' está representado por el área sombreada verticalmente. Por su parte en el diagrama de la derecha, A' es la región sombreada horizontalmente, B' es el área sombreada

verticalmente, por lo que A'∩B' está representado por la superficie cuadriculada. Las

regiones resultantes son iguales.

Page 69: Apuntes de Electronica III Docx

69

Segunda ley. El complemento de la intersección de dos conjuntos es la unión de sus complementos:

(A ∩ B)' = A'∪B'.

En el diagrama de la izquierda, A ∩ B está dada por la región sombreada

horizontalmente y (A∩ B)' está representado por el área sombreada verticalmente. Por

su parte, en el diagrama de la derecha, A' es la región 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:

Page 70: Apuntes de Electronica III Docx

70

( ) ∪ ( ) ∪ ( ) ( ∪ )

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.

Page 71: Apuntes de Electronica III Docx

71

Álgebra de Boole. La herramienta fundamental para el análisis y diseño de circuitos digitales es el Álgebra Booleana. Esta álgebra es un conjunto de reglas matemáticas (similares en algunos aspectos al álgebra convencional), que tienen la virtud de corresponder al comportamiento de circuitos basados en dispositivos de conmutación (interruptores, relevadores, transistores, etc.). El álgebra booleana es un sistema algebraico definido en un conjunto B, el cual contiene dos o más elementos y entre los cuales se definen dos operaciones denominadas "suma u operación OR" (+) y "producto o multiplicación u operación AND" (.), es decir, la suma es la unión de conjuntos (U) y la multiplicación es la

intersección () de conjuntos.

Si consideramos lo anterior y además, cambiamos por 0 y Ω por 1, tenemos:

1. Propiedades de identidad:

A∪A; A + 0 = A.

A∪U U; A + 1 = 1.

A∩U A; A . 1 = A.

A∩

2. Propiedades de idempotencia:

A∪A A; A + A = A.

A∩A A; A . A = A.

3. Propiedades de complemento:

A∪A' U; A + A' = 1.

A∩A' A' = 0.

4. Propiedades asociativas:

A∪B∪C A∪B ∪C A+B+C A+B + C

A∩B∩C A∩B ∩C A . B . C A . B . C

5. Propiedades conmutativas

A∪B B ∪A; A + B = B + A.

A∩B B ∩A; A . B = B . A.

6. Propiedades distributivas

A∪B ∩CA∪B∩A∪C A+B . CA+B.A +C

A∩B ∪CA∩B∪A∩C A.B + CA . B+A . C

Page 72: Apuntes de Electronica III Docx

72

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 mintérminos (la suma de productos dará 1), como se muestra a continuación.

( ) ∪ ( ) ∪ ( ) ∪ ( ) . ( ) ( ) ( ) ( ) 1. mintérminos En la mayor parte de los ejercicios de estos apuntes usaremos los mintérminos, es decir, nos centraremos en los resultados que producen 1(esto se conoce como lógica positiva). Si recordamos el ejercicio 8 que tomamos como partida para la demostración de la segunda ley de De Morgan, nos permitirá introducir el concepto de MAXTÉRMINOS (el producto de las suma dará 0), como se muestra a continuación.

( ∪ ) ( ∪ ) ( ∪ ) ( ∪ ) .

( ) ( ) ( ) ( )

MAXTERMINOS

Page 73: Apuntes de Electronica III Docx

73

2.2 COMPUERTAS LÓGICAS.

Las computadoras digitales utilizan el sistema de números binarios, que tiene dos dígitos 0 y 1. Un dígito binario se denomina un bit. La información está representada en las computadoras digitales en grupos de bits. Utilizando diversas técnicas de codificación los grupos de bits pueden hacerse que representen no solamente números binarios sino también otros símbolos discretos cualesquiera, tales como dígitos decimales o letras de alfabeto. Utilizando arreglos binarios y diversas técnicas de codificación, los dígitos binarios o grupos de bits pueden utilizarse para desarrollar conjuntos completos de instrucciones para realizar diversos tipos de cálculos. La información binaria se representa en un sistema digital por cantidades físicas

denominadas señales, Las señales eléctricas 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 señal de 3 volts para representar el binario "1" y 0.5 volts para el binario "0". La siguiente ilustración muestra un ejemplo de una señal binaria.

Como se muestra en la figura anterior, cada valor binario tiene una desviación aceptable del valor nominal. La región intermedia entre las dos regiones permitidas se cruza solamente durante la transición de estado. Las terminales de entrada de un circuito digital aceptan señales binarias dentro de las tolerancias permitidas y los circuitos responden en las terminales de salida con señales binarias que caen dentro de las tolerancias permitidas. La lógica binaria tiene que ver con variables binarias y con operaciones que toman un sentido lógico. La manipulación de información binaria se hace por circuitos lógicos que se denominan compuertas. Las compuertas son bloques del hardware que producen señales en binario 1 o 0 cuando se satisfacen los requisitos de entrada lógica. Las diversas compuertas lógicas se encuentran comúnmente en sistemas de computadoras digitales. Cada compuerta tiene un símbolo gráfico diferente y su operación puede describirse por medio de una función algebraica. Las relaciones entrada - salida de las variables binarias para cada compuerta pueden representarse en forma tabular en una tabla de verdad. A continuación se detallan los nombres, símbolos, gráficos, funciones algebraicas, y tablas de verdad de las compuertas más usadas.

0

Page 74: Apuntes de Electronica III Docx

74

Compuerta SI o Buffer.

Símbolo de la función lógica SI a) Contactos, b) Normalizado y c) No normalizado.

La compuerta lógica SI, realiza la función booleana igualdad. En la práctica se suele utilizar como amplificador de corriente (buffer en inglés).

La ecuación característica 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).

Símbolo de la función lógica Y a) Contactos, b) Normalizado y c) No normalizado

La compuerta lógica Y, más conocida por su nombre en inglés AND, realiza la función booleana de producto lógico. Su símbolo es un punto (·), aunque se suele omitir. Así, el producto lógico de las variables A y B se indica como AB, y se lee A y B o simplemente A por B.

Page 75: Apuntes de Electronica III Docx

75

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 ecuación característica que describe el comportamiento de la puerta AND, considerando los unos (mintérminos) en la salida, tenemos que:

F = A.B = AB.

Se puede definir la puerta AND, como aquella compuerta que entrega un 1 lógico sólo si todas las entradas están a nivel alto 1.

Compuerta O (OR).

Símbolo de la función lógica O a) Contactos, b) Normalizado y c) No normalizado.

La compuerta lógica O, más conocida por su nombre en inglés OR, realiza la operación de suma lógica.

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 ecuación característica que describe el comportamiento de la puerta OR, considerando los ceros (MAXTÉRMINOS) es:

F = (A + B) = A + B.

Page 76: Apuntes de Electronica III Docx

76

Si hubiésemos seleccionados los unos (usando mintérminos), tendríamos:

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

tenemos:

( ) ( )

F = B + A = A + B, que es el resultado obtenido empleando MAXTÉRMINOS.

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

Compuerta O-exclusiva (XOR).

Símbolo de la función lógica O-exclusiva. a) Contactos, b) Normalizado y c) No normalizado

La compuerta lógica O-exclusiva, más conocida por su nombre en inglés XOR,

realiza la función booleana . Su símbolo es el más (+) inscrito en un círculo.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta XOR

Entrada A Entrada B Salida A B

0 0 0

0 1 1

1 0 1

1 1 0

La ecuación característica que describe el comportamiento de la puerta XOR, empleando mintérminos, es:

Su símbolo es el más (+) inscrito en un círculo.

Page 77: Apuntes de Electronica III Docx

77

Se puede definir esta compuerta como aquella que da por resultado uno, cuando los valores en las entradas son distintos. ej.: 1 y 0, 0 y 1 (en una compuerta de dos entradas). Si la compuerta tuviese tres o más entradas, la XOR tomaría la función de suma de paridad, cuenta el número de unos a la entrada y si son un número impar, pone un 1 a la salida, para que el número de unos pase a ser par. Esto es así porque la operación XOR es asociativa, para tres entradas escribiríamos: ( )o bien ( )

Su tabla de verdad sería:

XOR de tres entradas

Entrada A Entrada B Entrada C Entrada A B C

0 0 0 0

0 0 1 1

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 0

1 1 1 1

Lógica negada.

Compuerta NO (NOT).

Símbolo de la función lógica NO a) Contactos, b) Normalizado y c) No normalizado

La compuerta lógica NO (NOT en inglés) realiza la función booleana de inversión o negación de una variable lógica.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta NOT

Entrada A Salida

0 1

1 0

Page 78: Apuntes de Electronica III Docx

78

La ecuación característica que describe el comportamiento de la puerta NOT es:

Se puede definir como una compuerta que proporciona el estado inverso del que esté en su entrada.

Compuerta NO-Y (NAND).

Símbolo de la función lógica NO-Y. a) Contactos, b) Normalizado y c) No normalizado

La compuerta lógica NO-Y, más conocida por su nombre en inglés NAND, realiza la operación de producto lógico negado.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta NAND

Entrada A Entrada B Salida

0 0 1

0 1 1

1 0 1

1 1 0

La ecuación característica que describe el comportamiento de la compuerta NAND, empleando MAXTÉRMINOS (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 lógico únicamente cuando todas sus entradas están a 1.

Page 79: Apuntes de Electronica III Docx

79

Compuerta NO-O (NOR).

Símbolo de la función lógica NO-O. a) Contactos, b) Normalizado y c) No normalizado

La compuerta lógica NO-O, más conocida por su nombre en inglés NOR, realiza la operación de suma lógica negada.

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta NOR

Entrada A Entrada B Salida

0 0 1

0 1 0

1 0 0

1 1 0

La ecuación característica que describe el comportamiento de la compuerta NOR (empleando mintérminos), es:

( ) aplicando la primera ley de De Morgan.

Podemos definir la compuerta NO-O como aquella que proporciona a su salida un 1 lógico sólo cuando todas sus entradas están a 0.

Page 80: Apuntes de Electronica III Docx

80

Compuerta NO O exclusiva (XNOR).

Símbolo de la función lógica equivalencia. a) Contactos, b) Normalizado y c) No normalizado.

La compuerta lógica no o exclusiva, más conocida por su nombre en inglés XNOR,

realiza la función booleana . Su símbolo es un punto (·) inscrito en un

círculo, o también se representa como: .

Su tabla de verdad es la siguiente:

Tabla de verdad de la compuerta XNOR

Entrada A Entrada B Salida

0 0 1

0 1 0

1 0 0

1 1 1

La ecuación característica que describe el comportamiento de la puerta XNOR( empleando mintérminos) es:

.

Se puede definir esta puerta como aquella que proporciona un 1 lógico, sólo si las dos entradas son iguales, esto es, 0 y 0 o 1 y 1 (2 encendidos o 2 apagados).

NOTA: El tema 2.3 se sugiere verlo después de los temas 2.4, 2.5, 2.6 y 2.7.

Page 81: Apuntes de Electronica III Docx

81

2.3 FLIP FLOP.

Los circuitos lógicos que se han analizados anteriormente, las salidas en cualquier momento depende exclusivamente de los valores de las entradas presentes, es decir, a una misma combinación de entrada responden siempre con la misma salida. Debido a esto, estos circuitos se denominan combinacionales. Los circuitos combinacionales tienen muchas limitantes debido a que no son capaces de reconocer el orden en que se van presentando las combinaciones de entradas con respecto al tiempo, es decir, no pueden reconocer una secuencia de combinaciones, ya que no poseen una manera de almacenar información pasada, es decir no poseen memoria. Un circuito cuya salida depende no solo de la combinación de entrada, sino también 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 algún tiempo, para ello se hace necesario el uso de dispositivos de memoria. Los dispositivos de memoria utilizados en circuitos secuenciales pueden ser tan sencillos como un simple retardador (inclusive, se puede usar el retardo natural asociado a las compuertas lógicas) o tan complejos como un circuito completo de memoria denominado multivibrador biestable o Flip_Flop. Como puede verse entonces, en los circuitos secuenciales entra un factor que no se había considerado en los combinacionales, dicho factor es el tiempo. De hecho, los circuitos secuenciales se clasifican de acuerdo a la manera como manejan el tiempo en circuitos secuenciales síncronos y circuitos secuenciales asíncronos. En un circuito secuencial asíncrono, los cambios de estado ocurren al ritmo natural marcado por los retardos asociados a las compuertas lógicas utilizadas en su implementación, es decir, estos circuitos no usan elementos especiales de memoria, pues se sirven de los retardos propios (tiempos de propagación) de las compuertas lógicas usados en ellos. Esta manera de operar puede ocasionar algunos problemas de funcionamiento, ya que estos retardos naturales no están bajo el control del diseñador y además no son idénticos en cada compuerta lógica. Los circuitos secuenciales síncronos, sólo permiten un cambio de estado en los instantes marcados por una señal de sincronismo de tipo oscilatorio denominada reloj. Con esto se pueden evitar los problemas que tienen los circuitos asíncronos originados por cambios de estado no uniformes en todo el circuito.

Page 82: Apuntes de Electronica III Docx

82

Celda biestable o latch SR. Una celda biestable o latch es un circuito lógico que puede almacenar un valor booleano o un bit. El latch S-R es un dispositivo con dos entradas (Set y Reset) y una variable de estado o salida (Q) capaz de “guardar” un bit de información y funciona como sigue: • 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 simultáneamente. Diagrama de Bloques. Aunque el biestable-SR posee dos entradas (S y R) y sólo una salida (Q), es común la implementación que provee además de Q su versión complementada Q, como se muestra en la figura siguiente. En la siguiente figura se muestra una celda biestable S-R construida con compuertas NAND.

A continuación se muestra una tabla que ilustra el funcionamiento del latch S-R.

S R QK (estado presente)

QK+1 (siguiente estado)

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 1

1 1 0 prohibido

1 1 1 prohibido

S Q

R

qqQ

Q

Q

Page 83: Apuntes de Electronica III Docx

83

Si se considera que las entradas S y R nunca tomaran simultáneamente los valores de 1, se obtiene la siguiente función para el Flip_Flop S-R:

QK+1=S+ Q. La cual indica que el siguiente estado del Flip_Flop será 1 cuando S=1 o cuando el estado actual es 1 y R=0. Señales de reloj. La mayoría de los circuitos secuenciales se diseñan para operar de manera sincrónica, 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 señal maestra de reloj. La señal de reloj generalmente es una forma de onda cuadrada que alterna un valor entre los niveles de voltaje correspondientes al 0 y al 1 lógico, 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 sincrónica es necesario usar celdas biestables que tengan una entrada de reloj además de las entradas S y R, en dicha entrada cada celda se alimentara de la señal maestra de reloj, la cual sincronizaría 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 diseñar celdas biestables S-R con una entrada de reloj que cambien su estado solamente cuando la señal de reloj tenga el valor de 1. Estas celdas se conocen como flip-flop S-R que operan con nivel de reloj alto, como se muestra en la siguiente figura.

Cuando la señal de reloj (entrada C) vale 0, la salida de los bloques AND seran 0. Esta condicion es analoga a cuando se tenian ceros en las entradas del latch SR antes visto, la cual originaba que conservara su estado. Cuando la señal de reloj vale 1, las entradas SR se aplican a las compuertas NAND y la celda funciona exactamente igual al latch SR analizado anteriormente.

Page 84: Apuntes de Electronica III Docx

84

A continuacion se muestra el simbolo del flip-flop SR.

A continuación se muestra su funcionamiento empleando diagramas de tiempo.

Si no se activa ninguna de las entradas, el biestable permanece en el estado que poseía tras la última operación de borrado o grabado. En ningún caso deberían 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 quedaría 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 construcción de este flip-flop se basa en el flip-flop S-R, como se muestra a continuación.

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

S Q

C

R

Page 85: Apuntes de Electronica III Docx

85

El funcionamiento de este Flip-Flop es muy simple. Cuando la señal de reloj toma el valor de 1, el valor que está en la entrada D se almacena en su salida Q.

Por lo tanto su función es: Qsiguiente = D.

Su tabla de verdad es:

D Presente Qsiguiente

0 X 0

1 X 1

X=no importa

Su símbolo es:

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

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

D Q

C

C Q

Page 86: Apuntes de Electronica III Docx

86

El biestable T cambia de estado ("toggle" en inglés) cuando T esta en alto y la entrada de sincronismo o de reloj esta en alto. Si la entrada T está a nivel bajo, el biestable retiene el nivel previo. La ecuación característica del biestable T que describe su comportamiento es:

Qsiguiente = .

Su tabla de verdad es:

T Q Qsiguiente

0 0 0

0 1 1

1 0 1

1 1 0

Aplicando minterminos tenemos que Qsiguiente =

Su símbolo es:

T Q

C

C Q

Page 87: Apuntes de Electronica III Docx

87

El Flip-Flop JK.

Este Flip-Flop es el más versátil de todos ya que puede trabajar como el SR o el T.

Añadiendo bloques lógicos externos, también puede hacerse funcionar como Flip-Flop D.

Cuando las dos entradas J y K valen 1 este Flip-Flop opera como un Flip-Flop T, cambiando de estado cuando la señal de reloj vale 1.

Suponiendo que las entradas J y K no pueden valer 1 simultáneamente, el flip-flop operará como un SR, donde J hace las veces de la entrada S y K las veces de R. A continuación se muestra su configuración.

A continuación se muestra su funcionamiento empleando diagramas de tiempo.

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

poseía tras la última operación 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 tenía.

La ecuación característica del biestable JK que describe su comportamiento es:

.

Y su tabla de verdad es:

Page 88: Apuntes de Electronica III Docx

88

J K Q Qsiguiente

0 0 0 0

0 0 1 1

0 1 X 0

1 0 X 1

1 1 0 1

1 1 1 0

X = no importa

El biestable se denomina así por Jack Kilby (JK), el inventor de los circuitos integrados en 1958, por lo cual se le concedió el Premio Nobel en física de 2000.

Biestable JK activo por flanco.

Símbolos 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 misión es la de permitir el cambio de estado del biestable cuando se produce un flanco de subida o de bajada, según sea su diseño. Su denominación en inglés es J-K Flip-Flop Edge-Triggered. De acuerdo con la tabla de verdad, cuando las entradas J y K están a nivel lógico 1, a cada flanco activo en la entrada de reloj, la salida del biestable cambia de estado. A este modo de funcionamiento se le denomina modo de basculación (toggle en inglés).

Biestable JK Maestro-Esclavo.

Símbolos normalizados: Biestable JK Maestro-Esclavo a) activo por nivel alto y b) activo por nivel bajo.

Aunque aún puede encontrarse en algunos equipos, este tipo de biestable, denominado en inglés J-K Flip-Flop Master-Slave, ha quedado obsoleto ya que ha sido reemplazado por el tipo anterior.

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.

Page 89: Apuntes de Electronica III Docx

89

2.4 CODIFICADORES.

Un codificador tiene 2n o menos líneas de entrada y n líneas de salida. Por ejemplo, en una de las entradas se puede ingresar un dígito decimal u octal y generarse un código de salida en BCD o binario. Los codificadores se utilizan también para codificar símbolos diferentes y caracteres alfabéticos.

2n Entradas ------[ ]------ n salidas.

Codificador Binario.

El codificador binario tiene 2n entradas y n salidas. Sólo, una sola de las entradas puede estar activada. La salida suministra el valor binario correspondiente a la entrada activada.

Codificador de 8 a 3.

El codificador 8 a 3 tiene 8 entradas (I0 a I7), una para cada uno de los ocho dígitos y 3 salidas que conforman el número binario equivalente (A0 a A2). La siguiente figura muestra en el diagrama de bloques del codificador.

La tabla de verdad se muestra en la tabla siguiente.

Page 90: Apuntes de Electronica III Docx

90

En la tabla de verdad, A0 tiene un 1 lógico para las columnas de entrada con subíndice impar. La salida A1 es 1 en las columnas I2, I3, I6 e I7 y la salida A2 es 1 en las columnas I4, I5, I6 e I7. Las expresiones lógicas son las siguientes:

A0 = I1 + I3 + I5 + I7

A1 = I2 + I3 + I6 + I7

A2 = I4 + I5 + I6 + I7

Por ejemplo, sí está activada la entrada 3, la salida es 011. El circuito se construye con compuertas OR y se muestra en la siguiente figura.

Codificador sin prioridad.

Los circuitos codificadores pueden ser diseñados con prioridad o sin ella. En los codificadores sin prioridad con entradas activas altas, la activación de más de una entrada simultáneamente con valor 1, genera un código erróneo en la salida, de acuerdo al número de entradas excitadas con el respectivo valor. La solución más conveniente se logra empleando codificadores de prioridad.

Codificador con prioridad.

Los codificadores de prioridad seleccionan la entrada de mayor prioridad cuando se presentan varias entradas activas simultáneamente. En la tabla siguiente se muestra la lógica de entrada y de salida de un codificador con prioridad.

Page 91: Apuntes de Electronica III Docx

91

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 dígito decimal y cuatro salidas en código BCD (8421). El diagrama de bloques de la siguiente figura muestra la disposición de entradas y salidas del decodificador.

En la siguiente tabla se encuentra el código BCD correspondiente a cada dígito decimal.

ENTRADA

DECIMAL

SALIDA

BCD

A0

A1

A

2

A3

0

1

2

3

4

5

6

7

8

9

Page 92: Apuntes de Electronica III Docx

92

El bit A3 es el más significativo del código BCD y es 1 para los decimales 8 o 9. La expresión para este bit en función de los dígitos decimales se escribe:

A3 = 8+9.

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 análisis en un circuito combinacional, se obtiene el siguiente circuito sin necesidad de una entrada para el bit 0.

Aplicaciones.

Los codificadores encuentran mayor aplicación en los dispositivos de entrada y salida. La señal de entrada es introducida de una forma comprensible para el usuario y la "traducción" la realiza el codificador a un código comprensible para el equipo. En un teclado, cuando se pulsa la tecla correspondiente a un dígito, esta entrada se codifica en código BCD.

Page 93: Apuntes de Electronica III Docx

93

2.5 DECODIFICADORES.

Un decodificador es un circuito lógico que tiene n entradas y 2n salidas. Para una combinación dada de las n entradas, solamente una salida tomará el valor de 1 y todas las demás tomarán el valor de 0. Si se tienen n entradas para un circuito lógico, existirán 2n combinaciones posibles de los valores de las variables independientes, cada una de las cuales corresponderá a un mintérmino de las n variables independientes. Por consiguiente, cada mintérmino 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 mintérmino formado por la combinación presente en las n entradas tomará el valor de 1 y las demás tomarán el valor de 0. A continuación 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 lógicas para las salidas del decodificador de 2 X 4, usando mintérminos son:

Page 94: Apuntes de Electronica III Docx

94

En la siguiente figura se muestra el circuito lógico de este decodificador.

Un tipo de decodificador muy empleado es el de siete segmentos. Este circuito decodifica la información de entrada en BCD a un código de siete segmentos adecuado para que se muestre en un visualizador de siete segmentos (el diseño de este decodificador se realizara al final del tema 2.7).

Page 95: Apuntes de Electronica III Docx

95

2.6 MULTIPLEXORES.

Los multiplexores MUX son circuitos combinacionales con varias entradas y una salida de datos, y están dotados de entradas de control capaces de seleccionar una, y sólo una, de las entradas de datos para permitir su transmisión desde la entrada seleccionada a la salida que es única.

La entrada seleccionada viene determinada por la combinación de ceros (0) y unos (1) lógicos en las entradas de control. La cantidad que necesitaremos será igual a la potencia de 2 que resulte de analizar el número de entradas. Así, por ejemplo, a un multiplexor de 8 entradas le corresponderán 3 de control.

Podemos decir que la función de un multiplexor consiste en seleccionar una de entre un número de líneas de entrada y transmitir el dato por un canal de información ú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 señales: los datos de entrada, las entradas de control y la salida.

El diseño 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á, según 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.

Page 96: Apuntes de Electronica III Docx

96

Este dispositivo también tiene una entrada para habilitarlo, la cual debe tener el valor de 1 para que en la salida se obtenga el valor de la entrada seleccionada por las entradas de control. Si la entrada habilitadora toma el valor de 0, la salida tomara el valor de 0, independientemente de los valores presentes en las otras entradas.

La tabla de verdad para la salida S en función de las entradas de control ( C1 y C0) y la entrada habilitadora (Hab.) es la siguiente:

Hab. C1 C0 S

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 e0

1 0 1 e1

1 1 0 e2

1 1 1 e3

La función booleana para S es:

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

El circuito lógico para este multiplexor o selector se muestra a continuación:

De forma semejante pueden definirse selectores de 8:1, 16:1, 32:1 y en forma general de 2n : 1.

La principal utilización de este dispositivo es cuando se tienen N entradas posibles, pero sólo se desea seleccionar una de ellas (como veremos en el microcontrolador).

Page 97: Apuntes de Electronica III Docx

97

Demultiplexores.

Este dispositivo tiene n entradas de control, una entrada habilitadora, una sola entrada de datos y 2n salidas. Las entradas de control sirven para seleccionar a cuál de las 2n salidas de datos se conectara la entrada. A continuación se muestra el diagrama de un selector 1:4.

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

Las funciones lógicas para las salidas del selector de 1:4 son:

.

.

Page 98: Apuntes de Electronica III Docx

98

El circuito lógico para este selector se muestra a continuación.

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

La principal utilización de este dispositivo es cuando se tiene una sola entrada que puede ser dirigida a solamente una de las N salidas posibles.

Page 99: Apuntes de Electronica III Docx

99

2.7 CIRCUITOS ARITMÉTICOS.

Un componente muy importante de la unidad central de proceso (CPU) es la unidad aritmética lógica (ALU). Esta unidad es un circuito combinatorio que permite realizar las operaciones aritméticas básicas como la suma, resta, multiplicación y división, así como operaciones lógicas simples tales como NOT, AND y OR.

Sumador básico.

Un sumador básico es un circuito combinatorio que tiene como entrada dos números binarios de n bits y da como salida la suma binaria de estos números y un posible acarreo.

Al empezar la suma de los bits menos significativos (A0+ B0), se requiere de un circuito que solamente sume dos bits, el cual genera dos salidas; una para dar la suma de estos dos bits (S0) y la otra para indicar el posible acarreo que se pueda generar (C0).

Para sumar los bits restantes es necesario un circuito que sume 3 bits ( Ai+ Bi+ Ci-1), para que genere como salida la suma (Si) y el posible acarreo (Ci).

Semisumador o medio sumador.

Un semisumador, es un circuito que tiene como entradas dos números de 1 bit y produce como salidas la suma y el acarreo que se da entre estos 2 números, como se muestra a continuación:

A0 S0

B0 C0

La tabla de verdad de este dispositivo es:

A0 B0 S0 C0

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Semisumador

Page 100: Apuntes de Electronica III Docx

100

Las funciones de suma y acarreo empleando mintérminos son:

.

El circuito del semisumador se muestra a continuación:

Sumador completo.

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

An Sn

Bn Cn

Cn-1

La tabla de verdad de este dispositivo es la siguiente:

An Bn Cn.1 Sn Cn

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Sumador

Page 101: Apuntes de Electronica III Docx

101

La función para la suma empleando mintérminos es:

.

( ) ( ).

( ) ( )

( )

La función para el acarreo empleando mintérminos es:

.

( ) ( ).

( ) ( ).

( ) .

El circuito sumador se muestra a continuación:

( )

( )

Para realizar un sumador de 3 bits, necesitamos un semisumador y 2 sumadores, como se ilustra en seguida (usando bloques).

Page 102: Apuntes de Electronica III Docx

102

Restador básico.

Un restador básico es un circuito combinatorio que tiene como entrada dos números binarios de n bits y da como salidas la diferencia binaria de estos números y un posible préstamo.

Al empezar la resta de los bits menos significativos (A0 - B0), se requiere de un circuito que solamente reste dos bits, el cual genera dos salidas; una para dar la diferencia de estos dos bits (D0) y la otra para indicar el posible préstamo que se pueda solicitar (Borrow0).

Para restar los bits restantes es necesario un circuito que reste 3 bits ( An – Bn - Borrown-1), para que genere como salidas la diferencia (Dn) y el posible préstamo (Borrown).

Page 103: Apuntes de Electronica III Docx

103

Semirestador o medio restador.

Un semirestador, es un circuito que tiene como entradas dos números de 1 bit y produce como salidas la resta y el préstamo que se da entre estos 2 números, como se muestra a continuación:

A0 D0

B0 Borrow0

La tabla de verdad de este dispositivo es:

Las funciones de la resta (Do) y el préstamo (Borrowo) empleando mintérminos son:

.

.

.

El circuito del semisumador se muestra a continuación:

A0 B0 D0 Borrow0

0 0 0 0

0 1 1 1

1 0 1 0

1 1 0 0

Semirestador

Page 104: Apuntes de Electronica III Docx

104

Restador completo.

Un restador completo es un circuito que tiene como entrada 3 números de 1 bit y produce como salidas la resta y el préstamo que se da entre estos 3 números, como se muestra en la siguiente figura.

An Dn

Bn Borrown

Borrown-1

La tabla de verdad de este dispositivo es la siguiente.

La función para la resta empleando mintérminos es:

.

( ) ( ) .

( ) ( ) .

( ) .

.

La función para el préstamo usando mintérminos es:

( ) ( ).

( ) .

An Bn Borrown.1 Dn Borrown

0 0 0 0 0

0 0 1 1 1

0 1 0 1 1

0 1 1 0 1

1 0 0 1 0

1 0 1 0 0

1 1 0 0 0

1 1 1 1 1

Restador

Page 105: Apuntes de Electronica III Docx

105

El circuito restador se muestra a continuación

Para realizar un restador de 3 bits, necesitamos un semirestador y 2 restadores, como se ilustra en seguida (usando bloques).

Page 106: Apuntes de Electronica III Docx

106

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.

Page 107: Apuntes de Electronica III Docx

107

Como se puede observar el botón 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, quedaría así:

Este circuito presenta los resultados en binario, pero no todas las personas conocen este sistema numérico, por lo que procederemos a diseñar un decodificador BCD de 7 segmentos como se citó en el apartado de los decodificadores.

Page 108: Apuntes de Electronica III Docx

108

A continuación se muestra una tabla con los valores de entrada en binario que deseamos mostrar en el display de 7 segmentos.

Decimal Entradas en binario.

Salidas para el display de 7 segmentos

Números A B C D a b c d e f g

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

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

2 0 0 1 0 1 1 0 1 1 0 1

3 0 0 1 1 1 1 1 1 0 0 1

4 0 1 0 0 0 1 1 0 0 1 1

5 0 1 0 1 1 0 1 1 0 1 1

6 0 1 1 0 1 0 1 1 1 1 1

7 0 1 1 1 1 1 1 0 0 0 0

8 1 0 0 0 1 1 1 1 1 1 1

9 1 0 0 1 1 1 1 1 0 1 1

10 1 0 1 0 x x x x x x x

11 1 0 1 1 x x x x x x x

12 1 1 0 0 x x x x x x x

13 1 1 0 1 x x x x x x x

14 1 1 1 0 x x x x x x x

15 1 1 1 1 x x x x x x x

Como emplearemos un display de 7 segmentos con cátodo común, presentaremos unos para prender los segmentos.

Para obtener la salida debemos seleccionar los segmentos que deberán prender, así por ejemplo, el cero solo tenemos que apagar (0) el segmento g y los demás prenderlos (1), para el numero uno se prenden b y c, y así sucesivamente hasta el número 9.

Las x indican que podemos poner un 1 o un 0, pues nuestro decodificador solo mostrara valores del 0 al 9.

Page 109: Apuntes de Electronica III Docx

109

Para simplificar la función de cada segmento utilizaremos los mintérminos, pero ahora emplearemos un método gráfico, por lo que veremos mapas de Karnaugh.

Mapas de Karnaugh.

Es un diagrama en forma de matriz de cuadros, donde cada cuadro corresponde a un mintérmino de la función.

Un mapa de Karnaugh provee una manera alternativa de simplificación de circuitos lógicos. En lugar de usar las técnicas de simplificación con el álgebra de Boole, tú puedes transferir los valores lógicos desde una función 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 lógicas entre las variables y conduce directamente a una función booleana simplificada.

El mapa de Karnaugh es a menudo usado para simplificar los problemas lógicos con 2, 3, 4 o 5 variables.

Un mapa de Karnaugh de 2 variables es trivial pero puede ser usado para introducir el método que necesitas aprender. El mapa para una puerta OR de dos entradas es como sigue:

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

A 0 1

B

0

1

1

1

1

Los valores de una variable aparecen sobre la parte superior del mapa, definiendo los valores de la columna, mientras los valores de la otra variable aparecen a un lado, definiendo los valores de la variable en cada fila.

Page 110: Apuntes de Electronica III Docx

110

El mapa de Karnaugh se va completando colocando los unos “1” en la celda apropiada, ayudados por la tabla de verdad. Esta agrupación es conocida como mintérminos y como expresión booleana viene a ser una suma de productos. Usualmente no se escriben los ceros en la tabla, ya que solo se agrupan los unos.

En el mapa las celdas adyacentes que contienen unos se agrupan de dos, de cuatro, o de a ocho (En general 2n ). En este caso, hay un grupo horizontal y otro vertical que puede agruparse de a dos. Se indican los agrupamientos dibujando un contorno alrededor de los unos.

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 expresión booleana para estas celdas. Antes de agruparlas, deberías haber escrito la expresión booleana para estas dos celdas como:

.

Después de agruparlas esta misma expresión se reduce a:

( ) .

De una forma similar, el grupo vertical de dos celdas podría haber sido escrito como:

.

Desde el mapa, puedes ver que el valor de B no afecta el valor escrito en las celdas para este grupo. En otras palabras, el grupo vertical se reduce a:

( ) .

De esta manera, el mapa de Karnaugh conduce a la expresión final:

A + B.

Esto no es muy emocionante, pero si se aplica el mismo método a un problema de lógica más compleja, comenzarás a entender cómo el mapa de Karnaugh conduce a simplificar las funciones booleanas.

Mapa de Karnaugh de 3 variables.

A continuación se muestra una tabla de verdad para un sistema de votación por mayoría de 3 personas (más de una persona).

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

Page 111: Apuntes de Electronica III Docx

111

A B C Salida

0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

AB

AB 00 01 11 10

C

0

1

1

1

1

1

BC AC

Observa cuidadosamente las variables en la parte superior del mapa de Karnaugh. Estas no están 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 código 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 expresión, quedando (B.C).

Operando sobre los otros grupos de forma similar observamos que en el agrupamiento

horizontal de “1” de la derecha, que incluye los mintérminos (A.B.C) y ( ), la

variable que cambia es la B por lo tanto se puede eliminar y quedaría (A.C).

Por último, la agrupación de “1” vertical involucra los mintérminos ( ) y (A.B.C) lo que da como resultado que cambie la variable C y es ésta la que se puede eliminar quedando: (A.B).

El resultado o expresión final simplificada es: A.B + A.C + B.C.

Con un poco de práctica, este método va a ser más rápido que la alternativa de simplificar la expresión booleana derivada de la tabla de verdad como suma de productos (mintérminos), que resulta más complicada:

Page 112: Apuntes de Electronica III Docx

112

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 código Gray.

Ejemplo.

Simplificar la expresión:

El mapa de Karnaugh de dicha expresión es:

CD 00 01 11 10

AB 00 01 11 10

1

1

1

1 1 1

AD AC

Para dar la expresión booleana más simple deberás agrupar el mayor número de términos o de celdas, en lo posible. En este caso se han redondeado y agrupado dos grupos de 4 unos, uno de los cuales lo hace con 2 unos de la parte extrema y otros dos en la parte inferior del mapa. Debes identificar qué variables de cada grupo se mantienen constantes, sin cambiar de “1” a “0” o viceversa, y eliminas aquellas variables que sí cambian. En nuestro caso hay 2 que cambian y otras 2 que no cambian. La expresión final simplificada será:

Ahora si estamos preparados para diseñar el decodificador de 7 segmentos, empleando el método gráfico.

Recordando nuestra tabla tenemos:

Page 113: Apuntes de Electronica III Docx

113

Entradas Salidas

Decimal A B C D a b c d e f g

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

Page 114: Apuntes de Electronica III Docx

114

Page 115: Apuntes de Electronica III Docx

115

Page 116: Apuntes de Electronica III Docx

116

Page 117: Apuntes de Electronica III Docx

117

Page 118: Apuntes de Electronica III Docx

118

Page 119: Apuntes de Electronica III Docx

119

Page 120: Apuntes de Electronica III Docx

120

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

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

Page 121: Apuntes de Electronica III Docx

121

El circuito que convierte el código binario de 5 bits a Gray es:

El circuito que convierte el código Gray de 5 bits a binario es:

Page 122: Apuntes de Electronica III Docx

122

2.8 ESTRUCTURA Y FUNCIONAMIENTO GENERAL DE LAS MEMORIAS.

Una característica 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 construcción de circuitos secuenciales sino que también es la base para el almacenamiento de la información a ser procesada en las computadoras en la forma en que éstas están 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 múltiples palabras recibe la denominación genérica 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 número de líneas 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 propósito general normalmente está formada en gran parte por circuitos de memoria RAM, y sólo una pequeña parte por circuitos de memoria ROM (Read Only Memory).

La memoria de solo lectura es totalmente inalterable, sin esta memoria la maquina no arrancaría.

Memorias estáticas.

Una memoria estática puede considerarse como un conjunto de localidades en las cuales está almacenada cierta información. Cada una de estas localidades se identifica por una dirección única.

Una memoria estática tiene un conjunto de entradas que sirven para proporcionar la dirección de la palabra cuya información que se desea conocer, un conjunto de salidas, que corresponden a cada uno de los bits de la palabra que se ha seleccionado mediante la dirección, y una entrada de control para habilitar o deshabilitar la memoria.

Al conjunto de entradas donde se indica la dirección se le conoce como canal de direcciones (address bus), a la entrada de control se le llama selector del circuito y al conjunto de líneas de salida se le conoce como canal de datos (data bus).

A continuación se ejemplifica una memoria estática de M entradas en su canal de direcciones y palabras de n bits. En esta memoria se tendrán 2M palabras de n bits, cuyas direcciones estarán comprendidas de 0 a 2M- 1.

Page 123: Apuntes de Electronica III Docx

123

La principal característica de las memorias estáticas es que no son volátiles, por lo cual son muy útiles en un sistema computacional, para que al momento de encenderlo éste tenga algunas rutinas y datos en su memoria o para tener cargadas en la memoria principal rutinas de uso frecuente, y así no tener que cargarlas desde la memoria secundaria.

Las primeras memorias estáticas que se construyeron son las conocidas como memorias ROM, la información que está almacena en cada una de las palabras se fija al momento de construir la memoria y ya no puede ser cambiada después. Lógicamente, su construcción está hecha con base en un decodificador y un bloque OR por cada uno de los bits de la palabra, los cuales tienen una entrada por cada palabra.

Ejemplo. A continuación se muestra una tabla con 4 palabras de 3 bits de información cada una en la dirección especificada.

Dirección Contenido

A1 A0 D2 D1 D0

0 0 0 1 1

0 1 0 1 0

1 0 1 0 0

1 1 1 1 1

Usando mintérminos, tenemos:

; Que asociaríamos con S2 y S3 del decodificador.

; Que asociaríamos con S0, S1 y S3 del decodificador.

; Que asociaríamos con S0 y S3 del decodificador.

La construcción lógica de una ROM de 4 palabras de 3 bits con la información de la tabla, se muestra en seguida:

Page 124: Apuntes de Electronica III Docx

124

El circuito presentado muestra el caso para la dirección 00 con el dato 011, pero se puede comprobar para las restantes direcciones.

El circuito de una memoria ROM también puede ser construido con un decodificador y una matriz de diodos. El diodo es un elemento analógico pero en su comportamiento ideal puede utilizarse como un elemento digital.

Memoria RAM.

Al igual que una memoria ROM, la memoria RAM puede ser considerada como un conjunto de localidades de memoria, sólo que en cada una de éstas puede leerse información y también puede escribirse. Cada una de estas localidades de memoria se identifica por una dirección única, la cual recibe el nombre de palabra. En cada palabra es posible leer o almacenar un número fijo de bits, los cuales pueden representar una instrucción o dato.

El número de palabras que contiene una memoria siempre es una potencia de 2.

Además existen varias abreviaciones para indicar algunas potencias de 2, la letra K (de Kilo) equivale a 210 = 1024 palabras, la letra M (de Mega) equivale 220 = 1048576 palabras, la letra G (de Giga) equivale a 230 = 1073741824 palabras y la letra T (de Tera) que equivale a 240 palabras.

Una memoria RAM tiene como entradas, un canal de direcciones, para especificar la palabra con la cual se desea trabajar, y 2 líneas de control; una para habilitar o deshabilitar la memoria, llamada selector del circuito o habilitador del circuito (Chip

Select, CS) y la otra para indicar si se desea realizar una lectura o una escritura R /

(del inglés Read / Write, se usa para indicar que la operación de escritura se realiza cuando en esta línea se tiene un 0). Además cuenta con un canal de datos el cual normalmente es bidireccional, se comporta como un canal de entrada en la operación de escritura y como canal de salida en la operación de lectura. La principal razón de

1

Page 125: Apuntes de Electronica III Docx

125

este canal bidireccional es reducir el número de conexiones externas en el circuito integrado. La siguiente figura ejemplifica una memoria RAM de M líneas en el canal de direcciones y de n líneas en el canal de datos.

La construcción interna de una memoria RAM de 2M palabras de n bits, consta de una lógica de direccionamiento y de 2M x n celdas binarias (cb), en cada una de estas celdas binarias puede almacenarse 1 bit de información y constituye el bloque básico de una memoria RAM.

Celda binaria.

Existen 2 modos de construir este bloque básico: el estático y el dinámico.

En las memorias RAM estáticas, la celda binaria se construye esencialmente con un latch S-R, la información no se pierde mientras el circuito permanece encendido.

Las celdas binarias de la memoria RAM dinámica están construidas básicamente por medio de un capacitor que almacena la información y un transistor. El transistor permite cargar o descargar el capacitor, así como leer el valor que tiene éste. La carga almacenada en el capacitor tiende a desaparecer al momento de leerla, por lo cual siempre que se lee una celda binaria con valor de 1, debe ser seguida de una operación de escritura de un 1 y así restaurar la carga en el capacitor. Los circuitos de control de la RAM realizan esta operación de escritura en forma automática.

Incluso si la celda binaria nunca se lee, la carga almacenada tiende a desvanecerse con el tiempo, típicamente en pocos milisegundos. Para evitar que se pierda la información, las memorias dinámicas deben ser restauradas a intervalos regulares. A este proceso se le conoce como refresco de la memoria. Una celda se refresca simplemente ejecutando una operación de lectura (aunque no se necesite el dato).

Las memorias RAM dinámicas se refrescan mediante un circuito externo, que lea una secuencia de direcciones. Normalmente no es necesario leer todas las direcciones, ya que al leer una dirección se realiza el refresco a una serie de direcciones (un bloque de memoria). En la actualidad existen memorias RAM dinámicas que realizan el refresco en forma transparente, a estas memorias se les llama RAM dinámicas

Page 126: Apuntes de Electronica III Docx

126

sincrónicas. En una computadora, el refresco de la memoria RAM se realiza mientras la RAM está inactiva.

Al ser la celda binaria dinámica más sencilla en su construcción, tiene circuitos integrados con mayor capacidad y menor consumo de energía, su principal desventaja es que éstos tienen un mayor tiempo de acceso.

El funcionamiento lógico de una celda binaria estática o dinámica es el mismo, la siguiente figura muestra la lógica equivalente de una celda binaria.

Note que para hacer una escritura en la celda, es necesario poner en la línea de R/ un 0, en el selector un 1 y el dato que se desea escribir en la entrada. Si éste es un 1, se dará un SET en el latch, y si es un 0 se dará un RESET en el latch.

Para tener el valor de la celda en la línea de salida, es necesario poner un 1 en la línea

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 construcción de una memoria RAM.

Memoria RAM de M x N.

La construcción interna de una memoria RAM de 2M palabras de N bits, básicamente consta de un decodificador de M x 2M y de 2M x n celdas binarias.

Page 127: Apuntes de Electronica III Docx

127

La construcción lógica de una RAM pequeña de 4 x 4, en forma simplificada se muestra en la siguiente figura.

Esta memoria cuenta con 4 palabras de 4 bits. Para seleccionar una de las 4 palabras se requiere de un canal de direcciones de 2 líneas, a1 y a0 (a de address), las cuales entran al decodificador.

Al estar habilitado el decodificador seleccionará las celdas binarias de una de las cuatro palabras, dependiendo del contenido del canal de direcciones. Si la operación

que se desea realizar es una escritura, se pone en la línea de R / un cero y las celdas binarias seleccionadas guardarán los bits que se encuentran en el canal de

entrada. Para realizar una operación de lectura, se pone la línea R / un uno, lo que hace que los bits de las celdas binarias seleccionadas pasen por los bloques OR al canal de salida. Las celdas binarias de las palabras no seleccionadas mantienen su contenido.

El circuito de la memoria 4 x 4 incluyendo las celdas binarias y el decodificador se muestra a continuación:

Page 128: Apuntes de Electronica III Docx

128

Page 129: Apuntes de Electronica III Docx

129

Para unir el canal de entrada y el de salida en uno solo es necesario introducir una nueva compuerta, ésta es el buffer de tres estados. En la siguiente figura se muestra el símbolo usado para dicha compuerta, así como su funcionamiento.

La compuerta tiene una entrada de control y una entrada normal, cuando la primera (C) tiene el valor de 1, la salida de la compuerta tiene el valor que se encuentra en la entrada (E), el cual puede ser un 1 o un 0 (2 estados). Si la entrada de control vale 0, la salida pasa a un estado de alta impedancia (tercer estado), lo que equivale a desaparecer la compuerta y separar la entrada de la salida. El estado de alta impedancia que tiene la salida es la característica que hace especial a esta compuerta.

En la siguiente figura se muestra el circuito usado para hacer que una línea de un canal se comporte como línea de entrada o como línea de salida dependiendo de una señal de control.

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

Page 130: Apuntes de Electronica III Docx

130

La construcción lógica de una memoria con mayor capacidad, es una extensión 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.

Page 131: Apuntes de Electronica III Docx

131

2.9 CLASIFICACIÓN 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 dirección seleccionada en cualquier secuencia. Cuando se escriben los datos en una determinada dirección de la RAM, los datos de esa dirección permanecen almacenados y no son borrados por la operación de lectura. Esta operación no destructiva de lectura se puede entender como una copia del contenido de una dirección, dejando dicho contenido intacto. La RAM se utiliza habitualmente para almacenamiento de datos a corto plazo ya que no puede conservar los datos almacenados cuando se desconecta la alimentación. A continuación se muestra una clasificación de memorias RAM.

Las ROM mantienen los datos almacenados cuando se desconecta la alimentación y

son, por tanto memorias no volátiles. A continuación se muestra una clasificación de

memorias ROM.

Page 132: Apuntes de Electronica III Docx

132

RAM estática (SRAM)

Todas las RAM estáticas se caracterizan por las celdas de memoria latch. Cuando se

aplica alimentación continua a una celda de memoria estática se puede mantener un

estado 1 a 0 indefinidamente. Si se retira la alimentación, el bit de datos almacenado

se perderá.

RAM dinámica (DRAM)

Las celdas de las memorias dinámicas 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 más

bajo que el de las memorias estáticas. La desventaja es que con el condensador de

almacenamiento no puede mantenerse cargado más que un período de tiempo y el

dato almacenado se pierde a no ser que su carga se refresque periódicamente.

MEMORIAS DE SÓLO LECTURA (ROM).

Una ROM mantiene de forma permanente o semipermanente los datos almacenados,

que pueden ser leídos 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

Page 133: Apuntes de Electronica III Docx

133

programadas para la inicialización y el funcionamiento de un sistema. Las ROM

mantienen los datos almacenados cuando se desconecta la alimentación y son, por

tanto memorias no volátiles. A continuación se citan algunos tipos de memorias ROM.

LA ROM DE MÁSCARA.

Se denomina simplemente ROM, es una memoria programada de forma permanente

durante el proceso de fabricación, para proporcionar funciones estándar 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 básicamente iguales que las ROM de máscara, una vez que han sido

programadas. La diferencia consiste en que las PROM salen de fábrica sin estar

programadas y se programan para satisfacer las necesidades del usuario.

Memorias PROM.

Utilizan algún tipo de mecanismo de fundición para almacenar bits, donde un hilo

(fusible) de memoria se funde o queda intacto para representar un 1 o un 0. El proceso

de fundición es irreversible; una vez que una PROM ha sido programada no puede

cambiarse.

Memorias EPROM.

Una EPROM es una PROM borrable. A diferencia de una PROM ordinaria, una

EPROM puede ser reprogramada si antes se borra el programa existente en la matriz

de memoria. Una EPROM utiliza una matriz NMOSFET con una estructura de puerta

aislada. La compuerta del transistor aislada no tiene ninguna conexión eléctrica y

puede almacenar una carga eléctrica durante un periodo de tiempo indefinido. Los bits

de datos en este tipo de matriz se representan mediante la presencia o ausencia de

una carga almacenada en la compuerta. El borrado de un bit de datos es un proceso

que elimina la carga de la compuerta.

MEMORIAS FLASH.

Las memorias flash son memoria de lectura/escritura de alta densidad (alta densidad

equivale a gran capacidad de almacenamiento de bits) no volátiles, lo que significa que

pueden almacenarse los datos indefinidamente en ausencia de alimentación. Estas

memorias se utilizan frecuentemente en las unidades de disco duro de baja capacidad

en las computadoras portátiles y en los microcontroladores para almacenar los

programas.

Page 134: Apuntes de Electronica III Docx

134

2.10 CONEXIONES DE MEMORIAS. Con frecuencia se usan varios circuitos de memoria para formar memorias más grandes, puede ser que se quiera una memoria con más palabras o una que contenga un tamaño de palabra mayor. Suponga que se tienen varios circuitos de memoria RAM de 1K palabras de 8 bits y se desea formar una memoria de 2K palabras de 8 bits. Cada memoria tiene un canal de direcciones de 10 líneas (A9…A0), un canal de datos de 8 líneas (D7…D0) y 2 líneas de control (CS y R W).

Necesitamos una línea de dirección más significativa (A10), que determine cuál de los 2 circuitos se selecciona, como se muestra en seguida. 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.

En esta configuración, los dos circuitos siempre son seleccionados cuando A10 vale cero, y cada uno de ellos proporciona 8 líneas para formar el canal de datos de 16 líneas. Al diseñar un sistema de memoria para una computadora, es necesario conocer exactamente el tamaño de la memoria que se requiere, que porción o porciones de ésta serán RAM y ROM y con qué circuitos de memoria RAM o ROM se quiere diseñar.

RAM

1Kx8

RAM

1Kx8

Canal de direcciones de A9 a A0

Canal de datos de D7 a D0

A10

RAM

1Kx8

RAM

1Kx8

Canal de direcciones de A9 a A0

D0 a D7 D15 a D8

Canal de datos de D15 a D0

A10

CS

R / W

R / W CS R/W R/W

CS R/W CS R/W

Page 135: Apuntes de Electronica III Docx

135

Para facilitar el diseño de un sistema de memoria se forma un mapa de direcciones de memoria donde por medio de una tabla específica, para cada circuito de memoria, se establece el conjunto de direcciones de memoria que se le asignan. Ejemplo. Diseñe un sistema de memoria de 64K bytes, en el que los primeros 48K bytes son de RAM y el resto es de ROM. Se cuenta con dos memorias RAM de 16K bytes, dos memorias RAM de 16K palabras de 4 bits y una memoria ROM de 16K bytes.

Análisis. ROM= 64 K bytes de memoria - 48 K bytes de RAM = 16 K bytes. Palabra = 4 bits. 1 byte = 4 bits + 4 bits = 8 bits = 2 palabras. 1K bytes = 2 K palabras. 1RAM de 16K bytes = 2 RAM de 16K palabras.

Reflexión

¿Cómo las conecta? ____En paralelo ________________________. 48K bytes de RAM = 2 memorias de 16K bytes + 2 memorias de 16Kpalabras. 1K = 2 a la 10= 1024; número de líneas en el canal de direcciones=_10__. 16K = 2 a la _14__=_16384___; número de líneas en el canal de direcciones=__14_. 1k implica de A0 a A9_ =10 líneas. 16K implica de A0 a A13__ =14 líneas Para seleccionar dos bloques requiero __2___líneas más. Para seleccionar 4 bloques requiero __4___líneas más.

Síntesis Las direcciones de los 16K las controlo con las líneas de A0 a _A13___. Las direcciones de los bloques con las líneas A14__ y A15___. Las primeras direcciones corresponden a _RAM____ y las más altas a __ROM__. Armar el circuito considerando los canales de __Datos_________, _direcciones______________ y __control____________.

Page 136: Apuntes de Electronica III Docx

136

El circuito quedaria asi.

Page 137: Apuntes de Electronica III Docx

137

UNIDAD III

3.1 DIAGRAMA GENERAL DE UNA COMPUTADORA.

VON NEUMANN.

En el año de 1903 nace en Hungría John Von Neumann, uno de los más brillantes matemáticos de la era de la computación. Durante la Segunda Guerra Mundial participó como asesor en la construcción de la computadora ENIAC y más tarde de la UNIVAC, siendo su gran aporte el del concepto de programa almacenado o micro-código. A él se debe la arquitectura en la que se fundamentan la mayoría de los microprocesadores y microcontroladores actuales.

Aunque las tecnologías empleadas en las computadoras digitales han cambiado mucho desde que aparecieron los primeros modelos en los años 40, la mayoría todavía utiliza la Arquitectura de von Neumann, publicada a principios de los años 1940 por John von Neumann, que otros autores atribuyen a John Presper Eckert y John William Mauchly.

La arquitectura de Von Neumann describe una computadora con 4 secciones principales: la unidad aritmético lógica (ALU por sus siglas del inglés: Arithmetic Logic Unit), la unidad de control, la memoria central, y los dispositivos de entrada y salida (E/S). Estas partes están 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 información. La instrucción es la información 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 número de celdas varían mucho de computador a computador, y las tecnologías empleadas para la memoria han cambiado bastante. En general, la memoria puede ser reescrita varios millones de veces (memoria RAM); se parece más a una pizarra que a una lápida (memoria ROM) que sólo puede ser escrita una vez.

El procesador (también llamado Unidad central de procesamiento o CPU) consta de:

Page 138: Apuntes de Electronica III Docx

138

La unidad aritmético lógica o ALU es el dispositivo diseñado y construido para llevar a cabo las operaciones elementales como las operaciones aritméticas (suma, resta, ...), operaciones lógicas (Y, O, NO), y operaciones de comparación o relacionales. En esta unidad es en donde se hace todo el trabajo computacional.

La unidad de control sigue la dirección de las posiciones en memoria que contienen la instrucción que el computador va a realizar en ese momento; recupera la información poniéndola en la ALU para la operación 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 instrucción (normalmente situada en la siguiente posición, a menos que la instrucción sea una instrucción de salto, informando al ordenador de que la próxima instrucción estará ubicada en otra posición de la memoria).

Los dispositivos E/S sirven a la computadora para obtener información 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 cámaras web.

Lo anterior se muestra en la siguiente figura.

Arquitectura Von Neumann.

Page 139: Apuntes de Electronica III Docx

139

HARVARD.

La arquitectura Harvard diseñada por el señor Howard Aiken, graduado de la Universidad de Harvard y desarrollada en 1944 durante el proyecto Mark I, tiene como característica más importante tener los datos y las instrucciones en buses separados. De esta manera se puede ejecutar en forma paralela una instrucción con su respectivo dato, haciendo más corto el tiempo de ejecución.

El núcleo de la CPU está conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada memoria de programa. La otra memoria sólo almacena los datos y es llamada memoria de datos. Ambos buses son totalmente independientes y pueden ser de distintos tamaños.

A continuación se muestra una figura con la arquitectura Harvard.

Arquitectura Harvard.

Page 140: Apuntes de Electronica III Docx

140

OTROS CONCEPTOS Y OTRAS ARQUITECTURAS.

En la búsqueda de ejecutar procesos cada vez más rápidos, programas potentes cargados de multiplicidad de funciones, manipulación de grandes volúmenes de información, bajo consumo de energía y ocupación de pequeños espacios, las compañías que desarrollan microprocesadores y microcontroladores están 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 más 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 máquina, utilizando modos de direccionamiento simples e instrucciones sencillas. El concepto de segmentación (ejecución de varias instrucciones en el mismo ciclo de máquina) es más fácil 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 núcleo 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 también configura programas más cortos y de mejor aprovechamiento de la memoria. Se ha visto que algunos algoritmos, de moderada y alta complejidad, se desarrollan mucho más rápido en una máquina CISC que en una RISC.

Es frecuente encontrar un sin número de artículos que hablan bien o mal de RISC y de CISC, pero a estas alturas se concluye que lo mejor es tomar lo bueno de un concepto y del otro, como lo han hecho muchos fabricantes de microprocesadores y que han tenido gran éxito.

Concepto de arquitectura superescalar.

El fundamento del proceso superescalar, nacido en el año 1987 y derivado del procesamiento normal escalar, es el canal o cauce de instrucciones (PIPELINE) y toma elementos del concepto RISC, pero también es posible implementarla sobre el concepto CISC.

Un cauce de instrucciones consta de múltiples etapas de proceso distribuidas a lo largo de los ciclos de máquina, en donde varias instrucciones pueden ser ejecutadas a la vez. Si existen varios cauces de instrucciones se puede concluir que existe cierto nivel de ejecución en paralelo.

Page 141: Apuntes de Electronica III Docx

141

Concepto de procesadores vectoriales o paralelos.

La característica más 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 segmentación de instrucciones, se obtendrían máquinas con operaciones muy potentes y de velocidades altas (ver la siguiente figura).

La técnica 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 ejecutarán en paralelo.

La técnica anterior va acompañada de una sincronización muy eficiente, que coordina cada tarea (ver la siguiente figura).

Page 142: Apuntes de Electronica III Docx

142

3.2 BUSES.

Los buses son los medios que permiten establecer la comunicación con los distintos

periféricos que podríamos utilizar en conjunto con el microcontrolador (sensores,

memorias externas, puertos, etc.).

Los buses se pueden clasificar de la siguiente manera:

Clasificación por su transmisión.

.

Bus unidireccional. Es aquel en donde la información va en una sola dirección.

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 comunicación se efectúa en ambas direcciones, pero con la diferencia

de ser bit a bit.

Bus paralelo. En este caso, los datos se transmiten a través de varias líneas a la vez.

Clasificación por su función

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

dirección 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 dirección. Es bidireccional.

Bus de control. Es por el que circulan las señales auxiliares de gobierno y

sincronización del sistema (señal de reloj, señal de reset, señales 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 periféricos. Los sistemas de

buses seriales también son ampliamente utilizados para implementar buses de control

dentro de equipos como televisores, equipos de música y teléfonos celulares.

Page 143: Apuntes de Electronica III Docx

143

La mayor ventaja de utilizar buses seriales es el pequeño número de cables

necesarios para establecer la comunicación.

El BUS I2C

El I2C (Inter Integrated Circuits) es un bus de comunicaciones serial síncrono de dos

líneas que fue originalmente desarrollado por Philips Semiconductors (ahora nxp

semiconductors) desde los inicios de los ‘80. Hoy es un estándar aceptado y

respaldado por los fabricantes de dispositivos semiconductores.

El bus I2C permite la comunicación entre múltiples dispositivos (en teoría más de

1000), todos conectados paralelamente a las dos líneas. Las transferencias de datos

siempre se realizan entre dos dispositivos a la vez y en una relación maestro –

esclavo.

La ventaja de este bus es que sólo necesita de 2 líneas (clock y data) para una

comunicación full duplex entre múltiples dispositivos. La interfaz típicamente corre a

bajas velocidades (100kHz a 400khz). Con I2C, cada dispositivo en el bus tiene una

dirección de memoria única. El dispositivo puede trabajar como receptor y/o transmisor

dependiendo de cómo haya sido configurado.

El bus I2C fue implementado para maximizar la eficiencia del hardware y la simplicidad del circuito. La interfaz I2C es una simple interfaz maestro/esclavo. Como se mencionó anteriormente la simplicidad del bus radica en el diseño de 2 cables (SDA 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 señales desde o hacia un esclavo o controlar el reloj para que dos esclavos puedan comunicarse entre si. El bus I2C soporta más de un maestro conectado al mismo bus.

Para comenzar la comunicación el dispositivo maestro (típicamente un microcontrolador) pone en el bus la dirección del dispositivo con el que se quiere comunicar. Todos los dispositivos monitorean el bus para determinar si el maestro está enviando su dirección. Solo el dispositivo con la dirección correcta puede comunicarse con el maestro.

Page 144: Apuntes de Electronica III Docx

144

En la siguiente figura se muestra como conectar un microcontrolador como maestro y los periféricos como esclavos, empleando este tipo de comunicación.

Lo bueno de este bus como se aprecia en la imagen, es que requiere sólo 4 pines para hacer trabajar los periféricos:

Vcc (+5V) GND SDA (Serial Data). Es la línea para la transferencia serie de los datos. SCL (Serial Clock). Es la señal de reloj utilizada para la sincronización de los

datos.

Bus SPI

El bus SPI (Serial Peripheral Interface) es un sistema para la comunicación serial que

utiliza hasta cuatro líneas (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 conexión full duplex, lo que significa que los datos se

envían y se reciben simultáneamente.

La velocidad de transmisión máxima es mayor que en el sistema de conexión I2C.

Este bus es también 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 simultáneamente transmitidos y recibidos esto establece una

comunicación full-duplex.

Page 145: Apuntes de Electronica III Docx

145

Los nombres que Motorola asignó a las señales 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 señal CS. Por

ejemplo si se tienen 10 dispositivos conectados al mismo bus, entonces es

necesario utilizar 10 líneas de CS distintas, además de las líneas compartidas del

reloj SCLK y las de datos MISO y MOSI.

La siguiente figura muestra la forma de establecer este tipo de comunicación.

Bus SPI

UART (UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER) - TRANSMISOR-RECEPTOR ASÍNCRONO UNIVERSAL

Este tipo de conexión es asíncrona, lo que significa que no se utiliza una línea especial para transmitir la señal 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 sólo una línea de comunicación, tanto el receptor como el transmisor reciben y envían los datos a la misma velocidad que ha sido predefinida para mantener la sincronización necesaria. Esto es una manera simple de transmitir datos, puesto que básicamente representa una conversión de datos de 8 bits en paralelo a serial. La velocidad de transmisión no es alta.

Page 146: Apuntes de Electronica III Docx

146

3.3 ARQUITECTURA INTERNA DE LA UNIDAD MICROPROCESADORA.

La organización de una computadora digital y su arquitectura están íntimamente relacionadas; sin embargo, son dos conceptos diferentes que muchas veces se toman como sinónimos.

La organización de una computadora digital se refiere a las unidades lógicas que la componen (como la unidad central de proceso, la unidad de memoria, y la unidad de entrada/salida), las funciones que realizan, su operación 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 lógicas para que realicen las funciones especificadas por su organización, así como la manera en que estas unidades van a comunicarse para interactuar entre ellas.

Por ejemplo, el juego de instrucciones de máquina y los diferentes registros que tiene el procesador se definen en la organización de la computadora. Los detalles de la construcción de la unidad aritmética/lógica y la unidad de control para que la computadora ejecute dichas instrucciones, así como el número de bits utilizados para representar los números enteros, los números reales y las instrucciones de máquina, son detalles que se definen en su arquitectura.

La forma de manejar la memoria y los diferentes periféricos de la computadora, también se definen en la organización de la computadora. Los detalles de la construcción 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 aritméticas y lógicas. En forma general, una operación aritmética o lógica puede definirse como:

Resultado = operando 1 operación operando 2.

Donde la operación puede ser cualquier operación aritmética o lógica que realice la computadora a nivel de instrucción de máquina. Típicamente, todas las computadoras digitales efectúan operaciones de suma, resta y operaciones lógicas. Algunas computadoras tienen también operaciones de multiplicación y división como parte de su repertorio de instrucciones de máquina.

En las arquitecturas de 0 direcciones, los operandos se toman siempre de una pila y el resultado de la operación se deja en la pila. Por tanto, en las instrucciones aritméticas y lógicas de estas máquinas no se especifica ninguna dirección para los operandos ni para el resultado.

En las máquinas que tienen arquitectura de una dirección, uno de los operandos es siempre el registro acumulador y el otro corresponde a un operando en memoria. El resultado se deja en el registro acumulador. Estas máquinas tienen solamente un acumulador y las instrucciones aritméticas y lógicas solamente especifican la dirección en memoria del segundo operando.

Las máquinas que tienen arquitectura de dos direcciones cuentan con instrucciones aritméticas en las cuales se especifica de dónde se va a tomar cada uno de los dos

Page 147: Apuntes de Electronica III Docx

147

operandos de la instrucción. El resultado se deja en el lugar de donde se tomó el primer operando. Por ejemplo, en una máquina que tenga varios registros acumuladores, se especifica como primer operando uno de estos registros acumuladores y, como segundo operando, alguna dirección de memoria. El resultado se deja en el acumulador de donde se toma el primer operando.

Por último, en las máquinas con arquitectura de tres direcciones, se especifican tanto el lugar de donde se tomarán los operandos como aquél donde se dejará el resultado. Cualquiera de las direcciones corresponde a una dirección de memoria o un registro del procesador.

INTRODUCCIÓN A LA ARQUITECTURA COLDFIRE® V1 DE 32 BITS.

Como respuesta a la saturación de las capacidades y desempeño de las máquinas de

8 y 16 bits, para ciertas aplicaciones, las compañías ubicadas a la vanguardia del

diseño de microcontroladores como Atmel, Freescale, Renesas, STMicroelectronics,

Oki, entre otras, están desarrollando soluciones en 32 bits de bajo costo y muy bajo

consumo, para atraer a los diseñadores.

Una de las opciones más fuertes es la llamada Controller Continuum de Freescale.

Esta Compañía plantea la evolución migratoria desde las máquinas de 8 bits hacia las

arquitecturas fuertes de 32 bits. Parte del proceso consistía en encontrar el eslabón

perdido, y se refiere a los procesadores con arquitectura ColdFire® V1.

Características generales.

Los tres principios importantes en el desarrollo de las máquinas ColdFire® V1 son:

• Su núcleo: De tamaño reducido, la más baja disipación de potencia y el más amplio

desempeño.

• Periféricos y distribución de pines: Compatibilidad total con las máquinas de 8 bits

de la familia HCS08.

• Segmentación (Pipeline): Derivada de la familia ColdFire® V2, en forma

simplificada. Esta característica le proporciona al núcleo un alto desempeño.

La máquina ColdFire® V1 viene implementada sobre una arquitectura de

programación llamada ISA-C, como una derivación de las arquitecturas ISA-A e ISA-B

de máquinas superiores. La modificación consiste en poder soportar los periféricos de

las máquinas de 8 bits y así generar la compatibilidad con la familia HCS08,

conjuntamente con la manipulación de datos en 8 y 16 bits.

La arquitectura ISA nace junto con el diseño de la máquina M68000, que está

orientada al tratamiento de datos en 32 bits del tipo entero (integer) para lenguajes de

alto nivel, destacándose 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 comparación.

Page 148: Apuntes de Electronica III Docx

148

Ejemplo: La instrucción MOVE, que significa mover información 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 código independiente.

• Algunos tipos de operadores de manipulación de bits.

La mitad de los registros de propósito general Rn, divididos en: tipo dato (Dn) y tipo

dirección (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 dirección.

La máquina ColdFire® V1 tiene total compatibilidad de pines respecto de las máquinas

HCS08. En este sentido, existe un considerable sacrificio en la interfase de depuración

respecto de las máquinas ColdFire® V2 y superiores. Al existir un sólo pin para la

depuración (Interfase BDM), los procesadores ColdFire® V1 presentan los siguientes

cambios:

• Se pasa de una depuración a tres pines del tipo Full Dúplex, a un protocolo de un

solo pin del tipo half dúplex. Este sacrificio redunda en una menor velocidad de

depuración y una pérdida del concepto de “tiempo real”.

• La reducción del paquete de dato de depuración de 17 bits a 8 bits, hace que se

modifique el protocolo clásico de depuración y se empleen técnicas de compensación

para las capacidades de trace y breakpoints en los eventos de depuración. Lo

interesante del sacrificio en el mecanismo de depuración es poder utilizar las mismas

herramientas para las máquinas de 8 bits (familia HCS08) y 32 bits (familia ColdFire®

V1), lográndose la migración al 100% de una tecnología a otra.

Otras características generales son:

• Modelo simplificado del modo supervisor, conteniendo un manejo aparte de puntero

a pila, un registro base para vectorización de eventos y un registro de configuración de

la CPU.

• Soporta módulos opcionales (no vienen con la versión inicial) como las de división de

enteros, multiplicadoras/acumuladoras (MAC, EMAC), unidad de aceleración

criptográfica (CAU), entre otras.

• Respuesta programable ante la ejecución de código ilegal o decodificación de

direcciones de memoria no implementadas. Estos eventos se pueden tratar como de

excepción o de generación de RESET.

• Hasta 50 MHz de velocidad de procesamiento del núcleo sobre una tecnología de

0.25 micrones.

Page 149: Apuntes de Electronica III Docx

149

• 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 energía. El controlador de la

FLASH permite acceso por especulación como técnica de reducción de tiempos y

eficiencia en la ejecución 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 características:

Mapeado de los periféricos por fuera de la plataforma del módulo esclavo. Consiste de

64 bytes localizados al final de la memoria direccionable (0x(FF)FF_FFC0 –

0x(FF)FF_FFFF). El modelo de programación es accesado mediante el espacio

declarado para los periféricos. El nivel de las interrupciones es codificado y el vector

de atención es enviado directamente al núcleo del procesador.

El controlador soporta directamente 30 interrupciones de periféricos más 7

interrupciones por software (SWI).

Asociación fija entre las fuentes que requieren atención por interrupción y el nivel de

interrupción con su prioridad de atención. 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 máquinas de 8 bits de la familia HCS08. Es posible re-

mapear hasta dos requerimientos de interrupción, hacia los niveles más altos de

interrupción no enmascarable, asignando una prioridad.

Se asigna un único número de vector por cada fuente de interrupción, mediante la

siguiente ecuación:

Número del vector en ColdFire®_V1 = Número del vector en HCS08 + 62.

Arquitectura del núcleo.

El núcleo está formado por dos estructuras independientes de pipeline con una

interfase de bus unificada, para maximización del desempeño con una reducción del

hardware del núcleo, lográndose una significativa reducción del costo.

Las dos estructuras de segmentación de cauce son:

• IFP (Instruction Fetch Pipeline): Consiste de un cauce de dos niveles para la

prebúsqueda de las instrucciones que luego son ingresadas al OEP, como se define a

continuación.

• OEP (Operand Execution Pipeline): Consiste de un cauce de dos niveles, en el

cual se decodifica la instrucción, se capturan los operandos desde el IFP y se ejecuta

la función asociada a la instrucción.

Ambas estructuras están desacopladas mediante el empleo de un buffer, que opera

como una lista tipo FIFO, en donde el IFP actúa como un dispensador en la pre-

Page 150: Apuntes de Electronica III Docx

150

búsqueda de las instrucciones que serán servidas al OEP, minimizando la pérdida de

tiempo por paros en la espera de instrucciones.

En la pre-búsqueda realizada por el IFP, se pueden distinguir las siguientes etapas:

• IAG (Instruction Address Generation): Etapa encargada de decodificar la

instrucción a ser ejecutada.

• IC (Instruction fetch Cycle): Etapa de generación de los ciclos de reloj necesarios

para la búsqueda de la instrucción.

• IB: (Instruction Buffer): Etapa para el almacenamiento en la lista FIFO de las

instrucciones en espera de ejecución.

La estructura de ejecución 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 aritmética y lógica (ALU). En la estructura son distinguibles las

siguientes etapas:

• DSOC (Decode & Select Operand Cycle): Ciclo de decodificación y selección de los

operandos.

• AGEX (Address Generation Execute Cycle): Ciclo de generación de la dirección

después de ejecución. Determina la dirección destino, como resultado de la operación

ejecutada.

Con el objetivo de minimizar el costo en la fabricación del circuito integrado, el bus de

direcciones del núcleo de las máquinas V1 ha sido reducido de 32 bits a 24 bits. De lo

anterior se deduce que la máxima capacidad direccionable por los procesadores

ColdFire® V1 es de 16 MB. La siguiente Figura muestra un diagrama en bloques

resumido de la arquitectura del núcleo de la máquina ColdFire® V1.

Page 151: Apuntes de Electronica III Docx

151

3.4 MODELO DE PROGRAMACIÓN.

Esta familia de microcontroladores de alto desempeño y bajo costo utiliza la arquitectura ampliada con núcleo HCS08, velocidad de reloj de bus de hasta 24 MHz y una amplia variedad de periféricos, tan útil como el USB.

Compatible con las familias anteriores en 8 bits, el modelo de programación conserva la estructura de las primeras familias de microcontroladores de 8 bits. La siguiente figura ilustra las componentes del modelo de programación de las máquinas HCS08.

Acumulador (Acc, A):

Es el registro principal para operaciones matemáticas, de transferencia de información y operaciones lógicas. 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 instrucción con direccionamiento indexado, se menciona el registro "X", en realidad se está haciendo mención 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.

Page 152: Apuntes de Electronica III Docx

152

Puntero de Pila (SP):

El puntero de pila (SP), es un registro de 16 bits que contiene la dirección del próximo lugar en la pila (Stack). Durante un Reset, el puntero de pila, es puesto a $00FF. La instrucción Reset Stack Pointer (RSP), asigna al byte menos significativo el valor $FF y no afecta al byte más 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 localización de la pila es arbitraria, y puede ser "re-ubicada" en cualquier parte de la memoria RAM. Moviendo el puntero fuera de la página 0 ($0000 a $00FF) libera el espacio del direccionamiento directo. Para una operación 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 característica, 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 teóricamente (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 dirección contenida en el "Reset Vector" que para el MC68HC908 se encuentra en la posición $FFFE y $FFFF.

La dirección contenida en el vector, es la dirección de la primera instrucción a ser ejecutada después de salir del estado de RESET.

Registro de Código de Condición (CCR). El registro de código de condición contiene una máscara de interrupción y cinco indicadores de estado que reflejan el resultado de operaciones aritméticas y de otro tipo de la CPU. En esencia, es idéntico 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), máscara de interrupción (I), negativo (N), cero (Z) y acarreo / préstamo (C).

V - Flag overflow del Complemento a dos.

• “Vale 1” si una operación aritmética signada se ha desbordado

• Utilizado en “chequeos” de operaciones aritmética signadas

H - Half Carry flag.

Page 153: Apuntes de Electronica III Docx

153

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

• Utilizado en operaciones aritméticas 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, también 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 operación.

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 (según 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 demás letras designan los sub grupos funcionales de la familia HC08.

A continuación se muestran los módulos que constituyen al microcontrolador.

El CPU 08 es el “corazón” de los MCUs de la familia HC908.

Page 154: Apuntes de Electronica III Docx

154

Dentro de la estructura interna de un HC908, el módulo del CPU se vincula con el resto de los módulos 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 código de hasta 64K bytes. Este Bus es denominado IBUS (Internal Bus).

La frecuencia máxima del BUS interno es de 8 MHZ reales a 5 Volts de alimentación 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 ejecución que presenta el CPU 08:

Arquitectura de Ejecución:

El CPU 08 pertenece a la arquitectura del tipo “Von Neumann” clásica, característica 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 código 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 código. Por lo que no es raro encontrar

Page 155: Apuntes de Electronica III Docx

155

aplicaciones cuyos programas corren desde RAM como si estuvieran en Flash. Esto no podría hacerlo una arquitectura Harvard clásica.

El CPU está formado por dos grandes bloques, el “execution unit” y el “control unit”.

El execution unit, contiene la Unidad Lógica y Aritmética (encargada de todas las operaciones lógicas binarias y aritméticas), Registros internos del CPU (Acumulador, Puntero de pila, Contador de Programa, Registro índice, Registro de Código de Condiciones) y la interface con el bus interno.

El control unit, contiene una máquina de estados finitos, unidades de control y tiempo para “manejar” el execution unit.

A continuación se ilustra la temporización interna.

El CPU08 contiene un “opcode” con un mecanismo de Pre-búsqueda hacia adelante.

• Se hace más eficiente la ejecución por la remoción de tantos “ciclos muertos” de Bus como sea posible.

• De esta forma se obtienen instrucciones con menor número de ciclos de reloj, mejorando la velocidad real de ejecución de código.

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 máquina. 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 máquina como sean posibles, ya que mediante un mecanismo de “pre-búsqueda” se minimizan los “tiempos muertos” (dead time) típicos de estructuras Von Neumann.

Page 156: Apuntes de Electronica III Docx

156

UNIDAD IV

4.1 MODOS DE DIRECCIONAMIENTO.

El campo de operación de una instrucción especifica la operación que se va a ejecutar. Esta operación debe realizarse sobre algunos datos almacenados en registros de computadora o en palabras de memoria. La manera en que eligen los operandos durante la ejecución del programa depende del modo de direccionamiento de la instrucción. El modo de direccionamiento especifica una regla para interpretar o modificar el campo de dirección de la instrucción antes de que se haga la referencia real al operando. Las computadoras utilizan técnicas de modo de direccionamiento para acomodar una o las dos siguientes consideraciones:

1. Proporcionar al usuario versatilidad de programación al ofrecer facilidades como apuntadores a memoria, contadores para control de ciclo, indexación de datos y reubicación de datos.

2. Reducir la cantidad de bits en el campo de direccionamiento de la instrucción.

La disponibilidad de los modos de direccionamiento proporciona al programador con experiencia en lenguaje ensamblador la flexibilidad para escribir programas más eficientes en relación con la cantidad de instrucciones y el tiempo de ejecución.

Para comprender los diferentes modos de direccionamiento que se presentaran en esta sección, es imperativo entender el ciclo de operación básico de la computadora. La unidad de control de una computadora está diseñada para recorrer un ciclo de instrucciones que se divide en tres fases principales:

1. Búsqueda de la instrucción de la memoria. 2. Decodificar la instrucción. 3. Ejecutar la instrucción.

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 dirección de la siguiente instrucción que se va a ejecutar y se incrementa cada vez que se recupera una instrucción de la memoria. La decodificación realizada en el paso 2 determina la operación que se va a ejecutar, el modo de direccionamiento de la instrucción y la posición de los operandos.

Después la computadora ejecuta la instrucción y regresa al paso 1 para hacer la búsqueda de la siguiente instrucción en secuencia.

Page 157: Apuntes de Electronica III Docx

157

En algunas computadoras el modo de direccionamiento de la instrucción se especifica con un código binario distinto, como se hace con el código de operación. Otras computadoras utilizan un código binario único que representa la operación y el modo de la instrucción. Pueden definirse instrucciones con diversos modos de direccionamiento y, en ocasiones, se combinan dos o más modos de direccionamiento en una instrucción.

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 instrucción obtendrá el dato requerido para su ejecución. Debido a los diferentes modos de direccionamiento, una instrucción puede acceder al operando en una de las diversas maneras. Cada variante de diferente modo de direccionamiento de una instrucción debe tener un único código de operación de instrucción.

Aunque la mayoría de los modos de direccionamiento modifican el campo de dirección de la instrucción, hay dos modos que no necesitan el campo de dirección. Son los modos implícito o inherente e inmediato.

A continuación se muestran los modos de direccionamiento con un ejemplo para comprender mejor cada uno de ellos.

Page 158: Apuntes de Electronica III Docx

158

Page 159: Apuntes de Electronica III Docx

159

Page 160: Apuntes de Electronica III Docx

160

Page 161: Apuntes de Electronica III Docx

161

Page 162: Apuntes de Electronica III Docx

162

Page 163: Apuntes de Electronica III Docx

163

Page 164: Apuntes de Electronica III Docx

164

Page 165: Apuntes de Electronica III Docx

165

Page 166: Apuntes de Electronica III Docx

166

.

Page 167: Apuntes de Electronica III Docx

167

Page 168: Apuntes de Electronica III Docx

168

Distribución de la memoria.

La siguiente figura muestra la distribución de la memoria, en los 64 KB configurables, de las máquinas HCS08, para la familia JM.

Distribución de los módulos.

La siguiente Figura muestra la distribución de los módulos que conforman las máquinas HCS08, para la familia JM.

Page 169: Apuntes de Electronica III Docx

169

EL CONCEPTO FLEXIS.

Freescale se ha convertido en la primera compañía que ha desarrollado máquinas de 8 bits que puedan migrar a máquinas de 32 bits, con la filosofía de hacer que los diseños consuman la menor cantidad de energía y que el tiempo de desarrollo sea el más corto. Todo esto enmarcado en la estrategia llamada Controller Continuum

La estrategia Controller Continuum apunta a la migración gradual desde los 8 bits hasta las arquitecturas más poderosas en ColdFire®, como son las versiones de la V2 a la V4. La versión V1 puede ser llamada “el eslabón perdido”, que no es tan poderosa como las versiones superiores pero permite la migración paulatina hacia máquinas más complejas. Esta estrategia también hace atractivas las máquinas ColdFire®, para los millones de consumidores de las arquitecturas ColdFire/68K.

Las aplicaciones realizadas en esta familia pueden migrar, con unos pocos movimientos del ratón, hacia la familia ColdFire® V1 de 32 bits y viceversa. Lo interesante de la migración, radica en el poder de ampliación que pueden tener los proyectos realizados en arquitecturas de 8 bits hacia máquinas de 32 bits, por una diferencia de costo muy reducida. En la migración son conservados aspectos como: el esquema de utilización de módulos, el mecanismo de las interrupciones, la distribución de puertos, el mecanismo de reloj, los modos de operación, 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 MCU’s, notándose la gran compatibilidad de ambas máquinas.

Page 170: Apuntes de Electronica III Docx

170

Para esta segunda serie de la familia FLEXIS, en el mapa de evolución de las familias ColdFire® V1, se nota un gran cambio en el sentido de la riqueza y actualidad de sus periféricos de comunicaciones. Aparecen buses tan importantes como el CAN y el USB, que no tenía la serie QE anterior.

El consumo es otro de los aspectos cruciales a la hora de migrar de tecnologías de 8 a 32 bits. En este aspecto, Freescale ha sido cuidadosa y ha sorprendido con las mínimas diferencias de consumo entre las máquinas 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 máximo desempeño y un reloj de operación de 48MHz.

CUIDADOS EN LA MIGRACIÓN.

El usuario deberá tener ciertas precauciones al momento de migrar proyectos con la tecnología FLEXIS. Como ya se vio, las arquitecturas de los núcleos de las máquinas son muy distintas, aunque se hayan conservado muchas de las características de los periféricos de las MCU’s.

Algunas de estas precauciones son listadas a continuación.

• Incompatibilidad de instrucciones a bajo nivel: Debido a la gran diferencia entre sus núcleos, no es recomendable insertar como código de un programa instrucciones en línea de lenguaje ensamblador.

Si en un programa es necesaria la inclusión de instrucciones a bajo nivel, el usuario deberá hacer la traducción al nuevo lenguaje ensamblador. Pero en lo posible, es recomendable eliminar el código a bajo nivel y reemplazarlo por instrucciones en C/C++. Por ejemplo:

En vez de usar la instrucción (del HCS08):

asm BSET 0, PTADD.

Mejor usar:

PTADD0 = 1;

Page 171: Apuntes de Electronica III Docx

171

• Proceso de excepciones y vectorización de las interrupciones de periféricos:

Los vectores de atención a las interrupciones de ambas máquinas no son directamente compatibles, porque los números de los vectores de atención a interrupciones no son los mismos. El usuario debe recordar la ecuación que los relaciona y que a continuación se escribe.

Número del vector en ColdFire®_V1 = Número del vector en HCS08 + 62.

Otra alternativa es consultar en el archivo que tiene la redefinición, el nombre y el número 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 atención a la interrupción del módulo RTC en la máquina MC9S08JM60 es el 29, cuyo equivalente en la máquina MCF51JM128 es el 91. Lo anterior se comprueba en la ecuación:

Número 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:

Page 172: Apuntes de Electronica III Docx

172

4.2 HERRAMIENTAS DE PROGRAMACIÓN.

INTRODUCCIÓN AL COMPILADOR CODEWARRIOR®. Definiremos brevemente los menús que componen el software CodeWarrior® 6.2 y que aparecen en el menú principal según la siguiente figura.

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

Page 173: Apuntes de Electronica III Docx

173

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

Page 174: Apuntes de Electronica III Docx

174

New Project: Usado para generar proyectos nuevos CodeWarrior. Se compone de las ventanas: - Device and Connection: Selección del MCU y el tipo de conexión para la depuración y programación (ver siguiente figura).

Add Additional Files: Inserción de archivos adicionales que conformarán el cuerpo del proyecto (C, C++, asm, h. etc.) (ver siguiente figura).

Page 175: Apuntes de Electronica III Docx

175

Processor Expert: Seleccionar la opción del procesador experto, que facilita la inicialización de muchas de las funciones y periféricos de las máquinas (ver siguiente figura).

C/C++ Options: Selección del nivel del código a usar, de acuerdo al estándar de C, el modelo de memoria y el formato de punto flotante. Todo lo anterior debe considerar la mejor densidad de código posible (ver siguiente figura).

Page 176: Apuntes de Electronica III Docx

176

Open: Clásico submenú para abrir proyectos o archivos almacenados en memoria de disco. Find and Open File: Clásico submenú para hallar y abrir archivos o proyectos. Save, Save All, Save As, Save a Copy As, Revert: Serie de submenús para guardar archivos y/o proyectos. La opción Revert, recupera la última versión guardada y la sobrescribe en la presente. (Open, Close, Save, Save As) Workspace: Serie de submenús 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 edición. Print: Imprimir documento abierto. Open Recent: Abrir los últimos proyectos trabajados. Exit: Salir del CodeWarrior® 6.2. Edit: Submenú de edición del CodeWarrior® 6.2. Contiene las funciones normales de un editor de textos, pero sólo serán descritas las especiales del submenú. Preferences…: Permite configurar preferencias generales y del editor de textos (ver siguiente figura).

Page 177: Apuntes de Electronica III Docx

177

Build Settings: Preferencias en la construcción del proyecto. - IDE Extras: Algunos aspectos adicionales de la apariencia del editor, como el tipo de menú, disponibilidad de múltiples documentos, entre otros. - IDE Startup: Acciones a ejecutar cuando se abre el editor. - Plugins Settings: Parámetros de visualización para los mensajes del editor. - Shielded Folders: Bloqueo de directorios bajo ciertos símbolos. - Source Trees: Definir los caminos para el almacenamiento de los proyectos y archivos. - Code Completion: Definir las reglas para autocompletar el código escrito. - Code Formating: Definir las reglas para el formato del código escrito. - Editor Settings: Configuración 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 parámetros del destino sobre la acción de encadenamiento (linker) (ver siguiente figura).

Page 178: Apuntes de Electronica III Docx

178

Target: Tipo de encadenador, caminos de acceso a los proyectos y archivos, entre otros. Language Settings: Configuración sobre la norma del lenguaje (C, C++) y algunas opciones de errores y mensajes de precaución. Code Generation: Elección del tipo de procesador, modelo de programación, modelo del dato y tipo de optimización en la compilación del código. Linker: Configuración sobre el des-ensamblador y el encadenador (linker). VCS Settings: Se utiliza para configurar los parámetros de versión del código y seguridad del mismo (ver siguiente figura).

Page 179: Apuntes de Electronica III Docx

179

Customize IDE Commands: Relacionado con la configuración de la apariencia del editor IDE (ver siguiente figura).

View: Submenú de visualización del CodeWarrior® 6.2. Está compuesto por: Toolbars: Barras de visualización de los menú de herramientas del IDE. Project Inspector: Se pueden visualizar, de manera rápida, algunos atributos del proyecto (ver siguiente figura).

Page 180: Apuntes de Electronica III Docx

180

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

Browser Contents: Su función principal es la de poder visualizar información del tipo de una variable: - Class - Constants - Enums - Functions - Globals - Macros - Templates - Typedefs Ver en la siguiente figura.

Page 181: Apuntes de Electronica III Docx

181

Class Browser: Visualización por clases en el Browser. Class Hierarchy: Visualización por jerarquías en el Browser. Build Progress: Visualización del progreso en la construcción del proyecto. Errors and Warnings: Visualización de errores y precauciones en la construcción del proyecto. • View: Submenú para la búsqueda, reemplazo y comparación de información en un texto que pertenezca a un texto. Para destacar de este menú están: 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 comparación con el archivo fuente. Unapply Diferences: Revierte el proceso anterior. • Project: Submenú para administración 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: Evalúa la sintaxis del archivo abierto. Preprocess: Pre-procesa el archivo abierto. Precompile: Pre-compila el archivo abierto. Compile: Ejecuta la compilación de todo el proyecto. Dissasemble: Desensambla el código C/C++ a instrucciones en ensamblador y códigos de máquina. Make: Compilación completa del proyecto. Stop Build: Interrumpe cualquier acción de compilación. Remove Object Code: Se usa para remover código objeto binario del proyecto activo.

Page 182: Apuntes de Electronica III Docx

182

Re-search for Files: Agiliza la construcción y otras operaciones del proyecto. El software IDE captura la localización de los archivos del proyecto después de encontrarlos en las rutas de acceso. Esta opción fuerza al IDE para olvidar las localizaciones de los archivos del proyecto y reinicia su búsqueda en las rutas señaladas. Reset Project Entry Paths: Reinicia las rutas de archivos del proyecto. Sincronize Modification Dates: Actualiza las fechas de modificación de los datos almacenados en el archivo del proyecto. El IDE verifica la fecha de modificación de cada archivo en el proyecto, y marca los archivos modificados, desde el último proceso de compilación exitosa. Debug: Lanza la opción de depuración, que dependerá del valor establecido en la ventana del navegador del proyecto, según indica el puntero del ratón en la siguiente figura.

Page 183: Apuntes de Electronica III Docx

183

La ventana de simulación se muestra en la siguiente figura:

Sus partes más importantes son: - Source: Programa fuente en depuración. Muestra el código tal cual se digitó y que se está ejecutando en el proceso de depuración. Una barra azul indica la instrucción que se va a ejecutar y su dirección debe coincidir con la dirección del registro PC. Dentro de esta ventana, haciendo presión sobre el botón derecho del ratón, es posible generar las siguientes acciones: _ Set Breakpoint: Ubicar puntos de chequeo. _ Run to Cursor: Ejecutar el programa hasta la posición del cursor. _ Show Breakpoints: Mostrar los puntos de chequeo activos. _ Show Location: Mostrar la localización de la instrucción 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.

Page 184: Apuntes de Electronica III Docx

184

_ Set Program Counter: Cambiar el valor del PC. _ Open Source File: Abrir un archivo fuente del proyecto. _ Copy: Copiar. _ Goto Line: Ir a un número de línea del listado de programa. _ Find: Buscar una secuencia de caracteres. _ Find Procedure: Buscar un procedimiento. _ Folding: Muestra o esconde una sección del programa. _ Marks: Ubica triángulos donde se pueden ubicar breakpoints. Assembly: Muestra el código ensamblado que corresponde a la instrucción en la ventana del programa fuente (Source). Haciendo presión sobre el botón derecho del ratón, es posible generar las siguientes acciones (se destacarán aquellas que son nuevas al lector): _ Display: Permite visualizar el código en lenguaje ensamblador, la dirección de la ubicación de la instrucción en memoria de programa, los símbolos asignados a direcciones y el código de operación de la instrucción. _ Format: Selección del formato de presentación de las cantidades numéricas. - Procedure: Muestra los procedimientos ejecutados y en ejecución. Haciendo doble pulsación con el ratón, es posible cambiarse de procedimiento. - Register: Muestra el estado de los registros internos al MCU. También muestra el número de ciclos de reloj consumidos durante la simulación del programa. Haciendo doble pulsación sobre algún registro, es posible cambiar su valor. Haciendo presión sobre el botón derecho del ratón, es posible generar la siguiente acción: _ Format: Selección del formato de presentación de las cantidades numéricas. - Data1, 2: Visualización de datos en general. Cualquier variable del sistema puede ser visualizada y actualizada de valor haciendo doble pulsación sobre la variable. Haciendo presión sobre el botón derecho del ratón, es posible generar las siguientes acciones: _ Open Module…: Llama las variables involucradas en un determinado módulo o proceso. _ Add Expression: Adiciona variables a la ventana. _ Set/Delete/Show Watchpoints: Permite establecer zonas de visualización de variables, eliminarlas y mostrar cuáles están activas. _ Show Location: Muestra la ubicación en memoria de la variable seleccionada.

Page 185: Apuntes de Electronica III Docx

185

_ 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 actualización del valor de los datos. _ Format: selección del formato de presentación de los datos. _ Options: Permite presentar los punteros como arreglos y establecer el ancho en caracteres de los datos. _ Sort: Establece el orden de presentación de los datos. _ Refresh: Actualización inmediata del valor de los datos. - Memory: Visualización de la memoria absoluta del sistema. Haciendo doble pulsación sobre el dato en memoria, es posible cambiar su valor (siempre y cuando se pueda cambiar). Haciendo presión sobre el botón derecho del ratón, es posible generar las siguientes acciones: _ Word Size: Permite configurar la información de la memoria como byte, word o longword. _ Display: Visualización de la dirección 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 dirección específica de memoria. _ Copymem…: Se usa para copiar un bloque de la memoria hacia otro destino. _ Search Pattern…: Se usa para hallar un patrón de valores de memoria. - Command: Visualización de la de las acciones ejecutadas en la sesión de simulación (Debug). Haciendo presión sobre el botón derecho del ratón, es posible generar las siguientes acciones: _ Clear: Borra la historia de depuración. _ Execute File: Permite la ejecución de un archivo como parte del proceso de depuración. _ Cache Size: Permite definir el tamaño del cache de depuración. Set Default Project: Cuando se tienen varios proyectos abiertos, esta opción permite darle la propiedad de proyecto por defecto a uno de ellos. Change MCU Connection: Permite cambiar de modelo de MCU. Esta opción es importante cuando se va a migrar de una máquina a otra.

Page 186: Apuntes de Electronica III Docx

186

• Processor Expert: Submenú de la herramienta de pre-configuración de proyectos. Esta opción puede generar código de inicialización y configuración de los periféricos de la MCU y externos; también puede generar algunos algoritmos de programación. • Device Initialization: Esta herramienta permite generar código de inicialización de los periféricos internos a la MCU, configuración de la tabla de vectores de interrupción y establecer plantillas para las rutinas de atención de interrupciones del sistema. • Window: Submenú clásico para el manejo de ventanas. Help: Submenú de las ayudas. Se recomienda al lector hacer un ejercicio de navegación por este menú.

BREVE DESCRIPCIÓN 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 ).

Page 187: Apuntes de Electronica III Docx

187

Los contenidos más importantes del sistema DEMOJM son: • Un analizador lógico de dos canales, que puede ser utilizado para la visualización de datos en tiempo real sobre un PC. Se recomienda al usuario el DEMOJM para informarse sobre esta aplicación 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 asimétrico para la inserción de los MCU’s (MC9S08JM60 o MCF51JM128), llamado JM DAUGHTER CARD. • Una interfase embebida P&E MULTILINK, para la programación y depuración de los programas. • Puerto SCI conectado, vía 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. • Selección, vía puentes, del voltaje de alimentación 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. • Módulo CAN. • Acelerómetro de tres ejes. • Ocho LED’s de usuario. • Cuatro pulsadores de usuario. • Un parlante piezo-eléctrico. • Puerto IIC con pullups. • Un potenciómetro de 10K

Page 188: Apuntes de Electronica III Docx

188

Algunas especificaciones del circuito son: • Dimensiones: 8.9cms x 10cms. • Alimentación: Cable USB: 5VCD @ 500mA máximo. Fuente externa: 6VCD a 8VCD con positivo al centro. La siguiente tabla muestra la ubicación, por defecto, de los puentes:

Page 189: Apuntes de Electronica III Docx

189

La siguiente figura muestra la distribución de pines (PINOUT) del conector MCU PORT en el circuito impreso del DEMOJM. La mayoría de los ejercicios harán referencia de conexión sobre este conector.

Page 190: Apuntes de Electronica III Docx

190

4.3 INSTRUCCIONES.

Las instrucciones son las herramientas que permiten la comunicación entre el programador y el sistema basado en el microcontrolador, se tiene un lenguaje que utiliza nemónicos (abreviaturas en inglés), 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 acción determinada.

Page 191: Apuntes de Electronica III Docx

191

Page 192: Apuntes de Electronica III Docx

192

Movimientos de Datos: Las instrucciones de movimientos de datos, han sido ampliadas notoriamente en la familia HC908 en comparación 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 código y aumentando la velocidad de ejecución de las mismas. Además se puede apreciar que por cada tipo de instrucción, 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 más rápida 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 más rápidas y algoritmos más 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.

Page 193: Apuntes de Electronica III Docx

193

Page 194: Apuntes de Electronica III Docx

194

MULTIPLICACIÓN Y DIVISIÓN: La familia HC908 contiene instrucciones de Multiplicación y de División, a diferencia de la familia HC705 que solo contenía la Multiplicación. La instrucción de multiplicación 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 operación, 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 más pesada del resultado. La instrucción División 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 más 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 operación, se carga en el registro “A” , mientras que el resto o remanente se carga en el “H”. Si el resultado de la operación es mayor que “$ FF”, entonces se activará el flag de “CARRY” (C) en el CCR y el valor en el registro “H” será indeterminado.

Page 195: Apuntes de Electronica III Docx

195

Page 196: Apuntes de Electronica III Docx

196

Page 197: Apuntes de Electronica III Docx

197

Más sobre la instrucción 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 instrucción AIX permite “adicionar” en forma inmediata un número signado (positivo o negativo) al registro índice H:X, de esta forma pueden lograrse manejos de tablas de manera más eficiente, búsquedas ascendentes o descendentes a partir de un punto, “saltos” discretos mayores a “1” en una tabla, tanto positivos como negativos. La instrucción AIX no afecta el CCR (registro de código 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”.

Page 198: Apuntes de Electronica III Docx

198

Page 199: Apuntes de Electronica III Docx

199

Page 200: Apuntes de Electronica III Docx

200

Page 201: Apuntes de Electronica III Docx

201

CBEQ y DBNZ.

CBEQ combina las instrucciones CMP y BEQ.

• Operaciones más rápidas de búsqueda / acceso a tablas.

DBNZ combina las instrucciones DEC y BNE.

• Loop’s más rápidos y eficientes.

Con estas dos nuevas instrucciones, se consigue un manejo más sencillo eficiente de operaciones repetitivas como “loops” , búsqueda / acceso a tablas.

Se siguen conservando las instrucciones “tradicionales” para mantener la compatibilidad con la familia. HC705.

A continuación, veremos algunos ejemplos que utilizan estas instrucciones, con notables ventajas a las instrucciones tradicionales.

Page 202: Apuntes de Electronica III Docx

202

Page 203: Apuntes de Electronica III Docx

203

Page 204: Apuntes de Electronica III Docx

204

Page 205: Apuntes de Electronica III Docx

205

4.4 EJEMPLOS DE PROGRAMAS BÁSICOS.

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 dirección 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 dirección 0800, colocando el resultado en la dirección 0802.

LDA $0800 SUB $0801 STA $0802 SWI

3.- Realizar un programa en ensamblador para el microcontrolador JM60 de FREESCALE que ejecute una multiplicación 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 división, donde el dividendo se encuentra ocupando las direcciones 0800 y 0801, y el divisor la dirección 0802. El cociente lo deberá colocar en la dirección 0803 y el residuo en la dirección 0804.

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

Page 206: Apuntes de Electronica III Docx

206

5.- Realizar un programa en ensamblador para el microcontrolador JM60 de FREESCALE que obtenga la raíz cuadrada del número contenido en la dirección 0800, dejando el resultado en la dirección 0801 y el residuo en la dirección 0802

CLR $0801 MOV # 1, $0803 LDA $0800

REPITE: CMP $0803 BMI FIN SUB $0803 INC $0801 INC $0803 INC $0803 FIN: STA $0802

SWI

6.- Realizar un programa en ensamblador para el microcontrolador JM60 de FREESCALE que analice si un número es par o impar, el cual se encuentra en la dirección 0800. El resultado se dejara en la dirección 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 términos de la serie Fibonacci, el número solicitado de términos se encuentra en la dirección 0800 y la serie se deberá dejar a partir de la dirección 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

Page 207: Apuntes de Electronica III Docx

207

8.- Realizar un programa en ensamblador para el rmicrocontrolador JM60 de FREESCALE que ordene en forma descendente los N términos de un vector que empieza en la dirección 080A, el número de términos del vector se encuentra en la dirección 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

Page 208: Apuntes de Electronica III Docx

208

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.

Page 209: Apuntes de Electronica III Docx

209

UNIDAD V

5.1 Puertos Digitales.

La máquina MCF51JM128 contiene 66 pines I/O en la versión de 80 pines, distribuidos en 9 puertos (A, B, C, D, E, F, G, H, J) o 56 pines I/O en la versión 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 mayoría de los pines cumplen una doble función y algunos una triple función, por ejemplo: el pin PTD3 trabaja como pin de propósito general (I/O) o como una entrada de la función KBI (KBIP3) o como una entrada del conversor análogo a digital ADC (ADP10).

Por defecto, cuando la máquina 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 daños del MCU.

NOTA: Todos aquellos pines que no se utilicen en un proyecto deberán ser definidos a algún estado, siempre y cuando conserven su dirección como entrada. Lo anterior es debido a la exposición del sistema ante señales espurias o ruido EMI y/o a consumos extras por pines flotantes.

La siguiente figura muestra un diagrama simplificado de la composición de un pin de un puerto.

Page 210: Apuntes de Electronica III Docx

210

Todo puerto está compuesto por un registro que configura la dirección de cada pin asociado a este. Los registros PTxDD contienen los bits PTxDDn, que habilitan la dirección de un pin.

Al registro que establece el valor lógico 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 lógico del bit (o de los bits), antes de resolver la dirección 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 básicas, 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 configuración 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 dirección.

La siguiente figura muestra la disposición de este registro para todos los puertos de la máquina.

Page 211: Apuntes de Electronica III Docx

211

Registro de dirección de pin (PTxDD): La siguiente figura muestra la configuración general de un registro de dirección de pines de un puerto x.

PTxDDn: Establece la dirección 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 disposición de este registro para todos los puertos de la máquina.

Registro de habilitación de pullups31 (PTxPE): La siguiente figura muestra la configuración general de un registro de habilitación 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.

Page 212: Apuntes de Electronica III Docx

212

La siguiente figura muestra la disposición de este registro para todos los puertos de la máquina.

NOTA: Los pullups son típicamente de 45K

Registro de habilitación del slew rate (PTxSE): La siguiente figura muestra la configuración general de un registro de habilitación del slew rate para los pines de salida de un puerto x.

PTxSEn: Limita la razón de ascenso de la señal eléctrica de un pin de salida. El efecto es blindar el pin contra fenómenos 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 disposición de este registro para todos los puertos de la máquina.

Page 213: Apuntes de Electronica III Docx

213

Registro de habilitación del drive strength (PTxDS): La siguiente figura muestra la configuración general de un registro de habilitación 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 disposición de este registro para todos los puertos de la máquina.

NOTA: La máxima 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 habilitación de un filtro a la entrada (PTxIFE): La siguiente figura muestra la configuración general de un registro de habilitación de un filtro pasa bajos a un pin de entrada al MCU.

Page 214: Apuntes de Electronica III Docx

214

PTxIFEn: Habilita la aplicación 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 disposición de este registro para todos los puertos de la máquina.

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 máquina 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 filosofía de programación que emplearemos en estos apuntes.

Se pretende ilustrar al estudiante sobre la creación de un primer proyecto y no se profundiza sobre las técnicas de desarrollo de programas en C para sistemas embebidos con microcontroladores.

/* Archivos de cabecera */ #include <hidef.h> // macro para habilitar interrupciones #include "derivative.h" // declaración de periféricos /* 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 /* Función 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?

Page 215: Apuntes de Electronica III Docx

215

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 (;;) //iteración infinita Led1_On (); //enciende el Led1 Delay (); //llama función de retardo: Delay Led1_Off (); //apaga el Led1 Delay (); //llama función de retardo: Delay

/* es necesario asegurarse de nunca abandonar el main */

Para proceder a la depuración es necesario establecer la conexión como se muestra en la siguiente figura. El PC deberá instalar automáticamente el hardware del DEMOJM y una vez reconocido seguir los pasos que se detallan a continuación:

Paso 1: En el menú principal del CodeWarrior® 6.2 hacer la selección de la opción P&E Multilink/Cyclone Pro, que se encuentra en la ventana de navegación del proyecto.

Paso 2: Presionar el botón (depurador), de esta manera el programa entrará al depurador y la ventana de la siguiente figura mostrará la configuración de la conexión

establecida.

Page 216: Apuntes de Electronica III Docx

216

Paso 3: Presionar el botón Connect (Reset) para establecer la conexión 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 opción Yes.

Page 217: Apuntes de Electronica III Docx

217

Paso 4: A esta altura, la ventana del depurador deberá estar presente. Con el botón derecho del ratón, sobre la ventana Assembly del depurador, elegir la opción: Display > Simbolic

Observe que la primera instrucción 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 saltándose la instrucción en C, sería interesante observar la acción de la función Disable_COP() sobre la dirección de memoria 0x1802 (SOPT1). Para lo anterior se debe hacer presión sobre el botón

derecho del ratón en la ventana Memory, elegir la opción 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 inhibición de la acción del COP.

Paso 5: De igual manera se puede verificar la acción del macro EnableInterrupts(). Avanzar hasta la función Led1_On() y verificar el encendido del LED PTD2 en la board DEMOJM.

Paso 6: Para la función 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

Page 218: Apuntes de Electronica III Docx

218

visualizar en la ventana Data: 2 y comprobar su decremento a medida que se ejecutan pasos de simulación. El usuario puede cambiar el estado de i, para acelerar el proceso de la simulación, haciendo doble pulsación con el ratón sobre esta (ver siguiente figura ).

Comprobar la activación y desactivación 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 activación y desactivación intermitente del LED, a una frecuencia aproximada de 12Hz, reportando un reloj de bus interno de aproximadamente 16 MHz. Si el usuario desea, podría 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 ).

Page 219: Apuntes de Electronica III Docx

219

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

Paso 3: Compilar nuevamente el proyecto con la opción: make cuyo icono es

Paso 4: Cambiar la JM DAUGHTER CARD por la máquina MCF51JM128, teniendo la precaución de retirar la alimentación 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 máquina de 8 bits MC9S08JM60.

NOTA: Con la elaboración de este ejercicio el alumno se puede dar cuenta de la potencia de la máquina de 32 bits (MCF51JM128) sobre una máquina de 8 bits (MC9S08JM60), aun trabajando a la mitad de la velocidad del bus interno.

Page 220: Apuntes de Electronica III Docx

220

5.2 ADQUISICIÓN DE SEÑALES ANALÓGICAS.

Breve repaso de la conversión analógica a digital.

Antes de comenzar el estudio del módulo ADC de la máquina MCF51JM128, se hará un pequeño repaso sobre los conceptos relacionados con la conversión analógica a digital de una señal.

Las máquinas, como los microcontroladores, tratan de medir y/o convertir las variables analógicas que el hombre manipula y entiende, pero el proceso de convertir introduce una inevitable pérdida de información. Esta pérdida es inherente al proceso de discretizar las señales analógicas y continuas, que finalmente serán llevadas a cantidades binarias.

La siguiente figura representa una señal analógica continua entre los puntos t0 y t1, que desde el punto de vista de la magnitud será sometida a un número discreto de valores binarios y que la cantidad de valores se conoce con el nombre de Resolución del sistema.

La Resolución de un convertidor analógico a digital es la cantidad de valores, discretos, en los cuales se interpreta la señal a digitalizar. Por ejemplo, para un procesador con un conversor A/D que tiene una resolución de 12 bits el número de valores discretos en los cuales se puede valorar a una señal, sería de 2 12 = 4096. El valor ideal para esos valores sería un número infinito, pero tecnológicamente es imposible.

Esos valores deben estar comprendidos dentro de dos límites, que forman la ventana de conversión o valores de referencia (Vmin, VMax). Para la figura anterior, el punto P tiene una interpretación en el mundo de lo discreto y es de Vx.

Se recomienda que el alumno aproveche al máximo la resolución del sistema, adecuando la señal analógica para que se desplace de la manera más completa en la ventana de conversión. Por ejemplo, una señal con un valor máximo de 100mV deberá ser amplificada por un factor de 30, para una ventana de conversión de 3V y de ésta manera aprovechar la resolución del sistema.

Para calcular el paso mínimo de conversión y por lo tanto conocer el intervalo de pérdida de información, supóngase que se tiene una señal sometida a un conversor de

Page 221: Apuntes de Electronica III Docx

221

12 bits de resolución, un Vmin = 0V y un Max = 5V. El paso mínimo de conversión está dado por:

Paso mínimo = (VMax - Vmin) / Resolución

Paso mínimo = (5V – 0V) / 212

Paso mínimo = 1.22mV

El cálculo anterior indica que la diferencia en magnitud entre el resultado de una conversión y la inmediatamente superior (o inferior) es de 1.22mV. Todo valor que no sea múltiplo entero de un paso mínimo, se deberá aproximar al valor más cercano y es aquí donde un conversor A/D ignora información del mundo analógico.

El Muestreo (sample) es otra característica 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 señal analógica continua entre los puntos t0 y t1, que desde el punto de vista del muestreo es sometida a un número finito de muestras y que cada muestra es tomada a un intervalo constante T, llamado período de muestreo.

Al igual que en la resolución, el muestreo introduce pérdida de información, debido a los valores que no son muestreados entre dos intervalos de muestreo contiguos.

Idealmente la razón de muestreo debería ser infinita, pero existen restricciones tecnológicas. Entonces, mientras menor sea la separación entre los intervalos más fiel será la señal digitalizada con respecto a la señal analógica original.

Breve descripción del módulo ADC y diagrama en bloques.

Algunas de las características más importantes del módulo ADC son:

Técnica de conversión por aproximaciones sucesivas hasta 12 bits de resolución.

Hasta 28 entradas analógicas.

Conversión programable para 8, 10 y 12 bits, justificada a la derecha y no signada.

Modo de conversión simple y continua.

Page 222: Apuntes de Electronica III Docx

222

Tiempo de conversión programable y modo de reducción de consumo.

Evento de finalización de una conversión y generación de evento de interrupción al finalizar la conversión.

Hasta cuatro fuentes de reloj de conversión.

Operación en modo WAIT y STOP 3, para reducción de ruido.

Posibilidad de selección de reloj asincrónico, para operación en bajo ruido.

Posibilidad de elegir una señal de disparo por hardware (trigger), para iniciar conversión.

Comparación del valor convertido contra un valor programado, mayor que, igual que o menor que.

La siguiente figura muestra el diagrama en bloques del módulo ADC, en donde el circuito (A) corresponde al sistema de reloj del ADC. Este circuito tiene la posibilidad de seleccionar cuatro fuentes, como: Reloj asíncrono (ADACK), reloj del BUS, reloj del BUS dividido por dos y un reloj alterno (ALTCLK).

Page 223: Apuntes de Electronica III Docx

223

El circuito (B) corresponde a los registros de configuración y control del ADC. El circuito (C) sincroniza toda la operación de conversión, actuando como una gran máquina de estados. El circuito (D) multiplexa las diferentes entradas analógicas (canales A/D) que puede atender el sistema ADC y establece la ventana de conversión.

El circuito (E) es el corazón del módulo ADC y corresponde al SAR (Succesive Aproximation Register) de la conversión. El circuito (F) configura la lógica de interrupción del módulo ADC y finalmente, el circuito (G) establece las componentes para la comparación del valor convertido contra un valor programado.

Registros asociados al módulo ADC.

Registro de estado y control 1 (ADCSC1): La siguiente figura muestra la configuración del registro de estado y control 1 de módulo ADC. El evento de escribir en este registro hace que se aborte una conversión en proceso, inicializando una nueva.

- COCO: Bandera de conversión completa. Cuando COCO es “1” y AIEN = “1”, entonces se genera un evento de interrupción.

0: No se ha completado una conversión

1: Se ha completado una conversión

- AIEN: Bit para habilitar un evento de interrupción por la finalización de una conversión analógica a digital.

0: Inhibe evento de interrupción por conversión completa

1: Habilita evento de interrupción por conversión completa

- ADCO: Bit para seleccionar el modo de conversión.

0: Habilita conversión simple. Una sola conversión es iniciada cuando se escribe sobre el registro ADCSC1 o cuando se trabaja con señal de disparo externa (external trigger).

1: Habilita conversión continua. La conversión es iniciada cuando se escribe sobre el registro ADCSC1 o cuando se trabaja con señal de disparo externa (external trigger).

ADCH: Bits para seleccionar el canal a convertir (multiplexor). En la siguiente tabla se detalla la combinación de bits según el canal.

Page 224: Apuntes de Electronica III Docx

224

Registro de estado y control 2 (ADCSC2): La siguiente figura muestra la configuración del registro de estado y control 2 de módulo ADC.

- ADACT: Bit que indica cuando una conversión está en progreso. Este bit es puesto a “0” una vez se haya finalizado la conversión o se aborte el proceso.

0: No hay conversión en proceso.

1: Hay una conversión en proceso.

- ADTRG: Bit para seleccionar el tipo de señal que inicia una conversión. Cuando se elige una conversión por hardware, el pin ADCHWT inicializa una conversión (esta opción viene implementada en ciertos modelos del MCF51JM128). Cuando se elige la conversión por software, la simple escritura sobre el registro ADCSC1 inicializa una conversión).

0: Disparo de conversión por software.

1: Disparo de conversión por hardware.

- ACFE: Bit para habilitar la función de comparación del módulo ADC.

0: Deshabilita modo de comparación.

1: Habilita modo de comparación.

- ACFGT: Bit para habilitar la comparación si mayor que.

0: Función de comparación si menor que.

1: Función de comparación si mayor que.

Page 225: Apuntes de Electronica III Docx

225

Registro del resultado alto de la conversión (ADCRH): La siguiente figura muestra el registro del resultado alto de la conversión A/D, que contiene el nibble de mayor peso en una conversión de 12 y 10 bits.

Registro del resultado bajo de la conversión (ADCRL): La siguiente figura muestra el registro del resultado bajo de la conversión A/D, que contiene el byte de menor peso en una conversión de 12 y 10 bits; y contiene los ocho bits de una conversión en 8 bits.

Registro alto de comparación (ADCCVH): La siguiente figura muestra el registro alto de la comparación del A/D, que contiene el nibble de mayor peso en una comparación de 12 y 10 bits. El valor de este registro se compara con el registro ADCRH.

Registro bajo de comparación (ADCCVL): La siguiente figura muestra el registro bajo de la comparación del A/D, que contiene el byte de menor peso en una conversión de 12 y 10 bits; y contiene los ocho bits de una conversión en 8 bits. El valor de este registro se compara con el registro ADCRL.

Page 226: Apuntes de Electronica III Docx

226

Registro de configuración (ADCCFG): La siguiente figura muestra el registro de configuración del módulo ADC.

- ADLPC: Bit para configurar el ADC en bajo consumo. Optimiza el SAR para bajo consumo y reloj lento, esta opción es adecuada para digitalizar señales 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 módulo 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 rápidas, 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 resolución de trabajo del ADC.

00: Conversión con resolución en 8 bits.

01: Conversión con resolución en 12 bits.

10: Conversión con resolución en 10 bits.

11: Reservado.

- ADICLK: Bits para seleccionar el reloj que alimentará el módulo ADC.

00: Reloj del BUS interno.

01: Reloj del BUS interno dividido por 2.

Page 227: Apuntes de Electronica III Docx

227

10: Reloj alterno ALTCLK.

11: Reloj asíncrono ADACK.

Registro de control de pin del ADC o habilitación 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

• Cálculo del tiempo de una conversión.

Para efectos del cálculo del tiempo que toma una conversión 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, supóngase que se está realizando una conversión A/D con resolución de 12 bits. Para la conversión se ha elegido el reloj de bus interno, que es de 16MHz. La conversión se realizará en modo continuo y tiempos cortos de muestreo.

Como se recordara, la frecuencia máxima de reloj de conversión para el ADC del MCF51JM128 es de 8MHz, entonces es necesario aplicar un valor de ADIV = 01 (divisor por 2). El valor resultante conformaría el ADCK de la conversión, de tal manera que el tiempo total de conversión, para las muestras subsecuentes se calcula así:

Tiempo de conversión = 20 ADCK ciclos / (16MHZ / 2).

Tiempo de conversión = 2.5 x 10-6 seg.

Page 228: Apuntes de Electronica III Docx

228

EJEMPLO CON EL MÓDULO ADC.

Para ilustrar la operación del módulo ADC se trabajará sobre el clásico ejemplo de la medida de temperatura con un transductor de bajo costo, como lo es el LM35. El problema consiste en la medida en grados Celsius de la temperatura ambiente y visualización de la misma en un display LCD.

El fenómeno propone un sistema de inercia grande, de tal manera que se trabajará el módulo ADC en bajo consumo y tiempos largos de muestreo. La siguiente figura ilustra el circuito sugerido para el ejercicio.

La función de transferencia del LM35 es:

f(T) = 10mV / °C

De tal manera que si el ambiente se encuentra a una temperatura de 25°C, a la salida del sensor se tendría un voltaje de 250mV.

Las referencias de conversión VREFH y VREFL del sistema DEMOJM, están alimentadas a 4.64 V. Si se trabaja con una resolución de 12 bits, un paso de conversión sería de 4.64V / 4096 = 1.132 mV. Este valor sería bastante apropiado para el sistema, porque la variación de un grado centígrado en el sensor es de 10mV.

Page 229: Apuntes de Electronica III Docx

229

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

/******************************************************************************************/ /* 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 *Señal ENABLE del LCD */ /* *PTA5 * O * D * 1 *Señal RS del LCD */ /******************************************************************************************/ /******************************************************************************************/ /*PTB * - * - * - * *Medida de la temperatura */ /* *PTB0 * I * A * - *Entrada de la señal 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

/* Declaración de variables y constantes */ byte bandera=0; //bandera de propósito general word dato_ADC=0; unsigned long retardo=0; //parámetro para hacer retardo char i=0; //variable de iteración char PTAD_Config=0; //byte de inicialización del registro PTAD char PTADD_Config=0; //byte de inicialización del registro PTADD char PTAPE_Config=0; //byte de inicialización del registro PTAPE char PTASE_Config=0; //byte de inicialización del registro PTASE char PTADS_Config=0; //byte de inicialización del registro PTADS char PTAIFE_Config=0; //byte de inicialización del registro PTAIFE

Page 230: Apuntes de Electronica III Docx

230

char ADCSC1_Config=0; //byte de inicialización del registro ADCCFG char ADCCFG_Config=0; //byte de inicialización del registro APCTL1 char APCTL1_Config=0; //byte de inicialización del registro APCTL1 char ADCSC2_Config=0; //byte de inicialización del registro ADCSC2 char dec_ad,uni_ad,dem_ad,cem_ad; //variables para conversión de la temperatura a ASCII char comando8=0; //parámetro inicialización LCD modo 8 bits char dato4; //dato a enviar al LCD char rs=0; //señal 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 /* Declaración de funciones */ void Delay(unsigned long retardo); //función para hacer retardos varios void LCD_Init(void); //función para inicializar LCD void Lcd_4bit_Wr(char dato4,char rs); //función para escribir dato al LCD void Comando_8bit(char comando8); //función 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 función que inicializa PTA void ADC_Init(char ADCCFG_Config, char ADCSC2_Config,char APCTL1_Config,char ADCSC1_Config); //declare función para inicializar ADC /* main(): Función 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 dirección del mensaje con definición for (i=0;i<=13;i++) //ciclo para imprimir 15 caracteres del mensaje Lcd_4bit_Wr(*pM,1); //envía carácter al LCD pM++; //incrementa puntero al arreglo del mensaje ADC_Init(0x97,0x00,0x01,0x40); //habilita ínter, ADC ON, conversión simple, bajo consumo //divisor x 1, muestreo largo, 12 bits resolución, canal 0 //reloj ADACK EnableInterrupts; //habilita interrupciones for(;;) //iteración para presentación de la temperatura (for infinito) if (bandera==1)

Page 231: Apuntes de Electronica III Docx

231

ADCSC1 = 0x00; //inhibe interrupción 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 centésimas de grados C Lcd_4bit_Wr(0x8B,0); //prepare para enviar centésimas de temperatura Lcd_4bit_Wr(cem_ad+0x30,1); /envía las centésimas de temperatura

Lcd_4bit_Wr(0x8A,0); //prepare para enviar decimas de temperatura

Lcd_4bit_Wr(dem_ad+0x30,1); //envía las decimas de temperatura Lcd_4bit_Wr(0x88,0); //prepare para enviar unidades de temperatura Lcd_4bit_Wr(uni_ad+0x30,1); //envía las unidades de temperatura Lcd_4bit_Wr(0x87,0); //prepare para enviar decenas de temperatura Lcd_4bit_Wr(dec_ad+0x30,1); //envía las decenas de temperatura Delay(5000000); //retardo entre muestras ADCSC1 = 0x40; //habilita otra conversión por A/D /* es necesario asegurarse de nunca abandonar el main */ /* Función 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 dirección 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 /*Función para inicialización 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 /* Función para inicialización del LCD a 4 bits */ void LCD_Init(void) Delay(200000); // hacer un retardo Comando_8bit(0x30); //llama función enviar comando en 8 bits con comando Delay(200000); //hace retardo Comando_8bit(0x30); //llama función 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

Page 232: Apuntes de Electronica III Docx

232

Lcd_4bit_Wr(0x01,0); //borrar pantalla LCD Lcd_4bit_Wr(0x06,0); //desplaza cursor a la derecha con cada carácter Lcd_4bit_Wr(0x80,0); //primer carácter fila 1 columna 1 /* Función 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 envío 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; //envía 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; //envía nibble bajo del dato Delay(20000); //hace retardo PTAD_PTAD4=0; //baja pin de enable Delay(20000); //hace retardo /* Función 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; //envía comando Delay(20000); //hace retardo PTAD_PTAD4=0; //sube pin de enable Delay(20000); //hace retardo /* Función Delay(): Retarda basado en una variable tipo entero */ void Delay(unsigned long retardo) while(retardo>0) //llego a cero? retardo--; //no --> decrementa /* Función de atención a la interrupción del ADC canal 0 */ interrupt VectorNumber_Vadc void ISR_ADC (void) //ADCSC1 = 0x40; //reconozca interrupción e inicie otra dato_ADC=ADCR; /capture dato del conversor

bandera=1; //ponga bandera en "1".

Page 233: Apuntes de Electronica III Docx

233

5.3 INTERRUPCIONES.

Una interrupción es una operación que suspende la ejecución de un programa de modo que el sistema pueda realizar una acción especial. La rutina de interrupción ejecuta y por lo regular regresa el control al procedimiento que fue interrumpido, el cual entonces continúa su ejecución.

Tipos de Interrupciones.

Las interrupciones se dividen en dos tipos las cuales son: Externas e Internas. Una interrupción externa es provocada por un dispositivo externo al procesador. Las dos líneas que pueden señalar interrupciones externas son la línea de interrupción no enmascarable (NMI) y la línea de petición de interrupción (INTR).

LAS FUENTES DE RESET.

Son múltiples las fuentes de RESET que posee la máquina MCF51JM128. Todas estas dejan huella en el registro SRS, que permite al programador poder consultar quién (o quienes) ha sido el causante de un RESET. Las fuentes de RESET de la máquina 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.

• Detección de una instrucción ilegal: Illegal opcode detect (ILOP).

• Detección de un acceso a dirección ilegal: Illegal address detect (ILAD).

• Detección de bajo voltaje: Low-voltage detect (LVD).

• Pérdida del enganche del generador de reloj externo: Clock generator (MCG) loss of clock reset (LOC).

• Reset por forzado a entrada en modo de depuración: Background debug forced reset.

A continuación se hace una breve definición de cada una de estas fuentes.

• Reset en el encendido (POR): Cuando la máquina está comenzando a ser energizada o cuando el voltaje de alimentación (Vdd) cae por debajo de los niveles mínimos permitidos, el circuito del POR genera un estado de RESET a la máquina. El bit POR del registro SRS se pone a “1” indicando el evento de RESET (ver siguiente figura).

Page 234: Apuntes de Electronica III Docx

234

• Reset por pin externo (PIN): Obedece al flanco de bajada que se presenta como señal 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 máquinas, que detecta la pérdida de flujo del programa y genera un RESET al procesador.

Una vez habilitado el COP, es necesario poner a cero periódicamente el contador asociado a este (escribir en el registro SRS algún 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: Selección del período del COP.

COPCLKS: Selección del tipo de reloj que alimenta el contador del COP.

COPW: Ventana de activación del COP. Sólo para operación con el BUSCLK y de estar activo, es necesario escribir sobre el SRS durante el 25% final del período del COP seleccionado.

Page 235: Apuntes de Electronica III Docx

235

En donde los bits asociados a la operación del COP (COPT, COPCLKS y COPW), trabajan como se indica en la siguiente tabla

La señal 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 máquina. El alumno puede optar por el uso del BUSCLK (reloj de bus interno de la MCU), pero debe ser consciente de la posible pérdida del COP debido a la pérdida 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 atención a interrupción, porque se puede caer en la atención 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 continúa 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 activación e inhibición 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 acción del COP se puede definir una macro con el siguiente contenido:

#define Disable_COP() SOPT1=0x3F;

Page 236: Apuntes de Electronica III Docx

236

• Reset por ILOP (Illegal Opcode): Por defecto, la máquina ColdFire® V1 habilita la posibilidad de detectar la ejecución de una operación ilegal. También, este tipo de RESET es generado cuando se intenta ejecutar un instrucción 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 máquina. 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 máquina ColdFire® V1 habilita la posibilidad de detectar el acceso a una dirección ilegal, error por terminación de bus, error por formato de RTE (Return of Exception) o una condición 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 máquina ColdFire V1 contiene un mecanismo para la detección de un evento, por bajo voltaje en la fuente de alimentación. Este mecanismo protege el contenido de la memoria y los estados de control del sistema, ante variaciones en el voltaje de alimentación.

Para habilitar el sistema LVD es necesario poner a “1” el bit SPMSC1[LVDE] y elegir un voltaje de comparación adecuado con el bit SPMSC3[LVDV]. La operación 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 máquina, será necesario poner a “1” el bit SPMSC1[LVRE].

Existe un sistema de precaución (LVW: Low Voltaje warning), para la detección anticipada de variación en el voltaje de alimentación. El objetivo es indicarle al usuario que la fuente se encuentra cercana al umbral de detección 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 interrupción 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 comparación 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).

Page 237: Apuntes de Electronica III Docx

237

• Reset por pérdida 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á diseñado para la línea de microcontroladores ColdFire® V1 de Freescale, que generalmente soportan menos programabilidad que las gamas superiores.

El diseño del controlador se enfoca en la compatibilidad entre la familia de 8 bits HCS08 y la familia de 32 bits ColdFire® V1, conservando características tan importantes como la compatibilidad en la prioridad de atención a las interrupciones y similitud en el modo de procesamiento de las interrupciones (con un solo nivel de anidación).

La siguiente tabla hace un resumen de la similitud de estas dos arquitecturas, desde el punto de vista del control de las interrupciones.

Page 238: Apuntes de Electronica III Docx

238

Un proceso de excepción por interrupción consta de los siguientes pasos, generales:

• Reconocimiento de la interrupción presente.

• Proceso de suspensión de la instrucción que está siendo ejecutada por la CPU.

• Almacenamiento de 8 bytes en la pila. La información que se almacena en la pila durante la atención a una excepción de interrupción es:

4 bytes con la dirección de retorno. Contenido del PC antes de atender la interrupción en proceso.

2 bytes para el registro SR (Status Register).

2 bytes para el F/V (Format Vector Word).

• Cálculo del vector apropiado para atender la interrupción.

• Paso del control a la subrutina que atiende la interrupción

Las máquinas ColdFire® revisan el estado de las interrupciones con cada instrucción que ejecutan, esto coincide con cada ciclo del OEP (Operand Execution Pipeline).

Para el manejo de los niveles de interrupción, la máquina está dotada de la máscara de interrupciones I. La máscara I está formada por tres bits, que definen siete niveles de interrupciones con capacidad automática de anidación.

El nivel más alto es el 7 y así en forma descendiente hasta el nivel 1, el nivel 0 (I=0) significa la habilitación 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 interrupción que se presente y tenga un nivel de interrupción menor o igual al nivel de la interrupción presente, será inhibida. Lo anterior es una norma, excepto para la interrupción 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 máquinas desde la versión V1 hasta la V4, para la versión V1 esta localización tiene sentido en las direcciones 0x(00)00_0000 (FLASH) y la 0x(00)80_0000 (RAM).

La siguiente tabla contiene la ubicación de cada vector de excepción para la familia ColdFire®.

Page 239: Apuntes de Electronica III Docx

239

Page 240: Apuntes de Electronica III Docx

240

Cada nivel de interrupción soporta nueve asignaciones de prioridad, esto hace que sea posible establecer un total de 63 jerarquías. La relación entre el cálculo del vector de las interrupciones de las máquinas HCS08 y ColdFire, está establecida por la ecuación:

Número del vector en ColdFire®_V1 = Número del vector en HCS08 + 62.

Para emular las capacidades de nivel 1 de las máquinas HCS08 en las máquinas ColdFire® V1, se implementa el manejo de sólo dos valores para la máscara SR[I].

• SR[I] = 7, Se usa para inhibir la interrupciones.

• SR[I] = 0, Se usa para habilitar las interrupciones.

EL PIN DE INTERRUPCIÓN (IRQ).

El registro IRQSC es el encargado de manipular la señal externa de IRQ, que ocupa lugar privilegiado dentro de los niveles y prioridades en la máquina de las interrupciones. El procesador monitorea permanentemente la lógica del pin de IRQ y puede validar tanto el flanco, como el flanco y nivel de la señal presente en el pin.

La interrupción generada por el pin IRQ puede sacar a la máquina de STOP, aún 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.

Page 241: Apuntes de Electronica III Docx

241

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 atención al evento, siempre y cuando el modo de operación 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 interrupción, ante la aparición de un evento de IRQ.

IRQIE = 0: No se habilita evento de interrupción 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 interrupción por IRQ.

• Bit IRQMOD (IRQ Mode): Elige el modo de operación, eléctrico, con el pin de IRQ.

IRQMOD = 0: El pin de IRQ sólo actúa con el flanco de la señal eléctrica presente.

IRQIE = 1: El pin de IRQ actúa tanto en el flanco, como en el nivel de la señal eléctrica.

EJERCICIO CON EL PIN IRQ

El siguiente ejercicio detecta una interrupción 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 conexión sugerida para la prueba del ejercicio.

Page 242: Apuntes de Electronica III Docx

242

El programa, desarrollado en C, es mostrado a continuación.

/* Archivos de cabecera */

#include <hidef.h> //macro para interrupciones

#include "derivative.h" //macro de declaraciones del MCU

/* Declaración 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

/* Declaración de funciones */

void IRQ_Init(char byteConfig); //declaración de función que inicializa la IRQ

/* main(): Funcion principal */

void main(void)

Page 243: Apuntes de Electronica III Docx

243

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 interrupción y se da ACK

for(;;) //iteración infinita

/* es necesario asegurarse de nunca abandonar el main */

/* Función para inicializar la IRQ */

void IRQ_Init(char byteConfig) //parámetros de entrada a la función

IRQSC = byteConfig; //modifique parámetros de inicialización

/* Función de atención a la IRQ */

interrupt VectorNumber_Virq void ISR_IRQ (void)

IRQSC_IRQACK=1; //aclara bandera de interrupción 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

Page 244: Apuntes de Electronica III Docx

244

UNIDAD VI

6.1 PLANTEAMIENTO DEL PROBLEMA. Hoy en día el STCM es uno de los medios de transporte de mayor afluencia en la cd de México debido a la gran demanda que presenta, este medio de transporte presta servicio ininterrumpido los 365 días de año a excepción de situaciones especiales, el parque vehicular se conforma por trenes articulados de 9 y 6 vagones, los cuales funcionan con energía eléctrica. El recorrido del tren se concibe de manera subterránea y superficial, además cuenta con 12 estaciones y una décima tercera en construcción. Hasta el día de hoy el STCM tiene 41 años de servicio, en los cuales ha existido la modernización de su infraestructura, pero en años recientes ha habido un rezago considerablemente notorio, ya que la mayoría de los sistemas utilizados actualmente son obsoletos o se encuentran próximos a desaparecer, en los cuales el aspecto del cuidado de la energía eléctrica ha sido tomado muy poco en consideración, y se puede percatar que se desaprovechan grandes cantidades de energía eléctrica en el rubro de la iluminación, debido a que al ser un medio de transporte subterráneo y superficial no siempre necesita la misma intensidad luminosa fuera de los túneles que dentro de los mismos, esto lleva como consecuencia la disminución de vida útil de las luminarias ya que se encuentran encendidas en situaciones y tiempos inútiles, generando consumos y gastos innecesarios al mantener estas encendidas sin importar las condiciones externas del recorrido. La siguiente figura muestra el recorrido superficial del convoy con las luces interiores encendidas a media tarde.

Page 245: Apuntes de Electronica III Docx

245

El tipo de luminarias utilizadas dentro de los vagones del metro se compone de

gabinetes con 1 lámpara fluorescente tipo t8, además lleva un difusor, que

permite entre la protección de la propia lámpara, la difusión del flujo luminoso

dentro de esta.

La siguiente figura muestra la lámpara fluorescente tipo t8 dentro de su

gabinete con su respectivo difusor.

El control que se tiene sobre la iluminación dentro de los vagones del

metro, es nulo, ya que siempre están encendidas, ya sea en sus

primeras horas de servicio, pasando por la mañana, medio día, tarde

hasta el anochecer, lo cual representa en horas de luz, gastos

innecesarios de energía eléctrica.

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 iluminación que se tiene dentro de los

vagones, y como tal las consecuencias no son de gravedad pero como

Page 246: Apuntes de Electronica III Docx

246

principal sistema de transporte público vemos que su mantenimiento es nulo, al

menos en este aspecto.

Es muy raro encontrar dentro del metro algún convoy que tenga funcional su

iluminación al interior, claro a excepción de los vagones de la línea 2 modelo

NM-02 y algunos de la línea A modelo FM-95A, los modelos restantes como lo

son: NE-92,FM-86, NM-83B, NM-83A, NM-82, MP-82, NC-82, NM-79, NM-73B,

NM-73A, MP-68R96 Y MP-68R93 contienen luminarias dañadas, incluso las

lámparas de emergencia no funcionan de manera adecuada, como se puede

observar en la siguiente figura.

De llevar la misma administración de energía eléctrica, el STCM seguirá

generando pérdidas tanto monetarias como energéticas que se pueden evitar

diseñando un sistema de iluminación inteligente utilizando luminarias de tipo

led manipulado por microcontroladores.

Page 247: Apuntes de Electronica III Docx

247

6.2 ACEPTACIÓN DEL PROYECTO.

Hoy en día la energía eléctrica es parte fundamental en el desarrollo humano,

es casi tan importante como lo es el agua para los seres vivos; la unión del

intelecto humano en conjunto con sus avances científicos y tecnológicos han

logrado manipular esta energía para resolver los problemas y las necesidades

a las que el ser humano se enfrenta día con día.

En México, la competitividad en la industria que hace uso intenso de energía ha

sido impactada debido a las fluctuaciones en los precios de los energéticos,

especialmente del gas natural y de la electricidad.

La manipulación de esta energía ha llevado a desarrollar nuevas máquinas e

instrumentos de las cuales muchas de estas funcionan principalmente con

electricidad, pudiendo mencionar artículos tan básicos como lo son una

aspiradora, secadora, licuadora hasta llegar a otras máquinas más complejas

como lo son elevadores, escaleras eléctricas, horno de arco eléctrico,

transformadores de potencia etc.

En las grandes ciudades principalmente podemos observar el cambio y la

diferencia que marcan estas tecnologías, 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 más rudos que puede haber por parte de la

población, vemos con gran frecuencia que su deterioro físico 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 iluminación dentro de los vagones del

Sistema de transporte Colectivo Metro.

Idealmente el ahorro de energía eléctrica con un constante flujo luminoso se

efectuaría regulando el nivel de iluminación de las lámparas, lo cual nos lleva a

incrementar o decrementar su consumo de corriente (Para el caso de los leds),

además la comparación de los flujos de iluminación existentes tendrían que ser

monitoreados constantemente para así poder discernir entre la cantidad de

corriente necesaria que se requiere para igualar al valor de referencia base,

además debe de existir una retroalimentación que permita comparar la nueva

información de datos que afecta al sistema con los datos que provocaron el

resultado actual.

Page 248: Apuntes de Electronica III Docx

248

Dentro del desarrollo de nuevos sistemas de iluminación en los últimos años se

han venido acrecentando las tendencias por buscar dispositivos de iluminación

más eficientes con menor costo, mayor tiempo de vida, bajo mantenimiento,

alta eficiencia luminosa y sobre todo compactos.

Dentro del aspecto que abarca la viabilidad para el cambio de luminarias

convencionales por lámparas leds, se pueden encontrar diversos documentos y

trabajos que avalan y hacen favorables a los leds como futuros sistemas

predilectos de iluminación.

Se encontró que mientras que los dispositivos convencionales de iluminación

consumen grandes cantidades de energía, los leds utilizando la misma

cantidad de energía, son capaces de alimentar una gran cantidad de los

mismos teniendo como consecuencia la generación de un flujo luminoso mucho

mayor con respecto al dispositivo comparado.

El análisis de la durabilidad arrojo que en promedio la vida útil de una lámpara

convencional por mínimo es de aproximadamente 10 000 horas hasta las 30

000 horas y después 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 después 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 inversión inicial es relativamente baja para los dispositivos convencionales,

es un poco alta para una lámpara led, ya que al ser una tecnología en

desarrollo, los medios por el cual ser fabrican no son los más económicos y

además no son de manufactura nacional, sino que todo es de importación lo

que incrementa en cierta cantidad su precio final.

El estudio de estos dispositivos no solo se limitan a sustituir a las luminarias

actuales de mayor popularidad sino que también buscan encontrar un modo de

control que ofrezca una estabilidad eficiente y discreta, es por esta razón que el

desarrollo de sistemas de control inteligentes se han ido estudiando y

Page 249: Apuntes de Electronica III Docx

249

desarrollando a medida que van ganando popularidad los dispositivos de

iluminación led.

Existen diversos estudios realizados que abarcan el análisis de comparación de

sistemas de iluminación convencionales contra sistemas de iluminación led,

estos hacen principal énfasis en enmarcar que dentro de las características

más destacables de los leds con respecto a luminarias convencionales se

encuentra la durabilidad de los mismos, ya que al ser dispositivos que están

sometidos a un control de corriente constante y están aislados de disturbios

que existen dentro de la señal de alimentación no tienden a fallar por disturbios

pequeños 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 elaboración 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 programación con lógica difusa o PID

aplicados a sistemas que atienden situaciones específicas 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 iluminación

dentro de los vagones del transporte colectivo metro utilizando leds de

potencia, mediante la programación en C, basándose en el microcontrolador

JM60 para que funcione como controlador y administre la energía y niveles de

iluminación adecuados para los vagones

El control automático asienta sus bases esencialmente en el concepto de

realimentación. Este concepto se concreta en una estructura de control en la

cual el controlador se puede entender como un operador, que en función de la

salida deseada, y la salida real medida, proporciona la acción de control a

aplicar sobre el sistema.

Si bien existen muchos tipos de control basados en este principio y los

podemos clasificar en clásicos e inteligentes como se describen a

continuación.

Page 250: Apuntes de Electronica III Docx

250

Controladores clásicos.

El control proporcional, derivativo e integral (PID), es el que mayor implantación

tiene en la industria de procesos. Dicho control consiste esencialmente en

obtener la acción de control como la suma de tres términos:

Proporcional – Derivativo – Integral.

Se pueden obtener variaciones en este esquema, consistentes en la no

introducción de los términos derivativo e integral; en dicho caso el control

coincide con el llamado control proporcional. Si solamente se prescinde de la

acción integral, el control se denomina control proporcional derivativo (PD).

Si, por el contrario, el único término que desaparece es el derivativo, el control

se denomina proporcional integral (PI).

Según una estimación dada por Amstrom: El 95% de los bucles de control en la

industria son del tipo PID, y fundamentalmente PI. La amplia implantación del

control PID en la industria, se debe fundamentalmente a los siguientes factores:

- La actuación en función de la señal de error proporciona una estructura de

realimentación 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 término derivativo proporciona cierta anticipación sobre la respuesta al

sistema.

- El término integral permite eliminar el error en régimen permanente.

- El control PID obtiene resultados satisfactorios para una amplia gama de

procesos.

- Existen sencillas reglas heurísticas que permiten obtener los parámetros del

controlador PID.

Dichas reglas hacen posible el ajuste del controlador, sin presuponer un gran

conocimiento en teoría de control automático por parte del operador.

Page 251: Apuntes de Electronica III Docx

251

- En estructuras de control más sofisticadas, donde exista cierta organización

jerárquica, el controlador PID puede utilizase a un nivel bajo.

- El controlador PID se puede adquirir como un módulo compacto, donde los

distintos parámetros del controlador se pueden ajustar manualmente.

Actualmente muchos de los PIDs industriales proporcionan ciertas opciones de

auto sintonía.

Controlador P

En ciertos tipos de procesos es posible trabajar con una ganancia elevada sin

tener ningún problema de estabilidad en el controlador. Muchos procesos que

poseen una constante de tiempo dominante o son integradores puros caen en

esta categoría. Una alta ganancia en un controlador P significa que el error en

estado estacionario será pequeño y no se necesitara incluir la acción integral.

Un ejemplo característico en el que no es muy relevante el error en régimen

permanente, es el bucle interno de un controlador en cascada; el que la

variable que se ha tomado como secundaria no alcance su valor no debe

preocupar excesivamente.

Controlador PD.

En líneas generales, el control PD puede ser apropiado cuando el proceso a

controlar incorpore ya un integrador. Por ejemplo, un proceso térmico con un

buen aislamiento opera de forma análoga a un integrador. Casi toda la energía

que se le suministra se emplea en elevar la temperatura del horno ya que las

pérdidas son despreciables. Con esta clase de procesos es posible trabajar con

ganancias elevadas en el controlador sin que sea necesario introducir la acción

integral. La acción 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 acción derivativa.

Asimismo, en procesos con grandes tiempos muertos la acción anticipativa del

término derivativo deja de ser efectiva ya que la aproximación es lineal, es

decir:

Page 252: Apuntes de Electronica III Docx

252

Tan solo tiene validez para pequeños valores de Td. Debido a los tiempos

muertos hay un retardo antes de que los efectos de cualquier acción de control

se puedan detectar sobre la variable de proceso. Es, por lo tanto,

considerablemente mejor con esta clase de procesos, intentar predecir su

acción futura, analizando la señal de control en combinación con un modelo del

proceso.

Controlador PI.

Es la estructura más usual del controlador. La introducción de la acción integral

es la forma más simple de eliminar el error en régimen permanente. Otro caso

en el que es común 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 acción derivativa más que una mejora en esta

situación es un problema ya que amplifica el ruido existente. También se

recomienda la acción PI cuando hay retardos en el proceso, ya que como se ha

visto en el punto anterior, la acción derivativa no resulta apropiada en este tipo

de sistemas. Un tercer caso en el que se deberá desconectar la acción

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 acción 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 típico de procesos con múltiples

constantes de tiempo.

Controladores inteligentes.

Lógica difusa.

La lógica difusa es una rama de la inteligencia artificial que se funda en el

concepto "Todo es cuestión de grado", lo cual permite manejar información

vaga o de difícil especificación, si quisiéramos hacer cambiar con esta

información el funcionamiento o el estado de un sistema específico [X]. Es

Page 253: Apuntes de Electronica III Docx

253

entonces posible con la lógica difusa gobernar un sistema por medio de reglas

de 'sentido común' las cuales se refieren a cantidades indefinidas.

Las reglas involucradas en un sistema difuso, pueden ser aprendidas con

sistemas adaptativos que aprenden al ' observar ' como operan las personas

los dispositivos reales, o estas reglas pueden también ser formuladas por un

experto humano. En general la lógica difusa se aplica tanto a sistemas de

control como para modelar cualquier sistema continuo de ingeniería, física,

biología o economía.

Redes neuronales.

Debido a su constitución y a sus fundamentos, las redes neuronales artificiales

presentan un gran número de características semejantes a las del cerebro. Por

ejemplo, son capaces de aprender de la experiencia, de generalizar de casos

anteriores a nuevos casos, de abstraer características esenciales a partir de

entradas que representan información irrelevante, etc. Esto hace que ofrezcan

numerosas ventajas y que este tipo de tecnología se esté aplicando en

múltiples áreas.

Existen numerosas formas de definir a las redes neuronales; desde las

definiciones cortas y genéricas hasta las que intentan explicar más

detalladamente qué son las redes neuronales. Por ejemplo:

1) Una nueva forma de computación, inspirada en modelos biológicos.

2) Un modelo matemático compuesto por un gran número de elementos

procesales organizados en niveles.

3) Un sistema de computación compuesto por un gran número de elementos

simples, elementos de procesos muy interconectados, los cuales procesan

información por medio de su estado dinámico como respuesta a entradas

externas.

Elección del tipo de controlador.

Es frecuente el diseño de un controlador PID teniendo en cuenta

exclusivamente el seguimiento de la referencia. En el diseño se debe

Page 254: Apuntes de Electronica III Docx

254

considerar no solo el seguimiento de referencia sino también el rechazo de

perturbaciones y ruidos en la medida.

El controlador PID básico combina las acciones proporcional, derivativa e

integral mediante el siguiente algoritmo de control:

Como es bien sabido, el término proporcional contribuye a la reducción del

error en régimen permanente. Ahora bien, la ganancia requerida para que

dicho error se reduzca hasta los niveles deseados con la aplicación de un

control proporcional puede ser incompatible con las especificaciones de sobre

oscilación y estabilidad relativa del sistema. La acción integral tiene un efecto

cualitativo sobre el error en régimen permanente, ya que garantiza la anulación

de este cuando la referencia es de tipo escalón. El término derivativo permite

una cierta predicción del futuro error y por tanto juega un papel anticipativo.

Sin embargo la anticipación de la situación que se viene a presentar no

siempre puede ser predicha por la acción derivativa, ya que para la situación en

donde va a estar implementado el control contiene una cierta variación del valor

de referencia difícil de anticipar, lo que significa que si la señal de control va

siendo sobre amortiguada debido a la predicción del control derivativo cuando

se pase de una situación cercana al valor de referencia a una muy lejana

debido al cambio repentino de la condición censada es muy probable que se

presenten sobre oscilaciones muy severas, que obviamente tendrán 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 señal de error actual y una condición de

estado anterior, lo que ayuda al sistema de control a seguir con una cierta

lógica de operación, ya que las repuesta de control solo estará dada por dichos

parámetros y no por condiciones supuestamente probables, por esta razón el

control ideal y más adecuado es del tipo Proporcional e integral (PI).

Page 255: Apuntes de Electronica III Docx

255

6.3 SUPERVISIÓN.

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 diseño, la magnitud que la fotorresistencia obtenga

esta en relación directa al tiempo de incidencia y a la intensidad máxima de luz

que incide sobre el sensor, principalmente.

Etapa 2:

La magnitud de esta variación será ingresada al microcontrolador por medio de

un pin que se denominó como entrada y cuya función es convertir esta señal 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 conversión va en

relación al control PI que en conjunto arrojaran un resultado diferente por cada

conversión en el tiempo de muestreo indicado.

Page 256: Apuntes de Electronica III Docx

256

Etapa 3:

Esta etapa es en donde se aplica de lleno el control PI ya que el dato obtenido

por medio de la conversión se compara con un “punto de referencia”, este dato

es un valor al cual se debe acercar o igualar la iluminación requerida, el control

PI incluye como en la etapa anterior un tiempo de muestreo que permite la

conversión e interpretación de los datos para que se procesen y se obtenga el

nuevo dato que se envía 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 envíe el control PI, el modulo del PWM solo se encargara de generar la

señal cuadrada correspondiente para enviarla al driver que controla a los leds

Etapa 5:

Esta etapa, es una etapa de potencia ya que con el dato adquirido del PWM el

driver se encargara de brindar una nueva intensidad luminosa por medio del

incremento o decremento de la corriente que circula por la lámpara de leds.

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 iluminación 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 iluminación que son óptimos, para los

distintos tipos de áreas, los niveles de iluminación están sujetos a los

parámetros del diseñador, pero no debe de perderse de vista la norma en

vigencia.

Dentro del desarrollo de un sistema de control de iluminación, la normatividad

que se llegue a aplicar al sistema, tendrá la capacidad de acoplarse al nivel de

iluminación deseado, debido a que el valor conocido como “set point” tiene la

Page 257: Apuntes de Electronica III Docx

257

característica de adquirir cualquier valor que se le asigne, traducido de la

intensidad luminosa que se desee proporcionar.

Mientras más elevado sea el valor del “set point” mayor será la intensidad

luminosa proporcionada por la lámpara, de forma inversa un valor menor

asignado en el “set point” proporcionara una intensidad luminosa menor.

Existen otras normas que ayudan al diseño y certificación que se utilizan en

sistemas de iluminación 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 estándar en cuanto a sus

características eléctrica y técnicas, estos emiten una gran cantidad de flujo luminoso

que es cientos de veces mayor a la de los leds normales, a pesar de esto, su consumo

eléctrico es elevado en comparación de los normales, ya que llegan a consumir de 350

mA hasta 3.5 A para un solo led.

Se pueden manejar arreglos en serie como los leds normales, la única diferencia es la

tensión que se debe aplicar para lograr hacer circular la corriente necesaria para hacer

operar el led.

Una característica importante de estos leds es que al hacer circular a través de estos

una corriente elevada, sufren un calentamiento excesivo, el cual se controla con

disipadores de calor, de no hacerlo se estaría degradando el led y por consecuente

reduciendo su vida útil.

Lámpara led de prueba.

La lámpara 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 máxima. Los leds se montaron

sobre un disipador de calor para evitar un sobrecalentamiento.

Page 258: Apuntes de Electronica III Docx

258

Control de la iluminación.

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 señal de PWM la cual permite valores de 0 a 5 volts como máximo para

poder regular el paso de la corriente atreves de los leds.

El driver modelo AMLDL-3035Z tiene las características de proporcionar hasta

400 mA y una tensión de 8 a 30 volts, estas características se acoplan a una

carga de 7 leds de potencia que consuman nominalmente 350 mA como

máximo para evitar sobrecalentamientos y una degradación potencialmente

peligrosa. Para controlar un arreglo de 7 leds de potencia se propone la

siguiente configuración.

Page 259: Apuntes de Electronica III Docx

259

6.4 PRUEBAS DE ACEPTACIÓN

Prueba del sistema de control PI.

La prueba del sistema de control PI a través del microcontrolador se realizó en

ausencia de luz y en presencia de la misma, simulando la entrada y salida a un túnel,

esto tiene como finalidad variar el flujo luminoso que incide en el sensor, finalmente el

dato adquirido repercute en el resultado de la ecuación de control PI que se encuentra

almacenada en el programa del microcontrolador, asignando diferentes datos al

módulo de PWM y por consecuente variando la intensidad luminosa, como se muestra:

Sondeo de la señal de salida del PWM

Las diferentes condiciones que se pueden presentar las resumiremos en 4 estados, al

mínimo posible, 40%, 80% y a la máxima intensidad, esto lo podemos sondear por

medio de un osciloscopio, en la terminal de salida del microcontrolador que en este

caso es la terminal número 22 del microcontrolador, como se ilustra en la siguiente

figura.

Page 260: Apuntes de Electronica III Docx

260

Respuesta del algoritmo de control PI.

Para el análisis de este nos enfocaremos en la parte en donde el dato corregido es

enviado al módulo 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 condición,

iniciándose así la ecuación de control PI, esta ecuación 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 continuación:

Page 261: Apuntes de Electronica III Docx

261

Como se puede notar en la gráfica anterior, las oscilaciones se van atenuando hasta

ser constantes cuando llegamos a la iteración 83, esto significa que el control PI estará

enviando 100 datos con oscilaciones de 10 %.

Pruebas al mínimo de intensidad luminosa.

Cuando decimos que es al mínimo de intensidad luminosa se entiende que la lámpara

está proporcionando un mínimo 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

pequeño, esto significa que el dato enviado al módulo de PWM es muy pequeño y esto

se refleja automáticamente en una intensidad luminosa baja.

La siguiente figura muestra la respuesta ante un dato ADC mayor al dato de

referencia.

Page 262: Apuntes de Electronica III Docx

262

La siguiente figura muestra la respuesta de la corriente en el driver dada la respuesta del PI actual.

Decimos que para este caso si se cumple el control PI ya que la señal azul es la sonda que está conectada en la entrada del sensor, y da un valor cercano a los 2.23 volts, que es muy aproximado al valor de referencia que es 2.35 volts.

La siguiente figura muestra la lámpara emitiendo el mínimo de su intensidad total.

Page 263: Apuntes de Electronica III Docx

263

Pruebas al 40% de intensidad luminosa.

Un valor de 40% es cuando el modulo del microcontrolador envía una señal con voltaje RMS de 0.84 volts, del valor total que está programado para suministrar, además significa que; las condiciones externas son buenas pero no las óptimas, así que se necesita el 40% de la capacidad total de la lámpara para suministrar un flujo luminoso optimo dentro del vagón.

La siguiente figura muestra al módulo de PWM suministrando un 40% de su capacidad para obtener una intensidad luminosa óptima.

Una vez más se puede corroborar que el control PI esta igualándose al valor de referencia, obsérvese que la sonda del canal 2 del osciloscopio sigue manteniendo un voltaje de 2 volts, buscando la igualación al valor de referencia de 2.35v.

La siguiente figura muestra la lámpara emitiendo el 40% de su intensidad total.

Page 264: Apuntes de Electronica III Docx

264

Pruebas al 80% de intensidad luminosa. Un 80% de intensidad luminosa proporcionada por el módulo PWM significa que las condiciones externas ya no son tan favorables, en otras palabras significa que ya casi no existe luz externa y consecuentemente se necesita más iluminación. El voltaje que el módulo 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 más igualarse al valor de referencia mediante una iluminación más intensa por medio de la lámpara de leds, como se muestra a continuación.

Page 265: Apuntes de Electronica III Docx

265

Pruebas al máximo de la intensidad luminosa. Solo queda probar el último caso; como tal nos indica que se está utilizando el dato máximo permitido para generar la máxima intensidad luminosa en la lámpara led, significa que se ha sondeado el flujo exterior y este indica una ausencia total de luz, por lo tanto el error de comparación es grande, por consecuente se envían datos cercanos al máximo permitido para comenzar a hacer el error más pequeño. El valor del voltaje que emite en módulo de PWM en estas condiciones es de 2.1 volts lo que provoca que el driver suministre los 350 mA para que las lámparas emitan su máxima intensidad buscando igualar al dato de referencia como se puede ver una vez más en la siguiente figura:

La siguiente figura muestra la lámpara led suministrando la máxima intensidad luminosa

Page 266: Apuntes de Electronica III Docx

266

6.5 Demostración y exhibición del proyecto.

La demostración y exhibición del proyecto se realizó en el salón de clase ante los compañeros de grupo e invitados de la academia de electrónica, los cuales participaron como evaluadores del proyecto.

El objetivo del proyecto es diseñar un control PI que permita mantener la intensidad

luminosa dentro del vagón del convoy del STCM con una intensidad luminosa

constante, teniendo en cuenta las condiciones externas de iluminación, de tal manera

que cuando la intensidad externa tenga un valor elevado la intensidad interna en el

vagón disminuya logrando así una iluminación adecuada, constante y que reduzca el

consumo energético interno del vagón en situaciones y horarios diferentes, el

diagrama de bloques del sistema es el siguiente:

Page 267: Apuntes de Electronica III Docx

267

La demostración del sistema de control PI a través del microcontrolador se realizó en ausencia de luz y en presencia de la misma, simulando la entrada y salida a un túnel, como se muestra en la siguiente figura.

Con el salón plenamente iluminado, la siguiente figura muestra la lámpara emitiendo el mínimo de su intensidad total.

Page 268: Apuntes de Electronica III Docx

268

A continuación se cubrieron algunas ventanas del salón, para disminuir la entrada de luz. La siguiente figura muestra la lámpara emitiendo el 40% de su intensidad total.

Posteriormente se cubrieron más ventanas para disminuir más la intensidad de luz que

entraba al salón, haciendo que la lámpara brillara a un 80 % de su capacidad, como se

muestra a continuación.

Page 269: Apuntes de Electronica III Docx

269

Finalmente se cubrió la totalidad del salón impidiendo que entrara la luz exterior, para

que la lámpara brillara a su máxima intensidad como se muestra en seguida.

El trabajo en grupos cooperativos y con tareas centradas en el aprendizaje por investigación, trata de fomentar el aprendizaje activo y lo más autónomo posible por parte del alumnado, que se ve confrontado a tomar decisiones en torno a cómo proceder en el aprendizaje, qué recursos utilizar, cómo seleccionar y elaborar la información encontrada, cómo organizar y repartir el trabajo entre los miembros del grupo y cómo presentar el producto resultante.

Con esto se pretende llevar a cabo una educación en el aula centrada en el estudiante y con el acompañamiento del docente, para que el alumno se vea motivado a estudiar y cree su propio conocimiento.

Contribuir a desarrollar en el alumno las habilidades en el manejo de la expresión visual y escrita, con una aplicación práctica del microcontrolador y contribuir al bienestar de la sociedad. Yo creo que todos los procedimientos para evaluar contribuyen para recabar algunos datos, pero lo más importante es el enfoque y la combinación de diversos procedimientos de evaluación para obtener una aproximación más cercana del

desarrollo de las competencias de los estudiantes.

Page 270: Apuntes de Electronica III Docx

270

Bibliografía.

Espinosa, R. D. (2009). Diseño digital para ingeniería. Colombia. Ferreira, J. C. (2007). Microcontroladores Motorola - Freescale. México: Alfaomega. Galeano, G. (2009). Programación de sistemas embebidos en c. México: Alfaomega. Hoyos, D. A. (s.f.). Microcontroladores de 32 bits COLDFIRE V1 FAMILIA JM. Rodríguez, J. M. (2000). Organización y arquitectura de computadoras. México:

Prentice Hall. Tocci, R. (2003). Sistemas digitales, principios y aplicaciones. México: Pearson.