apuntes electrónica iii - ing.daniel avelino gómez

185
INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA APUNTES DE LA MATERIA ELECTRÓNICA III Ing. Avelino Gómez Daniel

Upload: albertohernandez

Post on 27-Dec-2015

122 views

Category:

Documents


11 download

TRANSCRIPT

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

APUNTES DE LA MATERIA

ELECTRÓNICA III

Ing. Avelino Gómez Daniel

l

2

CONTENIDO

INTRODUCCIÓN…… …………………………………………………………7

UNIDAD 1: SISTEMAS DE NUMERACIÓN………. …………………………………….10 1.1 Sistemas de numeración no signado (decimal, binario, octal y hexadecimal)…………………………………………………..11 1.2 Conversión de sistemas decimal a cualquier base……………………………………..14 1.3 Conversión de cualquier base a sistema decimal……………………………………….16 1.4 Relación entre los sistemas binarios, octal y hexadecimal…………………………….17

1.4.1 Sistema binario octal y hexadecimal 1.4.2 Relación del sistema binario con el sistema hexadecimal

1.5 Sistemas de numeración signado (decimal, binario, octal y hexadecimal) y sus conversiones…………………………19

1.5.1 Representación de números con signo 1.5.2 Suma en el sistema de complemento A2 1.5.3 Resta en el sistema de complemento A2 1.5.4 Multiplicación de números binarios 1.5.5 División binaria

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

1.6.1 Aritmética binaria 1.6.2 Aritmética hexadecimal 1.6.3 Resta Hexadecimal 1.6.4 Complemento C15 1.6.5 Complemento C16

1.7 Códigos………………………………………………………………………………………32

1.7.1 Códigos numéricos 1.7.2 Código BCD

UNIDAD 2: CIRCUITOS DIGITALES Y DISPOSITIVOS DE MEMORIA………………..38

2.1 Señales analógicas y digitales…………………………………………………………….39

IPN-ESIME Zacatenco Electrónica III

3

2.1.1 Introducción a los sistemas 2.1.2 Señal eléctrica analógica 2.1.3 Sistemas analógicos y digitales 2.1.4 Señal digital como una señal analógica compuesta 2.1.5 Ruido en señal analógica 2.1.6 Ejemplo de un sistema analógico 2.1.7 Sistemas analógicos que se han vuelto digitales 2.1.8 Sistemas que utilizan métodos digitales y analógicos

2.2 Compuertas lógicas………………………………………………………………………...45 2.3 Flip-flops……………………………………………………………………………………..49

2.3.1 FLIP-FLOP (biestable) 2.3.2 Historia del FLIP – FLOP. 2.3.4 Aplicación 2.3.5 Tipos de FLIP – FLOPS

2.4 Codificadores………………………………………………………………………………..56

2. 4.1 Dirección local de lugar

2.5 Decodificadores……………………………………………………………………………..57

2.5.1 Ejemplo decodificador 2.5.2 Aplicaciones del decodificador

2.6 Multiplexores………………………………………………………………………………...58 2.7 Circuitos aritméticos………………………………………………………………………..59

2.7.1 Introducción 2.7.2 Sumadores binarios de 4 bits 2.7.3 Sumadores en cascada 2.7.4 La operación de resta con el 74LS283 2.7.5 La ALU 74LS381 2.7.6 Circuitos de comparación binaria

2.8 Estructura y funcionamiento general de las memorias…………………………………67

2.8.1 Registros 2.9 Clasificación de las memorias…………………………………………………………..…69 2.10 Conexiones de memorias………………………………………………………………...71

2.10.1 Evolución de los CI’ S 2.10.2 Zona de operaciones 2.10.3 Zona de control 2.10.4 Memoria central

l

4

2.10.5 Notas practicas sobre memorias 2.10.6 Dispositivos de entrada y salida E / S 2.10.7 Operaciones de e / s 2.10.8 Líneas de conexión 2.10.9 Líneas compartidas 2.10.10 Mapa de memoria 2.10.11 Ejemplo de mapa de memoria 2.10.12 Direcciones (notación) 2.10.13 Implementación de un mapa de memorias

UNIDAD 3: ARQUITECTURA GENERAL DE UNA COMPUTADORA…………………83 Introducción………………………………………………………………………………………84 3.1 Diagrama general de una computadora………………………………………………….85

3.1.1 Registros de la unidad central de proceso 3.2 Buses…………………………………………………………………………………………88

3.2.1 Características de un bus 3.2.1.1 Nivel físico 3.2.1.2 Líneas 3.2.1.3 Modo de operación

3.2.2 Jerarquía de buses 3.3 Arquitectura interna de la unidad microprocesadora……………………………………96

3.3.1 Que es un microprocesador 3.3.2 Arquitectura del microprocesador

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

3.4.1 Lenguaje ensamblador 3.4.2 Características 3.4.3 Lenguaje 3.4.4 Código máquina

UNIDAD 4: PROGRAMACIÓN BÁSICA DE LA UNIDAD MICROPROCESADORA……………………………………………………...103 4.1 Modos de direccionamiento………………………………………………………………104

4.1.1 ¿Cuántos modos de direccionamiento existen? 4.1.2 Resumen de modos de direccionamiento

IPN-ESIME Zacatenco Electrónica III

5

4.2 Herramientas de programación………………………………………………………….108

4.2.1 Diagrama de flujo 4.2.2 Pseudocódigo 4.2.3 Diagrama N-S

4.3 Instrucciones……………………………………………………………………………….114

4.3.1 Desarrollo 4.3.2 Bases numéricas de representación 4.3.3 Instrucciones, modos de direccionamiento y Code Warrior

4.3.3.1 Los modos de direccionamiento 4.4 Ejemplos de programas básicos………………………………………………………...120 UNIDAD 5: PROGRAMACIÓN DE PERIFÉRICOS……………………………………...123

5.1 Puertos Digitales…………………………………………………………………………..124

5.1.2 Puertos paralelo 5.1.3 Puertos serie 5.1.4 PCI 5.1.5 PCI-Express 5.1.6 Puertos de memoria 5.1.7 Puerto de rayos infrarrojos 5.1.8 Puerto USB 5.1.9 Puertos Físicos 5.1.10 Universal Serial Bus 5.1.11 Puertos de entrada/salida

5.2 Adquisición de señales analógicas……………………………………………………...141

5.2.1 Introducción 5.2.2 Definición de señal analógica 5.2.3 Conceptos fundamentales en adquisición de señales 5.2.4 Señales de transmisión analógicas y señales de datos digitales 5.2.5 Transmisión de datos: transmisión analógica 5.2.6 Sistema de adquisición de datos analógicos 5.2.7 Las señales analógicas en el diseño de sistemas de adquisición de datos 5.2.8 Conversión analógica-digital

5.3 Interrupciones……………………………………………………………………………...149

5.3.1 Introducción 5.3.2 Entrada-salida e interrupción 5.3.3 Configuración de entrada-salida 5.3.4 Instrucciones entrada - salida 5.3.5 Interrupción del programa

l

6

5.3.6 Tipos de interrupciones 5.3.7 Ciclo de interrupción 5.3.8 La instrucción SWI 5.3.9 Modulo de interrupción por teclado (KBI) 5.3.10 Registro de habilitación de interrupciones de teclado (KBIER) 5.3.11 Inicialización del teclado

UNIDAD 6: APLICACIÓN DE MICROCONTROLADORES EN INGENIERÍA ELÉCTRICA………………………………………………………………….....162 6.1 Planteamiento del proyecto………………………………………………………………163 6.2 Aceptación del proyecto…………………………………………………………………..164 6.3 Supervisión…………………………………………………………………………………165 6.4 Pruebas de aceptación……………………………………………………………………167 6.5 Demostración y exhibición del proyecto………………………………………………...170 REFERENCIAS BIBLIOGRÁFICAS…………………………………………..…………………171 ANEXO…………………………………………………………………….…...172

IPN-ESIME Zacatenco Electrónica III

7

INTRODUCCIÓN

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

Departamento de Ingenieria Eléctrica en el Instituto Politécnico Nacional que se imparte

en el sexto semestre de la Escuela Superior de Ingeniería Mecánica y Eléctrica, unidad

Zacatenco.

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

bibliografia 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 su mejor entendimiento y transmisión del conocimiento. Igualmente

se mencionan problemas resueltos con los que el alumno puede guiarse y estudiar de

una mejor manera.

El curso de electrónica III tiene ciertos niveles de aprendizaje, comenzando desde los

diversos sistemas numéricos, hasta la programación de periféricos, cada uno de los

temas fue desarrollado con la información suficiente que se requiere para el

entendimiento del mismo. Al final del documento encontrará ejemplos de prácticas

realizadas en el laboratorio, con los cuales puede expandir el conocimiento hacia el uso

de programas virtuales y de simulación tales como Digital Works y Code Warrior.

l

8

UNIDAD I

SISTEMAS DE NUMERACIÓN

IPN-ESIME Zacatenco Electrónica III

9

INTRODUCCIÓN

El Número es un ente matemático abstracto usado para indicar cantidad y es independiente de la forma de representarlo. La expresión numérica, conocida como numeral o numero; es representada en diversos sistemas diferenciados por sus bases para uso particular. Un número N se expresa en un sistema así:

+ Donde: b es la base Cualquier ; Tomando valores entre 0 y b-1 Dominio de la parte entera n a 0 Dominio de la parte fraccionaria -1 a –m En el factor posicional ai, el subíndice (i) indica posición relativa en que se debe colocar cada a así:

El punto , punto raíz; en particular en el sistema decimal llamado punto decimal. La magnitud de ai depende de la posición con respecto al punto y su valor máximo será b-1, es decir en el sistema decimal b = 10; la ai máxima =10-1 =9; su inexistencia se denota con cero.

l

10

Sistema de números comunes Sistema Decimal Binario Octal Hexadecimal Base 10 2 8 16 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 17 10001 21 11 18 10010 22 12 19 10011 23 13 20 10100 24 14 30 11110 36 1E 40 101000 50 28 50 110010 62 32 60 111100 74 3C 70 1000110 106 46 80 1010000 120 50 90 1011010 132 5A 100 1100100 144 64

IPN-ESIME Zacatenco Electrónica III

11

1.1 SISTEMAS DE NUMERACION NO SIGNADO (decimal, binario, octal y hexadecimal)

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, es base 2 (Numero de dígitos del sistema). Cada dígito de un número representado en este sistema se denomina BIT (Contracción de Binary Digit). Ejemplo: Suma Binaria: Es semejante a la suma decimal, con la diferencia de que se manejan solo 2 dígitos (0 y 1), y que cuando el resultado excede de los símbolos utilizados se agrega el exceso (acarreo) a la suma parcial siguiente hacia la izquierda. Las tablas de sumar son:

Se observa que no se ha tenido ningún acarreo en las sumas parciales. Sumar 11001 (25) y 10011 (19). 1 1 1 Acarreos 1 1 0 0 1…………..25 1 0 0 1 1…………+19 1 0 1 1 100………. 44 El Sistema Octal: Es un sistema de numeración cuya base es 8, es decir, utiliza símbolos para la representación de cantidades, estos símbolos son:

01234567 Este sistema también es de los llamados posicionales 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: ¿Qué numero decimal representa el numero octal 4 701 utilizando el TFN?

l

12

4*83 + 7*82 +1*80= 2048+ 448+ 0+ 1= 2497.

El Sistema Decimal: Es uno de los denominados sistemas posicionales, utilizando un conjunto de símbolos cuyo significado depende fundamentalmente de su posición relativa al símbolo coma (,), denominado coma decimal, que en caso de ausencia se supone colocada implícitamente a la derecha. Utiliza como base el 10, que corresponde al número de símbolos que comprende para la representación de cantidades; estos símbolos (también denominados dígitos) son:

123456789 Una determinada cantidad, que denominaremos número decimal, se puede expresar de la siguiente forma:

N° =∑ (dígito)i X (base)i Donde: Base= 10 I= Posición respecto a la coma, D= n° de dígitos a la derecha de la coma, N= n° de dígitos a la izquierda de la coma -1, Dígito= cada uno de los que componen el número. La representación de cantidades 1992 y 3, 1416 es:

1992= 1*103+ 9*102+ 9*101+ 2*100 3.1416= 3*100+ 1*101+ 4*102+ 103+ 6*104

Teorema Fundamental de la Numeración. (TFN). Se trata de u 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.1 expresada en el sistema de numeración de base tres que utiliza los dígitos para la representación de cantidades0, 1 y 2, ¿Cuál será la representación de la misma cantidad en el sistema decimal?

2*32+ 0*31+ 1*3-1= 18+0+1+0.333=19.333 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:

0123456789ABCDEF Se le asignan los siguientes valores absolutos a los símbolos A, B, C, D, E, F:

IPN-ESIME Zacatenco Electrónica III

13

SIMBOLO VALOR ABSOLUTO

A 10

B 11

C 12

D 13

E 14

F 15 La suma aritmética es similar a las anteriores. Ejemplo: ¿Qué número decimal representa el número hexadecimal 2CA utilizando el TNF?

1*162+ C*161+ A*160= 1*162+ 12*161+10*160= 512+192+10= 714

l

14

1.2 CONVERSION DE SISTEMAS DECIMAL A CUALQUIER BASE. La conversión del sistema numérico decimal a cualquier base, realiza con los siguientes pasos: 1.-Dividir el número decimal entre la base que se desea convertir 2.-Al residuo de la operación (al numerador del quebrado que indica la parte fraccionaria), llámese a0 en el nuevo sistema. 3.-Tomese el cociente entero y divídase nuevamente entre la base. 4.-A este residuo (al numerador del quebrado que indica la parte fraccionaria) llámese a1 en el nuevo sistema. 5.-Este proceso se repite hasta agotar el numeral, obteniéndose el ultimo residuo (al numerador del quebrado que indica la parte fraccionaria) an. En el nuevo sistema. Ejemplos:

2710 = #2

2710 = 110112

Comprobación:

|10

Comprobación:

IPN-ESIME Zacatenco Electrónica III

15

|10

Comprobación:

|10

|10

l

16

1.3 CONVERSION DE CUALQUIER BASE A SISTEMA DECIMAL

Conversión de un numero de base b a base 10(decimal). Escríbase el numeral en forma expandida y evalué la polinomial en aritmética decimal, para obtener la conversión correspondiente. Los subíndices de las expresiones contenida en los ejemplos siguientes, nos indica la base del sistema numérico en que se expresa el numeral. A) |10

|10 |10

B) |10

|10 |10

C) |10

D) |10

IPN-ESIME Zacatenco Electrónica III

17

1.4 RELACION ENTRE LOS SISTEMAS BINARIOS, OCTAL Y HEXADECIMAL

1.4.1 Sistema binario octal y hexadecimal

Sistema Octal. (Base 8) En el sistema Octal (base 8), sólo se utilizan 8 cifras (0, 1, 2, 3, 4, 5, 6,7). Este Sistema de numeración una vez que se llega a la cuenta 7 se pasa a 10, etc. Cuenta hecha en octal: 0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21,….. se puede observar que en este sistema numérico no existen los números: 8 y 9. Para pasar del un sistema binario al octal se utiliza el siguiente método: Se divide el número binario en grupos de 3 empezando por la derecha. Si al final queda un grupo de 2 o 1 dígitos, se completa el grupo de 3 con ceros (0) al lado izquierdo. Se convierte cada grupo en su equivalente en el Sistema octal y se reemplaza. Ejemplo. 101101112 pasarlo a octal Número en binario convertido a grupos de 3: 010 110 111 Equivalente en base8 2 6 7 Resultado: 101101112 = 2678 Sistema Hexadecimal. (Base 16) El sistema hexadecimal, a diferencia del sistema decimal, necesita 16 cifras y/o letras (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E.F). Si se cuentan las letras y números anteriores se tienen 16. Comparación de los números superiores a 9 en hexadecimal con su equivalente en decimal.

A B 5

162 161 160 Donde: A,B,5= Multiplicador (0…15) Y 162,161,160 = Potencia de 16

l

18

Entonces para formar el número AB516: (el número 2741 en hexadecimal) A x 162 = 10 x 1056 = 2560 B x 161 = 11 x 16 = 176 5 x 160 = 5 x 1 = 5 Equivalente decimal = 2560+176+5 = 2741 Relación entre el Sistema Binario y el Hexadecimal El Sistema hexadecimal es una abreviación del Sistema Binario. Si a cada cifra de un número Hexadecimal se lo reemplaza por su equivalente en binario, se habrá convertido el número en hexadecimal a número binario. Ejemplo: 9B16 = 1001210112. Donde 916 = 10012 y B16 = 10112

1.4.2 Relación del sistema binario con el sistema hexadecimal

Cuatro (4) cifras binarias se reemplazan por una (1) cifra hexadecimal. De esta manera se puede convertir un número en base 16 a uno en base 2.

También se puede convertir un número binario en uno hexadecimal de la siguiente manera.

Se separa el número binario en grupos de 4 dígitos empezando por la derecha. Si al final queda un grupo de 3 dígitos o menos, se completa el grupo de 4 con ceros (0) al lado izquierdo. - Se busca el equivalente en base 16 de cada uno de los grupos y se reemplaza.

Si a cada cifra de un Número en Hexadecimal se lo reemplaza por su equivalente Número en binario , se habrá convertido el número en hexadecimal a número binario.

Cuatro (4) cifras binarias se reemplazan por una (1) cifra hexadecimal.

IPN-ESIME Zacatenco Electrónica III

19

1.5 SISTEMAS DE NUMERACION SIGNADO (decimal, binario, octal y hexadecimal) y SUS CONVERSIONES

1.5.1 Representación de números con signo

En las computadoras digitales, los números binarios se representan mediante un conjunto de dispositivos de almacenamiento binario (por ejemplo, fiip.flops). Cada dispositivo representa un bit. Por ejemplo, un registro FF de seis bits puede almacenar números binarios que varían desde 000000 hasta 111111 (de O a 63 en decimal). Esto representa la magnitud del número. Debido a que la mayoría de las computadoras y calculadoras digitales maneja números tanto negativos como positivos, se requiere de algún medio para representar el signo del número (+ o -). Por lo general lo que se hace es agregar otro bit al número; a este bit se le llama bit de signo. En general, la convención común es que un O en el signo representa a un número positivo y un 1 en el bit de signo representa a un número negativo. Esto se ilustra en la figura 6-1. El registro A contiene los bits 0110100. El O en el bit más a la izquierda (A6) es el bit de signo que representa al signo +. Los otros seis bits son la magnitud del número 1101002, el cual es equivalente al 52 decimal. Entonces, el número almacenado en el registro A es + 52. De manera similar, el número almacenado en el registro B es -52 ya que el bit de signo es 1, que representa al (--). El bit de signo se utiliza para indicar la naturaleza positiva o negativa del número binario almacenado. Los números de la figura 6-1 consisten de un bit de signo y de seis bits de magnitud. Los bits de magnitud son el equivalente binario real del valor decimal que se está representando. A éste se le conoce como sistema de signo-magnitud para representar números binarios con signo. Aunque el sistema de signo-magnitud es simple, las calculadoras y computadoras no lo utilizan de manera usual porque la implementación del circuito es más compleja que en otros sistemas. El sistema más común que se utiliza para representar números binarios con signo es el sistema de complemento a 2.Antes de ver cómo se hace esto, primero debemos ver cómo se forma el complemento a 1 y el complemento a 2 de un número binario. Figura 6-1 representaciones de números con signo en la forma de signo magnitud. A6 A5 A4 A3 A2 A1 A0

=+5210

Bit de signo (+) magnitud =+5210

B6 B5 B4 B3 B2 B1 B0

=-5210

0 1 1 0 1 0 0

0 1 1 0 1 0 0

l

20

Bit de signo (-) magnitud =-5210

Forma de complemento a 1 El complemento a 1 de un número binario se obtiene al cambiar cada O por un 1 y cada 1 por un O. En otras palabras, se cambia cada uno de los bits en el número por su complemento. El proceso se muestra a continuación. 1 O 1 1 O 1 número binario original O 1 O O 1 O se complementa cada bit para formar el complemento a 1 Por lo tanto, decimos que el complemento a 1 de 101101 es 010010. Forma de complemento a 2 El complemento a 2 de un número binario se forma al tomar el complemento a 1 de ese número y sumarIe 1 a la posición del bit menos significativo. El proceso se ilustra a continuación para el número 1011012 = 4510' 1 0 1 1 0 1 equivalente binario de 45 0 1 0 0 1 0 se complementa cada bit para formar el complemento a 1 + 1 se le suma 1 para formar el complemento a 2 0 1 0 0 1 1 complemento a 2 del número binario original Entonces, decimos que 010011 es la representación en complemento a 2 de 10110l. He aquí otro ejemplo de cómo convertir un número binario a su representación en complemento a 2: 1 0 1 1 0 0 número binario original 0 1 0 0 1 1 complemento a 1 + 1 se le suma1 0 1 0 1 0 0 complemento a 2 del número original Representación de números con signo mediante el complemento a 2 El sistema de complemento a 2 para representar números con signo funciona así: -Si el número es positivo, la magnitud se representa en su forma binaria real y se coloca el bit de signo 0 enfrente del MSB. Esto se muestra en la figura 6-2 para el número +4510 -Si el número es negativo, la magnitud se representa en su forma de complemento a 2 y se coloca el bit de signo 1 enfrente del MSB. Esto se muestra en la figura 6.2 para el número -4510,

=+4510

0 1 0 1 1 0 1

IPN-ESIME Zacatenco Electrónica III

21

Bit de signo (+) binario real

=-4510

Bit de signo (-) complemento a 2

El sistema de complemento a 2 se utiliza para representar números con signo ya que, como veremos, nos permite realizar la operación de la resta, a partir de una operación de suma. Esto es importante ya que significa que una computadora digital puede utilizar los mismos circuitos tanto para sumar como para restar, lo cual redunda en un ahorro en el hardware. Extensión del signo En el ejemplo 6-1 tuvimos que utilizar un total de cinco bits para representar los números con signo. El tamaño de un registro (número de fIip-fIops) determina el número de dígitos binarios que se almacenan para cada número. La mayoría de los sistemas digitales hoy en día almacenan números en registros con tamaños en múltiplos pares de cuatro bits. En otras palabras, los registros de almacenamiento están compuestos de 4, 8, 16,32 o 64 bits. En un sistema que almacena números de ocho bits, siete de ellos representan la magnitud y el MSB representa el signo. Si necesitamos almacenar un número positivo de cinco bits en un registro de ocho bits sólo basta con agregar ceros a la izquierda. El MSB (bit de signo) sigue siendo 0,lo

0000 1001 0s a la izquierda que se agregaron valor binario para el 9 cual indica un valor positivo. ¿Qué Ocurre si tratamos de almacenar números negativos de cinco bits en un registro de ocho bits? En la sección anterior vimos que la representación binaria en 10111 complemento a 2 de cinco bits para el -9 es 10111. Si anexáramos Os a la izquierda, éste ya no sería un número negativo en el formato de ocho bits. La manera apropiada de extender un número negativo es anexando 1s a la izquierda. Así, el valor almacenado para el 9 negativo es 111 1 0111 magnitud en complemento a 2 signo en formato de 5 bits extensión del signo al formato de 8 bits

1 0 1 0 0 1 1

l

22

Negación La negación es la operación de convertir un número positivo en su equivalente negativo, o un número negativo en su equivalente positivo. Cuando los números binarios con signo se representan en el sistema de complemento a 2, para realizar la negación sólo basta con realizar la operación de complemento a 2. Para ilustrar esto empecemos con el +9 en su forma binaria de ocho bits. Su representación con signo es 00001001. Si sacamos su complemento a 2 obtendremos 11110111, el cual representa al valor con signo -9. De igual forma podemos empezar con la representación de -9, que es 11110111, y sacar su complemento a 2 para obtener 00001001, el cual representa a +9. A continuación se muestran estos pasos en un diagrama. Empezamos con complemento 00001001 +9 a 2 (se cambia el signo) 11110111 -9 se niega otra vez 00001001 +9 Por lo tanto, para cambiar el signo de un número binario con signo lo complementamos a 2. Esta negación cambia el número a su equivalente con signo opuesto. En los pasos (d) y (e) del ejemplo 6-1 utilizamos la negación para convertir los números positivos en sus equivalentes negativos.

1.5.2 Suma en el sistema de complemento A2 Ahora investigaremos cómo se realizan las operaciones de suma y resta en los equipos digitales que utilizan la representación de complemento a 2 para los números negativos. En los diversos casos a considerar, es importante observar que el bit de signo de cada número se opera sobre la misma forma que los bits de magnitud. Caso 1: dos números positivos. La suma de dos números positivos es simple. Considere la suma de +9 y +4: +9 0 1001 (primer sumando) +4 0 10100 (sumando) 0 1101 (suma =+13) bits de signo

Observe que los bits de signo del primer sumando y del sumando son ambos 0 y que el bit de signo de la suma es 0, lo cual indica que la suma es positiva. Observe, además, que el primer sumando y el sumando se ajustan para tener el mismo número de bits. Esto debe hacerse siempre en el sistema de complemento a 2.

IPN-ESIME Zacatenco Electrónica III

23

Caso 2: número positivo y número negativo más pequeño. Considere la suma de+9 y -4. Recuerde que el -4 estará en su forma de complemento a 2. Por lo tanto, +4 (00100) debe convertirse en -4 (11100). bits de signo +9 0 1001 (primer sumando) -4 0 10100 (sumando) 1 0 1101 Este acarreo se descarta; el resultado es 00101(suma =+5)

En este caso el bit de signo del sumando es 1. Observe que los bits de signo también participan en el proceso de la suma. De hecho, se genera un acarreo en la última posición de la suma. Este acarreo siempre se descarta, por lo que la suma final es:00101, que equivale a +5. Caso 3: número positivo y número negativo más grande. Considere la suma de -9 y +4: -9 10111 +4 00100 11011 suma =-5 Bit de signo negativo Aquí la suma tiene un bit de signo en 1, lo cual indica un resultado negativo. Como el resultado de la suma es negativo se encuentra en su forma de complemento a 2, por lo que los últimos cuatro bits (1011) en realidad representan el complemento a 2 del resultado. Para encontrar la magnitud real, debemos negar (complementar a 2) el 11011; el resultado es 00101 = +5. De esta forma, 11011 representa a-S. -9 10111 -4 11100 1 10011 Bit de signo

Este acarreo se descarta; el resultado es 10011(suma =-13) Nuevamente el resultado final es negativo y está en forma de complemento a 2 con un bit de signo de 1. Al cambiar de signo (complementar a 2) este resultado se produce 01101 = + 13. Caso IV: dos números negativos

l

24

-9 10111 -9 01001 0 1 00000 se descarta; el resultado es:00000(suma =+0)

1.5.3 Resta en el sistema de complemento A2

La operación de resta mediante el uso del sistema de complemento a 2 en realidad implica la operación de la suma y no es distinta de los diversos casos para la suma del círculo numérico en sentido de las manecillas del reloj, según el número de espacios en el sumando. Por ejemplo, para sumar 2 + 3 se empieza en 2 (0010) Y después se avanza en sentido de las manecillas del reloj tres espacios más para llegar al 5(0101). El desbordamiento ocurre cuando la suma es demasiado grande como para caber dentro del formato con signo de cuatro bits, lo cual significa que nos hemos excedido del valor máximo de 7. En el círculo numérico esto se indica cuando al sumar dos valores positivos tenemos que cruzar la línea entre 0111 (máximo positivo) y 1000 (máximo negativo). El círculo numérico puede ilustrar también cómo funciona en realidad la resta con complemento a 2. Por ejemplo, vamos a restar S de 3. Desde luego que sabemos que la respuesta es - 2, pero vamos a hacerlo con el círculo numérico. Primero empezamos en el número 3 (0011) del círculo numérico. La manera más aparente de restar es avanzar en sentido contrarío a las manecillas del reloj alrededor del círculo por cinco espacios, para quedar en el número 1110 (- 2). La operación menos obvia que ilustra la aritmética con complemento a 2 es sumar -S al número 3. El cinco negativo (el complemento a 2 de 0101) es 1011, que si se interpreta como número binario sin signo representa el valor 11 (once) en decimal. Empiece en el número 3 (0011) Y avance en sentido a favor de las manecillas del reloj alrededor del círculo 11 espacios y se encontrará una vez más en el número 1110 (- 2), que es el resultado correcto. Cualquier operación de resta entre números de cuatro bits con signos opuestos que produzca un resultado mayor de 7 o menor de -8 es un desbordamiento del formato de cuatro bits y produce una respuesta incorrecta. Por ejemplo, 3 menos -6 debe producir la respuesta 9, pero si avanzamos en sentido de las manecillas del reloj seis espacios a partir del 3, quedaremos en el número con signo -7: se ha producido una condición de desbordamiento, la cual nos proporciona una respuesta incorrecta.

1.5.4 Multiplicación de números binarios La multiplicación de números binarios se realiza de la misma forma que la multiplicación de números decimales. En realidad el proceso es más simple, ya que los dígitos multiplicadores son 0 o 1, por lo que siempre estamos multiplicando por 0 o 1 y ningún otro dígito Multiplicación en el sistema de complemento a 2

IPN-ESIME Zacatenco Electrónica III

25

En las computadoras que utilizan la representación en complemento a 2, la multiplicación se lleva a cabo en la manera antes descrita, siempre y cuando tanto el multiplicando como el multiplicador se coloquen en forma binaria natural. Si los dos números a multiplicar son positivos, ya se encuentran en la forma binaria natural y se multiplican como están. Desde luego que el producto resultante es positivo y se le asigna un bit de signo de 0. Cuando los dos números sean negativos, deberán estar en forma de complemento a 2. Se saca el complemento a 2 de cada uno para convertirlo en un número positivo y después se multiplican esos dos números. El producto se mantiene como un número positivo y recibe un bit de signo de 0. Cuando uno de los números es positivo y el otro negativo, primero se convierte el número negativo en una magnitud positiva, sacando su complemento a 2. El producto se encontrará en forma de magnitud real. No obstante, el producto debe ser negativo ya que los números originales son de signos opuestos. Como consecuencia, el producto se cambia a su forma de complemento a 2 y se le asigna un bit de signo de 1.

1.5.5 División binaria El proceso para dividir un número binario (el dividendo)entre otro (el divisor) es el mismo que el que se utiliza para los números decimales, al cual, por lo general, se le conoce como "división larga". El proceso actual es más simple en binario, ya que cuando estamos comprobando cuántas veces "cabe" el divisor en el dividendo sólo hay dos posibilidades: 0 o 1. En la mayoría de los equipos digitales modernos, por lo general, las restas que son parte de la operación de división se llevan a cabo mediante el uso de la resta con complemento a 2; es decir, se saca el complemento a 2 del sustraendo y después se suma. La división de números con signo se maneja de la misma forma que la multiplicación. Los números negativos se convierten en positivos mediante su negación y después se lleva a cabo la división. Si el dividendo y el divisor tienen signos opuestos, el cociente resultante se cambia a número negativo, para lo cual se saca su complemento a 2 y se le asigna un bit de signo de 1. Si el dividendo y el divisor son del mismo signo, el cociente se deja como número positivo y se le asigna un bit de signo de 0.

l

26

1.6 ARITMÉTICA BINARIA Y HEXADECIMAL

1.6.1 Aritmética binaria

SUMA BINARIA: Las operaciones de suma binaria se realizan de la siguiente forma:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0 Llevo 1

Ejemplo: Dado los números binarios: W=1111100012; T=11011101012; Obtener W+T

0 1 1 1 1 1 0 0 0 0 1

0 1 1 0 1 1 1 0 1 0 1

1 1 1 0 1 0 1 0 1 1 0

Suma binaria 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 0 se pone 0 y se acarrea un 1 a la posición siguiente. Ejemplo de suma binaria Para sumar 1010 (que en decimal es 10) y 1111 (que en decimal es 15). 10 + 15 = 25 Resta binaria Las cuatro reglas básicas para la resta de ν números binarios son: 0-0=0 1–1=0 1–0=1 0 – 1 = 1 utilizar base (2) Ejemplo de Resta Binaria 100100 110 011110 32 16 8 4 2 1 24 28 30 Multiplicación binaria La multiplicación binaria es tan sencilla como la decimal, y es que funcionan de la misma manera. Aquí tienen un ejemplo de multiplicación binaria. Supongamos que multipliquemos 10110 por 1001: Ejemplo de Multiplicación Binaria División binaria División: Se hace igual como el sistema • decimal. Al igual que las operaciones anteriores, se • realiza de forma similar a la división decimal salvo que las multiplicaciones y restas internas al proceso de la división se hacen en binario.

IPN-ESIME Zacatenco Electrónica III

27

Ejemplo de División Binaria 11 101101 100000 10 11 10 1111 10000 0101 000000 11 8421 16 8 4 2 1 0 10 0 12 111 0011 14 11 00 15

1.6.2 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:

Hexadecimal Decimal

A 10

B 11

C 12

D 13

E 14

F 15

l

28

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.

9 + 7 = 16 (16 – 16 = 0 y nos llevamos 1)

En este caso la respuesta obtenida, 16, no está entre el 0 y el 15, por lo que tenemos que restarle 16. Por lo tanto, la respuesta obtenida será 10 (sistema hexadecimal).

Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y números puede crear confusiones.

A + 6 = 16 (16 - 16 = 0 y nos llevamos 1)

Ocurre lo mismo que en el ejemplo anterior.

A + A = 20 ( 20 – 16 = 4 y nos llevamos 1)

La respuesta es 20 y no está entre el 0 y el 15, por lo que tenemos que restarle 16. Por lo tanto, la respuesta obtenida será 14 (sistema hexadecimal).

Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y números puede crear confusiones.

F + E = 29 ( 29 – 16 = D y nos llevamos 1)

La respuesta es 29 y no está entre el 0 y el 15, por lo que tenemos que restarle 16. Por lo tanto, la respuesta obtenida será 1D (sistema hexadecimal).

Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y números puede crear confusiones.

A + B + C = 33 ( 33 – 32 = 1 y nos llevamos 2)

La respuesta es 33 y no está entre el 0 y el 15, por lo que tenemos que restarle 32. Por lo tanto, la respuesta obtenida será 21 (sistema hexadecimal).

IPN-ESIME Zacatenco Electrónica III

29

En esta operación hemos tenido que restar 32, y no 16 como hacíamos anteriormente. Esto ha ocurrido porque si a 33 le restamos 16 seguiríamos estando fuera del sistema hexadecimal, con un número que no se encuentra entre el 0 y el 15.

Hay que tener cuidado de utilizar correctamente las letras, ya que operar a la vez con letras y números puede crear confusiones.

Ahora haremos una operación más complicada:

A83F + 24CC ——————————— CD0B

La haremos paso a paso:

• F + C = 27 (27 – 16 = B y nos llevamos 1) • 3 + C = 15 + 1 (acarreo) = 16 (16 – 16 = 0 y nos llevamos 1) • 8 + 4 = 12 + 1 (acarreo) = 13 (13 corresponde a D) • A + 2 = 12 (12 corresponde a C)

Ten en cuenta que puedes comprobar los resultados utilizando una calculadora científica.

1.6.3 Resta Hexadecimal

Antes de entrar en esta parte se recomienda aprender la suma hexadecimal, ya que será necesaria durante los procesos explicados a continuación.

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.

1.6.4 Complemento C15

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

Para entender la resta en complemento a 15 lo analizaremos con un ejemplo. Esta es la resta que tenemos que resolver: Aunque no estoy muy seguro que digamos, pero algo es algo.

A4FC9 - DE8 —————————

l

30

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.

A4FC9 - 00DE8 ————————— 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. FFFFF - 00DE8 ————————— FF217

La resta se hace siguiendo las normas generales de la resta común. 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.

A4FC9 + FF217 ————————— 1A41E0

Con la suma obtenemos el resultado 1A41E0, 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.

A41E0 + 1 —————— A41E1

La respuesta es A41E1.

Ten en cuenta que puedes comprobar los resultados utilizando una calculadora científica.

1.6.5 Complemento C16

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.

IPN-ESIME Zacatenco Electrónica III

31

Para entender la resta en complemento a 16 lo analizaremos con el ejemplo anterior. Esta es la resta que tenemos que resolver:

A4FC9 - DE8 —————————

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.

A4FC9 - 00DE8 —————————

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.

FFFFF - 00DE8 ————————— FF217

La resta se hace siguiendo las normas generales de la resta común.

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.

FF217 + 1 ————————— FF218

A la diferencia obtenida y sumarle uno le denominaremos el complemento a 16.

Ahora tendremos que sumar el minuendo y el complemento a 16

A4FC9 + FF218 ————————— 1A41E1

l

32

Con la suma obtenemos el resultado 1A41E1 .

Te habrás dado cuenta que este nuevo numero 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.

IPN-ESIME Zacatenco Electrónica III

33

1.7 CÓDIGOS

1.7.1 Códigos numéricos

Los códigos numéricos sirven para representar números con fines de procesamiento y almacenamiento. Los números de punto fijo y de punto flotante son ejemplos de estos códigos. Números de punto fijo. Se utilizan para representar tantos enteros con signo como fracciones con signo. En ambos casos se usan los mismos sistemas de magnitud y signos de complemento a dos o de complemento a uno para representar los valores con signo. Los enteros de punto fijo tienen un punto binario implícito a la derecha del bit menos significativo; las fracciones de punto fijo tienen un punto binario implícito entre el bit de signo y el bit más significativo. Ejemplo 1. Dar dos posibles interpretaciones del número de punto fijo de ocho bits 01101010 usando el sistema de complemento a dos. Como el bit de signo es 0, el número representa el entero positivo 1101010, o bien la fracción positiva 0.1101010. Ejemplo 2. Dar dos posibles interpretaciones del número de punto fijo de 8 bits 11101010, usando el sistema de complemento a dos. El bit del signo es 1, por tanto el número representa a -0010110, o bien -0.0010110. Representaciones con exceso o sesgadas. Una representación con exceso K de un código C se forma sumando el valor K a cada palabra del código C. Las representaciones con exceso se utilizan a menudo para representar los exponentes de los números de punto flotante. La representación con exceso 8 de la tabla siguiente, se obtiene al sumar (1000)2 al código de 4 bits.

Código con exceso 8

Decimal

Representación binaria

Exceso 8

7 0111 1111

6 0110 1110

l

34

5 0101 1101

4 0100 1100

3 0011 1011

2 0010 1010

1 0001 1001

0 0000 1000 Números de punto flotante. Un número de punto flotante es un número N que se escribe como, N = M ´ rE donde M, la mantisa, es un número de punto fijo que contiene los dígitos significativos de N y E, el exponente o característica, es un entero de punto fijo. Al deducir la representación de un número de punto flotante, la mantisa y la característica se codifican por separado. La base es implícita y no se incluye en la representación.

La mantisa, muchas veces, se codifica con magnitud y signo, por lo general como una fracción. Los más utilizados, en circuitos digitales combinacionales son el código BCD, Exceso 3, Aiken o 2421, 5421, Biquinario, Dos de Cinco. Existen otros códigos de tipo secuencial cíclicos, dos de ellos es son código Jhonson y el código Gray. En la tabla 1.6 se describen algunos de ellos con sus respectivos equivalentes decimales.

Decimal BCD Exceso 3 2421 5421 Biquinario Dos de cinco

Gray

0 0000 0011 0000 0000 0100001 00011 0000

1 0001 0100 0001 0001 0100010 00101 0001

2 0010 0101 0010 0010 0100100 01001 0011

3 0011 0110 0011 0011 0101000 10001 0010

4 0100 0111 0100 0100 0110000 00110 0110

5 0101 1000 1011 1000 1000001 01010 0111

6 0110 1001 1100 1001 1000010 10010 0101

7 0111 1010 1101 1010 1000100 01100 0100

8 1000 1011 1110 1011 1001000 10100 1100

9 1001 1100 1111 1100 1010000 11000 1101

10 0001 0000

0100 0011

0001 0000

0001 0000

0100010 0100001

00101 00011

1111

11 0001 0001

0100 0100

0001 0001

0001 0001

0100010 0100010

00101 00101

1110

12 0001 0010

0100 0101

0001 0010

0001 0010

0100010 0100100

00101 01001

1010

IPN-ESIME Zacatenco Electrónica III

35

13 0001 0011

0100 0110

0001 0011

0001 0011

0100010 0101000

00101 10001

1011

14 0001 0100

0100 0111

0001 0100

0001 0100

0100010 0110000

00101 00110

1001

15 0001 0101

0100 1000

0001 1011

0001 1000

0100010 1000001

00101 01010

1000

Tabla de Equivalencia desde cero hasta quince de algunos códigos numéricos más utilizados.

1.7.2 Código BCD

(Binario Codificado en Decimal): 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 diodos led o LCD, los cuales poseen previamente convertidores que transforman el grupo de cuatro bits BCD en otro especial, llamado 7 segmentos.

Por ejemplo, para transformar el número decimal 7890510 en código BCD se toman los equivalentes en grupos de cuatro bits cada uno; ver tabla 1.6:

7 8 9 0 510

0111 1000 1001 0000 0101BCD Resp: 7890510 = 0111 1000 1001 0000 0101BCD

Para realizar la equivalencia del BCD con el sistema binario se debe tomar la precaución de realizar primero la transformación decimal y posteriormente la conversión al BCD.

Ejemplo: Transformar en BCD los siguientes números:

a) 10111011111112; b) 5F3C,B16

Solución (a): 10111011111112 = 601510 = 0110 0000 0001 0101BCD

Solución (b): 5F3C, B16 = 24380,687510 = 0010 0100 0011 1000 0000, 0110 1000 0111 0101BCD

1.7.3 Unidades de información; bit, byte, kilobyte, megabyte, gigabyte y

terabyte: definición:

a. Bit: Dígito binario. Es el elemento más pequeño de información del ordenador. Un bit es un único dígito en un número binario (0 o 1). Los grupos forman unidades más grandes de datos en los sistemas de ordenador – siendo el Byte (ocho Bits) el más conocido de éstos.

l

36

b. Byte: Se describe como la unidad básica de almacenamiento de información, generalmente equivalente a ocho bits, pero el tamaño del byte del código de información en el que se defina. 8 bits. En español, a veces se le llama octeto. Cada byte puede representar, por ejemplo, una letra.

c. Kilobyte: Es una unidad de medida utilizada en informática que equivale a 1.024 Bytes. Se trata de una unidad de medida común para la capacidad de memoria o almacenamiento de las microcomputadoras.

d. Megabyte: es una unidad de medida de cantidad de datos informáticos. Es un múltiplo binario del byte, que equivale a 220 (1 048 576) Bytes, traducido e efectos como 106 (1 000 000) bytes.

e. Gigabyte: Es la unidad de medida más utilizada en los discos duros. También es una unidad de almacenamiento. Debemos saber que un byte es un carácter cualquiera. Un gigabyte, en sentido amplio, son 1.000.000.000 bytes (mil millones de bytes), ó también, cambiando de unidad, 1.000 megas (MG ó megabytes). Pero con exactitud 1 GB son 1.073.741.824 bytes ó 1.024 MB. El Gigabyte también se conoce como "Giga"

f. Terabyte: Es la unidad de medida de la capacidad de memoria y de dispositivos de almacenamiento informático (disquete, disco duro CD-ROM, etc). Una unidad de almacenamiento tan desorbitada que resulta imposible imaginársela, ya que coincide con algo más de un trillón de bytes (un uno seguido de dieciocho ceros). El terabyte es una unidad de medida en informática y su símbolo es el TB. Es equivalente a 240 bytes.

Se destaca que todavía no se han desarrollado memorias de esta capacidad aunque sí dispositivos de almacenamiento.

Conversiones entre las Unidades de Información:

o Cuatro bits se denominan cuarteto (ejemplo: 1001). o Ocho bits octeto o byte (ejemplo: 10010110). o Al conjunto de 1.024 bytes se le llama Kilobyte o simplemente K. o 1.048.576 Bytes equivalen a un Megabyte. o Mil millones de bytes equivalen a un Gigabyte. o 1.024 Kilobytes forman el llamado Megabyte. o 1.024 Megabytes se denominan Gigabyte.

Por tanto podemos establecer las siguientes igualdades relacionadas al dígito binario (bit):

o 1 Cuarteto 4 Bits. o 1 Byte= 8 Bits. o 1 Kilobyte= 1.024*8 bits= 8192 Bits. o 1 Megabyte= 1.024*1.024*8= 8388608 Bits. o 1 Gigabyte= 1.024*1.024*1.024*8= 8589934592 Bits.

IPN-ESIME Zacatenco Electrónica III

37

EJERCICIO

210 =1024 =1k =400H =0100 0000 0000 B

+400 800 211 =2048 =2k =800H =1000 0000 0000 B

+800 1000H

212 =4096 =4k =1000H =0001 0000 0000 0000 B

213 =8192 =8k =2000H =0010 0000 0000 0000 B

EJERCICIO: CALCULAR

RESULTADO = E000

Solución 2 a) 8K = 2000H

- 1 1FFFH

l

38

b) FFFF -1FFF E000 RESULTADO= E000

EJERCICIO Un Programa tiene una extensión de 1400 bytes y empieza en la dirección 1AAAH

¿Dónde termina?

1400D = 578H = 8X160 + 7X161 + 5X162

8 + 112 + 1280 = 1400

A) 578H SE RESTA 1

588-1 = 577

B) DESPUES SE SUMAN

1AAA + 577 = 2021H

EL PROGRAMA TERMINA EN LA DIRECION 2021H

IPN-ESIME Zacatenco Electrónica III

39

UNIDAD II

CIRCUITOS DIGITALES Y DISPOSITIVOS DE MEMORIA

l

40

2.1 SEÑALES ANALOGICAS.

2.1.1 Introducción a los sistemas

En una primera aproximación se puede decir que un sistema es un conjunto de elementos que guardan algún tipo de relación. Esta definición es tan poco concreta que sirve para cualquier tipo de sistema. Los elementos de un sistema pueden tener a su vez estructura de sistema. En este caso serían subsistemas del sistema al que pertenecen. De lo anterior se desprende que según la escala que se emplee en la observación de un elemento, éste puede ser considerado como un sistema o subsistema Una primera clasificación de los sistemas podría ser la siguiente. Existen sistemas naturales (los generados por la naturaleza) y sistemas artificiales (hechos por el hombre). Está claro que los sistemas electrónicos se encuentran dentro de los sistemas artificiales. Un tema importante al hablar de sistemas es la comunicación entre sistemas que se produce por medio de una transferencia o intercambio de energía. Un ejemplo es la radio, donde el emisor, a través de una antena, emite energía en forma de ondas electromagnéticas que son detectadas por el receptor; en definitiva se ha producido un intercambio energético.

2.1.2 Señal eléctrica analógica Señal eléctrica analógica es aquella en la que los valores de la tensión o voltaje varían constantemente en forma de corriente alterna, incrementando su valor con signo eléctrico positivo durante medio ciclo y disminuyéndolo a continuación con signo eléctrico negativo en el medio ciclo siguiente. El cambio constante de polaridad de positivo a negativo provoca que se cree un trazado en forma de onda senoidal.

2.1.3 Sistemas analógicos y digitales Los sistemas electrónicos procesan la información que les llega a sus entradas. En general, la información que llega a estas entradas proviene de magnitudes físicas del mundo real en el que vivimos. Estas magnitudes son temperatura, presión, longitud, velocidad, tensión, intensidad, etc. que tienen un carácter continuo o analógico. La utilización de alguna de estas magnitudes dependerá de la aplicación específica para la que esté diseñando mi sistema electrónico. Lo que sí parece lógico pensar es que estas magnitudes físicas entrada deben llegar en forma de señal eléctrica. Por este motivo se suelen utilizar sensores o transductores que captan la magnitud física y la transforman en señal eléctrica para que pueda ser procesada en mi sistema electrónico.

IPN-ESIME Zacatenco Electrónica III

41

Fig. 2.1 Se ve un ejemplo de esta situación en un sistema de adquisición de datos de laboratorio.

Por tanto, podemos definir una señal eléctrica como una representación de la variación de una magnitud eléctrica (tensión o intensidad) frente al tiempo. La magnitud más utilizada es la tensión. Según la naturaleza de la información que lleva la señal eléctrica, esta puede clasificarse en:

2.1.4 Señal digital como una señal analógica compuesta Basándose en el análisis de Fourier, una señal digital es una señal analógica compuesta. El ancho de banda es infinito, se puede llegar a este concepto si se estudia una señal digital. Una señal digital, en el dominio del tiempo, incluye segmentos horizontales y verticales conectados. Una línea vertical en el dominio de tiempo significa una frecuencia cero (no hay cambio en el tiempo). Ir de una frecuencia cero a una frecuencia infinito (y viceversa) implica que todas las frecuencias en medio son parte del dominio. El análisis de Fourier se puede usar para descomponer una señal. Si la señal digital es periódica, lo que es raro en comunicaciones, la señal descompuesta tiene una representación en el dominio de frecuencia con un ancho de banda infinito y frecuencias discretas. Si la señal digital es periódica, la señal descompuesta todavía tiene un ancho de banda infinito, pero las frecuencias son continuas.

2.1.5 Ruido en señal analógica Las señales de cualquier circuito o comunicación electrónica son susceptibles de ser modificadas de forma no deseada de diversas maneras mediante el ruido, lo que ocurre siempre en mayor o menor medida. Para solucionar esto la señal suele ser acondicionada antes de ser procesada. La gran desventaja respecto a las señales digitales es que en las señales analógicas cualquier variación en la información es de difícil recuperación, y esta pérdida afecta en gran medida al correcto funcionamiento y rendimiento del dispositivo analógico. Un sistema de control 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.

2.1.6 Ejemplo de un sistema analógico

l

42

Un ejemplo de sistema electrónico analógico es el altavoz, que se emplea para amplificar el sonido de forma que éste sea oído por una gran audiencia. Las ondas de sonido que son analógicas en su origen, son capturadas por un micrófono y convertidas en una pequeña variación analógica de tensión denominada señal de audio. Esta tensión varía de manera continua a medida que cambia el volumen y la frecuencia del sonido y se aplica a la entrada de un amplificador lineal. La salida del amplificador, que es la tensión de entrada amplificada, se introduce en el altavoz. Éste convierte, de nuevo, la señal de audio amplificada en ondas sonoras con un volumen mucho mayor que el sonido original captado por el micrófono.

2.1.7 Sistemas analógicos que se han vuelto digitales FOTOGRAFÍAS: La mayoría de las cámaras todavía hacen uso de películas que tienen un recubrimiento de haluros de plata para grabar imágenes. Sin embargo, el incremento en la densidad de los microcircuitos o "chips" de memoria digital ha permitido el desarrollo de cámaras digitales que graban una imagen como una matriz de 640 x 480, o incluso arreglos más extensos de píxeles donde cada píxel almacena las intensidades de sus componentes de color rojo, verde y azul de 8 bits cada uno. Esta gran cantidad de datos, alrededor de siete millones de bits en este ejemplo puede ser procesada y comprimida en un formato denominado JPEG y reducirse a un tamaño tan pequeño como el equivalente al 5% del tamaño original de almacenamiento dependiendo de la cantidad de detalle de la imagen. De este modo las cámaras digitales dependen tanto del almacenamiento como del procesamiento digital. GRABACIONES DE VIDEO: Un disco versátil digital de múltiples usos (DVD por las siglas de digital versatile disc) almacena video en un formato digital altamente comprimido denominado MPEG-2. Este estándar codifica una pequeña fracción de los cuadros individuales de video en un formato comprimido semejante al JPEG y codifica cada uno de los otros cuadros como la diferencia entre éste y el anterior. La capacidad de un DVD de una sola capa y un solo lado es de aproximadamente 35 mil millones de bits suficiente para grabar casi 2 horas de video de alta calidad y un disco de doble capa y doble lado tiene cuatro veces esta capacidad. GRABACIONES DE AUDIO: Alguna vez se fabricaron exclusivamente mediante la impresión de formas de onda analógicas sobre cinta magnética o un acetato (LP), las grabaciones de audio utilizan en la actualidad de manera ordinaria discos compactos digitales (CD. Compact Discs). Un CD almacena la música como una serie de números de 16 bits que corresponden a muestras de la forma de onda analógica original se realiza una muestra por canal estereofónico cada 22.7 microsegundos. Una grabación en CD a toda su capacidad (73 minutos) contiene hasta seis mil millones de bits de información.

IPN-ESIME Zacatenco Electrónica III

43

2.1.8 Sistemas que utilizan métodos digitales y analógicos Existen sistemas que utilizan métodos digitales y analógicos, uno de ellos es el reproductor de disco compacto (CD). La música en forma digital se almacena en el CD. Un sistema óptico de diodos láser lee los datos digitales del disco cuando éste gira y los transfiere al convertidor digital-analógico (DAC). El DAC transforma los datos digitales en una señal analógica que es la reproducción eléctrica de la música original. Esta señal se amplifica y se envía al altavoz. Cuando la música se grabó en el CD se utilizó un proceso que, esencialmente, era el inverso al descrito, y que utiliza un convertidor analógico digital (ADC, analog-to-digital converter). SEÑAL ANALÓGICA: 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 en función del tiempo. 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. El modelo matemático que la describe es una función continua, por tanto transporta una información analógica. Por lo tanto, puede tomar infinitos valores frente al tiempo. (Ver Fig. 2.2)

Fig. 2.2 Señal analógica

SEÑAL DIGITAL: El modelo matemático que la describe es una función que sólo puede tomar un conjunto finito de valores, por transporta una información digital. El tipo de señal con la que trabajaremos en electrónica será un caso particular de la señal digital, la señal digital binaria, en la que sólo son significativos los valores de tensión comprendidos en dos intervalos de tensión diferentes. A todos los valores dentro de cada uno de los intervalos se le asocia un mismo valor lógico, normalmente uno y cero (ver Fig. 2.3)

l

44

Fig. 2.3. Señal digital binaria

Por tanto podemos concluir que: Un sistema en el que todas sus señales son analógicas se denomina SISTEMA ANALÓGICO. Un sistema en el que todas sus señales son digitales se denomina SISTEMA DIGITAL. Ya hemos visto que las magnitudes físicas con las que convivimos son esencialmente analógicas o continuas (si no entramos en el ámbito de la física cuántica). Las variables que modelizan estas magnitudes pueden ser analógicas o digitales dependiendo de la codificación o modelo matemático de las mismas. (Ver Fig. 2.4, Reloj digital y analógico).

Fig. 2.4. Codificación analógica y digital

El proceso que consiste en convertir una señal o variable analógica en digital se denomina digitalización. La mayoría de los sistemas electrónicos construidos procesan señales digitales, pero el mundo físico es fundamentalmente analógico como hemos visto. En consecuencia un sistema digital muy a menudo debe tratar con señales analógicas en su punto de contacto con el mundo exterior (sus entradas), por lo que con frecuencia es necesario digitalizar una señal analógica o a la inversa, transformar una señal previamente tratada digitalmente en analógica, empleándose para ello conversores A/D y D/A.

IPN-ESIME Zacatenco Electrónica III

45

Fig. 2.5 Conversión analógica / digital

Para terminar este apartado solo queda decir que los sistemas digitales tienen infinitas aplicaciones y se pueden encontrar, por ejemplo, en el diseño de computadores, instrumentación, control de procesos industriales, control de semáforos, electrónica de automóviles (ABS, encendido electrónico, etc.), simuladores para pilotos de aviones, aplicaciones en medicina, electrónica de consumo (sonido y vídeo digital, TV, PC, telefonía móvil digital, etc.),

l

46

2.2 COMPUERTAS LOGICAS 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 existen a través del sistema digital en cualquiera de dos valores reconocibles y 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.

Fig. 2.6 Señal binaria

Como se muestra en la figura, 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. Los terminales de entrada de un circuito digital aceptan señales binarias dentro de las tolerancias permitidas y los circuitos responden en los 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 ó 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

IPN-ESIME Zacatenco Electrónica III

47

continuación se detallan los nombres, símbolos, gráficos, funciones algebraicas, y tablas de verdad de las compuertas más usadas. COMPUERTA AND: Cada compuerta tiene dos variables de entrada designadas por A y B y una salida binaria designada por x. La compuerta AND produce la multiplicación lógica AND: esto es: la salida es 1 si la entrada A y la entrada B están ambas en el binario 1: de otra manera, la salida es 0. Estas condiciones también son especificadas en la tabla de verdad para la compuerta AND. La tabla muestra que la salida x es 1 solamente cuando ambas entradas A y B están en 1. El símbolo de operación algebraico de la función AND es el mismo que el símbolo de la multiplicación de la aritmética ordinaria (*). Las compuertas AND pueden tener más de dos entradas y por definición, la salida es 1 si todas las entradas son 1.

Fig. 2.7 AND

http://www.profesormolina.com.ar/electronica/componentes/int/comp_log/image004.pngCOMPUERTA OR: La compuerta OR produce la función sumadora, esto es, la salida es 1 si la entrada A o la entrada B o ambas entradas son 1; de otra manera, la salida es 0. El símbolo algebraico de la función OR (+), es igual a la operación de aritmética de suma. Las compuertas OR pueden tener más de dos entradas y por definición la salida es 1 si cualquier entrada es 1.

Fig. 2.8 OR

l

48

COMPUERTA NOT: El circuito NOT es un inversor que invierte el nivel lógico de una señal binaria. Produce el NOT, o función complementaria. El símbolo algebraico utilizado para el complemento es una barra sobra el símbolo de la variable binaria. Si la variable binaria posee un valor 0, la compuerta NOT cambia su estado al valor 1 y viceversa. El círculo pequeño en la salida de un símbolo gráfico de un inversor designa un inversor lógico. Es decir cambia los valores binarios 1 a 0 y viceversa.

Fig. 2.9 NOT

COMPUERTA SEPARADOR (YES): Un símbolo triángulo por sí mismo designa un circuito separador, el cual no produce ninguna función lógica particular puesto que el valor binario de la salida es el mismo de la entrada. Este circuito se utiliza simplemente para amplificación de la señal. Por ejemplo, un separador que utiliza 5 volt para el binario 1, producirá una salida de 5 volt cuando la entrada es 5 volt. Sin embargo, la corriente producida a la salida es muy superior a la corriente suministrada a la entrada de la misma. De ésta manera, un separador puede excitar muchas otras compuertas que requieren una cantidad mayor de corriente que de otra manera no se encontraría en la pequeña cantidad de corriente aplicada a la entrada del separador.

Fig. 2.10 YES

http://www.profesormolina.com.ar/electronica/componentes/int/comp_log/image008.png Compuerta NAND: Es el complemento de la función AND, como se indica por el símbolo gráfico, que consiste en una compuerta AND seguida por un pequeño círculo (quiere decir que invierte la señal). La designación NAND se deriva de la abreviación NOT - AND. Una designación más adecuada habría sido AND invertido puesto que es la

IPN-ESIME Zacatenco Electrónica III

49

función AND la que se ha invertido. Las compuertas NAND pueden tener más de dos entradas, y la salida es siempre el complemento de la función AND.

Fig. 2.11 NAND

http://www.profesormolina.com.ar/electronica/componentes/int/comp_log/image010.png Compuerta NOR: La compuerta NOR es el complemento de la compuerta OR y utiliza el símbolo de la compuerta OR seguido de un círculo pequeño (quiere decir que invierte la señal). Las compuertas NOR pueden tener más de dos entradas, y la salida es siempre el complemento de la función OR.

Fig. 2.12 NOR

l

50

2.3 FLIP – FLOPS.

2.3.1 FLIP-FLOP (biestable)

Los Flip-Flop o Biestable, como también se le conoce, son circuitos secuénciales constituidos por puertas lógicas capaces de almacenar un bit, que es la información binaria más elemental. Un flip-flop es controlado generalmente por una o dos señales de control y/o una puerta o señal de reloj. La salida incluye a menudo el complemento así como la salida normal. Mientras que los flip-flop se ejecutan electrónicamente, requieren energía y las conexiones de tierra.

2.3.2 Historia del FLIP – FLOP.

El primer flip-flop electrónico fue inventado en 1918 por William Eccles y FW Jordania. Fue llamado el circuito de disparador de Eccles-Jordania constaba de dos elementos activos (radio tubos). El nombre de flip-flop más tarde fue derivado del sonido producido en un altavoz conectado junto a una de las salidas de los amplificadores durante el proceso de activación en el circuito. Este circuito electrónico original flip – flop es un circuito biestable con doble entrada sin dedicar ningún reloj (o compuerta), la señal era transparente, y así un dispositivo que sería etiquetado como " latch" en muchos círculos hoy. Los tipos de flip-flop discutidos abajo (D, RS, JK, T) primero fueron discutidos en un curso de 1954 en la UCLA en un curso de diseño de computadora por Montgomery Phister, y en su libro Lógica de diseño de las computadoras digitales. El autor trabajaba en ese entonces en los aviones de Hughes bajo la dirección del Dr. Eldred Nelson, que había acuñado el término JK para un flip-flop que paso cuando ambas entradas estaban en estado encendido. Los otros nombres fueron acuñados por Phister. Difieren ligeramente de algunas de las definiciones que figuran a continuación. El origen del nombre para el flip-flop JK es detallado por P.L. Lindley, un ingeniero de JPL, en una carta a EDN, una revista electrónica de diseño. La carta está fechada el 13 de junio de 1968, y fue publicada en la edición de agosto de la revista. En la carta, el Sr. Lindley explica que oyó la historia del flip-flop JK del Dr. Nelson Eldred, quien es el responsable de acuñar el término mientras que trabaja en los aviones de Hughes. Los Flip-flops que se utilizan en Hughes en el momento son todos del tipo que vino a ser conocido como JK. En el diseño de un sistema lógico, el Dr. Nelson asignó letras a las entradas del flip-flop como sigue: #1: A & B, #2: C & D, #3: E & F, #4: G & H, #5: J & K.

2.3.4 Aplicación Los flip-flops pueden ser simples (transparente) o de reloj. Los flip-flop simples se pueden construir alrededor de un par de elementos de inversión interconectados: los tubos de vacío, transistores bipolares, transistores de efecto de campo, inversores, y la inversión de las puertas de lógica todos han sido utilizados en circuitos prácticos. Los

IPN-ESIME Zacatenco Electrónica III

51

dispositivos registrados (o no transparentes) más avanzados se diseñan especialmente para los sistemas (tiempo-discretos) síncronos; tales dispositivos por lo tanto no hacen caso de sus entradas excepto en la transición de una señal de reloj dedicada (conocida como la hora, pulsante, o strobing). Esto hace que el flip-flop, ya sea para cambiar o conservar su señal de salida basado en los valores de las señales de entrada en la zona de transición. Algunos flip-flops cambio el aumento de la producción en el borde de reloj, otros en el borde de la caída.

Fig. 2.13 Flip – Flop

2.3.5 Tipos de FLIP – FLOPS BIESTABLE RS: Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales, R y S, a las que debe el nombre, permiten al ser activadas:

• R: el borrado (reset), puesta a 0 ó nivel bajo de la salida. • S: el grabado (set), puesta a 1 ó nivel alto de la salida.

Fig. 2.14 Cronograma del biestable RS

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 directa (Q) y negada (Q') queden con el mismo valor: abajo, si la báscula está construida con puertas NO-O (NOR), o a alto, si con puertas NO-Y (NAND). 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. Por eso, en las tablas de verdad, la activación de ambas entradas se contempla como caso no deseado (N. D.). BIESTABLE RS ASÍNCRONO: Sólo posee las entradas R y S. Se compone internamente de dos puertas lógicas NO-Y o NO-O, según se muestra en la siguiente figura:

l

52

Fig. 2.15 Biestables RS con puertas NO-O, a) NO-Y, c), y símbolos normalizados respectivos b) y d).

Su tabla de verdad es la siguiente (Q representa el estado actual de la salida y q el estado anterior a la última activación):

TABLA DE VERDAD BIESTABLE RS R S Q (NO – O) Q’ (NO – Y) 0 0 Q N.D 0 1 1 0 1 0 0 1 1 1 N.D Q N. D. = ESTADO NO DETERMINADO

BIESTABLE RS SÍNCRONO: Además de las entradas R y S, posee una entrada C de sincronismo cuya misión es la de permitir o no el cambio de estado del biestable. En la siguiente figura se muestra un ejemplo de un biestable síncrono a partir de una asíncrona, junto con su esquema normalizado:

Fig. 2.16 Circuito Biestable RS síncrono a) y esquema normalizado b).

IPN-ESIME Zacatenco Electrónica III

53

Su tabla de verdad es la siguiente:

TABLA DE VERDAD BIESTABLE RS

C R S Q (NO – O) 0 X X q 1 0 0 q 1 0 1 1 1 1 0 0 1 1 1 N.D.

X= NO IMPORTA BIESTABLE D: Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuya salida adquiere el valor de la entrada D cuando se activa la entrada de sincronismo, C. En función del modo de activación de dicha entrada de sincronismo, existen dos tipos de biestables D:

• Activo por nivel (alto o bajo), también denominado registro o cerrojo (latch en inglés).

• Activo por flanco (de subida o de bajada).

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

Fig. 2.17 Símbolos normalizados: Biestables D a) activo por nivel alto y b) activo por flanco de subida

Su tabla de verdad:

D Q QSIQUIENTE 0 X 0 1 X 1 X = NO IMPORTA

BIESTABLE T: Dispositivo de almacenamiento temporal de dos estados (alto y bajo). El biestable T cambia de estado ("toggle" en inglés) cada vez que la entrada de sincronismo o de reloj se dispara. Si la entrada T está a nivel bajo, el biestable retiene el nivel previo. Puede obtenerse al unir las entradas de control de un biestable JK, unión que se corresponde a la entrada T.

l

54

Fig. 2.18 Símbolo normalizado: Biestable T activo por flanco de subida.

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

Su la tabla de verdad:

T Q QSIGUIENTE 0 0 0 0 1 1 1 0 1 1 1 0

BIESTABLE JK: Dispositivo de almacenamiento temporal de dos estados (alto y bajo), cuyas entradas principales, J y K, a las que debe el nombre, permiten al ser activadas:

• J: El grabado (set), puesta a 1 ó nivel alto de la salida. • K: El borrado (reset), puesta a 0 ó nivel bajo de la salida.

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 RS, en el caso de activarse ambas entradas a la vez, la salida adquirirá el estado contrario al que tenía.

Fig. 2.19 Cronograma de la báscula JK

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

Su tabla de verdad es:

IPN-ESIME Zacatenco Electrónica III

55

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 Una forma más compacta de la tabla de verdad es (Q representa el estado siguiente de la salida en el próximo flanco de reloj y q el estado actual):

J K Q 0 0 q 0 1 0 1 0 1 1 1

BIESTABLE JK ACTIVO POR FLANCO: 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. 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).

Fig. 2.20 Símbolo normalizado Biestable JK

BIESTABLE JK MAESTRO-ESCLAVO: Aunque aún puede encontrarse en algunos equipos, este tipo de biestable, denominado en inglés J-K Flip-Flop Master-Slave, ha quedado obsoleto ya que ha sido reemplazado por el tipo anterior. 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.

l

56

Fig. 2.21 Símbolo normalizado Biestable JK Maestro - Esclavo

Otra forma de expresar la tabla de verdad del biestable JK es mediante la denominada tabla de excitación:

q Q J K 0 0 0 X 0 1 1 X 1 0 X 1 1 1 X 0

Siendo q el estado presente y Q el estado siguiente.

Ejemplo con componentes discretos

Fig. 2.22 CIRCUITO MULTIVIBRADOR BIESTABLE

IPN-ESIME Zacatenco Electrónica III

57

2.4 CODIFICADORES Es un circuito combinacional con 2N entradas y N salidas, cuya misión es presentar en la salida el código binario correspondiente a la entrada activada. Existen dos tipos fundamentales de codificadores: codificadores sin prioridad y codificadores con prioridad. En el caso de codificadores sin prioridad, puede darse el caso de salidas cuya entrada no pueda ser conocida: por ejemplo, la salida 0 podría indicar que no hay ninguna entrada activada o que se ha activado la entrada número 0. Además, ciertas entradas pueden hacer que en la salida se presente la suma lógica de dichas entradas, ocasionando mayor confusión. Por ello, este tipo de codificadores es usado únicamente cuando el rango de datos de entrada está correctamente acotado y su funcionamiento garantizado.

Fig. 2.23 Codificador binario

2.4.1 Dirección local de lugar

Para evitar los problemas anteriormente comentados, se diseñan los codificadores con prioridad. En estos sistemas, cuando existe más de una señal activa, la salida codifica la de mayor prioridad (generalmente correspondiente al valor decimal más alto). Adicionalmente, se codifican dos salidas más: una indica que ninguna entrada está activa, y la otra que alguna entrada está activa. Esta medida permite discernir entre los supuestos de que el circuito estuviera deshabilitado por la no activación de la señal de capacitación, que el circuito no tuviera ninguna entrada activa, o que la entrada número 0 estuviera activada. También entendemos como codificador (códec), un esquema que regula una serie de transformaciones sobre una señal o información. Estos pueden transformar una señal a una forma codificada usada para la transmisión o cifrado o bien obtener la señal adecuada para la visualización o edición (no necesariamente la forma original) a partir de la forma codificada. En este caso, los codificadores son utilizados en archivos multimedia para comprimir audio, imagen o vídeo, ya que la forma original de este tipo de archivos es demasiado grande para ser procesada y transmitida por los sistema de comunicación disponibles actualmente. Se utilizan también en la compresión de datos para obtener un tamaño de archivo menor. Según esta nueva definición, podemos dividir los codificadores en códecs sin pérdidas y códecs con pérdidas, según si la información que se recupera coincide exactamente con la original o es una aproximación.

l

58

2.5 DECODIFICADORES

Un decodificador o descodificador es un circuito combinacional, cuya función es inversa a la del codificador, esto es, convierte un código binario de entrada (natural, BCD, etc.) de N bits de entrada y M líneas de salida (N puede ser cualquier entero y M es un entero menor o igual a 2N), tales que cada línea de salida será activada para una sola de las combinaciones posibles de entrada. Estos circuitos, normalmente, se suelen encontrar como decodificador / demultiplexor. Esto es debido a que un demultiplexor puede comportarse como un decodificador. Si por ejemplo tenemos un decodificador de 2 entradas con 22=4 salidas, en el que las entradas, su funcionamiento sería el que se indica en la siguiente tabla, donde se ha considerado que las salidas se activen con un "uno" lógico:

Fig. 2.24 Ejemplo decodificador

2.5.1 Ejemplo decodificador

TABLA DE VERDAD PÀRA EL DECODIFICADOR 2 A 4

ENTRADAS SALIDAS A B D3 D2 D1 D0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 0

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.

2.5.2 Aplicaciones del decodificador Su función principal es la de direccionar espacios de memoria. Un decodificador de N entradas puede direccionar 2N espacios de memoria. Para poder direccionar 1kb de memoria necesitaría 10 bits, ya que la cantidad de salidas seria 210, igual a 1024. De esta manera: Con 20 bits => 220 = 1Mb; Con 30 bits => 230 = 1Gb, etc.

IPN-ESIME Zacatenco Electrónica III

59

2.6 MULTIPLEXORES En el campo de las telecomunicaciones el multiplexor se utiliza como dispositivo que puede recibir varias entradas y transmitirlas por un medio de transmisión compartido. Para ello lo que hace es dividir el medio de transmisión en múltiples canales, para que varios nodos puedan comunicarse al mismo tiempo. Una señal que está multiplexada debe desmultiplexarse en el otro extremo. Según la forma en que se realice esta división del medio de transmisión, existen varias clases de multiplexación:

• Multiplexación por división de frecuencia • Multiplexación por división de tiempo • Multiplexación por división de código • Multiplexación por división de longitud de onda

2.6.1 Electrónica digital

Fig. 2.25 Esquema de un multiplexor 2 a 1. Puede ser comparado a un conmutador controlado

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

• SELECTOR DE ENTRADAS. • SERIALIZADOR: Convierte datos desde el formato paralelo al formato serie.

Transmisión multiplexada: Utilizando las mismas líneas de conexión, se transmiten diferentes datos de distinta procedencia. Realización de funciones lógicas: Utilizando inversores y conectando a 0 ó 1 las entradas según interese, se consigue diseñar funciones complejas, de un modo más compacto que con las tradicionales puertas lógicas.

l

60

2.7 CIRCUITOS ARITMETICOS

2.7.1 Introducción Los circuitos integrados más representativos para la realización de operaciones aritméticas básicas tales como la suma y la comparación. Adicionalmente, se analiza una ALU en circuito integrado con la cual se pueden llevar a cabo una variedad de operaciones de lógica y aritmética. La forma más simple de realizar una operación aritmética electrónicamente, es usando un circuito llamado semi-sumado (Haft Adder). Este dispositivo permite que sean aplicados 2 bits de entradas (A,B) para producir dos salidas: uno correspondiente a resultado de la suma (S) y la otra correspondiente a acarreo (C) según se muestra en la siguiente tabla:

A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

Tabla de verdad el circuito semi-sumador

Como se puede notar, la salida S es el resultado de una EX-OR entre A y B como entradas: por otro lado C es el resultado de una AND entre las mismas entradas. En la figura 2.26 se muestra el circuito de semi-sumador. Este semi-sumador presenta la limitación de que no posee uno entrada para el acarreo de la etapa previa, en caso de que desee sumar más de 2 bits. Se debe recurrir entonces a sumador total b sumador completo (Full Adder). Este tipo de circuito acepta 3 bits de entrada por separado, llamados sumando, consumando y acarreo de entrada A, B y Cin respectivamente, mientras que las salidas son S y Cout.

Fig. 2.26 El semisumador

2.7.2 Sumadores binarios de 4 bits

Las operaciones aritméticas se presentan con tal frecuencia que se han desarrollado un número de circuitos integrados especiales para llevarlas a cabo. El 74LS283 es un buen exponente de esta clase de dispositivos, siendo, en esencia, un sumador hexadecimal de 4 bits, Por lo tanto, acepta como entradas dos números de 4 bits de cada uno, A y B, y un bit de acarreo previo, CO. Los 4 bits correspondientes al número A se conectan a las entradas Al, A2, A3 y A4. Las cuatro entradas del dato B se conecta de manera similar.

IPN-ESIME Zacatenco Electrónica III

61

El sumador genera como resultado un número de 4 bits correspondientes a la suma de los dos datos, A y B, además de un bit de acarreo, C4. En la figura 2.27 se muestra la configuración de pines del 74LS283.

Fig. 2.27 Configuración de pines del 74lS283

La operación del circuito integrado puede describirse en forma resumida de la siguiente manera: Si la suma de los dos datos de entrada más el acarreo previo arroja un resultado entre O y 15, la suma aparecerá en las salidas de suma y el bit de acarreo de salida, C4 se hace igual a cero. Si el resultado de la suma se sitúa entre 16 y 31, el bit de acarreo C4 se pone en 1 y las salidas correspondientes a los bits de suma se hacen iguales al valor del resultado menos 16. Observe que en el sumador de 4 bits, el bit de acarreo resultante posee un peso binario igual a 16. Ejemplo: Suponga entradas a un sumador como el siguiente: A4A3A2A1= 01112 (716) B4B3B2B1 = 10102 (A16) CO = 1 En este caso, la suma de los tres datos de entrada, 0111 + 1010 + 1 resulta ser igual 18. De acuerdo a las reglas anteriores, se produce un bit de acarreo igual 1 y las salidas adoptan un valor de 2 (esto es, 18 menos 16). Por lo tanto, C4 = 1 y 4 3 2 1=0010.

2.7.3 Sumadores en cascada

Es posible implementar sumadores para palabras de tamaño superiores a 4 bits si se disponen varios 74LS283 en cascada. Para el efecto, basta simplemente con conectar la salida C4 del sumador de menor peso a la entrada CO del sumador siguente. En la figura Nº 3 se muestra como se conectarían dos 74LS283 en cascada para con formar

l

62

un sumador de 8 bits. Los dos sumadores se muestran recibiendo como datos a dos números binarios de 8 bits cada uno cuyos valores son: A=11001010, B = 11100111, CO=0. El resultado de la operación, mostrado también en la misma figura es 10110001 y C4= 1.+

Fig. 2.28 Configuración en cascada 74LS283

2.7.4 La operación de resta con el 74LS283

El mismo circuito integrado descrito anteriormente puede ser utilizado para llevar a la práctica operaciones de resta. Más aún, tanto la suma como la resta son, desde el punto de vista digital, muy similares, por lo cual resulta fácil la implementarla de circuitos digitales que permitan seleccionar una u otra operación. En la figura Nº 4 se muestra la forma como podría alambrarse, con la ayuda de 4 compuertas XOR auxiliares, un circuito sumador que permita, según la posición de un conmutador de selección, ejecutar la suma o la resta de dos datos binarios de 4 bits cada uno.

Fig. 2.29 Configuración 74LS283 Como restador/sumador de 4 bits unidades de lógica y aritmética, ALU

Las ALU (Arithmetic Logic Units), o unidades de lógica y aritmética, son dispositivos muy versátiles que pueden programarse para llevar a cabo una gran variedad de operaciones aritméticas y lógicas entre dos palabras binarias. En la figura Nº 5 se muestra e! diagrama de pines de 74LS181, una ALU de 4 bits en tecnología TTL. Como se observa de la figura, el positivo consta de dos grupo líneas de entrada A3A2A1A0 y B3B2B1B0, un grupo líneas neas de salida F3F2F1F0, un grupo de líneas selectoras de función S3S2S1S0

IPN-ESIME Zacatenco Electrónica III

63

una línea selectora de modo M, una entrada de acarreo previo Cn una salida de acarreo resultante Cn+4, una salida de comparación A=B y dos salidas de expansión P,G.

Fig. 2.30 Configuración de pines de una ALU 74LS181

Programando adecuadamente las líneas de selección, S3S2S1S0 y la de modo M junto con la de acarreo previo, Cn, Ia ALU puede ejecutar 16 operaciones lógicas y 32 operaciones aritméticas diferentes con los datos A = A3A2A1A0 B = B3B2B1B0. Estas operaciones, con sus respectivos códigos de selección, se relacionan en la tabla de la figura Nº 6. Se asume que tanto las entradas como las salidas son activas en alto. Para programar el dispositivo como generador de funciones lógicas, la entrada se- lectora de modo, M, debe estar a nivel alto. La operación lógica deseada se programa mediante un código de 4 bits de la forma S3S2SISO aplicado a las entradas selectoras de función. El estado de la entrada de acarreo Cn es indiferente por lo cual puede fijarse en cualquier nivel. Por ejemplo, para realizar la operación lógica A XOR B A=1011 y B= 000l, la línea M debe estar en 1 lógico y en las líneas S3S2S1S0 debe aplicarse el código 0110. Cada bit de la palabra de salida F = F3F2F1F0 es el resultado de la operación XOR de cada bit de la palabra A con el correspondiente bit de la palabra B. Es decir, P3 =A3 XOR B3, F2 = A2 XOR B2 y así sucesivamente. Por tanto, F = 1010. Para programar la ALU como generadora de funciones aritméticas, la línea M debe llevarse a nivel bajo con el fin de habilitar los acarreos internos. La suma de A y B, por ejemplo, se realiza cuando el código de las entradas de selección es 1001. La entrada de acarreo Cn es activa en bajo. Si la suma produce un acarreo de salida igual a 1, esté también será activo en bajo. La ALU utiliza un sistema interno de generación de acarreos conocido como carry look ahead (acarreo en adelanto), que no requiere que la suma sea calculada en su totalidad antes de establecer la naturaleza del acarreo resultante.

l

64

Fig. 2.31 Tabla de las funciones del 74LS181

2.7.5 La ALU 74LS381

Muchas de las funciones disponibles en la 74LS181 son de poco valor práctico. En respuesta a esto, los fabricantes de ALU’s han introducido al mercado el circuito integrado 74LS381, el cual implementa a una ALU un poco más pequeña y sencilla. En la figura Nº 7 se muestra su configuración de pines, la asignación de funciones de cada uno de ellos y su tabla de funciones. Observe que solo se dispone de tres líneas de selección y que no existe un pin de selección de modo, M, por lo cual este dispositivo solo puede desollarse ocho funciones en total. Estas corresponden a las operaciones aritméticas y lógicas de más frecuente uso.

IPN-ESIME Zacatenco Electrónica III

65

Fig. 2.32 Configuración de pines, asignación de funciones y tabla de operación de una ALU 74LS381

2.7.6 Circuitos de comparación binaria

Un comparador de magnitud es un circuito lógico, por lo general combinacional, que compara dos palabras binarias e informa, en líneas de salida independientes, cuándo la una es mayor, menor o igual que la otra. Un ejemplo clásico de este tipo de circuitos es el 74LS85. Este dispositivo compara dos códigos binarios de 4 bits A y B aplicados en paralelo a las entradas A3A2A1A0 y B3B2B1B0 respectivamente, e indica en tres líneas de salida activas en alto sus magnitudes relativas. Es decir, cuándo A es mayor, menor o igual a B. En la figura Nº 8 se muestra su configuración de pines, su diagrama funcional y su tabla de verdad. Específicamente, la salida A>B, pin 5, se activa cuando A es mayor que B, la salida A=B cuando A es igual a B y la salida A<B cuando A es menor que B. Las salidas no activas permanecen en bajo. Por ejemplo, si A= 11012 (1310) y B = 01012 (510), se activa la Salida A>B, indicando que 1310 (A16) es mayor que 5 (B16).

l

66

Fig. 2.32 Configuración de pines, asignación de funciones y tabla de operación de 74LS85

El 74LS85 también cuenta con tres líneas de entrada adicionales que le permiten conectarse en cascada a unidades similares para comparar números de mayor longitud. Las entradas son A < B, pin 2, A = B, pin 3, y A > B, pin 4. En la figura Nº 9 se muestra la manera como se conectarían dos de estos.

IPN-ESIME Zacatenco Electrónica III

67

Fig. 2.33 74LS85 Conectado en cascada

Dada la importancia de las operaciones aritméticas básicas en el diseño de circuitos digitales, se ha realizado un recuento de los principales circuitos integrados que las implementan. En particular, se examinaron los sumadores de 4 bits y la forma como pueden conectarse en cascada para aumentar el tamaño de los números procesados. Adicional- mente, se demostró el uso de sumadores que con una pequeña cantidad de lógica adicional permiten obtener fácilmente la operación de resta. Las ALU’s, o unidades de lógica y aritmética, tan interesantes como versátiles, fueron introducidas mediante el análisis del circuito integrado 74LS181 que las representa bien. Sin embargo, para aplicaciones menos exigentes, se planteó la posibilidad de una implementación alterna a través de la 74LS381, que aunque menos poderosa que la 181, es mucho más sencilla de utilizar. Finalmente, el tema de los circuitos comparadores de magnitud se discutió en algún de talle a través de la explicación de la operación de un comparador de magnitud de 4 bits típico como es el 74LS85. La disponibilidad de pines de control adicionales en este dispositivo hace posible extender el proceso de comparación a números binarios de mayor tamaño, mediante el artificio de la conexión en cascada de tantos comparadores como sea necesario para alcanzar los objetivos planteados.

l

68

2.8 ESTRUCTURA Y FUNCIONAMIENTO GENERAL DE LAS MEMORIAS La parte de la unidad central de sistema que almacena la información en programas y datos, que se va a procesar seguidamente o va a servir de apoyo a las diferentes operaciones que se van a efectuar por la computadora, es la memoria principal.

CELDA X CELDA Y

SITUACION INICIAL

CELDA X CELDA Y

PRIMER CICLO DE RELOJ

CELDA X CELDA Y

SEGUNDO CICLO DE RELOJ

*** *** ** *** ********** **********

*** *** ** *** ********** **********

*** *** ** *** ********** **********

*** *** ** *** ********** **********

CELDA X CELDA Y

SEPTIMO CICLO DE RELOJ

CELDA X CELDA Y

OCTAVO CICLO DE RELOJ

Fig. 2.34 En este esquema podemos ver la forma que tiene la memoria de almacenar los códigos binarios e ir

pasándolos de una celda a otra según los impulsos de reloj

IPN-ESIME Zacatenco Electrónica III

69

2.8.1 Registros

Los registros proporcionan un medio de ayuda a las operaciones realizadas por la unidad de control y la unidad aritmética y lógica. Permiten almacenar información, temporalmente, para facilitar la manipulación de los datos por parte de la CPU. Los registros se dividen en tres grupos:

• Registros de propósito general. • Registros de segmento de memoria. • Registros de instrucciones.

De los distintos registros que se agrupan en estos anteriores, es conveniente destacar por sus importancias algunas de ellos. Así, el registro puntero de instrucciones o contador de programa (PC), que es uno de los registros de instrucciones, indica el flujo de las instrucciones del proceso en realización, apuntando la dirección de memoria en que se encuentra la instrucción a ejecutar. El registro acumulador es el registro donde se almacenan los resultados obtenidos en las operaciones realizadas por la unidad aritmética y lógica. El registro de estado o registro de “flags” (FL) se utiliza para indicar cambios de estados y condiciones en los otros registros existentes en el sistema informático; por ello es un registro de instrucciones. El registro puntero de la pila (SP) es un registro de propósito general que almacena la dirección de la zona de la memoria donde está situada la parte superior de la pila. La pila es una zona de los registros de segmento de memoria que la unidad aritmética y lógica utiliza para almacenar temporalmente los datos que este manipulando.

l

70

2.9 CLASIFICACION DE LAS MEMORIAS Las memorias se clasifican físicamente en tres partes:

• Soporte de almacenamiento de la información • Elemento de escritura y lectura • Mecanismo de direccionamiento

La parte destinada al almacenamiento de la información es generalmente de naturaleza magnética. Está compuesta por pequeños dipolos (elementos de dos polos) que pueden tomar dos estados en los que la información toma un valor en cada uno de ellos. Cada uno de estos estados se obtiene por medio de la aplicación de una señal eléctrica exterior generada por el elemento de lectura y escritura. El elemento de escritura y lectura es un dispositivo que introduce y obtienen la información de la memoria. Para escribir, el dispositivo produce una corriente eléctrica local que provoca un cambio estable en el campo magnético de la celda de memoria. Para leer, el dispositivo determina el campo magnético de la celda de memoria para saber cuál es el valor existente en esa celda de memoria. El mecanismo de direccionamiento puede ser de dos tipos, dependiendo de que las memorias sean estáticas o dinámicas. En las memorias estáticas el direccionamiento es un cableado directo a la celda de memoria. Sin embargo, en las memorias dinámicas se utiliza una información de control almacenada con los datos que configuran el circuito para direccionar la lectura o escritura al lugar donde se almacena la información. La memoria se divide en varios niveles con una estructura cuya forma puede recordarnos a una estructura piramidal. El vértice de la pirámide seria una pequeña cantidad de memoria, los registros, que se caracterizan por una capacidad de almacenamiento de información muy pequeña, pero que poseen la ventaja de tener un tiempo de acceso muy reducido, inferior a los 10 nanosegundos. La base de esta hipotética pirámide es la memoria principal, donde existe una mayor cantidad de espacio, pero que tiene una desventaja debido a que el tiempo de acceso es muy superior, lo que la convierte en mucho mas lenta que los registros. Entre ambas se situaría una zona de memoria que sirve para optimizar los tiempos de acceso a la memoria RAM por métodos estáticos. Existen dos métodos distintos de accesos a la memoria:

• Acceso por palabras • Acceso por bloques

1.- ACCESO POR PALABRAS: También se le denomina acceso aleatorio. La operación de acceso se realiza sobre una sola palabra de información. Reacuérdese que la palabra es la cantidad de bits que maneja el sistema informático al mismo tiempo. Este tipo de acceso únicamente se utiliza con memorias estáticas (RAM).

IPN-ESIME Zacatenco Electrónica III

71

2.- ACCESO POR BLOQUES: Es el método de acceso utilizado en las memorias dinámicas. Consiste en empaquetar en un bloque un conjunto de datos al que se añade una cabecera para identificarlo. El acceso se realizara a la cabecera del bloque y una vez en ella se accederá a la información que contiene. Memoria de acceso aleatorio (RAM).- Son memorias en las que se puede leer y escribir información. Permiten el acceso a cualquier información que contenga con la misma velocidad. Contrasta en ello con las memorias secuénciales, por ejemplo una cinta magnética, donde la facilidad de acceso a una información está condicionada por el lugar de la cinta donde esta almacenada.

l

72

2.10 CONEXIONES DE MEMORIAS

Estructura funcional para un microprocesador

EL MICROPROCESADOR Circuito Integrado capaz de ejecutar un programa y controlar unidades necesarias para dicha ejecución.

2.10.1 Evolución de los CI’ S

• Mayor integración.

• La aparcicion del microprocesador, EPROM, EEPROM y DRAM lleva a la microelectronica a los productos de consumo.

C. P. U

MEMORIA DE PROGRAMA

MEMORIA DE DATOS

ENTRADAS Y SALIDAS

BUS

DE

DIRECCIONES

BUS DE CONTROL

BUS DE CONTROL

CONEXIONES A CTOS EXTERIORES

IPN-ESIME Zacatenco Electrónica III

73

2.10.2 Zona de operaciones

• FUNCION:

o EJECUTAR OPERACIONES DEL PROGRAMA

• ELEMENTOS:

o UNIDAD LOGICO – ARITMETICA (ALU).

o REGISTROS CON CUALIDADES ESPECIALES (INCREMENTABLES, DE DESPLAZAMIENTO).

o REGISTROS AUXILIARES (DE PROPOSITO GENERAL).

2.10.3 Zona de control

• FUNCION

o COORDINAR EL FUNCIONAMIENTO DEL CPU ENVIANDO ORDENES A TODOS LOS ELEMENTOS QUE INTERVENGAN

• ELEMENTOS (BLOQUE SECUENCIAL)

o CONTROLADOR INTERNO

REGISTRO OPERANDO A

ALU

REGISTRO OPERANDO B

ACUMULADOR

BUS

DE DATOS

INTERNOS

Entradas de

control

l

74

o REGISTRO DE ESTATUS (BITS DE ACARREO, SIGNOS, DESBORDAMIENTO, ETC.)

• REGISTRO DE INSTRUCCIÓN

2.10.4 Memoria central • MEMORIA CENTRAL

SOLO LECTURA: ROM (READ ONLY MEMORY).

CONTENIDO PERMANENTE.

PROGRAMABLES (PROM, EPROM, EEPROM).

TERMINALES.

BUS DE DIRECCIONES.

BUS DE DATOS (SOLO SALIDA).

HABILITACION CS (CHIP SELECT).

• MEMORIA DE DATOS

LECTURA / ESCRITURA: RAM (RANDOM ACCES).

CONTENIDO VOLATIL.

1 2 3 CONTROLADOR

INTERNO

N

RELOJ

STATUS

INSTRUCCION

SALIDAS

IPN-ESIME Zacatenco Electrónica III

75

DINAMICAS: DRAM.

TERMINALES.

BUS DE DIRECCIONES.

BUS DE DATOS (BIDIRECCIONAL).

LECTURA / ESCRITURA: R/W (READ / WRITE).

HABILITACION CS (CHIP SELECT).

2.10.5 Notas practicas sobre memorias

TERMINALES BIDIRECCIONALES (DATOS):

MEMORIAS RAM (LECTURAS / ESCRITURAS)

DISTINCION ENTRE RAM Y ROM.

A TRAVES DEL TERMINAL R /W (SOLO EN RAM).

A TRAVES DE LOS TERMINALES DE DATOS (EN ROM SOLO SALIDAS).

TERMINALES

ACTIVO A NIVEL ALTO “1”

ACTIVO A NIVEL BAJO “0”

CS =

l

76

2.10.6 Dispositivos de entrada y salida e / s

DISPOSITIVOS DE E /S = INTERFAZ = PUERTO

FUNCION: Permitir la entrada de datos entre los circuitos externos (periféricos) y los circuitos internos del sistema, sin intervenir en la actividad síncrona de estos (reloj interno).

En el puerto de entrada hay latches en el periférico (opcionalmente).

SEÑALES INTERNAS DE DATOS

SEÑALES ACCESIBLES

DESDE EL EXTERIOR

INTERIOR EXTERIOR

D0

D1

D2

D3

D4

D6

D5

D7

Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

ORDEN DE CARGA DE REGISTRO

HABILITACION

IPN-ESIME Zacatenco Electrónica III

77

2.10.7 Operaciones de E / S

ENTRADA DE DATOS = LECTURA DE UNA POSICION DE MEMORIA (DIRECCION).

SALIDAD DE DATOS = ESCRITURA EN UNA POSICION DE MEMORIA (DIRECCION).

DIRECCIONAMIENTO DE UN PUERTO

Las líneas de direcciones son las mismas que se utilizan para acceder a una memoria

La dirección que identifica a un periférico conectado a un puerto depende del fabricante

l

78

2.10.8 Líneas de conexión

FUNCION

Permitir la conexión de los distintos componentes del sistema microprocesador.

Buses de datos, de dirección y de control.

BUS DE CONTROL: Líneas diversas (R /W, líneas de interrupciones, petición DMA, etc.)

BUS UNIDIRECCIONAL: DIRECCIONES Y CONTROL

DIRECCIONES

LOGICA DE

SELECCION

PUERTO

EXTERIOR

A0

An

E

DATOS

INTERIOR

IPN-ESIME Zacatenco Electrónica III

79

BUS UNIDIRECCIONAL: DATOS

2.10.9 Líneas compartidas

TRANSMISION POR BUS COMPARTIDO

Hay que evitar conflictos o colisiones

Control mediante buffers tri – estado:

Estados: “0” y “1” alta impedancia (Z).

BUS

TRANSMISOR 1

TRANSMISOR 2

TRANSMISOR 3

CONECTORES

A

B

TRANSMISOR

RECEPTOR

RECEPTOR

TRANSMISOR

A

B

TRANSMISOR RECEPTOR

l

80

RECEPCION DESDE BUS COMPARTIDO

Hay que evitar cargar el bus (fanin - fanout).

Solución mediante buffer o bus driver.

BUFFER BIDIRECCIONAL

DATOS CPU: (DI0 – DI1) Y (DO0 – DO3).

DATOS PERIFERICO: (DB0 – DB3).

CONTROL: SEÑALES ACTIVAS A NIVEL BAJO.

DIEN # CS #

FUNCION

0 0 DI>>>DB 1 0 DB >>>DO 0 1 ALTA IMPEDANCIA 1 1 ALTA IMPEDANCIA

BUS

TRANSMISOR 1

TRANSMISOR 2

TRANSMISOR 3

CONECTORES

IPN-ESIME Zacatenco Electrónica III

81

2.10.10 Mapa de memoria

MARGEN DE MEMORIA DIRECCIONABLE: Por el microprocesador = 2Nº LINEAS DE

DIRECCION

MARGEN DE MEMORIA≥ MEMORIA FISICA

MAPA DE MEMORIA: Distribución de la memoria direccionable por el microprocesador

MAPA FUNCIONAL O SOFTWARE:

Distribución funcional de las posiciones de memoria (programas, datos, tablas E / S).

MAPA FISICO O HARDWARE:

Distribución física de las posiciones de la memoria (RAM, ROM, E / S).

2.10.11 Ejemplo de mapa de memoria

l

82

2.10.12 Direcciones (notación)

DIRECCIONES DE MEMORIA

DECIMAL

HEXADECIMAL $

BUS DE DIRECCIONES

A0: BIT DE MENOR PESO

A15: BIT DE MAYOR PESO

CONVERSION DECIMAL A HEXADECIMAL

DIVISIONES SUCESIVAS POR 16

0000 1023

0000 03FF

VARIABLES DEL SISTEMA Y STACK

PASTILLA Nº 1 RAM TIPO X 1K

X8

1024 2047

0400 07FF

DATOS TEMPORALES

PASTILLA Nº 2 RAM TIPO X 1K

X8

40960 45055

A000 AFFF

ENTRADAS SALIDAS MEMORIA

RELACIONADA

DIVERSAS PASTILLAS

57344 61439

E000 EFFF

TABLAS Y DATOS FIJOS

PASTILLA Nº 3 ROM TIPO Y 4K

X8

61440 65535

PASTILLA Nº 4 ROM TIPO Y 4K

X8

PROGRAMA F000 FFFF

DECIMAL HEXADECIMAL FUNCIONAL FISICO

ZONA NO UTILIZADA

IPN-ESIME Zacatenco Electrónica III

83

46416

64102416

( ) ( ) $4004001024 1610 ==

CONVERSION HEXADECIMAL A DECIMAL

SISTEMA DE NUMERACION EN BASE 16

AFFF(16) = A x 163 + F x 162 + Fx 161 + F x 160 =10 x 163 + 15 x 162 + 15 x 161 + 15 x 160

=45055(10)

CONVERSION HEXADECIMAL A BINARIO

GRUPOS DE 4 BITS

AFFF(16) = 1010 1111 1111 1111(2)

2.10.13 Implementación de un mapa de memorias

OBJETIVO: Diseño de un circuito combinacional que active cada pastilla cuando se accede a alguna dirección (bus de direcciones) perteneciente a dicha pastilla.

CRITERIO REAL EN EL DISEÑO

SOLUCION MAS ECONOMICA: Que no tiene por que ser la solución con menos puertas

HILOS DE DIRECCIONES CS1

CS2

CS3

CS4

CS4

NOTAS

0 0 0 0 0 0 x x x x x x x x x x 0 1 1 1 1 PASTILLA Nº 1 0 0 0 0 0 1 x x x x x x x x x x 1 0 1 1 1 PASTILLA Nº 2 1 0 1 0 x x x x x x x x x x x x 1 1 1 1 1 PASTILLA DE E / S 1 1 1 0 x x x x x x x x x x x x 1 1 0 1 1 PASTILLA Nº 3 1 1 1 1 x x x x x x x x x x x x 1 1 1 0 1 PASTILLA Nº 4

SIN OPTIMIZAR

( )12131415

121314154

121314153

1011121314152

1011121314151

*

***

***

AAAACS

AAAACS

AAAACS

AAAAAACS

AAAAAACS

A +=

=

=

+++++=

+++++=

l

84

UNIDAD III

ARQUITECTURA GENERAL DE UNA COMPUTADORA

IPN-ESIME Zacatenco Electrónica III

85

INTRODUCCIÓN

Las arquitecturas 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 = operando1 operación operando2 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 dirección, 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 una arquitectura de dos direcciones cuentan con instrucciones aritméticas en las cuales se especifica de dónde se va a tomar cada uno de los dos operandos de la instrucción. El resultado se deja en el lugar de donde se tomó el primer 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, dirección de memoria. El resultado se deja en el acumulador de donde alguna se tome 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 dejara el resultado. Cualquiera de las direcciones corresponde a una dirección de memoria o a un registro del procesador.

Arquitectura básica

La computadora que se utilizará como ejemplo en esta unidad usa palabras de 8 bits. La memoria está organizada en bytes y puede tener hasta 65,536 bytes, numerados del 0 al 65,535. Para seleccionar cualquier byte de Ia memoria se necesitan 16 bits.

l

86

En Ia figura 3.1 se presenta la arquitectura de Ia máquina utilizada en esta unidad. A continuación se describen algunas de sus generalidades.

IPN-ESIME Zacatenco Electrónica III

87

3.1 DIAGRAMA GENERAL DE UNA COMPUTADORA.

Fig. 3.1 Diagrama general de una computadora

Esta unidad central de procesamiento (CPU) tiene dos buses externos que se conectan a los registros MDR y MAR. El bus conectado al registro MAR es de 16 bits, lo cual permite que Ia memoria tenga como máximo 65,546 palabras. El bus conectado al registro MDR es de 8 bits, que corresponden al tamaño de una palabra de memoria.

La máquina también cuenta con instrucciones de entrada/salida y puede hacer referencia a 256 direcciones de dispositivos periféricos, comprendidas éstas de 0 a 255, para lo cual se usan 8 bits. Sin embargo, el número de dispositivos periféricos que se maneja es menor ya que cada dispositivo típicamente utiliza cuatro direcciones para entrada/salida.

l

88

Internamente se tienen varios buses. El BusH es de 8 bits, los cuales corresponden a los ocho bits más significativos del Bus16. El BusL también es de 8 bits y éstos corresponden a los ocho bits menos significativos del Bus16.

3.1.1 Registros de la unidad central de proceso Los registros que contiene su unidad central de procesamiento se describen a continuación. Acumulador A (A) El acumulador A (A) es un registro de propósito general de 8 bits que se utiliza para realizar operaciones aritméticas y lógicas. Acumulador B (B) El acumulador B (B) es un segundo registro de propósito general de 8 bits. También se utiliza para realizar operaciones aritméticas y lógicas. Registro índice (X ) El registro índice (X) se utiliza en algunas instrucciones para generar la dirección efectiva del operando. Tiene 16bits. Registro apuntador a la pila (SP) La función del registro apuntador a la pila (SP) es mantener la dirección del siguiente lugar de memoria disponible en la pila. Este registro es de 16bits. Registro contador de programa (PC) El registro contador de programa (PC) contiene la dirección de la siguiente instrucción a ejecutar. Tiene 16 bits para seleccionar cualquier dirección de memoria. Registro de instrucción (IR) El registro de instrucción (IR) recibe la instrucción que se ejecutará y tiene 8 bits. Registro de dirección de memoria (MAR) El registro de dirección de memoria (MAR) contiene la dirección de memoria a la cual se hace referencia durante las operaciones de lectura o escritura a memoria o a la dirección de un dispositivo periférico, cuando se trata de una operación de entrada/salida. Tiene 16 bits. Registro de datos de memoria (MDR) En el registro de datos de memoria (MDR) queda el dato obtenido de la unidad de memoria durante una operación de lectura a memoria. O bien, queda el dato obtenido de un dispositivo periférico durante una operación de entrada. Dicho registro debe contener el dato que se desea guardar en la unidad de memoria durante una operación de escritura a memoria o, en su caso, el dato a enviar a un periférico durante una operación de salida. Este registro tiene 8 bits. Registro de banderas (FR) El registro de banderas (FR) es de 8 bits y contiene las seis banderas que utiliza esta máquina: I (Interrupt), Z (Zero), N (Negative), C (Carry), H (Hal! carry) y V (Overflow). El formato del registro es11IVCHNZ. Nótese que sus dos bits más significativos siempre tienen el valor de 1. La bandera I permite interrupciones cuando está encendida y no se permiten interrupciones cuando está apagada. Las demás banderas reflejan el estado de la última operación que se ejecutó y las modificó. Una bandera que no se había utilizado anteriormente es el Half Carry. Esta bandera se

IPN-ESIME Zacatenco Electrónica III

89

enciende cuando se realiza alguna operación aritmética sobre algún acumulador y se genera un acarreo sobre el bit 4. El bit menos significativo es el 0 y el más significativo es e17. La bandera H se utiliza cuando se realizan operaciones con números en formato BCD, su función se detallará más adelante. En la descripción de cada instrucción se indica cuáles banderas se modifican durante su ciclo de ejecución. Registro auxiliar (AUX) El registro auxiliar (AUX) contiene 8 bits y es utilizado internamente por el procesador para realizar algunas operaciones. El registro AUX no está disponible para el programador pero sí existen micro operaciones que lo utilizan en la ejecución de las instrucciones. La unidad aritmética actúa sobre operandos de 8 bits que representan números enteros consigno en representación de complementos a 2. Es posible realizar operaciones aritméticas sobre operandos demás bits, pero se tiene que realizar mediante la programación de rutinas que lo efectúen. En ciertas ocasiones, los registros de 16 bytes se representarán en dos partes: los 8 bits más significativos, que se identificarán con la letra H, y los 8 bits menos significativos, para los cuales se utilizará la letra L. Por ejemplo, el registro índice (X)se identificará como XH y XL. El registro contador de programa (PC) se denotará como PCH y PCL. Lo mismo se tendrá para el apuntador a la pila, SPH y SPL y para el registro de dirección de memoria MARH y MARL. Cuando se haga referencia a todo el registro completo no se usarán las letras H y L. Por ejemplo, X solamente implica XH y XL.

l

90

3.2 BUSES El intercambio de información se produce de forma continua entre el procesador y la memoria, para acceder a las instrucciones y realizar las lecturas y escrituras de los datos. De manera adicional, el procesador también realiza un intercambio de información con el exterior a través de los dispositivos de E/S y los controladores de DMA acceden a la memoria para intercambiar bloques de datos con algún controlador de forma autónoma. Toda esta comunicación entre dispositivos se realiza mediante la transmisión de señales eléctricas a través de cables o de pistas de un circuito impreso. Cada línea es capaz de transmitir un nivel de tensión, que representa un 'l' ó un '0' binario. Esta estructura forma lo que se denomina bus, donde además de las características eléctricas y físicas también se definen un conjunto de protocolos que hacen posible la comunicación entre los diferentes subsistemas. Habitualmente los buses están compartidos por los dispositivos. Es, por tanto, necesaria la implementación de mecanismos que aseguren que nunca va a haber más de un dispositivo controlando el estado (el nivel de tensión) de las líneas del bus. Si varios dispositivos tratan de transmitir información por el mismo bus en el mismo instante de tiempo, las señales se solaparían produciéndose un error llamado contención del bus. En todas las transferencias siempre existe un elemento emisor, o dispositivo origen, que envía información a uno o varios elementos receptores o dispositivos destino. Todos los elementos conectados a un mismo bus deben ser capaces de interpretar de manera correcta la información que se transmite por el bus. Para conseguir que diferentes módulos de distintos fabricantes puedan interactuar entre ellos sin problemas, todos los buses deben estar estandarizados, cumpliendo una serie de requisitos eléctricos (niveles de tensión en el bus), mecánicos (tipos de conectores) y de protocolo (cómo se envía la información). Por otro lado, el principal inconveniente que plantea el uso de buses para la interconexión de los elementos de un computador es que puede convertirse en un cuello de botella que limite las prestaciones del sistema. Esta situación se produce si las necesidades que tienen los diferentes elementos conectados a un mismo bus (CPU, memoria y E/S) de transferir información, supera la capacidad de transferencia, produciéndose múltiples estados de espera que degradan el rendimiento del sistema. La máxima velocidad en las comunicaciones vendrá dada por el ancho de banda del bus que indica la cantidad de datos que se pueden transferir por unidad de tiempo (habitualmente en bytes/s). Si la velocidad del bus no es suficiente para evitar la degradación del rendimiento, se puede aumentar el número de buses del sistema construyendo una jerarquía que permita realizar transferencias simultáneas.

3.2.1 Características de un bus

IPN-ESIME Zacatenco Electrónica III

91

Las características básicas que define el estándar del bus son el nivel físico, número y función de las líneas eléctricas y el modo de operación.

3.2.1.1 Nivel físico La primera propiedad de los buses es el soporte físico que utiliza. Dentro de la estructura jerárquica de los buses que tiene un sistema informático, hay buses que conectan dispositivos rápidos cuyas líneas son de reducida longitud y están formadas por pistas del circuito impreso. Estas líneas conectan directamente pines de los circuitos integrados, ya sean del procesador, la memoria o de algún controlador. En contraposición, los buses que enlazan externamente con los chips periféricos se componen a menudo de múltiples hilos, recogidos en mangueras o en los denominados cables planos. En una zona intermedia se sitúan los buses de expansión que conectan diferentes placas de circuitos impresos. En estos casos se dispone de un circuito impreso especial que contiene las líneas del bus y diversos conectores dispuestos de forma regular. A estos conectores se les denomina ranuras o slots. Los circuitos impresos normalmente se colocan sobre una estructura metálica con guías que permite la inserción de otras tarjetas y la colocación de fuentes de alimentación. La estructura recibe el nombre de rack y todas las tarjetas conectadas a la misma estructura comparten el mismo bus. Cada uno de los componentes del sistema ocupa una o varias ranuras de esta estructura. Para que todas las tarjetas sean compatibles, el estándar del bus debe definir perfectamente la forma y el tamaño de los conectores, tanto de las ranuras como de las placas que se introducen en la estructura. La longitud de las líneas de un bus y el número de dispositivos que se conectan a él está limitado. En función de los valores de estos parámetros el dispositivo que fija el estado de las líneas debe suministrar más o menos corriente al bus. Para poder conectar cualquier dispositivo se utilizan circuitos integrados especiales llamados drivers de bus que convierten las señales eléctricas locales de los integrados en señales adecuadas al estándar del bus. Estos integrados suministran la suficiente intensidad de corriente para que la señal se reciba correctamente en el otro extremo. También se caracterizan por consumir poca corriente de entrada y tener márgenes de tensión apropiados para evitar el ruido cuando actúan como receptores. Un ejemplo es la familia BTL (Backplane Transceiver Logic) que utiliza niveles de tensión entre 1'9 y 2'1 voltios para transmitir un Ilógico y entre 0'75 y l' 10 voltios para el 0 lógico. La longitud de las pistas individuales que forman un bus en un circuito impreso puede no ser la misma. Este hecho no tiene importancia para bajas frecuencias, pero llega a ser un factor crítico a medida que aumenta la frecuencia de funcionamiento del sistema. Las pequeñas diferencias en la longitud de las pistas provocan pequeñas diferencias temporales de propagación de la señal. Este retraso de las señales se denomina skew y puede producir la pérdida de sincronización entre varios dispositivos. Este problema es especialmente crítico en la señal de reloj y para evitarlo se incluyen drivers especiales,

l

92

que generan la misma señal de reloj pero con diferentes retrasos para que llegue al mismo tiempo a todos los dispositivos. Por último, también es necesario especificar los niveles de tensión que acepta el bus y los tipos de salida de los drivers de bus. Esta especificación es necesaria, para que los dispositivos conectados no interfieran eléctricamente sobre el nivel de tensión de las señales del bus, únicamente aquel que posea permiso en un determinado instante debe controlar el nivel eléctrico de las señales. Esto se consigue utilizando los siguientes tipos de salida en los drivers de bus:

1. Totem-Pole: Es el tipo de salida que siempre está activa, tomando corriente cuando está a nivel bajo y suministrando corriente en el caso contrario. Se utilizan para las señales que sólo tienen conectado un driver por línea como son: las señales de interrupción o de arbitraje encadenadas daisy chaîn que se describirán a continuación.

2. OC (Colector Abierto): El driver toma corriente cuando está a nivel bajo, pero no

suministra cuando está a nivel alto. Debe incluirse en la línea una resistencia de pull-up para conseguir el estado alto definido cuando ningún driver está activo. Como el estado de la línea cambia cuando uno o más drivers se activan (enviando un nivel bajo) se dice que implementa una or-cableada. Se utilizan para señales que pueden ser activadas por varios dispositivos a la vez (líneas de petición de interrupciones o de petición de bus). Estas puertas se usaron mucho en buses antiguos, pero debido a su alto consumo de corriente es preferible usar puertas triestado.

3. TS (Triestado): Funcionan de forma similar a las totem-pole, pero se diferencian

en que se pueden desactivar pasando la línea a un estado de alta impedancia. Para ello tienen un transistor que habilita o deshabilita la salida, dependiendo del estado de una entrada de control. Se utilizan para líneas que pueden ser activadas en varios puntos diferentes del bus (líneas de direcciones o de datos) pero nunca simultáneamente.

3.2.1.2 Líneas

Una de las propiedades que describe el estándar es el número de líneas eléctricas que posee el bus, que pueden ser desde solamente dos hasta a varios cientos. Cada una de las líneas tiene asignada una función o un significado en particular y en general se pueden agrupar en los siguientes cuatro tipos de líneas:

1. Alimentación: +12 V, +5 V, + 3 V Y tierra (GND).

2. Datos: Llevan información (pueden ser instrucciones, datos o paridad) entre los módulos del sistema. El número de líneas representa el ancho del bus de datos y por tanto define la cantidad de información que se puede transmitir en paralelo en un instante de tiempo determinado, influyendo enormemente en el rendimiento del sistema.

IPN-ESIME Zacatenco Electrónica III

93

3. Direcciones: Se utilizan para designar el origen o el destino de los datos que hay en el bus. Sirven para habilitar dispositivos o posiciones de memoria y su anchura (número de líneas) determina la máxima capacidad de memoria física del sistema.

4. Control: Transmiten información sobre el tipo de ciclo que está teniendo lugar (lectura, escritura...), información de sincronización (información temporal que indica la validez de la información en las líneas del bus),interrupciones y señales de arbitraje. Entre las distintas líneas de control típicas están:

• Escritura y lectura de memoria. • Escritura y lectura de E/S. • Reconocimiento de una transferencia. • Petición y concesión de bus. • Petición y reconocimiento de interrupción. • Reloj. • Reset.

Existen buses donde las mismas líneas físicas se utilizan para llevar información tanto de datos como de direcciones. El ciclo de bus se divide en dos, en primer lugar se envían las direcciones y se validan. A continuación, por las mismas líneas se envían o se leen los datos dependiendo del tipo de ciclo. A los buses que presentan esta característica se les denomina buses multiplexados y tienen la ventaja de utilizar menos líneas, lo que abarata su coste. Como desventaja se tiene que el control del bus es más complejo.

3.2.1.3 Modo de operación El estándar también regula el modo de operación del bus que indica la forma en la que se realiza una transferencia, incluyendo protocolo, ordenación y temporización de las señales. Se distingue entre buses síncronos, donde todas las acciones se realizan en instantes de tiempo determinados en función de la señal de reloj perteneciente al bus, y asíncronos, que utilizan señales de control para indicar la realización de determinadas acciones. Dentro de los elementos conectados se pueden diferenciar los maestros y los esclavos de bus. Un dispositivo maestro es aquel capaz de iniciar una transferencia de datos en el bus, mientras que un esclavo sólo puede enviar datos como respuesta a una petición de un maestro. Hay buses en los que se permite la existencia de varios maestros de bus. Como dichos dispositivos se conectan en cualquier instante de tiempo, para evitar la contención del bus, sólo uno de ellos puede estar seleccionado en cada momento.

3.2.2 Jerarquía de buses Por regla general cada uno de los dispositivos conectados a un bus tendrá una determinada velocidad de funcionamiento. También es habitual que la necesidad de ancho de banda en las transferencias que realiza cada dispositivo sea diferente. Dado

l

94

que la incorporación de elementos lentos puede retrasar las transferencias de los elementos más rápidos, necesitados de mayor ancho de banda, los dispositivos dentro de un computador se suelen agrupar por sus velocidades y necesidades de ancho de banda. Los dispositivos dentro de un grupo comparten un mismo bus y el conjunto de todos los buses forman una jerarquía dentro del sistema. Con la separación de los buses se consigue reducir los retrasos de las señales, al reducir la capacidad de las líneas debida a la conexión de múltiples elementos. También se reduce el riesgo de que el bus pueda llegar a constituirse como un cuello de botella del sistema si la demanda de transferencia de datos alcanza el ancho de banda máximo del bus. Un esquema de la jerarquía de buses se muestra en la figura 3.2. Normalmente en una jerarquía de buses se encuentran los siguientes niveles: . Bus del procesador: Se utiliza para conectar el procesador a la cache o a una serie de dispositivos muy específicos y rápidos. Tiene poca longitud y alta velocidad, y utilizan las propias señales del procesador, por lo que son específicos para cada sistema. . Bus local: A medida que se incrementa la velocidad de los dispositivos de E/S, sobre todo los terminales de vídeo, se necesita un bus de alta velocidad estrechamente ligado al sistema para permitir transferencias a gran velocidad. Este bus es independiente del procesador, por lo que diferentes sistemas con procesadores distintos pueden usar las mismas especificaciones. Si el sistema de memoria está conectado a este bus también se le puede denominar bus de memoria. . Bus de expansión: Conecta los controladores de E/S más lentos con el procesador. A este bus se conectan muchos dispositivos, por lo que suele tener un ancho de banda variable. Normalmente suelen estar estandarizados para que se puedan acoplar múltiples dispositivos distintos. A esta clase de buses también se les denomina buses de E/S. . Bus del sistema: Conecta las diferentes tarjetas procesadoras y periféricas que forman un mismo sistema. Habitualmente un computador personal se caracteriza por estar compuesto de una placa base donde se dispone de ranuras de expansión para conectar periféricos. Estos sistemas tienen una flexibilidad limitada y no son fáciles de expandir. Otros sistemas más complejos (como multiprocesadores) están compuestos por múltiples tarjetas que se conectan entre sí mediante un bus único, el bus de sistema. Estos sistemas son más flexibles y escalables y pueden estar compuestos por tarjetas de distintos tipos y de diferentes fabricantes.

IPN-ESIME Zacatenco Electrónica III

95

Fig. 3.2 Esquema de la jerarquía de buses

MICROCONTROLADOR

l

96

Clasificación Tamaño de datos:

• 4 bits • 8 bits • 16 bits • 32 bits • 64 bits

Según la arquitectura interna:

IPN-ESIME Zacatenco Electrónica III

97

Según la arquitectura del procesador:

• CISC (Complex Instruction Set Computer)->>64 instrucciones • RISC (Reduced Instruction Set computer)< ->33 Instrucciones • SISC (Specific Instruction Set Computer )<<- 33 Instrucciones

Según las unidades vendidas:

Nota : el PC siempre tiene la dirección de la instrucción a ejecutar

98

3.3 ARQUITECTURA INTERNA DE LA UNIDAD MICROPOCESADORA.

3.3.1 Que es un microprocesador El microprocesador es la parte de la computadora diseñada para llevar acabo o ejecutar los programas. Este viene siendo el cerebro de la computadora, el motor, el corazón de esta máquina. Este ejecuta instrucciones que se le dan a la computadora a muy bajo nivel haciendo operaciones lógicas simples, como sumar, restar, multiplicar y dividir. El microprocesador, o simplemente el micro, es el cerebro del ordenador. Es un chip, un tipo de componente electrónico en cuyo interior existen miles (o millones) de elementos llamados transistores, cuya combinación permite realizar el trabajo que tenga encomendado el chip.

3.3.2 Arquitectura del microprocesador El microprocesador tiene una arquitectura parecida a la computadora digital. En otras palabras, el microprocesador es como la computadora digital porque ambos realizan cálculos bajo un programa de control. Consiguientemente, la historia de la computadora digital nos ayudará a entender el microprocesador. El microprocesador hizo posible la manufactura de poderosas calculadoras y de muchos otros productos. El microprocesador utiliza el mismo tipo de lógica que es usado en la unidad procesadora central (CPU) de una computadora digital. El microprocesador es algunas veces llamado unidad microprocesadora (MPU). En otras palabras, el microprocesador es una unidad procesadora de datos. En un microprocesador podemos diferenciar diversas partes:

1. El encapsulado: es lo que rodea a la oblea de silicio en sí, para darle consistencia, impedir su deterioro (por ejemplo, por oxidación por el aire) y permitir el enlace con los conectores externos que lo acoplaran a su zócalo a su placa base.

2. La memoria cache: es una memoria ultrarrápida que emplea el micro para tener

a mano ciertos datos que prediciblemente serán utilizados en las siguientes operaciones sin tener que acudir a la memoria RAM reduciendo el tiempo de espera. Por ejemplo: en una biblioteca, en lugar de estar buscando cierto libro a través de un banco de ficheros de papel se utiliza las computadora, y gracias a la memoria cache, obtiene de manera rápida la información. Todos los micros compatibles con PC poseen la llamada cache interna de primer nivel o L1; es decir, la que está más cerca del micro, tanto que está encapsulada junto a él. Los micros más modernos (Pentium III Coppermine, Athlon Thunderbird, etc.) incluyen también en su interior otro nivel de caché, más grande aunque algo menos rápida, la caché de segundo nivel o L2.

IPN-ESIME Zacatenco Electrónica III

99

3. Coprocesador Matemático: o correctamente la FPU (Unidad de coma flotante). Que es la parte del micro especializada en esa clase de cálculos matemáticos, antiguamente estaba en el exterior del micro en otro chip. Esta parte está considerada como una parte "lógica" junto con los registros, la unidad de control, memoria y bus de datos.

4. Los registros: son básicamente un tipo de memoria pequeña con fines especiales

que el micro tiene disponible para algunos usos particulares. Hay varios grupos de registros en cada procesador. Un grupo de registros está diseñado para control del programador y hay otros que no son diseñados para ser controlados por el procesador pero que CPU los utiliza en algunas operaciones en total son treinta y dos registros.

5. La memoria: es el lugar donde el procesador encuentra sus instrucciones de

programa y sus datos. Tanto los datos como las instrucciones están almacenados en memoria, y el procesador los toma de ahí. La memoria es una parte interna de la computadora y su función esencial es proporcionar un espacio de trabajo para el procesador.

6. Puertos: es la manera en que el procesador se comunica con el mundo externo.

Un puerto es parecido a una línea de teléfono. Cualquier parte de la circuitería de la computadora con la cual el procesador necesita comunicarse, tiene asignado un número de puerto que el procesador utiliza como un número de teléfono para llamar al circuito o a partes especiales.

Existen características fundamentales que son esenciales para identificar un microprocesador, a parte del nombre que se le dan y marca o compañía por la que fue fabricada. Los cuales son:

• Su ancho de bus (medido en bits).

• La velocidad con que trabajan (medida en hertzios): existen dos tipo de velocidades de los micros hoy en día, velocidad interna la velocidad a la que funciona el micro internamente (200, 333, 450... MHz); y velocidad externa o del bus o también "velocidad del FSB"; la velocidad a la que se comunican el micro y la placa base, para poder abaratar el precio de ésta. Típicamente, 33, 60, 66, 100 ó 133 MHz.

100

3.4 MODELO DE PROGRAMACION

3.4.1 Lenguaje ensamblador El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.

3.4.2 Características • Programar en lenguaje ensamblador es difícil de aprender, entender, leer,

escribir, depurar y mantener, por eso surgió la necesidad de los lenguajes compilados.

• A pesar de perder rendimiento en un proceso de compilación, en la actualidad la mayoría de las computadoras son suficientemente rápidas.

• El lenguaje ensamblador no es portable.

• Programar en lenguaje ensamblador lleva mucho tiempo.

• Los programas hechos en lenguaje ensamblador son generalmente más rápidos. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 100 veces más rápidos que con lenguajes de alto nivel.

• Los programas hechos en lenguaje ensamblador generalmente ocupan menos espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contrapartida en lenguaje de alto nivel.

• Con el lenguaje ensamblador se pueden crear segmentos de código imposibles de formar en un lenguaje de alto nivel.

Un ensamblador crea código objeto traduciendo instrucciones mnemónicas a códigos operativos e interpretando los nombres simbólicos para direcciones de memoria y otras entidades. El uso de referencias simbólicas es una característica básica de los ensambladores, evitando tediosos cálculos y direccionamiento manual después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades para crear macros, a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas. Los ensambladores son por lo general más fáciles de programar que los compiladores de lenguajes de alto nivel, y han estado disponibles desde la década de 1950. Los

IPN-ESIME Zacatenco Electrónica III

101

ensambladores modernos, especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y PA-RISC optimizan las instrucciones para explotar al máximo la eficiencia de segmentación del CPU.

3.4.3 Lenguaje

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instrucción binaria como se expresa en código de máquina:

• Binario: 10110000 01100001 (Hexadecimal: 0xb061)

La representación equivalente en lenguaje ensamblador es más fácil de recordar:

• MOV al, 061h

Esta instrucción significa:

• Asigna el valor hexadecimal 61 (97 decimal) al registro "al".

El mnemónico "mov" es un código de operación u "opcode", elegido por los diseñadores de la colección de instrucciones para abreviar "move" (mover, pero en el sentido de copiar valores de un sitio a otro). El opcode es seguido por una lista de argumentos o parámetros, completando una instrucción de ensamblador típica. La transformación del lenguaje ensamblador en código máquina la realiza un programa ensamblador, y la traducción inversa la puede efectuar un desensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje de máquina. Sin embargo, en algunos casos, un ensamblador puede proveer "pseudo instrucciones" que se expanden en un código de máquina más extenso a fin de proveer la funcionalidad necesaria. Por ejemplo, para un código máquina condicional como "si X mayor o igual que”, un ensamblador puede utilizar una pseudoinstrucción al grupo "haga si menor que”, y "si = 0" sobre el resultado de la condición anterior. Los ensambladores más completos también proveen un rico lenguaje de macros que se utiliza para generar código más complejo y secuencias de datos. Cada arquitectura de computadoras tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje ensamblador. Los ordenadores difieren en el tipo y número de operaciones que soportan; también pueden tener diferente cantidad de registros, y distinta representación de los tipos de datos en memoria. Aunque la mayoría de las computadoras son capaces de cumplir esencialmente las mismas funciones, la forma en que lo hacen difiere y los respectivos lenguajes ensamblador reflejan tal diferencia.

102

Pueden existir múltiples conjuntos de mnemónicos o sintáxis de lenguaje ensamblador para un mismo conjunto de instrucciones, instanciados típicamente en diferentes programas ensamblador. En estos casos, la alternativa más popular es la provista por los fabricantes, y usada en los manuales del programa.

3.4.4 Código máquina

El código máquina, o lenguaje de máquina, está formado por instrucciones sencillas, que -dependiendo de la estructura del procesador- pueden especificar:

• Registros específicos para operaciones aritméticas, direccionamiento o control de funciones.

• Posiciones de memoria específicas (offset). • Modos de direccionamiento usados para interpretar operandos.

Las operaciones más complejas se realizan combinando estas instrucciones sencillas, que pueden ser ejecutadas secuencialmente o mediante instrucciones de control de flujo.

Las operaciones disponibles en la mayoría de los conjuntos de instrucciones incluye:

• Mover o llenar un registro con un valor constante o mover datos de una posición de memoria a un registro o viceversa o escribir y leer datos de dispositivos

• Computar o sumar, restar, multiplicar o dividir los valores de dos registros, colocando

el resultado en uno de ellos o en otro registro o realizar operaciones binarias, incluyendo operaciones lógicas

(AND/OR/XOR/NOT). o comparar valores entre registros (mayor, menor, igual)

• Afectar el flujo del programa o saltar a otra posición en el programa y ejecutar instrucciones allí. o saltar si se cumplen ciertas condiciones (IF). o saltar a otra posición, pero guardar el punto de salida para retornar (CALL,

llamada a subrutinas).

Algunas computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instrucción compleja hace lo mismo que en otras computadoras puede requerir una larga serie de instrucciones, por ejemplo:

• salvar varios registros en la pila de una sola vez • mover grandes bloques de memoria • operaciones aritméticas complejas o de punto flotante (seno, coseno, raíz

cuadrada)

IPN-ESIME Zacatenco Electrónica III

103

El nivel de lenguaje ensamblador tiene aspectos importantes de los niveles de micro arquitectura, en los cuales se encuentra (ISA y sistema operativo) estos dos se utilizan para la traducción en lugar de la interpretación. Algunas características del lenguaje se describen a continuación Los programas que sirven para traducir algún programa para el usuario se llama traductores, el lenguaje en que está escrito el programa original se llama lenguaje fuente, el lenguaje original que sea modificado se llama lenguaje objeto.

Se usa la traducción cuando se cuenta con un procesador (ya sea hardware o un intérprete) para el lenguaje objeto pero no para el lenguaje fuente, Si la traducción se realiza correctamente, la ejecución del programa traducido dará exactamente los mismos resultados que habría dado la ejecución del programa fuente. Hay dos diferencias entre traducción e interpretación, en la traducción no se ejecuta directamente el programa original, en el lenguaje fuente se convierte en un programa equivalente llamado programa objeto o programa binario ejecutable y este funciona solo cuando se ha acabado la traducción.

El código máquina, un simple patrón de bits, es hecho legible reemplazando valores crudos por símbolos denominados mnemónicos. Se inventó para facilitar la tarea de los primeros programadores que hasta ese momento tenían que escribir directamente en código binario. Inicialmente el código de ceros y unos (el programa) debía introducirse en una tarjeta perforada. La posición ocupada por cada punto equivalía a un "1" o a un "0" según hubiera o no una perforación. Lo cual suponía una forma casi idéntica en la que hoy se escriben los datos binaros en soportes tales como los CDs y DVDs.

Mientras que una computadora reconoce la instrucción de máquina IA-32

10110000 01100001

para los programadores de microprocesadores x86 es mucho más fácil reconocer dicha instrucción empleando lenguaje ensamblador :

movb 0x61,%al

(Que significa mover el valor hexadecimal 61 (97 decimal) al registro 'al').

Cada instrucción de la máquina se transforma en una única instrucción en código simbólico.

Pero además, para mejorar la legibilidad del programa, el código simbólico introduce instrucciones adicionales, que no corresponden a ninguna instrucción de la máquina y que proporcionan información. Se llaman "pseudoinstrucciones".

El código simbólico puede parecer de difícil acceso, pero es más fácil de recordar e interpretar que el binario o el hexadecimal.

Los lenguajes simbólicos no resuelven definitivamente el problema de cómo programar un ordenador de la manera más sencilla posible. Para utilizarlos, hay que conocer a

104

fondo el microprocesador, los registros de trabajo de que dispone, la estructura de la memoria, y muchas cosas más.

Además, el lenguaje ensamblador está muy ligado al microprocesador para que sea posible escribir programas independientes de la máquina en que van a ejecutarse. Este código simbólico no puede ser ejecutado directamente por un ordenador, por lo que es preciso traducirlo previamente. Pero la traducción es un proceso mecánico y repetitivo, que se presta a su realización por un programa de ordenador. Los programas que traducen código simbólico al lenguaje de máquina se llaman ensambladores ("assembler", en inglés), porque son capaces de ensamblar el programa traducido a partir de varias piezas, procedimientos o subrutinas a código binario ("1" y "0") que entiende el procesador.

IPN-ESIME Zacatenco Electrónica III

105

UNIDAD IV

PROGRAMACIÓN BÁSICA DE LA UNIDAD MICROCONTROLADORA

106

4.1 MODOS DE DIRECCIONAMIENTO

Se les llama modos de direccionamiento a las distintas formas de combinar los operandos según el acceso que se hace a memoria. Dicho de otra manera, un modo de direccionamiento será una forma de parámetro para las instrucciones. Una instrucción que lleve un parámetro, por lo tanto, usará un modo de direccionamiento, que dependerá de cómo direccionará (accesará) al parámetro; una instrucción de dos parámetros, combinará dos modos de direccionamiento.

4.1.1 ¿Cuántos modos de direccionamiento existen? Hay infinidad de formas de calcular la dirección de un operando. Cada procesador implementa un subconjunto de formas posibles. Tanto los operandos involucrados en el cálculo como las diferentes formas de calcular esta dirección están todos codificados en la instrucción. Cuanto más compleja sea la tarea de cálculo de la dirección efectiva, o más operandos incluya, más compleja será la decodificación y ejecución de la instrucción. DIRECCIONAMIENTO IMPLÍCITO Depende solamente de la instrucción, es decir, la instrucción no lleva parámetros. Particularmente en instrucciones que no accesan memoria, o bien que tienen una forma específica de accesarla. Ejemplos: PUSHF, POPF, NOP MODO REGISTRO Usa solamente registros como operandos. Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del EU del CPU) Ejemplo: MOV AX, BX MODO INMEDIATO Tiene dos operandos: un registro y una constante que se usa por su valor. El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el “fetch” de la instrucción. Por tanto, es rápido aunque no tanto como el modo registro; requiere ir al BIU por el dato. Ejemplo: MOV AH, 9 MODO DIRECTO

IPN-ESIME Zacatenco Electrónica III

107

Uno de los operandos involucra una localidad específica de memoria. El valor constante se tiene que buscar en memoria, en la localidad especificada. Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya “sabe” la localidad, la toma de la instrucción y no la tiene que calcular. Ejemplos: MOV AH, [0000], MOV AH, Variable Estas dos instrucciones serían equivalentes, si Variable está, por ejemplo, en la localidad 0 de memoria. En la forma primitiva del lenguaje de máquina, como el primer ejemplo, se tiene que indicar “mover a AH el contenido (indicado por los corchetes), de la localidad 0 de los datos (lo de los datos es implícito). El lenguaje Ensamblador, sin embargo, nos permite la abstracción del uso de variables, pero como una variable tiene una localidad determinada en memoria, para el procesador funciona igual. La única diferencia consiste en que el programador no tiene que preocuparse por la dirección, ese manejo lo hace automáticamente el Ensamblador. MODO INDIRECTO Se usan los registros SI, DI como apuntadores. El operando indica una localidad de memoria, cuya dirección (sólo la parte desplazamiento) está en SI o DI. Es más lento que los anteriores, pues tiene que “calcular” la localidad Ejemplos: MOV AL, [SI] MOV BL, ES: [SI] Aquí se dice que se usa un “segment override”, donde se indica que en vez de usar el segmento de datos por defecto, se use en su lugar como referencia el segmento extra. MODO INDEXADO DE BASE Formato: [ BX o BP + SI o DI (opcionales) + constante (opcional) ] BX o BP indica una localidad base de la memoria A partir de BX o BP, se puede tener un desplazamiento variable y uno constante. La diferencia es el segmento sobre el que trabajan por defecto: BX por defecto en el segmento de datos BP por defecto en el segmento de pila. Ejemplos:

108

MOV AX, [BX] MOV DX, [BX+2] MOV CX, [BX+DI] MOV DL, [BX+SI+3] TERMINOLOGÍA Existen dos espacios posibles de direcciones de operandos:

• DIRECCIÓN DE REGISTRO: Para aquellos operandos que están almacenados en registro.

• DIRECCIÓN DE MEMORIA: Para aquellos operandos que están almacenados en memoria.

Nos referiremos a los diferentes campos de la instrucción como CI1, CI2, etc. La expresión (CI1) significa el contenido del campo CI1 de la instrucción, o lo que es lo mismo, el número codificado en dicho campo. La expresión (Ri), donde Ri es el nombre de un registro, significa el contenido del registro. La expresión dato! R significa que se carga en el registro R el dato dato. MODO REGISTRO Los registros pueden almacenar operandos. La dirección de registro es diferente a la dirección de memoria.

o Las operaciones deben de obtener sus operados, ya sea de los registros o de la memoria.

o Para acceder a estos operándos se precisa especificar un modo de obtenerlos.

o Los procesadores permiten especificar la posición de un operando de múltiples

maneras.

o Modo de Direccionamiento:

o Dado uno o varios campos de la instrucción, calcular la dirección efectiva de un operando.

o La Dirección Efectiva no tiene por que ser una dirección en memoria.

4.1.2 Resumen de modos de direccionamiento

• REGISTRO: Operando en registro de = (ci). • REGISTRO INDIRECTO: Operando en dirección de memoria en registro de = ((ci)).

IPN-ESIME Zacatenco Electrónica III

109

• AUTOINCREMENTO: Como el Registro indirecto, pero el registro se incrementa

después de ser usado de = ((ci)); (Ri)+ {1, 2, 4} ! Ri, donde Ri es el registro codificado en el campo ci.

• AUTODECREMENTO: Como el Registro indirecto, pero el registro se decremento

antes de ser usado. de = (Ri) − {1, 2, 4}; ((ci)) − {1, 2, 4} ! Ri, donde Ri es el registro codificado en el campo ci.

• ABSOLUTO: La dirección está codificada en la propia instrucción de = (ci). • MODO BASE + INDICE ESCALADO + DESPLAMIENTO: La dirección se puede

codificar hasta con cuatro operandos, permitiéndose todas las combinaciones (´ındice y escala se tratan como un parámetro) de = (Registro Base) + [(Registro Índice) _ Escala] + Desplazamiento

110

4.2 HERRAMIENTAS DE PROGRAMACIÓN Entre otras herramientas de programación encontramos librerías y componentes, dados por algunos lenguajes de programación como son el C++ y delphi. Otras herramientas de programación son los lenguajes de programación, que nos permiten crear rutinas, programas y utilitarios. Entre algunas de estas herramientas de programación tenemos:

o BASIC Y PASCAL: Que son herramientas de programación, idóneas para la inicialización de los programadores.

o C y C++: Que sirven para la programación de sistemas. o COBOL: Que es una herramienta de programación orientada hacia sistemas de

gestión empresarial como nominas y contabilidad. o FORTRAN: Que son lenguajes específicos para cálculos matemáticos y/o

numéricos.

Herramientas de programación para ambientes gráficos como son Visual Basic, Delphi y Visual C. Html y Java, que permiten la creación de paginas Web para Internet. ALGORITMO

o Método que permite la resolución de un problema en forma secuencial y ordenada.

o Conjunto de procesos debidamente ordenados y concatenados que permite resolver un problema de computadora.

o Conjunto de técnicas y procedimientos debidamente organizados que posibilita la representación ordenada de los procesos que se siguen para resolver un problema.

LENGUAJES DE PROGRAMACIÓN

IPN-ESIME Zacatenco Electrónica III

111

TRADUCTORES DE LENGUAJE

DATOS

CLASIFICACIÓN

INTERPRETES COMPILADORES

TIPOS

ALTO NIVEL

BAJO NIVEL

LENGUAJE ENSAMBLADOR

LENGUAJE MÁQUINA

112

EXPRESIONES

ARITMÉTICAS

Operador Significado Tipo de op Resultado _,**,^ Potencia Entero o real Entero o real

+ Suma Entero o real Entero o real - Resta Entero o real Entero o real * Multiplicación Entero o real Entero o real / División Real Real

DIV División Entera’ Entero Entero MOD División Entera Entero Entero

EXPRESIONES

BOOLEANAS – DE RELACIÓN

OPERADOR RESULTADO > Mayor que < Menor que = Igual que ≥ Mayor o igual que ≤ Menor o igual que

<> Diferente EXPRESIONES

BOOLEANAS – LÓGICAS

NUMÉRICOS

CADENA

ENTEROS

REALES

LÓGICOS

NUMÉRICOS

ESPECIALES

FALSO

ALFABÉTICOS

VERDADERO

IPN-ESIME Zacatenco Electrónica III

113

Operador Lógico Expresión Lógica Significado no (not) no p (not p) Negación de p y (and) p y q (p and q) Conjunción de p y q o (or) p o q (p or q) Disyunción de p o q

FASES DE RESOLUCIÓN DE PROBLEMAS

RESOLUCIÓN DE PROBLEMAS

RESOLUCIÓN DEL PROBLEMA POR COMPUTADORA

DISEÑO DEL ALGORITMO

ANALISIS DEL PROBLEMA

114

FASE DE ANÁLISIS DEL PROBLEMA

FASE DE DISEÑO DEL ALGORITMO

DISEÑO DEL ALGORITMO

HERRAMIENTAS DE

PROGRAMACIÓN

REFINAMIENTO POR PASOS

DISEÑO DESCENDENT

E

ANALISIS DEL PROBLEMA

ESPECIFICACIONES DE

SALIDA

ESPECIFICACIONES DE

ENTRADA

DEFINICIÓN DEL

PROBLEMA

IPN-ESIME Zacatenco Electrónica III

115

FASE DE RESOLUCIÓN DEL PROBLEMA MEDIANTE LA COMPUTADORA

HERRAMIENTAS DE PROGRAMACIÓN

4.2.1 Diagrama de flujo Técnica de representación de algoritmos que utiliza símbolos gráficos para representar cada uno de los procesos de la resolución de un problema, las mismas que están unidas por flechas denominadas líneas de flujo. Los diagramas utilizados representan un determinado proceso y tienen un símbolo definido para cada caso.

4.2.2 Pseudocódigo

DIAGRAMA DE FLUJO

DIAGRAMA N - S

PSEUDOCÓDIGO

RESOLUCIÓN DEL PROBLEMA POR COMPUTADORA

COMPROBACIÓN DEL PROGRAMA

EJECUCIÓN DEL PROGRAMA

CODIFICACIÓN DEL

PROGRAMA

116

Es un lenguaje de especificación de algoritmos, a partir del cual se traduce directamente a un lenguaje de programación cada uno de las instrucciones establecidas. Se le considera como un primer borrador, porque el programador se puede concentrar en la lógica y las estructuras de control no siendo necesarias las reglas de sintaxis del lenguaje a utilizar.

4.2.3 Diagrama N-S Conocido como diagrama de Chapín, su representación es similar a un diagrama de flujo en el que se omiten las líneas de flujo y donde cada proceso es representado por cajas sucesivas en las cuales se pueden escribir diferentes acciones.

IPN-ESIME Zacatenco Electrónica III

117

4.3 INSTRUCCIONES

4.3.1 Desarrollo Un programa está constituido por un conjunto ordenado de instrucciones, que constituyen el cuerpo principal del programa y uno o más bloques de datos iniciales necesarios para una correcta ejecución. El proceso básico de ejecución de un programa requiere por parte del microprocesador, la repetición de los siguientes pasos:

o LEER DE LA MEMORIA UNA INSTRUCCIÓN DEL PROGRAMA. o INTERPRETAR LA INSTRUCCIÓN LEÍDA. o EJECUTAR DICHA INSTRUCCIÓN.

Debemos considerar además que los microprocesadores trabajan solamente con lenguaje de bajo nivel, es decir, trabajan con lenguaje máquina. Cada microprocesador o familia de microprocesadores, posee su propio lenguaje máquina que determina las capacidades propias de cada familia. Las instrucciones máquina son almacenadas en la memoria en forma de bytes, es decir, en forma de unos y ceros empleando por tanto el sistema binario de numeración. Sin embargo este sistema es muy complejo para trabajar directamente en él, por lo que se emplean otros sistemas como el hexadecimal, BCD, etc. para la representación de datos. Para construir los programas, normalmente se emplean lenguajes de alto nivel, y luego se transforman los programas así escritos a lenguaje máquina asequible para el microprocesador. No obstante en nuestro caso emplearemos un lenguaje de bajo nivel (ensamblador) que trabaja con abreviaturas alfabéticas denominadas mnemónicos que constituyen las operaciones e instrucciones que ejecutará el microprocesador. Durante el desarrollo de este tema veremos las principales bases numéricas de representación, así como los diferentes tipos de instrucciones, modos de direccionamiento y se realizará un estudio de todo el repertorio de instrucciones propio del microprocesador 8085. Es conveniente leer todas y cada una de las instrucciones para ir familiarizándose con ellas y entender su modo de funcionamiento. Todo lo tratado aquí, son aspectos básicos de la programación que nos permiten crear programas ejecutables en el sistema electrónico presentado en esta serie de artículos.

4.3.2 Bases numéricas de representación Ya se ha comentado que es el lenguaje máquina el único que el microprocesador es capaz de tratar, es decir, solamente trabaja con unos y ceros. Este lenguaje resulta inapropiado para las personas, por lo que se desarrollan otros sistemas de representación más sencillos o más cómodos de manejar. En primer lugar debemos fijarnos en que el microprocesador trabaja con bloques de información normalizados. Podemos destacar en este terreno:

118

EL BIT: Como unidad de información más elemental que adopta dos únicos estados, el uno o el cero. EL OCTETO O BYTE: Constituido por una cadena de ocho bits. LA PALABRA: Es el tamaño de información que el microprocesador puede manejar en paralelo. En función de la potencialidad del microprocesador tendremos palabras de 8 bits, 16 bits, 32 bits, etc. Estableciendo ya el tipo de información con el que se va a trabajar, pasamos ahora a ver las bases numéricas o de representación que emplearemos durante la programación. Las más comunes son: SISTEMA DECIMAL: Es el sistema que habitualmente empleamos en nuestra vida diaria, y por tanto será el sistema que se empleará normalmente para introducir datos y sacar datos del sistema. Lógicamente este sistema de representación numérico dispone de diez dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9). SISTEMA BINARIO: Solo emplea dos unidades básicas de representación (0 y 1). Para encontrar la expresión decimal de cualquier número binario, se procede de forma similar al sistema decimal, pero empleando el 2 como base del sistema. Por ejemplo:

Para realizar el proceso contrario, es decir para transformar un número decimal a binario, puede emplearse un método muy sencillo que consiste en dividir sucesivamente dicho número por la base binaria 2. El número binario se construye tomando el último cociente y poniendo a continuación de forma consecutiva los restos obtenidos en todas las divisiones de la última a la primera. SISTEMA DECIMAL CODIFICADO EN BINARIO (BCD): Se trata de un caso particular del binario que emplea cuatro bits para representar los números decimales del 0 al 9. Por tanto para transformar un número decimal, no tendremos más que tomar cada una de sus cifras y transformarla a binario empleando 4 bits. Por ejemplo: 279 = 0010 0111 1001 SISTEMA EXCESO A TRES: Toma como referencia el sistema BCD, sin más que añadir a cada digito el valor 3, es decir sumar:

SISTEMA HEXADECIMAL: Es uno de los más empleados en programación. Sus diez primeros dígitos se corresponden con los del sistema decimal y los seis restantes son las seis primeras letras mayúsculas del alfabeto (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). La base de este sistema es el 16 y todas sus cifras pueden ser expresadas con

IPN-ESIME Zacatenco Electrónica III

119

cuatro bits. Para convertir un número binario a hexadecimal, agruparemos sus dígitos o bits de cuatro en cuatro y transformaremos cada uno de ellos de forma individual, obteniendo así la representación hexadecimal. Por ejemplo:

SISTEMA DE REPRESENTACION ASCII: Se trata de un sistema de representación de datos empleado para facilitar intercambios de información. Es uno de los sistemas más empleados en la actualidad (junto al sistema EBCDIC). La codificación se lleva a cabo empleando una palabra de 8 bits, es decir, un octeto para cada carácter de información. Para encontrar el valor de un carácter numérico de una representación ASCII, es suficiente con restar el valor 48 y al contrario para encontrar la representación ASCII de un digito decimal habrá que sumar 48.

LOS TIPOS DE INSTRUCCIONES: Después de haber tratado de forma superficial los sistemas de representación, vamos a ver los distintos tipos de instrucciones que utiliza un microprocesador. Básicamente puede decirse que el bloque de instrucciones debe ser completo y eficaz de modo que podamos realizar todos los cálculos necesarios de forma más rápida y precisa posible. Una de las principales características de todo microprocesador es disponer de un buen conjunto de instrucciones que le den la mayor versatilidad posible. Se establecen los siguientes grupos, tipos o conjuntos de instrucciones: • ARITMETICAS: Son las instrucciones que realizan operaciones de tipo aritmético

como sumas, restas, incrementos, decrementos, etc. Todas las operaciones de este tipo afectan al registro de estado, es decir a los flags.

• MOVIMIENTO DE DATOS: Este tipo de instrucciones de movimiento o transferencia de datos, permiten realizar una copia del contenido de un registro o dirección de memoria (origen), en otro registro o dirección de memoria (destino), sin alterar el contenido del origen.

• INTRUCCIONES LOGICAS: Realizan operaciones lógicas entre los operandos. Afectan a los flags según sea el caso y las operaciones se realizan bit a bit entre los datos.

• INSTRUCCIONES DE COMPARACION: Son operaciones de restar o operaciones XOR entre dos operandos. Afectan a los flags pero no se almacena el resultado.

• INSTRUCCIONES DE SALTO: Son instrucciones de modificación de secuencia que alteran la ejecución normal del programa, cargando el contador de programa con la

120

nueva dirección en la que deseamos continúe ejecutándose el programa. Los saltos o bifurcaciones pueden ser:

o CONDICIONALES: Cuando son controlados por el estado de un indicador o flag, y basándose en dicho estado se decide si se salta o no.

o INCONDICIONALES: Cuando modifican el contador de programa sin condición previa. Dentro de cada uno de estos tipos, podemos encontrar además la particularidad de que al efectuar los saltos se realicen con posibilidad de retorno o no.

• INSTRUCCIONES DE ENTRADA/SALIDA: Son en realidad instrucciones de transferencia, pero no entre registros o posiciones de memoria, sino con elementos periféricos que permiten la comunicación del microprocesador con el exterior.

• INSTRUCCIONES DE CONTROL: Sirven para actuar internamente sobre el microprocesador, provocando detenciones en la ejecución del programa, etc.

• INSTRUCCIONES DE BIT: Trabajan o tratan bits independientes. • INSTRUCCIONES DE DESPLAZAMIENTO: Desplazan o rotan hacia la izquierda o

hacia la derecha los bits de un registro (acumulador).

4.3.3 Instrucciones, modos de direccionamiento y Code Warrior

4.3.3.1 Los modos de direccionamiento Los modos de direccionamiento son aquellos procedimientos empleados por el microprocesador para poder acceder a determinados operandos, instrucciones, posiciones de memoria, registros de entrada/salida, etc. Por tanto el objeto del direccionamiento es un valor o dato que se encuentra en un lugar de la memoria, en algún registro o en la propia instrucción. Los diferentes modos de direccionamiento que pueda emplear un microprocesador le proporcionan un determinado nivel de potencialidad, permitiéndole manejar datos y realizar operaciones con mayor facilidad. En general podemos diferenciar los siguientes tipos o modos de direccionamiento:

• DIRECCIONAMIENTO INMEDIATO: En este caso el objeto (un operando) se encuentra incluido en la instrucción, es decir, a continuación del código de la instrucción se añade el operando propiamente dicho. Las instrucciones que emplean este direccionamiento pueden ser de dos o tres bytes y son instrucciones de ejecución rápida y sencilla.

• DIRECCIONAMIENTO IMPLICITO: Las instrucciones que emplean este modo de direccionamiento tienen un solo byte y es la propia instrucción la que indica qué registro o dirección de memoria se va a utilizar en la operación.

• DIRECCIONAMIENTO ABSOLUTO: En este caso las instrucciones incluyen la dirección de memoria donde se encuentra el dato con el que se va a operar. En este tipo de direccionamiento pueden darse tres supuestos:

IPN-ESIME Zacatenco Electrónica III

121

• La instrucción apunta a un registro que contiene la información deseada (direccionamiento también llamado de registro).

• La instrucción contiene la dirección completa en la que se encuentra el dato, empleando para ello tres bytes.

• Cuando la instrucción se refiere solo a una parte de la memoria (página). En este caso el byte más alto lo suministra el contador de programa y el byte más bajo se expresa a continuación del código de instrucción, por tanto solo se emplean dos bytes (Este direccionamiento también se llama de página base).

o DIRECCIONAMIENTO DIRECTO RELATIVO: La instrucción en este caso contiene un valor determinado al que podemos llamar V. La dirección total se calcula sumando a V el valor que esté almacenado en un registro alq ue haga referencia la instrucción. El valor de V puede ser tanto positivo como negativo.

o DIRECCIONAMIENTO INDIRECTO: La instrucción contiene una dirección a la que llamaremos D1. El contenido de D1 no es el objeto directo de nuestra instrucción, sino que contiene otra dirección que llamaremos D2. Esta nueva dirección D2 es la que contiene el dato que sí es objeto de la instrucción. Expresados ya los modos de direccionamiento con carácter general, pasamos ahora a ver los modos de direccionamiento que utiliza el microprocesador 8085 en particular, que son los cuatro siguientes:

o DIRECCIONAMIENTO DIRECTO ABSOLUTO: La instrucción contiene la dirección exacta y completa donde se encuentra el dato. Por ejemplo:

o LHLD A716H

o DIRECCIONAMIENTO POR REGISTRO: La instrucción lleva el registro en el que está el dato que va a ser tratado. Como por ejemplo:

o MOV A, B o MOV B, C

o DIRECCIONAMIENTO POR REGISTRO INDIRECTO: En la instrucción se

especifica un registro cuyo contenido apunta a una dirección de memoria en la que se encuentra el dato. Por ejemplo:

o MOV A, M o M: Es una referencia simbólica a una dirección apuntada o señalada por el par

de registros HL.

o DIRECCIONAMIENTO INMEDIATO: La instrucción contiene el dato con el que se desea operar, pudiendo ser el dato de uno o dos bytes:

122

LXI H, A0B7H ADI 3AH

D A B DIRECCION

IX

IY

PC

SP

CCR INSTRUCCIONES BASICAS: DECIMAL HEXADECIMAL

LDDAA # 10 INMEDIATO A

LDAB # $ 10 HEXADECIMAL INMEDIATO B

CLRA INHERENTE O IMPLICITO A

LDAA # %0001000 IMEDIATO A

ABA INHERENTE O EXPLICITO A

STAA $0800 EXTENDIDO 0800 SWI

IPN-ESIME Zacatenco Electrónica III

123

4.4 EJEMPLOS DE PROGRAMAS BÁSICOS

SUMA

LDAA $0800 ADDA $0801 STAA $0802 SWI

RESTA

LDAA $0800 SUBA $0801 STAA $0802 SWI

MULTIPLICACIÓN

LDAA $0800 LDAB $0801 MUL STAA $0802 STAB $0803 SWI

DIVISION

LDAA $0800 LDAB $0801 LDX $0802 IDIV STX $0804 STD $0806 SWI

RAIZ CUADRADA

MOVB #1,$0801 CLR $0802 LDAA $0800

REPITE: CMPA $0801 BMI FIN SUBA $0801 INC $0802 INC $0801 INC $0801 BRA REPITE

FIN: STAA $0803 SWI

124

RETARDO

LDAA #$03

VAGO: DECA BNE VAGO SWI

NUMERO PAR O IMPAR

LDAA $0800 ANDA #1 BEQ PAR MOVB #1,0801 BRA FIN

PAR: CLR $0801 FIN: SWI

SERIE DE FIBONACCI LDAB $0800 BEQ FIN LDX #$0804 MOVB #1,$0801 MOVB #1,$0802

REPITE: LDAA $0801 STAA 0,X ADDA $0802 MOVB $0802,$0801 STAA $0802 NX DECB BNE REPITE

FIN: SWI

METODO DE LA BURBUJA

LDX #$0808 LDY #$0809 MOVB #$9,$0800

DNUEVO: MOVB $0800,$0801 REPITE: LDAA X

LDAB Y CBA BMI SALTA INY

IPN-ESIME Zacatenco Electrónica III

125

DEC $0801 BNE REPITE BEQ SIGUE

SALTA: MOVB Y,X STAA Y INY DEC $0801 BNE REPITE BEQ SIGUE

SIGUE: INX LEAY 1,X DEC $0800 BNE DNUEVO SWI

ENTRADA DE UN DATO

CLR COPCTL CLR DDRB

OTRO: LDAA PORTB BRA OTRO SWI

SALIDA DE UN DATO

CLR CPOCTL MOVB #$FF, DDRB LDAA #$55 STAA PORTB SWI

126

UNIDAD V

PROGRAMACIÓN DE PERIFÉRICOS

IPN-ESIME Zacatenco Electrónica III

127

5.1 PUERTOS DIGITALES

La forma de realizar la transferencia hace referencia al número de señales binarias utilizadas para transferir la información. Según la forma de realizar la transferencia los circuitos de interfaz se pueden clasificar en dos grandes grupos:

• Transferencia de información en paralelo Como su nombre indica se caracteriza por recibir la información en paralelo (periféricos de salida) o proporcionarla en paralelo (periféricos de entrada) a través del bus de datos del procesador. Se utiliza cuando el periférico está situado cerca del procesador y se quier hacer la transferencia a la máxima velocidad posible. En este caso el circuito de interfaz recibe el nombre de puerto paralelo (Parallel port).

• Transferencia de información en serie Como su nombre indica se caracteriza porque la información se transfiere a través de un único canal de comunicación. Para ello el interfaz debe realizar la tarea de comunicar en serie el procesador con el periférico y por ello se le suele denominar puerto serie (Serial port). Se utiliza cuando el periférico está situado a una distancia elevada del procesador y también cuando se quiere simplificar la conexión entre el periférico y el procesador de lo que es un ejemplo la conexión o bus USB. Tanto los puertos paralelo como los puertos serie básicos poseen un esquema de bloques como el representado en la siguiente figura, y se divide en dos partes:

Figura 5.1 Esquema de bloques de circuito de interfaz entre un procesador y un periférico

• Un circuito de selección de periférico, que detecta la combinación binaria que lo

identifica. Mediante este circuito el procesador decide con cuál de las diferentes interfaces conectadas al bus de datos ejecuta la transferencia de información. La salida del circuito de selección solo se activa cuando a su entrada se aplica la

128

combinación binaria correspondiente al periférico. Se puede realizar de diferentes formas, una de las cuales es la representada en la figura siguiente que consiste en un decodificador que genera la señal de transferencia de los diferentes circuitos de interfaz conectados al procesador. La señal de control de la transferencia o impulso de disparo (trigger), generada por este último se aplica a la entrada de inhibición G del decodificador para que solo aparezca en la salida correspondiente a la dirección aplicada a sus entradas.

Figura 5.2 Esquema de bloques del interfaz de la figura 1 en el que el circuito de selección esta implementado con un decodificador

• Un circuito de interfaz, propiamente dicho, que ejecuta las acciones adecuadas para que se lleve a cabo la transferencia así como el proceso necesario para que la interfaz realice un conjunto de tareas que minimizan el tiempo que el procesador debe dedicar al acoplamiento con el periférico. La complejidad de este circuito depende del tipo de periférico y del tiempo de que dispone el procesador para realizar tareas de acoplamiento, pero hay unos recursos mínimos, que todos los interfaces deben tener, que se conocen bajo la denominación antes citada de puertos paralelo y serie se describen posteriormente.

5.1.2 Puertos paralelo

Los puertos paralelo pueden ser de entrada (input port) o de salida (output port). Un puerto de entrada en paralelo es un circuito electrónico que contiene los elementos necesarios para que las informaciones generadas por un periférico de entrada (interruptores, teclados, etc.) se transfieren en paralelo a la memoria del procesador digital. Un puerto de salida en paralelo es un circuito electrónico que contiene los elementos necesarios para que los resultados del proceso llevado a cabo por el procesador digital se transfieren en paralelo a los periféricos de salida (visualizadores, impresoras, etc). En la figura 5.3 se representa el hardware mínimo de un puerto de salida en paralelo. El circuito de selección de periférico esta realizado mediante un decodificador que genera las señales de transferencia de los distintos circuitos de interfaz conectados al

IPN-ESIME Zacatenco Electrónica III

129

procesador. EL circuito de interfaz mínimo es un registro (buffer) de entrada y salida en paralelo cuya entrada C de control o disparo por nivel (match) se conecta a la salida del decodificador asignada al periférico. Este circuito memoriza temporalmente la información que se transfiere al periférico. En la figura 5.4 se representa un ejemplo de aplicación de un puerto de salida en paralelo que conecta un procesador digital a un visualizador (display) estático.

Figura 5.3 Esquema de bloques de un puerto de salida en paralelo

130

Figura 5.4 Ejemplo de aplicación de un puerto de salida en paralelo que conecta un procesador

IPN-ESIME Zacatenco Electrónica III

131

Figura 5.5 Ejemplo de aplicación de un puerto de entrada en paralelo que conecta un procesador digital y un conjunto

de interruptores

5.1.3 Puertos serie Un puerto serie es una interfaz que realiza la tarea de comunicar en serie el procesador y el periférico a través de un canal d comunicaciones. En la figura 6 se representa el esquema de bloques en el que se puede observar que un puerto serie combina un puerto paralelo con un procesador de comunicaciones que realiza dos tareas principales:

• Convierte la información del formato paralelo al serie.

• A la información se le añade una información adicional para establecer un protocolo de comunicación de acuerdo con alguna de las normas establecidas, como ejemplo los buses de campo y CAN o las normas de comunicación serie RS-232 (UART) y USB, a fin de asegurar que otro procesador se comunicaciones situado próximo al periférico es capaz de interpretarla.

La interfaz entre el RS-232 y el microprocesador generalmente se realiza mediante el integrado 82C50. El RS-232 original tenía un conector tipo D de 25 pines, sin embargo la mayoría de dichos pines no se utilizaban, por lo que IBM incorporó desde su PS/2 un conector más pequeño de solamente 9 pines que es el que actualmente se utiliza. En Europa la norma RS-422 de origen alemán es también un estándar muy usado en el ámbito industrial.

132

Uno de los defectos de los puertos serie iniciales era su lentitud en comparación con los puertos paralelos, sin embargo, con el paso del tiempo, están apareciendo multitud de puertos serie con una alta velocidad que los hace muy interesantes ya que tienen la ventaja de un menor cableado y solucionan el problema de la velocidad con un mayor apantallamiento; son más baratos ya que usan la técnica del par trenzado; por ello, el puerto RS-232 e incluso multitud de puertos paralelos están siendo reemplazados por nuevos puertos serie como el USB, el Firewire o el Serial ATA. Los puertos serie sirven para comunicar al ordenador con la impresora, el ratón o el módem; Sin embargo, específicamente, el puerto USB sirve para todo tipo de periféricos, desde ratones, discos duros externos, hasta conexión bluetooth. Los puertos SATA (Serial ATA): tienen la misma función que los IDE, (a éstos se conecta, la disquetera, el disco duro, lector/grabador de CD y DVD) pero los SATA cuentan con mayor velocidad. Un puerto de red puede ser puerto serie o puerto paralelo.

Figura 5.6 Esquema de bloques de un puerto serie de un procesador digital

Figura 5.7 Acoplamiento en paralelo por paro o por consulta de un periférico a un procesador

IPN-ESIME Zacatenco Electrónica III

133

Figura 5.8 a) La transmisión paralela utiliza una línea por bit, y todos se transmiten en forma simultánea. b) la transmisión serial emplea solo una línea de señal, cada bit se transmite en forma consecutiva (uno por uno).

5.1.4 PCI

Puertos PCI (Peripheral Component Interconnect): son ranuras de expansión en las que se puede conectar tarjetas de sonido, de vídeo, de red etc. El slot PCI se sigue usando hoy en día y podemos encontrar bastantes componentes (la mayoría) en el formato PCI. Dentro de los slots PCI está el PCI-Express. Los componentes que suelen estar disponibles en este tipo de slot son:

1. Capturadoras de televisión

2. Controladoras RAID

134

3. Tarjetas de red, inalámbricas o no.

4. Tarjetas de sonido

5.1.5 PCI-Express PCI-Express (anteriormente conocido por las siglas 3GIO, 3rd Generation I/O) es un nuevo desarrollo del bus PCI que usa los conceptos de programación y los estándares de comunicación existentes, pero se basa en un sistema de comunicación serie mucho más rápido que PCI y AGP. Este sistema es apoyado principalmente por Intel, que empezó a desarrollar el estándar con nombre de proyecto Arapahoe después de retirarse del sistema Infiniband. Tiene velocidad de 16x (8GB/s) y es utilizado en tarjetas gráficas. Además de todo esto el 501 se pueden poner las tarjetas graficas.

5.1.6 Puertos de memoria A estos puertos se conectan las tarjetas de memoria RAM. Los puertos de memoria, son aquellos puertos en donde se puede agrandar o extender la memoria de la computadora. Existen diversas capacidades de memorias RAM, por ejemplo, aquellas de 256MB (Megabytes) o algunas de hasta 4GB (Gigabytes), entre más grande, más almacenamiento tiene la computadora. El almacenamiento de la memoria RAM, es para que el sistema tenga rápidamente datos solicitados o programas. la RAM no se debe confundir con el disco duro, el disco duro una vez apagada la computadora no pierde los datos, mientras que la RAM al apagar la computadora éstos se borran completamente; la RAM fue diseñada por que el acceso a ella es más rápido que el disco duro lo que hace que la computadora sea más rápida pudiendo ejecutar una mayor cantidad de procesos.

5.1.7 Puerto de rayos infrarrojos En este tipo de puertos, puede haber de alta velocidad, los infrarrojos sirven para conectarse con otros dispositivos que cuenten con infrarrojos sin la necesidad de cables, los infrarrojos son como el Bluetooth. La principal diferencia es que la comunicación de Infrarrojos usa como medio la luz, en cambio el Bluetooth utiliza ondas de radio frecuencia. Especificaciones: para pasar la información por medio de infrarrojos se necesita colocar los infrarrojos pegados uno con el otro y así mantenerlos hasta que todos los datos se pasen de un puerto infrarrojo al otro, esto lleva un poco más de tiempo que si lo hiciéramos con el bluetooth. Muchas computadoras cuentan con un puerto de rayos infrarrojos de alta velocidad, que agiliza que los archivos, datos, imágenes, etc. se pasen más rápido.

5.1.8 Puerto USB

IPN-ESIME Zacatenco Electrónica III

135

Permite conectar hasta 127 dispositivos y ya es un estándar en los ordenadores de última generación, que incluyen al menos dos puertos USB 1.1, o puertos USB 2.0 en los más modernos. Es totalmente Plug & Play, es decir, con sólo conectar el dispositivo y en caliente (con el ordenador encendido), el dispositivo es reconocido e instalado de manera inmediata. Sólo es necesario que el Sistema Operativo lleve incluido el correspondiente controlador o driver, hecho ya posible para la mayoría de ellos sobre todo si se dispone de un Sistema Operativo como por ejemplo Windows XP, de lo contrario el driver le será solicitado al usuario. Posee una alta velocidad en comparación con otro tipo de puertos, USB 1.1 alcanza los 12 Mb/s y hasta los 480 Mb/s (60 MB/s) para USB 2.0, mientras un puerto serie o paralelo tiene una velocidad de transferencia inferior a 1 Mb/s. El puerto USB 2.0 es compatible con los dispositivos USB 1.1 El cable USB permite también alimentar dispositivos externos a través de él, el consumo máximo de este controlador es de 5 voltios. Los dispositivos se pueden dividir en dispositivos de bajo consumo (hasta 100 mA) y dispositivos de alto consumo (hasta 500 mA) para dispositivos de más de 500 mA será necesario alimentación externa. Debemos tener en cuenta también que si utilizamos un concentrador y éste está alimentado, no será necesario realizar consumo del bus. Hay que tener en cuenta que la longitud del cable no debe superar los 5 m y que éste debe cumplir las especificaciones del Standard USB iguales para la 1.1 y la 2.0

5.1.9 Puertos Físicos Los puertos físicos, son aquellos como el puerto "paralelo" de una computadora. En este tipo de puertos, se puede llegar a conectar: un monitor, la impresora, el escaner, etc. Ya que estos artículos cuentan con un puerto paralelo para la computadora, con el cual se puede conectar y empezar su labor. En si el puerto paralelo es una conexión más para la impresora.

5.1.10 Universal Serial Bus El Universal Serial Bus (bus universal en serie) o Conductor Universal en Serie , abreviado comúnmente USB, es un puerto que sirve para conectar periféricos a una computadora. Fue creado en 1996 por siete empresas: IBM, Intel, Northern Telecom, Compaq, Microsoft, Digital Equipment Corporation y NEC. El estándar incluye la transmisión de energía eléctrica al dispositivo conectado. Algunos dispositivos requieren una potencia mínima, así que se pueden conectar varios sin necesitar fuentes de alimentación extra. La gran mayoría de los concentradores incluyen fuentes de alimentación que brindan energía a los dispositivos conectados a ellos, pero algunos dispositivos consumen tanta energía que necesitan su propia fuente de alimentación. Los concentradores con fuente de alimentación pueden proporcionarle corriente eléctrica a otros dispositivos sin quitarle corriente al resto de la conexión (dentro de ciertos límites).

136

El diseño del USB tenía en mente eliminar la necesidad de adquirir tarjetas separadas para poner en los puertos bus ISA o PCI, y mejorar las capacidades plug-and-play permitiendo a esos dispositivos ser conectados o desconectados al sistema sin necesidad de reiniciar. Cuando se conecta un nuevo dispositivo, el servidor lo enumera y agrega el software necesario para que pueda funcionar. El USB puede conectar los periféricos como ratones, teclados, escáneres, cámaras digitales, teléfonos móviles, reproductores multimedia, impresoras, discos duros externos, tarjetas de sonido, sistemas de adquisición de datos y componentes de red. Para dispositivos multimedia como escáneres y cámaras digitales, el USB se ha convertido en el método estándar de conexión. Para impresoras, el USB ha crecido tanto en popularidad que ha desplazado a un segundo plano a los puertos paralelos porque el USB hace mucho más sencillo el poder agregar más de una impresora a una computadora personal. En el caso de los discos duros, es poco probable que el USB reemplace completamente a los buses (el ATA (IDE) y el SCSI), pues el USB tiene un rendimiento más lento que esos otros estándares. Sin embargo, el USB tiene una importante ventaja en su habilidad de poder instalar y desinstalar dispositivos sin tener que abrir el sistema, lo cual es útil para dispositivos de almacenamiento externo. Hoy en día, una gran parte de los fabricantes ofrece dispositivos USB portátiles que ofrecen un rendimiento casi indistinguible en comparación con los ATA (IDE). Por el contrario, el nuevo estándar Serial ATA permite tasas de transferencia de hasta aproximadamente 150/300 MB por segundo, y existe también la posibilidad de extracción en caliente e incluso una especificación para discos externos llamada eSATA.

IPN-ESIME Zacatenco Electrónica III

137

5.1.11 Puertos de entrada/salida

Introducción Los puertos del microcontrolador son el punto de comunicación entre el microcontrolador y el mundo exterior; a través de ellos se puede efectuar procesos de control electrónico sobre dispositivos de potencia, instrumentación, telemetría, etc. Además, permiten también recibir señales del mundo exterior como, por ejemplo, señales provenientes de transductores, amplificadores, transmisores, actuadores, etc. En otras palabras, los puertos del microcontrolador se pueden ver como los brazos con los que interactúa el microcontrolador con otros sistemas electrónicos. En el microcontrolador, 23 pines pueden ser configurados de manera bidireccional (I/O) a través de tres puertos paralelos. Todos los pines pueden ser configurados como entrada o salida. Se debe tener en cuenta que en la gran mayoría de familias de microcontroladores los puertos de entrada/ salida no solamente cumplen funciones de envío y recepción de señales digitales, sino que además comparten recursos internos con el microcontrolador; es decir, que si por un pin en especial se pueden manipular datos digitales ("1" y "O"), según la estructura interna, también podría cumplir, por ejemplo, funciones de conversión A/D o funciones de PWM, o funciones de comparación analógica, entre otras funciones adicionales propias de cada familia de microcontroladores a utilizar. Estos módulos alternos o compartidos presentes en el microcontrolador se pueden conocer para cualquier familia de microcontroladores en el manual de referencia propio de cada uno; para el caso del JK1/JK3/JL3, se puede observar en el capítulo 2 del presente libro. Nota: Antes de comenzar con la descripción de cada uno de los puertos existentes en la familia JK1/JK3/JL3, se recomienda el montaje del siguiente circuito, el cual no solamente le ayudará a la verificación de los ejercicios resueltos sino que además podrá servirle de guía para desarrollar otros programas sencillos y visualizar posibles resultados que al procesarse internamente en el microcontrolador sería imposible visualizarlos a simple vista, pero con la ayuda de este circuito podrá visualizar el resultado, por ejemplo, de una operación matemática, lógica o el resultado de algún proceso en particular, gracias al banco de LEDS presentes en el esquema. A continuación se ilustra cada uno de los registros correspondientes al uso y configuración de cada uno de los puertos existentes en esta familia especial de microcontroladores.

138

REGISTRO PORT A (PTA) Dirección $0000

Bit 7 Bit 6 Bit5 Bit 4 Bit3 Bit 2 Bit1 BitO

Leer 0 Escribir PTA 6 PTA 5 PTA 4 PTA 3 PTA 2 PTA1 PTAO

Este registro posee sus 8 bits, de los cuales sólo 7 pueden ser configurados como pines de entrada o salida de manera independiente a través del registro DDRA. Además de permitir manejar independientemente las salidas de cada uno de sus bits, tiene la función especial de interrupción por teclado, efectuándose esta configuración mediante el registro KBI, lo cual se explicará en detalle más adelante. Una de las principales características de este puerto es que cada pin del puerto A posee configuración por software de las resistencias de Pull-Up a través del registro PTAPUE. Estas resistencias tienen un valor de 30 k.

Fig. 5.9 Circuito recomendado para la verificación de rutinas, ejemplos resueltos y propuestos

IPN-ESIME Zacatenco Electrónica III

139

Una resistencia de Pull-Up consiste en una resistencia que se encuentra conectada internamente entre un pin en particular del puerto A y el terminal positivo de alimentación o VDD, que en nuestro caso sería +5 V. Para comprender mucho mejor este concepto, supongamos que se desea conocer cómo estaría conectada la resistencia del Pull-Up presente en el pin O del puerto A (PTAO). En la gráfica siguiente se ilustra este concepto con gran detalle.

Fig.5.10 Conexión interna de una resistencia de Pull-Up a través de pin PTA0.

REGISTRO DE CONFIGURACIÓN DEL PORT A (DDRA)

Dirección $0004

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Leer 0

Escribir

DDRA 6 DDRA 5 DDRA 4 DDRA 3 DDRA 2 DDRA1 DDRA 0

Mediante este registro de 8 bits, de los cuales sólo se puede acceder a 7 bits, se efectúa la configuración de los bits del registro PORT A, ya sea como entradas o como salidas. Tal como se mencionó en el capítulo 2, el registro PORTA permite visualizar el estado actual de los diferentes niveles presentes en el puerto; sin embargo, el registro DDRA sería el encargado de realizar la configuración del puerto A, en donde se establece inicialmente qué pines se configurarán para recibir señales de fuentes

140

externas y qué pines funcionarán como salidas del microcontrolador hacia el mundo real. A continuación se describe qué valores deben establecerse en el registro DDRA para configurar un pin como entrada o como salida. DDRA[6:0]: bits de configuración del PORT A

• 1: El pin correspondiente del PORT A es configurado como salida • 0: El pin correspondiente del PORT A es configurado como entrada

REGISTRO PTAPUE Dirección $OOOD

Bit 7 Bit 6 Bit5 Bit 4 Bit3 Bit 2 Bit 1 Bit 0

Leer

Escribir PTA6EN

PTAPUE6

PTAPUE5

PTAPUE 4

PTAPUE3

PTAPUE2

PTAPUE1

PTAPUE 0

Este registro es el que permite habilitar o deshabilitar las resistencias de Pull-Up para cada uno de los pines del puerto A. Se debe tener en cuenta que cuando se habilitan las resistencias de Pull-Up, estas resistencias serán válidas solamente cuando el pin correspondiente es configurado como entrada y dinámicamente deshabilitado cuando este pin es configurado como salida. A continuación se explica en detalle el significado de cada bit \5ertetvecietvte al registro PTAPUE y la función que desempeña cada uno. PTA6EN: Habilitar el pin PTA6 como OSC2. La función del OSC2 se configura cuando se escoge la opción de oscilador RC.

• 1: El OSC2 es configurado para utilizar el pin PTA6 como un pin de I/O, con las funciones de interrupción y configuración de resistencias de Pull-Up.

• 0: El OSC2 es configurado como oscilador de tipo RC. PTAPUE[6:0]: Habilitación de resistencias de Pull-Up

• 1: Habilita las resistencia de Pull-Up correspondiente al pin del puerto A, siempre y cuando este pin esté configurado como entrada.

• 0: Deshabilita la resistencia de Pull-Up correspondiente al pin del puerto A.

IPN-ESIME Zacatenco Electrónica III

141

Ejemplo Supongamos que se desea configurar en el puerto A los 4 bits de menos peso como entradas y los 4 pines más peso como salidas; adicionalmente, habilitar las resistencias de Pull-Up para los 4 pines configurac como entrada en el puerto A. Solución MOV #$FO,DDRA MOV #$8F,PTAPUE Explicación En la primera instrucción se almacenó en el registro DDRA el valor $FO (F0h) que corresponde al val 11110000 expresado en binario, provocando con ello que los bits en donde se encuentran con valor "O" se configurados como entrada y los bits donde se encuentran "1" sean configurados como salida. En la segunda instrucción se almacenó en el registro PTAPUE el valor $8F (8Fh) que corresponde al val 10001111 expresado en binario, provocando con ello que los bits en donde se encuetan con valor "O" deshabilite el uso de resistencias de Pull-Up y los bits donde se encuentran "1" sean habilitadas; sin embargo en el bit 7 del registro PTAPUE se estableció el valor "1", el cual en este caso no corresponde a la habilitad' de una resistencia de Pull-Up, sino habilitando la opción de ser utilizado este pin como pin de I/O y no con entrada para un oscilador de tipo RC. Con las instrucciones anteriores se da solución al problema, configurando como primera medida los 4 bits de menos peso del puerto A como entradas y los 4 bits de más peso como salidas; además se habilitó internamente el uso de 4 resistencias de Pull-Up en los pines correspondientes a los 4 bits de menos peso del puerto A.

REGISTRO PORT B (PTB] Dirección $0001

Bit 7 Bit 6 Bit5 Bit 4 Bit 3 Bit 2 Bit l Bit O

Leer

Escribir PTB7 PTB6 PTB5 PTB4 PTB3 PTB2 PTB1 PTBO

Bit 7 Bit 6 Bit5 Bit 4 Bit 3 Bit 2 Bit1 BitO

ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADCO

142

El registro PORTB permite la manipulación de señales digitales entre sus terminales, tal como ocurre o el registro PORTA; sin embargo, este puerto comparte adicionalmente recursos con el módulo de conversión analógico-digital incluido internamente en el microcontrolador, en donde cada pin del puerto corresponde] a un canal de conversión A/D. Cada uno de estos pines puede ser configurado como entrada o como salida de manera independiente a través del registro DDRB.

REGISTRO DE CONFIGURACIÓN DEL PORT B (DDRB) Dirección $0005 Bit 7 Bit 6 B¡t5 Bit 4 Bit 3 Bit 2 Bit1 BitO

Leer

Escribir DDRB7 DDRB6 DDRB5 DDRB4 DDRB3 DDRB2 DDRB1 DDRBO Mediante este registro de 8 bits se efectúa la configuración de los bits del registro PORT B, ya sea con entradas o salidas, tal como ocurría con el registro de configuración DDRA. DDRB [7:0]: bits de configuración del PORT B 1: El pin correspondiente del PORT B es configurado como salida. 0: El pin correspondiente del PORT B es configurado como entrada.

REGISTRO PORT D

Dirección $0003 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit l Bit O

Leer PTD7 PTD6 PTD5 PTD4 PTD3 PTD2 PTD1 PTDO

Escribir

Bit 7 Bit 6 Bit5 Bit 4 Bit3 Bit 2 Bit1 Bit O

Función 1 LED LED TCH1 TCHO LED LED

Función 2 25MA 25MA ADC8 ADC9 ADC10 ADCI1

El registro PORTD posee dos pines destinados para uso del módulo TIM, 4 pines destinados para canales de conversión A/D (los módulos TIM y ADC serán tratados en capítulos posteriores) y dos pines (PTD6 y PTD7) que poseen drivers de corriente superior a 25 mA y resistencias de Pull-Up programables de 5 k. Cada uno de estos pines puede ser configurado como entrada o como salida de manera independiente a través del registro DDRD.

IPN-ESIME Zacatenco Electrónica III

143

REGISTRO DE CONFIGURACIÓN DEL PORT D Dirección $0007 Bit 7 Bit 6 Bit5 Bit 4 Bit3 Bit 2 Bit 1 Bit O

Leer

Escribir DDRD7 DDRD6 DDRD5 DDRD4 DDRD3 DDRD2 DDRD1 DDRDO

Mediante este registro de 8 bits se efectúa la configuración de los bits del registro PORT D, ya sea como entradas o como salidas. DDRD[7:0]: bits de configuración del PORT D 1: El pin correspondiente del PORT D es configurado como salida. 0: El pin correspondiente del PORT D es configurado como entrada.

REGISTRO DE CONTROL DEL PORT D (PDCR]

Dirección $OOOA

Bit 7 Bit 6 Bit5 Bit 4 Bit3 Bit 2 Bit1 BitO

Leer 0 0 0 0 Escribir

SLOWD7

SLOWD6

PTDPU7 PTDPU6

Este registro cumple funciones muy semejantes a las del registro PTAPUE explicado anteriormente, permitiendo habilitar y deshabilitar las resistencias de Pull-Up, y manejo del driver de corriente para los pines PTD7 y PTD6. A continuación se explica el modo de configuración de este registro y las funciones que realiza según los valores establecidos en cada uno de sus bits. SLOWDx: los bits SLOWD6 Y SLOWD7 permiten habilitar drenador abierto y driver de corriente. 1: El pin está configurado como salida de drenador abierto. 0: El pin está configurado con Push-Pull. PTDPUx: bits para habilitar resistencias de Pull-Up. 1: Habilitar resistencia de Pull-Up de 5 K. 0: Deshabilitar resistencia de Pull-Up de 5 K.

144

5.2 ADQUISICIÓN DE SEÑALES ANALÓGICAS

5.2.1 Introducción

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, 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. La magnitud también puede ser cualquier objeto medible como los beneficios o pérdidas de un negocio. 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. Basándose en el analisis de Fourier, una señal digital es una señal analógica compuesta. El ancho de banda es infinito, como se podría adivinar. Se puede llegar a este concepto si se estudia una señal digital. Una señal digital, en el dominio del tiempo, incluye segmentos horizontales y verticales conectados. Una línea vertical en el dominio de tiempo significa una frecuencia cero (no hay cambio en el tiempo). Ir de una frecuencia cero a una frecuencia infinito (y viceversa) implica que todas las frecuencias en medio son parte del dominio. El análisis de Fourier se puede usar para descomponer una señal. Si la señal digital es periódica, lo que es raro en comunicaciones, la señal descompuesta tiene una representación en el dominio de frecuencia con un ancho de banda infinito y frecuencias discretas. Si la señal digital es aperiódica, la señal descompuesta todavía tiene un ancho de banda infinito, pero las frecuencias son contínuas. Aunque existen múltiples versiones del bus de campo digital, en los sistemas de control industrial se siguen empleando señales analógicas estándar para transmitir datos entre los procesos y los equipos de control. Los transmisores de proceso de una planta de productos, por ejemplo, convierten señales de bajo nivel de presión y temperatura en robustas señales de corriente de 4 a 20 mA que pueden transmitirse con facilidad a lo largo de varios kilómetros.

5.2.2 Definición de señal analógica

La señal analógica es aquella que presenta una variación continua con el tiempo, es decir, que a una variación suficientemente significativa del tiempo le corresponderá una variación igualmente significativa del valor de la señal (la señal es continua). Toda señal variable en el tiempo, por complicada que ésta sea, se representa en el ámbito de sus valores (espectro) de frecuencia. De este modo, cualquier señal es

IPN-ESIME Zacatenco Electrónica III

145

susceptible de ser representada descompuesta en su frecuencia fundamental y sus armónicos. El proceso matemático que permite esta descomposición se denomina análisis de Fourier. Un ejemplo de señal analógica es la generada por un usuario en el micrófono de su teléfono y que después de sucesivos procesos, es recibida por otro abonado en el altavoz del suyo. Es preciso indicar que la señal analógica, es un sistema de comunicaciones de las mismas características, mantiene dicho carácter y deberá ser reflejo de la generada por el usuario. Esta necesaria circunstancia obliga a la utilización de canales lineales, es decir canales de comunicación que no introduzcan deformación en la señal original.

Fig. 5.11 Señal analógica

Las señales analógicas predominan en nuestro entorno (variaciones de temperatura, presión, velocidad, distancia, sonido etc.) y son transformadas en señales eléctricas, mediante el adecuado transductor, para su tratamiento electrónico. La utilización de señales analógicas en comunicaciones todavía se mantiene en la transmisión de radio y televisión tanto privada como comercial. Los parámetros que definen un canal de comunicaciones analógicas son el ancho de banda (diferencia entre la máxima y la mínima frecuencia a transmitir) y su potencia media y de cresta.

5.2.3 Conceptos fundamentales en adquisición de señales

El acondicionamiento de las señales de entrada las prepara para la etapa siguiente, que suele ser un procesador digital. Las señales analógicas son continuas en el tiempo y en la amplitud, mientras que los procesadores digitales requieren señales con sólo dos niveles de tensión, que representan un código determinado. La conversión analógico-digital se encarga de convertir un tipo de señales en otro, y debe hacerlo conservando la información. Es decir, idealmente debiera ser posible, a partir de la salida digital, reconstruir fielmente la señal analógica de entrada.

La conversión A/D se puede analizar considerando tres procesos distintos: el muestreo, la cuantificación y la codificación. El muestreo obtiene, a partir de la señal continua de entrada, una señal discreta e el tiempo y continua en el dominio de las amplitudes, es decir, una serie temporal. El muestreo es un proceso lineal, no exclusivo de la conversión A/D sino presente también, por ejemplo, en sistemas de multiplexado por

146

división de tiempo (TDM, time-division multiplexing) y en la comunicación por impulsos modulados en amplitud (PAM, pulse-amplitude modulation).

La cuantificación es una operación no lineal que convierte una señal de amplitud continua en otra de amplitud discreta, es decir, con un número finito de valores o niveles de amplitud. La codificación es el proceso de asignar una palabra (o combinación) de un código digital a cada uno de una serie de niveles de tensión discretos.

La información adquirida, directamente o tras el procesamiento de las señales, se emplea a veces para actuar sobre el proceso o sistema de donde provienen; además, es frecuente presentarla, almacenarla, o ambas cosas a la vez. Dichas funciones se suelen realizar directamente con las señales digitales, sin convertirlas de nuevo en analógicas.

5.2.4 Señales de transmisión analógicas y señales de datos digitales

Dentro de este caso la situación más conocida es la transmisión de datos digitales a través de la red telefónica. Esta red se diseño originalmente para recibir, conmutar y transmitir señales analógicas en el rango de frecuencias de vos (300 a 3400Hz). Por lo tanto esta red no era del todo adecuada para la transmisión de señales digitales. No obstante se pueden conectar dispositivos digitales mediante el uso de módems (modulador-demodulador), los cuales convierten los datos digitales en señales analógicas y viceversa. Los módems telefónicos, se utilizan en la red telefónica para producir señales en el rango de frecuencias de voz, los módems de banda ancha, por ejemplo los módems ADSL y los módems de cable o cablemodems, utilizan las mismas técnicas pero a frecuencias más altas que las de la voz humana. Dentro del grupo de transmisiones con señales de transmisión analógicas y datos digitales tenemos los siguientes casos de técnicas de modulación o codificación dependiendo del parámetro de la señal portadora que es afectado.

• Desplazamiento de amplitud – ASK (Amplitudes-shift keying) • Desplazamiento de frecuencia – FSK (Frequency-shift keying) • Desplazamiento de fase – PSK (Phase-shift keying)

5.2.5 Transmisión de datos: transmisión analógica

Los principios de la transmisión analógica

La transmisión analógica que datos consiste en el envío de información en forma de ondas, a través de un medio de transmisión físico. Los datos se transmiten a través de una onda portadora: una onda simple cuyo único objetivo es transportar datos modificando una de sus características (amplitud, frecuencia o fase). Por este motivo, la transmisión analógica es generalmente denominada transmisión de modulación de la

IPN-ESIME Zacatenco Electrónica III

147

onda portadora. Se definen tres tipos de transmisión analógica, según cuál sea el parámetro de la onda portadora que varía:

• Transmisión por modulación de la amplitud de la onda portadora • Transmisión a través de la modulación de frecuencia de la onda portadora • Transmisión por modulación de la fase de la onda portadora • Transmisión analógica de datos analógicos

Este tipo de transmisión se refiere a un esquema en el que los datos que serán transmitidos ya están en formato analógico. Por eso, para transmitir esta señal, el DCTE (Equipo de Terminación de Circuito de Datos) debe combinar continuamente la señal que será transmitida y la onda portadora, de manera que la onda que transmitirá será una combinación de la onda portadora y la señal transmitida. En el caso de la transmisión por modulación de la amplitud, por ejemplo, la transmisión se llevará a cabo de la siguiente forma:

Fig. 5.12 Transmisión analógica de datos digitales Cuando aparecieron los datos digitales, los sistemas de transmisión todavía eran analógicos. Por eso fue necesario encontrar la forma de transmitir datos digitales en forma analógica. La solución a este problema fue el módem. Su función es:

• En el momento de la transmisión: debe convertir los datos digitales (una secuencia de 0 y 1) en señales analógicas (variación continua de un fenómeno físico). Este proceso se denomina modulación.

• Cuando recibe la transmisión: debe convertir la señal analógica en datos

digitales. Este proceso se denomina demodulación. De hecho, la palabra módem es un acrónimo para MOdulador/DEModulador...

5.2.6 Sistema de adquisición de datos analógicos

148

Un sistema de adquisición de datos analógico consta de algunos o todos los elementos siguientes:

a) Transductores: Para la transformación de parámetros físicos en señales eléctricas.

b) Acondicionadores de señales Para la amplificación, modificación o selección de ciertas partes de estas señales.

c) Dispositivos de presentación visual Para monitoreo continuo de las señales de entrada. Estos dispositivos pueden incluir osciloscopio de varios canales o de un solo canal, osciloscopio de almacenamiento, panel de medidores, desplegados numéricos, etcétera.

d) Instrumentos de registro de gráficas Para obtener un registro permanente de los datos de entrada. Estos incluyen registradores de tinta y plumilla para proporcionar registros continuos en cortes de papel, sistemas de registro óptico como los registradores de galvanómetro de espejo y los registradores ultravioleta. Instrumentación de cinta magnética para guardar los datos de entrada, conservar su forma eléctrica original y reproducirlos posteriormente para un más detallado.

Los sistemas de adquisición de datos se utilizan en un gran número de aplicaciones (en constante aumento), en una variedad de áreas industriales y científicas, como la industria biomédica, aeroespacial y telemetría. El tipo de sistema de adquisición de datos, analógica o digital, depende del uso de los datos registrados. En general, los sistemas de datos analógicos se utilizan cuando se requiere un amplio ancho de banda o cuando se puede tolerar poca exactitud. Los sistemas digitales se aplican cuando el proceso físico que en estudio varía poco (ancho de banda angosto) y cuando se necesita una exactitud alta y bajo costo por canal.

5.2.7 Las señales analógicas en el diseño de sistemas de adquisición de datos

Un nuevo artículo dedicado a la que consideramos la mejor estrategia de automatización para conseguir aumentar la productividad industrial de una forma sencilla. Nos referimos, a la adquisición de datos. En este artículo abordamos en detalle las especificaciones de diseño que deben tenerse en cuenta al tratar señales analógicas en los sistemas de adquisición de datos. Un conocimiento detallado de las señales analógicas y los efectos en la conversión de datos que pueden producirse en un ambiente industrial nos ayudará a conocer con antelación los problemas que pueden producirse en el proyecto. El equipamiento de adquisición analógica es el corazón de cualquier sistema de adquisición de datos. Microprocesadores, procesadores de señales digitales, memoria, programas originales, drivers de software, sistemas operativos, y aplicaciones de

IPN-ESIME Zacatenco Electrónica III

149

software puede formar el cerebro de un sistema, pero su eficiencia no es mayor que la de los circuitos analógicos. Para construir un sistema que tenga la velocidad necesaria, resolución, y exactitud para una aplicación dada, es necesario encontrar la combinación correcta de convertidores de datos analógicos, amplificadores operacionales, multiplexores, y referencias de voltaje. En un circuito de un sistema de adquisición de datos, la trayectoria de una señal comienza en los conectores de entrada. La mayoría de los sistemas de adquisición de datos tienen alguna forma de protección colocada antes de los circuitos analógicos. Para ello se utilizan componentes tales como fusibles o diodos de bloqueo limitan el voltaje o corriente que entra en un sistema, protegiendo de esta forma a los componentes de posibles daños. Los sistemas convencionales de adquisición de datos raramente se diseñan con un único canal de medición. Los multímetros digitales (DMMs), por ejemplo, disponen típicamente de un solo canal, pero es posible combinar un DMM con un relé e incrementar el recuento de canales. Cualquiera de los sistema de adquisición de datos, ya sea placa de conexión, módulos USB, o sistemas autónomos, pueden tener un ADC (convertidor analógico-digital) dedicado por canal, o pueden tener un simple ADCcon un multiplexor (mux) conectado a canales múltiples. El uso de un ADC dedicado para cada canal permite al sistema muestrear simultáneamente en todos los canales. Después del multiplexor (si está incluido en el sistema), se utiliza un amplificador de ganancia programable (PGA). El PGA amplifica o atenúa el voltaje de entrada de las fuentes de señales, como por ejemplo los sensores, y de esta forma se consigue un mejor acoplamiento en el rango de voltajes de entrada del ADC. En algunos sistemas de adquisición de datos se incluye un segundo amplificador operacional que añade voltaje de compensación, u offset, DC a la señal de entrada. El voltaje de compensación se utiliza para cambiar la señal de forma que se centre en el rango de entrada admitido por el ADC. El rango del voltaje de entrada del ADC, por lo tanto, tiene una influencia destacable en la elección del PGA. Otra opción posible es el uso de circuitos de bloqueo para proteger el ADC. Justamente antes del ADCE, la mayoría de los diseñadores de sistemas de adquisición de datos añaden un filtro anti-solapamiento de paso bajo. Con este filtro conseguimos limitar el ancho de banda de la trayectoria de la señal y es la última opción para conseguir minimizar el solapamiento antes de que el ADC digitalice la señal. Para conseguir digitalizar con éxito las señales analógicas, los ADC necesitan un voltaje de referencia, Vref. Algunos convertidores ADCs, utilizan referencia interna y otros referencia interna. Algunos ingenieros defienden la utilización de referencias de voltaje externas argumentando que son más estables que las internas. Otra ventaja de las referencias externas es que puede ajustarse la ganancia de la trayectoria de entrada mediante el control del voltaje de la referencia ADC. Si el voltaje es demasiado alto, la solución es proporcionar Vref mayor.

150

Respecto a la forma de la salida digital de un ADC, ésta puede tener forma serie o paralelo. El bus serie proporciona un rendimiento mejorado debido a que son menos las líneas que cambiarán de estado en un momento dado, lo cual minimiza el rebote en las líneas de energía y de tierra y reduce el ruido del sistema. También debemos tener en cuenta que las interfaces serie funcionan con velocidades de reloj más elevadas que los buses paralelos para el mismo número de bits, es necesario direccionar las señales para mantener bajo el ruido.

Elección de un ADC Los procesos industriales difieren mucho entre sí: señales, velocidades, condiciones ambientales, etc. Es consecuentemente importante analizar en detalle el proceso para optar por la elección correcta del ADC más adecuado para nuestra aplicación. La elección de ADC lleva a que deban tenerse en cuenta numerosos sacrificios de diseño, y es necesario incluso tener en cuenta en detalle la arquitectura del sistema. Por ejemplo, los sistemas de adquisición de datos utilizan registro de aproximación sucesiva (SAR) o arquitectura delta-sigma (∑∆). Comparativamente, los sistemas SAR generan más velocidad que los ADCs (∑∆), pero las arquitecturas (∑∆) producen resoluciones más finas. Consecuentemente, si la resolución que necesitamos es mayor de 18-bit, necesitaremos un convertidor ∑∆. Los niveles de muestreo que requieren nuestro proceso y los voltajes de suministro de energía del ADC determinarán el tipo de circuitos de soportes que podemos usar. Consideremos, por ejemplo, el voltaje de alimentación. La mayoría de los ADCs están fabricados con procesos CMOS, en vez de con procesos bipolares, y es conocido que los procesos CMOS operan con unos requerimientos de potencia considerablemente menores que los dispositivos bipolares. Aunque los bajos voltajes reducen el consumo de potencia, también comprimen el rango dinámico del ADC. Un ADC que opera a 12 voltios tiene seis veces el rango dinámico de un dispositivo de 0-4 voltios. Consecuentemente, la misma cantidad de ruido impactará en el sistema de 12 voltios mucho menos que un sistema de 4 V. El ruido que entra en un ADC debe mantenerse menor de 1 el bit menos significativo (LSB). Es por ello necesario utilizar un amplificador operacional con un nivel de ruido consistente con el rango dinámico de un LSB en frente del ADC. Eso significa que será necesario un menor nivel de ruido en un ADC de 24 voltios que en un ADC de 16 bits. Para conseguir el mejor rango dinámico, las señales de nivel alto se extenderán en el canal analógico tan lejos como sea posible. El DMMs de Keithley, por ejemplo, proporciona la mejor exactitud en el rango de los 10 voltios, donde no se necesita ni amplificación ni atenuación de la señal entrante.

5.2.8 Conversión analógica-digital Una señal digital varía de forma discreta o discontinua a lo largo del tiempo. Parece como si la señal digital fuera variando «a saltos» entre un valor máximo y un valor mínimo. Por otra parte, una señal analógica es una señal que varía de forma continua a lo largo del tiempo. La mayoría de las señales que representan una magnitud física

IPN-ESIME Zacatenco Electrónica III

151

(temperatura, luminosidad, humedad, etc.) son señales analógicas. Las señales analógicas pueden tomar todos los valores posibles de un intervalo; y las digitales solo pueden tomar dos valores posibles.

Digitalización Un ordenador o cualquier sistema de control basado en un microprocesador no pueden interpretar señales analógicas, ya que solo utiliza señales digitales. Es necesario traducir, o transformar en señales binarias, lo que se denomina proceso de digitalización o conversión de señales analógicas a digitales. En la gráfica inferior se observa una señal analógica, que para ser interpretada en un ordenador ha de modificarse mediante digitalización. Un medio simple es el muestreado o sampleado. Cada cierto tiempo se lee el valor de la señal analógica. Si el valor de la señal en ese instante está por debajo de un determinado umbral, la señal digital toma un valor mínimo (0). Cuando la señal analógica se encuentra por encima del valor umbral, la señal digital toma un valor máximo (1).

Imagen:

Fig. 5.13 Digitalización por muestreado de una señal analógica

El momento en que se realiza cada lectura es ordenado por un sistema de sincronización que emite una señal de reloj con un período constante. Estas conversiones analógico-digitales son habituales en adquisición de datos por parte de un ordenador y en la modulación digital para transmisiones y comunicaciones por radio.

152

5.3 INTERRUPCIONES

(SISTEMA DE INTEGRACION MODULAR)

5.3.1 Introducción En esta sección se explicará el sistema de integración modular, el cual soporta hasta 24 interrupciones internas y externas, junto con la CPU, los controles SIM y todas las actividades de la MCU. A continuación se ilustra un diagrama que muestra un resumen de los registros de I/O existentes en la SIM. La SIM es un sistema de control de estados que coordina a la CPU, y es responsable de:

• Generación del reloj de bus, control de la CPU y periféricos • Arranque, parada, espera y ruptura de entrada y recuperación. • Control del reloj interno. • Control maestro del reset, incluyendo el Power - on- Reset y el tiempo de

rebosamiento del COP. • Control de interrupciones. • Habilitación y deshabilitación de tiempos en la CPU.

IPN-ESIME Zacatenco Electrónica III

153

Fig. 5.14 Diagrama del SIM

5.3.2 Entrada-salida e interrupción Una computadora no puede tener un propósito útil a menos que se comunique con un ambiente externo. Las instrucciones y los datos almacenados en la memoria deben provenir de algún dispositivo de entrada. Los resultados computacionales deben transmitirse al usuario mediante algún dispositivo de salida. Las computadoras comerciales incluyen muchos tipos de dispositivos de entrada y salida. Para mostrar la mayor parte de los requerimientos básicos para comunicación de entrada y salida, utilizaremos como ejemplo una unidad terminal con un teclado e impresora.

5.3.3 Configuración de entrada-salida La terminal envía y recibe información serial. Cada cantidad de información tiene ocho bits de un código alfanumérico. La información serial del teclado se cambió dentro del registro de entrada INPR. La información serial para la impresora se almacena en el registro de salida OUTR. Estos dos registros comunican en forma serial con una interfaz de comunicación y con el AC en paralelo. La configuración de entrada-salida se muestra en la figura 5-12. La interfaz que transmite recibe información serial del teclado y la transmite a INPR. La interfaz que recibe acepta información de OUTR y la envía en forma serial a la impresora. El registro de entrada INPR consta de ocho bits y contiene información de entrada alfanumérica. La bandera de entrada de 1 bit FGI es un flip-flop de control. El bit de la bandera se activa en 1 cuando hay disponible información nueva en el dispositivo de entrada y se desactiva a O cuando la computadora acepta la información. La bandera es necesaria para sincronizar la diferencia de la velocidad de temporización entre el dispositivo de entrada y la computadora. El proceso de transferencia de información e» como sigue. Al principio, la bandera de entrada FGÍ se desactiva a 0. Cuando se oprime una tecla en el teclado, se ejecuta un corrimiento sobre un código alfanumérico de 8 bits dentro de INPR y la bandera de entrada FGI se inicia en 1.

154

Fig. 5.15 Configuración de entrada – salida

Mientras la bandera está en uno, no puede cambiarse la información en INPR al oprimir otra tecla. La computadora comprueba el bit de la bandera; si es 1, la información de INPR se transfiere en paralelo dentro de AC y FGI se reinicia a 0. Una vez que se desactiva la bandera, puede introducirse información nueva dentro de INPR al oprimir otra tecla. El registro de salida OUTR funciona en forma similar pero la dirección del flujo de información está invertida. Al principio la bandera de salida FGO se activa en 1. La computadora comprueba el bit de la bandera; si es 1, la información de AC se transfiere en paralelo a OUTR y FGO se desactiva a 0. El dispositivo de salida acepta la información codificada, imprime el carácter correspondiente, y cuando se termina la operación activa FGO en 1. La computadora no carga un nuevo carácter en OUTR cuando FGO es O porque esta condición indica que el dispositivo de salida se encuentra en el proceso de imprimir el carácter.

5.3.4 Instrucciones entrada - salida Se necesitan instrucciones de entrada y salida para transferir información hacia y desde el registro AC, para comprobar los bits de bandera, y para controlar la opción de interrupción. Las instrucciones de entrada-salida tienen un código de operación 1111 que reconoce el control cuando D7 = 1 e / = 1. Los bits restantes de la instrucción especifican la operación particular. Las funciones de control y las microoperaciones para las instrucciones de entrad a-sal ¡da se listan en la tabla 5-5. Estas instrucciones se ejecutan con la transición de reloj asociada con la señal de temporización T3. Cada función de control necesita una relación booleana D7IT3, que nosotros representamos por conveniencia con el símbolo p. La función de control se diferencia por uno de los bits en IR (6-11). Al asignar el símbolo Bi, al bit i de IR, todas las funciones de control pueden representarse mediante pB¡ para í = 6 a 11. El contador secuencial SC se borra a O cuando p = D7IT3 = 1. La instrucción INP transfiere la información de entrada de ¡NPR a los ocho bits de orden menor de AC y también desactiva la bandera de entrada a 0. La instrucción OUT transfiere los ocho bits menos significativos de AC al registro de salida de OUTR y desactiva la bandera de salida a 0. Las siguientes dos instrucciones de la tabla 5-5 comprueban el estado de las banderas y producen un salto de la siguiente instrucción si la bandera es 1. La instrucción que se salta por lo general será una instrucción de transferencia o brinco para retomar y comprobar una vez más la bandera. La instrucción de transferencia no se salta si la bandera es 0. Si la bandera es 1, la instrucción de transferencia se salta y se ejecuta una instrucción de entrada o salida. Las últimas dos instrucciones activan y desactivan un flip-flop de habilitación de interrupción /EN. El propósito de IEN se explica junto con la operación de interrupción.

IPN-ESIME Zacatenco Electrónica III

155

5.3.5 Interrupción del programa El concepto de interrupción de programa se utiliza para manejar diversos problemas que surgen de la secuencia de programa normal. La interrupción de programa se refiere a la transferencia del control de programa de un programa que corre en cierto momento a otro programa de servicio, como resultado de una solicitud generada en forma externa o interna. El control retorna al programa original después de que se ejecuta el programa de servicio. El procedimiento de interrupción es, en principio, muy similar a una solicitud de subrutina, excepto por tres diferencias: 1) por lo general la interrupción se inicia mediante una señal externa o interna más que por la ejecución de una instrucción (excepto para una interrupción de programa, como se explica más adelante); 2) la dirección del programa de servicio de interrupción la determina la circuitería y no el campo de dirección de una instrucción; y 3) un procedimiento de interrupción por lo general almacena toda la información necesaria para definir el estado de la CPU en lugar de sólo almacenar el contador de programa. Estos tres conceptos de procedi-miento se detallan en seguida. Después de que se ha interrumpido un programa y se ha ejecutado la rutina de servicio, la CPU retorna al mismo estado exacto que tenía cuando ocurrió la interrupción. Sólo de esta manera el programa interrumpido podrá reanudar exactamente como si nada hubiera ocurrido. El estado de la CPU al final del ciclo de ejecución (cuando se reconoce la interrupción) está determinado por: 1. El contenido del contador del programa. 2. El contenido de todos los registros del procesador. 3. El contenido de ciertas condiciones de estado. El conjunto de todas las condiciones de bit de estado en la CPU se denomina en ocasiones una palabra de estado de programa o PSW (program status word). La PSW se almacena en un registro de hardware separado y contiene la información de estado que caracteriza a la CPU. Normalmente, incluye los bits de estado de la última operación de la ALU y especifica las interrupciones que se han permitido ocurran y si la CPU está operando en un modo supervisor o de usuario. Muchas computadoras tienen un sistema operativo residente que controla y supervisa todos los otros programas en la computadora. Cuando la CPU ejecuta un programa que es parte del sistema operativo, se dice que está en modo de supervisor o de sistema. Ciertas instrucciones tienen privilegios y sólo pueden ejecutarse en este modo. Por lo general la CPU está en el modo usuario cuando ejecuta programas de usuario. El modo en el cual está operando la CPU en cualquier momento dado lo determinan los bits de estado especiales en la PSW. Algunas computadoras sólo almacenan el contador de programa cuando responden a una interrupción. El programa de servicio debe entonces incluir instrucciones para almacenar el contenido de estado y registro antes de que se utilicen estos recursos. Sólo unas cuantas computadoras almacenan el contador de programa y todo el

156

contenido de los registros y del registro de estado en respuesta a una interrupción. La mayoría de las computadoras sólo almacenan el contador de programa y la PSW. En algunos casos, existen dos conjuntos de registros de procesador dentro de la computadora, uno para cada modo CPU. De esta manera, cuando el programa cambia del modo usuario al supervisor (o viceversa) en respuesta a una interrupción, no es necesario almacenar el contenido de los registros de procesador porque cada modo utiliza su propio conjunto de registros. El procedimiento de hardware para procesar una interrupción es muy similar a la ejecución de una instrucción de solicitud de subrutina. El estado de la CPU se salva a una pila de memoria y la dirección inicial de la rutina de servicio se transfiere al contador de programa. La dirección inicial de la rutina de servicio la determina la circuitería en lugar de un campo de dirección de una instrucción. Algunas computadoras asignan una localidad de memoria en donde se transfieren siempre las interrupciones. La rutina de servicio debe determinar después qué fue lo que produjo la interrupción y proceder a darle servicio. Algunas computadoras asignan una localidad de memoria para cada interrupción posible. En ocasiones, la interrupción de hardware proporciona su propia dirección, la cual dirige a la CPU a la rutina de servicio deseada. En cualquier caso, la CPU debe poseer alguna forma de procedimiento de hardware para seleccionar una dirección de transferencia del control para dar servicio a la interrupción. La CPU no responde a una interrupción hasta el final de una ejecución de instrucción. Justo antes de pasar a la siguiente fase de recuperación, el control comprueba cualquier señal de interrupción. Si está pendiente una, el control va a un ciclo de interrupción de hardware. Durante este ciclo el contenido de PC y PSW se salva dentro de la pila. Después se carga la dirección de transferencia para la interrupción particular al PC y se carga una nueva PSW dentro del registro de estado. El programa de servicio puede ejecutarse ahora, comenzando de la dirección de transferencia y con un modo CPU según lo especifica la nueva PSW. La última instrucción en el programa de servicio es una instrucción de retorno de interrupción. Cuando se ejecuta esta instrucción, se hace leer la pila para recuperar la PSW anterior y la dirección de retorno. La PSW se transfiere al registro de estado y la dirección de retorno al contador de programa. Por lo tanto, se restablece el estado de la CPU y el programa original puede continuar su ejecución.

5.3.6 Tipos de interrupciones Existen tres tipos principales de interrupciones que producen una detención en la ejecución normal de un programa. Se clasifican de la manera siguiente: 1. Interrupciones externas 2. Interrupciones internas 3. Interrupciones de programa Las interrupciones externas provienen de dispositivos de entrada y salida (E/S), de un dispositivo de temporización, de un circuito que monitorea la fuente de alimentación o de cualquier otra fuente externa. Algunos ejemplos de lo que produce interrupciones

IPN-ESIME Zacatenco Electrónica III

157

externas son dispositivos de E/S que solicitan transferencia de datos, dispositivos de E/S que terminan transferencia de datos, tiempo transcurrido de un evento o una falla de energía. Puede ocurrir una interrupción por tiempo transcurrido de un programa que esté en un ciclo que no termina y que, por lo tanto, excede su tiempo asignado. Una interrupción por falla de energía puede tener como su rutina de servicio a un programa que transfiere el estado completo de la CPU a una memoria no volátil en los pocos segundos anteriores a una falla de energía. Las interrupciones internas surgen debido a la utilización ilegal o errónea de una instrucción o datos. Las interrupciones internas también se llaman trampas. Algunos ejemplos de las interrupciones provocadas por condiciones de error internas son los sobreflujos de registro, intentar dividir entre cero, un código de operación no válido, desbordamiento de pila, y violación de la protección. Por lo general, estas condiciones de error ocurren como resultado de una terminación prematura de la ejecución de una instrucción. El programa de servicio que procesa la interrupción interna determina la medida correctiva que se debe tomar. La diferencia entre las interrupciones interna y externa es que la interna se inicia por alguna condición excepcional causada por el programa mismo, más bien que por un evento externo. Las interrupciones internas son síncronas con el programa en tanto que las externas no lo son. Si el programa se vuelve a ejecutar, las interrupciones internas ocurrirán en el mismo lugar cada vez. Las interrupciones externas dependen de condiciones independientes al programa que se ejecuta en ese momento. Las interrupciones internas y externas se inician a partir de señales que ocurren en la circuitería de la CPU. Una interrupción de programa se inicia al ejecutar una instrucción. La interrupción de programa es una instrucción de solicitud especial que se comporta como una interrupción más que como una solicitud de subrutina. El programador puede utilizarla para iniciar un procedimiento de interrupción en cualquier punto que se desee del programa. El uso más común de la interrupción de programa se asocia con una instrucción de llamada de supervisor. Esta instrucción proporciona medios para cambiar el modo de usuario de CPU al modo supervisor. Sólo ciertas operaciones pueden asignarse al modo supervisor en la computadora, por ejemplo, un procedimiento de transferencia de entrada o salida complejo. Un programa escrito por un usuario debe correr en el modo usuario. Cuando se necesita una transferencia de entrada o salida, se solicita el modo supervisor mediante una instrucción de solicitud de supervisor. Esta instrucción produce una interrupción de programa que almacena el estado anterior de la CPU y trae una nueva PSW que pertenece al modo supervisor. El programa que I solicita debe pasar la información al sistema operativo con el fin de especificar la tarea particular solicitada. El proceso de comunicación que se acaba de describir se refiere a una transferencia de control programada. La computadora comprueba continuamente el bit de bandera, y cuando lo encuentra activo en uno, inicia una transferencia de información. La diferencia de la velocidad del flujo de información de la computadora y el del dispositivo de entrada-salida hace ineficiente este tipo de transferencia. Para apreciar por qué es ineficiente, pensemos en una computadora que puede recorrer un ciclo de instrucción

158

en un microsegundo. Consideremos que el dispositivo de entrada-salida puede transferir información a una velocidad máxima de 10 caracteres por segundo. Esto es equivalente a un carácter cada 100 000 microsegundos. Se ejecutan dos instrucciones cuando la computadora comprueba el bit de bandera y decide no transferir la información. Esto significa que a una velocidad máxima la computadora comprobará la bandera 50 000 veces entre cada transferencia. La computadora gasta tiempo en comprobar la bandera en lugar de hacer otra tarea de procesamiento útil. Una alternativa al procedimiento controlado que se programa es permitir que el dispositivo externo informe a la computadora cuando está listo para la transferencia. Mientras tanto, la computadora puede ocuparse con otras tareas. Este tipo de transferencia utiliza la opción de interrupción. Mientras la computadora corre un programa, no comprueba las banderas. Sin embargo, cuando se activa una bandera, la computadora interrumpe momentáneamente su procedimiento con el programa actual y se le informa que se ha activado una bandera. La computadora deja momentáneamente lo que está haciendo para ocuparse de la transferencia de entrada o salida. Después regresa al programa actual a continuar lo que estaba haciendo antes de la interrupción. El flip-flop de habilitación de interrupción IEN puede habilitarse o deshabilitarse con dos instrucciones. Cuando IEN se borra a O (con la instrucción IOF), las banderas no pueden interrumpir a la computadora. Cuando IEN se activa en 1 (con la instrucción ION), la computadora puede ser interrumpida. Estas dos instrucciones le proporcionan al programador la opción de decidir si utiliza o no la opción de interrupción. La manera en que la computadora maneja la interrupción puede explicarse mediante el diagrama de flujo de la figura 5-13. Se incluye un flip-flop de interrupción R en la computadora. Cuando R = O, la computadora ejecuta un ciclo de instrucción. Durante la fase de ejecución de la instrucción, el control comprueba el estado de IEN. Si es O, indica que el programador no desea usar la interrupción, por lo que el control continúa con el siguiente ciclo de instrucción. Si IEN es 1, el control comprueba los bits de bandera. Si ambas banderas son O, significa que tanto el registro de entrada como de salida no están listos para una transferencia de información. En este caso el control continúa con el siguiente ciclo de instrucción. Si alguna bandera está en 1 mientras IEN = 1, el flip-flop R se inicia en 1. Al final de la fase de ejecución, el control comprueba el valor de R, y si es igual a 1, va a un ciclo de interrupción en lugar de un ciclo de instrucción; El ciclo de interrupción es una implementación de hardware de una transferencia de programa y salva la dirección de retorno de la siguiente instrucción. La dirección de retorno disponible en el PC se almacena en una localidad específica donde pueda encontrarse después, cuando el programa retorne a la instrucción en la cual fue interrumpido. Esta localidad puede ser un registro de procesador, una pila de memoria, o una posición de memoria específica. Aquí escogemos la localidad de memoria en la dirección O como el lugar para almacenar la dirección de retorno. Después el control inserta la localidad 1 dentro del PC y deshabilita IEN y R para que no puedan ocurrir más interrupciones hasta que se haya atendido la solicitud de interrupción de la bandera.

IPN-ESIME Zacatenco Electrónica III

159

Un ejemplo que muestra lo que sucede durante el ciclo de interrupción aparece en la figura 5.16. Supongamos que ocurre una interrupción y R se inicia en 1 mientras el control está ejecutando la instrucción en la dirección 255. En este momento, la dirección de retorno 256 está en PC. El programador ha colocado previamente un programa de servicio de entrada-salida en la memoria comenzando en la dirección 1120, y una instrucción BUN 1120 en la dirección 1. Esto se muestra en la figura 5.17(a). Cuando el control alcanza la señal de temporización T0 y encuentra que R = 1, procede con el ciclo de interrupción. El contenido del PC (256) se almacena en la localidad de memoria O, PC se inicia en 1, y R se reinicia a 0.

Fig. 5.16 Diagrama de flujo para el ciclo de interrupción

160

Fig. 5.17 Ejemplo de ciclo de interrupción

Al comienzo del siguiente ciclo de instrucción, la instrucción que se lee de la memoria está en la dirección 1 porque éste es el contenido de PC. La instrucción de brinco en la dirección 1 hace que el programa se transfiera al programa de servicio de entrada-salida en la dirección 1120. Este programa comprueba las banderas, determina cuál bandera está en uno y después transfiere la información de entrada o salida requerida. Una vez que hace esto, se ejecuta la instrucción ION para activar IEN en 1 (para habilitar interrupciones posteriores), y el programa regresa a la posición en la cual fue interrumpido. Esto se muestra en la figura 5.17 (b). La instrucción que regresa a la computadora al lugar original en el programa principal es una instrucción de brinco indirecto, con una parte de dirección de 0. Esta instrucción se coloca al final del programa de servicio de entrada-salida. Después de que esta instrucción se lee de la memoria durante la fase de búsqueda, el control va a la fase indirecta (porque / = 1) para leer la dirección efectiva. La dirección efectiva está en la posición Ó y es la dirección de retorno que se almacenó ahí durante el ciclo de interrup-ción previo. La ejecución de la instrucción BUN indirecta da como resultado la colocación dentro de PC de la dirección de retorno en la localidad 0.

5.3.7 Ciclo de interrupción

Ahora estamos preparados para listar los enunciados de transferencia de registros para el ciclo de interrupción. El ciclo de interrupción se inicia después de la última fase de ejecución si el flip-flop R de interrupción es igual a 1. Este flip-flop se activa en 1 si IEN = 1 y si FGI o FGO son iguales a 1. Esto puede suceder con cualquier transición de reloj excepto cuando las señales de temporización TQ, Tl, o T2 están activas. La condición para activar el flip-flop R en 1 puede expresarse con el siguiente enunciado de transferencia de registro:

IPN-ESIME Zacatenco Electrónica III

161

T0´T1´T2´(IEN)(FGI + FGO): R «-1 El símbolo + entre FGI y FGO en la función de control representa una función OR lógica. A esto se aplica la función AND con IEN y T0´T1´T2´. Ahora modificaremos las fases de búsqueda y decodificación del ciclo de instrucción. En lugar de sólo usar las señales de temporización TO, T I, y T2) aplicaremos la función AND con R' a las tres señales de temporización para que las fases de búsqueda y de decodificación se reconozcan de las tres funciones de control R'TQ, R'Ti y R'T2. La razón para hacer esto es que el tiempo en que se ejecuta la instrucción y SC se borra a O, el control recorre una fase de búsqueda sólo si R = 0. De otra manera si R = I, el control recorrerá un ciclo de instrucción. El ciclo de interrupción almacena la dirección de retorno (disponible en PC) dentro de la posición de memoria O, modifica a la posición de memoria 1, y desactiva IEN, R y SC a 0. Esto puede hacerse con la siguiente secuencia de microoperaciones:

RT0: AR� 0, TR�PC RT1: M[AR]�TR, PC«-0

RT2: PC�PC + 1, IEN� 0, R�0, SC«-0 Durante la primera señal de temporización se borra AR a O, y el contenido de PC se transfiere al registro temporal TR. Con la segunda señal de temporización, la dirección de retorno se almacena en la memoria en la posición O y PC se carga a 0. La tercera señal de temporización incrementa PC a 1, desactiva IEN y R, y el control regresa a T0 a borrar SC a 0. El inicio del siguiente ciclo de instrucción tiene la condición R'T0 y el contenido de PC es igual a 1. Después el control recorre un ciclo de instrucción que busca y ejecuta la instrucción BUN en la localidad 1.

Fuentes de Interrupción

162

Direcciones de interrupciones Avanzadas

5.3.8 La instrucción SWI

La SWI es una instrucción no enmascarable que causa una interrupción indiferente del estado que posea el bit I (bit bandera de interrupción), en la condición de registro de código. Una interrupción por software envía el PC (contador de programa) al stack. Una interrupción por software no aplica al PC=PC - 1, cosa que sí hace una interrupción por hardware.

RESET Todas las fuentes de reset son las que tienen igual o mayor prioridad sobre las demás y no pueden ser omitidas de ninguna forma. El reset obliga a que el bit I tome el valor "I" lógico y en "O" lógico todos los bits que permiten la habilitación de interrupciones locales a fin de prevenir interrupciones durante el proceso de inicialización. Cuando el bit I está en uno, ninguna interrupción (excepto SWI) es reconocida. Aunque pueda registrarse a la fuente de interrupción, su pedido no será atendido hasta que el bit I se ponga en cero.

IPN-ESIME Zacatenco Electrónica III

163

Se debe tener en cuenta que si se produce una interrupción mientras la CPU está ejecutando una instrucción, la instrucción será completada antes de que la CPU responda al pedido de interrupción. Las interrupciones pueden ser deshabilitadas en conjunto colocando el bit I del CCR en "1" lógico, o colocando en ceros los bits de control de habilitación de cada fuente de interrupción.

5.3.9 Modulo de interrupción por teclado (KBI) En muchas aplicaciones es común el uso de dispositivos para introducir información, caso particular del teclado, el cual se hace presente en desarrollos como los controles de bandas transportadoras, programación de tareas, horarios, control de acceso, etc. El módulo de interrupción por teclado tiene siete (7) interrupciones externas manipuladas de manera independiente cada una de ellas, y se encuentran disponibles entre los pines PTA[0:6]. Entre las características del módulo de interrupción por teclado podemos mencionar las siguientes: Siete pines de interrupción por teclado habilitadas por separado cada una y un solo bit indicador de la interrupción.

• Configuración de resistencias de Pull-Up. • Interrupción programable por flanco o flanco/ nivel. • Salida en modo de bajo consumo.

Direccion $001A

Los bits del 7 al 4 no son utilizados, y siempre son leídos como 0 lógico.

KEYF: bit de bandera de teclado Este bit es de sólo lectura y toma el valor 1 lógico cuando la interrupción por teclado ha ocurrido y se encuentra pendiente por atender. 1: Interrupción de teclado pendiente 0: Interrupción de teclado no pendiente ACKK: bit de reconocimiento de teclado Este bit es leído siempre como 0 lógico, pero cuando se escribe en él un 1 lógico se está indicando que la interrupción por teclado ya fue atendida y, por ende, el bit KEYF retorna a 0 lógico. IMASKK: bit de habilitación de interrupción por teclado

164

1: Deshabilita la interrupción por teclado 0: Habilita la interrupción por teclado MODEK: Configuración de sensibilidad de activación del teclado 1: Interrupción activada por flanco descendente y nivel lógico bajo 0: Interrupción activada por flanco descendente solamente

5.3.10 Registro de habilitación de interrupciones de teclado (KBIER)

Dirección $001B

Este registro habilita o deshabilita independientemente los pines del puerto A para utilizar la interrupción por teclado. 1: El bit KBIx es habilitado para interrupción por teclado 0: El bit KBIx es deshabilitado para interrupción por teclado Cuando se habilita la interrupción en un pin específico, la resistencia de Pull-Up es habilitada también en el pin correspondiente.

5.3.11 Inicialización del teclado

Cuando un pin de interrupción por teclado es habilitado, le toma un tiempo interno a la resistencia de Pull-Up alcanzar un 1 lógico. Por tanto, una interrupción falsa puede ocurrir tan pronto como el pin es habilitado. Para prevenir una falsa interrupción en la inicialización del teclado se debe efectuar lo siguiente:

• IMASKK = 1 • Asignar los valores a cada uno de los KBIx. • ACKK = 0 • IMASKK = 0

Otra forma de evitar una interrupción falsa es la siguiente:

• Configurar todo el puerto A como salida, esto se hace colocando cada uno de los bits del registro DDRA en 1 lógico.

• Escribir un 1 lógico en cada uno de los bits correspondientes al puerto A. • Asignar los valores a cada uno de los KBIx.

IPN-ESIME Zacatenco Electrónica III

165

Los teclados pueden tener varias configuraciones, unos pueden ser matriciales y otros lineales. Los teclados lineales son los que poseen tantos pines como teclas presenten y dos pines más para alimentación. Cada vez que se pulse una tecla, esta enviará a su respectivo pin un nivel bajo, identificando con ello la tecla pulsada. Los teclados matriciales, los cuales son los más utilizados en la gran mayoría de aplicaciones electrónicas se encuentran configurados, como su nombre lo indica, como una matriz. Para identificar una tecla, ésta se encuentra direccionada por una fila y una columna, y la intersección de ellas encasilla la tecla. En nuestro caso se explicará un ejemplo de interrupción por teclado, mediante un teclado matricial de 12 teclas (teclado de teléfono), el cual enviará el valor de la tecla pulsada a una pantalla de cristal liquido. Según el circuito, la tecla que sea pulsada presentará tanto en la fila como en la columna que la direcciona un O lógico, este cero será rotado por las columnas del teclado y cuando la tecla sea pulsada, éste será enviado directamente a la fila que la preside provocando con ello la interrupción por teclado. La forma de configurar el teclado es la siguiente: Configuramos los pines para el manejo del teclado, en nuestro caso los bits de PTA[6:3] serán entradas (filas) y los bits PTA[2:0] serán salidas (columnas).

MOV #$FF,PORTA

MOV #%10000111,DDRA Configuramos las resistencias de Pull-Up para los pines PTA[6:3] y habilitamos el pin PTA6 como un pin de I/O y no como una función del oscilador de tipo RC, colocando en 1 lógico en bit 7 del registro PTAPUE.

MOV #%11111000,PTAPUE Para evitar una interrupción falsa, efectuamos lo siguiente:

• IMASKK = 1 • Asignar los valores a cada uno de los KBIx. • ACKK = 0 • IMASKK = 0

Y el resultado es:

BSET IMASKK,KBSCR MOV #%01111000,KBIER

BCLR ACKK,KBSR BCLR IMASKK,KBSCR

166

UNIDAD VI

APLICACIÓN DE MICROCONTROLADORES EN INGENIERÍA ELÉCTRICA

IPN-ESIME Zacatenco Electrónica III

167

Nombre del proyecto:

“Control Automático de Nivel de Agua para Enfriamie nto Tipo OW de Transformadores Sumergidos en Aceite utilizan do el

microcontrolador HC12”

6.1 PLANTEAMIENTO DEL PROYECTO

En ingeniería eléctrica se necesitan de procesos que se efectúen de manera automática, uno de estos procesos tiene que ver con el enfriamiento de los transformadores, ya que éstos están propensos a sufrir fallas eléctricas si presentan transmisión de calor a través de sus devanados, lo que provoca que el material aislante se deteriore, existen diversos factores que pueden hacer que el transformador falle debido al calor producido en el mismo:

• La masa volumétrica. • El coeficiente de dilatación térmica. • La viscosidad. • El calor especificó. • La conductividad térmica.

El calor producido por las pérdidas se transmite a través de un medio al exterior, este medio puede ser aire o bien líquido. Transformadores con enfriamiento tipo OW: Los transformadores sumergidos en aceite, con enfriamiento por aguar están equipados con un cambiador de calor tubular colocado fuera del tanque, el agua de enfriamiento circula en el interior de los tubos y se drena por gravedad o por medio de una bomba independiente. El aceite fluye, estando en contacto con la superficie exterior de los tubos. El agua que circula a través de los tubos es drenada a un depósito donde se almacena y se vuelve a enfriar, de manera tal que después de ser enfriada vuelve a circular por medio de los mismos tubos para enfriar nuevamente el transformador, este proceso se hace de manera constante y no se debe interrumpir.

Objetivo

Controlar en forma automática el nivel de agua en los depósitos destinados a los transformadores con enfriamiento tipo OW, para el constante proceso de intercambio de calor. Obtener un óptimo proceso de enfriamiento que permita manipular el intercambio

168

de agua en los serpentines del transformador de manera constante mediante un proceso, utilizando el microcontrolador HC12.

6.2 ACEPTACIÓN DEL PROYECTO

En el tipo de enfriamiento OW (Oil –Water) El transformador se encuentra sumergido en aceite, cuyo enfriamiento se realiza en un intercambiador semejante al del tipo anterior, solo que el movimiento del aceite es por convección natural y el drenaje del agua es por gravedad.

Fig. 6.1 Transformador sumergido en aceite con enfriamiento tipo OW

La aplicación de microcontroladores para manipular procesos de control es importante en la ingeniería eléctrica, es este caso se implementará un programa con el microcontrolador del HC12 para controlar el suministro de agua en los depósitos destinados al enfriamiento del transformador sumergido en aceite. El microcontrolador será utilizado para detectar estados de 0 y 1 que indicarán el inicio del proceso de reabastecimiento del líquido a través de los tubos, por medio de niveles en los que permita el enfriamiento de agua. El proceso es el siguiente:

1. El agua drenada por el transformador será depositada en un contenedor o cisterna de enfriamiento de agua.

2. Los sensores detectarán cuando el contenedor se encuentre lleno y darán paso

al llenado de un segundo nivel de agua.

3. Una vez que se ha llenado el segundo nivel, se cerrará el sistema y el líquido frio circulará nuevamente por medio de serpentines en el transformador para el enfriamiento del mismo.

4. Una vez que el segundo depósito se vacíe, se dará paso a drenar nuevamente el

agua para el contenedor o cisterna de enfriamiento de agua.

IPN-ESIME Zacatenco Electrónica III

169

5. El proceso será constante.

6.3 SUPERVISIÓN

SENSORES: Los sensores de nivel consisten en 3 simples conductores para cada depósito sumergidos el agua y un conductor extra conectado a 5V del circuito. El agua se encarga de hacer la conexión eléctrica entre los sensores y el conductor de 5V. Así, cuando el agua llegué al primer nivel el nivel lógico cambiará de 0 a 1 indicando que ya hay agua en ese nivel. Para los otros sensores es lo mismo, de modo que cuando el depósito este lleno el microcontrolador leerá todas las entradas de sensores de ese depósito como "1", Cuando esté vacío los leerá como 0. Para más estabilidad en los estados leídos por el micro se recomienda usar resistencia PULL-DOWN conectadas a las entradas del micro.

Fig. 6.2 Diagrama pictórico del sistema controlado

Como se ve en la figura 6.2, hay dos LED´s que indican la falta de agua o una cisterna llena. Los sensores de la cisterna se conectan a los pines 6, 5 y 4 del puerto A, los sensores del tinaco se conectan a los pines A0, A1 y A2 del mismo puerto A. La bomba de agua y

170

la electroválvula que controla el llenado de la cisterna son controladas por pines del puerto B.

Fig. 6.3 Diagrama de conexión eléctrica

Arriba aparece el diagrama de conexión eléctrica. El motor de la bomba y la válvula electromecánica son activadas por medio de transistores con su respectivo diodo de "marcha libre" para evitar sobrecalentamientos en el transistor. El pin B2 del puerto B controla al motor y al indicador de cisterna vacía por lo que habrá poner atención en los niveles de voltaje, tal vez sea necesario no conectar el LED al mismo pin.

6.4 PRUEBAS DE ACEPTACIÓN

La tabla 6.4 presenta la lógica de control. Con poca agua no se activa el motor de llenado del nivel dos y se abre la válvula de llenado de cisterna. Con nivel medio de agua se puede llenar el nivel dos, etc. El microcontrolador usado es el HC12 en una tarjeta de evaluación de la empresa RACOM. Como compilador se usa el UTIL12 en ambiente MS-DOS. Se programa en lenguaje ensamblador. El programa se corre en línea, es decir, el código corriendo en la memoria RAM del microcontrolador.

IPN-ESIME Zacatenco Electrónica III

171

A7 A6 A5 A4 A3 A2 A1 A0 B2 B1 B0 Pines del microcontrolador HC12 0 0 0 0 0 0 0 0 Caso1 1 0 0 Cisterna vacia, bomba no enciende 0 0 0 0 0 0 0 1 Caso1 1 0 0 0 0 0 0 0 0 1 1 Caso1 1 0 0 0 0 0 0 0 1 1 1 Caso1 1 0 0 0 0 0 1 0 0 1 1 Caso1 1 0 0 0 0 0 1 0 1 1 1 Caso1 1 0 0

0 0 0 1 0 0 0 0 Caso2 1 0 1 Cisterna con poco liquido pero puede

abastecer nivel 2 0 0 0 1 0 0 0 1 caso2 1 0 1 0 0 1 1 0 0 0 0 Caso 3 0 0 1 cisterna con nivel de agua suficiente 0 0 1 1 0 0 0 1 Caso 3 0 0 1 0 0 1 1 0 0 1 1 Caso 4 0 0 0 Cisterna y nivel 2 con agua suficiente 0 0 1 1 0 1 1 1 Caso 4 0 0 0 0 1 1 1 0 0 0 0 Caso 5 0 1 1 Cisterna llena, motor funcionando 0 1 1 1 0 0 0 1 Caso 5 0 1 1 0 1 1 1 0 0 1 1 Caso 6 0 1 0 cisterna llena, bomba apagada 0 1 1 1 0 1 1 1 caso 6 0 1 0

Tabla 6.4 Lógica de control

A continuación se presenta el programa en lenguaje ensamblador para el funcionamiento del microcontrolador HC12 ;***************************************************************************** ;Este programa controla el nivel de agua en una cisterna alimentada por una ;válvula electromecánica y en un nivel 2 alimentado por una bomba de agua para ;el suministro de líquido a los serpentines de un transformador con ;enfriamiento tipo OW ;El nivel de agua se mide por medio de tres sensores en cada deposito ;conectados al Puerto A ;El control se realiza abriendo o cerrando la válvula y activando o apagando ;la bomba de agua. ;***************************************************************************** INCLUDE "EQUHC12.ASM" CLR COPCTL ORG $800 MOVB #$00,DDRA ;PUERT A COMO ENTRADAS MOVB #$07,DDRB ;PUERTO B CON TRES SALIDAS INICIO: LDAA PORTA ;LEEE DATOS EN PUERTO A LDAB #$00 CBA ;CISTERNA VACIA Y TODOS LOS CASOS POSIBLES BEQ CASO1 ;EN EL NIVEL 2 LDAB #$01 CBA BEQ CASO1 LDAB #$03

172

CBA BEQ CASO1 LDAB #$07 CBA BEQ CASO1 LDAB #$10 ;CISTERNA EN EL NIVEL MAS BAJO, NECESITA AGUA CBA ;PERO PUEDE FUNCIONAR LA BOMBA BEQ CASO2 LDAB #$11 CBA BEQ CASO2 LDAB #$13 CBA BEQ CASO1 LDAB #$17 CBA BEQ CASO1 LDAB #$30 ;CISTERNA CON EL NIVEL >= QUE LA MITAD, NO ES CBA ;NECESARIO ABRIR LLAVE PARA LLENAR LA CISTERNA BEQ CASO3 LDAB #$31 CBA BEQ CASO3 LDAB #$33 CBA BEQ CASO4 LDAB #$37 CBA BEQ CASO4 LDAB #$70 ;CISTERNA LLENA, ENCIENDE LED VERDE, ES DECIR CBA ;EL NIVEL DEL AGUA ESTA EN SU MAXIMO NIVEL Y ES BEQ CASO5 ;NECESARIO DETENER EL PASO DEL AGUA PARA EVITAR LDAB #$71 ;QUE EL AGUA SE DERRAME. CBA BEQ CASO5 LDAB #$73 CBA BEQ CASO6 LDAB #$77 CBA BEQ CASO6 INICIO1: BRA INICIO CASO1: MOVB #$04,PORTB ;INDICA CISTERNA VACIA, LA BOMBA NO ENCENDERA BRA INICIO1 CASO2: MOVB #$05,PORTB ;INDICA CISTERNA CON POCO LIQUIDO PERO PUEDE BRA INICIO1 ;ABASTECER EL NIVEL 2 CASO3: MOVB #$01,PORTB ;CISTERNA CON NIVEL DE AGUA SUFICIENTE BRA INICIO1 CASO4: MOVB #$00,PORTB ;EL NIVEL 2 Y CISTERNA TIENEN AGUA SUFICIENTE BRA INICIO1 CASO5: MOVB #$03,PORTB ;CISTERNA LLENA MOTOR FUNCIONANDO BRA INICIO1 CASO6: MOVB #$02,PORTB ;CISTERNA LLENA BOMBA APAGADA BRA INICIO1 SWI

IPN-ESIME Zacatenco Electrónica III

173

6.5 DEMOSTRACIÓN Y EXHIBICIÓN DEL PROYECTO Debido a que la demostración de este proyecto requiere de elementos tales como transformadores y equipos sofisticados, se puede comprobar el funcionamiento implementando una simulación con materiales accesibles.

• Se puede utilizar un motor de pecera para simular la bomba.

• La válvula electromecánica se puede representar mediante un LED que indique su activación.

• Los sensores pueden ser pequeños trozos de cable con la punta descubierta.

• Los depósitos de agua pueden ser contenedores tales como cubetas o recipientes que contengan la cantidad indispensable de agua para el suministro.

• Se puede simular el enfriamiento del transformador mediante tubos de cobre en forma de serpentín, siendo calentado con ayuda de mecheros en la parte central del tubo.

174

REFERENCIAS BIBLIOGRÁFICAS Rodríguez, Luis (1999). Electrónica digital Moderna. Compañía Editorial Tecnológica CEKIT. TOCCI, Ronald. (1995). Sistemas digitales principios y aplicaciones. México: Prentice Hall. Quinta edición. “Digital systems principles and applications”. Traducido por: Edmundo G. Urbina M. WARKELY, John F. (1997). Diseño digital principios y prácticas. México: Prentice Hall. “Digital design principles and practices”. Traducido por: Gutiérrez R. Raymundo H. BENVENUTO, Omar (1998). Manual práctico de Circuitos Digitales. Barquisimeto Estado Lara. Arquitectura de computadoras. Tercera edición. M. Morris Mano. Universidad estatal de California en los Ángeles Microcontroladores (MOTOROLA-FREESCALE) Programación, familias y sus distintas aplicaciones en la industria. JUAN CARLOS VESGA FERREIRA. EDITORIALALFAOMEGA. Aula siglo XXI: "Computación y Tecnología", curso de orientación escolar; edición 2002. Cultural, S.A. Impreso en Madrid - España Tocci, Ronald j. Sistemas digitales: principios y aplicaciones. 8va edición Pearson education, México 2003 Stephen Brown Zvonko Vranesic. Fundamentos de lógica digital. 2 edición Mac Graw Hill Http://es.geocities.com/nihonmex2000/Controlautomatico.htm Http://www.monografias.com/trabajos3/sistnumer/sistnumer.shtml

IPN-ESIME Zacatenco Electrónica III

175

ANEXO

176

ANEXO

Prácticas realizadas en laboratorio usando el programa de simulación

Digital Works

Decodificadores

IPN-ESIME Zacatenco Electrónica III

177

Habilitadores

178

IPN-ESIME Zacatenco Electrónica III

179

Decodificador de 7 segmentos

180

IPN-ESIME Zacatenco Electrónica III

181

Circuitos secuenciales

182

Memoria ROM – RAM

IPN-ESIME Zacatenco Electrónica III

183

Prácticas realizadas en laboratorio usando el programa Code Warrior en leguaje ensamblador

• SUMA

LDAA $0800 ADDA $0801 STAA $0802 SWI

• RESTA

LDAA $0800 SUBA $0801 STAA $0802 SWI

• MULTIPLICACION

LDAA $0800 LDAB $0801 MUL STAA $0802 STAB $0803 SWI

• DIVISION LDAA $0800 LDAB $0801 LDX $0802 IDIV STX $0804 STD $0806 SWI

• RAIZ CUADRADA

MOVB #1, $0801 CLR $0802 LDAA $0800

REPITE: CMPA $0801 BMI FIN SUBA $0801 INC $0802 INC $0801

184

INC $0801 BRA REPITE

FIN: STAA $0803 SWI

• RETARDO

LDAA #$03

VAGO: DECA BNE VAGO

SWI

• NUMERO PAR O IMPAR

LDAA $0800 ANDA #1 BEQ PAR MOVB #1,0801 BRA FIN

PAR: CLR $0801 FIN: SWI

• SERIE DE FIBONACCI

LDAB $0800 BEQ FIN LDX #$0804 MOVB #1,$0801 MOVB #1,$0802

REPITE: LDAA $0801 STAA 0, X ADDA $0802 MOVB $0802, $0801 STAA $0802 NX DECB BNE REPITE

FIN: SWI

• METODO DE LA BURBUJA

LDX #$0808 LDY #$0809 MOVB #$9, $0800

DNUEVO: MOVB $0800, $0801 REPITE: LDAA X

IPN-ESIME Zacatenco Electrónica III

185

LDAB Y CBA BMI SALTA INY DEC $0801 BNE REPITE BEQ SIGUE

SALTA: MOVB Y, X STAA Y INY DEC $0801 BNE REPITE BEQ SIGUE

SIGUE: INX LEAY 1, X DEC $0800 BNE DNUEVO SWI

• ENTRADA DE UN DATO

CLR COPCTL CLR DDRB

OTRO: LDAA PORTB BRA OTRO SWI

• SALIDA DE UN DATO

CLR CPOCTL MOVB #$FF, DDRB LDAA #$55 STAA PORTB SWI