interactivo en esta edición
Rito Mijarez Castro
ELECTRÓNICA
ELECTRÓNICA RITO
MIJAREZ
CASTRO
PRIMERA EDICIÓN EBOOK MÉXICO, 2014
GRUPO EDITORIAL PATRIA
info
editorialpatria.com.mx
www.editorialpatria.com.mx
Dirección editorial: Javier Enrique Callejas Coordinadora editorial: Estela Delfín Ramírez Supervisor de prepensa: Gerardo Briones González Diseño de portada: Juan Bernardo Rosado Solís Diseño de interiores: Visión tipografíca editores Ilustraciones: Mosto diseño & Seditograf Fotografías: © Thinkstockphoto Revisión técnica: Alex Polo Velázquez Universidad Autónoma Metropolitana-Azcapotzalco Electrónica Derechos reservados: © 2014, Rito Mijarez Castro © 2014, GRUPO EDITORIAL PATRIA, S.A. DE C.V. Renacimiento 180, Colonia San Juan Tlihuaca, Delegación Azcapotzalco, Código Postal 02400, México, D.F. Miembro de la Cámara Nacional de la Industria Editorial Mexicana Registro núm. 43 ISBN ebook: 978-607-438-910-4 Queda prohibida la reproducción o transmisión total o parcial del contenido de la presente obra en cualesquiera formas, sean electrónicas o mecánicas, sin el consentimiento previo y por escrito del editor. Impreso en México Printed in Mexico Primera edición ebook: 2014
Contenido
0 Introducción
1
Por qué este capítulo es el número cero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Qué tiene de atractivo y “cool” este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Electricidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2
Conductores, aislantes y semiconductores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
Sistemas eléctricos y analogías con otros sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . Visualización de componentes eléctricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 6
La resistencia es análoga a la fricción . . . . . . . . . . El inductor es análogo a la masa . . . . . . . . . . . . . El capacitor es análogo al resorte . . . . . . . . . . . . . Combinación de elementos, circuitos más complejos .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
7 8 8 9
Es la ley: la ley de Ohm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Potencia eléctrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Divisor de voltaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
El capacitor se opone a los cambios de voltaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . El inductor se opone a los cambios de corriente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuitos en serie y en paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12 15 17
Cómo es que la corriente es la misma en todas las partes de un circuito en serie . . . . . . .
18
DATOS IMPORTANTES DEL CAPÍTULO 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PROBLEMAS DEL CAPÍTULO 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20 21
1 Dispositivo semiconductor básico: el diodo
23
Semiconductores intrínsecos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Semiconductores extrínsecos o dopados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24 26
Semiconductores tipo n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Semiconductores tipo p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 27
Construcción del diodo semiconductor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Polarización directa del diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28 29
V
CONTENIDO
Polarización inversa del diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Corriente de fuga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Curva característica voltaje-corriente de los diodos . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Voltaje de ruptura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Resistencia de CD de un diodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31 32
Aproximaciones de los diodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuitos rectificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32 35
Rectificador de media onda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Rectificación filtrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Reguladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
Diodos de propósito específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
Diodos emisores de luz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diodo Zener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44 46
PROBLEMAS DEL CAPÍTULO 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DATOS IMPORTANTES DEL CAPÍTULO 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49 49
2 El activo transistor
53
Construcción del transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Polarización del transistor BJT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
Regiones de operación de los transistores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
Región de saturación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Región de corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Región activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59 59 60
Región de ruptura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
Valores máximos de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
Potencia de disipación Pd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Factor de reducción de Pd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Voltajes de ruptura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60 61 61
Verificación del transistor con un óhmetro . Transistor como interruptor . . . . . . . . . . Transistor Darlington . . . . . . . . . . . . . . . Transistores FET . . . . . . . . . . . . . . . . . .
VI
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
61 63 71 72
Tipos de FET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Construcción del transistor JFET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operación y características principales del transistor JFET . . . . . . . . . . . . . . . . . . . . . . .
72 73 74
Transistor FET como interruptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transistores como amplificadores lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77 79
DATOS IMPORTANTES DEL CAPÍTULO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PROBLEMAS DEL CAPÍTULO 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79 80
ELECTRÓNICA • MIJAREZ
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
CONTENIDO
3 El mágico amplificador operacional
81
Concepto de retroalimentación . . . . . . . . . . . . . . . . . . . Teoría importante de los OP AMPs . . . . . . . . . . . . . . . . . Amplificadores diferenciales . . . . . . . . . . . . . . . . . . . . . Análisis de CD/CA y ganancias del amplificador diferencial .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
82 83 88 89
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
89 91 92 93 93
El amplificador operacional y sus características principales . . . . . . . . . . . . . . . . . . . . .
94
Análisis de CD . . . . . . . . . . . . . . . . . Análisis de CA . . . . . . . . . . . . . . . . . Ganancia de voltaje diferencial, A d . . . . . . Ganancia de voltaje de modo común, ACM . Razón de rechazo de modo común (CMRR)
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Ganancia de voltaje de lazo abierto, AVOL . . . . . . . . . . . . . . . Corrientes de polarización de las entradas . . . . . . . . . . . . . . Voltajes de entrada de offset . . . . . . . . . . . . . . . . . . . . . . Impedancia de entrada. . . . . . . . . . . . . . . . . . . . . . . . . . Impedancia de salida: oscilación de salida vs. resistencia de carga . Respuesta a la frecuencia . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
96 98 98 99 99 100
Slew rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101
Settling time. . . . . . . . . . . . . . . . . . . . . . . . . Corriente de corto circuito . . . . . . . . . . . . . . . . Razón de rechazo de modo común (CMRR) . . . . . . Razón de rechazo de la fuente de alimentación (PSRR) Ruido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . OP AMP reales y su selección . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
108 109 109 110 110 111 111 112 113 114
Circuitos populares con OP AMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
El amplificador sumador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Amplificador diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Amplificador de instrumentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115 116 118
Filtros activos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
122
Filtro pasa-bajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Filtro activo pasa-altas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
123 124
Convertidores de voltaje a corriente y de corriente a voltaje . . . . . . . . . . . . . . . . . . . . .
125
Convertidores de voltaje a corriente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
125
grupo editorial patria®
. . . . . . . . . .
. . . . . .
. . . . . .
108
. . . . . . . . . .
. . . . . .
. . . . . .
Circuito básicos del OP AMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
103 103 104 104 105 107
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
El amplificador inversor . . . . . . . . . . . . . . . . . Ganancia de voltaje de lazo cerrado ACL . . . . . . . . Impedancia de entrada, ZENT . . . . . . . . . . . . . . Impedancia de salida, ZSAL . . . . . . . . . . . . . . . El amplificador no-inversor . . . . . . . . . . . . . . . Impedancia de entrada, ZENT . . . . . . . . . . . . . . Impedancia de salida, ZSAL . . . . . . . . . . . . . . . Seguidor de voltaje . . . . . . . . . . . . . . . . . . . . Ancho de banda del OP AMP . . . . . . . . . . . . . Producto ganancia-ancho de banda de lazo cerrado .
. . . . . .
. . . . . .
. . . . . . . . . .
VII
CONTENIDO
Convertidor de corriente a voltaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuitos OP AMP con diodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cargas conmutadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
126 128 128
Circuito comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
129
Corrimiento del voltaje de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuito comparador Schmitt trigger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
129 130
Circuito Schmitt trigger no simétrico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
132
ADC y DAC las interfaces entre el mundo digital y el mundo analógico . . . . . . . . . . . . .
133
Términos técnicos de la interface analógica-digital-analógica . . . . . . . . . . . . . . . . . . . . . Convertidor analógico a digital (ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Convertidor digital a analógico (DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
135 137 141
Las misteriosas tierras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
146
Tierras digitales y analógicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
149
Consideraciones y recomendaciones generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
151
DATOS IMPORTANTES DEL CAPÍTULO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PROBLEMAS DEL CAPÍTULO 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
153 154
4 La maravillosa electrónica digital
159
“Contando con dedos, piedras, semillas… y los sistemas numéricos” . . . . . . . . . . . . . . . Sistemas numéricos de posición . . . . . . . . . . . . . . . . . Contar en decimal . . . . . . . . . . . . . . . . . . . . . . . . . El sistema númerico binario. . . . . . . . . . . . . . . . . . . . Contando en binario . . . . . . . . . . . . . . . . . . . . . . . . Aprendiendo las tablas de multiplicar . . . . . . . . . . . . . . El sistema numérico hexadecimal . . . . . . . . . . . . . . . . Contar en hexadecimal . . . . . . . . . . . . . . . . . . . . . . Combinación de dígitos y peso de columnas en hexadecimal Conversión entre números hexadecimales y binarios . . . . . Lógica de la electrónica digital . . . . . . . . . . . . . . . . . . Compuerta inversor (NOT) . . . . . . . . . . . . . . . . . . . La compuerta AND . . . . . . . . . . . . . . . . . . . . . . . . La compuerta OR . . . . . . . . . . . . . . . . . . . . . . . . . Compuerta NAND. . . . . . . . . . . . . . . . . . . . . . . . . Compuerta NOR . . . . . . . . . . . . . . . . . . . . . . . . . . Compuertas XOR y XNOR . . . . . . . . . . . . . . . . . . . .
VIII
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
161 163 163 164 165 165 166 167 167 167 168 169 170 171 172 172
Simplificación de circuitos, sumadores y decodificadores . . . . . . . . . . . . . . . . . . . . . . .
173
Minitérminos y maxitérminos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sumadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
173 175
Restas usando circuitos sumadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
177
Suma y resta en complemento a 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplicaciones usando sumadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Decodificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
177 181 181
Celdas de memoria, memorias y máquinas de estado . . . . . . . . . . . . . . . . . . . . . . . . .
181
ELECTRÓNICA • MIJAREZ
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
160
CONTENIDO
Celdas de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memorias no volátiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memorias volátiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
181 182 184
Flipflops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
185
Memorias SRAM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos de tercer estado y latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
189 190
Dispositivos de tercer estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La magia del tercer estado de los buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
190 192
Latches tipo D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Usar alambres para representar números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Máquinas de estado y dispositivos lógicos programables . . . . . . . . . . . . . . . . . . . . . . . .
194 195 196
Máquinas de estado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos lógicos programables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
196 197
Principales tecnologías digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
200
Tecnologías TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
202
Niveles de entrada y de salida de las familias TTL . . . . . . . . . . . . . . . . . . . . . . . . . Margen de ruido en familias TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuraciones de salida en las familias TTL . . . . . . . . . . . . . . . . . . . . . . . . . . .
202 203 203
Tecnologías CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Niveles de voltaje de entrada y salida y margen de ruido en la familia 74 AC CMOS . . . . . . . . Parámetros relevantes para las familias TTL y CMOS . . . . . . . . . . . . . . . . . . . . . . . . .
206 207 208
Disipación de potencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Consumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Retardo de propagación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abanico de entrada, abanico de salida, cargas e interconexión de familias lógicas . Otras tecnologías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
208 209 209 210 211
Recapitulando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
212
DATOS IMPORTANTES DEL CAPÍTULO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PROBLEMAS DEL CAPÍTULO 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
213 214
5 El popular microcontrolador
215
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Esbozo histórico de los microprocesadores y microcontroladores . . . . . . . . . . . . . . . . .
215 216
Microprocesadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frenéticos por las computadoras digitales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
217 217 219
Señales de reset y de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dispositivos de memorias y puertos de entrada y salida . . . . . . . . . . . . . . . . . . . . . . Buses de datos, direcciones y control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
219 222 223
Desmitificando a la CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
226
Ciclo de instrucción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
226
Calculadora lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
228
grupo editorial patria®
IX
CONTENIDO
Lógica para establecer bits individuales en 0 lógico . . . . . . . . . . . . . . . . . . . . . . . . Lógica para establecer bits individuales en 1 lógico . . . . . . . . . . . . . . . . . . . . . . . .
229 230
Lógica para complementar bits individuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
231
Corrimiento de bits . . . . . . . . . . . . . . . . . . . . . . . Organización de memoria y decodificación de direcciones . Decodificación parcial o total . . . . . . . . . . . . . . . . . Interfaz con dispositivos periféricos . . . . . . . . . . . . . .
. . . .
231 233 235 241
Programación simple de una CPU o μP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
257
Programa o software . . . . . . . . . . . . . . . . . . . . . . . Lenguajes de máquina y lenguaje ensamblador . . . . . . . . Desarrollo de programas sencillos en lenguaje ensamblador Hardware, software y firmware . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
279 279 281 283 285 285
Expansión de memoria y dispositivos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
285
Acceso a la memoria externa de código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acceso a la memoria externa de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acceso a periféricos (puertos de E/S) mapeados a memoria . . . . . . . . . . . . . . . . . . . . . .
287 287 291
Arquitectura de software del 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modos de direccionamiento del MCS-51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clasificación de instrucciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
295 295 302
Directivas, símbolos, etiquetas y comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
316
Directivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Símbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
316 318 318
ELECTRÓNICA • MIJAREZ
. . . . . .
. . . . . . . .
. . . . . .
Organización de memoria de programa externa Organización de memoria de datos interna . . Descripción de terminales o pines . . . . . . . . Puertos del MCS-51 . . . . . . . . . . . . . . . . ALE y PSEN . . . . . . . . . . . . . . . . . . . . . Señal para acceso externo, EA . . . . . . . . . .
. . . . . .
. . . . . . . .
. . . .
278
. . . . . .
. . . . . . . .
. . . .
. . . .
Organización de memoria del 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . .
. . . .
271 274 274 276 276 276 276 277
. . . . . .
. . . . . . . .
. . . .
. . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . .
. . . .
271
. . . . . . . .
. . . .
. . . .
El popular microcontrolador 8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .
. . . .
270 270
. . . . . . . .
. . . .
. . . .
Mercado en movimiento: microcontroladores de 8 bits . . . . . . . . . . . . . . . . . . . . . . Criterios para seleccionar un microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . .
. . . .
269
. . . . . . . .
. . . .
. . . .
Microcontroladores de 8, 16 y 32 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . .
. . . .
267 268
. . . . . . . .
. . . .
. . . .
Arquitectura Princeton o Von Neumann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitectura Harvard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . .
. . . .
265 266
. . . . . . . .
. . . .
. . . .
¿Qué es un microcontrolador? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitecturas de procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . .
. . . .
265
. . . . . . . .
. . . .
. . . .
Microcontroladores de 8 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . .
. . . .
257 258 259 265
. . . . . . . .
. . . .
. . . .
. . . .
Arquitectura de hardware del microcontrolador 8051 . CPU del 8051 . . . . . . . . . . . . . . . . . . . . . . . . Ciclos de máquina . . . . . . . . . . . . . . . . . . . . . ALU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Acumulador . . . . . . . . . . . . . . . . . . . . . . . . . Registro PSW . . . . . . . . . . . . . . . . . . . . . . . . Otros registros de la CPU . . . . . . . . . . . . . . . . . Registros con funciones especiales . . . . . . . . . . .
X
. . . .
. . . . . .
CONTENIDO
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
319
Programación en lenguaje ensamblador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
319
Formato de un programa en lenguaje ensamblador del 8051 . . . . . . . . . . . . . . . . . . . Más sobre los archivos LST y HEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
319 324
Ejecución de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
325
Ejecución de programas usando el simulador TS Controls . . . . . . . . . . . . . . . . . . . . Ejecución de programas usando un sistema mínimo. . . . . . . . . . . . . . . . . . . . . . . . Estrategia de construcción y pruebas de un dispositivo electrónico . . . . . . . . . . . . . . .
327 328 330
Ejemplos sencillos de procesamiento y control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
331
Suma, resta, ajuste a decimal, multiplicación y división . . . . . . . . . . . . . . . . . . . . . .
331
Uso de directivas, símbolos y llamadas a subrutinas . . . . . . . . . . . . . . . . . . . . . . . . . . Operaciones de control y transferencia de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Periféricos internos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
337 339 342
Particularidades de las interrupciones del 8051. . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupciones externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
343 348
Contadores/temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
353
Modos de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
356
Fuentes de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cálculo y lectura de los registros TLx/THx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inicialización y ABPRA con los temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
358 358 359
Puerto serie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Registro SBUF y registro SCON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modos de operación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
361 361 363
Comunicación multiproceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
368
. . . .
368 370 371 375
Modos de ahorro de energía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
379
Activación del modo idle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Activación modo power down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
381 382
Arquitectura del AT89C2051 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
382
ABPRA para hacer uso del comparador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
384
Interfaces sencillas de hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
385
Selección de velocidades en bauds del puerto serie. Temporizador 1 como reloj de velocidad en bauds Ejemplos de programación del puerto serie . . . . . ABPRA para el puerto serie . . . . . . . . . . . . . .
. . . .
. . . .
Interfaces de E/S seriales . . . . . . . . . . . . . . . . . Interfaz RS232 . . . . . . . . . . . . . . . . . . . . . . . Interfaz USB . . . . . . . . . . . . . . . . . . . . . . . . Interfaces de hardware para E/S digitales y analógicas.
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
385 386 388 389
Futuro del 8051 y los microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
391
DATOS IMPORTANTES DEL CAPÍTULO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PROBLEMAS DEL CAPÍTULO 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
392 396
grupo editorial patria®
. . . .
. . . .
. . . .
XI
Prefacio
Las intenciones de este libro son proporcionar los fundamentos de electrónica, los cuales se encuentran en los programas de estudio de electrónica básica en las carreras de ingeniería electrónica, ingeniería mecatrónica y diversas variaciones de carreras de electrónica en diferentes universidades del país. La electrónica es un campo que cambia vertiginosamente, con componentes cada vez más rápidos, de menor tamaño y menor consumo de potencia, lo cual ofrece nuevos retos y oportunidades; sin embargo, sus principios fundamentales persisten. Muchas veces me he encontrado con ingenieros graduados o con estudiantes cursando los últimos semestres de la carrera con una falta de entendimiento de los principios básicos de electrónica o con un olvido casi completo de temas primordiales. Tratando de mantener el paso de una industria globalizada y en cambio constante, los contenidos de las universidades cada vez son más ambiciosos e incluyen herramientas computacionales, como programas de simulación, y una gran cantidad de tópicos que los maestros tratan de cubrir. Procurando llegar al tema Z, muchas veces se sacrifican los fundamentos de A y B haciéndolos más breves o menos claros. Por otro lado, recordando el tiempo en que fui estudiante, se dan casos en los que la carga de materias es tan grande que, acompañado de grandes dosis de café, solo se estudia para pasar el examen, responder lo que el maestro quiere ver y terminar el tema sin una pizca de conocimiento útil. Como consecuencia, algunos temas permanecen confusos y farragosos. El objetivo de este libro no es revolucionar el sistema educativo, sino tratar los temas básicos y provechosos de la electrónica de una manera clara, lo cual permita tener un entendimiento de los circuitos a construir y de las posibles aplicaciones de los mismos. No hay nada como ver la cara de un estudiante cuando entiende un concepto o construye un circuito del cual tiene cabal control. Cabe mencionar que si un personaje como yo, con una tendencia a participar en múltiples actividades deportivas, culturales, sociales, etc., y capaz de distraerse con el paso de una mosca, pudo entender los bloques de construcción fundamentales de la electrónica, significa que muchos estudiantes pueden hacerlo. El capítulo 0, la introducción, describe qué tiene de atractivo y “cool” este libro y proporciona los conocimientos de circuitos eléctricos y principios básicos de los semiconductores. La teoría básica de los circuitos eléctricos y del análisis de los circuitos eléctricos, aun cuando se asume un escaso, pero mínimo conocimiento de esos temas, se incluyen porque son pilares del estudio de la electrónica; sin embargo, debido al espacio asignado a este libro se incluyeron en el CD-ROM que acompaña a este libro. El capítulo 1 versa sobre el dispositivo semiconductor básico: el diodo. Se aborda la construcción básica de este dispositivo y sus características de conducción unidireccional y sus principales aplicaciones, incluyendo la descripción de los diodos LED y diodos Zener. El capítulo 2 trata del ingrediente principal de todo circuito electrónico: el activo transistor. En este capítulo se analizan las características de construcción y de operación de los transistores bipolares, BJT, de los arreglos de transistores Darlington y de los transistores tipo FET, principalmente operando como interruptores, más que como amplificadores. La razón de lo anterior es que en la actualidad rara vez se utilizan los transistores como amplificadores. Para realizar funciones de amplificación, en el capítulo 3 se estudian con detalle las características teóricas y prácticas de los CI denominados amplificadores operacionales (OP AMP). El OP AMP es uno de los bloques fundamentales en el diseño electrónico con el cual se pueden realizar numerosas aplicaciones, debido a que puede configurarse en una gran
XIII
PREFACIO
variedad de formas, para llevar a cabo muchas operaciones tales como amplificación, filtrado, comparación de señales y funciones de transferencia. Además, con el OP AMP se puede sumar, restar, integrar o diferenciar señales. Sí, este capítulo estudia los conceptos y teoría del mágico Amplificador Operacional, así como algunas de sus aplicaciones cardinales considerándolo como una caja negra o mejor dicho, como una caja mágica. El capítulo 4 esclarece los fundamentos de cómo se lleva a cabo la maravillosa electrónica digital, principalmente como antesala de los sistemas basados en microprocesadores y microcontroladores. Por último, el capítulo 5 desmitifica al popular microcontrolador. En este capítulo se presenta un esbozo histórico de los microprocesadores y de los microcontroladores, y después se abordan los conceptos fundamentales de los microprocesadores por medio de un microprocesador modelo, el cual contiene los elementos principales de la mayoría de los microprocesadores. En el capítulo 5 se hace uso de una calculadora con operaciones lógicas e instrucciones de transferencia de datos básicas, la cual se incluye en el CD que acompaña este libro. Los conceptos aprendidos sirven como preparación para entrar al mundo de los microcontroladores. Por último, en este capítulo se describen las características más importantes de hardware y software de los microcontroladores de la familia MCS-51 de Intel. Además, en este capítulo se presenta un enfoque práctico llamado el ABpra, orientado para aprender basándonos en prácticas de laboratorio, pero también incluiremos prácticas (ver el CD-ROM) usando un simulador comercial. Estas prácticas enfatizan conceptos simples pero importantes del microcontrolador 8051, que una vez comprendidas se pueden aplicar a cualquier microcontrolador consultando su manual de usuario y hojas técnicas. Como mi cerebro trabaja de manera escalonada, por no decir lenta, cada tema va de etapa en etapa, recomendando no pasar a la siguiente sin entender la previa. Con más de quince años dando clase en las materias de electrónica y de microcontroladores, ninguno de mis estudiantes se ha quejado de esta metodología. Este texto no tiene la intención de ser una guía del estado actual de la electrónica, sería, además de arrogante, para mí, imposible. El propósito es proveer al lector las habilidades claves de la electrónica, en forma similar a los bloques de construcción tipo Lego, que posteriormente le permitirá realizar maravillosos instrumentos. A fin de cuentas la palabra Lego proviene de la expresión Danesa Leg godt, que significa “jugar bien”. Espero disfruten el libro y jueguen bien.
XIV
ELECTRÓNICA • MIJAREZ
Acerca del autor
Rito Mijarez Castro recibió el grado de ingeniero en electrónica y comunicaciones de la Universidad Autónoma de Zacatecas (UAZ), México. La maestría en Instrument Design and applications por el Instituto de Ciencia y Tecnología de la Universidad de Manchester (UMIST) y el grado de doctor por la Escuela de Ingeniería Eléctrica y Electrónica de la Universidad de Manchester, ambas en el Reino Unido. Es investigador de tiempo completo del Instituto de Investigaciones Eléctricas (IIE) en Cuernavaca, México, y maestro de cátedra del Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM) campus Cuernavaca. Tiene en colaboración una treintena de artículos en conferencias, revistas científicas y capítulos de libros; cuenta con cuatro patentes otorgadas: tres en México y una en el Reino Unido; y dos patentes pendientes: una en México y otra en Estados Unidos. Es miembro del Sistema Nacional de Investigadores.
XV
Agradecimientos
Mis más sinceras gracias para la Ing. Estela Delf ín, editora de ingeniería de una editorial con mucha tradición en México como es la Editorial Patria, ahora empresa del grupo Hachette Livre, por su entusiasmo y paciencia durante la redacción del libro, y al Lic. Carlos Lara por la elaboración del CD-ROM que acompaña a este libro. Deseo expresar mi gratitud a mis colegas del Instituto de Investigaciones Eléctricas: Gilberto Vidrio López, Roberto Castán Luna, José Martín Gómez López, David Pascacio Maldonado, Fernando Ramírez Garduño, Joaquín Rodríguez Rodríguez y Javier Antunez Estrada por compartir su conocimiento a lo largo de todos estos años. Mención especial para Javier Antunez Estrada, que siendo del área de informática implementó mis ideas de la calculadora digital y fórmulas que se incluyen en el CD-ROM del libro. Gracias a mis colegas del ITESM campus Cuernavaca, Mónica Larre, Arturo Pérez y Ricardo Cojuc, por ayudarme a mejorar como maestro. Gracias también a los revisores por sus comentarios y consejos expertos. Por último, mi más profundo agradecimiento para Eva, por su motivación y paciencia durante todos estos meses, y por su tolerancia durante los innumerables momentos que deje de compartir con la familia mientras escribía acompañado de mis pensamientos y mi café; sin su apoyo, simplemente este libro no hubiera sido posible.
XVII
Dedicatoria
Para Eva que envuelve todos mis días y mis noches, que es mi sed y mi agua en esta aventura maravillosa que es la vida. Para Marvel que huele los libros nuevos y sonríe, porque a sus once años sabe que las historias hechas tinta tienen olor y sabor; y para Marlon, que a sus tres años, deja alegría y color por todos los rincones de la casa.
XIX
0 Introducción Las materias de electrónica asumen un conocimiento previo de circuitos eléctricos; no obstante, algunos conceptos pueden no estar muy claros o estar por completo enterrados en el baúl del olvido. En este capítulo vamos a aprender:
X X X X X X X X
Por qué este capítulo es el número cero. Qué tiene de atractivo y “cool” este libro. Qué es la electricidad. Conductores, aislantes y semiconductores. Sistemas eléctricos y analogía con otros sistemas. Es la ley, la ley de Ohm. El divisor de voltaje. Serie y paralelo.
POR
QUÉ ESTE CAPÍTULO ES EL NÚMERO CERO
La idea de iniciar este libro con el capítulo cero es doble. La primera es mostrar, de manera general, los principios básicos de la electricidad, los cuales nutren los sistemas y circuitos electrónicos y que se asume que la mayoría de los estudiantes de electrónica conoce. Si usted es de este grupo, puede brincarse esta sección e iniciar en la sección Análisis de circuitos eléctricos que se encuentra en el CD-ROM, o leer el presente capítulo para descubrir si la explicación de lo que es electricidad se expresa de manera novedosa. La segunda, se debe a que en sistemas electrónicos digitales
1
0 Introducción
y arquitectura de computadoras, entre otros, normalmente se inicia contando, indexando y haciendo referencia desde el número cero. Siguiendo en este tenor, decidimos seguir la misma convención en la numeración de los capítulos.
QUÉ
TIENE DE ATRACTIVO Y “COOL” ESTE LIBRO
Se puede encontrar una gran cantidad de libros con contenidos particulares de electricidad, electrónica, electrónica digital, diseño lógico, arquitectura de microcomputadoras, arquitectura de microprocesadores y arquitectura de microcontroladores. Algunos de ellos se han convertido en clásicos en las universidades y otros tienen una profundidad y rigor en la f ísica y las matemáticas que parecen haber sido escritos por personas de otro planeta. Todos los temas son importantes y, en aplicaciones reales, tienen relación unos con otros; desafortunadamente, los aspectos prácticos no se cubren en un compendio de una manera integral, sencilla y fácil de seguir. Ésta es la razón que motiva a escribir este modesto intento de introducir los aspectos útiles y aplicables de la electrónica básica de una manera integral, con un enfoque práctico y con palabras que permitan hacer más entendibles los conceptos. Este texto es bastante atractivo porque juntos descubrimos toda clase de interesantes trozos de conocimiento, jugosos pedacitos de datos y preguntas y respuestas como entremeses o botanas, como les llamamos en México; todo reunido con una gran cantidad de información útil relacionada con la forma en que la electrónica efectúa su magia. Los expertos consideran que una de las mejores formas de aprender y de que el conocimiento perdure, es por medio de la práctica. Una de las técnicas conocidas es el ABPro, Aprendizaje Basado en Problemas o Proyectos, el cual he modificado y llamado Aprendizaje Basado en Prácticas (ABPra); estas principalmente de laboratorio, pero también se incluyen prácticas usando simuladores. Estas prácticas enfatizan conceptos simples, pero importantes de la electrónica; constituyen los bloques que equivalen a las piezas de Lego que, posteriormente, permiten construir proyectos interesantes y retadores. Por tanto, nos abocaremos al ABPra sugiriendo prácticas a realizar y haciendo uso del CD-ROM que acompaña este libro. Ahora, que empiece la diversión y a leer…
ELECTRICIDAD La definición de electricidad es una cuestión complicada, basta preguntarle a cualquier estudiante de ingeniería para obtener frases sueltas y palabras masculladas con significados clave; la corriente producida en ciertos materiales, el movimiento de cargas, el movimiento de electrones, etc. En realidad, la pregunta es interesante y existen personas inteligentes alrededor del mundo debatiendo la definición correcta; como yo todavía no pertenezco a este grupo de personas, no tengo intensiones de unirme a este debate. Por tanto, las descripciones que se harán a este respecto y a otros temas en este libro, se expresan de acuerdo con el sentido que tienen para mí. Espero que las explicaciones faciliten su entendimiento. Corriente, movimiento de cargas, electrones; todos estos conceptos están relacionados entre sí, como veremos más adelante. Hasta ahora, es dif ícil ver un electrón, pero existen equipos para ver grupos de ellos, como multímetros, osciloscopios y otros dispositivos sofisticados que detectan su movimiento y lo que hacen. A través de la historia se han encontrado formas para utilizar estos electrones y hacerlos que enciendan lámparas, muevan motores y energicen computadoras, televisores, teléfonos celulares y cientos de dispositivos de los que disfrutamos hoy en día. Si los electrones son tan importantes, se tiene que estudiar dónde se encuentran, para lo cual llegamos a los átomos. Desde la escuela primaria sabemos que la palabra átomo proviene del griego a, privativo, y temno, cortar o dividir, y significa aquello que no se puede dividir o cortar. Aunque los avances científicos han demostrado que los átomos sí pueden dividirse, estos siguen siendo considerados como partículas muy pequeñas de las cuales se compone la materia y el universo. La teoría aceptada hoy en día es que el átomo es una partícula constituida por un cuerpo simple compuesto por un núcleo de carga positiva, formado por protones y neutrones, rodeado de electrones de carga negativa en distintas capas. Un átomo normalmente tiene cantidades iguales de carga eléctrica positiva y negativa, por tanto, es eléctricamente neutro. Por ejemplo, el papel de este libro tiene electrones y protones dentro de él; sin embargo, no hay evidencia de electricidad debido a que el número de electrones y protones es el mismo, cancelándose las fuerzas eléctricas y haciendo al papel eléctricamente neutro o exactamente balanceado. Cambiar el balance de estas fuerzas produce evidencia de electricidad, para lo cual se requiere de cierto trabajo o energía para separar los
2
ELECTRÓNICA • MIJAREZ
0 Introducción
Ýkfdf[\_`[i^\ef
Ýkfdf[\ZfYi\
(\c\Zkie
)0\c\Zkife\j
(G
)0G *,E
=`^liX'%( ;`X^iXdX[\le}kfdf[\_`[i^\efple}kfdf[\ZfYi\%
electrones de los protones. Cada combinación estable de electrones y protones hace posible un tipo particular de átomo. Por ejemplo, la figura 0.1 muestra los diagramas de un átomo de hidrógeno y uno de cobre. Los círculos mostrados en la figura 0.1 son una representación simplificada de la trayectoria de los electrones; aunque en realidad sus movimientos alrededor del núcleo son en tres dimensiones, a los que los f ísicos han denominado shells u capas. Hay capas de diferentes tipos y formas, pero la explicación de sus detalles va más allá del alcance de este libro. En el caso del átomo de hidrógeno, solo se muestra un electrón alrededor del núcleo; demostrando la estabilidad eléctrica, solo un protón es contenido en el núcleo. Si se añade un neutrón al núcleo, el átomo aún es de hidrógeno, pero tiene un peso atómico diferente y se le llama isótopo de hidrógeno.1 Para el caso de los átomos con múltiples electrones, como el cobre, los electrones que residen en las capas se relacionan con niveles o estados de energía. El electrón más sencillo de mover de un átomo es el que se encuentra en el estado superior de energía. Cuando muchos átomos se encuentran juntos, como en el caso de un alambre de cobre, los electrones de la capa exterior migran fácilmente de un átomo a otro de una manera aleatoria, por lo cual se les denomina electrones libres. Esta cualidad le permite al cobre conducir electricidad con facilidad. Por tanto, podemos concluir que es el movimiento de los electrones libres el que proporciona la corriente eléctrica en un conductor. Cabe remarcar que en un alambre, por sí solo, el efecto neto de corriente es cero debido al movimiento aleatorio de los electrones; pero, cuando le aplicamos energía a un átomo, un electrón libre puede desprenderse. La cantidad de energía o trabajo necesarios para desprender un electrón depende del tipo de átomo. Adicionalmente, podemos decir que a los átomos no les gusta perder electrones, de modo que tan pronto un electrón se libera otro se desliza en su capa, como se muestra en la figura 0.2. Por ejemplo, cuando se aplica un voltaje a un alambre de cobre, este fuerza a los electrones libres a moverse en la misma dirección para producir un flujo de corriente, lo cual es la corriente eléctrica.
MfckXa\
:fe[lZkfi
=`^liX'%) Dfm`d`\ekf[\\c\Zkife\jc`Yi\j\eleZfe[lZkfi%
1
Hay otros elementos que tienen isótopos, pero el isótopo de hidrógeno es tan importante que ha recibido su propio nombre: deuterio. El deuterio también se conoce como hidrógeno pesado, y se encuentra de manera abundante en la naturaleza. Curiosamente, los astrónomos piensan que la única fuente importante de deuterio fue el mismísimo Big Bang. Si se desea, se puede dar un vistazo a Google o Wikipedia para obtener información complementaria al respecto.
grupo editorial patria®
3
0 Introducción
Conductores, aislantes y semiconductores Cuando los electrones de un material se pueden desplazar con facilidad de un átomo a otro, a ese material se le denomina conductor. En general, los metales son buenos conductores, en especial la plata y el cobre, que son considerados de los mejores, en ese orden; sin embargo, el cobre es más usado que la plata debido a que es más barato. El objetivo principal al usar un conductor es que permita que el flujo de corriente eléctrica tenga la mínima oposición. Los materiales con electrones que tienden a permanecer en sus capas se denominan aislantes, debido a que no permiten el movimiento fácil de electrones. La figura 0.3 muestra una representación visual de un material aislante y de un material conductor.
8`jcXek\
:fe[lZkfi
=`^liX'%*
Es importante hacer notar que tanto en los materiales conductores como en los aislantes existe el mismo número de cargas positivas y de cargas negativas. La diferencia no es el número de cargas, sino la facilidad con la cual se puedan mover. Hay materiales que conducen menos que un metal conductor, pero más que un aislante, estos son los casi conductores o semiconductores. Un ejemplo de estos materiales es el átomo de carbono, el cual tiene 6 protones y 6 neutrones en el núcleo; además de 6 electrones en dos capas, 2 en la capa más cercana al núcleo y 4 en la segunda capa, como lo ilustra la figura 0.4a).
-\c\Zkife\j
(+\c\Zkife\j
-G -E
(+G (+E
X
Y
=`^liX'%+ I\gi\j\ekXZ`e[\}kfdfj1X ZXiYfef2Y j`c`Z`f% La distribución de electrones en las capas determina la estabilidad eléctrica del átomo. Sin embargo, la capa superior de los átomos de carbono puede tener un número máximo de 8 electrones, es decir, no está llena, lo cual le da facilidad para combinarse con otros átomos y formar moléculas más grandes.2 2
Todo el carbono en el universo se produjo dentro de las estrellas. Cuando una estrella cambió todos los átomos de hidrógeno en helio, comenzó a convertir los átomos de helio en átomos de carbono y átomos de oxígeno. Asimismo, debido a sus propiedades, grandes cantidades de carbono se combinan con oxígeno, por ejemplo monóxido de carbono, dióxido de carbono, etc. Todos los seres vivos en la Tierra están constituidos principalmente por hidro-carbono (moléculas de hidrógeno y carbono) y agua (moléculas de hidrógeno y oxígeno); sí, ¡somos producto de las estrellas!
4
ELECTRÓNICA • MIJAREZ
0 Introducción
Los átomos de carbono pueden tener varias formas estables, como el diamante y el grafito, pero a últimas fechas se descubrió otra forma llamada fulereno o fullereno, que se ha hecho muy popular en investigaciones químicas por su versatilidad para la obtención de nuevos compuestos con forma de esfera, elipsoide o cilíndrica. A los fulerenos esféricos se les llama buckyesferas y a los cilíndricos buckytubos o nanotubos. Sin embargo, nos estamos desviando, lo importante del carbono es que se encuentra en el mismo grupo que los átomos del germanio y el silicio, los cuales se utilizan ampliamente para el diseño y la fabricación de transistores y otros componentes semiconductores; no obstante, la mayoría de los dispositivos semiconductores se hacen con base en el silicio. El silicio existe de manera abundante en la corteza terrestre, se presenta como arena, cuarzo y arcilla, entre otros. El átomo de silicio presenta enlaces covalentes, esto quiere decir que cada átomo de silicio comparte los cuatro electrones de su capa superior con otros cuatro átomos de silicio, para encontrar su estabilidad o balance. Cuando se utiliza el silicio como semiconductor intrínseco, esto es, en su estado natural, al aplicarse cierta forma de energía externa, como calor, luz o voltaje, se rompen los enlaces y se libera un electrón por cada enlace roto, dejando un hueco (el espacio que ocupaba el electrón), como lo ilustra la figura 0.5.
J`
J`
J`
J`
J`
J`
J`
J`
J`
?l\Zf
=`^liX'%, :fii`\ek\^\e\iX[X\ecfjj\d`Zfe[lZkfi\j`ekiej\Zfj%
De esta manera se genera la corriente eléctrica en los semiconductores, por el movimiento de los electrones hacia los potenciales positivos y por el movimiento de los huecos hacia los potenciales negativos. Cuando se usa el silicio como semiconductor extrínseco, se colocan ciertas impurezas en los enlaces, con lo cual se facilita ganar o perder un electrón. Pero nos estamos adelantando, esto lo veremos en las uniones P-N que forman los diodos.
SISTEMAS
ELÉCTRICOS Y ANALOGÍAS CON OTROS SISTEMAS
En un circuito eléctrico, la fuerza que hace que los electrones se muevan es el voltaje. Entre más grande es el voltaje, la fuerza disponible para mover los electrones es mayor. Algunos libros de texto usan el término fuerza electromotriz para referirse al voltaje. Una analogía bastante ilustrativa es lo que sucede con el agua en una tubería, considerando que no esté congelada, por supuesto. Cuando se abre el grifo, cierta cantidad de presión de agua fuerza al agua de la tubería a salir. El mismo fenómeno sucede con un circuito eléctrico; cuando se enciende la luz de una lámpara, se permite que un voltaje fuerce o empuje los electrones a través de un alambre conductor y genere la luz que ilumina. Esta representación se muestra en la figura 0.6. Cada dispositivo conectado a un circuito eléctrico ofrece una oposición al flujo de electrones, es decir, tiene una resistencia que se mide en ohms y se considera como un peso o carga eléctrica.
grupo editorial patria®
5
0 Introducción
Gi\j`e[\X^lX
8^lXXkiXmj[\leklYf
MfckXa\
=`^liX'%- 8eXcf^X\eki\\c]claf[\X^lX\eleXklY\iXp\c]claf[\\c\Zkife\j\eleZfe[lZkfi% Por ejemplo, un circuito simple de fluidos, como una fuente de agua, la cual consiste en una bomba de agua, que suministra la presión; una tubería, que provee la trayectoria para que el agua fluya, aunque también provee cierta resistencia al flujo; y el agua en la fuente, que representa la carga. Por otra parte, un circuito eléctrico simple consiste en un suministro de electrones, la batería; los alambres conductores y una carga como podría ser una lámpara. La figura 0.7 muestra esta relación de semejanzas. Como se observa en la figura 0.7, la energía proviene de la bomba y la batería. Esta energía viaja hasta la carga, la fuente de agua y la lámpara. Ya en la carga, la energía se manifiesta como la fuente de agua y la luz de la lámpara.
Gi\j`e
C}dgXiX
:fii`\ek\
=claf
=l\ek\[\X^lX
MfckXa\
9fdYX
9Xk\iX
" X
Æ Y
=`^liX'%. X :`iZl`kfj`dgc\[\]cl`[fj#Y Z`iZl`kf\cZki`Zfj`dgc\%
VISUALIZACIÓN
DE COMPONENTES ELÉCTRICOS
En ingeniería eléctrica y electrónica no es fácil de visualizar el comportamiento de un circuito eléctrico, en especial cuando un circuito no funciona correctamente; por tanto, se tiene que imaginar qué está pasando con el movimiento de estos inquietos electrones. Para esto vamos a llevar a cabo unas comparaciones usando cosas del mundo f ísico o tangible que son familiares para nosotros, a fin de crear un entendimiento intuitivo de un circuito.3 La razón principal 3
He conocido ingenieros que son buenos para detectar fallas en los circuitos. Inconscientemente, tienen un entendimiento intuitivo que han desarrollado con el paso del tiempo. Un término apropiado sería intuición educada, y la primera vez que lo escuché no tenía mucho de haber egresado de la universidad, la persona que lo usó era mi jefe de proyecto, que a su vez la escuchó de un jefe suyo, que a su vez… nos estamos desviando. La intuición se puede educar si usamos los elementos clave para ello.
6
ELECTRÓNICA • MIJAREZ
0 Introducción
para realizar esta perspectiva es porque nosotros interactuamos con el mundo f ísico usando nuestros sentidos, mientras que en el mundo eléctrico mucho de lo que sucede dentro de los circuitos no puede ser visto, olido o escuchado. El mundo eléctrico tiene todavía su grado de magia, aun para ingenieros educados. Sin embargo, si se tiene una sensación o corazonada de qué es lo que está pasando en un circuito, se pueden resolver problemas de una manera muy exacta. El cerebro humano es el mejor instrumento para simular, incluso para llegar a conclusiones correctas con información incompleta, lo cual no es el caso con los simuladores en las computadoras. Siendo así, con este enfoque vamos a estimular la mente para visualizar o simular circuitos eléctricos.4 La analogía que vamos a realizar es del mundo de los ingenieros eléctricos al mundo de los ingenieros mecánicos. Pero, para iniciar este enfoque intuitivo debemos entender qué es voltaje, corriente y potencia: tVoltaje es el potencial de cargas en un circuito. tCorriente es la cantidad de carga fluyendo en un circuito. Si realizamos la analogía con una pistola de agua, el voltaje es la presión que hacemos a la pistola; la presión la cuantificamos por lo lejos que llega el chorro de agua. No es lo mismo tener la presión de una pistolita, que la presión de una llave de agua de media pulgada de diámetro en la tubería. La corriente, en tanto, es el chorro de agua de la pistola. En términos eléctricos, el voltaje, la corriente y la potencia se relacionan por la siguiente ecuación: Potencia voltaje r corriente
(0.1)
La potencia es la combinación de voltaje y corriente. Si uno de estos dos elementos es cero, tendríamos una potencia cero. Ahora, vamos a ver la analogía de tres componentes básicos de circuitos eléctricos que se relacionan con el voltaje y la corriente.5
La resistencia es análoga a la fricción Consideremos que se quiere mover una caja pesada que se encuentra en el piso, como lo ilustra la figura 0.8. Una fuerza llamada fricción ofrece resistencia al movimiento de la caja. Esta fricción también está relacionada con la velocidad con que queremos mover la caja. Entre más rápido intentemos mover la caja, la magnitud de la fricción se incrementará, ofreciendo una resistencia mayor al movimiento. Esta relación puede describirse con la siguiente ecuación: Fricción
fuerza velocidad
(0.2)
=`^liX'%/ CX]i`ZZ`ej\fgfe\Xcdfm`d`\ekf[\cXZXaX%
4
5
Un libro que menciona esta visualización de componentes de manera clara se llama Ingeniería eléctrica de Darren Ashby, el cual es muy recomendable. Los tres componentes básicos de los circuitos eléctricos son el resistor, el capacitor y el inductor, y sus propiedades características son la resistencia, la capacitancia y la inductancia; sin embargo, en español es muy común utilizar el término resistencia, tanto para el componente como para sus propiedades eléctricas.
grupo editorial patria®
7
0 Introducción
La fricción disipa la energía en forma de calor. Esto es, la fricción hace que los elementos involucrados se calienten. Este efecto sucede, por ejemplo, cuando frotamos nuestras manos, la fricción hace que nuestras manos se calienten. La función de una resistencia en un circuito eléctrico es igual a la fricción. La resistencia se opone al flujo de electricidad, de la misma forma que la fricción se opone a la velocidad de la caja. Por supuesto, la resistencia en el circuito eléctrico también se calienta. La ecuación denominada ley de Ohm describe esta relación: Resistencia
voltaje corriente
(0.3)
La resistencia en un circuito eléctrico representa la cantidad de fuerza que se requiere para mover los electrones. Respecto de los sistemas mecánicos, la única diferencia entre fricción y resistencia son las unidades.
El inductor es análogo a la masa Continuamos con el ejemplo de la caja. Ahora, eliminaremos la fricción para hacer la analogía más fácil de entender. La figura 0.9 muestra una caja con llantas, las cuales virtualmente eliminan la fricción con el piso. Se puede observar que aunque se requiere cierto trabajo para mover la caja, una vez que empieza a moverse, su desplazamiento es sencillo; incluso cuesta trabajo detener la caja. Cuánto trabajo se requiere, depende del peso de la caja. Esto se conoce como ley de la inercia,6 y se aplica muy bien a la inductancia, como se aprecia en las ecuaciones 0.4 y 0.5.
=`^liX'%0 CXjccXekXj\c`d`eXecX]i`ZZ`e#g\ifj\i\hl`\i\Z`\ikfkiXYXafkXekfgXiX`e`Z`Xi\cdfm`d`\ekf [\cXZXaX#ZfdfgXiX[\k\e\icf%
Masa
fuerza r tiempo velocidad
Inductancia
voltaje r tiempo corriente
(0.4)
(0.5)
En estas ecuaciones se observa que la masa se opone a la velocidad, de la misma manera que la inductancia se opone a la corriente.
El capacitor es análogo al resorte Si se estira un resorte, luego se mantiene en esa posición por un momento y después se suelta; sucede que el resorte regresa a su posición, como se muestra en la figura 0.10. Esto significa que el resorte tiene capacidad de almacenar 6
Newton formuló esta ley en 1687, mucho antes que fuera descubierta la electricidad, y estableció las bases de la f ísica en el siglo xvii. Aunque en realidad es un replanteamiento de lo que Galileo postuló unos ochenta años antes, y difiere del punto de vista de Aristóteles que consideraba que todos los objetos tenían un lugar natural, fijo, en el Universo.
8
ELECTRÓNICA • MIJAREZ
0 Introducción
energía; cuando se le aplica una fuerza al estirar el resorte, este mantendrá la energía hasta que se suelta. La constante del resorte es el recíproco de la elasticidad y la capacitancia, en un capacitor, es similar a la elasticidad del resorte. Un capacitor tiene capacidad de almacenar energía si se le aplica un voltaje a sus placas.7 Adicionalmente, como lo muestran las ecuaciones 0.6 y 0.7, el resorte se opone a la fuerza, de la misma manera que la capacitancia se opone al voltaje. Resorte
velocidad r tiempo fuerza
Capacitancia
corriente r tiempo voltaje
(0.6)
(0.7)
=`^liX'%(' J\Xgc`ZXleX]l\iqXXci\jfik\\jk`i}e[fcf#XcjfckXij\cXZXaXfjZ`cXi}_XjkXhl\cX]i`ZZ`ecX[\k\e^X%
Combinación de elementos, circuitos más complejos La combinación de elementos puede traer consigo circuitos más complejos, uno de ellos se denomina circuito tanque o circuito LC. ¿Qué es o qué hace este tipo de circuitos? La respuesta es oscilar; y su oscilación podría durar para siempre en un circuito ideal. La equivalencia a L y C, sería la masa y el resorte en un circuito mecánico, respectivamente. Ahora, si se realiza un experimento mental, como harían los f ísicos,8 y se ata la caja del dibujo anterior a un resorte y se le da una fuerza inicial, el sistema mecánico oscilaría permanentemente. Siguiendo la misma analogía, si a nuestro circuito mecánico se le añade cierta fricción, apretando o frenando las llantas de la caja, al circuito eléctrico le estaríamos añadiendo una resistencia, con lo cual tendríamos un circuito LCR. En tanto, si le aplicamos un empujón a la caja con el resorte, esta empezaría a oscilar, pero eventualmente la fricción en las llantas haría que se detuviera. Tanto la fricción como la resistencia amortiguan la oscilación. En este sentido, los elementos fundamentales del mundo de la electricidad se pueden mapear al mundo mecánico, el cual es más fácil de visualizar y con el que estamos en contacto todos los días. Son los bloques de Lego que forman el mundo eléctrico; si se entienden a la perfección, se tendrán las bases bien cimentadas. Por ende, si se tienen buenas bases de cualquier disciplina se puede sobresalir en ella.
ES
LA LEY: LA LEY DE
OHM
La ley de Ohm es uno de los principios de electricidad básicos para técnicos o ingenieros eléctricos, electrónicos y mecatrónicos, y es la base para todos los análisis de circuitos eléctricos y electrónicos. Se puede tener un dominio de 7
8
En el capacitor, la energía se almacena en forma del campo eléctrico que se genera en el mismo capacitor. Sin embargo, también en el inductor se almacena energía, solo que la energía se almacena en forma del campo magnético que se genera en la bobina. En alemán, la palabra para este tipo de experimentos es gedachtenexperiment; la cual encierra todo el concepto: experimento planeado, proyectado o pensado; por supuesto, un experimento sin gastar recursos materiales.
grupo editorial patria®
9
0 Introducción
ecuaciones cuadráticas, ecuaciones diferenciales, cálculo, etc., pero si no se tienen las bases, se corre el riesgo de quedarse estancado buscando la solución de problemas que pueden ser elementales. Esta ley es parte de los fundamentos básicos con que se debe contar, y aunque la mayoría de los estudiantes y egresados de las carreras antes mencionadas saben esta ley de memoria, en ocasiones su aplicación práctica es ignorada. La ley de Ohm, descubierta en 1827 por el científico Georg Simon Ohm, establece la relación matemática entre voltaje, corriente y resistencia, tal como lo muestra la ecuación 0.8. I
V R
(0.8)
Esta ecuación hace constar que la corriente, I, es directamente proporcional al voltaje, V, e inversamente proporcional a la resistencia, R. El circuito de la figura 0.11a demuestra este concepto. Si se aplica un voltaje a una resistencia de valor fijo, podemos calcular la corriente. Si se varía el voltaje, tendremos un cambio proporcional en la corriente, como se aprecia en la figura 0.11b. La línea recta de la figura 0.11b indica que la curva entre V-I (Volt-Ampere) es lineal, siempre y cuando la resistencia sea lineal; es decir, que tenga un valor constante en ohms.9 El valor de R no cambia al variar el voltaje aplicado; si se duplica el voltaje de 4 a 8 Volts, la corriente se incrementará de 2 a 4 Amperes.10 Sin embargo, existen componentes que muestran curvas V-I no lineales. Por ejemplo, la resistencia del filamento de tungsteno que se encuentra en las lámparas incandescentes o focos es no lineal. Al incrementarse la corriente, el filamento se calienta e incrementa su resistencia. Si se incrementa el voltaje aplicado al filamento, producirá más corriente, pero la corriente no se incrementará en la misma proporción que el voltaje.11 Otro ejemplo son los termistores, los cuales varían su resistencia en función de la temperatura y son usados ampliamente para medir cambios en la temperatura. Un aspecto fundamental de esta ley es que la resistencia impide el paso de corriente. Se podría pensar en la resistencia como un elemento que convierte corriente en voltaje. Esto es, la cantidad de trabajo realizado para que la corriente eléctrica se mueva desde un punto A hasta un punto B es igual a la caída de energía eléctrica entre los puntos I4)Ω:fejkXek\
8dg\i\j
-
@4M&I =l\ek\ [\mfckXa\ '$()M
Mfckj I4)Ω 8
M4@!I
8dg\i\j
, 9
+ * ) ( '
)
X
+
- / (' () mfckj Y
=`^liX'%((
10
11
En la Exposición Internacional de Electricidad efectuada en París, en 1881, se adoptó el “ohm” y su símbolo (Ω) (letra griega “omega”) como unidad de medida de la resistencia eléctrica, en honor a la memoria de Georg Simon Ohm, veintisiete años después de su muerte. Al contrario de los símbolos, los nombres de las unidades de medida eléctrica no están normalizados internacionalmente, sino que dependen del idioma. En México se usan comúnmente en inglés, aunque la mayoría de la literatura en español tiende a castellanizar los términos con denominaciones reconocidas por la Real Academia Española. Por tanto, en este texto usaremos los términos en inglés: volt en lugar de voltio, ohm en vez de ohmio, ampere en lugar amperio, watt en vez de vatio, coulomb en lugar de colombios, farad en vez de faradio y henry en lugar de henrio, etcétera. De manera espectacular se ha encontrado un efecto opuesto en la mayoría de los metales cuando se enfrían a un punto crítico, ¡reducen su resistencia a cero! Son los llamados superconductores. Desafortunadamente, las temperaturas de enfriamiento resultan ser muy bajas, lo cual requiere refrigeraciones extremas que los hace antieconómicos, con excepción de algunas aplicaciones especializadas como, los aceleradores de partículas en centros de investigación de f ísica. En fechas recientes, científicos han descubierto que ciertas cerámicas presentan características de superconductores con temperaturas menos extremas, el reto es cómo hacer cables con estos frágiles materiales.
10
ELECTRÓNICA • MIJAREZ
0 Introducción
A y B, o como comúnmente se le llama, diferencia de voltaje entre estos puntos. Esta energía eléctrica se convierte a otras formas de energía como luz, o en calor, como en el ejemplo de la figura 0.11. A la proporción de energía que es transformada por el flujo de electricidad se le conoce como disipación de potencia. Esto nos lleva a definir la potencia eléctrica.
Potencia eléctrica La unidad de potencia eléctrica, P, es el watt (W), nombrado así en honor a James Watt (1736-1819). Un watt de potencia equivale al trabajo realizado en un segundo por una diferencia de voltaje de un volt para mover una carga de un coulomb.12 Por esta razón, la potencia eléctrica es definida por el producto entre la diferencia de voltaje y la corriente, como lo indica la ecuación 0.9. P ΔV r I
(0.9)
En el ejemplo de la figura 0.11a, si la fuente de voltaje es de 6 V y produce 3 A, se estará generando una potencia de 18 W de potencia. La fórmula de la potencia se puede usar de tres formas como lo muestra de manera gráfica la figura 0.12.
G M
@
=`^liX'%() =idlcXhl\i\cXZ`feXgfk\eZ`X#mfckXa\pZfii`\ek\% La fórmula depende de qué se quiera calcular P, I o V. A golpe de vista, la figura 0.12 muestra que P V r I, I P/V y V P/I. Volviendo al ejemplo de la figura 0.11a, la cantidad de energía eléctrica convertida en calor por la resistencia se disipa, es decir, una vez que ha sido usada, ya no regresa al circuito eléctrico como energía eléctrica. Debido a que esta potencia se disipa en la resistencia de un circuito, es conveniente expresar la potencia en términos de la resistencia, como se expresa en las ecuaciones 0.10 y 0.11: P V r I V r
V V2
P V r I IR r I < P I 2 R
(0.10)
(0.11)
Considerando un voltaje de 6 V, en el ejemplo de la figura 0.11a, y usando como ejemplo la ecuación 0.11, obtenemos la disipación de potencia en la resistencia. Esto es: P 32 r 2 18 W Por esta razón, la resistencia de este circuito debe ser mayor a 18 W, si no queremos que el calentamiento excesivo de la resistencia comience a sacar el humo mágico y se produzca un daño considerable.
12
La unidad del SI de la corriente, el Ampere, se define como un coulomb por segundo (C/S), y la del voltaje se define como un joule por coulomb (J/C).
grupo editorial patria®
11
0 Introducción
DIVISOR
DE VOLTAJE
Un divisor de voltaje, en su forma más simple, se crea conectando dos resistencias en serie, como se muestra en la figura 0.13, o una resistencia variable, como un potenciómetro. A este se le aplica un voltaje de entrada a través de las dos resistencias y el voltaje de salida se toma entre las resistencias.
I
MJ8C IK@
@
=`^liX'%(* ;`m`jfi[\mfckXa\i\j`jk`mf%
Aplicando la ley de Ohm, se encuentra la relación entre el voltaje de salida y el voltaje de entrada, como se muestra en la ecuación 0.12. A esta relación también se le llama función de transferencia.13 VSAL V ENT r
RT RT RE
(0.12)
Muchos libros de texto utilizan R1 y R2 para referirse a las resistencias que conforman el divisor de voltaje; sin embargo, para hacer énfasis en su posición aquí se les denomina resistencia de tierra, RT, y resistencia de entrada, RE, para evitar el error de intercambiar la posición de la resistencia y obtener un voltaje de salida diferente del esperado. Este simple circuito lineal produce un voltaje de salida que es una fracción o un porcentaje del voltaje de entrada. Si se piensa en términos de porcentaje, al hacer las resistencias RT y RE del mismo valor, se obtendría 50% del voltaje de entrada y 50% de voltaje de salida. Se puede apreciar que si RE es cero, el voltaje de salida es igual al voltaje de entrada. De manera intuitiva, si RT es 2 kΩ y RE es 8 kΩ, tendremos a la salida 20% del voltaje de entrada. Aunque el divisor de voltaje se deriva de la ley de Ohm, vale la pena memorizarlo, ya que se utiliza con frecuencia para realizar referencias de voltaje y como atenuador de señales cuando se involucran elementos capacitivos e inductivos, como veremos a continuación.
El capacitor se opone a los cambios de voltaje Los valores de RT y RE del divisor de voltaje pueden estar compuestos por una combinación de elementos, como capacitores, inductores y resistencias. Los inductores y capacitores actúan como otra resistencia, la diferencia es que esta resistencia es función de la frecuencia, a lo cual se le llama reactancia. Si en el divisor de voltaje cambiamos RT por un capacitor, aún sigue siendo un divisor de voltaje; pero, por obvias razones, ahora se le denomina circuito RC. La figura 0.14 muestra este circuito. La reactancia del capacitor se especifica por el símbolo XC y su unidad es el Ohm. El cálculo de la reactancia se realiza usando la ley de Ohm, XC I/V; sin embargo, también puede obtenerse considerando los efectos de la frecuencia, f, y la capacitancia, C, como lo indica la ecuación 0.13: XC
1 2π f C
(0.13)
VSAL RT 13 A la función de transferencia, por lo general, se le denomina H; esta determina la ganancia del circuito H ; en este ejemplo, H . V R ENT T RE Esta función es muy útil en sistemas de control y para analizar por etapas un circuito muy grande.
12
ELECTRÓNICA • MIJAREZ
0 Introducción
,M I
'M
M
MJ8C @
:
=`^liX'%(+
ΔV i r Δt ;l C Δt ΔV
(0.14)
Si se observa el voltaje de entrada tipo escalón, se puede apreciar que inicialmente sucede un cambio o variación rápida del voltaje, a lo cual se opone el capacitor. Luego, la entrada escalón ya no cambia y permanece en 5V, lo cual indica que el capacitor eventualmente se cargó a 5V. A este periodo de transición se le conoce como régimen transitorio de un circuito RC, mientras que al estado final se le conoce como régimen permanente. La variación de voltaje, a la salida del divisor de voltaje, presenta una curva característica descrita por la ecuación 0.15. t ³ ¤
VSAL V ENT ¥1 e RC ´ µ ¦
(0.15)
A la multiplicación de R y C se le conoce como la constante de tiempo o tau, también descrita por la letra griega del mismo nombre (τ), como lo muestra la ecuación 0.16. τ RC 14
15
16
(0.16)
En realidad, el término 2π es 2π radianes o 360º por un círculo o ciclo completo de una onda sinusoidal; por tanto, la fórmula 0.13 se aplica solo a circuitos con señales con forma de onda sinusoidal. Las señales sinusoidales adquieren importancia no solo porque los voltajes proporcionados por las compañías de electricidad (generadores) son, aproximadamente, señales sinusoidales, sino también porque cualquier forma de onda periódica se puede sustituir por un término constante y una serie de términos senos y cosenos, algo que un brillante personaje llamado Joseph Fourier (1768-1830) formuló hace ya algunos años. La función escalón es muy usada en las matemáticas de teoría de control y en el procesamiento de señales, para representar una señal que se activa en un tiempo específico y permanece activada de manera indefinida. Esta función se obtiene como la integral de la función impulso, la cual a su vez tiene un valor de cero en cualquier parte, a excepción de un punto específico, donde tiene un valor muy grande, infinito. Entre más rápido cambie la entrada de la señal escalón, un mayor número de frecuencias denominadas armónicas, funciones seno y coseno, se sumarán para representar esta señal de entrada. También es parte del análisis de Fourier.
grupo editorial patria®
13
0 Introducción
La razón por la que tau es igual al tiempo puede ilustrarse de la siguiente manera: de acuerdo con la ecuación 0.14, C (I r t) /V. Multiplicando por R ambos términos de la igualdad, obtenemos que IR es igual a V, con lo cual se cancela el V del denominador y el tiempo se iguala a RC. La gráfica de la variación del voltaje de salida se aprecia en la figura 0.15.
()'
,
(''
+
/'
*
-'
)
+'
(
)'
'
(
)
*
+
,
-
MfckXa\efidXc`qX[f
MfckXa\
τ4I: -
.
k`\dgf
=`^liX'%(, MXi`XZ`e[\mfckXa\#\emfckj#i\jg\Zkf[\ck`\dgf#pmXi`XZ`e[\mfckXa\efidXc`qX[f#i\jg\Zkf[\ck&τ% La forma de esta curva de salida es siempre la misma para un circuito RC, como respuesta a una entrada tipo escalón. Lo único que cambia es el tiempo que toma en llegar a su valor final, régimen permanente, el cual depende de la constante de tiempo tau. La figura 0.15 muestra la variación del voltaje de salida respecto del tiempo, pero también muestra esta curva normalizada17 en función de tau y el valor final del voltaje en porcentaje. Considerando la curva normalizada, se puede observar que a 1τ el voltaje de salida alcanzado es 63%; a 2τ es 86%; a 3τ es 95%; asimismo, cuando llega a 4τ, el porcentaje es 98% y cuando alcanza 5τ el voltaje de salida es prácticamente 100%. Esta curva de respuesta describe un principio básico en electrónica. En las materias básicas de ingeniería eléctrica y electrónica he visto a los alumnos realizar prácticas de laboratorio para obtener este tipo de curvas, pero cuando llegan a los últimos semestres no recuerdan este concepto fundamental; lo que es peor, no lo entienden. De modo que vale la pena memorizarlo de una vez por todas, ya que si se entiende este concepto se entenderá el comportamiento de las bobinas o inductores, que veremos en la siguiente sección, pero antes vamos a analizar qué pasa con la corriente en este circuito RC. Usando la ley de Ohm sabemos que I V/R. Para obtener el voltaje a través de la resistencia o, dicho de otro modo, para obtener la diferencia de voltaje en la resistencia, es necesario conseguir la diferencia entre el voltaje de salida y el voltaje de entrada como lo muestra la ecuación 0.17: VR VENT − VSAL
(0.17)
Analizando la corriente en términos de tau, observamos que a 0τ, el voltaje de salida es cero volts, de tal forma que los 5 V se encuentran en la resistencia, y, por ende, en ese instante fluye la corriente máxima. En este momento, el capacitor tiene una resistencia prácticamente de cero ohms haciendo un corto circuito a tierra. En t τ, el voltaje de salida es 63% del voltaje de entrada, lo cual significa que la resistencia tiene 37% del voltaje de entrada. Siguiendo este proceso para todos los valores de tau, obtendremos una curva decreciente a diferencia de la curva creciente de voltaje como lo muestra la figura 0.16. Aquí se puede observar que al momento que cambia el voltaje de entrada de la señal escalón, cuando t 0, la corriente cambia muy rápido; fluye por el circuito la máxima corriente. En contraste, en ese mismo momento el vol-
17
La normalización en este contexto se refiere al procesamiento de información para que dos conjuntos de datos diferentes sean comparables, tomando valores entre 0 y 1. Para esto se requiere dividir todos los datos entre el valor final, que en este caso es 5 volts. Muy a menudo ese valor se multiplica por 100 para obtener el porcentaje.
14
ELECTRÓNICA • MIJAREZ
0 Introducción
()'
:fii`\ek\efidXc`qX[X
('' /' -' +' )' '
(
)
* + τ4I:
,
-
.
=`^liX'%(- MXi`XZ`e[\Zfii`\ek\Zfei\jg\ZkfXcXZfejkXek\[\k`\dgfkXl% taje de salida no cambia tan rápido, en ese instante es cero. Lo anterior corrobora la regla de que el capacitor se opone a los cambios de voltaje y no le afectan los cambios de corriente. La naturaleza nos ha mostrado que tiene sus opuestos,18 y el capacitor no es la excepción, de modo que vamos a continuar con los inductores o bobinas.
El inductor se opone a los cambios de corriente Ahora, siguiendo con el divisor de voltaje, vamos a considerar un circuito RL como se muestra en la figura 0.17. ,M I
'M
M
MJ8C @
C
=`^liX'%(.
(0.18)
La unidad de la inductancia, L, es el henry. En esta ecuación se puede apreciar que la reactancia inductiva se incrementa para altas frecuencias y altos valores de L, de manera opuesta a la reactancia capacitiva. Conforme lo aprendido en la visualización de componentes, el inductor o bobina se opone a los cambios de corriente, pero no de voltaje, de acuerdo con la ecuación 0.5. De manera formal, esta misma ecuación se expresa matemáticamente de la siguiente forma: 18
El concepto de dualidad, que tiene su origen en la filosof ía oriental del yin y el yang, establece que todo lo existente en el universo es descrito por dos fuerzas fundamentales, en apariencia opuestas y complementarias, que se encuentran en todas las cosas. Por ejemplo: luz/oscuridad, calor/ frío, masculino/femenino, sonido/silencio… y por supuesto capacitor/inductor.
grupo editorial patria®
15
0 Introducción
vL
$i v r $t ;l L $t $i
(0.19)
Considerando la misma entrada escalón, al momento inicial, cuando hay un cambio rápido de voltaje, la reactancia XL es muy alta a causa de los armónicos de frecuencias altas, tratándose como si fuera un circuito abierto, y la corriente en L es prácticamente cero. Sin embargo, gradualmente empieza a aparecer una caída de voltaje en L, de modo que la corriente empieza a elevarse como se muestra en la figura 0.18. ()'
:fii`\ek\efidXc`qX[X
('' /' -' +' )'
(
)
* + τ4I:
,
-
.
=`^liX'%(/ MXi`XZ`e[\Zfii`\ek\i\jg\Zkf[\k&τ\e\cZ`iZl`kfIC% La respuesta en corriente del circuito RL es exactamente igual que la respuesta en voltaje en el circuito RC, y viceversa. Si se entiende el análisis para el circuito RC, no se tendrá problema para entender el circuito RL. Pero, se preguntará qué pasa con la variación de voltaje respecto de t/τ; bien, analizando por intervalos y haciéndonos un par de preguntas acerca del comportamiento del circuito, podemos deducir cómo será esta gráfica. ¿Cómo será el valor de la corriente en el instante cero o en 0τ? ¿Qué pasará con la corriente un tiempo después? Con base en la ley de Ohm, para que la corriente sea muy baja, la resistencia tiene que ser muy alta; entonces, en el instante cero, la inductancia adquiere un valor muy grande que actúa como un circuito abierto; por tanto, el voltaje en el inductor (V SAL) será igual al voltaje de entrada. Cuando el tiempo empieza a pasar, la reactancia en el inductor empieza a bajar hasta que se produce un cortocircuito y, por consiguiente, también el voltaje comienza a disminuir hasta llegar a cero. La figura 0.19 muestra la respuesta en voltaje para el circuito RL. ()'
MfckXa\efidXc`qX[f
('' /' -' +' )' '
(
)
* + τ4C&I
,
-
.
=`^liX'%(0 MXi`XZ`e[\mfckXa\Zfei\jg\ZkfXk&τ\e\cZ`iZl`kfIC% El inductor es el complemento exacto del capacitor. El comportamiento en corriente del inductor es el mismo comportamiento para el voltaje en el capacitor, y viceversa.
16
ELECTRÓNICA • MIJAREZ
0 Introducción
Los circuitos RC, por lo general, son más comunes que los circuitos RL, debido, entre otras cosas, a que los capacitores son más económicos, pequeños y fáciles de adquirir. Cabe mencionar que los elementos básicos R, C y L no son perfectos y en la realidad cada uno de ellos puede contener partes de los otros. Por ejemplo, el inductor se hace con un material conductor, el cual, para fines prácticos, también presenta una resistencia, aunque en ciertas condiciones su comportamiento predominante es inductivo. Como ya mencionamos, las unidades de los capacitores, los inductores y las resistencias, son los farads, los henrys y los ohms, respectivamente; sin embargo, un farad y un henry son unidades muy grandes y un ohm puede ser una unidad muy pequeña, por lo que se suele emplear submúltiplos.19 La tabla 0.1 muestra algunos prefijos y valores de conversión que se utilizan con frecuencia.20 Prefijo
Símbolo
Relación a la unidad
Ejemplo
Giga
G
1,000,000,000 o 1 r 109
2 GΩ (Gigaohms) 2 r 109
Mega
M
1,000,000 o 1 r 106
5 MΩ (Megaohms) 5 r 106
kilo
K
1,000 o 1 r 103
20 kV (kilovolts) 10 r 103
milli
m
0.001 o 1 r 10-3
25 mA (milihenrys) 25 r 10-3
micro
μ
0.000 001 o 1 r 10-6
nano
η
10 μF (microvolts) 10 r 10-6 -9
0.000,000,001 o 1 r 10
33 ηF (nanofarads) 33 r 10-9
KXYcX'%( Gi\]`afjpmXcfi\j[\Zfem\ij`eZfdle\j%
Circuitos en serie y en paralelo Dos formas de conexión de componentes eléctricos en un circuito son de particular importancia: en serie y en paralelo. Un circuito en serie es aquel que provee solo una trayectoria para que la misma corriente fluya por todos los componentes. Mientras que un circuito en paralelo es cualquiera que provea el mismo voltaje a través de todos los componentes y en donde cada componente proporciona una trayectoria diferente para que fluya la corriente.21 Vamos a iniciar con las fórmulas para los circuitos en serie y a relacionar estos con el arreglo de sus componentes. Los circuitos en serie son sencillos, ya que no involucran ninguna multiplicación, basta sumar todos los componentes, como lo muestra la figura 0.20 y la ecuación 0.20 para las resistencias. RT R1 + R2 + R3
I(
I)
(0.20)
I*
IK
=`^liX'%)' :fe]`^liXZ`e[\i\j`jk\eZ`Xj\ej\i`\% En el caso de los inductores, estos se suman al igual que las resistencias, como se muestra en la figura 0.21 y la ecuación 0.21. 19
20
21
Recientemente estos submúltiplos han incrementado su valor ya sea ascendente o descendente en aplicaciones como procesamiento de datos y nanotecnología, respectivamente. De manera ascendente se pueden emplear prefijos como Tera (1012), Peta (1015) y Hexa(1018), y de manera descendente como pico (10−12), femto (10−15) y atto (10−18) pertenecientes al Sistema Internacional de medidas, antecesor del sistema métrico decimal. El elemento que genera más dificultad para determinar su valor es el capacitor, por lo que en el CD-ROM que acompaña este libro se encuentra un convertidor de código de capacitores y un convertidor de unidades. En el CD-ROM que acompaña este libro se encuentra una aplicación para calcular resistencias en serie y en paralelo.
grupo editorial patria®
17
0 Introducción
C(
C)
C*
CK
=`^liX'%)( :fe]`^liXZ`e[\`e[lZkfi\j\ej\i`\% LT L1 + L2 + L3
(0.21)
Para el caso de los capacitores, es preciso recordar que estos son el dual de los inductores. Por tanto, los capacitores deben conectarse en paralelo si se quieren sumar como los inductores y las resistencias en los circuitos en serie, como se muestra en la figura 0.22 y la ecuación 0.22.
:K
:(
:)
:*
=`^liX'%)) :fe]`^liXZ`e[\ZXgXZ`kfi\j\ej\i`\% CT C1 + C2 + C3
(0.22)
Cómo es que la corriente es la misma en todas las partes de un circuito en serie ¿Por qué la corriente es la misma en todas las partes de un circuito en serie? La respuesta es más fácil de visualizar usando resistencias. Sabemos que la corriente eléctrica es el movimiento de cargas entre dos puntos, generado cuando se aplica un voltaje. Si conectamos una batería entre la terminal de R1 y la terminal de R3, como se ilustra en la figura 0.23, esta proporcionará el voltaje que fuerza a los electrones libres a moverse desde la terminal negativa, a través de los alambres de conexión y las resistencias, hasta la terminal positiva. I(
I)
I*
=`^liX'%)* 8cXdYiX[f^i}]`Zf[\leZ`iZl`kfj\i`\% La terminal negativa de la batería, es decir, su carga negativa, repele los electrones. Por tanto, los electrones libres del alambre que conecta el borne negativo son repelidos. Cada electrón libre repelido, a su vez, también repele al electrón adyacente, produciendo un movimiento de electrones hasta llegar a la conexión con la resistencia R3.
18
ELECTRÓNICA • MIJAREZ
0 Introducción
Simultáneamente, la carga positiva del borne positivo de la batería atrae los electrones libres del alambre que está conectado a él. Como resultado, los electrones libres de las resistencias R1, R2 y R3 son forzados a moverse hacia la terminal positiva. Los electrones libres que se mueven de un punto a otro son reemplazados en forma continua por electrones libres moviéndose de puntos adyacentes. La terminal positiva de la batería atrae electrones tanto como la terminal negativa los repele; por consiguiente, el movimiento de electrones en el circuito inicia al mismo tiempo y a la misma velocidad en todas las partes del circuito. Dicho de otra forma, un número igual de electrones se mueve a un tiempo y con la misma velocidad, esa es la razón por la cual la corriente es la misma en todas las partes del circuito. Los circuitos en paralelo son un poco más truculentos que los circuitos en serie. Un circuito en paralelo se forma cuando dos o más componentes se conectan a través de una fuente de voltaje, de tal manera que el voltaje es el mismo en cada componente. La figura 0.24 ilustra un circuito en paralelo para el caso de que los componentes sean resistencias.
I(
I)
I*
IK
=`^liX'%)+ :fe]`^liXZ`e[\i\j`jk\eZ`Xj\egXiXc\cf% En los circuitos en serie, la corriente es la misma para todos los componentes. En tanto que en los circuitos en paralelo, el voltaje es el mismo para cada componente y cada componente provee una trayectoria independiente para el flujo de corriente. La corriente de cada trayectoria se calcula con V/R, donde V es el voltaje aplicado y R es la resistencia de esa trayectoria. La corriente total, IT, debe ser igual a la suma de todas las corrientes como se aprecia en la figura 0.25. I(
M I(
I)
M I)
I*
M I*
" M
@K
=`^liX'%), 8cXdYiX[f^i}]`Zf[\leZ`iZl`kfgXiXc\cf%
La resistencia total o resistencia equivalente, REQ , del circuito en paralelo es igual al voltaje aplicado dividido entre la corriente total, V/IT . Aquí, el término equivalente se refiere al valor que tendría una sola resistencia para sacar la misma cantidad de corriente que todas las resistencias en paralelo. A la fórmula para obtener la REQ se le conoce como la fórmula del inverso o recíproco y se deriva de que IT es la suma de todas las corrientes. REQ
1 1 1 1 ! etc. R1 R2 R3
(0.23)
Para el caso particular en que sean dos componentes, la REQ es determinada por el producto de sus valores dividido por la suma de sus valores. En caso de tres resistencias o más, se resuelve cada dos componentes y se repite sucesivamente, como se muestra en la ecuación 0.24.
grupo editorial patria®
19
0 Introducción
R1 r R2 R1 | R2 r R3 l REQ R1 R2 R1 | R2 R3
R1 | R2
(0.24)
Los inductores en paralelo se comportan como las resistencias, por lo que su resistencia REQ se puede deducir de la misma manera como se muestra en la figura 0.26 y la ecuación 0.25.
C(
C)
C*
CK
=`^liX'%)- :fe]`^liXZ`e[\`e[lZkfi\j\egXiXc\cf%
L1 | L2
L1 r L2 L1 | L2 r L3 l LEQ L1 L2 L1 | L2 L3
(0.25)
Para los capacitores aplican las misma ecuaciones, pero solo si se conectan en serie como se ilustra en la figura 0.27 y la ecuación 0.26. :(
:)
:*
:K
=`^liX'%). :fe]`^liXZ`e[\ZXgXZ`kfi\j\egXiXc\cf%
C1 | C2
C1 r C2 C1 | C2 r C3 lC C1 C2 C1 | C2 C3
(0.26)
Al tratar con circuitos en serie y en paralelo se resume que sólo hay dos ecuaciones: la simple suma y el producto sobre la suma (o suma de recíprocos).
DATOS IMPORTANTES ± La electricidad es básicamente cargas tanto positivas como negativas. ± Cargas del mismo signo se repelen, cargas de signos contrarios se atraen. ± Tanto en un conductor como en un aislante existe el mismo número de cargas positivas y negativas. ± En un buen conductor, los electrones libres se mueven con facilidad, como el agua en las tuberías.
20
± En un buen aislante, los electrones libres están bien adheridos, como si fuera agua congelada en una tubería. ± Los semiconductores en estado natural, como el silicio, al aplicárseles cierta energía liberan electrones y forman huecos, con lo cual se produce la corriente eléctrica.
ELECTRÓNICA • MIJAREZ
0 Introducción
± Se requiere del voltaje y de la corriente para producir potencia.
puede ser puramente resistiva, capacitiva o inductiva, o una combinación de estas.)
± En el equivalente mundo mecánico: la resistencia es como la fricción, el inductor o bobina es como la masa y el capacitor es como un resorte.
± La regla del divisor de voltaje está dada por: V R VSAL ENT T . RT RE ± El capacitor se opone a las variaciones de voltaje, pero no de corriente. ± El inductor se opone a las variaciones de corriente, pero no de voltaje. ± Las resistencias en serie, los inductores en serie y los capacitores en paralelo se suman. ± Las resistencias en paralelo, los inductores en paralelo y los capacitores en serie usan la regla de la suma de los inversos o recíprocos.
± El inductor tiene el comportamiento dual del capacitor. ± Los conocimientos básicos son los más importantes, hay que aprenderse algunas fórmulas de memoria y ¡entenderlas! ± La reactancia es similar a la resistencia considerando una frecuencia específica. ± La ley de Ohm aplica tanto para resistencia como para reactancia I V/Z. (Z es la impedancia, la cual
PROBLEMAS
DEL CAPÍTULO
0
0.1 Calcule la disipación de potencia de la resistencia en el siguiente circuito de la figura 0.28.
0.3 Usando un paquete comercial de simulación tipo PSpice o Multisim, grafique el voltaje de salida para un divisor de voltaje RC, teniendo como voltaje de entrada una batería de 2.5 V, una R 1 000 Ω y C 0.1 μF. Verifique la constante de tiempo. 5V
RENT
R=2
9V
0V
VSAL
VENT
C
Entrada escalón
I
=`^liX'%)/ =`^liX'%*'
0.2 En el siguiente circuito divisor de tensión (véase figura 0.29) se requiere un voltaje de salida de 5 V. Calcule las resistencias necesarias si el voltaje de entrada es de 12 V. RENT
0.4 Usando un paquete comercial de simulación tipo PSpice o Multisim, grafique la corriente de salida para un divisor de voltaje RL, teniendo como voltaje de entrada una batería de 2.5 V, una R 1 000 Ω y L 0.1 μH. Verifique la constante de tiempo. 2.5 V
12 V
5V RTierra I
RENT 0V Entrada escalón
=`^liX'%)0
VSAL
VENT L I
=`^liX'%*(
® tria® g r u p og reud pi too er di ai tl oprai ta r lip aa
21
0 Introducción
0.5 De acuerdo con la ecuación 0.16, para un circuito RC, la constante de tiempo es τ RC. Deduzca cómo se obtiene la constante de tiempo τ R/L, para un circuito RL. L
0.6 Deduzca cómo se obtiene la fórmula de la resistencia equivalente para dos resistencias conectadas en paralelo.
20 V CA
0.7 En el siguiente circuito (véase figura 0.32) se tiene una fuente de alimentación sinusoidal de 20 V de CA operando a 180 Hz y un capacitor de 0.1 μF. Calcule la reactancia capacitiva y la corriente que pasa por el circuito.
=`^liX'%** circuito. Compare el resultado si la fuente de alimentación trabaja a 540 Hz.
C
20 V CA
=`^liX'%*)
0.9
Defina cuáles son los electrones libres en un sólido.
0.10
Describa la diferencia principal entre un material conductor y un material aislante.
0.11
Describa cómo es la distribución de electrones en la capa externa de un material semiconductor y su relación con los enlaces covalentes.
0.12
Describa la analogía entre un circuito de fluidos simple y un circuito eléctrico simple.
0.13
Usando la analogía entre sistemas eléctricos y mecánicos, describa por qué la resistencia es análoga a la fricción, el inductor es análogo a la masa y el capacitor es análogo al resorte.
0.14
Explique por qué la ley de Ohm es lineal.
0.8 En el siguiente circuito (véase figura 0.33) se tiene una fuente de alimentación sinusoidal de 20 V de CA operando a 180 Hz y un inductor de 0.1 μH. Calcule la reactancia inductiva y la corriente que pasa por el
22
ELECTRÓNICA • MIJAREZ
1 Dispositivo
semiconductor básico: el diodo Existen textos que explican de manera detallada qué son los semiconductores, incluso abordan los principios de la teoría cuántica. Pero, siguiendo el contexto de este libro, aquí solo se provee el entendimiento básico intuitivo de cómo funcionan los dispositivos semiconductores. En el capítulo 0 se estudia la constitución atómica de los semiconductores en su forma pura o intrínseca; sin embargo, en esta forma no tienen muchas aplicaciones. Para comprenderlo, cabe mencionar que muchos de los dispositivos electrónicos que usamos son útiles hasta que las características intrínsecas de los semiconductores se alteran mediante un proceso llamado dopaje, en inglés “doping”,1 que consiste en mezclar los semiconductores puros con otros materiales. Por esta razón, en este capítulo abordamos la construcción básica del dispositivo semiconductor más simple: el diodo. En este capítulo también se analizan sus características de conducción unidireccional y sus aplicaciones como convertidores de CA a CD, aunque también explicamos algunos diodos de propósito específico, como los diodos LED y los diodos Zener. Entonces, empecemos. En este capítulo aprenderemos acerca de:
1
El término “doping” o dopaje se utiliza con frecuencia en el ámbito deportivo, para indicar que los atletas han usado, de manera ilegal, medicamentos o sustancias que les permiten aumentar de manera no natural el rendimiento general en una competencia, posibilitándoles hacer proezas de súper humanos. En los dispositivos semiconductores, por otro lado, el doping permite realizar los bloques básicos de la electrónica, lo cual posibilita realizar instrumentos maravillosos, eso sí, de manera legal.
23
1 Dispositivo semiconductor básico: el diodo
X X X X X X X X X X
Semiconductores intrínsecos. Semiconductores extrínsecos o dopados. Construcción del diodo semiconductor. Polarización directa del diodo. Polarización inversa del diodo. Curva característica voltaje-corriente de los diodos. Aproximaciones de los diodos. Circuitos rectificadores. Rectificación filtrada. Diodos de propósito específico.
SEMICONDUCTORES
INTRÍNSECOS
Primero que nada, vamos a definir qué es un semiconductor de electricidad. Su nombre indica que es un elemento que conduce parcialmente la electricidad. Por tanto, se puede pensar que un semiconductor es un material “semibueno” conduciendo la electricidad; conduce menos electricidad que un conductor, pero más electricidad que un aislador.2 Como las resistencias, los semiconductores conducen electricidad, pero no fácilmente. De hecho, como las resistencias, entre más corriente hagamos pasar por ellos más se calentarán. Algunos de los materiales semiconductores intrínsecos más comunes son el silicio, el germanio y el carbono. Aunque el silicio es el más utilizado por la industria electrónica para la construcción de dispositivos electrónicos. Como vimos en el capítulo 0, en un semiconductor, los electrones de valencia, es decir, los electrones de la capa externa del átomo, no tienen la misma libertad para moverse como sucede con los metales; en su lugar, estos electrones se encuentran unidos a otros iones adyacentes, átomos que han perdido o ganado electrones, por medio de enlaces, conocidos como enlaces covalentes. Cada átomo de estos materiales contribuye con cuatro electrones de valencia, por lo que se les denomina tetravalentes, y determina la manera de combinarse con otros átomos, formando una estructura de cristal. La figura 1.1 ilustra simbólicamente, en dos dimensiones, la estructura de un cristal de silicio, incluyendo sus enlaces covalentes y sus electrones de valencia.
J`
J`
J`
J`
J`
J`
J`
J`
J`
=`^liX(%(
Como vimos en el capítulo 0, el flujo de corriente, y por ende la conductividad, es proporcional a la concentración de electrones libres en el material en cuestión. Para un buen conductor, dicha concentración de electrones es muy grande, aproximadamente 1028 electrones/m3; en cambio, para un aislador, es muy pequeña, aproximadamente 107electrones/m3; y para un semiconductor, esta concentración se encuentra en un punto intermedio entre estos dos valores.
24
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
A una temperatura muy baja, tal como el cero absoluto ( 273 ºC), todos los electrones de valencia en un cristal de silicio permanecen adheridos a sus respectivos enlaces de valencia, aproximándose a la estructura ideal de la figura 1.1. Esto trae consigo el hecho de que no habrá electrones libres disponibles moviéndose en el semiconductor de silicio y, por tanto, el cristal se comporta como un aislante. Sin embargo, arriba del cero absoluto algunos electrones de valencia pueden obtener suficiente energía proveniente del calor, la radiación u otras fuentes, para romper sus enlaces covalentes y escapar de su átomo, convirtiéndose en electrones libres que se pueden mover libremente en el material. Estos electrones libres dejan un vacío o hueco en el enlace covalente. La energía térmica es considerada la causa principal que produce el denominado par electrón-hueco, como se muestra en la figura 1.2.
J`
J`
?l\Zf J`
J`
=`^liX(%) GXi\c\Zkie$_l\Zfgif[lZ`[fgfi\e\i^Xkid`ZX% Conforme se eleva la temperatura, la generación de pares electrón-hueco se incrementa debido a la energía térmica.3 A temperatura ambiente (25 ºC), por ejemplo, algunos de los enlaces covalentes se rompen, produciendo pares electrón-hueco que hacen posible la conducción de electricidad. El hueco actúa como si fuera una carga positiva atrayendo electrones libres, y por consiguiente, generando un flujo de corriente.4 El hueco contribuye como portador de electricidad de la misma manera que un electrón libre, debido a que al aparecer un enlace covalente incompleto, originando un hueco, es relativamente fácil para un electrón de valencia, en un átomo vecino, dejar su enlace para llenar dicho hueco. Al moverse, el electrón deja, a su vez, un hueco en su posición inicial. De esta forma, el hueco se mueve en dirección opuesta a la del electrón. Este mecanismo de conducción de electricidad no involucra electrones libres como se ilustra esquemáticamente en la figura 1.3. (
)
*
+
,
-
.
/
X
Y
Z
=`^liX(%* D\ZXe`jdfd\[`Xek\\cZlXcle_l\ZfZfeki`Ylp\XcXZfe[lZZ`e[\\c\Zki`Z`[X[%
3
4
La energía para romper un enlace covalente, a temperatura ambiente, es de 0.72 eV para el germanio y de 1.1 eV para el silicio. El electronvolt, eV, es una unidad de energía usada en sistemas atómicos equivalente a la energía cinética adquirida por un electrón al ser acelerado por una diferencia de potencial, en el vacío, de 1 volt; su valor aproximado es de 1.6 r 10 19 Joules. Cada hueco o electrón posee una carga de 1.6 r 10 19 coulombs, pero de polaridad opuesta.
grupo editorial patria®
25
1 Dispositivo semiconductor básico: el diodo
En la figura 1.3 los círculos con un punto representan enlaces covalentes completos, mientras que los círculos vacíos simbolizan los huecos. En la figura 1.3 a) se muestra una fila de ocho iones, con un enlace roto o hueco en el ión 3. Si un electrón de valencia, por ejemplo el del ión 4, se mueve al hueco 3, la configuración resultante será la de la figura 1.3 b). De la misma manera, si un electrón del ión 5 se mueve al hueco 4, se producirá la configuración de la figura 1.3 c). Así, se puede observar que el hueco se mueve hacia la derecha, en sentido inverso al movimiento de los electrones de valencia. Por esta razón, se considera que los huecos son entidades f ísicas cuyo movimiento constituye un flujo de corriente. Sin embargo, no debemos perder de vista que un cristal semiconductor de silicio térmicamente genera menos pares electrón-hueco que uno de germanio a la misma temperatura. Esto implica que el cristal de silicio es más estable a altas temperaturas que el material de germanio. Esta estabilidad es la razón principal por la cual el silicio es usado primordialmente como material semiconductor en la construcción de diodos, transistores y circuitos integrados. Además, es importante hacer notar que a temperatura ambiente los semiconductores intrínsecos generan térmicamente muy pocos pares electrón-hueco, por lo que estos relativamente aún se comportan como buenos aislantes. Para incrementar el número de pares electrón-hueco, es necesario llevar a cabo el proceso de dopaje o doping que mencionamos al inicio de este capítulo.
SEMICONDUCTORES
EXTRÍNSECOS O DOPADOS
El proceso de dopaje o doping involucra añadir átomos de impureza, es decir átomos de mayor o menor número de electrones de valencia que los de un semiconductor intrínseco. Los materiales semiconductores de silicio y de germanio, por lo general, son dopados con átomos trivalentes o pentavalentes para incrementar su conductividad. Dicho de otra forma, un material semiconductor extrínseco es aquel que ha sido mezclado con átomos no tetravalentes.
Semiconductores tipo n Un átomo pentavalente es aquel que tiene cinco electrones de valencia. Algunos ejemplos de este tipo de átomos son el antimonio (Sb), el arsénico (As) y el fósforo (P). Un cristal de silicio dopado por un número grande de átomos pentavalentes genera muchos electrones libres en el material. Lo anterior ocurre porque en la ubicación de cada átomo pentavalente hay un electrón libre que no es usado en los enlaces covalentes de la estructura del material. Recordemos que solo ocho electrones pueden existir en la capa de valencia de cada átomo de silicio; por tanto, uno de los electrones en cada átomo pentavalente, funcionando como impureza, no es requerido en los enlaces covalentes de la estructura y puede flotar por el material como electrón libre. Esto se ilustra en la figura 1.4.
J`
J`
J`
J`
8j
J`
J`
J`
J`
=`^liX(%+ :i`jkXc[\j`c`Z`f[fgX[fZfeleX`dgli\qXg\ekXmXc\ek\%
26
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
El electrón libre ilustrado en la figura 1.4 pertenece a un átomo de arsénico, en el que sus enlaces covalentes se completan con ocho electrones de valencia, quedando un electrón extra que no se necesita. Sin embargo, si se añaden millones de impurezas pentavalentes a un cristal de silicio intrínseco, habrá millones de electrones libres flotando en el material. Debido a que el electrón es la partícula básica de carga negativa, a los materiales dopados de esta forma se les llama semiconductores tipo n. No obstante, la carga neta del semiconductor tipo n aún es neutra, puesto que el número total de electrones es igual al número de protones. Además, a causa de la energía térmica, en un semiconductor tipo-n también se crean algunos huecos o pares electrón-hueco. Los pocos electrones de valencia que logran absorber suficiente energía para romper sus respectivos enlaces covalentes, incrementan aún más el número de electrones libres en el cristal. Los huecos actúan como cargas positivas, ya que si un electrón libre pasa alrededor del hueco, este será atraído para llenar ese vacío. Debido a que hay mucho más electrones libres que huecos en un material semiconductor tipo n, a los electrones se les llama portadores de corriente mayoritarios y a los huecos portadores de corriente minoritarios. En el material semiconductor tipo n existe un gran número de iones positivos, puesto que en cada átomo pentavalente el quinto electrón de valencia deja su átomo, creando un desbalance, ya que el número de cargas positivas y negativas no es el mismo en el átomo o ión. En este caso, el núcleo del átomo pentavalente tendrá un protón más que el número de electrones orbitando. Estos iones positivos son cargas fijas en el semiconductor incapaces de moverse.
Semiconductores tipo p Un átomo trivalente es aquel que contiene solo tres átomos de valencia. Algunos ejemplos de esta clase de átomos son el aluminio (Al), el boro (B) y el galio (Ga). Un cristal de silicio dopado con una gran cantidad de átomos trivalentes producirá muchos huecos en los enlaces covalentes de la estructura del material. Esto sucede porque, para obtener la máxima estabilidad eléctrica con ocho electrones de valencia, se requiere un electrón de valencia en cada localización de un átomo trivalente, como se muestra en la figura 1.5.
J`
J`
J`
J`
>X
J`
J`
J`
J`
?l\Zf
=`^liX(%, :i`jkXc[\j`c`Z`f[fgX[fZfeleX`dgli\qXki`mXc\ek\% Cuando millones de impurezas trivalentes se añaden a un material semiconductor intrínseco, se crean millones de huecos en el cristal. Debido a que los huecos exhiben una carga positiva, a estos se les denomina materiales semiconductores tipo p. La carga neta del material semiconductor tipo p es neutra porque, como sucede con el material tipo n, el número total de electrones es igual al número total de protones. El semiconductor tipo p también contiene unos cuantos electrones libres a causa de la energía térmica, la cual produce algunos pares electrón-hueco. En este caso, los electrones son los portadores minoritarios de corriente, mientras que los huecos son los portadores mayoritarios de corriente.
grupo editorial patria®
27
1 Dispositivo semiconductor básico: el diodo
En el material semiconductor tipo p existe un gran número de iones negativos, debido a que los electrones libres que pasan cerca, en cada átomo trivalente, pueden llenar los huecos de los enlaces covalentes. De esta manera, la impureza trivalente tendrá un electrón más orbitando que el número de protones en su núcleo, dando como resultado el ión negativo. De igual manera que con el material n, los iones negativos en el material p son cargas fijas en el semiconductor incapaces de moverse.
CONSTRUCCIÓN
DEL DIODO SEMICONDUCTOR
Un dispositivo semiconductor muy popular, llamado diodo, se obtiene de la unión de dos materiales semiconductores, uno tipo p y otro tipo n, como se muestra en la figura 1.6 a). La interacción de las regiones dopadas forma la denominada unión P-N. El símbolo esquemático para el diodo semiconductor se ilustra en la figura 1.6 b). El lado p se conoce como ánodo, mientras que el lado n se conoce como cátodo. Los diodos son dispositivos unidireccionales, es decir permiten el flujo de corriente a través de ellos en una sola dirección, proveyéndoles propiedades de rectificación.5
X
g Ýef[f
e :}kf[f
Y
=`^liX(%- CXle`eG$E%X :fejkilZZ`eY}j`ZX[\le[`f[f#\e\cZlXcj\`cljkiXecXji\^`fe\j[fgX[XjGpE2 Y jdYfcf\jhl\d}k`Zf[\c[`f[fj\d`Zfe[lZkfi#\e\cZlXcj\dl\jkiXecXjk\id`eXc\j Zfii\jgfe[`\ek\jgXiX\c}ef[fp\cZ}kf[f%
La unión p-n tiene electrones libres en el lado n y huecos en el lado p, como se muestra en la figura 1.7 a). En esta figura, los electrones libres se representan por el símbolo de guión (–) y los huecos se representan por círculos (O). Al momento en que se forma la unión p-n, los electrones libres del lado n migran o se difunden a través de la unión hacia el lado p. Una vez en el lado p, estos electrones libres, ahora portadores minoritarios, no permanecen como tales por mucho tiempo, ya que tan pronto como cruzan la unión empiezan a llenar los huecos. Lo anterior trae como resultado que cuando los electrones libres dejan el lado n y llenan los huecos del lado p, se crean dos tipos de iones: positivos en el lado n y negativos en el lado p, como se muestra en la figura 1.7 b).
X
Y
g
e
g
e
Æ
" M9
=`^liX(%. Le`eg$e%X
La primera patente para un cristal semiconductor fue otorgada al f ísico alemán Karl Ferdinand Braun, en 1899. Sin embargo, otros trabajos con indicios de este comportamiento de conducción unidireccional se remontan veinte años atrás, con Thomas Alva Edison a la cabeza. En sus inicios, estos dispositivos fueron llamados: rectificadores, pero no fue sino hasta 1919 que el f ísico británico William Henry Eccles, pionero en el desarrollo de las radiocomunicaciones, acuñó el término diodo, proveniente de la palabra griega dia, que significa “a través”, y ode que significa “trayectoria”.
28
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
Conforme continúa el proceso de difusión, se crea una barrera de potencial, VB, y la migración de electrones del lado n al lado p se detiene. Los electrones moviéndose del lado n al lado p detectan un potencial negativo en el lado p que los repele de regreso al lado n. De la misma forma, los huecos que se mueven del lado p al lado n, detectan un potencial positivo en el lado n que los repele de regreso al lado p. El área donde se localizan los iones positivos y negativos se conoce como región o zona de agotamiento; recibe este nombre debido a que está desprovista de todos los portadores de carga. Los iones positivos y negativos de esta área están fijos a la estructura del cristal y, por tanto, no se pueden mover. En consecuencia, los iones forman una diferencia de potencial denominada barrera de potencial, VB, como se muestra en la figura 1.7 b). Para el silicio, la barrera de potencial es aproximadamente 0.7 V y para el germanio 0.3 V. Es importante hacer notar que la barrera de potencial no se puede medir externamente con un voltímetro; sin embargo, existe y es la que detiene el proceso de propagación de portadores de corriente.
POLARIZACIÓN
DIRECTA DEL DIODO
La polarización especifica el voltaje o corriente que puede ser utilizado como control de un dispositivo. En este caso, la polarización directa de un diodo permite el flujo con facilidad de corriente a través del diodo. La figura 1.8a) muestra un diodo con polarización directa. En la figura 1.8 a), podemos observar que el material semiconductor n se conecta a la terminal negativa de la fuente de voltaje, V. Es importante destacar que la fuente de voltaje tiene que ser lo suficientemente grande para superar la barrera de potencial VB.6 La terminal negativa de la fuente de voltaje repele los electrones libres del material n, forzándolos a cruzar la zona de agotamiento hasta el material semiconductor p. Una vez en el lado p, los electrones llenan los huecos de los enlaces covalentes incompletos y se mueven de hueco en hueco, atraídos por la terminal positiva de la fuente de voltaje V. Por cada electrón libre que entra en el lado n, un electrón libre sale del lado p. Por su parte, la figura 1.8 b) muestra el símbolo esquemático del diodo polarizado directamente por una fuente de voltaje, V.7 En esta figura, también se observa que el flujo real de electrones, ocurre del material n hacia el material p, en contra del sentido de la flecha del símbolo del diodo. En tanto, la flecha del símbolo del diodo apunta en sentido del flujo convencional de corriente. Ambos sentidos funcionan correctamente cuando se analizan circuitos con diodos; sin embargo, en este libro se utiliza el flujo real cuando analicemos circuitos con diodos. =clafZfem\eZ`feXc[\\c\Zkife\j 8
:
@ g
X
e
I
Y
M
@
=clafi\Xc[\\c\Zkife\j
M
=`^liX(%/ Le`eg$egfcXi`qX[X[`i\ZkXd\ek\%X =l\iqXj\ok\ieXjfYc`^XeXcfj\c\Zkife\jc`Yi\j[\ccX[feXZilqXicXqfeX[\X^fkXd`\ekf_XZ`X \ccX[fg#[fe[\cfj\c\Zkife\jcc\eXecfj_l\Zfj%LeXm\q\e\ccX[fg#cfj\c\Zkife\jYi`eZXe[\_l\Zf\e_l\Zf\ecXjYXe[Xj[\mXc\eZ`X%Y ;`f[fgfcXi`qX[f[`i\ZkXd\ek\#[fe[\j\\jg\Z`]`ZX\c]claf[\Zfii`\ek\i\Xcp\cZfem\eZ`feXc%
POLARIZACIÓN
INVERSA DEL DIODO
La polarización inversa de una unión p-n se lleva a cabo conectando la terminal negativa de una fuente de voltaje, V, al material semiconductor tipo p y la terminal positiva al material semiconductor tipo n, como se muestra en la figura 1.9 a). El efecto es que los portadores de carga, electrones y huecos, en ambas secciones n y p, respectivamente, son 6
7
Recordemos que si la unión p-n es de silicio, la fuente de voltaje debe ser igual o mayor de 0.7 V para contrarrestar la barrera de potencial VB y producir el flujo de corriente. En la práctica, normalmente se utiliza una resistencia en serie con el diodo para limitar su corriente.
grupo editorial patria®
29
1 Dispositivo semiconductor básico: el diodo
apartados de la unión. Lo anterior incrementa el ancho de la región de agotamiento. Los electrones en el lado n son alejados de la unión y atraídos hacia la terminal positiva de la fuente de voltaje V. De la misma manera, los huecos en el lado p son apartados de la unión y atraídos hacia la terminal negativa de la fuente de voltaje, V. Como se puede observar, la figura 1.9 b) muestra el símbolo esquemático de un diodo polarizado inversamente por una fuente de voltaje externa, V. El resultado de esta polarización es que el diodo entra en su estado de no conducción y actúa de manera ideal como un circuito abierto con una resistencia infinita.
8
:
@4'8 X
g
e
Y M
M
=`^liX(%0 Le`eg$egfcXi`qX[X`em\ijXd\ek\%X
Corriente de fuga La figura 1.9 b) muestra, de manera ideal, que el flujo de corriente en un circuito con un diodo polarizado inversamente es cero; sin embargo, aun con esta polarización, existe una pequeña corriente en el diodo, llamada corriente de fuga, IR. La corriente de fuga se debe a los portadores minoritarios de corriente en ambas partes del diodo semiconductor. Los huecos son los portadores minoritarios en el lado n, mientras que los electrones libres son los portadores minoritarios en el lado p. Los portadores minoritarios de corriente existen como resultado de la energía térmica, la cual produce algunos pares electrón-hueco. Debido a que la temperatura determina el número de pares electrón-hueco generado, la corriente de fuga también es afectada por la temperatura, por lo que cualquier incremento en la temperatura del diodo también incrementará esta corriente. Como la corriente de fuga es determinada por los portadores de carga minoritarios, su dirección es opuesta a la dirección de corriente efectuada cuando el diodo se polariza de manera directa.
CURVA
CARACTERÍSTICA VOLTAJE-CORRIENTE DE LOS DIODOS
La curva característica de los diodos involucra el comportamiento de voltaje y corriente con respecto a su polarización, ya sea directa o inversa. La figura 1.10 muestra la curva característica de un diodo de silicio en cuatro cuadrantes. El cuadrante superior derecho de la figura 1.10 corresponde a los voltajes y las corrientes cuando el diodo es polarizado directamente. En esta, podemos observar que la corriente que pasa por el diodo es muy pequeña cuando el voltaje de polarización es menor de 0.6 V. Sin embargo, al momento de incrementar su polarización directa arriba de 0.6 V, la corriente del diodo se incrementa en forma abrupta. También es importante hacer notar que la caída de voltaje, VF , de polarización directa permanece relativamente constante aun cuando la corriente, IF, se incrementa.8 Para un diodo de silicio, un voltaje de 0.7 V es el valor aproximado que se asume en la barrera de potencial, la cual es aproximadamente 0.3 V para un diodo de germanio; por tanto, si la gráfica de la figura 1.10 fuera para un diodo de germanio, la corriente IF se incrementaría con rapidez aproximadamente a 0.3 V.
8
Para cualquier diodo, el voltaje de polarización directa disminuye con el aumento de la temperatura, aproximadamente 2 mV por grado centígrado.
30
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
@=d8 ), 9 )' (, 8
MfckXa\[\ilgkliX
GfcXi`qXZ`e [`i\ZkX
('
M9I
, MImfckj
MGmfckj %( %) %* %+ %, %- %. %/ %0
GfcXi`qXZ`e `em\ijX
@Iμ8
=`^liX(%(' :limXZXiXZk\ijk`ZX[\mfckXa\$Zfii`\ek\[\le[`f[f[\j`c`Z`f%
Voltaje de ruptura El cuadrante inferior izquierdo de la figura 1.10 representa al diodo de silicio polarizado inversamente. Aquí, podemos observar que una corriente, IR, de valor muy pequeño fluye por la unión p-n, hasta que se alcanza el voltaje de ruptura VBR. Antes de llegar al voltaje de ruptura, la corriente que fluye por el diodo es resultado de los portadores minoritarios de carga producidos debido a la energía térmica, la cual es llamada corriente de fuga IR, como se mencionó antes; por consiguiente, la corriente IR tiene sentido opuesto a la IF , de polarización directa, mientras que en la curva característica del diodo se representa como una corriente en el cuadrante inferior izquierdo. La corriente de fuga se incrementa principalmente con el aumento de la temperatura y es relativamente independiente de los cambios en el voltaje de polarización inverso, VR. El incremento ligero que se aprecia en la corriente de fuga, IR, conforme se incrementa el voltaje de polarización inverso, VR, es resultado de la corriente de fuga superficial. Se dice que la corriente de fuga superficial existe porque hay muchos huecos en los bordes o superficies del cristal de silicio debido a enlaces covalentes incompletos. Estos huecos proveen la trayectoria para algunos electrones libres en la superficie del cristal. Cuando el voltaje de polarización inverso, VR, se vuelve muy grande, ocurre un proceso denominado avalancha, el cual sucede porque los electrones libres producidos térmicamente en el lado p son acelerados, a gran velocidad, por la fuente de voltaje al momento de moverse a través del diodo. Estos electrones libres chocan con los electrones de valencia de las otras órbitas, los cuales a su vez son liberados y acelerados a gran velocidad, desprendiendo, en consecuencia, más electrones de valencia. Este proceso es acumulativo, por lo que se genera este efecto avalancha. Cuando se alcanza el voltaje de ruptura, VBR, la corriente IR se incrementa abruptamente como se observa en la figura 1.10. Se recomienda no operar los diodos en la región de ruptura, ya que si también se sobrepasa la corriente IR máxima, es decir, su potencia, el diodo podría dañarse.9 Por ejemplo, si se tiene una aplicación donde se requiere rectificar, es decir permitir pasar solo los semiciclos positivos, de una onda sinusoidal de 130 VPP a 0.5 A, y se tienen tres opciones de diodos: a) 1N4001 (PIV 50 V, IO 1 A), b) 1N4002 (PIV 100 V, IO 1 A) y c) 1N4005 (PIV 600 V, IO 1 A), donde el costo del diodo se incrementa con su voltaje inverso de pico (PIV, por sus siglas en inglés), e IO es la corriente promedio máxima en polarización directa. La pregunta sería: ¿Qué diodo se seleccionaría para cumplir el requerimiento especificado? La solución fácil
9
Aun cuando el diodo ideal podría bloquear toda la corriente cuando se polariza inversamente, la realidad es que no es así. Y como le sucede a todos los seres humanos, que tienen su precio, cada diodo también tiene su precio; si el voltaje de polarización inversa es lo suficientemente grande, la corriente fluirá por el diodo. El punto en que esto sucede es el precio del diodo y es llamado voltaje de ruptura o voltaje inverso de pico (PIV, por sus siglas en inglés).
grupo editorial patria®
31
1 Dispositivo semiconductor básico: el diodo
sería seleccionar la opción c), ya que el PIV es 600 V y el IO es 1 A; sin embargo, la opción b) podría realizar el trabajo muy bien, a menor costo, ya que el voltaje de pico es o 65 VP que es menor al PIV de 100 V.10
Resistencia de CD de un diodo Al examinar la región de polarización directa de la figura 1.10, podemos observar que la curva VF vs. IF tiene un comportamiento no lineal, por lo que el diodo se denomina dispositivo semiconductor no lineal.11 Lo anterior se debe a que la corriente IF no se incrementa en la misma proporción que el voltaje VF . Por ejemplo, el voltaje VF no tiene que triplicarse para triplicar la corriente IF . Aún así, la resistencia de CD de un diodo polarizado directamente se obtiene por medio de la fórmula RF VF/IF .12 Por ejemplo, si usamos la curva característica del diodo de la figura 1.10, podemos calcular la resistencia de CD en los puntos A y B. Punto A: RF VF/IF 0.65 V/11 mA 59 Ω Punto B: RF VF/IF 0.7 V/22.5 mA 31 Ω Como se puede ver, entre más corriente conduce el diodo, su resistencia, RF , es más pequeña. Sin embargo, es importante puntualizar dos cosas: 1. El diodo no obedece la ley de Ohm porque no es lineal. 2. Si existen diodos en un circuito, dicho circuito no tendrá un equivalente de Thévenin, ya que no será un circuito lineal activo.
APROXIMACIONES
DE LOS DIODOS
Existen tres aproximaciones para analizar circuitos con diodos semiconductores. La opción que se seleccione dependerá de la exactitud deseada en los cálculos del circuito. La primera aproximación de un diodo, llamada aproximación ideal, considera al diodo polarizado directamente como un interruptor cerrado y una caída de voltaje de cero volts, como se muestra en la figura 1.11 a). Del mismo modo, esta aproximación considera al diodo en polarización inversa, como un circuito abierto, con una corriente cero, como se muestra en la figura 1.11 b). La gráfica de la figura 1.11 c), por su parte, muestra la curva característica del diodo en su aproximación ideal. La primera aproximación del diodo es útil cuando se requiere una idea general de lo que sucede en un circuito respecto a voltajes y corrientes. La segunda aproximación del diodo considera al diodo polarizado directamente como un diodo ideal en serie con una batería, como se muestra en la figura 1.12 a). Para el diodo de silicio, esta batería es de 0.7 V, el mismo valor de la barrera de potencial, VB , en la unión p-n. En polarización inversa, esta aproximación considera al diodo como un
10
11
12
Es importante hacernos amigos y que nos familiaricemos con las hojas de datos de los dispositivos. Para el diodo existen otros parámetros que indica el fabricante, como la corriente IFSM, la cual es la máxima corriente instantánea que puede manejar un diodo en un solo pulso. Sobrepasar la corriente IFSM también puede destruir el diodo. La curva característica ideal volts-amperes del diodo está definida por la ecuación I IR(eV/VT 1). Donde V es la caída de voltaje de la unión p-n. En este caso V T representa los electronvolts equivalentes de la temperatura y se obtienen por V T KT/e, donde K es la constante de Boltzmann, T es la temperatura absoluta y e es la carga del electrón. A temperatura ambiente, V T es aproximadamente 25 mV. Cuando el voltaje V es positivo y varias veces mayor que V T , el diodo se encuentra polarizado directamente, y el término exponencial de la ecuación excede por mucho la unidad por lo que el valor de 1 del paréntesis puede ser despreciado. En consecuencia, a excepción de un rango pequeño en el origen, la corriente se incrementa exponencialmente con el voltaje. Cuando el diodo se polariza inversamente y V es negativo y algunas veces mayor que VT , el término exponencial se hace muy pequeño y la corriente I es aproximadamente la corriente inversa IR. El estado de un diodo semiconductor puede determinarse verificando su resistencia usando un óhmetro. Si el diodo se encuentra en buen estado, la resistencia RF en polarización directa será muy baja y la resistencia de polarización inversa RR será muy alta, la proporción RR/RF será de orden de 1 000 o mayor. Si el valor de resistencia medido es muy bajo en ambas polarizaciones, el diodo se encuentra en cortocircuito. Pero, si el valor de resistencia medido es muy alto en ambas polarizaciones, el diodo se encuentra abierto. Es importante remarcar que algunos multímetros digitales muestran el símbolo del diodo para probar el estado de los mismos; sin embargo, estos despliegan la caída de voltaje del diodo en lugar de su resistencia.
32
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
@=
MfckXa\[\gfcXi`qXZ`e [`i\ZkX#Z\ifmfckj#M=
@ek\iilgkfiZ\iiX[f Z\ifmfckj
GfcXi`qXZ`e[`i\ZkX
X GfcXi`qXZ`e`em\ijX
@ek\iilgkfiXY`\ikf Z\ifXdg\i\j
Y
MI
M=
:fii`\ek\[\ gfcXi`qXZ`e`em\ijX# Z\ifXdg\i\j#@I @I Z
=`^liX(%(( Gi`d\iXXgifo`dXZ`e[\c[`f[f%X ;`f[fgfcXi`qX[f[`i\ZkXd\ek\#Zfej`[\iX[fZfdfle`ek\iilgkfiZ\iiX[f%Y ;`f[fgfcXi`qX[f `em\ijXd\ek\#Zfej`[\iX[fZfdfle`ek\iilgkfiXY`\ikf%Z >i}]`ZXZfecXjZXiXZk\ijk`ZXj`[\Xc\j[\c[`f[f\egfcXi`qXZ`e[`i\ZkX\`em\ijX%
interruptor abierto, como se observa en la figura 1.12 b). La figura 1.12 c), por su parte, indica la curva característica de polarización directa e inversa de esta aproximación. @=
M9 X
MI
M= M9
Y
EfkX1M94'%.MgXiXJ` p'%*MgXiX>\
:fii`\ek\[\ gfcXi`qXZ`e`em\ijX# Z\ifXdg\i\j#@I @I Z
=`^liX(%() J\^le[XXgifo`dXZ`e[\c[`f[f%X GfcXi`qXZ`e[`i\ZkXZfej`[\iX[XZfdfle[`f[f`[\XcZfeleXYXk\iX\ej\i`\%Y GfcXi`qXZ`e `em\ijXZfej`[\iX[XZfdfle`ek\iilgkfiXY`\ikf%Z :limXZXiXZk\ijk`ZX[\gfcXi`qXZ`e`em\ijXp[`i\ZkX%
La segunda aproximación se usa cuando se necesitan cálculos más exactos en el circuito en cuestión. La tercera aproximación contiene la resistencia de los materiales p y n, y se le denomina rB. En polarización directa, esta aproximación incluye, además de la resistencia rB , el voltaje de la barrera de potencial VB , como se muestra en la figura 1.13 a). El valor de rB depende del nivel de doping y del tamaño de los materiales. En esta aproximación, la caída de voltaje, VF , en polarización directa se calcula con la ecuación 1.1. VF VB IF rB
(1.1)
De la ecuación 1.1 podemos observar que, en polarización directa, la resistencia rB causa un pequeño incremento en el voltaje VF cuando se incrementa la corriente IF .
grupo editorial patria®
33
1 Dispositivo semiconductor básico: el diodo
@=
GfcXi`qXZ`e[`i\ZkX
M9 i9 X
MI
GfcXi`qXZ`e`em\ijX
M9
I\j`jk\eZ`X[\gfcXi`qXZ`e`em\ijX Y
:fii`\ek\[\]l^X \egfcXi`qXZ`e `em\ijX#@I
@I Z
=`^liX(%(* K\iZ\iXXgifo`dXZ`e[\c[`f[f%X GfcXi`qXZ`e[`i\ZkX#`eZclp\\cmfckXa\[\cXYXii\iX[\gfk\eZ`Xc# M9 #pcXi\j`jk\eZ`Xi9%Y GfcXi`qXZ`e`em\ijX#dl\jkiXleXi\j`jk\eZ`Xdlp^iXe[\#Xlehl\ef`e]`e`kX% Z :limXZXiXZk\ijk`ZX[\gfcXi`qXZ`e`em\ijXp[`i\ZkX%
La figura 1.13 b) muestra la tercera aproximación del diodo en polarización inversa, en la cual se observa un interruptor abierto en paralelo, con una resistencia de un valor muy grande, la cual, en consecuencia, permite el paso de una corriente de fuga, IR, muy pequeña, como se muestra en la figura 1.13 c). En la figura 1.13 c) podemos observar que la pendiente de la curva, en polarización directa, puede usarse para calcular la resistencia rB con la ecuación 1.2. rB ΔV/ΔI
(1.2)
Donde ΔV representa el cambio en el voltaje del diodo a causa del cambio en su corriente ΔI. Por ejemplo, para un diodo 1N4001 que tiene un voltaje de polarización directo VF de 1.1 V y una corriente IF de 1 A, se requiere calcular la resistencia rB. Para obtener rB , primero se asume que la corriente IF del diodo es cero cuando el voltaje de polarización directa VF es exactamente 0.7 V. Posteriormente, usamos la ecuación 1.2 y los parámetros del diodo: rB ΔV/ΔI (1.1 V 0.7 V)/(1 A 0 A) 0.4 Ω
(1.3)
Para ilustrar el uso de las tres aproximaciones del diodo, resolveremos el circuito de la figura 1.14 a) para obtener el voltaje y la corriente de carga. La figura 1.14 b) muestra el circuito para la primera aproximación, donde: VL VENT 10 V, por tanto IL VL/RL 10 V/100 Ω 100 mA
(1.4)
Para la segunda aproximación, se tiene el circuito de la figura 1.14 c), donde: VL VENT VB 10 V 0.7 V 9.3 V,
(1.5)
IL VL/RL 9.3 V/100 Ω 93 mA
(1.6)
Por tanto:
La figura 1.14 d) muestra el circuito para la tercera aproximación. IL (Vin VB)/(RL RB) (10 V 0.7 V)/(100 Ω 2.5 Ω) 90.73 mA
34
ELECTRÓNICA • MIJAREZ
(1.7)
1 Dispositivo semiconductor básico: el diodo
i94)%,Ω
;( 'M
IC4(''Ω
M
IC4(''Ω
M
MC4('Ω
Y
X
M94'%.M
M94'%.M
IC4(''Ω
M`e4('M
MC40%*M
i94)%,Ω
IC4(''Ω
M
Z
MC4'%.M
[
=`^liX(%(+ :`iZl`kfljX[fgXiX`cljkiXicXjXgifo`dXZ`fe\j[\c[`f[f#ZXcZlcXe[fjljmfckXa\jpZfii`\ek\j% X :`iZl`kffi`^`eXc%Y Gi`d\iXXgifo`dXZ`e%Z J\^le[XXgifo`dXZ`e%[ K\iZ\iXXgifo`dXZ`e%
VL IL r RL 90.73 mA r 100 Ω 9.07 V
(1.8)
La primera aproximación puede no ser muy exacta, pero ayuda a tener un entendimiento intuitivo de este importante dispositivo; no obstante, como mencionamos al inicio de esta sección, la opción elegida dependerá de la exactitud deseada en los cálculos del circuito.13
CIRCUITOS
RECTIFICADORES
La mayoría de los equipos electrónicos requiere voltajes de CD para operar de forma adecuada. Sin embargo, como se observa en el capítulo 1 que se encuentra en el CD-ROM, la red eléctrica que proporciona electricidad a los hogares y las industrias es de CA. Por tanto, la línea de alimentación de 120 VCA,14 a la cual se conectan la mayoría de los equipos electrónicos, debe ser convertida de alguna manera a CD. A un circuito que convierte el voltaje de la línea de alimentación de CA a un voltaje requerido de CD, se le conoce como fuente de alimentación. Los componentes más importantes en las fuentes de alimentación son los diodos rectificadores, los cuales convierten el voltaje de línea de CA a un voltaje de CD. Esta aplicación de los diodos es una de las más simples e importantes en el diseño de equipos electrónicos; por esta razón, algunas veces, a los diodos se les llama rectificadores. En esta sección estudiamos algunos de los circuitos rectificadores más comunes, asumiendo que todos los diodos son de silicio.
13
14
Una corriente de 3 mA (10 3) podría ser una cantidad despreciable cuando manejamos cientos o miles de mA; pero puede ser una cantidad muy grande si se está trabajando en el rango de μA (10 6) o ηA (10 9). El voltaje nominal depende del transformador utilizado. En México, para transformadores monofásicos, el voltaje es de 120 VCA y 240 VCA, y para transformadores trifásicos es de 127 VCA y 220 VCA. Los clientes residenciales en México, por lo general, utilizan 120 VCA; sin embargo, para el caso de los clientes residenciales en Europa, Australia y otros países, la red de CA de las compañías de electricidad es de 240 VCA.
grupo editorial patria®
35
1 Dispositivo semiconductor básico: el diodo
Rectificador de media onda El circuito rectificador más simple es el rectificador de media onda, como el que se muestra en la figura 1.15 a). Por su parte, T1 es el transformador de bajada que provee el voltaje en el secundario, VS, como se muestra en la figura 1.15 b). Cuando el voltaje del secundario del transformador es positivo, D1 se polariza directamente y permite el flujo de corriente hacia la carga RL. Por otro lado, cuando el voltaje del secundario del transformador es negativo, D1 se polariza inversamente y se comporta como un interruptor abierto, no permitiendo el flujo de corriente hacia la carga RL. En consecuencia, el voltaje de salida, VSAL, es una serie de pulsos positivos, como los que se muestran en la figura 1.15 c). El transformador de la figura 1.15 a) tiene una relación de vueltas, NP:NS, de 4:1. Por tanto, si el voltaje de entrada en el circuito primario del transformador es de 120 VCA, podemos calcular el voltaje en el circuito secundario del transformador usando la relación NP:NS de la siguiente manera: VS NSVP/NP (1)(120 VCA)/4 30 VCA
(1.9)
EG1EJ +1(
MJ8C ;(
()'M:8 -'?q
*'M:8
IC4(''Ω
K( X MJ
"+)%+)M
K`\dgf#k
(-%-.d K MJ8C
Y
"+(%.)M
'M
M;:4'%*(/MJ8C4(*%).M K`\dgf#k
(-%-.d K Z
=`^liX(%(, :`iZl`kfi\Zk`]`ZX[fi[\d\[`Xfe[X%X :`iZl`kf%Y MfckXa\\e\cj\Zle[Xi`f#MJ2mfckXa\[\jXc`[X#MJ8C% Z =fidX[\fe[X[\jXc`[X[\cZ`iZl`kfi\Zk`]`ZX[fi[\d\[`Xfe[X%
Esto significa que si medimos con un voltímetro de CA el voltaje en el secundario del transformador, T1, el voltaje que mediríamos sería de 30 VCA. Cabe remarcar que el voltaje medido es el denominado voltaje eficaz o rms (root mean square, por sus siglas en inglés), el cual se obtiene dividiendo el voltaje de pico máximo de la onda sinusoidal entre raíz de 2 o 1.414 (VP/1.414). Por ejemplo, si queremos saber el voltaje de pico máximo del secundario de T1 procedemos de la siguiente forma:
36
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
VP VS (rms) r 1.414 30 V r 1.414 42.42 V
(1.10)
Por tanto, el voltaje pico a pico (VPP) del secundario del transformador se obtiene multiplicando por dos el VP , esto es 2 r VP; en este caso VPP 2 r 42.42 84.84 V, como se muestra en la figura 1.15 b). La figura 1.15 c) muestra la forma de onda de salida del rectificador de media onda. Cuando el voltaje en el secundario de T1 es positivo, el diodo D1 conduce, entonces la corriente fluye por RL y se produce la serie de pulsos positivos. Cuando el voltaje del secundario es negativo, el voltaje de salida es cero. Considerando la caída de voltaje del diodo D1, la segunda aproximación, el voltaje de salida en el secundario, sería 42.42 V 0.7 V 41.72 V. El voltaje promedio o de CD en la carga RL se obtiene multiplicando el voltaje pico VP por 0.318, como se muestra en la ecuación 1.11: VCD 0.318 r VSAL(P)
(1.11)
Al usar la segunda aproximación del diodo, podemos calcular el voltaje de CD en la carga RL del circuito de la figura 1.15, de la siguiente manera: VCD 0.318 r 41.72 V 13.27 V
(1.12)
Este es el valor que hubiéramos medido a través de la carga RL usando un voltímetro de CD, como se muestra en la figura 1.15 c). Por tanto, la corriente de CD en la carga, ICD, puede calcularse así: ICD VCD/RL 13.27 V/100 Ω 132.7 mA
(1.13)
Para el rectificador de media onda, la ICD en la carga es la misma que la corriente en el diodo, lo cual puede ser expresado por la ecuación 1.14: IDIODO IL(CD)
(1.14)
La frecuencia de la línea de alimentación de CA es de 60 Hz, es decir tiene 60 ciclos en un segundo. El periodo de un ciclo se calcula como T 1/f, por tanto T 16.67 ms, como se muestra en el voltaje secundario, VS, de la figura 1.15 b). En tanto, en la figura 1.15 c) podemos observar que un ciclo del voltaje de salida, VSAL, se repite cada 16.67 ms. En consecuencia, la frecuencia de la forma de onda del voltaje de salida del rectificador de media onda es igual a la frecuencia aplicada a la entrada del rectificador, en este caso 60 Hz. Esto se puede expresar por la ecuación 1.15: fSAL fENT
(1.15)
Cuando el voltaje de CA de la línea de alimentación se encuentra en su semiciclo negativo, el diodo se polariza inversamente y no fluirá corriente por el diodo D1 ni por la resistencia de carga RL ; el circuito equivalente en este estado se muestra en la figura 1.16. Recordemos que el voltaje de circuito abierto a través de un circuito serie simple es el mismo que el voltaje de entrada, el cual en este caso es el voltaje del secundario del transformador. NP : NS 4:1
–
D1
–
+
VD = Vs = 42.42 V 1
120 VCA 60 Hz
Vs(rms) = 42.42 V
RL = 100
+ T1
=`^liX(%(- :`iZl`kfi\Zk`]`ZX[fi[\d\[`Xfe[X#\e\cZlXcj\dl\jkiX\cZ`iZl`kf\hl`mXc\ek\[\c[`f[f#;(#gfcXi`qX[f`em\ijXd\ek\[liXek\\c j\d`Z`Zcfe\^Xk`mf[\cmfckXa\j\Zle[Xi`f[\ckiXej]fidX[fi%
grupo editorial patria®
37
1 Dispositivo semiconductor básico: el diodo
El diodo D1 debe ser capaz de soportar el voltaje de pico del secundario del transformador, el cual es 42.42 V, tal como se muestra en la figura 1.16. Por esta razón, la especificación del voltaje inverso de pico (PIV) del diodo debe ser mayor que el valor del voltaje pico del secundario del transformador o el diodo entrará a la región de ruptura y se dañará. Por ejemplo, si se tiene el circuito de la figura 1.17, donde la relación de vueltas NP:NS, es 3:1, y se requiere calcular el voltaje en el secundario del transformador VS (voltaje eficaz y voltaje de pico), IL, IDIODO, fSAL y el PIV para el diodo. NP : NS 3:1
VSAL D1
120 VCA 60 Hz
VCA
RL = 100
T1
=`^liX(%(. :`iZl`kfi\Zk`]`ZX[fi[\d\[`Xfe[XZfeleXi\cXZ`eEG1EJ4*1(\e\ckiXej]fidX[fiK(% En este caso, primero calculamos el voltaje rms en el secundario del transformador VS (NS/NP)VP 120 V/3 40 V de CA. El valor de pico es VS(P) VS r 1.414 40 r 1.414 56.56 V. En cambio, si usamos la segunda aproximación del diodo, entonces el voltaje de pico será 56.56 V menos 0.7 V, lo cual nos da un voltaje de 55.86 V. Para calcular la corriente en la carga IL, primero obtenemos el voltaje de CD, que se consigue usando la ecuación 1.11: VCD 0.318 r VSAL(P) 0.318 r 55.86 V 17.76 V La corriente en la carga, entonces, se calcula como IL VCD/RL 17.76 V/100 Ω 177.6 mA. La frecuencia en la forma de onda del voltaje de salida es 60 Hz, y finalmente el PIV para D1 es el voltaje de pico del transformador 56.56 V. Si quisiéramos un voltaje de salida negativo, lo único que tendríamos que hacer es invertir el diodo en el circuito de la figura 1.17. Otro tipo de rectificador es el de onda completa, el cual utiliza dos diodos en lugar de uno. Sin embargo, una versión más usada es la del rectificador tipo puente, como el que se muestra en la figura 1.18.15 Como se observa, T1 es el transformador de bajada que proporciona un voltaje secundario VS menor al de la línea de alimentación de CA. Cuando la polaridad del voltaje VS es positiva, los diodos D2 y D3 se polarizan directamente, permitiendo el flujo de corriente en la carga RL. En esta misma polaridad de VS , los diodos D1 y D4 se polarizan inversamente y no conducen corriente hacia la carga. Cuando la polaridad del voltaje VS es negativa, los diodos D1 y D4 se polarizan directamente, permitiendo el flujo de corriente en la carga RL. En esta misma polaridad de VS, los diodos D2 y D3 se polarizan inversamente y no conducen corriente hacia la carga. Es importante hacer notar que el sentido de corriente en la carga RL es la misma para los dos semiciclos de VS. Para las conexiones de diodos de la figura 1.18, el voltaje de salida es positivo. Como en el caso del rectificador de media onda, el voltaje VS del transformador se obtiene por la relación de vueltas NP :NS , por lo que VS 30 VCA, valor eficaz; del mismo modo, el voltaje de pico es VS(P) 42.42 V, como se muestra en la figura 1.19 a). Cuando la polaridad de VS es positiva, los diodos D2 y D3 conducen; de esta manera, se produce la forma de onda de la figura 1.19 b). De la misma forma, cuando la polaridad de VS es negativa, D1 y D4 conducen, generando la forma 15
En el mercado existe una gran variedad de rectificadores tipo puente disponibles como módulos pre-empaquetados. Los más pequeños vienen con corrientes promedio máximas de 1 A y voltajes de ruptura que van desde los 100 hasta los 600 V, o incluso hasta los 1000 V. Algunos puentes rectificadores son gigantes en cuanto a su capacidad, con corrientes de hasta 50 A o más.
38
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
NP : NS 4:1
– D1 120 V CA 60 Hz
D2 VSAL
Vs = 30 V CA D3
D4
+
+
RL = 100
T1
–
=`^liX(%(/ I\Zk`]`ZX[fi[\fe[XZfdgc\kXk`gfgl\ek\% de onda de la figura 1.19 c). Los pares de diodos D2-D3 y D1-D4 conducen en semiciclos opuestos de VS. El efecto combinado de estos pares de diodos se muestra en la figura 1.19 d). Cada par de diodos realiza la rectificación de media onda para la carga RL. VS
VSAL D2, D3
+42.42 V Tiempo, t
0V
T 16.67 m
VSAL D1, D4
+ 41 V Tiempo, t
0V
a)
b)
VSAL D1, D2, D3, D4
+ 41 V
0V
Tiempo, t
+ 41 V
0V
Tiempo, t T 8.33 m
c)
d)
=`^liX(%(0 I\Zk`]`ZX[fi[\fe[XZfdgc\kXk`gfgl\ek\%X MfckXa\#MJ #\e\cj\Zle[Xi`f[\K( %Y MfckXa\[\jXc`[XZlXe[fcfj[`f[fj;)p;* Zfe[lZ\e%Z MfckXa\[\jXc`[XZlXe[fcfj[`f[fj;(p;+Zfe[lZ\e%[ MfckXa\[\jXc`[XZfdY`eX[f%
Usando la segunda aproximación del diodo, el voltaje de pico en la resistencia de carga RL es 42.42 V–1.4 V 41.02 V. En este caso, se resta 1.4 V debido a la caída de voltaje de los diodos en conducción. El voltaje promedio o de CD en la salida de un rectificador de onda completa, sin filtros, se obtiene mediante la ecuación 1.16. VCD 0.636 r VSAL(P)
(1.16)
En este ejemplo, VCD 0.636 r 41.03 V 26.09 V. La corriente de CD en la carga RL puede calcularse usando ICD VCD/RL 26.09 V/100 Ω 260.9 mA. Sin embargo, para un rectificador de onda completa, la corriente en cada diodo es la mitad de la corriente de CD en la carga, lo cual puede expresarse usando la ecuación 1.17. IDIODO IL/2
grupo editorial patria®
(1.17)
39
1 Dispositivo semiconductor básico: el diodo
En este ejemplo, IDIODO 260.9 mA/2 130.4 mA. Esta corriente es la mitad de la corriente de carga porque cada par de diodos en el rectificador puente provee la mitad de la forma de onda rectificada en la carga RL. Debido a que el puente rectificador proporciona una salida de onda completa, la frecuencia de la forma de onda de salida se obtiene mediante la ecuación 3.18. fSAL 2fENT
(1.18)
Para la línea de alimentación que tiene una frecuencia de 60 Hz, la frecuencia a la salida del puente rectificador sería fSAL 2fENT 2 r 60 Hz 120 Hz. Con el fin de obtener el voltaje inverso de pico (PIV), al cual se someten los diodos D1-D4 del puente rectificador, vamos a usar el circuito equivalente de la figura 1.20 durante el semiciclo positivo del voltaje secundario VS del transformador. En la figura 1.20 se puede observar que los diodos D2 y D3 se encuentran polarizados directamente y que son reemplazados por la segunda aproximación del circuito equivalente del diodo. También se puede ver que, en esta polaridad del voltaje de secundario del transformador, los diodos D1 y D4 se polarizan inversamente y son sustituidos por dos interruptores en estado abierto. NP : NS 4:1
+
K
D1
+ D2 VB = 0.7 V –
A
120 VCA 60 Hz
VS (CA) = 42.42 V
–
+ D3 VB = 0.7 V
K
–
D4
+ RL = 100
A
T1
–
=`^liX(%)' :`iZl`kf\hl`mXc\ek\[\legl\ek\i\Zk`]`ZX[fi[liXek\\cj\d`Z`Zcfgfj`k`mf[\cmfckXa\j\Zle[Xi`fMJ[\ckiXej]fidX[fi% Por tanto, para calcular el PIV de cada diodo del puente rectificador, usamos la ley de Kirchhoff para los voltajes. Para D1, iniciamos en el ánodo y continuamos la malla en sentido horario, hasta su cátodo. Esto es: VA-C(D1) VB VS(P) 0.7 V 42.42 V 41.72 V De igual forma, para D4 iniciamos en el ánodo y continuamos la malla en sentido horario, hasta su cátodo. Esto es: VA-C (D4) VS(P) VB 42.42 V 0.7 V 41.72 V Entonces, podemos observar que el PIV para cada diodo del puente rectificador es el voltaje del secundario VS máximo menos 0.7 V. Si se requiere tener un voltaje de salida negativo en el circuito de la figura 1.18, entonces es necesario invertir los diodos D1-D4.
RECTIFICACIÓN
FILTRADA
El proceso para convertir de CA a CD no es suficientemente bueno con solo rectificar la forma de onda de CA con diodos. La forma de onda rectificada tiene un componente de CD, ya que no cambia de polaridad. En realidad, esta
40
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
señal muestra muchas variaciones periódicas de voltaje, conocidas como voltaje de rizo, Vr , en lugar de tener un voltaje constante. Estas variaciones tienen que ser suavizadas a fin de obtener una señal de CD genuina, o como la mayoría de las aplicaciones requiere. Una forma de suavizar o filtrar estas variaciones de voltaje es conectar un capacitor a la salida del rectificador, como se muestra en la figura 1.21.
CA
C
Rectificador
Carga
=`^liX(%)( :XgXZ`kfiZfe\ZkX[fXcXjXc`[X[\leZ`iZl`kfi\Zk`]`ZX[fiZfe]`e\j[\]`ckiX[f% Cuando los diodos del circuito rectificador conducen, se carga el capacitor, C; en este sentido, el capacitor funciona como un dispositivo de almacenamiento de energía. La energía almacenada en el capacitor está dada por U ½CV 2, para C en farads, para V en volts y para U en joules. Como los diodos no permiten flujo de corriente de regreso al circuito rectificador, la descarga de C es hacia la carga. Con el fin de obtener un voltaje de rizo pequeño y de que la constante de tiempo de la descarga sea mayor que el de recarga, el valor del capacitor se escoge de tal forma que la resistencia de carga, RL, multiplicada por el valor de C, sea mucho mayor que el recíproco de la frecuencia del voltaje de rizo;16 esto es: RLC >> 1/f
(1.19)
Los capacitores usados para este propósito son del tipo electrolítico, con valores arriba de los 100 μF. Con el fin de aclarar el comportamiento de C, vamos a analizar el circuito rectificador de media onda de la figura 1.22 a). Cuando el voltaje del secundario de T1 es positivo, el diodo D1 conduce y el capacitor C se carga. Antes del tiempo t0, como se muestra en la figura 1.22 b), el voltaje en la carga es igual al voltaje positivo del secundario. En el tiempo t0, el voltaje en C alcanza su valor máximo de pico, VP . Cuando el voltaje en el secundario de T1 cae abajo del valor máximo, D1 se polariza inversamente y el capacitor empieza a descargarse a través de la carga RL. El intervalo de descarga comprende desde t0 hasta t1. En el tiempo t1, el diodo se polariza directamente otra vez debido al semiciclo positivo del transformador T1, lo cual permite que el capacitor se recargue a su valor pico en el tiempo t2. De aquí, EG1EJ +1( MJ8C
;(
()'M:8 -'?q
Mj4(,M:8
:4('''μ=
IC4(''Ω
M=4)'%,(M
'M K`\dgf#k
kj k]
kf (-%-.d K
K( Y
X
=`^liX(%)) I\Zk`]`ZX[fi[\d\[`Xfe[XZfeleZXgXZ`kfiZfdf]`ckif%X :`iZl`kf%Y =fidX[\fe[X[\cmfckXa\[\jXc`[X% 16
La frecuencia del voltaje de rizo está relacionada con la frecuencia de la forma de onda de salida del circuito rectificador, la cual es de 60 Hz para el rectificador de media onda y de 120 Hz para el rectificador de onda completa.
grupo editorial patria®
41
1 Dispositivo semiconductor básico: el diodo
observamos que el capacitor se carga por un tiempo corto, de t1 a t2, y que el capacitor se descarga aproximadamente por 16.67 ms, en este circuito rectificador de media onda. Estos 16.67 m corresponden al periodo de un ciclo de la frecuencia de entrada de 60 Hz. A la componente de CA de la forma de onda de la figura 1.22 b) se le denomina voltaje de rizo, Vr. Resulta relativamente fácil calcular el valor aproximado del voltaje de rizo, principalmente si este valor es pequeño comparado con el nivel de CD, como se muestra en la forma de onda de la figura 1.23 b), el cual corresponde a un rectificador de onda completa tipo puente mostrado en la figura 1.23 a).
Voltaje de rizo pico a pico 120 VCA 60 Hz
VSAL del filtro, con carga VSAL sin capacitor t
a)
b)
=`^liX(%)* MfckXa\[\i`qfgXiXlei\Zk`]`ZX[fi[\fe[XZfdgc\kX%X :`iZl`kf%Y =fidX[\fe[X% Como vimos en el análisis del rectificador de media onda, la carga causa que el capacitor se descargue entre ciclos, o semiciclos para una rectificación de onda completa. Si se asume que la corriente permanece constante, la variación del voltaje de rizo se calcula usando la ecuación 1.20. ΔVr I Δt/C
(1.20)
Esta ecuación se deriva de I C dV/dt, que vimos en el capítulo 0. Si usamos 1/f para el rectificador de media onda o 1/2f para el rectificador de onda completa, podemos calcular el voltaje de rizo de la siguiente manera: ΔVr ICARGA/f C ΔVr ICARGA/2f C
(media onda)
(1.21)
(onda completa)
(1.22)
Las ecuaciones 1.21 y 1.22 nos proporcionan una muy buena aproximación del valor esperado del voltaje de rizo. Sin embargo, si se desea obtener el valor exacto, se requiere utilizar la ecuación que considere la descarga de manera exponencial.17 No obstante, calcular el valor exacto del voltaje de rizo puede ser engañoso por dos razones: 1. La descarga es exponencial siempre y cuando la carga sea resistiva, y muchas cargas no lo son; en realidad, la carga más utilizada es el regulador de voltaje, el cual se comporta más como una carga de corriente constante. 2. Las fuentes de alimentación normalmente se construyen con capacitores electrolíticos polarizados, es decir, que no se les permite cargarse con polaridad opuesta a la indicada. Estos capacitores, por lo general, tienen una tolerancia de 20% o mayor. Por tanto, en su peor caso se diseña considerando la variación del capacitor. En este caso, considerar la descarga del capacitor como una rampa es bastante exacto, en especial si el voltaje de rizo es muy pequeño y si además tomamos en cuenta el diseño con variaciones de 20% del capacitor, el voltaje de rizo se podría sobreestimar. Existe una variación del rectificador de onda completa el cual utiliza un transformador con una derivación central, dos devanados, como se muestra en la figura 1.24.
17
El cálculo del voltaje de rizo exacto considera un valor exponencial de la descarga, el cual está dado por la fórmula Vr VSAL(P)(1 – e t / RLC ). Donde t es el tiempo de descarga de C y RLC es la constante de tiempo del filtro.
42
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
+V
Tierra
Entrada CA
–V
=`^liX(%)+ I\Zk`]`ZX[fi[\fe[XZfdgc\kXZfe[\i`mXZ`eZ\ekiXc% El circuito de la figura 1.24 provee dos voltaje de CD, uno positivo y otro negativo, que muchos componentes electrónicos, como los amplificadores operacionales, pueden necesitar. Pero nos estamos desviando, estos amplificadores los estudiamos en el siguiente capítulo. Este circuito es muy eficiente porque ambos semiciclos de la forma de onda de entrada del rectificador son usados en cada sección de devanado.
Reguladores Como vimos en la sección anterior, si seleccionamos el capacitor conectado al circuito rectificador con un valor muy grande, se puede reducir el voltaje de rizo a niveles muy bajos; sin embargo, esta solución, que coloquialmente es llamada “fuerza bruta” por los ingenieros, tiene algunas desventajas: 1. El capacitor requerido puede ser prohibitivamente muy grande y muy caro. 2. Aun cuando el voltaje de rizo se reduzca a niveles muy pequeños, todavía se tendrán variaciones en el voltaje de salida, debido a variaciones en el voltaje de línea, cambios en la corriente de carga, etcétera. Una mejor alternativa para el diseño de una fuente de alimentación es usar capacitores lo suficientemente grandes como para reducir el voltaje de rizo a niveles bajos, aproximadamente 10% del voltaje de CD; después, usar un circuito activo con retroalimentación, que elimine el voltaje de rizo que pudiera permanecer. Dicho circuito está hecho de componentes activos (transistores) que mantienen el voltaje de salida constante. A este dispositivo electrónico se le llama regulador de voltaje y constituye una parte integral en el diseño de fuentes de alimentación para proveer el voltaje de CD a muchos equipos electrónicos. La figura 1.25 muestra un regulador de voltaje conectado a un circuito rectificador de onda completa tipo puente.
Regulador Entrada
Salida Tierra
=`^liX(%), =l\ek\[\Xc`d\ekXZ`e[\:;i\^lcX[X%
grupo editorial patria®
43
1 Dispositivo semiconductor básico: el diodo
Los reguladores reductores permiten disminuir un voltaje de CD, usualmente no regulado, a otro de menor magnitud, regulado. Hay dos diseños básicos para los reguladores: regulador lineal y regulador conmutado.18 Los reguladores más simples, y en los cuales nos centraremos, son los reguladores lineales. En la actualidad, este tipo de reguladores de voltaje se encuentra disponible como circuitos integrados de muy bajo costo y con diferentes voltajes de salida y corriente, es decir potencia; además, poseen protección contra corto circuito, protección térmica de sobrecarga, etcétera. Un regulador muy popular en el diseño de circuitos electrónicos es el LM7085, que proporciona 5 V CD y una corriente de hasta 1000 mA, ideal para muchas aplicaciones basadas en microprocesadores o microcontroladores. Pero, nos estamos adelantando, estas aplicaciones las veremos posteriormente.
DIODOS
DE PROPÓSITO ESPECÍFICO
Adicionalmente a la rectificación, los diodos tienen otras aplicaciones muy útiles. Por ejemplo, ciertos diodos pueden utilizarse como reguladores de voltaje o para emitir luz de diferentes colores. En esta sección estudiamos dos diodos de propósito específico: los diodos emisores de luz (LED) y los diodos Zener.
Diodos emisores de luz Los compuestos ternarios de galio, arsénico y fósforo se usan en el proceso de dopaje o doping durante la fabricación de diodos que emiten luz de diferentes colores, a los cuales se les llama diodos emisores de luz (LED, por sus siglas en inglés). Algunos de los colores de LED más comunes son el rojo, el verde, el amarillo, el naranja y hasta el invisible (infrarrojo). Los LED han alcanzado mucha popularidad debido a sus características semiconductoras, por lo que son ampliamente usados en muchas aplicaciones, donde operan en lugar de las lámparas incandescentes. El material usado en la construcción de su envolvente es semitransparente, de tal modo que la luz que emiten puede escapar y hacerse visible. Recordemos el proceso de polarización directa de los diodos, en el cual los electrones del material tipo n cruzan hacia el material tipo p y llenan sus huecos; es importante remarcar aquí que cuando los electrones libres se combinan llenando los huecos, liberan energía, la cual se emite principalmente en forma de calor o luz. En el caso de los diodos de silicio, la recombinación produce calor mientras que en los LED produce luz. Para el diodo de silicio, la luz no puede escapar porque el material no es transparente. Sin embargo, como el material del LED es semitransparente, la luz sí puede emitirse al ambiente circundante. El color de la luz emitida por el LED depende del tipo de compuesto usado en su construcción. El circuito esquemático que representa al LED es un diodo con flechas apuntando hacia afuera de la unión, indicando la luz emitida cuando se polariza directamente, como se muestra en la figura 1.26.
=`^liX(%)- JdYfcf\jhl\d}k`Zf[\leC<;% La barrera de potencial, VB, para un LED es considerablemente mayor que en un diodo de silicio; los valores típicos van de 1.5 V a 2.5 V, aproximadamente. La cantidad exacta de la caída de voltaje en polarización directa varía dependiendo del color del LED y de la corriente que pasa a través de él. Sin embrago, en la mayoría de los casos se asume una caída de potencial de 2 V para todos los colores y valores de corriente. No obstante, hay que poner atención a las hojas de datos del fabricante, ya que en la actualidad existen LED de baja potencia, de alta intensidad, etcétera. Por ejemplo, en la figura 1.27 a) se muestra un circuito típico con LED, donde se requiere calcular la corriente del LED en polarización directa. 18
El funcionamiento de los reguladores lineales es similar a una resistencia variable que mantiene el voltaje de carga constante gracias a la retroalimentación proveniente de la carga misma. Por otro lado, en un regulador conmutado se emplean principalmente elementos de conmutación e inductores para lograr obtener el voltaje de carga deseado.
44
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
VENT = +24 V
Rs = 2.2 k
Rs = 2.2 k
+
+
–
–
VENT = 24 V
+
LED VLED 2.0 V
LED
–
a)
b)
=`^liX(%). :`iZl`kfZfeleC<;gfcXi`qX[f[`i\ZkXd\ek\%X :`iZl`kf[\C<;%Y :`iZl`kf[\C<;dfjkiXe[fcXZX[X[\gfk\eZ`Xc \egfcXi`qXZ`e[`i\ZkX%
Para este circuito, primero se asume una caída de potencial en polarización directa de 2 V, como se muestra en la figura 1.27 b), a menos que los datos del fabricante indiquen otro valor. Posteriormente, se lleva a cabo la ley de Kirchhoff para los voltajes VENT ILEDRS VF(LED). De esta ecuación obtenemos que: ILED (VENT VF(LED))/RS (24 V 2 V)/2.2 kΩ 10 mA Una diligencia común es determinar la resistencia limitadora de corriente, RS, para un circuito con LED, que proporcione una corriente de 20 mA. Para el circuito de la figura 1.27 b), tendríamos que: RS (VENT VF(LED))/ILED (24 V 2V)/ 20 mA 1 100 Ω Un valor frecuente sería 1 kΩ, con lo cual tendríamos una corriente de 22 mA. Los LED presentan un voltaje de ruptura, VBR, muy bajo, con valores típicos que van desde los 3 V hasta los 15 V. Debido a estos valores tan bajos de VBR, accidentalmente se pueden aplicar voltajes inversos que pueden dañar los LED o degradar su desempeño. Una forma de proteger a los diodos de polarizaciones de voltaje inversas, aunque también aplica para otros circuitos, es usar un diodo de silicio en paralelo con el LED, como se muestra en la figura 1.28. VENT = –24 V
– Rs = 2.2 k
+
+
– D1
Si
+
0.7 V
LED
–
=`^liX(%)/ ;`f[f[\j`c`Z`f\egXiXc\cfZfeleC<;ljX[fZfdfgifk\ZZ`e[\gfcXi`qXZ`fe\jXZZ`[\ekXc\j`em\ijXj%
grupo editorial patria®
45
1 Dispositivo semiconductor básico: el diodo
En caso de que ocurra una polarización inversa accidental para el LED, como conexión inversa o fallas causadas en la fuente de alimentación, el diodo de silicio se polarizará directamente, proporcionando una trayectoria adicional de flujo de corriente hacia el diodo D1, protegiendo al LED, como se muestra en la figura 1.28.
Diodo Zener El diodo Zener es un tipo de diodo que ha sido optimizado para operar en la región de ruptura.19 Estos diodos no son como los diodos rectificadores, los cuales se diseñan para operar lejos de esta región. Uno de los usos más importantes de los diodos Zener es como referencia de voltaje o reguladores de voltaje en aplicaciones de baja corriente. El diodo Zener se conecta en paralelo con la carga de la fuente de alimentación, donde el voltaje Zener permanece constante a pesar de las variaciones de corriente en la carga. La figura 1.29a muestra el símbolo esquemático para el diodo Zener. La figura 1.29 b) muestra la curva característica típica de un diodo Zener de silicio. En la región de polarización directa, el diodo Zener actúa como un diodo rectificador común y corriente, con una caída de potencial, VF, de 0.7 V, cuando está conduciendo. Por otro lado, en la región de polarización inversa, una pequeña corriente de fuga fluye hasta que se alcanza el voltaje de ruptura, VBR. En este punto, la corriente inversa se incrementa abruptamente; a dicha corriente se le conoce como corriente Zener y se le denomina IZ. En la figura también podemos observar que al voltaje de ruptura se le designa, en este dispositivo, como voltaje Zener, VZ. Este voltaje permanece constante aun cuando la corriente IZ se incrementa. Debido a esta característica, el diodo Zener puede ser usado en circuitos de regulación de voltaje, ya que el voltaje VZ continúa constante aun cuando la corriente IZ varía en un rango amplio.20 IF
Región de polarización
VF
–VZ
IZT Región de polarización inversa
IZM a)
b)
=`^liX(%)0 ;`f[fQ\e\i%X JdYfcf\jhl\d}k`Zf%Y :limXZXiXZk\ijk`ZX#mfckj$Xdg\i\j#gXiXle[`f[fQ\e\i[\j`c`Z`f% Los diodos Zener son normalmente especificados por los fabricantes por su voltaje Zener, VZ, de acuerdo con una corriente de prueba IZT. Por ejemplo, el diodo Zener 1N4742A tiene un voltaje, VZ, de 12 V, para una corriente de prueba, IZT, de 21 mA. El sufijo A indica una tolerancia en el voltaje Zener de 5%. 19
20
El diodo Zener lleva su nombre en honor del f ísico norteamericano Clarence Melvin Zener (1905-1993), quien describió sus propiedades eléctricas. En realidad, el voltaje VZ no es perfecto, ya que no permanecerá exactamente constante cuando la corriente IZ cambie. Existen ciertas variaciones causadas por una pequeña impedancia Zener, RZ, que todos los diodos Zener presentan. Esta RZ actúa como una resistencia en serie con el diodo Zener. El efecto de RZ es que aparecerán pequeños cambios en VZ cuando IZ varíe.
46
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
Otro parámetro importante de los diodos Zener es la potencia que disipa, PZ, la cual es determinada por la ecuación PZ IZ VZ. Por ejemplo, si un diodo Zener de 5.6 V tiene una corriente de 40 mA, su disipación de potencia será PZ IZ VZ 40 mA r 5.6 V 224 mW. Se debe tener cuidado que la disipación de potencia en un diodo Zener sea menor que la máxima disipación de potencia, PZM, especificada por el fabricante, y la cual se obtiene por la ecuación PZM IZM VZ, donde IZM es la máxima corriente Zener del diodo, como se muestra en la figura 1.29 b). Por tanto, la IZM que un diodo Zener puede manejar de manera segura está dada por la ecuación 1.23. IZM PZM/VZ
(1.23)
Si se excede el valor de IZM, es muy probable que en el diodo haga su aparición el llamado “humo mágico” y el diodo se dañe de forma permanente. Por ejemplo, si se tiene un diodo Zener de 12 V y 1 W, y se requiere saber la máxima corriente con la que se puede trabajar el diodo de manera segura, hacemos uso de la ecuación 1.23. IZM PZM/VZ 1 W/12V 83.3 mA Entonces, la máxima corriente Zener para este diodo no debe exceder los 83.3 mA. Como se comentó anteriormente, los diodos Zener se usan con frecuencia como referencias de voltaje o reguladores de voltaje en circuitos que demandan poca corriente. Para estas aplicaciones, el diodo Zener se conecta en paralelo con una fuente de voltaje variable, de tal forma que este se polarice inversamente como se muestra en la figura 1.30. Rs
+ + VENT
–
VZ
VSAL
PZM
–
=`^liX(%*' GfcXi`qXZ`e`em\ijX[\le[`f[fQ\e\igXiXi\^lcXileX]l\ek\[\\ekiX[XZfemfckXa\mXi`XYc\% El diodo conducirá cuando el voltaje de la fuente, VENT , alcance el voltaje Zener, VZ, manteniendo el voltaje VZ especificado; esto es, el voltaje VENT variable será regulado a un voltaje de salida relativamente constante, VSAL , aun cuando existan fluctuaciones en el voltaje de entrada. Sin embargo, debido a la baja impedancia de los diodos Zener, se usa una resistencia RS para limitar la corriente en el circuito. Por tanto, la corriente IZ, que fluye en el diodo Zener, se puede calcular usando la ecuación 1.24. IZ (VENT VZ)/RS
(1.24)
Por ejemplo, la figura 1.31 muestra un diodo Zener de 6.2 V, usado como un regulador de voltaje sin carga. En consecuencia, para obtener la corriente IZ utilizamos la ecuación 1.24. IZ (VENT VZ)/RS (25 V 6.2 V)/1 kΩ 18.8 mA No obstante, los circuitos reguladores sin carga, como el que se ilustra en la figura 1.31, son de poca utilidad, ya que por lo general a estos circuitos se les conecta una carga RL, como se muestra en la figura 1.32.
grupo editorial patria®
47
1 Dispositivo semiconductor básico: el diodo
Rs = 1 k
+ + VENT = 25 V
+
–
–
VZ = 6.2 V
VSAL
PZM = 1 W
–
=`^liX(%*( I\^lcX[fi[\mfckXa\Q\e\ij`eZXi^X%
Rs = 100 VSAL = VZ = 7.5 V
+ VENT = 15 V
+
VZ = 7.5 V
–
PZM = 1 W
RL = 150
–
=`^liX(%*) I\^lcX[fi[\mfckXa\Q\e\iZfeZXi^X%
Debido a que la carga RL se conecta en paralelo con el voltaje VZ, el voltaje en la carga, VL, es igual al voltaje en el Zener; esto es, VL VZ. La caída de voltaje en RS está dada por VENT VZ. Por tanto, la corriente en la resistencia se puede calcular como: IS (VENT VZ)/RS (15 V 7.5 V)/100 Ω 75 mA La corriente en la carga IL se calcula usando la ley de Ohm: IL VZ/RL 7.5 V/150 Ω 50 mA Usando la ley de Kirchhoff para las corrientes, podemos obtener la corriente IS por la ecuación 1.25. IS IZ IL
(1.25)
Por tanto, IZ puede calcularse despejando de la ecuación 1.25. IZ IS IL 75 mA 50 mA 25 mA Con estos valores podemos calcular la potencia disipada del circuito: PZ IZVZ 25mA r 7.5 V 187.5 mW Cuando el voltaje de entrada, VENT, es constante y la corriente IL disminuye debido a un aumento en RL, entonces la corriente IZ se incrementará en la misma proporción.
48
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
DATOS IMPORTANTES DEL CAPÍTULO ± Los semiconductores tienen cuatro electrones de valencia; es decir, son tetravalentes. El silicio (Si) y el germanio (Ge) son ejemplos de este tipo de materiales. ± Un material semiconductor puro, con un solo tipo de átomos, recibe el nombre de semiconductor intrínseco; este no es ni buen conductor ni buen aislante. ± Un semiconductor extrínseco es aquel semiconductor al cual se le añaden otros átomos no tetravalentes mediante un proceso denominado dopaje o doping. El dopaje incrementa la conductividad del material semiconductor. ± Los semiconductores tipo n tienen muchos electrones libres como resultado de añadir átomos pentavalentes durante el proceso de dopaje. Los semiconductores tipo p tienen muchos huecos o vacíos en sus enlaces covalentes como resultado de añadir átomos trivalentes durante el proceso de dopaje. Un hueco es considerado como una carga positiva. ± Un diodo semiconductor está formado por la unión de un semiconductor tipo p y uno n. El diodo es un dispositivo semiconductor que permite el flujo de corriente en una sola dirección. ± Un diodo se polariza directamente haciendo su ánodo positivo con respecto al cátodo. Un diodo se polariza inversamente haciendo el ánodo negativo con respecto al cátodo. ± Un diodo polarizado directamente muestra una resistencia muy baja, mientras que un diodo polarizado inversamente muestra una resistencia muy alta. La relación de resistencia inversa, RR, a resistencia directa, RF , es al menos 1000:1.
PROBLEMAS
DEL CAPÍTULO
± Existen tres aproximaciones de circuitos equivalentes del diodo. La primera considera al diodo polarizado directamente como un interruptor cerrado. La segunda aproximación considera la barrera de potencial, VB , que para el diodo de silicio es 0.7 V. Ambas aproximaciones consideran al diodo polarizado inversamente como un interruptor abierto con cero corriente fluyendo a través de él. ± Los circuitos rectificadores de media onda u onda completa convierten un voltaje de CA en un voltaje con una componente de CD. ± Para un rectificador de media onda sin filtro, el voltaje de salida de CD es 0.318 r VSAL(P), y para un rectificador de onda completa sin filtro es 0.636 r VSAL(P). ± Cuando se conecta un capacitor a la salida de un rectificador, el voltaje de CD de salida es aproximadamente el voltaje pico, VP , del rectificador. ± La frecuencia del voltaje de rizo a la salida de un rectificador de media onda es la frecuencia de la señal de entrada. Para un rectificador de onda completa es el doble de la frecuencia de la señal de entrada. ± Los LED son diodos fabricados con compuestos ternarios de arsénico, galio y fósforo. Al polarizar el diodo directamente, estos elementos emiten luz de color rojo, amarillo, verde o naranja. ± La caída de voltaje de un LED polarizado directamente es de 1.5 V a 2.5 V. El voltaje de ruptura es típicamente de 3 V a 15 V. ± El diodo Zener es un diodo especialmente diseñado para operar en la región de ruptura. La aplicación más común del diodo Zener es como regulador de voltaje en circuitos que requieren poca corriente.
1
9.2 V y el cátodo con 10.5 V, ¿cómo es la polarización, directa o inversa?
sus siglas en inglés) e IO es la corriente promedio máxima en polarización directa. Defina qué diodo utilizaría y por qué.
1.2 En una aplicación donde se requiere rectificar una
1.3 La hoja de datos del diodo de silicio IN4002 especifi-
onda sinusoidal de 80 VPP a 0.6 A, se tienen tres opciones de diodos: a) el 1N4001 (PIV 50 V, IO 1 A), b) el 1N4002 (PIV 100 V, IO 1 A) y c) el 1N4003 (PIV 200V, IO 1 A), donde el costo del diodo se incrementa con su voltaje inverso de pico (PIV, por
ca un voltaje inverso VR de 100 V y una corriente inversa IR de 0.05 μA, a una temperatura de la unión p-n de 25 °C. Con estos datos, calcule la resistencia inversa RR del diodo.
1.1 Si en un diodo de silicio se polariza el ánodo con
® tria® g r u p og reud pi too er di ai tl oprai ta r lip aa
49
1 Dispositivo semiconductor básico: el diodo
1.4 Considerando la barrera de potencial en la aproxi-
1.7 En el circuito de la figura 1.36, calcule el voltaje de
mación de un diodo de silicio, resuelva el siguiente circuito.
rizo usando las ecuaciones que aproximan el cálculo de este voltaje. NP : NS 8:1
I
D1
RL = 470
120 VCA 60 Hz
I
+
–
C = 1 000 F
Vs = 15 VCA
RL = 100
VENT = 18 V
T1
=`^liX(%**
a)
1.5 Del circuito de la figura 1.34, donde la relación de vueltas NP:NS es 5:1, calcule el voltaje en el secundario del transformador VS (voltaje eficaz y voltaje de pico), IL, IDIODO, fSAL y el PIV para el diodo.
VP = 20.51 V
0V to
NP : NS 5:1
VSAL D1
120 VCA 60 Hz
VSAL
16.67 m T
RL = 300
VCA
Tiempo, t
ts tf
b)
=`^liX(%*T1
1.8 En el circuito rectificador de la figura 1.37 se tiene
=`^liX(%*+ 1.6 En el circuito de la figura 1.35 se tiene una relación de vueltas 3:1. Calcule el VCD , IL , IDIODO , PIV para cada diodo y fSAL.
una relación de vueltas del transformador de 8:1, un capacitor de 100 μF y se conecta una carga de 100 Ω. Calcule el voltaje de rizo usando las ecuaciones que aproximan el cálculo de este voltaje.
NP : NS 3:1
– D1 120 VCA 60 Hz
D2 VSAL
Vs = 30 VCA D3
D4
+
+
120 VCA 60 Hz RL = 100
T1
–
=`^liX(%*,
50
=`^liX(%*.
ELECTRÓNICA • MIJAREZ
1 Dispositivo semiconductor básico: el diodo
1.9
En el circuito de la figura 1.38, calcule la corriente del LED.
1.13
En el circuito de la figura 1.41, calcule IS, IL, IZ y PZ. Rs = 100
+
Rs = 1.5 k
VSal = VZ = 7.5 V
+
VEnt = 15 V
+
+
–
–
15 V
VZ = 7.5 V PZM = 1 W
–
LED
RL = 250
–
=`^liX(%+( a)
1.14
=`^liX(%*/
En el circuito de la figura 1.42, calcule IS, IL e IZ, para valores de RL 270 Ω y RL 510 Ω. Rs = 100
1.10
En el circuito de la figura 1.39, calcule la resistencia limitadora para tener una corriente de LED de 20 mA.
+
VSAL
VENT = 9 V
+ –
V = +9 V
+ VZ = 5.1 V PZM = 500 mW
RL
–
–
Rs
=`^liX(%+)
+ LED
VLED 2.0 V
–
1.15
En el circuito del problema anterior (1.14), calcule el valor de IZ si RL se abre.
1.16
Defina cuántos electrones de valencia tiene un átomo de silicio o de germanio.
1.17
Defina la diferencia entre un semiconductor intrínseco y uno extrínseco.
1.18
En un material semiconductor describa cómo se crea un par electrón-hueco.
1.19
¿Cuál es valor de la barrera de potencial para un diodo de silicio y para uno de germanio?
1.20
En un diodo polarizado inversamente defina cuál es la causa principal de la corriente de fuga.
1.21
Si se polariza directamente un diodo de silicio con un voltaje de 0.5 V, defina cuál es la corriente que fluye a través del diodo.
1.22
El diodo es un dispositivo lineal o no lineal. Explique su respuesta.
1.23
Explique cómo puede probarse el estado de un diodo con un multímetro.
1.24
¿Qué aproximación de circuito equivalente para un diodo se usaría si se requiere conocer de manera general los voltajes y las corrientes de un circuito?
b)
=`^liX(%*0 1.11
Se cuenta con un diodo Zener de 5.6 V y 0.5 W, calcule la máxima corriente Zener para este diodo.
1.12
Calcule la corriente IZ para el circuito regulador sin carga de la figura 1.40. Rs = 1 k
+ + VENT = 25 V
–
+ –
VZ = 9.1 V
VSAL
PZ = 1 W
–
=`^liX(%+'
grupo editorial patria®
51
2 El activo transistor
El transistor es el ingrediente principal de todo circuito electrónico, desde el amplificador u oscilador más simple hasta la computadora digital más sofisticada. En la actualidad, los circuitos integrados (CI) han reemplazado casi por completo la construcción de circuitos, mediante el uso de transistores discretos, los cuales son meros arreglos de transistores y otros componentes que se construyen en un mismo material semiconductor. Un buen entendimiento del funcionamiento del transistor es primordial, aun cuando la mayoría de los circuitos electrónicos que se construyen hoy en día emplean CI. Esta importancia reside en la necesidad de conocer las propiedades de entrada y salida de cada CI, con el propósito de realizar su interfaz o conexión a otros CI o al mundo exterior. Asimismo, porque hay situaciones en el diseño de equipo electrónico donde el CI que cumpla todos los requerimientos simplemente no existe, por lo que es necesario apoyarse en circuitos que involucren transistores discretos para realizar el trabajo. Por ende, en este capítulo se analizan las características de construcción y de operación de los transistores bipolares, BJT, de los arreglos de transistores Darlington y de los transistores tipo FET, principalmente operando como interruptores, más que como amplificadores. Para funciones de amplificación, en el capítulo 5 se estudian con detalle las características teóricas y prácticas de los CI denominados amplificadores operacionales (OP AMP). Aprender cómo usar los transistores puede ser apasionante y divertido; entonces, empecemos. En este capítulo estudiamos:
X Construcción del transistor bipolar BJT. X Polarización del transistor BJT.
53
2 El activo transistor
X X X X X X X X X
Regiones de operación de los transistores. Valores máximos de potencia. Verificación del transistor BJT con un óhmetro. Transistor BJT como interruptor. Transistor Darlington. Transistor FET. Tipos de transistores FET. Operación y características principales del JFET. Transistor FET como interruptor.
CONSTRUCCIÓN
DEL TRANSISTOR
El transistor es el ejemplo más importante de un componente “activo”; es un dispositivo que puede amplificar, produciendo una señal de salida con más potencia que su señal de entrada. La potencia adicional la obtiene de una fuente de potencia externa, ¡exacto!, de la fuente de alimentación. La propiedad de amplificación de potencia, voltaje o corriente, fue lo más importante para los inventores del transistor, ya que para saber que habían inventado algo, alimentaron con un transistor un altavoz o bocina, observando que la señal de salida sonaba más fuerte que la señal de entrada.1 Iniciamos esta sección estudiando la construcción básica del transistor bipolar de unión (BJT, por sus siglas en inglés), sus características generales y su polarización, principalmente para funcionar como interruptor. El transistor es un semiconductor construido con tres regiones dopadas y tres terminales, como se muestra en la figura 2.1. En la figura 2.1 a) se observa un transistor npn, mientras que la figura 2.1 b) ilustra un transistor pnp. En estas figuras podemos observar que, para ambos transistores, la base es la región más angosta, la cual se encuentra entre las regiones más anchas del emisor y el colector.
e
g
e
:fc\Zkfi
e
g
9Xj\
9Xj\
X
Y
e
:fc\Zkfi
=`^liX)%( :fejkilZZ`e[\ckiXej`jkfiZfejljki\ji\^`fe\j[fgX[Xj%X KiXej`jkfiege%Y KiXej`jkfigeg% La región del emisor es densamente dopada; su función es emitir o inyectar portadores de corriente a la región de la base. En tanto, la base es un área muy delgada y ligeramente dopada. La mayoría de los portadores inyectados en la base desde el emisor no se va hacia la terminal de la base, sino que pasan hasta la región del colector. El área del colector es la más grande de las tres regiones, y su dopaje es moderado. El colector, como su nombre lo indica, colecta o atrae a los portadores de corriente que son inyectados a la base. La razón por la que la región del colector es la más 1
El 23 de diciembre de 1947, Walter H. Brattain y John Bardeen demostraron, en los laboratorios Bell, la operación de amplificación del primer transistor, el cual fue llamado transistor de punta de contacto, considerado el predecesor del transistor de unión inventado por William B. Shockley. Los tres f ísicos estadounidenses obtuvieron patentes independientes por cada transistor y fueron galardonados con el Premio Nobel de Física en 1956. Shockley dejó los laboratorios Bell y se fue a California, su tierra natal, para crear su propia empresa, donde contrató jóvenes brillantes de las universidades aledañas. Por su parte, algunos de estos investigadores abandonaron su empresa y formaron Fairchild Semiconductors e Intel. Hoy sabemos el gran impacto en nuestras sociedades que sigue teniendo el descubrimiento del transistor, para algunos el invento más influyente del siglo xx.
54
ELECTRÓNICA • MIJAREZ
2 El activo transistor
grande es porque tiene que disipar más calor que la base y el emisor. La figura 2.2 muestra la construcción de uno de los primeros transistores npn de germanio, diseñado en Japón.2
=`^liX)%) :fejkilZZ`e[\lef[\cfjgi`d\ifjkiXej`jkfi\jege[\^\idXe`f% En el transistor npn, los portadores de corriente mayoritarios son electrones libres en el emisor y en el colector, mientras que los portadores de corriente mayoritarios en la base son los huecos. En el transistor pnp sucede lo opuesto; en el emisor y colector los portadores de corriente mayoritarios son los huecos, mientras que los portadores de corriente mayoritarios en la base son los electrones libres. La figura 2.3 muestra las capas o regiones de agotamiento en un transistor npn sin polarizar. La difusión de electrones de ambas regiones n hacia la base p genera una barrera de potencial, VB, para ambas uniones pn. La unión pn a la izquierda del transistor es llamada la unión emisor-base, EB, mientras que la unión de la derecha es llamada la unión base-colector, BC. Para el silicio, la barrera de potencial en ambas uniones es aproximadamente 0.7 V. e
g
e
:fc\Zkfi
:fc\ZkfiYXj\ :XgX[\X^fkXd`\ekf 9Xj\
=`^liX)%* I\^`fe\j[\X^fkXd`\ekf[\lekiXej`jkfiege% En la figura 2.3 se puede apreciar que los símbolos de menos (-) se usan en el emisor y colector tipo n, para indicar la concentración de los portadores de carga mayoritarios, electrones libres, en esas regiones. Mientras que para indicar los portadores mayoritarios, huecos, en la base tipo p se usan pequeños círculos. El símbolo esquemático para ambos tipos de transistores se muestra en la figura 2.4. Es importante notar que para el transistor npn de la figura 2.4 a), la flecha en el emisor apunta hacia afuera, mientras que para el transistor pnp, en la figura 2.4 b), la flecha en el emisor apunta hacia adentro. :fc\Zkfi:
9Xj\9
:fc\Zkfi:
9Xj\9
=`^liX)%+ JdYfcf\jhl\d}k`Zf[\ckiXej`jkfi9AK%X KiXej`jkfiege%Y KiXej`jkfigeg% 2
La industria electrónica en Japón dio un impulso muy grande a su economía, con industrias como Sony, de gran influencia en el plano internacional. Existe un video muy interesante y altamente recomendable llamado video-historia de la industria electrónica de Japón, que normalmente se consigue en la embajada de ese país y ha sido transmitido por televisión.
grupo editorial patria®
55
2 El activo transistor
Los transistores npn o pnp no difieren en términos de su capacidad para amplificar potencia, voltaje o corriente. Sin embargo, cada tipo requiere diferentes polaridades para su correcta operación. Por ejemplo, en un transistor npn, el voltaje colector-emisor, CE, debe ser positivo, mientras que en el transistor pnp, el voltaje CE debe ser negativo.
Polarización del transistor BJT Para que un transistor funcione adecuadamente como amplificador, la unión emisor-base, EB, debe polarizarse directamente, mientras que la unión colector-base, CB, debe polarizarse inversamente, como se ilustra en la figura 2.5.
e
g
:fc\Zkfi
e
9Xj\
Æ
M<<
"
Æ
M::
"
=`^liX)%, GfcXi`qXZ`e[\lekiXej`jkfiegegXiXcXZfe\o`e[\YXj\Zfde% Observe que en esta conexión la terminal de la base es común para ambas uniones. El voltaje de alimentación de la unión EB se designa como VEE , mientras que al voltaje de alimentación en la unión CB se le denomina VCC. La figura 2.6 muestra las corrientes del emisor IE, la corriente de la base IB y la corriente del colector IC. Los electrones del emisor tipo n son repelidos hacia la base por la terminal negativa de la fuente de alimentación VEE. Como la región de la base es muy angosta y ligeramente dopada, solo algunos electrones se combinan con los huecos. La corriente que fluye hacia la terminal de la base, la corriente IB, es muy pequeña, y a esta se le denomina corriente de recombinación, debido a que los electrones libres inyectados en la base deben llenar los huecos antes de que puedan fluir hacia la terminal de la base.
e
g
e
<
: @:
@<
Æ
@9
M<<
"
9
Æ
M::
"
=`^liX)%- :fii`\ek\j[\\d`jfi#@<#[\YXj\#@9#p[\Zfc\Zkfi#@:#[\lekiXej`jkfiegegfcXi`qX[fZfeZfe\o`e[\YXj\Zfde% En la figura 2.6 podemos observar que la mayoría de los electrones inyectados del emisor a la base pasan hacia la región del colector. Hay dos razones para que esto suceda así. Primero, solo algunos huecos se encuentran disponibles para recombinación en la base; segundo, el voltaje positivo CB atrae electrones libres de la región de la base tipo p hacia la región del colector antes de que se combinen con los huecos en la base tipo p. Para colectar la mayoría de los electrones libres inyectados del emisor a la base, es necesario crear un campo eléctrico lo suficientemente fuerte en la unión colector-base, el cual puede lograrse con un pequeño voltaje. Después de que el voltaje colector-base alcanza cierto nivel, incrementar este voltaje tendrá un efecto mínimo o ningún efecto en el número de electrones libres que entran al colector. De hecho, si el voltaje CB es muy grande, el voltaje de ruptura se podría exceder, lo cual dañaría al transistor.
56
ELECTRÓNICA • MIJAREZ
2 El activo transistor
Si observamos los sentidos de las corrientes en la figura 2.6, es fácil que podamos obtener la relación que existe entre estas mediante la ecuación 2.1. IE IB IC
(2.1)
En la mayoría de los transistores la IB es muy pequeña, por lo que IC tiene aproximadamente el valor de IE. Por ejemplo, si un transistor tiene una corriente IB 20 mA y una corriente IC 1.48 A, y se requiere calcular la corriente IE, podemos hacer uso de la ecuación 2.1. Así: IE IB IC 1.48 A 0.02 A 1.5 A Una de las características que define qué tan cercanos son los valores de IE con respecto a IC es la llamada alfa de CD, a la cual se le designa como α, y es expresada por la ecuación 2.2.
A
IC IE
(2.2)
En la mayoría de los casos, el alfa de CD es 0.99 o mayor. Entre más delgada y menos dopada sea la región de la base, el valor se acercará más a la unidad. En muchos análisis, su valor es tan cercano a la unidad, que se ignora la diferencia entre IC e IE. Por ejemplo, si se tiene un transistor con una corriente IE 25 mA y una IB 50 μA, y se desea obtener el alfa de CD; primero, de la ecuación 2.1 despejamos IC : IC IE IB 25 mA 0.050 mA 24.95 mA Después, usando la ecuación 2.2 calculamos α:
A
I C 24.95 mA 0.998 IE 25 mA
Otra forma de conexión para un transistor, en este caso un transistor npn, se muestra en la figura 2.7, al que se denomina emisor común, debido a que la terminal del emisor es común a ambos lados del circuito. En esta conexión, los voltajes externos utilizados para polarizar el transistor son VBB y VCC . El primero, VBB , provee una polarización directa a la unión base-emisor, BE, mientras que VCC proporciona una polarización inversa a la unión colector-base, CB. Las flechas indican el sentido de las corrientes IE , IC e IB .
@: e
" M:: Æ
g
" Æ
e
M99
@9
@<4@9"@: @:
=`^liX)%. KiXej`jkfigfcXi`qX[fgXiXleXZfe\o`e[\\d`jfiZfde% La ganancia de corriente de CD en un transistor conectado en configuración de emisor común se llama beta de CD, y se le designa por la letra griega β o por la constante hfe . La beta de CD es expresada por la ecuación 2.3.
B
IC IB
grupo editorial patria®
(2.3)
57
2 El activo transistor
Por ejemplo, si se tiene un transistor con una corriente IC 15 mA y una IB 40 μA, y se pide calcular la beta de CD. Entonces, usando la ecuación 2.3, tenemos
B
15 mA 375 40 μA
Otro ejemplo típico es que se nos proporcionen la beta de CD y la corriente IB , β 200 e IB 60 μA, y se requiera calcular la corriente IC . Para esto, despejamos IC de la ecuación 2.3: IC β r IB 200 r 60 μA 12 mA Ahora bien, los parámetros de CD α y β pueden relacionarse uno a otro, esto es, si β es conocido, α puede calcularse usando la ecuación 2.4:
A
B B 1
(2.4)
Del mismo modo, si se conoce α, se puede calcular β usando la ecuación 2.5:
B
A 1 A
(2.5)
Por ejemplo, si un transistor tiene una β 150 y se pide obtener α, hacemos uso de la ecuación 2.4:
A
B 150 0.993 B 1 150 1
Otro ejemplo es que tenga α 0.996 y se solicite encontrar β:
B
REGIONES
A 0.996 249 1 A 1 0.996
DE OPERACIÓN DE LOS TRANSISTORES
Existen diferentes regiones de operación del transistor, como son la región de saturación, la de corte, la activa y la de ruptura. Para describir estas regiones, usaremos el transistor npn conectado en emisor común de la figura 2.8 a). M:9
@:D8
: I9
9 M:<
M99
<
M9<
M::
@94.'μ8 @94-'μ8 @94,'μ8 @94+'μ8 @94*'μ8 @94)'μ8 @94('μ8 @94'
. , + * ) (
( ) * + , - . / 0 (' (( () (* (+ M:< mfckj X
Y
=`^liX)%/ KiXej`jkfiegeZfe\ZkX[f\e\d`jfiZfde%X :`iZl`kf%Y >i}]`ZX[\@:mj%M:<gXiX[`]\i\ek\jmXcfi\j[\Zfii`\ek\[\YXj\% En este circuito se puede observar que los voltajes de polarización, VBB y VCC , son variables y que el valor de la resistencia de base, RB , se usa para controlar la cantidad de corriente de base, IB. Con un valor fijo de RB, VBB puede ajustarse para producir la corriente de base deseada.
58
ELECTRÓNICA • MIJAREZ
2 El activo transistor
Al variar VBB se puede proveer de un rango amplio de valores de corriente de colector y de corriente de base. Si asumimos que el voltaje VBB ha sido ajustado para producir una corriente de base IB 50 μA y que β 100, entonces podemos calcular la corriente de colector mediante IC β × IB 100 × 50 μA 5 mA. En tanto se mantenga polarizada inversamente la unión colector-base, IC se mantendrá en 5 mA; esto ocurrirá independientemente del valor del voltaje colector-base, VCB. En la figura 2.8 a) también podemos observar que VCC puede variarse desde varios volts hasta unas cuantas decenas de volts, sin ningún efecto en la corriente de colector IC . Lo anterior es cierto siempre y cuando no se exceda el voltaje de ruptura de colector-emisor. Si VBB se incrementa para tener una corriente de base IB 70 μA, entonces IC β × IB 100 × 70 μA 7 mA. De igual manera, si VCC se varía desde unas cuantas decenas de volt hasta varios volts, no se tendrá ningún efecto en la corriente de colector IC ; y, por tanto, esta permanecerá constante, como se observa en la figura 2.8 b). De la figura 2.8 a) también podemos resaltar que el VCE VCB VBE. Cuando el VCB es arriba de cero volts, es decir unas decenas de volt, el diodo que hace la unión colector-base es polarizado inversamente y la corriente de colector IC β × IB. Esto es importante, ya que significa que la corriente de colector IC es controlada únicamente por la corriente de base IB.
Región de saturación La gráfica de VCE vs. IC de un transistor npn para varios valores de corriente IB se muestra en la figura 2.9. Ahí, podemos observar que cuando el VCE es cero, la corriente IC es cero, debido a que la unión colector-base no se polariza inversamente. Si no existe un voltaje positivo conectado a la terminal del colector, este no puede atraer electrones desde la base. Sin embargo, cuando el voltaje colector-emisor, VCE, se incrementa desde cero, la corriente IC también se incrementa de forma lineal. Al área vertical de las curvas, cerca del origen, se le llama región de saturación. Cuando el transistor se encuentra saturado, la corriente de colector, IC, ya no es controlada únicamente por la corriente de base IB.3 I\^`e[\ jXkliXZ`e @:D8 . , + * ) (
I\^`e XZk`mX @94.'μ8 @94-'μ8 @94,'μ8 @94+'μ8 @94*'μ8 @94)'μ8 @94('μ8 @94'
I\^`e [\Zfik\
( ) * + , - . / 0 (' (( () (* (+ M:< mfckj
=`^liX)%0 I\^`fe\j[\jXkliXZ`e#[\Zfik\pXZk`mX[\lekiXej`jkfiege%:XiXZk\ijk`ZXjZfc\Zkfi$\d`jfipZXiXZk\ijk`ZXjZfc\Zkfi$YXj\%
Región de corte Cuando la corriente IB 0, la curva característica se encuentra muy cerca del eje horizontal, como se muestra en la figura 2.9. Esta área se llama región de corte, ya que la corriente del colector, IC, es muy pequeña; para los transistores de silicio, IC por lo general es ignorada. Por tanto, se dice que un transistor está en corte cuando la corriente IC es cero. 3
Cuando un transistor se encuentra saturado, por más que se incremente la corriente de base, IB , la corriente de colector, IC, ya no se incrementará. Esto es análogo a la esponja que absorbe agua, llega un punto en el que por más agua que le agreguemos, no absorberá más, ya que se encuentra saturada.
grupo editorial patria®
59
2 El activo transistor
Región activa La región activa del transistor es aquella en que las curvas características del colector son prácticamente horizontales, como se muestra en la figura 2.9. Cuando el transistor opera en esta región, la corriente de colector, IC, es mayor que la corriente de base, IB, por un factor de ganancia beta; esto es, IC β r IB. En esta región, el circuito del colector actúa como una fuente de corriente.
Región de ruptura La región de ruptura ocurre cuando el voltaje colector-base, VCB, es demasiado grande; en este caso, la unión del diodo colector-base presenta una ruptura eléctrica, permitiendo que una corriente de colector, IC, muy grande y no deseada, fluya por el circuito. Esta área de operación debe evitarse en el diseño con transistores. Esta región no se muestra en la figura 2.9 porque se asume que la ruptura del transistor no ocurrirá cuando el diseño del transistor se realiza de forma adecuada; de lo contrario, podríamos ver aparecer el humo mágico indicando el daño.
VALORES
MÁXIMOS DE OPERACIÓN
Los transistores, como cualquier otro dispositivo, presentan ciertas limitaciones en su operación, las cuales se especifican en la hoja de datos del producto que proporciona el fabricante, donde también se incluyen los valores máximos de operación. Estos valores son el voltaje de colector-base, VCB , el voltaje colector-emisor, VCE , el voltaje emisor-base, VEB , la corriente de colector, IC, y la potencia de disipación, Pd.
Potencia de disipación Pd La potencia de disipación, Pd, de un transistor se obtiene multiplicando la corriente IC por el voltaje VCE, como se muestra en la ecuación 2.6: Pd IC r VCE
(2.6)
El valor de esta multiplicación no debe exceder el proporcionado como valor máximo por el fabricante Pd(máx). La ecuación 2.6 también puede usarse para obtener la máxima corriente IC, para un valor específico de voltaje VCE. Por ejemplo, para el transistor de la figura 2.8 a) se pide calcular el Pd, VCC 9 V, IB 40 μA y se asume una β 100. Entonces, primero calculamos la corriente de colector IC β r IB 100 r 60 μA 6 mV; posteriormente, de la figura 2.8 a), tenemos que VCC VCE 9 V. Por tanto, usando la ecuación 2.6 podemos calcular Pd: Pd IC × VCE 6 mV × 9 V 54 mW Por ende, el transistor seleccionado debe tener una potencia de disipación máxima mayor a los 54 mW, para evitar que se pueda dañar.4 Otro ejemplo sería obtener la máxima IC en el transistor cuando se tiene la potencia Pd y el voltaje VCE. Para este caso, Pd 0.5 W y el voltaje VCE 15 V. Despejando IC de la ecuación 2.6, obtenemos: IC Pd /VCE 0.5 W/15 V 33.3 mA
4
Los transistores de pequeña señal, por lo general, presentan una Pd de aproximadamente ½ W, mientras que los transistores de potencia tienen una Pd mayor a ½ W.
60
ELECTRÓNICA • MIJAREZ
2 El activo transistor
Factor de reducción de Pd La disipación de potencia, Pd, normalmente es proporcionada por el fabricante a una temperatura ambiente, TA, de 25 ºC.5 Conforme se aumenta la temperatura, la disipación de potencia, Pd, se hace menor. Para los transistores de silicio, la máxima temperatura de unión se encuentra entre los 125 a 200 ºC; temperaturas mayores a este rango destruirán el transistor. Esta es la razón por la cual los fabricantes de transistores deben especificar la máxima disipación de potencia, y los diseñadores deben mantener esta potencia a valores menores a lo especificado, de tal manera que la temperatura de la unión no alcance tales niveles de destrucción. Por lo general, los fabricantes proporcionan el factor de reducción de Pd para temperaturas arriba de los 25 ºC; este factor de reducción es especificado en W/ºC. Por ejemplo, si el transistor tiene un factor de reducción de 2 mW/ºC, significa que por cada 1 ºC que se eleve la temperatura de la unión, la capacidad de disipación de potencia del transistor se reducirá 2 mW. En otro ejemplo se tiene un transistor de ¼ W de Pd, esto es 250 mW, a temperatura ambiente, TA, de 25 ºC, y el factor de reducción es 2.4 mW/ºC, y se desean calcular las características de potencia a 60 ºC. Por tanto, primero, calculamos la variación de temperatura ΔT 60 ºC 25 ºC 35 ºC y después multiplicamos esta variación ΔT por el factor de reducción de Pd: ΔPd ΔT × factor de reducción 35 ºC r 2.4 mW/ºC 84 mW Finalmente, restamos este valor de potencia, ΔPd, del valor original, 250 mW, para obtener el nuevo Pd a 60 ºC: Pd 250 mW 84 mW 166 mW
Voltajes de ruptura Otros parámetros importantes que listan las hojas de datos del transistor son los voltajes de ruptura correspondientes a las uniones colector-base, emisor-base y colector-emisor. Por ejemplo, para el transistor de pequeña señal 2N3904 los voltajes de ruptura son: VCBO 60 V; VEB0 6 V y VCEO 40 V Los primeros dos subíndices de estos voltajes indican las terminales del transistor para las cuales aplica el voltaje, mientras que el tercer subíndice indica la condición de tercer terminal no involucrada. Por ejemplo, el voltaje VCEO indica que el máximo voltaje permitido entre las terminales de colector y emisor es 40 V, con la terminal de la base abierta. El exceder cualquiera de estos voltajes puede resultar en daño permanente del transistor.
VERIFICACIÓN
DEL TRANSISTOR CON UN ÓHMETRO
Debido a que los transistores están conformados por uniones p-n, emisor-base y colector-base, estos pueden verificarse usando un óhmetro. 6 La figura 2.10 muestra un transistor npn reemplazado por su circuito equivalente de diodos. <
:
<
: :`iZl`kf\hl`mXc\ek\[\ [`f[fj[\ckiXej`jkfiege
KiXej`jkfiege
9
9
=`^liX)%(' KiXej`jkfiegepjlZ`iZl`kf\hl`mXc\ek\[\[`f[fj% 5
6
Para los transistores de potencia, el factor de reducción de Pd se especifica considerando la temperatura del encapsulado, TC , en lugar de la temperatura ambiente, TA. La función de óhmetro puede obtenerse de multímetros analógicos, prácticamente en desuso, o de multímetros digitales, que también presentan la opción de prueba de diodos.
grupo editorial patria®
61
2 El activo transistor
En la fabricación de circuitos integrados, los transistores son los elementos más importantes, por lo que su geometría y el dopado de sus capas se eligen para optimizar sus características. Por lo general, no es económicamente viable realizar geometrías adicionales para construir diodos. En consecuencia, los transistores son adaptados para operar como diodos, como se ilustra en la figura 2.11.
=`^liX)%(( =fidXjZfdle\j\ecXjZlXc\jlekiXej`jkfigl\[\X[XgkXij\gXiXljXij\Zfdf[`f[f%
Pero nos estamos desviando, para verificar la unión base-emisor de un transistor npn, primero se conecta un óhmetro polarizando la unión de manera directa, como se muestra en la figura 2.12 a), esperando leer una resistencia baja; posteriormente, se invierten los cables del óhmetro polarizando la unión inversamente, como se muestra en la figura 2.12 b), y se espera leer una resistencia muy alta. Para una unión de silicio en buen estado, la relación entre la resistencia de polarización inversa y la resistencia de polarización directa, RR/RF , es del orden de 1000:1 o mayor. e
<
e
E\^if
Æ
"
∞ Ifaf
'
e
Ifaf
g Ω
e
<
:
g Ω
Æ
"
∞ E\^if
'
9
:
I\j`jk\eZ`XYXaX
I\j`jk\eZ`XXckX
X
Y
9
=`^liX)%() M\i`]`ZXZ`e[\cXle`eYXj\$\d`jfi[\lekiXej`jkfiege%X :fe\o`eZfele_d\kif\egfcXi`qXZ`e[`i\ZkX% Y :fe\o`eZfele_d\kif\egfcXi`qXZ`e`em\ijX%
Para verificar el estado de la unión colector-base se repite el mismo procedimiento anterior, que por claridad se muestra en la figura 2.13.
<
e
e
:
e
e
E\^if
g Ω
"
9
<
∞
Ifaf '
: Ifaf
g Ω
"
Æ 9
E\^if '
∞
I\j`jk\eZ`XYXaX
I\j`jk\eZ`XXckX
X
Y
Æ
=`^liX)%(* M\i`]`ZXZ`e[\cXle`eZfc\Zkfi$YXj\[\lekiXej`jkfiege%X :fe\o`eZfele_d\kif\egfcXi`qXZ`e[`i\ZkX% Y :fe\o`eZfele_d\kif\egfcXi`qXZ`e`em\ijX%
62
ELECTRÓNICA • MIJAREZ
2 El activo transistor
Otra medición que con frecuencia se realiza con un óhmetro, aunque no se muestra en las figuras 2.12 y 2.13, es la resistencia entre el colector-emisor, la cual debe ser muy alta o infinita para ambas conexiones del medidor. De las figuras 2.12 y 2.13, se puede deducir que obtener lecturas de baja resistencia en ambas conexiones indica que el transistor se encuentra en corto circuito. Si, por el contrario, el óhmetro indica una alta resistencia en ambas conexiones significa que el transistor se encuentra abierto. En ambos casos, el transistor se encuentra defectuoso y debe reemplazarse. Cuando se usan multímetros digitales, se debe seleccionar la opción de óhmetro. Existen incluso multímetros digitales capaces de indicar el beta de CD del transistor, ya sea npn o pnp, solo se tienen que insertar las terminales del transistor en un enchufe y, mediante un selector, escoger el tipo npn o pnp.
TRANSISTOR
COMO INTERRUPTOR
El transistor puede usarse como interruptor para conectar y desconectar una carga RL del voltaje de alimentación VCC , como se muestra en la figura 2.14 a). La diferencia con un interruptor mecánico es que el transistor puede ser operado eléctricamente y su respuesta de operación es más rápida. En el caso del interruptor mecánico, este no permitirá flujo de corriente hacia la carga RL cuando se encuentre abierto; pero, al momento de cerrar el interruptor, todo el voltaje de VCC aparecerá en la carga RL , como se ilustra en la figura 2.14 b). Idealmente, el transistor operado como interruptor debería tener las mismas características que su contraparte mecánica, aunque en la realidad tiene ligeras diferencias que ya analizaremos.
@: IC
IC J
K @9
M::
@< X
M:: Y
=`^liX)%(+ X KiXej`jkfifg\iX[fZfdf`ek\iilgkfi%Y :`iZl`kfZfele`ek\iilgkfid\Z}e`Zf%
En esta sección analizamos, de manera intuitiva, mediante modelos simplificados, el comportamiento del transistor como interruptor de CD, que es una de sus principales aplicaciones. Cuando el transistor se usa como interruptor, es útil identificar sus tres regiones de operación: región de corte, región de saturación y región activa, como se ilustró en la figura 2.9; además, es importante mencionar que el transistor puede usarse en configuración de base común, colector común o emisor común. Aunque, la configuración de emisor común es la más usada en transistores npn, debido a que la señal que se encarga de operar el interruptor, voltaje o corriente, es pequeña en comparación con la corriente o voltaje de carga que maneja el interruptor.7 El objetivo es que el transistor pueda operar esta corriente o voltaje grande entre colector y emisor, y sea comandado por una corriente o voltaje muy pequeña en la base. La figura 2.15 presenta un dibujo que ayudará a representar el comportamiento del transistor en esta configuración. En la figura 2.15 se muestra a una persona como operador dentro del transistor, cuyo trabajo perpetuo es ajustar un potenciómetro variable. El operador interno del transistor observa la corriente de base, IB, y ajusta la salida de tal manera que la corriente colector se mantenga de acuerdo con la ecuación IC βIB. Sin embargo, al operador solo se le permite modificar la resistencia variable, de tal modo que puede ir desde corto circuito (transistor en saturación) hasta circuito abierto (transistor en corte), o a un estado intermedio (transistor en región activa).
7
En configuración de emisor común, el emisor es conectado a tierra y es común a la entrada y a la salida del circuito.
grupo editorial patria®
63
2 El activo transistor
@:4_]\@9
:
9
<
=`^liX)%(, :fdgfikXd`\ekf[\ckiXej`jkfi\eZfe\o`e[\\d`jfiZfdefg\iX[fZfdf`ek\iilgkfi% Una forma de intuir el comportamiento del transistor como interruptor y hacerlo operar desde la región de corte a la región de saturación y viceversa, es utilizar un modelo8 simplificado del mismo, como se muestra en la figura 2.16. :fc\Zkfi
:fc\Zkfi
ege
geg
9Xj\
9Xj\
=`^liX)%(- Df[\cfj`dgc`]`ZX[f[\lekiXej`jkfi#egepgeg#fg\iXe[fZfdf`ek\iilgkfi\eZfe]`^liXZ`e\d`jfiZfde% El modelo de la figura 2.16 considera dos ramas para cada tipo de transistor: un diodo de la base al emisor y un interruptor del colector al emisor. El emisor es el punto común entre las dos ramas. Usando este modelo, analizamos el comportamiento del transistor. El transistor deberá encontrarse en estado de corte cuando el voltaje en el diodo, entre la base y el emisor, no es lo suficientemente grande para polarizar la unión en forma directa, por lo que no fluirá corriente a través del diodo; en consecuencia, la corriente del emisor (y del colector) será nominalmente cero y el interruptor se mantendrá abierto. El transistor se encontrará en estado de saturación y el interruptor se cerrará cuando el diodo, unión base-emisor, se polarice directamente y la corriente de base IB se establezca de tal forma que la corriente de colector esté definida por IC = βIB. En este caso, mientras la unión base-emisor se polariza directamente, la unión colector-base se polarizará inversamente. De lo anterior, podemos observar que el estado del interruptor depende de la relación entre las corrientes IB e IC y la ganancia de corriente de CD, β o hfe , como lo especifican las hojas de datos. Considerando el interruptor del modelo simplificado del transistor, se requiere habilitar o deshabilitar el paso de corriente del circuito de la figura 2.17. Cuando el interruptor se encuentra abierto, no fluye corriente por la resistencia y el voltaje de salida, VSAL, es igual al voltaje de alimentación, VCC. Si empujamos el interruptor, este se cerrará y conectará la resistencia a tierra. Entonces,
8
Un modelo es una representación simplificada, en este caso del transistor, que ayuda a incrementar el entendimiento intuitivo de su funcionamiento, y sirve para predecir su comportamiento en ciertas circunstancias.
64
ELECTRÓNICA • MIJAREZ
2 El activo transistor
M::4()mfckj I4-''Ω
@J8C
MJ8C
=`^liX)%(. @ek\iilgkfi[\cdf[\cfj`dgc`]`ZX[f[\ckiXej`jkfiljX[fgXiX_XY`c`kXif[\j_XY`c`kXi\cgXjf[\Zfii`\ek\XkiXmj[\leXi\j`jk\eZ`X% tendremos el voltaje VCC entre las terminales de la resistencia. Usando la ley de Ohm, la corriente de colector será IC 12 V/600 Ω 20 mA. En lugar de cerrar el interruptor con nuestro dedo, podemos usar una señal eléctrica proveniente, por ejemplo, de un sensor o un microcontrolador, para amplificar su capacidad de salida. Vamos a suponer que la señal eléctrica es de 5 V y no puede proveer más de 1 mA de corriente. El componente electrónico perfecto para realizar este trabajo es nada menos que ¡nuestro transistor! Para este ejemplo usaremos el modelo simplificado de un transistor npn, como se muestra en la figura 2.18.
M::4()mfck`fj
M::4()mfckj @J8C
I4-''Ω
@
I4-''Ω ()M
9
@
MJ8C
: <
@J8C
MJ8C
M
=`^liX)%(/ J\Xc\cZki`ZX[\,Mpd}o`df(d8\dgc\X[XgXiXfg\iXilekiXej`jkfiegeZfdf`ek\iilgkfi% Una corriente de 20 mA, como la requerida en este ejemplo, en esta conexión de emisor común, es asequible casi por cualquier transistor. En este caso, vamos a seleccionar un transistor de pequeña señal como el BC547C, cuyas características eléctricas se muestran en la tabla 2.1. La condición que debe satisfacerse para activar el interruptor, es decir llevar al transistor al estado de saturación, es que IB >> IC/hfe . Los fabricantes, por lo general, no especifican en la hoja de datos un valor preciso de hfe o β, ya que este varía de transistor a otro y con las condiciones eléctricas y térmicas. No obstante, es posible obtener un valor aproximado de hfe relacionado con la corriente de colector, IC , requerida. Debido a que IC 20 mA, de la hoja de datos podemos tomar la corriente IC 2 mA, la cual nos indica un hfe 500, y también considerar la corriente IC 100 mA, que nos indica un hfe 400. Un valor intermedio sería un hfe = 450. Por tanto, si IC 20 mA y hfe 450 podemos tener la relación: I C 20 mA 0.044 mA h fe 450 Con este cálculo se puede observar que obtenemos el valor de IB. Sin embargo, para asegurar que el transistor entre en estado de saturación, se necesita que el valor calculado en la expresión anterior sea mayor, por lo general un factor de diez. Por tanto, la corriente IB necesaria sería:
grupo editorial patria®
65
2 El activo transistor
Transistor npn BC547 Características eléctricas Símbolo
Mín.
Tipo
Máx.
Unidad
Ganancia de corriente, grupo A
hfe
---
90
---
---
B
hfe
---
150
---
---
C
hfe
---
270
---
---
Ganancia de corriente, grupo A
hfe
110
180
220
---
B
hfe
200
290
450
---
C
hfe
420
500
800
---
Ganancia de corriente, grupo A
hfe
---
120
---
---
B
hfe
---
200
---
---
Ganancia de corriente CD con VCE 5 V, IC 10 μA
con VCE 5 V, IC 2 mA
con VCE 5 V, IC 100 mA
hfe
---
400
---
---
RthJA
---
---
2501)
K/W
con IC 10 mA, IB 0.5 mA
VCEs at
---
80
200
Mv
con IC 100 mA, IB 5 mA
VCEs at
---
200
600
mV
con IC 10 mA, IB 0.5 mA
VBEs at
---
700
---
mV
con IC 10 mA, IB 0.5 mA
VBEs at
---
900
---
mV
con VCE 5 V, IC 2 mA
VBE
580
660
700
mV
con VCE 5 V, IC 10 mA
VBE
---
---
720
mV
C Resistencia térmica de la unión a temp. ambiente Voltaje de saturación del colector
Voltaje de saturación de la base
Voltaje base-emisor
Corriente de corte colector-emisor
---
con VCE 80 V
BC546
ICES
---
0.2
15
nA
con VCE 50 V
BC547
ICES
---
0.2
15
nA
con VCE 30 V
BC548, BC549
ICES
---
0.2
15
nA
BC546
ICES
---
---
4
μA
BC5476
ICES
---
---
4
μA
con VCE 80 V, Tj 125 °C con VCE 50 V, Tj 125 °C
KXYcX)%( :XiXZk\ijk`ZXj\cZki`ZXj[\cX]Xd`c`X[\kiXej`jkfi\j9:,+-$9:,+0%
IB
IC 20 mA r 10 r 10 0.44 mA h fe 450
El paso siguiente es calcular la resistencia de base, RB, analizando la malla que involucra la corriente IB, como se muestra en la figura 2.19. Usando la ley de Kirchhoff de voltajes, para esta malla tenemos: VENT IBRB VBE
66
ELECTRÓNICA • MIJAREZ
2 El activo transistor
@9
@9 9
9 I9 M
< M
M9<4'%.M
M9<4'%.M
<
=`^liX)%(0 DXccXhl\`emfclZiXcXZfii`\ek\@9\e\cZ`iZl`kf[\ckiXej`jkfiegefg\iX[fZfdf`ek\iilgkfi%
Del capítulo 1, sabemos que la caída de voltaje de la unión de un diodo es aproximadamente 0.7 V y que la corriente IB que requerimos es de 0.44 mA; por tanto, despejando RB de la ecuación anterior obtenemos que: RB
VENT VBE 5 V – 0.7 V 9.8 Ω y 10 kΩ IB 0.44 mA
Si se inyecta más corriente IB, el transistor no incrementará su IC, ya que está saturado. En la figura 2.18 se observó que cuando el voltaje de entrada es 5 V, estado lógico alto, el voltaje de salida es cercano a cero, estado lógico bajo y viceversa. Por lo que se muestra que el transistor, en esta configuración, es capaz de invertir la señal de entrada. Un razonamiento simétrico puede aplicarse para el caso que se requiera que la resistencia de carga RL sea conectada a tierra, o que el nivel de la señal de entrada vaya de un estado lógico alto a un estado lógico bajo. El dispositivo apropiado sería un transistor pnp, donde la corriente es tomada de la base en lugar de ser inyectada, tal como se ilustra en la figura 2.20.
,M
M
@9
9
,M
<
M
()M
< @9 9
:
()M
:
I4-''Ω
@J8C
MJ8C
I4-''Ω
=`^liX)%)' Fg\iXZ`e[\lekiXej`jkfigegZfdf`ek\iilgkfi%
En el circuito de la figura 2.20, cuando la señal de entrada es cero volts, el transistor entra en estado de saturación, permitiendo que la corriente fluya a través de la carga. Por otro lado, cuando la señal de entrada es 5 V, el transistor entra en estado de corte y no fluirá corriente hacia la carga. En los ejemplos anteriores, la carga conectada entre colector-emisor es una resistencia. Sin embargo, esta podría ser una lámpara, un LED, un solenoide, una bocina o cualquier otro dispositivo que se desee controlar. Por consiguiente, vale la pena considerar un par de precauciones al momento de diseñar con transistores como interruptores: 1. Seleccione la resistencia de base RB de tal forma que se proporcione una corriente de base IB en exceso. En especial cuando se controlan lámparas, lo anterior debido a que el hfe se reduce a valores de VCE muy bajos. 2. Para cargas inductivas, proteja el transistor con un diodo a través de la carga, como se muestra en la figura 2.21. Sin el diodo, cuando el interruptor se abre, la energía almacenada en el inductor generará en el colector un voltaje positivo oscilatorio muy elevado que probablemente sobrepase el voltaje de ruptura de colector a emisor.
grupo editorial patria®
67
2 El activo transistor
"M::
=`^liX)%)( ;`f[f[\jlgi\j`eljX[fZlXe[fj\ZfedlkXeZXi^Xj`e[lZk`mXj% Otro dato importante a tomar en cuenta es la cantidad de corriente de carga que el transistor puede manejar; para ello, se selecciona un transistor que pueda operar con las condiciones de corriente requeridas. Las opciones que se tienen son grandes, ya que existe una variedad grande de transistores para aplicaciones que van desde los cientos de milésimas de ampere hasta los amperes, como lo muestra la tabla 2.2. En la tabla 2.2 se muestran los valores máximos absolutos para algunos transistores npn y pnp comerciales; dichos valores deben tomarse únicamente como valores de referencia nominales, no como los valores con los que se operará el transistor. Los transistores de mayor potencia, por lo general, pueden usarse con disipador, si la aplicación lo requiere. Una regla práctica es usar una corriente de carga de hasta 30% del valor de IC nominal cuando no se utilice disipador y una corriente de carga de hasta 75% del valor de IC cuando se utilice disipador. Por ejemplo, el transistor TIP32C puede manejar una corriente de 0.9 A sin disipador y 2.25 A con un disipador de 10 °C/W.
Transistor
Heat sink Factor de reducción de disipación de potencia
Valor absoluto admisible IC [ampere]
Temp. [°C]
para 75% IC [°C/W]
npn
Pnp
VCE [voltio]
BC547C
BC557C
59
0.100
150
No aplica
2N2222
2N2907
75
0.800
200
No aplica
TIP 29C
TIP 30C
100
1
150
10
TIP 32C
TIP 32C
100
3
150
10
TIP 41C
TIP 42C
100
6
150
5
TIP 33C
TIP 34C
100
10
150
1
KXYcX)%) MXcfi\jd}o`dfjXYjfclkfjgXiXXc^lefjkiXej`jkfi\j[\gifgj`kf^\e\iXc% ¿Qué tanto se calienta el encapsulado del transistor?, depende del disipador que se le adhiera. El encapsulado mismo es capaz de emitir calor al medio ambiente. Si no es suficiente, dependiendo de las condiciones de carga, se le agrega un disipador, el cual transfiere el calor a su alrededor de manera más eficiente. Los disipadores se especifican por un valor numérico en °C/W. Este número representa la temperatura a la que se elevará el disipador adherido al transistor por cada watt de calor generado. Por ejemplo, si se ponen 12 W de calor en un disipador de 5 °C/W, significa que este elevará su temperatura 60 °C arriba de la temperatura ambiente.9 9
Un disipador puede pensarse como un conductor de calor. Así como hay metales que son mejores conductores de electricidad que otros, también existen metales que son mejores conductores de calor que otros. Ocurre lo mismo con la corriente, ya que esta siempre fluye en un solo sentido. El calor también siempre fluye en un solo sentido: de caliente a frío. De qué manera fluye el calor, es otro tema, pero podemos comentar tres procesos: por radiación, por convección y por conducción. Al calentarse, el disipador emite energía en forma de radiación infrarroja y se
68
ELECTRÓNICA • MIJAREZ
2 El activo transistor
Como resaltamos antes, la corriente IB es muy importante para garantizar que el transistor opere correctamente como interruptor. No obstante, esta corriente depende de la corriente de colector IC y de la constante hfe , que no especifica un valor preciso, además que normalmente el valor de hfe es menor en la región de saturación. Por consiguiente, si conocemos la IC que requerimos, otra forma de determinar el hfe es mediante las curvas proporcionadas por el fabricante en la hoja de datos. Si, por ejemplo, seleccionamos un transistor npn TIP41C y necesitamos manejar una corriente IC 2 A, entonces buscamos la curva de hfe vs. IC provista en la hoja de datos del dispositivo, como se muestra en la figura 2.22. De la figura 2.22 podemos observar que, para una corriente IC de 2 A, el hfe es aproximadamente 50. Entonces, podemos calcular IB usando la expresión: IC 2 A 40 mA h fe 50
,''
_]\ #>XeXeZ`X[\Zfii`\ek\[\:;
*'' )''
M:<4)%'M KA4(,':
('' .'
),:
,' *' )'
,,:
(' .%' ,%' '%'-
'%(
'%)
'%* '%+ '%-
(%'
)%'
+%'
-%'
@:#Zfii`\ek\[\Zfc\Zkfi8
=`^liX)%)) :limX[\_]\mj%@:[\ckiXej`jkfiK@G+(:% Para asegurar que el transistor entre al estado de saturación, debemos generar una IB mucho mayor; en este caso, podríamos seleccionar que sea 4 veces: IB
IC 2A r4 r 4 160 mA h fe 50
Debido a que el valor de la corriente IB comienza a ser significativo, no escogimos un factor 10 veces mayor, como lo hicimos antes. La variación de hf e , dependiente del transistor y de la corriente IC , es una inconveniencia de diseñar con los transistores bipolares. Por lo pronto, vamos a continuar con el diseño de este transistor suponiendo que tenemos una señal de entrada de 10 V en la terminal de la base, como se muestra en la figura 2.23. Entonces, para obtener la resistencia de base, RB , tenemos: RB
VENT VBE 10 V 0.7 V 58 Ω y 60 Ω IB 160 mA
enfría. Por esta razón, los disipadores son negros; el color negro es un eficiente radiador, aunque también absorbe muy bien la radiación infrarroja. Una mejor forma de deshacerse del calor es moviendo el aire a través del disipador, lo cual se llama convección. El aire alrededor del disipador se calienta y sube hacia la atmósfera; este aire caliente es reemplazado por aire frío, repitiéndose el ciclo; claro, en este caso un ventilador ayudaría mucho al proceso. Por conducción es el ejemplo de la conexión del encapsulado al disipador.
grupo editorial patria®
69
2 El activo transistor
)+M )8
(-'d8 M
: 9
I9
'%.M
<
=`^liX)%)* KiXej`jkfiegefg\iX[fZfdf`ek\iilgkfigXiXdXe\aXi)8[\ZXi^X% De esta manera, resolvimos el problema del cálculo de RB usando las curvas proporcionadas en la hoja de datos del transistor. El siguiente paso será ver el voltaje de saturación usando un procedimiento similar. De acuerdo con nuestro modelo simplificado del transistor, tenemos un interruptor perfecto. Sin embargo, como también comentamos, este modelo es solo una aproximación para obtener un entendimiento intuitivo. Cuando se cierra un interruptor ideal, debe haber un voltaje de cero volts entre sus terminales. Pero un transistor real, cuando se pone en saturación, es decir, cuando se cierra el interruptor, cierto voltaje se encuentra presente entre las terminales de colector y emisor; el voltaje VCE y su valor puede determinarse usando las tablas o curvas de la hoja de datos del transistor. La figura 2.24 muestra las curvas de VCE para un transistor TIP41C. )%'
_]\ #>XeXeZ`X[\Zfii`\ek\[\:;
KA4(,': (%-
(%) M9<jXk 7@:&@94('
'%/
M9<7M:<4+%'M '%+ M:<jXk 7@:&@94(' ' '%'-
'%(
'%)
'%* '%+ '%-
(%'
)%'
+%'
-%'
@:#Zfii`\ek\[\Zfc\Zkfi8
=`^liX)%)+ @:mj%M:<[\jXkliXZ`egXiXlekiXej`jkfiK@G+(:% En la gráfica que se ilustra en la figura 2.24 podemos observar que para una corriente de 2 A en el colector, el voltaje VCE de saturación es aproximadamente 0.2 V, que no es cero volts, como en el caso ideal, pero es realmente insignificante. Esto lo podemos notar en el cálculo de RL, cuando se considera la caída de voltaje del VCE. RL
VCC VCE 24 V 0.2 V 11.9 Ω IC 2A
Sin embargo, si usamos una IC mayor, el voltaje VCE empieza a ser significativo, como se aprecia en la curva. El aumento en el voltaje VCE tiene dos efectos negativos en el comportamiento del circuito: le resta voltaje a la carga y genera potencia, V r 1, en el transistor, por tal razón se calienta.
70
ELECTRÓNICA • MIJAREZ
2 El activo transistor
TRANSISTOR DARLINGTON En el mercado se encuentran disponibles otros tipos de transistores, o arreglos de ellos, en especial para aplicaciones de potencia grande, como los SCR, TRIAC, IGBT y los Darlington. Aunque también existen los transistores tipo FET, que por sus características eléctricas se han usado ampliamente en la fabricación de circuitos integrados. Analizar todos estos dispositivos va más allá de los alcances de este libro, así que en esta sección solo estudiamos el transistor Darlington y posteriormente se analizan los transistores FET. El transistor Darlington es un tipo de transistor que en realidad consiste en un arreglo de dos transistores BJT conectados de tal forma que sean capaces de incrementar su ganancia de corriente, como se ilustra en la figura 2.25. El objetivo del transistor Darlington es incrementar el valor de hfe , que tiende a ser bajo en estado de saturación. La solución es usar dos transistores, como se muestra en la figura 2.25 a). El primer transistor que conforma el arreglo recibe una pequeña corriente en la base y la multiplica por su hfe , IB r hfe . Esta corriente amplificada se inyecta en la base del segundo transistor, el cual, a su vez, la multiplica por su hfe, IB r hfe r hfe . De esta manera, obtenemos, en la carga, una corriente amplificada dos veces; en consecuencia, nos permite manejar corrientes considerablemente grandes con una corriente en la base relativamente pequeña. Si reemplazamos cada transistor por su modelo simplificado, obtenemos el circuito que se muestra en la figura 2.25 b). Por su parte, la figura 2.25 c) muestra este modelo una vez que se activó el primer transistor. Desde un punto de vista intuitivo, el arreglo de transistores Darlington puede entenderse como un solo transistor, cuya ganancia de corriente, hfe, es el cuadrado de un transistor convencional, y cuyo voltaje base-emisor es 1.4 V, en lugar del tradicional 0.7 V, como se muestra en la figura 2.25 c).
:fc\Zkfi
:fc\Zkfi
:fc\Zkfi
9Xj\
9Xj\ 9Xj\ @:4_)]\@9
X
Y
Z
=`^liX)%), KiXej`jkfi;Xic`e^kfe%X JdYfcf\jhl\d}k`Zf%Y pZ Df[\cfj`dgc`]`ZX[f%
Los transistores Darlington pueden construirse con transistores BJT discretos. Sin embargo, la buena noticia es que este arreglo se fabrica en un circuito integrado y es encapsulado como un transistor que incluye otros componentes que mejoran su desempeño, como se muestra en la figura 2.26. :
9
<
=`^liX)%)- 8ii\^cf;Xic`e^kfe\eZXgjlcX[fZfdflekiXej`jkfi%
grupo editorial patria®
71
2 El activo transistor
De esta manera, existen comercialmente arreglos Darlington que se pueden operar como si fueran transistores especiales. La tabla 2.3 muestra algunos transistores Darlington.10 Transistores npn
pnp
Valores absolutos VCE [voltios]
IC [ampere]
Valores de saturación a 50% ICmáx Temp. [°C]
V SAT [voltios]
ICOL [ampere]
IBASE [mA]
hfe
TIP 112
TIP 117
100
2
150
0.9
1
2
500
TIP 122
TIP 127
100
5
150
1.3
2.5
10
250
TIP 102
TIP 107
100
8
150
1
4
8
500
TIP 142
TIP 147
100
10
150
1.3
5
10
500
KXYcX)%* MXcfi\jd}o`dfjXYjfclkfjgXiXXc^lefjkiXej`jkfi\j;Xic`e^kfe% De igual forma que con los transistores BJT discretos, una regla práctica es cargar estos transistores con 20% de valor nominal de IC sin disipador, y hasta 75% de su valor nominal de IC con un disipador de 5 °C/W. Por ejemplo, el Darlington TIP102 puede manejar 1.6 A sin disipador y hasta 6 A con un disipador de 5 °C/W.
TRANSISTORES FET El transistor de efecto de campo, o Field Effect Transistor (FET), es un dispositivo de tres terminales, similar al transistor bipolar de unión BJT, que analizamos antes en este capítulo. Sin embargo, el FET es un dispositivo unipolar que depende únicamente de un tipo de portadores de carga, ya sea de los huecos o de los electrones. Esencialmente existen dos tipos de FET: los Junction Field Effect Transistors, abreviados como JFET, y los Metal-Oxide Semiconductor Field Effect Transistors, abreviados como MOSFET. A diferencia de los transistores bipolares que son controlados por corriente, los FET son dispositivos controlados por voltaje; esto significa que una entrada de voltaje es la encargada de controlar la corriente de salida. Los FET presentan una impedancia de entrada extremadamente grande, del orden de los megaohms; en consecuencia, requieren muy poca potencia para operar la carga. Esta característica hace que los FET sean algunas veces preferidos a los transistores BJT. Adicionalmente, la construcción de los FET requiere menos espacio que los BJT, por lo que los hace ideales para la fabricación de circuitos integrados, donde el tamaño de cada componente es crítico. En esta sección solo cubrimos las características eléctricas de los transistores JFET y MOSFET, asimismo bosquejaremos sus aplicaciones como interruptores. Su importancia radica en que son la base para la construcción de los amplificadores operacionales que se estudian en el siguiente capítulo.
Tipos de FET Los transistores FET tienen un canal que es controlado, como su nombre lo indica, por un campo eléctrico, producido por un voltaje aplicado a una de sus terminales. No existen uniones polarizadas directamente, así que esta terminal no consume corriente; tal vez esta es una de las ventajas más importantes de los FET. Del mismo modo que con los transistores BJT, existen dos tipos de polaridades: FET de canal n, con electrones como portadores de carga, y FET de canal p, con huecos como portadores de carga. Estas dos polaridades son análogas a las de las encontradas en los transistores BJT, como npn y pnp, respectivamente. Pero, los diferentes tipos de transistores FET que existen en el mercado tienden a confundir. Primero, debido a que hay dos tipos de FET, donde varía la construcción de la terminal denominada Gate, G, que son los JFET y los MOSFET,
10
En Internet se pueden encontrar hojas de datos de diferentes transistores Darlington; sin embargo, una liga con información de electrónica muy útil, que incluye esta tabla y otras, es la del profesor Nayarana Rao, de libros electrónicos denominados knol (http://knol.google.com/).
72
ELECTRÓNICA • MIJAREZ
2 El activo transistor
y, segundo, porque existen dos tipos de dopados en el canal, los cuales pueden ser reducción o agotamiento (depletion) y realce o crecimiento (enhancement). La figura 2.27 trata de aclarar, a primera vista, los diferentes tipos de FET. =
A=
DFJ=
ZXeXce
ZXeXcg
i\[lZZ`ef X^fkXd`\ekf
i\XcZ\f Zi\Z`d`\ekf
ZXeXce ZXeXce
ZXeXcg
=`^liX)%). ;`]\i\ek\jk`gfj[\kiXej`jkfi\j=
Construcción del transistor JFET El transistor JFET está compuesto por 4 terminales, como se muestra en la figura 2.28: Drenaje (Drain), D, fuente (Source), S, y dos terminales llamadas compuertas (Gates), G1 y G2. Al área entre las terminales S y D se le llama canal. El tipo de material semiconductor usado en el canal determina el nombre del transistor, el cual puede ser JFET canal n, como se ilustra en la figura 2.28 a), o JFET canal p para el transistor que se muestra en la figura 2.28 b). Para el caso del JFET canal n, se agregan a los lados del canal dos regiones pequeñas de material semiconductor tipo p. Cada región corresponde a las terminales G1 y G2. Cuando el fabricante conecta una terminal para cada compuerta, al dispositivo se le llama JFET de doble compuerta. No obstante, en la mayoría de los casos las compuertas son conectadas internamente y el JFET se comporta como si tuviera una terminal única G. ;i\eXa\
e :fdgl\ikX(
g
;i\eXa\
g
:XeXc g
:fdgl\ikX)
:fdgl\ikX(
=l\ek\ X
e
:XeXc e
:fdgl\ikX)
=l\ek\ Y
=`^liX)%)/ :fejkilZZ`e[\ckiXej`jkfiA=
grupo editorial patria®
73
2 El activo transistor
En los transistores JFET, el flujo de corriente es entre las terminales D y S. Para el JFET canal n, la mayoría de los portadores de corriente en el canal son electrones libres; por el contrario, para el JFET canal p, la mayoría de los portadores de carga en el canal son huecos. Los símbolos esquemáticos para el transistor JFET se muestran en la figura 2.29. La figura 2.29 a) muestra el símbolo esquemático para el JFET canal n, y la figura 2.29 b) ilustra el símbolo para el JFET canal p. La única diferencia es la dirección de la flecha en la terminal G. Para el JFET canal n la flecha apunta hacia el canal y para el JFET canal p la flecha apunta hacia afuera desde el canal p. En ambos símbolos, la línea vertical que conecta las terminales D y S representa el canal semiconductor correspondiente a cada transistor. Un punto importante: cuando la flecha de la terminal G se encuentra en el centro, se dice que el JFET es simétrico. Esto quiere decir que las terminales D y S pueden ser intercambiadas sin afectar la operación. En cambio, si la flecha se encuentra fuera del centro, cerca de la terminal S, como se muestra en la figura 2.29 c), se dice que el JFET es asimétrico y las terminales D y S no pueden ser intercambiadas. A=
A=
A=
;i\eXa\
;i\eXa\
;i\eXa\
8j`dki`Zf
J`dki`Zf
J`dki`Zf :fdgl\ikX
:fdgl\ikX
:fdgl\ikX
=l\ek\
=l\ek\
=l\ek\
X
Y
Z
=`^liX)%)0 JdYfcfj\jhl\d}k`Zfj[\ckiXej`jkfiA=
Operación y características principales del transistor JFET Para entender la operación del transistor JFET, vamos a analizar el circuito de la figura 2.30, en el cual se ilustra el flujo de corriente en un JFET canal n con las terminales G1 y G2 desconectadas. La magnitud de corriente depende de dos factores: el valor del voltaje entre las terminales D y S, VDS, y la resistencia del canal entre las terminales D y S, designada como rDS. Adicionalmente, el valor óhmico de rDS depende del nivel de dopado, del área y de la longitud del material semiconductor usado en la construcción del canal. ;i\eXa\ @;
e :fdgl\ikX(
g
g
:fdgl\ikX)
" M;; Æ
=l\ek\
=`^liX)%*' =claf[\Zfii`\ek\\elekiXej`jkfiA=
j`eZfe\o`e%
74
ELECTRÓNICA • MIJAREZ
2 El activo transistor
Debido a la fuente de alimentación, VDD , la terminal de drenaje, D, se hace positiva con respecto a la terminal de la fuente, S; en consecuencia, el flujo de electrones va de la terminal S a la terminal D. En el JFET, la corriente de la fuente, IS, y la corriente del drenaje, ID, son la misma; aunque en la mayoría de los casos se considera que el flujo de corriente es únicamente ID . Las regiones de material semiconductor tipo p en el transistor JFET canal n, que se localizan a los lados del canal n, están conectadas a las terminales de compuerta, G1 y G2, con el propósito de ayudar a controlar la cantidad de corriente que fluye por el canal. La figura 2.31 a) muestra este transistor con las terminales G y S conectadas a tierra. El voltaje de alimentación, VDD , conectado a la terminal D, polariza inversamente ambas uniones P-N. Esto trae como resultado una corriente cero en las terminales de compuerta G1 y G2. Si ambas compuertas están centradas verticalmente en el canal, es decir, si el JFET es simétrico, la distribución de voltaje a lo largo del canal hace que el ancho de la región de agotamiento (depletion) sea mayor en la parte superior del canal y más angosto en la parte inferior. La corriente fluye en el canal entre las capas de agotamiento y no a través de las capas mismas.11 Las capas de agotamiento penetran profundamente en el canal n y ligeramente en las áreas de material tipo p de las compuertas G1 y G2 debido a los niveles de dopaje en los materiales n y p.
:fdgl\ikX(
g
;i\eXa\
;i\eXa\
e
e g
:fdgl\ikX)
M;;4(,M
:fdgl\ikX
g
g
M;;4(,M
M>J =l\ek\
=l\ek\
X
Y
=`^liX)%*( <]\Zkf[\cXk\id`eXc>\ecXZfii`\ek\\ecXk\id`eXc;%X :fdgl\ikX\eZfikfZ`iZl`kfZfecX]l\ek\% Y CXgfcXi`qXZ`e\ok\ieX[\cXZfdgl\ikXi\[lZ\cXZfii`\ek\[\[i\eXa\[iX`e %
La figura 2.31 b) muestra al transistor JFET canal n polarizado de tal manera que no solo la terminal de drenaje, D, es positiva con respecto a la terminal de la fuente, S, sino que además la compuerta, G, se hace negativa con respecto a la fuente. El efecto de tener un voltaje negativo en la terminal de la compuerta, G, es que las regiones de agotamiento se expanden, haciendo más angosto el canal y por ende reduciendo la corriente ID, como se muestra en la figura 2.31 b). Variando el voltaje entre las terminales de compuerta y fuente, VGS, la corriente en el canal ID puede ser controlada. Si el voltaje VGS es lo suficientemente negativo, las capas de agotamiento pueden llegar a tocarse, estrangulando (pinch off) el canal, teniendo como resultado una corriente ID igual a cero. Al voltaje VGS requerido para hacer ID cero se le denomina voltaje de corte, VGS(CORTE). Los voltajes de polarización para un JFET canal p son los opuestos a los del JFET canal n. Para el JFET canal p, la terminal de drenaje, D, es negativa y la terminal de compuerta, G, es positiva. La figura 2.32 a) ilustra un transistor JFET de canal n, con sus voltajes de polarización adecuados para crear la región de agotamiento mostrada en la figura 2.31 b). Cuando la fuente de alimentación de la terminal de la compuerta, VGG, se reduce a cero, es equivalente a conectar la terminal de la compuerta, G, a la terminal de la fuente, S; previamente conectada a tierra, es decir, VGS 0. La gráfica de ID vs. VDS en esta condición se muestra en la figura 2.32 b). Si 11
A la región de agotamiento también se le llama capa de agotamiento, zona de agotamiento o región de la unión. Esta consiste en un material aislante dentro de un material conductor, como es el caso de un semiconductor dopado, donde los portadores de carga se han difundido o han sido separados por un campo eléctrico, dejando solo iones donadores o aceptadores de impurezas, como vimos en el capítulo 3 para el diodo. La mejor visualización para la difusión de portadores de carga es compararla con la difusión de tinta en el agua. A esta área se le llama de agotamiento porque se agotan o reducen los portadores de carga en la región.
grupo editorial patria®
75
2 El activo transistor
el voltaje VDS se incrementa desde cero, la corriente de drenaje, ID , se incrementará de manera proporcional. Cuando el voltaje VDS alcanza el voltaje de estrangulamiento (pinch off), denominado VP, entonces la corriente ID se nivela. Para este ejemplo, el voltaje VP es de 4 V, como se muestra en la figura 2.32 b). Al área debajo del valor de VP se le llama región óhmica, debido a que la corriente ID se incrementa de forma directamente proporcional con el voltaje VDS. Para voltajes mayores que VP , se le denomina región de saturación (fuente de corriente), en la cual ID no se ve afectada por cambios en el voltaje VDS. La corriente ID es constante para voltajes mayores a VP , debido a que, a partir de ese valor, la resistencia del canal, rDS, se incrementa de manera proporcional al voltaje VDS. A la máxima corriente drenaje-fuente que un transistor JFET puede manejar, en condiciones de operación normales, se le denomina IDSS y ocurre cuando la terminal de compuerta, G, es aterrizada, es decir cuando el voltaje VGS es cero. La figura 2.32 b) indica una corriente IDSS de 10 mA, para el JFET canal n que estamos analizando. Si el voltaje VGS se hace negativo, el valor de ID será menor que el de IDSS. ¿Qué tanto disminuye ID?, depende del valor de VGS, siendo el voltaje VGS(CORTE) el voltaje negativo máximo para que ID 0. La figura 2.32 c) exhibe un conjunto de curvas para diferentes valores de VGS. De la figura 2.32 c), es interesante resaltar la relación que hay entre los valores de VP y VGS(CORTE). Se observa que VP VGS(CORTE), lo cual es válido para cualquier transistor JFET. La mayoría de las hojas de datos no listan el valor de VP , pero casi siempre listan el valor de VGS(CORTE). Por tanto, de la figura 2.32 c) podemos obtener el valor de VP usando el voltaje VGS(CORTE); si VGS(CORTE) 4 V, entonces VP ( 4 V) 4 V. Hay un par de puntos importantes que se pueden observar de la figura 2.32 c), el primero es que la pendiente de cada curva de ID vs. VGS decrece conforme se hace más negativo el voltaje VGS. Esto sucede porque al hacerse más negativo el voltaje VGS, la resistencia del canal, rDS , se incrementa. Esta es una característica muy útil de los transistores JFET, ya que pueden usarse como resistencia que varía con el voltaje de entrada. @;d8 ;i\eXa\
@;JJ4('d8
@;JJ4('d8 M>JZfik\ 4+M
:fdgl\ikX\eZfikfZ`iZl`kfM>J4'M M>J4'M
@;JJ4('d8
:fdgl\ikX
M>J4(M
M;J
@;d8
M;;
M>J M>>
=l\ek\
MG4+M M;Jmfckj
X
M>J4)M M>J4*M M>J4+M
Y
MG4+M
M;Jmfckj Z
=`^liX)%*) KiXej`jkfiA=J4'% Z :limX@;mj%M;JgXiX[`]\i\ek\jmXcfi\j[\M>J %
El segundo punto es que el voltaje VDS al cual ocurre el estrangulamiento (pinch off ), decrece al hacerse más negativo el voltaje VGS. Esto puede expresarse por la ecuación 2.7. VDS(P) VP – VGS
(2.7)
Donde VP es el voltaje de estrangulamiento para VGS 0 V, y VDS(P) es el voltaje de estrangulamiento para cualquier valor de VGS. Para este cálculo VGS y VP son valores absolutos, es decir, se ignoran sus polaridades. En tanto, VDS(P) se considera como el voltaje límite entre la región óhmica y la región de saturación del transistor JFET. Una característica distintiva de los JFET es su curva de transconductancia, gm. La transconductancia se define como el recíproco de la resistencia, 1/R, o aproximadamente ID/VGS. Sus unidades son los Mhos, que es el inverso de la palabra Ohm, aunque también se les llama siemens. El gm es para los FET lo que el hfe es para los transistores BJT. La figura 2.33 muestra la gráfica de transconductancia, ID vs. VGS del transistor JFET de la figura 2.32.
76
ELECTRÓNICA • MIJAREZ
2 El activo transistor
@;JJ4('d8 .%,d8 @;d8 ,d8 )%,d8
+M M>JZfik\
*M )M (M 'M M>Jmfckj
=`^liX)%** :limX[\kiXejZfe[lZkXeZ`X#M>Jmj%@; #[\lekiXej`jkfiA=
(2.8)
La ecuación 2.8 es válida si VDS es mayor o igual que VDS(P), y puede ser usada para JFET canal p o canal n. Por ejemplo, si usamos la gráfica de la figura 2.33 y la ecuación 2.8, podemos calcular la corriente ID cuando VGS 0 V y cuando VGS 0.5 V. Si VGS 0 V, fácilmente podemos visualizar que ID IDSS 10 mA. Pero, cuando VGS 0.5 V: 2
0.5 V ¶ I D 10 mA §¨1 7.65 mA ©
4 V ¸·
TRANSISTOR FET
COMO INTERRUPTOR
Como comentamos al inicio de esta sección acerca de los transistores FET, la diferencia entre los JFET y los MOSFET es principalmente que la terminal de la compuerta, G, en el MOSFET es aislada del canal por una delgada capa de cristal (SiO2), lo cual le proporciona una impedancia de entrada muchas veces mayor que la del transistor JFET, con valores de impedancia mayores a los 1014 ohms; empero, desde el punto de vista conceptual, su operación es igual y ambos pueden funcionar en aplicaciones de conmutación. Los transistores FET operados como interruptores son más simples que los transistores BJT, ya que no se tienen que despilfarrar corriente excesiva de polarización, IB , ni estimar el valor de hfe combinado con la corriente de carga IC. Para activar los transistores FET únicamente necesitamos aplicar el voltaje correcto a la entrada de alta impedancia de la terminal de compuerta, G. Una manera de intuir el comportamiento del JFET como interruptor, es utilizar un modelo muy simple como el que se muestra en la figura 2.34. D G
S =`^liX)%*+ Df[\cfj`dgc`]`ZX[f[\lekiXej`jkfiA=
grupo editorial patria®
77
2 El activo transistor
En la figura 2.34 se observa que la terminal de compuerta, G, y las terminales drenaje, D, y fuente, S, forman una unión P-N, tipo diodo. En este modelo, la resistencia depende de la polarización en la terminal de la compuerta, G. Por consiguiente, debido a que la terminal G se polariza negativamente con respecto a la terminal de la fuente, S, el diodo debe polarizarse inversamente.12 En consecuencia, la corriente de la compuerta será muy pequeña o insignificante, causando a su vez que la corrientes ID IS. La figura 2.35, por su parte, muestra un FET tipo JFET canal-N conectado para operar como interruptor. "('M C}dgXiX('M '%(8
'M M>J
M>J4'M:fe[lZZ`e M>J4ÆM>J:FIK<
=`^liX)%*, =
Señal de entrada R
VGS = 0V VGS = –VGS (CORTE)
=`^liX)%*- A=
El JFET puede dañarse de manera permanente si la terminal de la compuerta, G, se polariza directamente con respecto a la fuente; generalmente, corrientes mayores de 50 mA pueden producir el humo mágico, indicando el daño. Una forma de verificar el estado de un JFET con un óhmetro, es comprobar el estado del diodo, ya que cuando un JFET se encuentra destruido, normalmente el diodo es el que se daña.
78
ELECTRÓNICA • MIJAREZ
2 El activo transistor
TRANSISTORES
COMO AMPLIFICADORES LINEALES
Los transistores BJT o FET pueden usarse como amplificadores lineales, como pudimos apreciar en sus curvas características. Sin embargo, para operarlos en esta condición se requiere tomar ciertas consideraciones que pueden variar de transistor a transistor, como es el caso del hfe en los transistores BJT. Con los transistores JFET también se da el caso que sus propiedades pueden variar sustancialmente entre una muestra y otra. La conclusión es que operar los transistores como amplificadores puede ser un poco truculento. Existen dos razones principales por las cuales no se utilizan con frecuencia los transistores como amplificadores lineales: la primera, que ya mencionamos, es la variación entre componente y componente, que es una cuestión importante cuando se utiliza en miles o millones de circuitos. La segunda es que los amplificadores operacionales (OP AMP), que se estudian en el capítulo 5, utilizan para su construcción transistores BJT tanto como FET, que son muy baratos y fáciles de usar.13
DATOS IMPORTANTES DEL CAPÍTULO ± El transistor BJT consiste de tres regiones dopadas: el emisor, la base y el colector. ± La base del transistor BJT es la región menos dopada; se encuentra entre el emisor y el colector. ± El emisor, el área más dopada del transistor BJT, tiene como función emitir o inyectar portadores mayoritarios a la región de la base. ± El colector es el área más grande del transistor y su dopaje es moderado. La mayoría de los portadores mayoritarios inyectados a la base no fluyen hacia la terminal de la base, sino que son atraídos a la terminal del colector. ± El beta de CD del transistor BJT se obtiene de la relación entre la corriente de colector y de la corriente de base: β IC /IB. ± El alfa de CD del transistor BJT se obtiene de la relación entre la corriente de colector y de la corriente de emisor: α IC /IE. ± La relación entre las corrientes del transistor BJT se encuentra dada por la igualdad IE IB IC. ± El transistor BJT tiene cuatro regiones de operación: la región de saturación, la región de corte, la región de ruptura y la región activa. El transistor como interruptor opera en las regiones de corte y de saturación. ± Para probar un transistor BJT con un óhmetro, se usa su circuito equivalente de diodos y se prueba cada unión como un diodo independiente. Resistencia baja, en polarización directa y resistencia alta en polarización inversa.
13
± El transistor operado como interruptor puede ser configurado en base común: colector común y emisor común. Aunque la de emisor común es más usada debido a que la corriente de entrada, IB, que controla la corriente de carga IC, es muy pequeña. ± Para asegurar la operación del transistor BJT como interruptor, se tiene que tomar en cuenta la corriente de carga, IC , el hfe y la corriente de base, IB , considerando la relación IB >> IC/hfe . ± El transistor Darlington es un arreglo de dos transistores conectados en tándem para incrementar la ganancia de corriente de CD, hfe2. Puede considerarse como un solo transistor de alta ganancia, pero con un voltaje VBE del doble, 1.4 V para silicio. ± El transistor FET es un dispositivo semiconductor unipolar, es decir utiliza solo un tipo de portadores mayoritarios, huecos o electrones. Esencialmente, los FET pueden encontrarse como JFET y MOSFET. ± La diferencia principal entre JFET y MOSFET es que la terminal de la compuerta en el MOSFET es aislada del canal, lo cual le proporciona una impedancia de entrada muchas veces mayor que la del transistor JFET. ± Los FET son dispositivos controlados por voltaje, a diferencia de sus primos los BJT, que se controlan con corriente. ± Los FET presentan una muy alta impedancia de entrada, por lo que no desperdician corriente para poder activarse.
En la actualidad, en el diseño de equipo electrónico, no he utilizado transistores como amplificadores. La razón principal es porque se pueden comprar amplificadores operacionales cuádruples por el precio de dos o tres transistores discretos. Así que no vale la pena hacerse la vida dif ícil, si no es necesario.
grupo editorial patria®
79
2 El activo transistor
PROBLEMAS
DEL CAPÍTULO
2
2.1 Se tiene un transistor que tiene una corriente IC 15 mA y una IB 40 μA, calcule el Beta y el alfa de CD.
1 K
2.2 Un transistor cuenta con el Beta de CD y la corriente LED
de base IB para su operación, β 200 e IB 60 μA. Calcule la corriente IC.
2.3 Calcule la máxima IC de un transistor; se proporcio-
5V
2N4392
nan la potencia Pd 0.25 Wy el voltaje VCE 9V.
VENT Señal de entrada
2.4 Se cuenta con un transistor con una Pd 0.5 W a temperatura ambiente, TA, de 25 ºC, y el factor de reducción es 3 mW/ºC. Calcule las características de potencia a 75 ºC.
2.5 Se requiere diseñar un conmutador con un transistor NPN de pequeña señal tipo el BC547 en configuración emisor común. Se cuenta con un voltaje VCC de 15 V y se requiere operar una carga RL de 45 mA. El hfe 100 y el voltaje VBB que activaría el transistor es un pulso de 3.3 V. Diseñe el circuito.
=`^liX)%*/ 2.9
En el circuito de la figura anterior se colocó una resistencia de 1.2 MΩ en serie con la terminal de la compuerta. ¿Es posible encender/apagar el LED con los voltajes antes seleccionados?
2.10
En un transistor BJT, describa cómo es el dopaje en las áreas correspondientes a su base, colector y emisor.
2.11
Defina la región activa y de corte de un transistor BJT.
2.12
¿Cuáles son las regiones de saturación y de ruptura de un transistor BJT?
2.13
¿Cómo se obtiene la ganancia de DC, denominada hfe, en un transistor BJT?
2.14
Defina al factor de reducción Pd de un transistor BJT.
2.15
Defina a qué se le llama un transistor FET asimétrico y su comparación con un transistor FET simétrico.
2.16
Describa a qué área se le denomina canal en un transistor FET.
2.17
Describa la región fuente-corriente en un transistor FET.
2.18
¿Por qué un FET es un dispositivo unipolar?
2.19
¿Cuál es la diferencia principal entre un transistor FET y un MOSFET?
VCC = +15 V ISAL
RL IENT
C
15 V
3.3 V VENT
VSAL
B E
=`^liX)%*. 2.6 Se cuenta con un transistor Darlington tipo TIP142, el cual tiene especificado una corriente IC 10 A, como valor absoluto permisible. Estime la máxima corriente que puede operar el transistor si no se cuenta con disipador de potencia.
2.7 Un transistor FET canal-N tiene una IDSS 15 mA y una VGS(corte) –5 V. Calcule la corriente ID cuando VGS –0.7 V.
2.8 El transistor FET canal-N es utilizado para encender/apagar un LED en el siguiente circuito. Especifique de la hoja de datos qué valores de voltaje se requieren para su control.
80
ELECTRÓNICA • MIJAREZ
3 El mágico
amplificador operacional
El amplificador operacional, abreviado OP AMP1 por sus siglas en inglés, es un circuito integrado que tiene dos terminales de entrada y una de salida. El OP AMP es uno de los bloques fundamentales en el diseño electrónico, con el cual se pueden realizar numerosas aplicaciones. El OP AMP puede ser configurado en una gran diversidad de formas, para llevar a cabo operaciones en sus terminales de entrada. ¡Esa es la razón por la que se le llama operacional! Estas operaciones incluyen ganancia positiva o negativa, filtrado, funciones de transferencia y comparación con otras señales. Puede sumar o restar múltiples señales, amplificar la diferencia entre señales de entrada, integrar o diferenciar señales con respecto al tiempo, entre otras. En conclusión, el OP AMP es uno de los CI con mayor potencial a disposición de los diseñadores. Por tanto, en este capítulo se explica el funcionamiento interno de este dispositivo, con el fin de continuar con la tónica de este libro y proveer un entendimiento intuitivo. Así pues, iniciamos su estudio con la exposición del concepto de retroalimentación y con la teoría detrás de este dispositivo; más adelante, también analizamos la etapa de entrada de estos CI, la cual está constituida por el amplificador diferencial, el cual resulta de gran importancia porque proporciona muchas de las características de CA y CD del OP AMP. Después, seleccionamos un OP AMP comercial para describir sus parámetros más importantes. Por último, considerando al 1
En este libro abreviaremos al amplificador operacional como OP AMP, que proviene de la palabra en inglés: operational amplifier, aunque existen traducciones al español que lo llaman AMP OP. La razón principal para el uso de esta abreviatura es su empleo generalizado en universidades y centros de trabajo.
81
3 El mágico amplificador operacional
OP AMP como caja negra o caja mágica, se introducen y analizan algunas de sus operaciones básicas. Sin más preludio, que inicie la magia. En este capítulo estudiamos:
X X X X X X X X X X X X X X
Concepto de retroalimentación. Teoría importante de los OP AMP. El amplificador diferencial. Análisis de CD/CA y ganancias del amplificador diferencial. El OP AMP y sus características principales. Circuitos básicos con OP AMP. Circuitos populares con OP AMP. Filtros activos. Convertidores de voltaje a corriente y de corriente a voltaje. Circuitos OP AMP con diodos. Circuitos comparadores. ADC y DAC las interfaces del mundo digital y analógico. Las misteriosas tierras. Consideraciones y recomendaciones.
CONCEPTO
DE RETROALIMENTACIÓN
En la actualidad, el concepto de retroalimentación es conocido ampliamente y utilizado en muchas disciplinas del conocimiento. En los sistemas de control, por ejemplo, la retroalimentación consiste en comparar la salida del sistema con la salida deseada, y hacer las correcciones correspondientes. El sistema puede ser casi cualquier cosa, por ejemplo, el proceso de control de temperatura en una habitación, la velocidad de un auto, el nivel de un líquido en un tanque, etcétera. En circuitos amplificadores, por lo general, la salida es un múltiplo de la señal de entrada, mientras que en los amplificadores retroalimentados, la entrada es comparada con una versión atenuada de la salida. La retroalimentación puede ser tanto negativa como positiva. La retroalimentación negativa adquiere importancia porque los amplificadores son normalmente no-lineales y generan distorsión. La retroalimentación negativa es el proceso de acoplar la salida del amplificador de tal manera que cancele parte de la entrada. Se puede pensar que esto únicamente tiene el efecto de reducir la ganancia del amplificador, lo cual no sería de utilidad.2 Lo anterior es cierto; sin embargo, aunque disminuye la ganancia, también mejora otras características, la principal es que libera de distorsión y de no-linealidad al amplificador, además de que proporciona una respuesta en frecuencia plana y provee una salida predecible. De hecho, conforme se incrementa la retroalimentación negativa, las características del amplificador se hacen menos dependientes del amplificador de lazo abierto (sin retroalimentación) y dependen solo de las propiedades de la red de retroalimentación. La retroalimentación positiva, por otro lado, es el principio de funcionamiento de los osciladores, y aunque se utiliza con frecuencia en algunas aplicaciones, tiene menos importancia que la retroalimentación negativa; incluso, esta puede llegar a ser un problema en ciertos circuitos. Habiendo hecho estos comentarios, enseguida analizamos la teoría primordial detrás del OP AMP, principalmente en configuración con retroalimentación negativa, tratando de proveer las bases para obtener una comprensión intuitiva de este misterioso componente.
2
En 1928, Harold S. Black registró una patente relacionada con la retroalimentación negativa, la cual no tuvo un éxito inmediato, encontrando como respuesta por parte del registro de patentes que este procedimiento era poco útil y hasta no muy inteligente. Por ese motivo, la patente fue otorgada nueve años después. Hoy sabemos el impacto que ha tenido y tiene la retroalimentación negativa en diversas áreas como la electrónica, las telecomunicaciones, el control, los dispositivos biomecánicos, etcétera.
82
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
TEORÍA
IMPORTANTE DE LOS
OP AMPS
El amplificador operacional (OP AMP) es el circuito integrado lineal más usado en el diseño electrónico. El OP AMP constituye el bloque de construcción analógico equivalente a las compuertas digitales que estudiamos en el siguiente capítulo. En el mundo digital actual parece ser muy común estudiar de manera rápida y superficial el tema de los OP AMP, proveyendo únicamente de fórmulas al estudiante o al interesado de estos temas, sin explicar la teoría o el propósito detrás de ellas. De esta manera, cuando el estudiante o ingeniero diseña por primera vez un circuito con OP AMP, el resultado es una confusión total, en especial cuando el circuito no funciona como se espera. Esta sección, por consiguiente, pretende proveer la teoría primordial de los OP AMP, con el objetivo de ayudar a comprender mejor su funcionamiento interno y adquirir una intuición educada con respecto a este dispositivo. Por definición, podemos decir que el OP AMP es un amplificador diferencial directamente acoplado y de alta ganancia. El acoplamiento directo significa que la salida de una etapa se conecta directamente a la entrada de la siguiente, sin usar capacitores o transformadores para aislar los voltajes de CD de cada etapa. El símbolo esquemático del OP AMP se muestra en la figura 3.1.
"
$
JXc`[X
=`^liX*%( JdYfcf\jhl\d}k`Zfle`m\ijXc[\cFG8DG% Los símbolos de las entradas () y ( ) no significan que una entrada tiene que mantenerse positiva con respecto a la otra, o cosas por el estilo; estos símbolos indican la fase relativa que tendrá la salida, la cual es importante para mantener negativa la retroalimentación negativa; por lo que usar los términos “no-inversora” e “inversora, en lugar de “positiva” y “negativa”, ayuda a evitar esta confusión. Las entradas del OP AMP presentan una alta impedancia, idealmente infinita, lo que significa que virtualmente no tienen ningún efecto sobre los circuitos que se conectan a estas. Por su parte, la salida del OP AMP tiene una impedancia muy baja, idealmente cero, y para muchos análisis es conveniente considerarla como si fuera una fuente de voltaje con resistencia muy baja. Lo anterior es muy importante, por lo que lo vemos posteriormente, cuando estudiamos las configuraciones del OP AMP. Por lo pronto, baste decir que al OP AMP se le representa con dos símbolos separados, como se muestra en la figura 3.2. M
"
MJLD8fM
MJ8C
=`^liX*%) I\gi\j\ekXZ`e`ek\ieX[\cFG8DG#Zfdgl\jkXgfi[fjjdYfcfjj\gXiX[fj% De la figura 3.2 podemos observar un bloque de suma y un bloque de amplificación.3 Del bloque de suma, a su vez, podemos notar una entrada positiva y una entrada negativa, como en el símbolo original del OP AMP. La entrada negativa se considera como el voltaje en ese punto multiplicado por 1. De esta manera, si tenemos 3 V en la entrada positiva y 4 V en la entrada negativa, la salida de ese bloque será 1 V. Así, la salida de este bloque es la suma de las dos entradas, con una de las entradas multiplicada por 1; esta también puede pensarse como la diferencia de las dos entradas, la cual puede representarse por la ecuación 3.1. VSUMA (V ) – (V –) 3
(3.1)
Los bloques de suma y ganancia, que conforman el OP AMP, le pueden resultar similares a los usados en sus clases de teoría de control; pero, en realidad son los mismos. La teoría de control se aplica perfectamente a los OP AMP.
grupo editorial patria®
83
3 El mágico amplificador operacional
Por otro lado, para el bloque de amplificación, la variable G representa la cantidad de amplificación que el OP AMP aplica al bloque de suma. A esta ganancia del OP AMP se le llama de lazo abierto y, por lo general, es muy alta; un valor típico sería 200 000. Para el ejemplo anterior, si consideramos que las entradas son 3 V y 4 V, respectivamente, y usamos la ecuación 3.1, aplicándole este valor típico de G, tenemos que: VSAL (3 – 4) r (200 000) –200 000 V Por supuesto que el voltaje de salida no llegará a los 200 000 V, a menos que los voltajes de las fuentes de alimentación del OP AMP sean de ese valor. Este ejemplo es un arreglo muy usado en los OP AMP: el circuito comparador, el cual tiene aplicaciones relacionadas con la conversión de señales analógicas a digitales, que vemos posteriormente. Ahora, regresando a la representación del OP AMP de la figura anterior, agregamos un bloque de retroalimentación, como se muestra en la figura 3.3. M
MJLD8f M
"
MJ8C
>
Æ
?
=`^liX*%* I\gi\j\ekXZ`e[\cFG8DGZfei\kifXc`d\ekXZ`ee\^Xk`mX% En la figura 3.3 lo primero que notamos es la salida que se conecta a la entrada negativa, a través de un bloque llamado H; por esta razón se le llama retroalimentación negativa. De la figura 3.3 también podemos observar que ahora tenemos dos ganancias: una de lazo abierto, G, y otra relacionada con la retroalimentación, llamada de lazo cerrado, H. Analizando el diagrama de la figura 3.3, se obtiene la siguiente ecuación de control básica: VSAL ((V )ENT r G ) (VSAL r G r H ) G VSAL V ENT r 1 G * H
(3.2)
Debido a que el valor de G es muy grande, el 1 del denominador en la ecuación 3.2 resulta insignificante, por tanto la ecuación se simplifica de la siguiente manera: 1 (3.3) H Este es el caso especial, ampliamente usado, en el cual asumimos que las entradas del OP AMP son iguales, pero se aplica únicamente cuando la retroalimentación es negativa. Es importante que cada vez que veamos el símbolo original del OP AMP recordemos que internamente se encuentra conformado por un bloque sumador y un bloque amplificador. Ahora, vamos a usar el símbolo original del OP AMP con retroalimentación negativa, como se muestra en la figura 3.4. VSAL VENT
"
JXc`[X
?
=`^liX*%+ JdYfcf\jhl\d}k`Zffi`^`eXc[\cFG8DGZfei\kifXc`d\ekXZ`ee\^Xk`mX%
84
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Cuando la ganancia de retroalimentación, de lazo cerrado, es unitaria, demuestra otro arreglo muy útil del OP AMP: el circuito seguidor de voltaje. Por tanto, si H 1, tenemos que: 1 VSAL VENT l VSAL VENT 1
(3.4)
Cualquier voltaje aplicado a la entrada positiva, aparecerá en la salida. Después, en este mismo capítulo, hablamos de este popular circuito y sus aplicaciones. Sin embargo, con el objetivo de obtener el entendimiento intuitivo de la retroalimentación negativa, usamos el OP AMP configurado como circuito seguidor de voltaje. Para esto, se asignan valores a las ganancias, G 200 000 y H 1; entonces, se asume que la entrada negativa (V ) es cero al inicio y, por tanto, se aplica una secuencia de voltajes a su entrada positiva, VENT, de 0 V, 2 V y 0.8 V, como se muestra en la tabla 3.1. Tiempo
G
H
VENT
V−
(VENT)−(V−)
VSAL
0
200 000
1
0
0
0
0
1
200 000
1
0
0
0
0
2
200 000
1
2
0
2
0 0 V >VSAT() > 1 V
3
200 000
1
2
1
1
1 1 V >VSAT() > 1.5 V
4
200 000
1
2
1.5
0.5
1.5 1.5 V >VSAT() > 1.8 V
5
200 000
1
2
1.8
0.2
1.8 1.8 V >VSAT() > 2.2 V
6
200 000
1
2
2.2
0.2
2.2 2.2 V >VSAT( ) > 1.9 V
7
200 000
1
2
1.9
0.1
1.9 1.9 V >VSAT() > 2.0 V
8
200 000
9
200 000
10
1
0
2
2
0
2
200 000
2
0
2
11
200 000
2
0
2
12
200 000
1.2
2
1
2
2
0.8
2
2.0 V >VSAT( ) > 1.5 V 13
200 000
1
0.8
1.5
0.7
1.5 1.5 V >VSAT( ) > 1 V (Continúa)
KXYcX*%( MXcfi\jXj`^eX[fj[\^XeXeZ`Xj#mfckXa\j[\\ekiX[XpmfckXa\j[\jXc`[XgXiXleFG8DGZfei\kifXc`d\ekXZ`ee\^Xk`mX# Zfe]`^liX[fZfdfj\^l`[fi[\mfckXa\%
grupo editorial patria®
85
3 El mágico amplificador operacional
(Continuación)
Tiempo
G
H
VENT
V−
(VENT)−(V−)
VSAL
14
200 000
1
0.8
1
0.2
1 1.5 V >VSAT( ) > 0.7 V
15
200 000
1
0.8
0.7
0.1
0.7 0.7 V >VSAT() > 0.8 V
16
200 000
0.8
0.8
0
0.8
17
200 000
0.8
0.8
0
0.8
18
200 000
0.8
0.8
0
0.8
19
200 000
0.8
0.8
0
0.8
KXYcX*%( MXcfi\jXj`^eX[fj[\^XeXeZ`Xj#mfckXa\j[\\ekiX[XpmfckXa\j[\jXc`[XgXiXleFG8DGZfei\kifXc`d\ekXZ`ee\^Xk`mX# Zfe]`^liX[fZfdfj\^l`[fi[\mfckXa\%
En un inicio, el voltaje de entrada es 0 V, y en consecuencia asumimos una salida de 0 V. Ahora, se aplica un voltaje VENT 2 V a la entrada V, y se asume V 0 V. La salida del bloque de suma es de 2 V, resultado de la diferencia entre VENT y V , como se ilustra en el tiempo 2 de la tabla 3.1; de esta manera, el voltaje de salida del bloque de ganancia, G, se encamina hacia el voltaje máximo positivo del amplificador (VSAT). Pero, ¿qué sucede con la entrada negativa (V ) cuando la salida (VSAL) se aproxima, por ejemplo, a 1 V? ¡Correcto! La entrada negativa también se aproxima a 1 V. Por tanto, la salida del bloque de suma se va haciendo cada vez más pequeña, como se aprecia en el tiempo 3, de la tabla. Si la entrada negativa (V ) se hace mayor de 2 V, como ocurre en el tiempo 6, V 2.2 V, entonces la entrada al bloque de ganancia, G, se hará negativa; en consecuencia, obligará a la salida a ir en la dirección negativa. Cuando el voltaje de salida se encamina de 2.2 V hacia al voltaje negativo máximo (VSAT ), este voltaje empieza a disminuir su valor. Entonces, si por ejemplo disminuye a 1.9 V, este valor proporcionará una salida positiva al bloque sumador de 0.1 V, como se observa en el tiempo 7 de la tabla 3.1, que al multiplicarse por la ganancia, G, hace que la salida se dirija otra vez hacia el voltaje máximo positivo del amplificador (VSAT). ¿Cuándo se detiene este proceso? Se detendrá cuando la entrada (V ) sea igual a la entrada VENT (V). En este caso, como la ganancia de lazo cerrado H 1, el voltaje de salida será de 2 V. Si el voltaje de entrada, VENT, cambia a 0.8 V, el proceso se repetirá, como lo ilustra la figura 3.5. )%, )
MfckXa\M
(%, M
(
MJ8C '%, ' '
,
('
(,
)'
Æ'%, K`\dgfdj
=`^liX*%, MfckXa\j[\\ekiX[Xp[\jXc`[X[\leFG8DZfei\kifXc`d\ekXZ`ee\^Xk`mX#Zfe^XeXeZ`X[\cXqfZ\iiX[f?4(% En la figura 3.5 también se aprecia que el voltaje de salida sigue al voltaje de entrada. ¿Qué tan rápido alcanzará el voltaje de salida al voltaje de entrada?, esto dependerá del tipo de amplificador y, más específicamente, de los componentes que lo conforman.
86
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
¿Por qué es tan importante la retroalimentación negativa? Recordemos que el objetivo de crear los amplificadores operacionales fue realizar circuitos amplificadores que no fueran dif íciles de construir.4 Así, se concibió la idea de que debía haber una forma más fácil de realizar un circuito amplificador. Ahora, vamos a analizar otra vez la ecuación básica de control: VSAL VENT r
G 1 l VSAL VENT 1 G * H H
Hemos visto que el voltaje de entrada, VENT, depende del valor de H; por ejemplo, si H 1/100, entonces tendremos una amplificación de la entrada de 100. ¤ ³ ¥ 1 ´ VSAL VENT r ¥ 1 ´ l VSAL VENT r 100 ¥ 100 ´ ¦ µ
(3.5)
La pregunta sería, entonces, cómo llevamos a cabo esto. Si recordamos el comportamiento del humilde circuito divisor de voltaje, que vimos en el capítulo 0, veremos que este circuito sería muy útil aquí, ya que se desea que H sea equivalente a dividir entre 100. Entonces, vamos a insertar un circuito divisor de voltaje en lugar de H, como se muestra en la figura 3.6.
"
MJ8C
II
=`^liX*%- ;`m`jfi[\mfckXa\ljX[fZfdfi\kifXc`d\ekXZ`ee\^Xk`mX% En la figura 3.6 se observa que la entrada del divisor de voltaje proviene de la salida del OP AMP, VSAL, y que la salida del divisor de voltaje va hacia la entrada inversora del OP AMP. ¿El divisor de voltaje se verá afectado por la entrada inversora del OP AMP? Esto es una de las confusiones de muchos estudiantes al tratar de analizar circuitos con OP AMP. Por supuesto que no, ya que la entrada presenta una impedancia muy alta. Entonces, si V no afecta en el divisor de voltaje, y VSAL se considera como una fuente de voltaje, vamos a calcular la salida del divisor de voltaje: V V
SAL
RENT RENT RRETRO
l
V RENT H VSAL RENT RRETRO
(3.6)
Sin embargo, para nuestra retroalimentación requerimos 1/H; por tanto: 1 RENT RRETRO 1 RRETRO l 1 H RENT H RENT
4
(3.7)
Hasta la invención de los OP AMP, los circuitos de amplificación estaban limitados a usar transistores. El problema con los transistores usados como amplificadores, y la razón principal por la cual no los analizamos de esa manera en el capítulo 2, es que son dispositivos operados con corriente, por lo que siempre afectan la señal del circuito que el diseñador desea amplificar, cargando el circuito. Además, debido a la tolerancia de fabricación de los transistores, la ganancia de los transistores podía variar significativamente. En definitiva, diseñar circuitos amplificadores era un proceso tedioso que involucraba mucho trabajo de prueba y error. Lo que se quería era un circuito que requiriera pocos componentes externos, al cual se le aplicara una señal y esta se pudiera multiplicar por un valor deseado. En conclusión, que la operación de amplificación (OP AMP) fuera sencilla.
grupo editorial patria®
87
3 El mágico amplificador operacional
Considerando ahora que tenemos el caso especial de retroalimentación negativa, podemos asumir que los voltajes de la terminal no inversora, V, y la terminal inversora, V , son iguales (V V ). Como ya aprendimos, lo anterior se debe a que la retroalimentación negativa hace que el voltaje de salida intente alcanzar ese estado. Entonces, si a la entrada no-inversora, V, se le conecta el voltaje de entrada, VENT, que queremos amplificar, tenemos que VENT V , y la ecuación 3.6 puede escribirse como: VENT V
SAL
RENT RENT RRETRO
l
VENT RENT VSAL RENT RRETRO
(3.8)
Pero, lo que en realidad nos interesa saber es el efecto de este circuito en VENT para obtener VSAL. En otras palabras, lo que nos incumbe conocer es VSAL cuando se aplica VENT. Por tanto, VSAL V
ENT
RENT RRETRO RENT
l
VSAL RRETRO 1 VENT RENT
(3.9)
Se puede observar, de la ecuación 3.9, que la ganancia de lazo cerrado de este circuito, 1/H, es controlada por un par de resistencias. Obviamente, podemos observar que el cálculo de estas resistencias para producir la ganancia del circuito es mucho más sencillo que utilizar circuitos de amplificación basados en transistores discretos. Ahora que hemos visto el concepto de retroalimentación negativa y la teoría que soporta los OP AMP, nos disponemos a analizar una de las etapas internas de los OP AMP que provee muchas de sus características eléctricas de CD y CA: la etapa de entrada, compuesta por los amplificadores diferenciales.
AMPLIFICADORES
DIFERENCIALES
La etapa de entrada estándar de un OP AMP se llama par diferencial, o amplificador diferencial, y consiste de un par de transistores NPN o PNP.5 La forma más común de un amplificador diferencial posee dos entradas y una salida, como se muestra en la figura 3.7 a). "M:: "M:: I: I:
MJ8C
MJ8C
M(
H(
H)
Ef `em\ijfiX
I<
M::
M(
@em\ijfiX
H(
H) M)4'M
Ef `em\ijfiX
I< M::
X
Y
=`^liX*%. 8dgc`]`ZX[fi[`]\i\eZ`Xc%X :`iZl`kfZfek\id`eXc\j`em\ijfiXpef$`em\ijfiX%Y K\id`eXc`em\ijfiXXk\ii`qX[X# j\XcXgc`ZX[X\ek\id`eXcef$`em\ijfiX#M(pMJ8C#\e]Xj\% 5
A los OP AMP que utilizan transistores JFET en la construcción del amplificador diferencial de entrada y transistores BJT en las otras etapas, se les llama OP AMP bi-FET.
88
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
La base de Q1 se llama entrada no-inversora y la base de Q2 es la entrada inversora; la salida se toma del colector de Q2. En este ejemplo, al voltaje aplicado a la entrada no-inversora se le designa V1, y al aplicado a la entrada inversora se le llama V2. El voltaje de salida para el amplificador diferencial se obtiene con la ecuación 3.10:
VSAL Ad (V1 V2 )
(3.10)
Donde Ad representa la ganancia de voltaje diferencial. De forma cualitativa, podemos apreciar que si las bases de Q1 y Q2 son aterrizadas, el voltaje de salida será el voltaje del colector VC. Si la base de Q2 se aterriza y se aplica una señal, V1, en la base de Q1, como se muestra en la figura 3.7 b), el voltaje de salida VSAL y el voltaje de entrada, V1, estarán en fase. Por otro lado, la figura 3.8 a) muestra el caso cuando Q1 se aterriza y se aplica una señal, V2, en la entrada de Q2. Para esta condición, las señales de salida VSAL y de entrada V2 se encuentran fuera de fase 180°. Por último, la figura 3.8 b) muestra la condición en la cual se aplica una señal a ambas entradas simultáneamente. En este caso en particular, las señales aplicadas, V1 y V2, se encuentran desfasadas 180°; en esta condición, podemos observar que el voltaje de salida se encuentra en fase con V1. "M::
"M::
I:
I:
MJ8C FM
MJ8C
@em\ijfiX H(
H)
M(
M)
H(
H)
I<
M)
I<
M::
M::
X
Y
=`^liX*%/ 8dgc`]`ZX[fi[`]\i\eZ`Xc%X K\id`eXcef$`em\ijfiXXk\ii`qX[X#j\XcXgc`ZX[X\ek\id`eXc`em\ijfiX#M)pMJ8C]l\iX[\]Xj\(/'% Y J\Xc\jXgc`ZX[XjXXdYXjk\id`eXc\j[\\ekiX[X%
ANÁLISIS
DE
CD/CA
Y GANANCIAS DEL AMPLIFICADOR DIFERENCIAL
Análisis de CD Para realizar el análisis de CD del par diferencial, vamos a utilizar el circuito mostrado en la figura 3.9. La figura 3.9 a) muestra el amplificador diferencial con ambas bases aterrizadas a través de las resistencias RB1 y RB2 . Cada base debe tener una trayectoria de retorno de CD a tierra; de otro modo, los transistores estarían con sus bases abiertas, dejando a los transistores en estado de corte. En condiciones ideales, Q1 y Q2 son idénticos o perfectamente igualados, condición que consideraremos para el análisis de este circuito. La corriente de CD que pasa a través del emisor, RE, con frecuencia se llama corriente de cola y, por lo general, se denomina IT . Tomando en cuenta que Q1 y Q2 están perfectamente igualados, la corriente IT se divide, en igual proporción, entre el emisor de cada transistor. La figura 3.9 b) muestra el circuito equivalente donde cada transistor ilustra sendas resistencias de emisor con valor 2RE. La corriente IE se calcula usando la ecuación 3.11, y considerando que el voltaje en la base, VB , de cada transistor es muy pequeño o aproximadamente cero. IT
VEE VEE RE
grupo editorial patria®
(3.11)
89
3 El mágico amplificador operacional
"M::4(,M
"M::4(,M
I:4('bΩ
I:4('bΩ
β(4β)4),' M:4.%/,M
M:4.%/,M
H(
I9(4(bΩ
'%.M
H)
I9)4(bΩ
H( I9(4(bΩ
I:4('bΩ
H) )I<4)'bΩ
)I<4 )'bΩ
M<<4(,M X M<<4(,M Y
=`^liX*%0 8e}c`j`j[\:;[\cXdgc`]`ZX[fi[`]\i\eZ`Xc%X 8dYXj\ekiX[XjXk\ii`qX[XjXkiXmj[\I9(pI9) % Y :`iZl`kf\hl`mXc\ek\#dfjkiXe[fI <Zfdf[fji\j`jk\eZ`Xj`e[\g\e[`\ek\j[\mXcfi)I< %
Donde VBE es igual a 0.7 V en las terminales del emisor, como se muestra en la figura 3.9 a). Por tanto, la corriente IT se calcula usando la ecuación 3.11. IT
VEE VEE 15 0.7 1.43 mA 10 k Ω RE
Como la corriente IT 2IE, donde IE es la corriente de emisor en cada transistor, cada transistor tendrá una corriente IE IT/2, IE 1.43 mA/2 715 μA. Aunque, la corriente IE también puede obtenerse usando la ecuación 3.12: IE
VEE VEE 2 RE
(3.12)
Cualquiera de los dos procedimientos produce el mismo resultado. Por otro lado, el voltaje de colector de CD puede obtenerse usando la ecuación 3.13: VC VCC I C RC Si asumimos que IC
(3.13)
IE, podemos obtener el valor de VC usando la ecuación 3.13: VC 15 V – (715 μA r 10 kΩ) 15 V – 7.15 V 7.85 V
Este voltaje de VC se obtiene cuando las bases de ambos transistores son aterrizadas y se asume que los transistores están perfectamente igualados. Para el cálculo de IE, los voltajes de base VB1 y VB2 se asumieron con un valor cercano a cero. Estos valores de voltaje se pueden corroborar asumiendo una ganancia de CD para ambos transistores, β1 β2 450, por lo que IB ICβ 715 μA450 1.58 μA. Si usamos los valores de RB1 RB2 1 kΩ, podemos calcular los voltajes de base de la siguiente manera: VB1 VB2 IE r RE 1.58 μA r 1 kΩ 1.58 mV Debido a que este valor es muy pequeño, normalmente se ignora en los cálculos de IE.
90
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Análisis de CA Para realizar el análisis de CA del par diferencial, vamos a utilizar la figura 3.10. La figura 3.10 a) muestra una señal de entrada de CA, V1, aplicada a la base de Q1, mientras Q2 se aterriza. La figura 3.10 b) ilustra el mismo circuito, pero acomodado de tal forma que se permite apreciar una configuración particular para cada transistor. En este caso, Q1 actúa como emisor seguidor y Q2 como amplificador de base común. Debido a que ningún transistor tiene inversión de fase, la señal de salida, VSAL , se encuentra en fase con la señal de entrada, V1. Esta es la razón por la cual a la terminal de la base de Q1 se le llama terminal no-inversora. "M::4(,M
"M::4(,M
I:4('bΩ
I:4('bΩ MJ8C
MJ8C
M(4('dM
,dM
H(
H)
H(
H) M(4('dM
I<4('bΩ
I<4('bΩ
M::4(,M
M::
X
Y
=`^liX*%(' 8e}c`j`j[\:8[\cXdgc`]`ZX[fi[`]\i\eZ`Xc%X :`iZl`kffi`^`eXc%Y :`iZl`kfi\[`YlaX[fgXiXXgi\Z`XicXZfe]`^liXZ`e[\H(# Zfdfj\^l`[fi[\mfckXa\#pH)#ZfdfXdgc`]`ZX[fi[\YXj\Zfde%
Con el objetivo de visualizar el comportamiento de CA del circuito de la figura 3.10 a), ahora vamos a hacer uso de un circuito equivalente de CA de un transistor, el cual está compuesto por una resistencia de CA, denominada re, de la unión emisor-base, y por una fuente de corriente correspondiente a la unión colector-base. El valor típico de la resistencia de CA,6re, es de 25 mV/IE. La figura 3.11 ilustra este circuito equivalente del transistor.7 Con base en el circuito equivalente de CA del transistor, enseguida llevamos a cabo el circuito equivalente de CA para el amplificador diferencial, como se muestra en la figura 3.12. De este circuito podemos notar que para señales de CA, las fuentes de alimentación se aterrizan y que re1 y re2 funcionan como un divisor de voltaje para la entrada, V1. Asumiendo que Q1 y Q2 son idénticos, la corriente IE1 IE2 , por lo que re1 re2 . Además, podemos observar que re2 se encuentra en paralelo con RE; pero como RE>>re2 , entonces podemos ignorar el efecto de RE en este circuito, lo cual nos lleva al circuito equivalente mostrado en la figura 3.12 b), donde se omite RE. En la figura 3.12 b) es posible observar que el voltaje de salida es iCRC , y que el voltaje de entrada está dado por 2iC re. Por tanto, la ganancia Ad está dada por la ecuación 3.14: Ad
VSAL iC RC RC VENT 2iC re 2re
(3.14)
Un análisis similar se obtiene cuando se aterriza la señal no-inversora y se aplica señal a la entrada inversora. La ecuación 3.15 muestra cómo se obtiene la ganancia Ad en esta condición: RC Ad (3.15) 2re En esta ecuación, el signo negativo ( ) indica que la señal de salida invierte la fase 180°. 6
7
La derivación del valor de re es larga e involucra el empleo de cálculo, que va más allá del alcance de este libro. En la práctica, el valor de re va de 25 mV/IE a 50 mV/IE . Adicionalmente al circuito equivalente del transistor mostrado en la figura 3.5, existen otros circuitos equivalentes más exactos que incluyen la resistencia interna de baserb, y la resistencia interna de la fuente de corriente de colector, rc. Estos modelos se usan cuando se requieren respuestas muy precisas.
grupo editorial patria®
91
3 El mágico amplificador operacional
"M::
I: :fcc\Zkfik\id`eXc: 9Xj\k\id`eXc 9
i:
i:i\gi\j\ekjk_\XZ i\j`jk\eZ\f]k_\\d`kk\i [`f[\
=`^liX*%(( :`iZl`kf\hl`mXc\ek\[\:8gXiXlekiXej`jkfi#\cZlXcdl\jkiXcXi\j`jk\eZ`X[\:8#[\efd`eX[Xi\#gXiXle`e\d`jfi$YXj\# pleX]l\ek\[\Zfii`\ek\Zfii\jgfe[`\ek\XcXle`eYXj\$Zfc\Zkfi%
M::
I:4('bΩ
@<(
I:4('bΩ
@<)
MJ8C
MJ8C
,dM M(4 ('dM
,dM M(4 ('dM
I<
I<
X
Y
=`^liX*%() 8e}c`j`j[\:8[\cXdgc`]`ZX[fi[`]\i\eZ`Xc%X :`iZl`kf\hl`mXc\ek\[\:8\e\chl\j\dl\jkiXZdfM(j\[`m`[\\eki\i\(pi\) % Y :`iZl`kf\hl`mXc\ek\[\:8ZfeI<\oZcl`[X#pXhl\)I<i\) %
Ganancia de voltaje diferencial, A d Cuando los voltajes V1 y V2 se aplican simultáneamente, el voltaje de salida se encuentra determinado por la ecuación 3.16: VSAL
RC (V1 V2 ) 2re
Donde RC2re es la ganancia de voltaje diferencial, Ad. Si V1 y V2 son iguales, esto es V1 V2 0, el voltaje de salida es idealmente de 7.85 V.
92
ELECTRÓNICA • MIJAREZ
(3.16)
3 El mágico amplificador operacional
Ganancia de voltaje de modo común, ACM La ganancia de modo común, ACM , en un amplificador diferencial asume que las señales aplicadas a cada base de los transistores de entrada son exactamente iguales tanto en fase como en amplitud, de ahí su nombre de entrada de modo común. Para obtener la ganancia ACM , vamos a utilizar el circuito de la figura 3.13 a), el cual muestra un amplificador diferencial con señales de modo común aplicadas a sus entradas. Dado que las corrientes de emisor de CD son iguales, RE puede dividirse en dos resistencias por separado, cada una de valor 2RE, como se muestra en la figura 3.13 b). "M::4(,M
"M::4(,M
I:4('bΩ
I:4('bΩ
MJ8C
M
H)
H(
M
M
H(
H) )I<4)'bΩ
I<4('bΩ
M<:4(,M
)I<4 )'bΩ
M
M::4(,M
X
Y
I:4('bΩ @
MJ8C
)I<4)'bΩ
)I<4 )'bΩ
Z
=`^liX*%(* 8dgc`]`ZX[fi[`]\i\eZ`XcZfeleX\ekiX[X[\df[fZfde%X :`iZl`kf%Y :`iZl`kf\hl`mXc\ek\gXiX:;%Z :`iZl`kf\hl`mXc\ek\gXiX:8% En tanto, el circuito equivalente para CA se ilustra en la figura 3.13 c). De acuerdo con este circuito, el voltaje de salida es igual a VSAL iC RC; mientras que el voltaje de entrada es igual a VENT(CM) iC(re 2RE). Por tanto, la ganancia de modo común, ACM , se obtiene por la ecuación 3.17: ACM
iC RC RC iC (re 2 RE ) (re 2 RE )
(3.17)
En la mayoría de los casos, re<
RC 2 RE
(3.18)
Razón de rechazo de modo común (CMRR) Otro parámetro importante de los amplificadores diferenciales es la Razón de Rechazo de Modo Común (CMRR, por sus siglas en inglés). La CMRR se define como la razón entre la ganancia de modo diferencial, Ad, y la ganancia de voltaje de modo común, ACM, tal y como se indica en la ecuación 3.19:
grupo editorial patria®
93
3 El mágico amplificador operacional
CMRR
Ad ACM
(3.19)
Entre más alto es el valor de la CMRR, mejor es el amplificador diferencial. Una forma más frecuente de especificar la CMRR es en decibeles: CMRR 20log Ad ACM
(3.20)
Como ejemplo del cálculo de parámetros importantes del amplificador diferencial, vamos a utilizar el circuito de la figura 3.10 a), el cual tiene como entrada una señal de voltaje CA de 10 mVPP . Se requiere calcular la ganancia de voltaje de modo diferencial, Ad , el voltaje de CA de salida, la CMRR en decibeles y la ganancia de voltaje de modo común, ACM . Para ello, primero calculamos el valor de la resistencia interna de emisor, re. Puesto que previamente obtuvimos el valor de IE 715 μA, y sabemos la relación que esta mantiene con IE , tenemos que: re
25 mV 25 mV 35 Ω IE 715 μA
Una vez calculado el valor de re, podemos obtener Ad : Ad
RC 10 kΩ 142.85 Ω 2re 70 Ω
Con el valor de la ganancia, ahora podemos calcular el voltaje de salida de CA: VSAL Ad r VENT 142.85 r 10 mVPP 1.42 VPP Para obtener la CMRR, requerimos la Ad, que previamente calculamos, y la ACM. Por tanto, primero debemos calcular la ACM, la cual se obtiene usando la ecuación 3.18: ACM
RC 10 k7 0.5 2 RE 20 k7
Una vez que se tiene el valor de ACM y el valor de Ad , podemos calcular la CMRR usando la ecuación 3.20: CMRR 20log Ad 85 20log142 .5 20log(285.7) 49.1 dB ACM 0 De esta forma, un valor de 49.1 dB significa que la salida correspondiente a la señal de entrada diferencial es 285.7 veces mayor que la salida debida a la señal de entrada de modo común. Entonces, como mencionamos antes, entre más alto es el valor de la CMRR mejor es el amplificador diferencial. Esto es importante porque el ruido, que por lo general es común a ambas entradas y no deseado, será amplificado mucho menos que las señales que queremos amplificar. Ahora que hemos estudiado los conceptos generales de la retroalimentación, la teoría en que se sustentan los OP AMP y los rasgos distintivos y parámetros importantes de los amplificadores diferenciales, procederemos a ver al amplificador operacional y sus características principales.
EL
AMPLIFICADOR OPERACIONAL Y SUS CARACTERÍSTICAS PRINCIPALES
En la actualidad existen, literalmente, cientos de amplificadores operacionales disponibles en el mercado, con desempeño y características eléctricas variadas.8 Uno de los primeros OP AMP que utilicé al salir de la universidad, 8
Robert Widlar (1937-1991) es considerado el primer diseñador del OP AMP monolítico en estado sólido. Widlar propuso que los CI no fueran diseñados como circuitos convencionales, usando componentes discretos. Para eso, desarrolló una metodología para hacer resistencias con transistores, que culminó con el primer CI lineal en 1963, denominado uA702, y fabricado por Fairchild Semiconductors. A pesar de ciertas
94
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
originalmente introducido por National Semiconductors, es el LF411. El LF411 es un OP AMP muy completo que he utilizado como “caballito de batalla”; sin embargo, desde hace varias décadas el OP AMP de entrada BJT, denominado 741, se ha convertido en un estándar para la industria. El 741 es elaborado por diferentes fabricantes, siendo los números de parte más populares: el AD741, el LM741, el NE741 y el uA741. Todos estos OP AMP se consideran equivalentes, ya que sus especificaciones son casi idénticas. Por tal razón, en esta sección adoptaremos el 741 como nuestro OP AMP estándar, además de que lo recomendamos como un buen punto de inicio para sus diseños; sin embargo, cuando sea necesario haremos comparaciones de desempeño con el OP AMP 411 de entrada FET. El OP AMP 741, como muchos otros OP AMPs, está contenido en un popular CI de 8 terminales, conocido como mini DIP (Dual In-Line Package). La figura 3.14 muestra la distribución de pines y el empaquetado DIP del OP AMP 741. (ó
m`jkXjlg\i`fi
/
,)
&?
(
69
*ó Ç /
)
.
*
-
+
,
=`^liX*%(+
;*
H.
HH/ I)
I*
;+
±M<<::
;,
Md
M<<
" Æ
H0 ::
H(
"M::
H) H+ H*
;(
H, I( ÆM::
=`^liX*%(, :fdgfj`Z`e`ek\ieX[\cFG8DG.+(% En la figura 3.15 podemos reconocer a nuestro conocido amplificador diferencial; de este circuito, podemos observar que las bases de Q1 y Q2 se conectan a las terminales del CI, que sirven como entradas del OP AMP. Este circuito imperfecciones, este OP AMP fue un éxito comercial y se vendía por aproximadamente 300 dólares. En 1966, Widlar se unió a la compañía NationalSemiconductors, donde tuvo un trabajo muy exitoso. Continuó haciendo mejoras al OP AMP, como mejor ganancia, mayor ancho de banda, menor corriente de entrada, etc. El éxito de los OP AMP, asociado con una alta demanda en la producción de los mismos, causó que para 1969 los OP AMP se vendieran por alrededor de 2 dólares. En la actualidad, además de tener un uso muy extendido, los OP AMP son muy costeables, con precios de ventas menores a 1 dólar.
grupo editorial patria®
95
3 El mágico amplificador operacional
se usa porque amplifica la diferencia de voltaje entre sus dos entradas. La salida del OP AMP es tomada de los emisores correspondientes a los transistores Q8 y Q9. Estos transistores se conectan en una configuración llamada push-pull, en la cual Q8 conduce durante el semi-ciclo positivo de la forma de onda de salida, y Q9 conduce durante el semi-ciclo negativo. La configuración push-pull le permite al OP AMP tener una impedancia de salida muy baja, lo cual es análogo a tener una fuente de voltaje con una resistencia interna muy baja. Es importante hacer notar que el OP AMP es directamente acoplado. Esto significa que la salida de una etapa se conecta de forma directa a la entrada de la siguiente, sin usar capacitores o transformadores para aislar los voltajes de CD de cada etapa. Por esta razón, el OP AMP puede amplificar señales de CD. El capacitor CC, usado entre etapas, se denomina de compensación, y tiene un valor aproximado de 30 pF. Este capacitor afecta la operación del OP AMP a altas frecuencias, pero se usa para prevenir oscilaciones no deseadas. El capacitor CC también produce una distorsión en el SlewRate, pero este tema lo discutimos cuando analizamos las características más importantes de los OP AMP. Antes de analizar las características reales del OP AMP, a continuación listamos las características ideales de su desempeño: 1. 2. 3. 4. 5. 6. 7.
Ganancia de voltaje de lazo abierto AVOL infinita. VSAL 0, cuando ambas entradas están al mismo voltaje (voltaje de offset cero). Impedancia de entrada, ZENT infinita. Impedancia de salida, de lazo abierto, ZSAL cero. Respuesta a la frecuencia uniforme y ancho de banda desde CD hasta infinito. La salida puede cambiar instantáneamente (slew rate infinito). Costo tiende a cero.
Todas estas características ideales son independientes de los cambios en la temperatura y en la fuente de alimentación. La figura 3.16 modela las características ideales del OP AMP. "M:: Æ
Q
8MFC
M[
QJ8C "
M(
ÆM::
MJ8C
M)
=`^liX*%(- Df[\cf[\cFG8DG`[\Xc% Los OP AMP reales no alcanzan el desempeño ideal; no obstante, parten de estas características en varias formas, como vemos a continuación.
Ganancia de voltaje de lazo abierto, AVOL La ganancia de voltaje de lazo abierto, AVOL , de un OP AMP es la ganancia de voltaje cuando no existe retroalimentación negativa. Esta ganancia se encuentra dividiendo el voltaje de salida, VSAL , entre el voltaje de entrada diferencial, VED , como lo muestra la ecuación 3.21. AVOL
VSAL VED
(3.21)
Un valor típico de AVOL para el OP AMP 741 es de 200 000, como se ilustra en la figura 3.17 a). Es importante hacer notar que únicamente el voltaje de entrada diferencial, VED V1 V2 , es amplificado, y no los valores individuales de V1 y V2 .
96
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
"M:: M( M<;4M(ÆM)
M)
"(,M M(
" 8MFC4)''''' Æ
MJ8C4M<;8MFC
± M<;4,'μM
M)
" 8MFC4)''''' Æ
MJ8C4±('M
Æ(,M
ÆM:: X
Y "(,M
"(,M
M(4(M " " M<;4,'μM M 4000%0,μM 8MFC4)''''' ) Æ Æ
" MJ8C4"('M
M(4000%0,μM
M<;4,'μM
M)4(M
8MFC4)'''''
MJ8C4Æ('M
Æ
Æ(,M
Æ(,M
Z
[
=`^liX*%(. FG8DGZfe]`^liX[fgXiXXdgc`]`ZXilemXcfig\hl\f\ejlj\ekiX[Xj#M<;#gfilemXcfidlpXckf[\^XeXeZ`X8MFC % Como ejemplo numérico, asumimos una entrada pequeña de VED ±5 μV y AVOL 200 000. Por tanto, el voltaje de salida estará definido por la ecuación 3.22: VSAL AVOL r VED 200 000 r o 0.5 μV o10 V
(3.22)
El VSAL ± 10 V, como lo podemos apreciar en la figura 3.17 b). VSAL es positivo cuando la entrada no inversora () es positiva con respecto a la entrada inversora ( ), y VSAL es negativo cuando la entrada no inversora () es negativa con respecto a la entrada inversora ( ). Si ahora asumimos que V1 1 V y V2 999.95 μV, como se muestra en la figura 3.17 c), el VSAL se puede calcular, simplemente, multiplicando el VED por AVOL. Entonces, primero obtenemos VED V1 – V2 1 000 μV – 999.95 μV 50 μV, y posteriormente calculamos VSAL usando la ecuación 3.22: VSAL AVOL r VED 200 000 r 0.5 μV 10 V En esta ecuación podemos observar que V1 es mayor que V2, por tal razón el voltaje de salida es positivo. En la figura 3.17 d) invertimos los valores en V1 y V2 . Aquí V1 es negativo con respecto a V2 . Entonces, VED V1 – V2 999.95 μV – 1 000 μV 50 μV. Para obtener el VSAL usamos la misma ecuación anterior. VSAL AVOL r VED 200 000 r 0.5 μV 10 V Los límites máximos positivo y negativo del voltaje de salida, VSAL, se denominan voltajes de saturación positiva, VSAT, y saturación negativa, –VSAT, respectivamente. Por lo general, los voltajes de saturación tienen un valor de 2 V menor que los voltajes de alimentación, ±VCC. Si, por ejemplo, los voltajes de alimentación son ±VCC ±15 V, los voltajes de saturación, ±VSAT, serán ±13 V. Por tanto, el voltaje de entrada diferencial, VED , requerido para obtener los voltajes de saturación se puede obtener de la siguiente forma: oVED
oVSAT o13 V o 65 μV AVOL 200 000
Un punto importante de mencionar es que si el VSAL se encuentra entre ±VSAT , significa que el voltaje de entrada diferencial, VED , es muy pequeño y para fines prácticos se considera que es cero volts.9 9
De manera práctica, es dif ícil medir en el laboratorio voltajes menores a los 50 μV, debido a los ruidos inducidos.
grupo editorial patria®
97
3 El mágico amplificador operacional
Corrientes de polarización de las entradas Las terminales de entrada del OP AMP requieren una pequeña corriente llamada corriente de polarización, IB. De hecho, son las bases de los transistores Q1 y Q2 las que sirven como estas entradas y deben ser polarizadas correctamente antes de intentar amplificar cualquier señal de voltaje de entrada. Para esto, Q1 y Q2 deben tener una trayectoria externa de CD de regreso a la tierra de la fuente de alimentación. La figura 3.18 muestra la dirección del flujo de corriente de las terminales inversora y no-inversora cuando son aterrizadas. "M:: @9Æ @9"
Æ .+(
MJ8C
" ÆM::
=`^liX*%(/ :fii`\ek\j[\gfcXi`qXZ`e[\\ekiX[X[\cFG8DG% En la figura 3.18 se designa como IB– a la corriente que fluye de la terminal inversora y como IB a la corriente que fluye de la terminal no-inversora. Para el OP AMP 741, estas corrientes son muy pequeñas, del orden de los nanoamperes, generalmente 80 r 10–9 A, o menos, a temperatura ambiente.10 Los fabricantes especifican la corriente IB como el promedio de las dos corrientes, IB– e IB, como se muestra en la ecuación 3.23: IB
/ I B+ / / I B– / 2
(3.23)
Donde el símbolo / / significa únicamente la magnitud, sin considerar la polaridad. Los valores de IB e IB podrían ser diferentes, ya que es muy dif ícil tener dos transistores idénticos. A la diferencia entre estas dos corrientes se le denomina, elegantemente, como corriente de offset, IOS, la cual puede expresarse por la ecuación 3.24: I OS / I B / / I B /
(3.24)
Para el OP AMP 741, la corriente IOS es típicamente de 20 μA. Los valores de IB e IB son tan pequeños que en muchos análisis de la operación de los circuitos se consideran cero. No obstante, en aplicaciones de alta precisión, los valores de estas corrientes tienen que tomarse en consideración. La importancia de las corrientes IB radica en que estas causan una caída de voltaje en las resistencias de la malla de retroalimentación, la malla de polarización o en la impedancia de la fuente.
Voltajes de entrada de offset Por lo general, los primeros parámetros que se encuentran en las hojas de datos de los fabricantes, donde se especifican las características de entrada de CD de los OP AMP, son las corrientes de polarización y las corrientes de offset, que acabamos de describir, junto con el voltaje de offset y la deriva (dift) de offset. El valor de estos parámetros está determinado por la etapa de entrada constituida por nuestro viejo amigo el par o amplificador diferencial. El voltaje de offset, VOS, se define como el voltaje que debe ser aplicado a la entrada, de tal forma que el voltaje de salida sea cero. En un mundo ideal, los transistores y las resistencias que conforman el amplificador diferencial son idénticos, con lo cual se puede obtener un VOS 0 V. Sin embargo, a pesar de los esfuerzos de los diseñadores de OP 10
Para OP AMP con entrada JFET, como el 411, la corriente IB es típicamente de 50 Pa, a temperatura ambiente, y hasta 2 μA a 70 °C. Por lo general, las corrientes IB se ignoran para transistores JFET, pero no para OP AMP con entradas bipolares.
98
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
AMP para hacer los transistores idénticos, siempre hay pequeñas diferencias. Si se conectan las entradas a un mismo voltaje, por ejemplo a tierra, la salida se saturará a VCC o –VCC, y no se puede predecir a cuál. La diferencia en los voltajes de entrada necesaria para hacer que el voltaje VSAL sea cero es el VOS. El VOS se puede modelar como si hubiera una batería conectada en serie con una de sus entradas como se muestra en la figura 3.19. M:: Æ
MJ8C
"
Gfk
MFJ ÆM::
=`^liX*%(0 MFJdf[\cX[fZfdfleXYXk\iXZfe\ZkX[XXcX\ekiX[Xef$`em\ijfiX% Los OP AMP, por lo general, tienen dos entradas para reducir el VOS a cero, mediante un potenciómetro, comúnmente de 10 kΩ, como se ilustra en la figura 3.19. Para el 741, el máximo VOS es 4 μV, mientras que para el 411 es 2 μV. Un parámetro de mayor importancia para aplicaciones de precisión es la deriva (dift) del VOS con la temperatura y el tiempo, ya que inicialmente el VOS puede ajustarse a cero. Esta deriva es ocasionada por la caída de voltaje de la unión p-n polarizada directamente, correspondiente a la unión base-emisor de los transistores de la etapa de entrada, la cual cambia con la temperatura. Por desgracia, cada transistor cambia en forma ligeramente diferente, por ende el VOS cambia con la temperatura. Esta deriva del VOS se especifica en las hojas de datos en μV/°C. Por ejemplo, para el 741 este parámetro es de 15 μV/°C y para el 411 de 7 μV/°C. A diferencia de los OP AMP 741 y 411, que no proporcionan la deriva por envejecimiento, los OP AMP de precisión, como el OP-77, especifican, además del voltaje de offset, 10 μV, y la deriva de voltaje de offset, 0.2 μV/°C, la deriva por envejecimiento, que para este OP AMP es de 0.2 μV/mes. Esto significa que la variación del VOS por envejecimiento sería únicamente de ¡48 μV en 20 años!
Impedancia de entrada La impedancia de entrada, ZENT, se refiere a la resistencia de entrada diferencial; esta es la impedancia viendo hacia una entrada con la otra entrada aterrizada. La ZENT ideal tiene un valor infinito, en consecuencia, la corriente de entrada es cero. Sin embargo, para OP AMP reales de entrada BJT, como el 741, la impedancia de entrada es aproximadamente 2 MΩ, mientras que para los OP AMP de entrada FET, como el 411, es aproximadamente de 1012 ohms. Debido al efecto de la retroalimentación negativa, que intenta mantener ambas entradas al mismo voltaje, eliminando la mayor parte de la entrada diferencial, la ZENT presenta, en la práctica, valores muy altos, y normalmente se le considera un parámetro de menos importancia que la corriente de polarización IB. Del ejemplo anterior, vimos que si tenemos un OP AMP con voltajes de saturación VSAT ±13 V y una oVSAT o13 V AVOL 200 000, el voltaje de entrada diferencial oVED o65 μV . Si la impedancia de entrada AVOL 200000 ZENT 100 kΩ, ¿cuál será la corriente de entrada al inicio de la saturación? Bien, vamos a asumir que la corriente de entrada, IENT, es la corriente que entra a la terminal no-inversora de un OP AMP en configuración de lazo abierto, entonces: I ENT
VED 65 μV 650 pA ZENT 100 k7
Como sabemos, con la retroalimentación negativa, las características de los circuitos OP AMP dependen de los elementos externos.
Impedancia de salida: oscilación de salida vs. resistencia de carga La impedancia de salida, ZO, es la resistencia intrínseca de salida del OP AMP. La ZO ideal es cero; en consecuencia, la oscilación del voltaje de salida es independiente de la carga, RL. No obstante, para OP AMP comerciales, como el 411,
grupo editorial patria®
99
3 El mágico amplificador operacional
es aproximadamente 40 Ω, y para el 741, típicamente, es de 100 Ω; para algunos OP AMP de baja potencia puede llegar a ser de vario miles de ohms. La retroalimentación negativa reduce el valor de ZO a valores realmente insignificantes, o los eleva para el caso de fuentes de corriente. Por tanto, lo que realmente tiene importancia es su máxima capacidad de corriente de salida, la cual, generalmente, tiene valores típicos de 20 mA. Esto es proporcionado por los fabricantes en sus hojas de datos, como una gráfica de voltaje de oscilación de salida vs. impedancia de carga, como se muestra en la figura 3.20 para el OP AMP 741. )/ MfckXa\[\fjZ`cXZ`e[\jXc`[XMgg
))+
MJ4±(,M K84"),:
)) )' (/ ((+ () (' / '%( '%) '%, (%' )%' ,%' (' @dg\[XeZ`X[\ZXi^XbΩ
=`^liX*%)' MfckXa\[\fjZ`cXZ`e[\jXc`[Xmj%`dg\[XeZ`X[\ZXi^X% Para algunos OP AMP su capacidad de salida es asimétrica, es decir, pueden recibir (sink) más corriente que la que pueden proporcionar (source), o viceversa. De la figura 3.20, podemos apreciar que para una impedancia de carga de 1 kΩ, el voltaje de oscilación es aproximadamente 24 Vpp, si el OP AMP se alimenta con ±15 V. Impedancias de carga menores a 1 kΩ, reducirán de manera significativa su voltaje de oscilación. Algunos OP AMP, como el LM358, permiten oscilaciones que cubren sus fuentes de alimentación, característica muy útil cuando se usan OP AMP con una sola fuente de alimentación, ya que la oscilación puede ser desde tierra hasta el voltaje positivo de la fuente.
Respuesta a la frecuencia En el dominio de la frecuencia, la ganancia de lazo abierto del OP AMP ideal sería infinita desde cero o CD hasta cualquier frecuencia, y el ancho de banda también sería infinito.11 Sin embargo, en la práctica, la mayoría de los OP AMP operan relativamente con bajas frecuencias. Para el OP AMP 741, por ejemplo, la ganancia de lazo abierto AVOL 200 000 frecuencias debajo de 10 Hz, como se muestra en la figura 3.21. No obstante, a 10 Hz, AVOL se reduce al 70.7 de su valor máximo; para este OP AMP, el valor de AVOL 141 400 a 10 Hz. A esta frecuencia se le designa fOL , frecuencia de corte de ganancia de lazo abierto. Cuando la frecuencia se incrementa arriba del valor de fOL , la ganancia decrece por un factor de 10 por cada década que se incrementa la frecuencia. Esto equivale a decir que AVOL decrece 20 dB/década.12 Esta reducción en AVOL a altas frecuencias es causada 11
12
La respuesta de frecuencia es una representación de la respuesta de un sistema a entradas sinusoidales a distintas frecuencias. Esta salida será también una onda sinusoidal con diferente fase y magnitud. Una forma de representar gráficamente la respuesta en frecuencia de un sistema, es a través del uso de los diagramas de Bode. Normalmente, estos diagramas constan de dos gráficas separadas, una que corresponde a la magnitud de dicha función y otra que corresponde a la fase. Recibe su nombre del científico que lo desarrolló, Hendrik Wade Bode. El decibel, dB, es una unidad logarítmica que constituye la décima parte de un bel, que es en realidad la unidad, aunque en la práctica el bel no se utiliza por ser demasiado grande. El bel recibió este nombre en honor de Alexander Graham Bell, tradicionalmente considerado el inventor del teléfono. El dB es una unidad de medida sin dimensiones y relativa (no absoluta), la cual es utilizada para facilitar el cálculo y la realización de gráficas en escalas reducidas. El dB relaciona la potencia de entrada, PE, y la potencia de salida, PS, en un circuito, a
100
ELECTRÓNICA • MIJAREZ
>XeXeZ`X[\mfckXa\[\cXqfXY`\ikf#8MFC
3 El mágico amplificador operacional
]FC
)''''' ('''''
8MFC4(+(+''X]FC
('''' (''' ('' (' ( (?q ('?q (''?q (b?q ('b?q (''b?q
(D?q
=i\Zl\eZ`X
=`^liX*%)( :limX[\i\jgl\jkXXcX]i\Zl\eZ`Xmj%^XeXeZ`X[\mfckXa\8MFC% por el capacitor interno CC. A la frecuencia en la que AVOL 1 se le denomina frecuencia unitaria, funitaria. Para el 741, la funitaria es aproximadamente 1 MHz.
SLEW
RATE
Otra especificación muy importante de los OP AMP es el Slew rate, designado como SR. El SR nos indica qué tan rápido puede cambiar el voltaje de salida de un OP AMP con respecto al tiempo, y se especifica en volts/μs. Los OP AMP de baja potencia, generalmente, tienen SR de 1 V/μs, mientras que los OP AMP de alta-velocidad pueden tener SR de 100 V/μs o hasta 6 000 V/μs, como el LH0063C. Para el 741, el SR es 0.5 V/μs. Esto significa que no importa qué tan rápido cambie el voltaje de entrada, el voltaje de salida puede cambiar únicamente 0.5 V/μs. Para ilustrar este concepto usaremos la figura 3.22.
M
" .+( Æ
MJ8C "('M
ΔM4,M ΔM4'%,M "(M '*'
=`^liX*%)) FG8DGZfeleXj\Xc[\\ekiX[Xj`eljf`[Xc#]fidX[\fe[X8#pleXj\Xc[\jXc`[Xj`eljf`[Xc#]fidX[\fe[X9%8dYXjj\Xc\j Zl\ekXeZfecXd`jdX]i\Zl\eZ`X#g\if[`]\i\ek\jg\e[`\ek\j[liXek\cXjXck\ieXZ`fe\jgfj`k`mXjpe\^Xk`mXj%
través de la fórmula N ; dB = 10log
N ; dB = 10logPS . PE
2
V2 Puesto que P , y p I 2 R también N se puede obtener por R
N ; dB = 10log
2
VV 20logV S
S
E
VE
o
II 20logI . El dB se usa comúnmente para medir ganancia positiva o ganancia negativa (una ganancia negativa significa S
S
E
IE atenuación). Por tanto, una reducción de 10 es igual a N 20 log 10 –20 dB.
grupo editorial patria®
101
3 El mágico amplificador operacional
En la figura 3.22 se ilustra que el voltaje de salida del OP AMP, forma de onda B, es una versión amplificada de su entrada sinusoidal, VED , forma de onda A. Sin embargo, si la pendiente de la salida sinusoidal excede el SR del OP AMP, la señal de salida tendrá una forma de onda triangular, como se muestra en la figura 3.23.
;dgbVYZdcYV6 =fidX[\fe[X \jg\iX[X\ecXjXc`[X
G\e[`\ek\5JI
;dgbVYZdcYV7 =fidX[\fe[X[\jXc`[X ki`Xe^lcXi#i\jlckX[f [\cX[`jkfij`e[\ JI#[M&[k4'%,M&μj
=`^liX*%)* ;`jkfij`e[\cJI[\Y`[fXhl\cXg\e[`\ek\`e`Z`Xc[\cX]fidX[\fe[X[\jXc`[X\oZ\[\ cXj\jg\Z`]`ZXZ`fe\j[\JI[\cFG8DG%
En resumen, la distorsión del SR depende de la amplitud de salida y de la frecuencia, de tal manera que la amplitud es reducida y la forma de onda distorsionada. Por tanto, la frecuencia máxima a la cual el voltaje de salida oscilará sin distorsión es igual al máximo slew rate (MSR) que presenta el OP AMP. Entre mayor sea el voltaje de pico de la señal, VP , a una frecuencia dada, mayor será la pendiente inicial, como se muestra en la figura 3.23. Por tanto, para una señal sinusoidal, la frecuencia máxima de salida sin distorsión de un OP AMP con un SR y un VP dado se obtiene mediante la ecuación 3.25: f MÁX
SR 2PVP
(3.25)
Por ejemplo, si tenemos un OP AMP con un SR 10 V/μs y un VP 5 V, podemos determinar la máxima frecuencia que este OP AMP puede operar sin distorsión, usando la ecuación 3.26: V SR μs
318 kHZ 2PVP 2P (5 V ) 10
f MÁX
(3.26)
Dicho de otra forma y considerando una señal sinusoidal de frecuencia f (hertz) y una amplitud A (volts), decimos que esta señal requiere un SR mínimo de 2πAf volts/s para oscilar correctamente. Esto es: VSAL VP sen 2P f t dV 2P f VP cos 2P f t dt dV 2P f VP dt MÁX
Para una señal sinusoidal con una frecuencia f 34 kHz y un voltaje de pico VP 14 V, requeriríamos un valor dV 106 V 2P (34 kHz)(14 V) 3 r 3 V/μs. Sin embargo, si el OP AMP tiene un SR de 1 V/μs mínimo de SR dt MÁX s tendríamos una distorsión producida por el SR, como se muestra en la figura 3.24. De lo anterior, podemos observar que la frecuencia máxima de la señal puede ser incrementada si se utiliza un OP AMP con un SR de mayor valor o aceptando un voltaje de pico de salida de menor valor.
102
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
"(+M
*M&μj ]d}o4*+b?q
(M&μj ]d}o4((b?q Jc\niXk\d}o`df XcZilZ\gfiZ\if
Æ(+M
=`^liX*%)+ ;`jkfij`e[\leXj\Xcj`eljf`[Xc`e[lZ`[Xgfi\cJI[\leFG8DG%
Settling time Otro aspecto del desempeño de alta frecuencia de un OP AMP es descrito por el parámetro denominado tiempo de estabilización o settling time como comúnmente lo especifican las hojas de datos. El settling time indica el tiempo que toma el OP AMP en estabilizarse en su salida, dentro de una banda de error, considerando una entrada escalón. Por ejemplo, el 411 especifica un settling time de 2 μs a 0.01% de error. La figura 3.25 ilustra este parámetro. JXc`[X
9Xe[X \iifi
K`\dgf dl\ikf
K`\dgf[\ K`\dgf[\ ZXdY`fd}o`df i\Zlg\iXZ`e
K`\dgf[\ \jkXY`c`qXZ`e]`eXc
J\kkc`e^k`d\
=`^liX*%), J\kkc`e^k`d\[\leFG8DGdfjkiXe[fjlYXe[X[\\iifi% El settling time es importante para ciertas aplicaciones, por ejemplo cuando el OP AMP se utiliza como etapa posterior de un convertidor digital a analógico (DAC), que explicamos posteriormente, ya que se desea saber cuánto le tomará al OP AMP estabilizarse después que un código digital ha cambiado; pero, nos estamos adelantando, ya que el próximo capítulo se inicia con los principios de electrónica digital.
Corriente de corto circuito Es muy común que los OP AMP cuenten con una protección contra un corto circuito en su salida. De esta manera, si la salida de un OP AMP, como el 741, se conecta directamente a tierra, la corriente de salida no puede exceder 25 mA. Por tanto, si la resistencia de carga, RL , conectada a la salida tiene un valor pequeño, el voltaje de salida será bajo, ya que el voltaje de salida no puede exceder 25 mA × RL.
grupo editorial patria®
103
3 El mágico amplificador operacional
Razón de rechazo de modo común (CMRR) Como vimos antes, en este mismo capítulo, la etapa de entrada de un OP AMP está formada por el par o amplificador diferencial. En consecuencia, el OP AMP amplifica la diferencia en el voltaje de sus dos entradas. De igual manera, si dos señales idénticas se aplican a las entradas de un OP AMP, y cada una tiene exactamente la misma relación de fase y la misma amplitud, la salida del OP AMP será igual a cero; a esta señal se le conoce como señal de entrada de modo común y en muchas ocasiones se podría considerar como una interferencia en las señales de entrada. Por ende, un OP AMP tiene la característica de amplificar las señales de entrada diferencial y de atenuar cualquier señal de entrada de modo común. Desafortunadamente, incluso con señales de modo común perfectas, la salida no es cero, debido a que los OP AMP no presentan características ideales. Aún así, la razón de rechazo de modo común (CMRR) es muy alta. La figura 3.26 muestra la curva característica de la CMRR vs. frecuencia, para el OP AMP 741. (''
Mj4±(,M K84"),:
0' /'
:DII[9
.' -' ,' +' *' )' (' '
(
('
(''
(b
('b (''b (D
('D
=i\Zl\eZ`X?q
=`^liX*%)- :DIImj%]i\Zl\eZ`XgXiX\cFG8DG.+(% Para el OP AMP 741, la CMRR 90 dB, lo cual corresponde a una relación de 30 000:1.13 Esto significa que si dos señales de entrada, una señal de entrada diferencial y una señal de modo común, se aplican simultáneamente a un 741, la señal de entrada diferencial aparecerá en la salida aproximadamente 30 000 veces más grande que la señal de entrada de modo común. También, podemos observar que la CMRR disminuye al incrementarse la frecuencia; para el 741, la reducción inicia después de los 100 Hz.
Razón de rechazo de la fuente de alimentación (PSRR) Para completar algunas de las características importantes de los OP AMP, mencionaremos la razón de rechazo de la fuente de alimentación (PSRR, por sus siglas en inglés). Este parámetro es, en realidad, sutil, pero importante. El PSRR indica la capacidad de un OP AMP para excluir cualquier señal de alta frecuencia que aparezca en la fuente de alimentación. De esta forma, si un OP AMP tiene un PSRR muy pobre y se conecta a una fuente de alimentación que alimenta circuitos digitales, los cuales podrían generar ruido de alta frecuencia, ese ruido de alta frecuencia se pasará hasta la salida del OP AMP. Si esto sucede, se requerirá una fuente de alimentación aislada o de elementos de filtrado en las terminales de entrada de la fuente de alimentación del OP AMP, para rechazar esas señales antes de que produzcan ruido en la señal de salida. La figura 3.27 muestra una gráfica típica de PSRR vs. frecuencia. La PSRR se especifica para ambas fuentes de alimentación, positiva y negativa, con variaciones simultáneas de las fuentes, por ejemplo desde ±15 V a ±5 V.
13
Algunos fabricantes expresan la CMRR como la división entre la ganancia de modo diferencial, Ad, y la ganancia de voltaje de modo común, ACM. Mientras que el rechazo de modo común (CMR, por sus siglas en inglés) es el logaritmo de esa división. Por ejemplo, una CMRR de 10 000 corresponde a una CMR de 80 dB.
104
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
(+' ()'
"=l\ek\
Mj4±(,M K84"),:
GJII[9
('' /' -' +'
Æ=l\ek\
)' ' ('
(''
(b
('b
(''b
(D
=i\Zl\eZ`X?q
=`^liX*%). GJIImj%=i\Zl\eZ`X[\leFG8DG%
Ruido El último parámetro que vamos a analizar es el ruido.14 Este, también, es el parámetro más complicado, ya que, en muchas ocasiones, el ruido es el que genera más problemas en el diseño de circuitos. Para el caso de los OP AMP, el ruido generado puede ser de voltaje y de corriente, veste último se relaciona con las corrientes de polarización en las entradas del OP AMP, como se muestra en la figura 3.28. Æ @EÆ @E"
ME "
Æ "
Il`[f^\e\iX[fgfimfckXa\ME
Il`[f^\e\iX[fgfiZfii`\ek\@E
=`^liX*%)/ Il`[f\eleFG8DG^\e\iX[fgfimfckXa\ME pZfii`\ek\@E % Un tercer elemento que contribuye al ruido en los circuitos con OP AMP es el ruido generado por las resistencias externas al OP AMP. Todas las resistencias presentan un ruido de voltaje térmico en origen, conocido como ruido Johnson o Johnson Noise.15 La figura 3.29 muestra el circuito equivalente del ruido Johnson asociado a cada resistencia. MEI
I
=`^liX*%)0 Il`[f[\mfckXa\^\e\iX[fgficXji\j`jk\eZ`Xj% El voltaje de ruido de las resistencias, VNR, puede obtenerse por la ecuación 3.27. V NR 4 KTBR
(3.27)
Donde K es la constante de Boltzmann (1.38 r 10 23 J/K), B es el ancho de banda (Hz), T es la temperatura absoluta T (°C) 273.15 y R es el valor de la resistencia. De la ecuación 3.27, podemos observar que si se incrementa el valor de la resistencia, también se incrementará el ruido térmico generado por la misma. 14
15
Siempre que queremos hacer mediciones exactas, descubrimos que las cantidades que observamos fluctúan por valores muy pequeños de manera aleatoria. Lo anterior limita nuestra habilidad para hacer mediciones rápidas y exactas, y nos hace ver que la cantidad de información que obtenemos o comunicamos es siempre finita. Esas fluctuaciones aleatorias es a lo que llamamos ruido. En 1927, J. B. Johnson observó fluctuaciones aleatorias de voltaje al realizar mediciones en resistencias eléctricas. Un año después, H. Nyquist publicó el análisis teórico de este tipo de fluctuaciones, indicando que estas tenían un origen térmico. Por tal razón, a este tipo de ruido se le conoce como ruido Johnson, ruido Nyquist o ruido térmico.
grupo editorial patria®
105
3 El mágico amplificador operacional
Una estimación del ruido total que se usa comúnmente como referencia es 4 ηV, generado a 25 °C, por una resistencia de 1 kΩ a 1 Hz. Sin embargo, de este ruido total, el ruido producido por las resistencias es un componente clave en los circuitos con OP AMP. El cálculo del ruido total es la suma de los valores absolutos de todos los ruidos. Esta suma se obtiene mediante la raíz cuadrada de la suma de los cuadrados de todos los valores de ruido. El ruido dominante depende del circuito en particular que se esté empleando, por lo que es importante examinar el efecto de estos tres tipos de ruido. Por eso, vamos a analizar el circuito mostrado en la figura 3.30. I
" Æ
Ii\kif
I
J\[\jgi\Z`XcXZfeki`YlZ`e [\il`[f^\e\iX[fgficXj I[\i\kifXc`d\ekXZ`e
=`^liX*%*' :`iZl`kf[\FG8DGljX[fgXiX[\k\id`eXi\cil`[f[fd`eXek\% Si el valor de R en el circuito de la figura 3.30 es cero, entonces el ruido de voltaje, VN, será el dominante, porque no existirá el ruido Johnson proveniente de la resistencia, R, y tampoco se generará el ruido de corriente, IN, ya que R es cero. Si, por ejemplo, R 3 kΩ, entonces el componente que predomina es el ruido Johnson, aunque también existirá el ruido por voltaje, VN, y el ruido producido por la corriente, IN. Pero, si R 300 kΩ, el ruido generado por la corriente de polarización que pasa por R es, ahora, el componente predominante del ruido, aunque también contribuirán el ruido de voltaje, VN , y el ruido Johnson, VNR; este último con un mayor valor. Por tanto, si usamos un OP AMP con etapa de entrada FET, el cual tiene una corriente de polarización muy baja, se tendrá en consecuencia un ruido muy bajo generado por la corriente. La tabla 3.2 muestra, de forma cualitativa y cuantitativa, la contribución del ruido para el circuito de la figura 3.30 con diversos valores de la resistencia R.
Elemento contribuyente Ruido por voltaje
Valores de R 0
3 kΩ
300 kΩ
3
3 kΩ
3 kΩ
Ruido por corriente
0
3 kΩ
300 kΩ
Ruido por la resistencia
0
7 kΩ
70 kΩ
KXYcX*%)
106
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
.'
⎟
8⎞ ⎛ μÇ Ç⎠ Il`[fgfimfckXa\⎜⎝¹Ç?q
-' ,' +' *' )'
(&] (' ' ('
(''
(b
('b
(''b
=i\Zl\eZ`X?q
=`^liX*%*( Il`[fgfimfckXa\#ME #^\e\iX[f\ecX\ekiX[X[\leFG8DG% diseñados para operar con un factor de ruido reducido a baja frecuencia, esta figura de mérito se puede reducir hasta 2 Hz. Por tanto, si se requiere un circuito de precisión a bajas frecuencia se recomienda tener un OP AMP con un 1/f bajo. Uno de los objetivos de medir el ruido con un osciloscopio es obtener el voltaje pico a pico (VPP) a la salida del OP AMP, en un ancho de banda específico, por ejemplo de 0.1 a 10 Hz. Para esto se requiere usar un circuito especial con filtros y ganancias, que va más allá del objetivo de este texto. Lo importante es tener en cuenta los elementos que contribuyen al ruido de un circuito de OP AMP a fin de reducirlos al mínimo.
OP AMP reales y su selección Resulta evidente que las características del OP AMP ideal no existen y que el OP AMP real tiene limitaciones. No obstante, es interesante hacer notar que esas imperfecciones son usadas por los diseñadores como ventajas o características deseables. Por ejemplo, para el diseño de un circuito amplificador se usa un ancho de banda que es, por mucho, menor que infinito, con lo cual se puede reducir el ruido, y transitorios de muy alta rapidez. Un slew rate infinito podría no ser tan bueno como suena. Podemos decir que al OP AMP real le gusta trabajar con señales de baja frecuencia. Esto disminuye aún más los glitches o transitorios de muy alta amplitud y alto contenido de frecuencias. A la fecha, no existe un OP AMP ideal para todas las aplicaciones. ¡No se ha diseñado! Lo que se puede hacer con las opciones disponibles es seleccionar el mejor, dependiendo de la aplicación, y utilizarlo de manera adecuada. Las tecnologías disponibles de silicio para la fabricación de OP AMP son la bipolar y la FET. La diferencia más importante entre estas dos tecnologías son los transistores empleados en la etapa de entrada. Como ya vimos en las secciones anteriores, estos transistores tienen un efecto fundamental en el desempeño total del OP AMP. La figura 3.32 muestra de manera general y a golpe de vista la diferencia entre estas dos tecnologías usadas para la fabricación de los OP AMP.
9Xafil`[f gfimfckXa\
9Xafil`[fgfi Zfii`\ek\
8dgc`fXeZ_f [\YXe[X
DXpfi^XeXeZ`X [\mfckXa\
Fg\iXZ`eZfeleX ]l\ek\[\Xc`d\ekXZ`e
8ckX`dg\[XeZ`X [\\ekiX[X
9XafZfejldf [\gfk\eZ`X
=
9XafmfckXa\ [\f]]j\k LeX:DIIXckX DXpfidXe\af [\Zfii`\ek\X cXjXc`[X
9`gfcXi
=`^liX*%*) :XiXZk\ijk`ZXj`dgfikXek\j[\cXjk\Zefcf^Xj[\j`c`Z`fljX[XjgXiX]XYi`ZXiFG8DG%
grupo editorial patria®
107
3 El mágico amplificador operacional
CIRCUITO
BÁSICOS DEL
OP AMP
Como enfatizamos al inicio de este capítulo, la retroalimentación negativa puede mejorar de manera importante el desempeño de un amplificador. A cualquier OP AMP que no use retroalimentación negativa se le considera demasiado inestable para ser útil, con sus excepciones, por supuesto. En esta sección describimos cómo la retroalimentación negativa estabiliza la ganancia de voltaje, mejora las impedancias de entrada y de salida e incrementa el ancho de banda del OP AMP.
El amplificador inversor Al circuito basado en un OP AMP con retroalimentación negativa, como se muestra en la figura 3.33, se le llama amplificador inversor. Lo anterior debido a que su salida se encuentra desfasada 180º con respecto a su entrada. La inversión de fase ocurre porque la señal de entrada, VENT , se aplica a la terminal no inversora ( ) del OP AMP. II
"M:: I
Æ
M<;4'M
.+( MJ8C4('MGG
" M
=`^liX*%** :`iZl`kfXdgc`]`ZX[fi`em\ijfi% Las resistencias RRETRO y RENT proveen la retroalimentación negativa, la cual, a su vez, controla la ganancia de voltaje total del circuito. La señal de salida se retroalimenta a la entrada, a través de estas resistencias. El voltaje entre la entrada inversora y la tierra es el voltaje de entrada diferencial, designado como VED . El valor exacto de VED es determinado por la ganancia de lazo abierto AVOL y el voltaje de salida VSAL. Aun con la retroalimentación negativa, el VSAL AVOL × VED . VED es tan pequeño que en la mayoría de los casos se le considera cero. Por tal razón, en el análisis del circuito, la terminal de entrada inversora en el OP AMP se considera como tierra virtual. Esto significa que el voltaje en la entrada inversora del OP AMP se encuentra al mismo potencial que la tierra del circuito, pero sin consumir corriente. La figura 3.34 ilustra el concepto de tierra virtual. Ii\kif4('bΩ
K`\iiXm`iklXc I
"M:: Æ .+( MJ8C4('MGG
" M
=`^liX*%*+ :`iZl`kfXdgc`]`ZX[fi`em\ijfi\e]Xk`qXe[f\cZfeZ\gkf[\k`\iiXm`iklXc%
108
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Ganancia de voltaje de lazo cerrado ACL Debido a que en la entrada inversora del OP AMP prácticamente no fluye corriente, la corriente producida por VENT , que fluye a través de la resistencia de entrada, RENT , es igual a la corriente que fluye por la resistencia de retroalimentación, RRETRO . Esto es: VENT VED VED VSAL RENT RRETRO
(3.28)
Recordando que VED VSAL/AVOL y que AVOL es un valor muy grande, idealmente infinito, VED tiene un valor que, para fines prácticos, se estima en cero. Por consiguiente, la ecuación 3.28 puede expresarse como: VENT –VSAL RENT RRETRO De esta expresión, resulta la ganancia de voltaje de lazo cerrado, ACL, la cual es la ganancia del amplificador con retroalimentación negativa: ACL
–VSAL RRETRO VENT RENT
(3.29)
El signo negativo de la ecuación 3.29 indica que VENT y VSAL se encuentran 180° fuera de fase. La retroalimentación negativa mantiene la ganancia de voltaje constante aun cuando la ganancia AVOL varíe. En otras palabras, la ganancia de voltaje de lazo cerrado, ACL, es independiente de cualquier cambio en la ganancia AVOL del OP AMP. Como ejemplo, vamos a calcular la ACL y el VSAL del circuito mostrado en la figura 3.33. Primero, obtenemos la ganancia ACL usando la ecuación 3.29: ACL
10 k7 10 1 k7
Ahora, podemos calcular el voltaje de salida: VSAL VENT r ACL 1VPP r 10 10 VPP Como vimos en la sección anterior, las hojas de datos de los fabricantes, por lo general, proporcionan la ganancia de lazo abierto, AVOL, del amplificador; si esta tiene un valor de 200 000, podemos calcular el voltaje de entrada diferencial VED, de la siguiente forma: VED
VSAL 10 V 50 μVPP AVOL 200 000
Impedancia de entrada, ZENT Debido a que la entrada inversora del OP AMP se encuentra a tierra virtual y además se conecta a las resistencias de la malla de retroalimentación, la impedancia de entrada del circuito, ZENT , que “ve” el voltaje de la fuente, VENT , es RENT . Esto es: ZENT y RENT
(3.30)
Como sabemos, la impedancia de la entrada inversora del OP AMP es extremadamente grande, pero esta no es la impedancia de entrada del circuito, como lo indica la ecuación 3.30. Por ejemplo, la ZENT del circuito de la figura 3.33 es: ZENT y RENT 1 k7 Lo anterior nos muestra que la impedancia de entrada se puede controlar fácilmente, seleccionando únicamente la RENT .
grupo editorial patria®
109
3 El mágico amplificador operacional
Impedancia de salida, ZSAL Gracias a la retroalimentación negativa, la impedancia de salida del circuito amplificador inversor es significativamente menor que la impedancia de salida de lazo abierto del OP AMP. La impedancia de salida de un circuito con retroalimentación negativa se llama impedancia de salida de lazo cerrado, ZSAL(CL) , y se obtiene usando la ecuación 3.31: ZSAL(CL)
ZSAL(OL) 1 AVOL B
(3.31)
Donde ZSAL(OL) es la impedancia de salida de lazo abierto del OP AMP, y β es la fracción de retroalimentación, porque determina cuánto de la salida se retroalimenta a la entrada. En realidad, como vimos en la sección de teoría importante de los OP AMP, esta fracción de retroalimentación es nuestro práctico divisor de voltaje, por tanto: RENT B RENT RRETRO Por ejemplo, si en el OP AMP de la figura 3.33 el AVOL 200 000 y la ZSAL(OL) 75 Ω, y queremos calcular la impedancia de salida de lazo cerrado, ZSAL(CL), primero calculamos β:
B
1 k7 0.0909 1 k7 10 k7
Ahora, usando la ecuación 3.31 tenemos que: ZSAL(CL)
75 7 0.0041 7 1 (200 000)(0.0909)
Con lo anterior, comprobamos que ZSAL(CL) es mucho menor que la ZSAL(OL) de lazo abierto, que normalmente especifican los fabricantes.
El amplificador no-inversor La configuración del OP AMP como amplificador no-inversor se muestra en la figura 3.35. En esta figura observamos que la señal de entrada VENT se aplica directamente a la entrada no-inversora () del OP AMP, de modo que las señales de entrada y salida se encuentran en fase. Ii\kif4('bΩ
I
Æ .+(
M<;4'M
MJ8C4('MGG
" M
IC
=`^liX*%*, FG8DGZfe]`^liX[fZfdfXdgc`]`ZX[fief$`em\ijfi% Igual que con el amplificador inversor, la ganancia de voltaje de lazo cerrado, ACL, está determinada por las resistencias RRETRO y RENT . En esta configuración, asumimos que la corriente en la terminal inversora, V( ), del OP AMP es cero, de tal manara que VED 0 y V( ) V(). Por este motivo, la corriente que pasa por RRETRO es igual a la corriente que pasa por RENT , esto es: VSAL V (–) V (–) RRETRO RENT
110
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Como el voltaje de entrada se conecta a la entrada no inversora (), VENT V(), entonces tenemos que: VSAL VENT VENT VSAL RRETRO l
1 RRETRO RENT VENT RENT ACL
RRETRO 1 RENT
(3.32)
Como en el caso del amplificador inversor, la ganancia de voltaje de lazo cerrado, ACL, es independiente de los cambios en AVOL. A manera de ejemplo, vamos a calcular la ACL y el VSAL para el circuito de la figura 3.35: ACL
10 k7 1 11 1 k7
Por tanto, el voltaje de salida es: VSAL VENT r ACL 1 VPP r 11 11 VPP
Impedancia de entrada, ZENT En el amplificador no-inversor, la fuente de voltaje de entrada, VENT, virtualmente no tiene que proporcionar corriente a la terminal de entrada no inversora (). Dicho de otra forma, la fuente de voltaje VENT “ve” una alta impedancia de entrada ZENT . En consecuencia, virtualmente no se pedirá corriente (o carga) a la fuente VENT ; la expresión comúnmente usada es que “no se carga” a la fuente VENT . Para calcular la ZENT del amplificador no-inversor usamos la ecuación 3.33: ZENT(CL) RENT (1 AVOL B )
(3.33)
Donde RENT representa la resistencia de entrada de lazo abierto del OP AMP y ZENT(CL) la impedancia de entrada de lazo cerrado con retroalimentación negativa. Debido a que en la mayoría de los casos 1AVOL β es un valor muy grande, se considera que ZENT(CL) se acerca al infinito. Por ejemplo, si para el circuito de la figura 3.35 asumimos una impedancia de entrada RENT 2 MΩ y AVOL 200 000, podemos calcular la impedancia de entrada ZENT(CL) usando la ecuación 3.33. ZENT(CL) 2 M7(1 200 000 r 0.0909) y 36 G7 Estrictamente 36 000 000 000 Ω no es infinito, pero para fines prácticos se puede considerar que sí lo es.
Impedancia de salida, ZSAL De la misma manera que con el amplificador inversor, la retroalimentación negativa disminuye la impedancia de salida del amplificador no-inversor y se calcula usando la misma ecuación. ZSAL(CL)
ZSAL(OL) 1 AVOL B
(3.34)
Si para el circuito de la figura 3.35 asumimos una impedancia de salida de lazo abierto ZSAL(OL) 75 Ω y AVOL 200 000, podemos calcular la ZSAL(CL) usando la ecuación 3.34. ZSAL(CL)
75 7 0.0041 7 1 (200 000)(0.0909)
grupo editorial patria®
111
3 El mágico amplificador operacional
Al igual que con el amplificador inversor, la impedancia de salida del amplificador no-inversor es muy cercana a cero ohms.
Seguidor de voltaje Uno de los circuitos más populares con OP AMP es el circuito seguidor de voltaje, el cual se muestra en la figura 3.36. Este circuito también es llamado amplificador de ganancia unitaria, amplificador buffer o amplificador de aislamiento. En ocasiones, para abreviar, se le llama simplemente seguidor o buffer.
Æ .+(
MJ8C4M
" M
IC
=`^liX*%*- :`iZl`kfj\^l`[fi[\mfckXa\% De la figura 3.36 se puede observar que el voltaje de entrada, VENT , se conecta directamente a la entrada no inversora () del OP AMP; por ende, los voltajes de entrada y salida se encuentran en fase. También notamos en la figura que la salida se conecta directamente a la terminal de la entrada inversora ( ). Puesto que VED 0 y V( ) V(), entonces: VSAL VENT Otra forma de visualizar al circuito seguidor es usar la ecuación de ganancia ACL del amplificador no inversor: ACL
RRETRO 1 RENT
y considerar RRETRO/RENT 0/∞ y 0, por tanto: ACL 1 Debido a que VSAL VENT , el voltaje de salida debe seguir al voltaje de entrada, de ahí el nombre de seguidor de voltaje. Este circuito usa la máxima cantidad posible de retroalimentación negativa; por tal motivo, ZENT(CL) es extremadamente alta y ZSAL(CL) es extremadamente baja. Las ecuaciones 3.33 y 3.34 pueden usarse para calcular ZENT(CL) y ZSAL(CL), respectivamente. Una pregunta que surge del circuito seguidor de voltaje es: ¿por qué utilizar este circuito si su ganancia de voltaje es únicamente uno? La respuesta se basa en el hecho que este circuito puede manejar cargas grandes, igualar impedancias o aislar circuitos de potencia muy grande de circuitería muy precisa y sensible. Por ejemplo, en vez de conectar una fuente de voltaje con capacidad de corriente limitada, VENT , a una resistencia de carga, RL, de un valor relativamente bajo como se muestra en la figura 3.37 a), se conecta el OP AMP, como seguidor de voltaje, para eliminar cualquier carga que pueda ocurrir como se ilustra en la figura 3.37 b). Como lo muestra el circuito de la figura 3.37 b), la fuente de voltaje VENT se conecta a la terminal no inversora () del OP AMP, que tiene una impedancia muy alta, por lo que VENT no requiere proporcionar casi ninguna corriente al circuito. De esta forma, VENT no se cargará. Además, debido a la retroalimentación negativa, la impedancia de salida ZSAL(CL) es muy baja. Esto significa que el circuito actuará como una fuente de voltaje ideal, con una impedancia interna de aproximadamente cero.
112
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
" Æ M
M
IC
IC
X
Y
=`^liX*%*. X =l\ek\[\mfckXa\#M
A manera de ejemplo, vamos a calcular ZENT(CL) y ZSAL(CL) del circuito seguidor de voltaje de la figura 3.36, si RENT 2 MΩ, AVOL 200 000 y ZSAL(OL) 75 Ω. Empezaremos con ZENT(CL) : ZENT(CL) RENT(1 AVOL β) Debido a que β 1, ZENT(CL) 2 MΩ(1 200 000) y 400 GΩ. Ahora, calcularemos ZSAL(CL) : ZSAL(CL)
ZSAL(OL) 1 AVOL B
Como β 1: ZSAL(CL)
75 7 0.000375 7 1 200 000
Para fines prácticos, ZENT(CL) es infinito y ZSAL(CL) es cero ohms.
Ancho de banda del OP AMP Antes, ya mencionamos que las etapas internas que constituyen al OP AMP son directamente acopladas; por consiguiente, no hay frecuencia de corte inferior, ya que incluyen frecuencias desde CD. Sin embargo, como vimos en la sección de respuesta a la frecuencia, el OP AMP sí tiene una frecuencia de corte superior llamada fOL, que para el 741 es de 10 Hz; a este valor de frecuencia, la ganancia de voltaje de lazo abierto, AVOL, se reduce a 70.7% de su valor máximo. La fOL tiene una frecuencia muy baja para ser usada en algunas aplicaciones; por lo que surge la pregunta: ¿qué utilizaremos para extender la frecuencia de corte superior más allá de la frecuencia fOL? ¡Exacto! Nuestra conocida y útil retroalimentación negativa. ¿Por qué? Vamos a asumir que en un amplificador no-inversor, como el mostrado en la figura 3.35, la frecuencia de la señal de entrada, VENT, se incrementa por encima de la frecuencia de lazo abierto fOL. Esto causa una disminución en la ganancia de voltaje de lazo abierto, AVOL, como lo muestra la figura 3.21. Debido a que AVOL decrece, también decrece la cantidad de retroalimentación negativa. Como el voltaje de entrada, VENT , permanece constante, el voltaje de entrada diferencial, VED , se incrementa. Puesto que VSAL VED r AVOL , el incremento en VED compensa la reducción en AVOL , con lo cual mantiene el voltaje de salida, VSAL , a un valor constante. Si la frecuencia de la señal de entrada, VENT , continúa incrementándose, la ganancia AVOL , eventualmente, igualará la ganancia ACL. Entonces, las curvas para AVOL y para ACL decrecerán y se superpondrán al mismo tiempo. La frecuencia a la cual la ganancia ACL decrece a 70.7% de su valor máximo se le llama frecuencia de corte de lazo cerrado, y se designa como fCL. La frecuencia fCL puede calcularse usando la ecuación 3.35:
grupo editorial patria®
113
3 El mágico amplificador operacional
f CL
f UNITARIA ACL
(3.35)
Donde fUNITARIA representa la frecuencia a la cual la ganancia AVOL 1. Las hojas de datos, normalmente, muestran la fUNITARIA. Para el OP AMP 741 la fUNITARIA y 1 MHz, como se muestra en la figura 3.38. ('-
Mj4±(,M K84"),:
(',
8MFC
('+ ('* (') (' ( ('Æ( (
('
(''
(b
('b
(''b
(D
('D
=i\Zl\eZ`X?q
=`^liX*%*/ I\jgl\jkXXcX]i\Zl\eZ`X[\cX^XeXeZ`X[\cXqfXY`\ikf#8MFC% La ecuación 3.35 nos indica que la frecuencia fCL es afectada por la ganancia ACL. Si ACL se incrementa, el ancho de banda de lazo cerrado fCL decrece y viceversa.
Producto ganancia-ancho de banda de lazo cerrado La ecuación 3.35, usada para obtener la frecuencia de corte de lazo cerrado, puede acomodarse como: fCL r ACL fUNITARIA
>XeXeZ`X[\mfckXa\8MFC
Para cualquier OP AMP, el producto entre fCL y ACL siempre será igual a la fUNITARIA. Como se muestra en la gráfica 3.38; para el 741, este producto es de 1 MHz, el cual se cumple independientemente de los valores de resistencias de la retroalimentación negativa. La figura 3.39 ilustra la respuesta a la frecuencia de la ganancia AVOL y de las ganancias ACL con valores de 10 y 1 000. Observe en la figura que la curva de AVOL se reduce a 70.700 a fOL 10 Hz; sin embargo, podemos apreciar que las curvas para ACL 10 y ACL 1 000 no se afectan a esta frecuencia. (''''' .'.''
]FC
('''' ('''
8:C4('''
('' ('
8:C4('
( (?q('?q(''?q(b?q('b?q(''b?q(D?q
=i\Zl\eZ`X
k ]LE@K8I@8
=`^liX*%*0 I\jgl\jkXXcX]i\Zl\eZ`X[\cX^XeXeZ`X[\cXqfXY`\ikf#8MFC#p[\cXj^XeXeZ`Xj[\cXqfZ\iiX[f8:C4('p8:C4('''%
114
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Haciendo uso de la ecuación 3.35 calculamos que cuando ACL 10, fCL 1 MHz/10 100 kHz, y cuando ACL 1 000, fCL 1 MHz/1 000 1 kHz. De lo anterior, concluimos que existe un compromiso entre ancho de banda y ganancia. Si la ganancia de lazo cerrado, AVOL, se incrementa, se reduce el ancho de banda y viceversa.
CIRCUITOS
POPULARES CON
OP AMP
Como es sabido, las aplicaciones de la industria electrónica son muy variadas y los OP AMP son un ingrediente ampliamente usado en muchas de estas. Debido a que los OP AMP se usan en muchas formas, en esta sección no es posible cubrir todos los diferentes circuitos con OP AMP. No obstante, este apartado describe en detalle algunos de los circuitos con OP AMP más populares.
El amplificador sumador El amplificador sumador es un circuito basado en un OP AMP inversor, al cual se le añaden entradas paralelas, como se muestra en la figura 3.40. II
M(4"(M M)4Æ,M M*4"*M
I(4(bΩ I)4(bΩ
Æ
I*4(bΩ "
MJ8C
=`^liX*%+' :`iZl`kfXdgc`]`ZX[fijldX[fi`em\ijfi% Para facilitar la descripción de este circuito a las resistencias de entrada RENT, a estas se les enumeró como R1, R2 y R3. Como se observa en la figura 3.40, el extremo derecho de las resistencias de entrada se conecta a la terminal negativa del OP AMP, la cual, a su vez, se le considera tierra virtual e implícitamente no circula corriente por la terminal inversora, entonces podemos calcular las corrientes de entrada por: I1
V1 V2 Va ; I 2 ; I a R1 R2 Ra
Se puede decir que todas las resistencias de entrada efectivamente están aisladas una de otra y que cada voltaje de entrada “ve” únicamente su propia resistencia y nada más. Asimismo, debido a que casi no circula corriente por la terminal inversora del OP AMP, todas las corrientes se combinan y fluyen a través de la resistencia de retroalimentación, RRETRO, y técnicamente cada voltaje de entrada es amplificado por diferente factor de ganancia. Por tanto, el voltaje de salida será igual a la suma negada de todas sus entradas como lo muestra la ecuación 3.36. RRETRO RRETRO ¶ § RRETRO V2 V3 · VSAL ¨ V1 ¸ © R1 R2 R3
(3.36)
Cuando R1 R2 R3 RRETRO , como en el circuito de la figura 3.40, el voltaje de salida, VSAL, es igual a la suma negativa de los voltajes de entrada V1, V2 y V3. grupo editorial patria®
115
3 El mágico amplificador operacional
VSAL [V1 V2 V3 ]
(3.37)
El circuito de la figura 3.40 muestra solo tres entradas, pero este se puede extender para manejar cualquier número de entradas. Por ejemplo, si queremos calcular el voltaje de salida, VSAL, del circuito de la figura 3.40, podemos usar la ecuación 3.37, porque R1 R2 R3 RRETRO . VSAL –[V1 V2 V3] VSAL – [1V – 5 V 3 V] – 1 V Pero, si tenemos, por ejemplo, un circuito con valores diferentes de resistencias de entrada, como se muestra en la figura 3.41, podemos calcular el voltaje de salida, VSAL, usando la ecuación 3.36. RRETRO ¶ § RRETRO VSAL ¨ V1 V2 · ¸ © R1 R2 §10 k7 ¶ 10 k7 VSAL ¨ r 0.5V r 2.5V · –(5 V – 8 V) 3 V © 1 k7 ¸ 2.5 k7 II
I(4(bΩ M(4'%,M Æ M)4Æ)M
I)4)%,bΩ "
MJ8C
=`^liX*%+( :`iZl`kfjldX[fi`em\ijfiZfe[fj\ekiX[Xj%
Amplificador diferencial Los circuitos diferenciales constituyen circuitos que por lo común se encuentran en instrumentación y aplicaciones industriales; con frecuencia, estos se usan en conjunto con circuitos resistivos tipo puente, donde la salida del puente es la entrada del amplificador diferencial. Los amplificadores diferenciales tienen las características de amplificar la diferencia entre sus señales de entrada y atenuar o rechazar señales de modo común. Estos amplificadores combinan las ganancias de un amplificador inversor y de un amplificador no-inversor en un mismo OP AMP. La figura 3.42 muestra un amplificador diferencial típico. Para encontrar la fórmula que nos proporcione el voltaje de salida, VSAL, se usa el teorema de superposición que se estudia en el capítulo 2 que se ubica en el CD-ROM. Por tanto, para el circuito de la figura 3.42 empezamos poniendo en corto-circuito la entrada VY . Entonces, en la ecuación para obtener el VSAL se hace uso de la ganancia del OP AMP en configuración inversora: VSAL
R R
RETRO 1
116
VX
(VY en corto circuito)
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
EfkX1I(4I) II
II
MO
Æ I)4(bΩ
MJ8C
MP
" IC4(''bΩ I*4('bΩ
=`^liX*%+) :`iZl`kfXdgc`]`ZX[fi[`]\i\eZ`Xc% Ahora, poniendo en corto-circuito a la entrada VX, el OP AMP queda en configuración no-inversora y la ecuación para obtener el VSAL es: VSAL
R3 RRETRO VY r 1 R2 R3 R1
Puesto que R1 R2 y RRETRO R3, entonces:
R R R
V r R RR
RRETRO VY R1
(VX en corto circuito)
VSAL
RETRO
2
Y
RETRO
1
RETRO 1
Lo cual se reduce a: VSAL
Ahora, el voltaje de salida se encuentra sumando ambos resultados:
R R V R R V R (V V ) R
VSAL
RETRO
X
RETRO
1
VSAL
RETRO
Y
1
X
(3.38)
Y
1
De la ecuación 3.38, se puede observar que el amplificador diferencial amplificará únicamente la diferencia entre sus señales de entrada, ya que si VX VY el voltaje de salida será cero. A manera de ejemplo, vamos a calcular el voltaje de salida del circuito de la figura 3.42 usando la ecuación 3.38, si VY 0.7 V y VX 0.5 V. ¤ 10 k7 ³ VSAL ¥ ´(0.5 V – 0.7 V) 10( 0.2) 2 V ¦ 1 k7 µ Con el circuito amplificador diferencial es posible tener ganancias iguales o mayores a la unidad. Sin embargo, este circuito solo tomará de manera confiable la diferencia de las dos señales de entrada cuando las impedancias de las fuentes de voltaje de entrada sean bajas. Si las impedancias de las fuentes son altas con respecto a las resistencias de entrada R1 y R2, habrá pérdida en las señales debido a la acción de divisor de voltaje entre las impedancias de la fuente y la resistencias de entrada del amplificador, como se muestra en la figura 3.43 para una de las entradas del amplificador diferencial.
grupo editorial patria®
117
3 El mágico amplificador operacional
M=l\ek\
I=l\ek\
MO I(
=`^liX*%+* Gi[`[Xj\ecXj\Xc[\\ekiX[X[\cXdgc`]`ZX[fi[`]\i\eZ`XcgficXXZZ`e[\c[`m`jfi[\mfckXa\ZlXe[fI=l\ek\\jXckX% Adicionalmente, también pueden ocurrir errores si las dos impedancias de la fuente no son iguales o, bien, si los pares de resistencias externas del amplificador son desiguales. En realidad, la exactitud con la cual la interferencia en las señales de entrada es atenuada o eliminada se basa en dos variables: la exactitud con la cual son igualadas las resistencias y un parámetro de los OP AMP llamado razón de rechazo de modo común (CMRR). Asumiendo que el OP AMP perfecto existe, el cálculo del error en la salida del OP AMP está relacionado con el porcentaje de desigualdad entre las resistencias, como muestra la tabla 3.3. Desigualdad entre resistencias 1% 0.1% 0.01%
Error en la salida (V/μV) 4950 499.5 49.95
Error (dB)
46.1
66.0
86
KXYcX*%*
Amplificador de instrumentación El circuito amplificador de instrumentación, al igual que el amplificador diferencial, se emplea en aplicaciones que van desde la instrumentación médica hasta el control de procesos industriales. Este circuito es similar al amplificador diferencial en el sentido de que realiza la diferencia entre dos señales analógicas,16 aunque difiere en términos de la calidad de sus entradas. La figura 3.44 muestra la configuración clásica de un amplificador de instrumentación constituido por tres OP AMP. 16
¿Señales analógicas? Bien, análogo significa “una representación de un objeto que se parece al original”. Un dispositivo analógico monitorea ciertas condiciones, como temperatura, movimiento o sonido, y las convierte en representaciones electrónicas o mecánicas analógicas. Un reloj analógico representa, con la rotación de las manecillas en la carátula del reloj, la rotación de la Tierra. Otro ejemplo típico es el de un micrófono, el cual convierte las vibraciones mecánicas producidas por la voz en vibraciones eléctricas de la misma forma de onda. Analógico implica, pues, una señal continua, en contraste con una señal digital, que divide estas señales en números. Pero nos estamos adelantando, esto se analiza en el capítulo siguiente.
118
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
8dgc`]`ZX[fi[`]\i\eZ`Xc
Æ 8( MO
I(4(bΩ
"
II
8
Æ I)4(bΩ
8*
9 "
MP
MJ8C
" I*4('bΩ
8) Æ
=`^liX*%++ :`iZl`kfXdgc`]`ZX[fi[\`ejkild\ekXZ`e% En el circuito amplificador de instrumentación de la figura 3.44, la alta impedancia de las entradas no inversoras de los amplificadores A1 y A2 recibe las señales de entrada. Esto es una clara ventaja sobre el amplificador diferencial, donde las impedancias de las fuentes de voltaje de las señales de entrada pueden ser altas o desiguales. Después de la primera etapa de este circuito, sigue el amplificador diferencial, indicado por el amplificador A3. Como ya sabemos, la función de este circuito es rechazar o atenuar el voltaje de modo común en las entradas del amplificador y tomar o amplificar la diferencia entre ellas. Debido a que los amplificadores A1 y A2 son configurados con ganancia unitaria (seguidores de voltaje o buffers), el voltaje de salida, VSAL, se encuentra de la misma manera que con el amplificador diferencial. VSAL
R R (V RETRO
X
VY )
1
Como ejemplo, vamos a presentar la conexión de un circuito puente, el cual contiene un termistor, a la entrada de un amplificador de instrumentación, como se muestra en la figura 3.45.
Æ
:`iZl`kfgl\ek\ o
8dgc`]`ZX[fi[`]\i\eZ`Xc
8(
MO
I(4(bΩ
"
II
8
I94('bΩ I84,bΩ
I; GK:
"
i
I;4,bΩ X),:
I:4,bΩ
Æ
Æ M:;4,M
8*
I)4(bΩ 9
MP
"
p
"
MJ8C
I*4('bΩ 8)
Æ
=`^liX*%+, :`iZl`kfgl\ek\Zfe\ZkX[fXleXdgc`]`ZX[fi[\`ejkild\ekXZ`e%
grupo editorial patria®
119
3 El mágico amplificador operacional
El termistor tiene un Coeficiente de Temperatura Positivo (PTC, por sus siglas en inglés) con un valor de resistencia RD 5 kΩ a temperatura ambiente (25 °C). Entonces, a temperatura ambiente el potenciómetro RB se ajusta de tal manera que el puente esté balanceado, lo cual implica que VX VY. Por tanto, los voltajes VX y VY se aplicarán a la etapa de los seguidores de voltaje y serán iguales a los puntos de voltajes A y B, respectivamente, de la segunda etapa. Si esto sucede, el voltaje de salida del amplificador de instrumentación es cero, ya que VSAL –RRETRO/R1 (VX – VY) 0 V. El propósito principal de los amplificadores A1 y A2 es aislar las resistencias del circuito puente del amplificador diferencial. Recordemos que, idealmente, el circuito seguidor de voltaje tiene una impedancia de entrada infinita y una impedancia de salida cero. El circuito de la figura 3.45 funciona cualitativamente, si asumimos que el circuito puente ha sido balanceado a temperatura ambiente. Si la temperatura sube arriba de 25 °C, esto causa que la resistencia RD del termistor se incremente arriba de los 5 kΩ, lo cual a su vez ocasiona que el voltaje VY sea progresivamente más positivo. Como el voltaje VX permanece constante, la diferencia VX – VY es negativa. Debido a que la ganancia del amplificador diferencial es –RRETRO/R1, el voltaje de salida será positivo. Si la temperatura disminuye por debajo de los 25 °C, sucederá lo opuesto: la resistencia del termistor disminuirá, lo cual a su vez hará que el voltaje VY sea menos positivo. Como VX no cambia, la diferencia VX – VY es una cantidad positiva. Puesto que la ganancia de voltaje del amplificador A3 es negativa, el voltaje de salida será negativo. Para ilustrar el funcionamiento cuantitativo, vamos a calcular el voltaje de salida del circuito puente conectado al amplificador de instrumentación; para esto, asumimos que RB 5 kΩ y que RD se incrementa a 9.5 kΩ, provocado por un incremento en la temperatura ambiente. Así pues, primero calculamos los voltajes VX y VY que corresponden a las entradas del amplificador de instrumentación VA y VB , respectivamente. Por tanto: 1 VX r 5 V 2.5 V 2 RD 9 k7 VY r5 V r 5 V 3.21 V RC RD 5 k7 9 k7 Ahora, calculamos el voltaje de salida: ¤ 10 k7 ³ VSAL ¥ ´(2.5 3.21) 7.1 V ¦ 1 k7 µ Como observamos en la sección anterior, el amplificador diferencial básico tiene dos puntos débiles: 1. La impedancia de entrada es relativamente baja. 2. Cambiar la ganancia requiere cambiar dos resistencias igualadas. El punto 1 se mejoró enormemente añadiendo los buffers amplificadores, como primera etapa del amplificador de instrumentación. Con esta configuración, se proporcionó al circuito una impedancia de entrada alta, dejando la ganancia de voltaje y la CMRR para ser definida por las resistencias de la etapa de salida. Además, añadir las resistencias igualadas en el proceso de manufactura mejora notablemente la CMRR. Para mejorar el punto 2, los diseñadores de CI movieron las resistencias igualadas a los amplificadores de entrada, A1 y A2, para definir la ganancia a la entrada del amplificador con solo una resistencia, como se muestra en la figura 3.46. MO
I(4('b
" 8(
MX
Æ
I)4('b
I,4('b
MZ
Æ 8*
I*4('b
MJ8C
"
I-4('b I>
I+4('bΩ M[ MP
Æ 8) "
MY
=`^liX*%+- 8dgc`]`ZX[fi[\`ejkild\ekXZ`eZfe^XeXeZ`XmXi`XYc\gifgfiZ`feX[XgfileXi\j`jk\eZ`XI>%
120
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
En el caso general, la ganancia de voltaje del circuito de la figura 3.46, ACL, se puede expresar como:
ACL 1
R5 R6 R1 r RG R2
Para el circuito de la figura 3.46, esta ecuación se reduce a:
ACL 1
20k7 r (1) RG
Por tanto, el voltaje de salida estará definido por la ecuación 3.39.
VSAL 1
20 k7 r (VX VY ) RG
(3.39)
En conclusión, el amplificador de instrumentación presenta una alta impedancia de entrada y la capacidad de seleccionar la ganancia del circuito modificando únicamente una resistencia. Existen dos configuraciones típicas para el amplificador de instrumentación: 1. Usando amplificadores operacionales de propósito general. 2. Usando un circuito integrado como base del sistema.17 Uno de los amplificadores de instrumentación que utilicé al terminar la universidad fue el AD624, del fabricante Analog Devices. La figura 3.47 muestra el diagrama de bloques de este circuito integrado.
Æ
(
,'Ω
" Æ
" 69+')
Æ
>4('' (* )),%*Ω +++,%.Ω
>4)'' () ()+Ω >4,'' ((
('bΩ /'%)Ω )'bΩ
I>( (-
Æ "
I>) *
"
('bΩ
,'Ω
" Æ
"
)'bΩ
('bΩ
Æ
(' J
0 J8C@;8
('bΩ - I<=
=`^liX*%+. ;`X^iXdX[\Ycfhl\j[\cXdgc`]`ZX[fi[\`ejkild\ekXZ`e8;-)+% Aunque en la actualidad existe una gama grande de fabricantes de amplificadores de instrumentación, en la tabla 3.4 se muestra una comparación de las características del AD624 contra nuestro OP AMP de propósito general, el 741.18
17
18
Una variación usando el amplificador de instrumentación como CI, es el desarrollo de un amplificador de ganancia programable (PGA, por sus siglas en inglés), en el cual se pueden utilizar resistencias con interruptores mecánicos o electrónicos (construidos con FET) para modificar la resistencia RG y, por ende, la ganancia. Aunque también existen CI, como el LH0086, con entradas digitales, que determinan la ganancia del amplificador. Al graduarme, la primera aplicación que vi del AD624 fue la de acondicionador de señales para digitalizar variables analógicas, como temperatura y velocidad. Este CI formaba parte importante de un módulo de entradas analógicas que, a su vez, era parte de un sistema desarrollado en México, llamado Sistema de Adquisición y Control (SAC). Cuando empecé a diseñar con el AD624, comparado con el humilde 741, que usaba en las prácticas de la universidad, era como conducir un auto BMW en lugar de un Volkswagen sedán.
grupo editorial patria®
121
3 El mágico amplificador operacional
Parámetro
Ideal
OP AMP tipo 741
Amplificador de instrumentación tipo AD624
AVOL (dB)
Infinito
100
60 (no se usa en circuito abierto)
ZENT (Ω)
Infinito
2M
1000 M
ZSAL (Ω)
Cero
75
—
IOS (ηA)
Cero
20
35
VOS (mV)
Cero
2
0.025
BW (Hz)
Infinito
1M
25 M
SR (V/μs)
Infinito
0.5
5
CMMR (dB)
Infinito
90
130
PSRR (μV/V)
Cero
20
—
KXYcX*%+ :fdgXiXZ`e\eki\leFG8DGpleXdgc`]`ZX[fi[\`ejkild\ekXZ`e% Los amplificadores de instrumentación en CI tienen una escala alta de integración; es decir, están compuestos principalmente por una cantidad grande de transistores. Además, es más fácil ajustar la razón entre resistencias que preocuparse del valor absoluto de las mismas. Estos CI presentan especificaciones técnicas que distan de las ideales, pero comúnmente son mucho mejor que las provistas por los OP AMP de propósito general. Sin embargo, la base principal es el OP AMP. El uso de este tipo de componentes ha ayudado a diseñar maravillosos instrumentos tanto médicos como industriales.19
FILTROS
ACTIVOS
Un filtro eléctrico es un elemento que discrimina un grupo de frecuencias de una señal eléctrica que pasa a través de él, modificando su amplitud y su fase. Los filtros activos son aquellos que usan componentes activos con capacidades de amplificación, como transistores y OP AMP. El uso de OP AMP en la implementación de filtros activos se ha incrementado con la llegada de los circuitos integrados. En contraparte, un filtro pasivo es aquel que usa únicamente componentes pasivos, como resistencias, inductores y capacitores. Una ventaja importante de los filtros activos es que estos no necesariamente atenúan las señales de interés como lo hacen sus contrapartes los filtros pasivos. Los filtros permiten el paso de frecuencias dentro de ciertas bandas, llamadas bandas de paso, y bloquean las frecuencias en otras bandas, denominadas bandas de corte. Los filtros pueden ser pasa-bajas, pasa-altas, pasa-banda o rechazo-de-banda, como lo muestra la respuesta a la frecuencia ideal de la figura 3.48. Idealmente, en las bandas de paso debe haber transmisión sin distorsión y en las bandas de corte la transmisión debe ser nula. 8M
8M
8M
8M
@
@
@
@
]?q 8M 9Xe[X [\gXjf
9Xe[X [\Zfik\ GXjX$YXaXj
]?q 8M 9Xe[X [\Zfik\
9Xe[X [\gXjf
GXjX$XckXj
8M
]?q 8M
9Xe[X 9Xe[X 9Xe[X [\Zfik\ [\gXjf [\Zfik\
9Xe[X 9Xe[X 9Xe[X [\gXjf [\Zfik\ [\gXjf
GXjX$YXe[Xj
I\Z_Xqf[\YXe[Xj
]?q
=`^liX*%+/ I\jgl\jkXXcX]i\Zl\eZ`X`[\Xc[\[`]\i\ek\j]`ckifj%
19
Las hojas de datos de los OP AMP y de los amplificadores de instrumentación en CI, por lo general, muestran aplicaciones típicas y recomendaciones de conexión, de modo que vale la pena leer no solo sus especificaciones, sino también sus aplicaciones y recomendaciones.
122
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Adicionalmente, los filtros tienen un orden; entre mayor sea el orden, su comportamiento se parece más a la respuesta a la frecuencia ideal, tipo bloque, de la figura 3.48. Los filtros de primer orden usan en su construcción una resistencia y un componente reactivo, ya sea un inductor o un capacitor. Los filtros de segundo orden usan dos resistencias y dos componentes reactivos. A manera de ejemplo, en esta sección estudiamos un filtro pasa-bajas y un filtro pasa-altas de primer orden, usando un OP AMP como elemento activo.
Filtro pasa-bajas Un filtro pasa-bajas permite pasar idealmente solo frecuencias bajas. La figura 3.49 muestra un filtro activo pasa-bajas de primer orden y su respuesta a la frecuencia. Podemos observar de la figura 3.49 a) que un capacitor, llamado CRETRO , se conecta en paralelo con la resistencia de retroalimentación, RRETRO . Como sabemos del capítulo 1, a bajas frecuencias CRETRO , se tiene una reactancia capacitiva muy grande, idealmente de valor infinito. En consecuencia, a bajas frecuencias, el circuito funciona como un amplificador inversor, cuya ganancia es – RRETRO / RENT . :=4'%'(μ= 8:C 8:Cd}o
I=4('bΩ
'%.'.8:Cd}o I(4(bΩ
)'[9&[ZX[X -[9&fZkXmX
Æ
M
"
MJ8C k' =i\Zl\eZ`X
X
Y
=`^liX*%+0 =`ckifgXjX$YXaXj[\gi`d\ifi[\e%X :`iZl`kf%Y I\jgl\jkXXcX]i\Zl\eZ`X#^XeXeZ`Xmj%]i\Zl\eZ`X% A altas frecuencias, la reactancia capacitiva decrece, lo cual causa que la ganancia de voltaje también disminuya, debido a un incremento en la retroalimentación negativa. A frecuencias extremadamente grandes, la reactancia capacitiva es casi cero ohms y la ganancia de voltaje también se aproxima a cero. Cuando XCRETRO RF , la ganancia de voltaje es 70.7% del valor máximo, como se ilustra en la figura 3.49 b). A este valor se le llama frecuencia de corte y se le designa como fc: fC
1 2P RRETROCRETRO
(3.40)
En tanto, la ganancia de voltaje para cualquier frecuencia se calcula usando la ecuación 3.41. AV
ZRETRO RENT
(3.41)
Donde ZRETRO es: ZRETRO
CRETRO RRETRO 2 2 RRETRO CRETRO
Arriba de la frecuencia de corte, fC, la ganancia de voltaje decrece a una tasa de 20 dB/década o 6dB/octava. La figura 3.49 b) muestra la curva de la respuesta a la frecuencia del circuito de la figura 3.49 a). En muchas ocasiones, la ganancia de voltaje se especifica en dB, por lo que se usa la ecuación 3.42. ACL(dB)
20log ZRETRO RENT
grupo editorial patria®
(3.42)
123
3 El mágico amplificador operacional
A manera de ejemplo, vamos a calcular del circuito de la figura 3.49 a): 1. La frecuencia de corte. 2. La ganancia de voltaje de lazo cerrado ACL a 0 Hz y a 1 MHz. 3. La ganancia de voltaje en dB a 0 Hz y a 1.591 kHz. Para calcular la frecuencia de corte usamos la ecuación 3.40, para: fC
1 1.591 kHz 2P 10 k7 0.01μF
La ganancia de lazo cerrado ACL a 0 Hz, la obtenemos tomando en cuenta que XCRETRO y ∞ Ω. Por tanto, la ganancia de voltaje es: AV
RRETRO 10 k7 10 RENT 1 k7
A 1 MHz XCRETRO es: XCretro
1 1 15.9 7 2P f RRETRO 2P 1 MHz 10k7
Ahora, calculamos ZRETRO: ZRETRO
CRETRO RRETRO 15.9 7 r 10 k7 15.89 7 2 2 ( R )RETRO (C )RETRO 15.9 2 7 10 3 7
Usando la ecuación 3.41 calculamos la ganancia: AV
RRETRO 15.89 7 0.0158 RENT 1 k7
Con estos resultados, podemos verificar que las señales de entrada a este circuito se amplificarán con una ganancia de 10 en CD, y que a 1 MHz se atenuarán con una ganancia de 0.0158. Para calcular la ganancia de voltaje en dB a 0 Hz, asumimos que XCRETRO y ∞ Ω y, en consecuencia, ZRETRO RRETRO ; por tanto: ACL(dB)
20log RRETRO 10 k7 20log 20 dB RENT 1 k7
La frecuencia 1.591 kHz es la frecuencia de corte, fC , que previamente calculamos; a esta frecuencia ZF 0.707 RF , entonces ZF 0.707 r 10 kΩ 7.07 kΩ. Por tanto: ACL(dB)
20log RRETRO 7.07 k7 20log 17 dB RENT 1 k7
Es importante hacer notar que a la frecuencia de corte, fC, la ganancia de voltaje ACL se reduce 3 dB de su valor paso de banda (pasa-banda) de 20 dB. Por esta razón, algunos autores a la fC la llaman la frecuencia de los 3 dB.
Filtro activo pasa-altas De manera ideal, un filtro pasa-altas permite pasar únicamente frecuencias altas. La figura 3.50 muestra un filtro activo pasa-altas de primer orden y su respuesta a la frecuencia. A altas frecuencias XCENT y 0 Ω, y la ganancia de voltaje, ACL, es igual a –RRETRO/RENT. Por otro lado, a frecuencias muy bajas XCENT y ∞ Ω y la ganancia de voltaje, ACL, se aproxima a cero. La frecuencia de corte, fc, se obtiene mediante la ecuación 3.43. fC
124
1 2P RENTCENT
ELECTRÓNICA • MIJAREZ
(3.43)
3 El mágico amplificador operacional
8:C 8:Cd}o
II
'%.'.8:Cd}o :
)'[9&[ZX[X -[9&fZkXmX
Æ
M
"
MJ8C k' =i\Zl\eZ`X
X
Y
=`^liX*%,' =`ckifgXjX$XckXj[\gi`d\ifi[\e%X :`iZl`kf%Y I\jgl\jkXXcX]i\Zl\eZ`X#^XeXeZ`Xmj%]i\Zl\eZ`X% A la frecuencia de corte, fC, la ganancia de voltaje ACL es 70.7% de su valor máximo. La ganancia de voltaje para cualquier frecuencia se calcula usando la ecuación 3.44.
AV
RRETRO ZENT
(3.44)
Donde ZENT es: 2 ZENT RRETRO XC2retro
La ganancia de voltaje en dB se calcula con la ecuación 3.45: ACL(dB)
20log RRETRO ZENT
(3.45)
La frecuencia de corte puede variarse ajustando el valor del capacitor de entrada, CENT ; sin embargo, esto no afectará la ganancia de voltaje ACL en su región de paso de banda. Por otro lado, se puede variar la ganancia de voltaje, ACL, ajustando la resistencia RRETRO , pero esto no tendrá efecto en la frecuencia de corte, fC. De la figura 3.50 b), observamos que la ganancia ACL decrece 20 dB/década o 6dB/octava debajo de la frecuencia de corte fC.20 Los cálculos de frecuencia de corte, fC, y ganancia de voltaje son muy similares a los del filtro pasa-bajas. Como ejemplo vamos a calcular la frecuencia de corte en este filtro pasa-altas, usando la ecuación 3.43. fC
CONVERTIDORES
1 1 1.591 kHz 2P RENTCENT 2 r 3.1415 r 1 k7 r 0.1 μF
DE VOLTAJE A CORRIENTE Y DE CORRIENTE A VOLTAJE
Convertidores de voltaje a corriente En algunos diseños se requiere tener una corriente de carga constante que no se vea afectada por las variaciones en la resistencia de carga RL. Pero, si la carga no tiene que estar aterrizada, entonces la podríamos conectar en la trayectoria de retroalimentación, como lo muestra el convertidor de voltaje a corriente de la figura 3.51. 20
Si elevamos el orden del filtro también incrementaremos la tasa de atenuación. Para filtros de segundo orden, la tasa de decrecimiento en ACL será de 16 dB/octava o 40 dB/década. La respuesta a la frecuencia, tanto para los filtros pasa-bajas como para los pasa-altas, dista mucho de tener la forma tipo bloque de los filtros ideales mostrada en la figura 3.48. Para filtros de orden muy alto, se utilizan conexiones en cascada de OP AMP y se incrementa el número de componentes reactivos, lo cual hace que el diseño del filtro sea más complejo. Existe, por otro lado, el diseño de filtros digitales, que nos proporcionan características muy cercanas a las ideales. Para realizar estos filtros se utilizan componentes o sistemas de procesamiento digital de señales (DSP) o microcontroladores. Pero esto podría ser tema de otro capítulo completo, incluso de otro libro.
grupo editorial patria®
125
3 El mágico amplificador operacional
" M<;4'M
@J8C
Æ IC
M
M
I
=`^liX*%,( :fem\ik`[fi[\mfckXa\XZfii`\ek\% Debido a que el voltaje de entrada diferencial, VED , es igual a cero, el voltaje de entrada, VENT , se hace presente a través de la resistencia R, conectada de la entrada inversora a tierra. Por tanto, la corriente de salida, ISAL , se calcula usando la ecuación 3.46.
I SAL
VENT R
(3.46)
De la ecuación anterior, podemos observar dos cosas: 1) que la corriente de salida, ISAL, es determinada por el voltaje de entrada, VENT, y la resistencia R, y 2) que el valor de RL ¡no afecta a la corriente de salida! Además, debido a que VENT se conecta a la entrada no inversora del OP AMP, la impedancia de entrada vista por la fuente, VENT, se aproxima a un valor infinito; esto es, ZENT y ∞ Ω. Por ejemplo, vamos a calcular la corriente de salida del circuito de la figura 3.51 asignando los valores a VENT 3.3 V, R 1 kΩ y RL 50 Ω. Como RL no afecta a la corriente de salida, ISAL se puede obtener con la ecuación 3.46.
I SAL
VENT 3.3 V 3.3 mA 1 k7 R
Con este resultado, observamos que aun cuando RL se haga cero ohms, la corriente de salida será la misma. Puesto que RL no afecta ISAL, el circuito actúa como una fuente de corriente constante con una resistencia interna infinita, ZSAL y ∞ Ω.
Convertidor de corriente a voltaje Como se recordará del apéndice 1 que se encuentra en el CD-ROM del texto, el convertidor de corriente a voltaje más simple es nuestra humilde resistencia. Sin embargo, esta opción presenta una impedancia de la fuente, de la corriente de entrada, que no es cero. Lo anterior es una desventaja grande, sobre todo si el dispositivo que proporciona la corriente de entrada no provee una corriente de entrada constante cuando el voltaje de salida cambia o la corriente es muy pequeña. Un circuito que supera esta deficiencia es el convertidor de corriente a voltaje típico basado en un OP AMP que se muestra en la figura 3.52. I
Æ @
" IC
=`^liX*%,) :`iZl`kfZfem\ik`[fi[\Zfii`\ek\XmfckXa\%
126
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
El circuito de la figura 3.52 tiene como entrada una fuente de corriente, IENT, que se conecta a la entrada no inversora del OP AMP. Debido al concepto de tierra virtual, toda la corriente de entrada fluye a través de la resistencia R. En consecuencia, el voltaje de salida, VSAL, se calcula con la ecuación 3.47.
VSAL I ENT r R
(3.47)
En el circuito de la figura 3.52, el voltaje de salida, VSAL, no se ve afectado por la resistencia de carga, RL, porque la impedancia de salida (de lazo cerrado), ZSAL(CL), es aproximadamente cero ohms, ZSAL(CL) y 0 Ω. Como ejemplo, vamos a calcular el voltaje de salida, VSAL, si la corriente de entrada IENT 3.3 mA, R 1 kΩ y RL 5 kΩ. Puesto que RL no afecta el valor del voltaje de salida, VSAL puede calcularse usando la ecuación 3.47. VSAL I ENT r R 3.3 mA r 1 k7 3.3 V Por lo general, las fuentes de corriente son menos comunes de visualizar. Un buen ejemplo de fuente de corriente son las celdas fotovoltaicas, las cuales pueden conectarse como convertidores de corriente a voltaje mientras se mantiene la entrada a tierra; en este caso, tierra virtual, como lo muestra la figura 3.53.
(DΩ
@
Æ MJ8C
"
λ ;`f[f ]fkfmfckX`Zf
=`^liX*%,* ;`f[f]fkfmfckX`ZfZfe\ZkX[fZfdfZfem\ik`[fi[\Zfii`\ek\XmfckXa\% Los diodos fotovoltaicos, por lo común, son capaces de generar voltajes y corrientes del orden de los milivolts y microamperes, respectivamente. Por ejemplo, si el diodo fotovoltaico del circuito de la figura 3.53 genera una corriente de 1 μA, el voltaje de salida será de 1 V. La configuración de convertidor de corriente a voltaje también puede usarse para dispositivos que proveen su corriente vía alguna fuente externa, tal como la fuente de alimentación VCC. Un ejemplo de estos dispositivos son los fototransistores, los cuales actúan como fuentes de corriente, proveniente de una alimentación positiva, cuando se exponen a la luz. La figura 3.54 ilustra su conexión con un OP AMP. ('b M::4"(,M λ Clq[\ \ekiX[X
Æ J`eZfe\o`e \ecXYXj\
"
=`^liX*%,+ :`iZl`kfZfem\ik`[fi[\Zfii`\ek\XmfckXa\ljXe[fle]fkfkiXej`jkfi%
grupo editorial patria®
127
3 El mágico amplificador operacional
Circuitos OP AMP con diodos Los OP AMP pueden ser usados con diodos para rectificar señales con valores pico del orden de los milivolts. Un diodo por sí solo no puede realizar este trabajo, porque requiere de un voltaje mayor para activarse. Recordemos que un diodo de silicio requiere 0.7 V y uno de germanio 0.3 V. La figura 3.55 muestra un circuito rectificador de precisión de media onda. 8MFC4(''''' "(''dM
MG4"(''dM "
M
'M J`
Æ
IC4('bΩ
=`^liX*%,, :`iZl`kfi\Zk`]`ZX[fi[\gi\Z`j`e[\d\[`Xfe[X% Este circuito es capaz de rectificar cargas muy pequeñas del orden de milivolts. Cuando VENT se hace positivo, la salida se hace positiva y el diodo entra en estado de conducción y la salida del OP AMP será 0.7 V. La cantidad de voltaje requerido para obtener esta salida es determinada por la ganancia AVOL. VENT
0.7 0.7 3.5 μV AVOL 200 000
Cuando la entrada excede los 3.5 μV, el diodo conduce y el OP AMP actúa como un seguidor. En cambio, cuando VENT es negativo, VSAL es negativa, el diodo no conduce y el voltaje de salida es cero volts. De esta manera, invirtiendo la polaridad del diodo, se producirán pulsos negativos.
Cargas conmutadas Para manejar cargas que requieren ser conmutadas, es decir, que necesitan encenderse o apagarse, por lo común se utiliza un transistor de conmutación que tiene como entrada un OP AMP, como lo muestra la figura 3.56. "M::
:Xi^X
(%'b )E*',,
=`^liX*%,- DXe\af[\ZXi^Xjhl\i\hl`\i\ej\iZfedlkX[XjljXe[fleFG8DGplekiXej`jkfi[\gfk\eZ`X% El diodo del circuito de la figura 3.56 se utiliza para proteger la unión base-emisor del transistor de conmutación, ya que un OP AMP fácilmente puede oscilar a su saturación negativa con voltajes mayores a 5 V. El transistor 2N3055 es un transistor de potencia para aplicaciones no críticas de corriente. Sin embargo, si se requiere manejar corrientes arriba de 1 A, entonces se recomienda usar un transistor FET o un Darlington.
128
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
CIRCUITO
COMPARADOR
Un circuito comparador basado en un OP AMP es aquel que, como su nombra lo indica, compara una señal de voltaje en una entrada, con una referencia de voltaje en la otra, como lo muestra la figura 3.57. En la figura podemos observar que este circuito no usa retroalimentación. En consecuencia, el OP AMP opera en configuración de lazo abierto con una ganancia de voltaje AVOL. "M:: MJ8C M
"
"MJ8K
MJ8C4±MJ8K
Æ
M
ÆM:: ÆMJ8K X
Y
=`^liX*%,. :fdgXiX[fi[\mfckXa\%X :`iZl`kf%Y :limXZXiXZk\ijk`ZX% En el circuito de la figura 3.57 a), la entrada inversora del OP AMP se aterriza mientras se aplica la señal a la entrada no-inversora. El comparador contrasta el voltaje de entrada, VENT, en la entrada no-inversora, con la referencia de cero volts, de la entrada inversora. Cuando VENT es positivo, el voltaje de salida, VSAL, se va a saturación positiva VSAT , y cuando VENT es negativo, el voltaje de salida, VSAL, se va a saturación negativa VSAT , como se muestra en la curva característica del comparador de la figura 3.57 b). Como sabemos, ± VSAT es por lo general un par de volts menor que los voltajes de alimentación ±VCC. Cuando la entrada no inversora se aterriza y se aplica el voltaje a la entrada inversora, la conmutación es opuesta. La salida conmuta a VSAT cuando la entrada es negativa, y a VSAT cuando la entrada es positiva. Sin embargo, debido a que el OP AMP tiene una ganancia de lazo abierto, AVOL , extremadamente grande, la variación más pequeña en la señal de entrada produce un voltaje de salida ± VSAT . A causa de que VSAL conmuta cuando VENT cruza los cero volts, a este circuito se le llama detector de cruce por cero.
Corrimiento del voltaje de referencia En los diseños, algunas veces se requiere que el voltaje de referencia sea diferente a la tierra. La figura 3.58 ilustra un comparador que utiliza una referencia de voltaje diferente a los cero volts. "M::
MJ8C
"MJ8K
"
M
M
MJ8C4±MJ8K
Æ
' ÆM::
MI<=4",M
ÆMJ8K
Y
X
=`^liX*%,/ :`iZl`kfZfdgXiX[fiZfei\]\i\eZ`X[\mfckXa\#MI<= #`^lXcX",M%X :`iZl`kf%Y :limXZXiXZk\ijk`ZX%
grupo editorial patria®
129
3 El mágico amplificador operacional
En este caso, la figura 3.58 a) muestra un circuito comparador con voltaje de 5 V. Cuando VENT excede los 5 V, el voltaje de salida, VSAL , conmuta a VSAT . En cambio, cuando VENT cae por debajo de los 5 V, entonces VSAL , conmuta a VSAT . La figura 3.58 b), por su parte, muestra la curva característica de este circuito. En realidad, VREF , puede ser tanto positivo como negativo. Por lo común, VREF se produce usando un divisor de voltaje conectado a VCC o –VCC . En algunos casos, incluso, es deseable tener un ajuste mediante un potenciómetro, que nos permita variar el voltaje de entrada, como se muestra en la figura 3.59. "M:: GFK Æ
M
MJ8C "
MI<=
I
=`^liX*%,0 :`iZl`kfZfdgXiX[fiZfei\]\i\eZ`X[\mfckXa\mXi`XYc\% Debido a que el OP AMP es muy sensible a los voltajes de entrada, la salida puede conmutar (oscilar) erráticamente entre ± VSAT cuando el valor de VENT es cercano al voltaje de referencia, VREF . La razón de lo anterior es porque la señal de entrada por lo regular puede contener ruido, como lo muestra la figura 3.60.
REF ENT
SAL
=`^liX*%-' J\Xc[\\ekiX[XZfeil`[fjlgl\jkXd\ek\Zfek\e`\e[f[fjglcjfj%
Circuito comparador Schmitt trigger Para eliminar esta operación errática del comparador, se hace uso de un circuito denominado disparador Schmitt, el cual comúnmente se conoce como Schmitt trigger,21 y que se puede observar en la figura 3.61 a).
21
El circuito comparador Schmitt trigger fue inventado por el estadounidense Otto H. Schmitt (1913-1998), durante la etapa inicial de su investigación doctoral, y lo llamó thermionic trigger. Otto tenía un talento especial para realizar conexiones a fin de obtener conclusiones importantes. En el ámbito eléctrico, conectando alambres, diseñó ingeniosos equipos. En la esfera social, también tenía una afinidad natural para “conectarse” a nivel personal con una gran variedad de personas. En el entorno intelectual fue capaz de obtener conexiones significativas entre disciplinas que parecían no tener relación. En la Universidad de Washington trabajó en los departamentos de f ísica, zoología y matemáticas. Otto también trabajó en la Universidad de Minnesota y puso a nivel internacional las semillas de la biof ísica y la bioingeniería. Si siguen interesados en este apasionante personaje, es recomendable que lean el artículo A life time of connections.
130
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
El Schmitt trigger es un circuito OP AMP comparador que utiliza retroalimentación positiva. Las resistencias R1 y R2 proveen esta retroalimentación positiva. Cuando VSAL VSAT , un voltaje positivo aparece en la entrada no-inversora. De igual modo, cuando VSAL VSAT , un voltaje negativo aparece en la entrada no-inversora. La fracción de retroalimentación, por lo común especificada como β, indica la fracción del voltaje de salida, VSAL , retroalimentado a la entrada no-inversora. Entonces, β es definida por la ecuación 3.48.
B
R1 R1 R2
(3.48)
El punto del umbral superior (UTP, por sus siglas en inglés) es: UTP BVSAT
(3.49)
En tanto, el punto del umbral inferior (LTP, por sus siglas en inglés) es: LTP BVSAT
(3.50)
La salida del circuito comparador Schmitt trigger permanecerá en su estado actual hasta que el voltaje de entrada exceda la referencia o el voltaje umbral para ese estado. Lo anterior se comprende de mejor manera si se observa la curva característica que se ilustra en la figura 3.61 b). Si asumimos que VSAL VSAT , entonces VSAL debe exceder el voltaje de βVSAT (UTP) para conmutar la salida al estado opuesto, el cual debe ser VSAT . La salida VSAL permanecerá en VSAT hasta que la entrada se haga más negativa que –βVSAT (LTP). "M::4(,M Æ
M
MJ8C
"MJ8K MJ8C4±MJ8K
"
LKG MI<=4",M
CKG ÆM::4(,M
I(
M
I) ÆMJ8K
X
Y
=`^liX*%-( :fdgXiX[fik`gfJZ_dd`kki`^^\i%X :`iZl`kf%Y :limXZXiXZk\ijk`ZX% La diferencia entre los puntos del umbral superior e inferior se llama voltaje de histéresis, y se le designa como VH. El voltaje de histéresis se calcula mediante la ecuación 3.51: VH UTP – LTP VH BVSAT BVSAT 2BVSAT
(3.51)
Si el voltaje pico a pico de ruido de la señal de entrada es menor que el voltaje de histéresis, VH, no habrá manera de que la salida pueda conmutar estados. Por esta razón, el diseño del circuito Schmitt trigger puede ser inmune a disparos de conmutación erráticos producidos por el ruido. Ahora, vamos a calcular, como ejemplo, el voltaje de histéresis, VH, del circuito de la figura 3.61. Para esto asignamos valores a R1 1 kΩ y R2 100 kΩ. Como los voltajes de alimentación son de ± 15 V, entonces asumimos unos voltajes de saturación de ± 14 VSAT . Para calcular los valores para UTP y para LTP, primero calculamos β:
B
R1 1 k7 0.099 R1 R2 1 k7 100 k7
grupo editorial patria®
131
3 El mágico amplificador operacional
Conociendo β, entonces podemos calcular UTP y LTP: UTP BVSAT 0.099 r 13 V 128.7 mV LTP –BVSAT 0.099 r (–13 V) –128.7 mV Por tanto, el voltaje de histéresis es: VH 2BVSAT 2(128.7 mV) 257.4 mV Podemos observar que si los valores de R1 0 Ω y R2 ∞ Ω, regresaremos al comparador original sin histéresis.
Circuito Schmitt trigger no simétrico Algunas aplicaciones requieren que el umbral no se encuentre de manera simétrica alrededor de cero volts. Una configuración más general para determinar un umbral arbitrario se muestra en la figura 3.62. Æ
M
MJ8C M"
"
I)
I(
MI<=
=`^liX*%-) :`iZl`kfZfdgXiX[fiJZ_d`kkki`^^\iefj`dki`Zf% Usando la ley de Kirchhoff para las corrientes tenemos: VOUT V VREF V VOUT VREF V V R1 R2 0 V R1 R2 R2 R1 R2 R1 R2 R1 R1 R2 V VOUT VREF R1 R2 R1 R2
(3.52)
Por tanto, el voltaje de umbral con histéresis es: VH oVSAT
R1 R1 VREF R1 R2 R1 R2
(3.53)
Normalmente, el voltaje de referencia, VREF , no se encuentra disponible, por lo que usamos nuestro divisor de voltaje para obtener el valor deseado, como se muestra en la ecuación 3.54 y en la figura 3.63. i(
I( "
" MI<=
ǎ
'M
MJ
i)
'M
=`^liX*%-* MfckXa\[\i\]\i\eZ`XfYk\e`[fXgXik`i[\le[`m`jfi[\mfckXa\%
132
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
=`^liX*%-+ :fdgl\ikX[`^`kXc`em\ijfiXJZ_d`kkki`^^\i% VREF VS
r2 r1 r 2
(3.54)
El circuito Schmitt trigger puede construirse usando dispositivos discretos, aunque esto en realidad consume mucho tiempo en su diseño. Este circuito tiene numerosas aplicaciones, ya sea en el mundo analógico o en el mundo digital, convirtiendo señales analógicas a unos y ceros. La versatilidad del Schmitt trigger le ha permitido entrar al mundo de los circuitos digitales, como el CI 74HC14. Pero, en este momento nos estamos adelantando, este es tema del capítulo: Principios de electrónica digital y microprocesadores. Adicionalmente, cuando se tienen dos señales analógicas de entrada y una salida digital, al comparador se le denomina convertidor analógico a digital (ADC, por sus siglas en inglés) de un bit; si bien este es uno de los temas que nos ocupa en el tratamiento del siguiente apartado, ya estamos llegando a los límites entre el mundo analógico y el digital.
ADC
Y DAC LAS INTERFACES ENTRE EL MUNDO DIGITAL Y EL MUNDO ANALÓGICO
Hasta ahora hemos examinado el OP AMP y varias de sus aplicaciones; sin embargo, para enfatizar su diversidad, esta sección abre las puertas del mundo de los convertidores digitales a analógicos (DAC) y de los convertidores analógicos a digitales (ADC), por donde cruzaremos de forma delineada desde el mundo analógico hacia al mundo digital y viceversa; es decir, presentaremos el punto intermedio entre conceptos y construcción de estos convertidores, ya que para cada dispositivo existen capítulos enteros vdedicados a estos temas. Para entender la valía relativa de los sistemas analógicos y digitales, es conveniente comparar los dos sistemas en una aplicación común, en este caso la grabación y la reproducción de sonido, como lo muestra la figura 3.65. Cabeza de escritura
Cabeza de lectura
Señal analógica de salida
Señal analógica de entrada Dirección de la cinta GRABACIÓN ANALÓGICA
Señal analógica de salida
Señal analógica de entrada Computadora Los números se convierten en señal
La señal se convierte en números GRABACIÓN DIGITAL
=`^liX*%-, J`jk\dX[\^iXYXZ`epi\gif[lZZ`eXeXc^`ZXmj%j`jk\dX[\^iXYXZ`epi\gif[lZZ`e[`^`kXc%
grupo editorial patria®
133
3 El mágico amplificador operacional
Iniciamos el tratamiento de este tema describiendo el proceso de grabación y reproducción analógico, para posteriormente contrastarlo con el proceso digital. De manera general, en el proceso de grabación analógico, las ondas sonoras impactan el micrófono, donde son convertidas a impulsos eléctricos; estas señales eléctricas son amplificadas y después convertidas a campos magnéticos por una cabeza de grabación. Cuando la cinta magnética se mueve bajo la cabeza, la intensidad del campo magnético se almacena en la cinta. En el proceso de reproducción, cuando la cinta magnética se mueve bajo la cabeza, la intensidad del campo magnético almacenado en la cinta se convierte a señales eléctricas. Estas señales eléctricas son amplificadas y enviadas a las bocinas, las cuales convierten las ondas amplificadas a ondas sonoras. El proceso analógico tiene una resolución infinita; no obstante, cada etapa representa factores adversos que se combinan de tal manera que la calidad de la señal de salida es más baja que la señal de entrada. Cada vez que la señal pasa otro proceso analógico, estos efectos adversos se multiplican. Por otro lado, en el proceso digital, las señales analógicas son convertidas a señales digitales (arreglos de números), como se muestra la figura 3.66.
Señal digital Apagado
Encendido
Apagado
0
1
0
Señal analógica
=`^liX*%-- KiXej]fidXZ`e[\leXj\XcXeXc^`ZXXj\Xc\j[`^`kXc\jXii\^cfj[\ed\ifj % Una vez adquiridas y almacenadas, estas señales (arreglos de números) pueden reproducirse fielmente. En este proceso digital, sin embargo, existen dos desventajas: primero, es mucho más complicado que el proceso analógico; segundo, las computadoras solo pueden manipular números de resolución finita. De esta manera, se pierde la potencial “resolución infinita” del proceso analógico. No obstante, el esquema digital también tiene muchos beneficios: las señales, una vez convertidas a números, son incondicionalmente estables; asimismo, usando técnicas como la detección y la corrección de errores, es posible almacenar, transmitir y reproducir números sin corrupción de las señales; así, la vigésima generación de grabación es tan exacta como la primera. El modelo general de procesamiento digital de señales analógicas, por ejemplo el sonido, tiene los elementos que se distinguen en la figura 3.67. Despliegue Teclado 101111
101111 FBP
FBP ADC Acondicionamiento de señal
Procesador
DAC
Filtro Antialias
Filtro suavizante Memoria de programa
Memoria de datos
Modem
A otros sistemas DSP
=`^liX*%-.
134
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
no contener algunos elementos. Pero, ya nos estamos desviando, en este apartado solo analizamos los módulos ADC y DAC.22 Pero, antes es importante definir algunos términos técnicos relacionados con el tema.
Términos técnicos de la interface analógica-digital-analógica Para apreciar esta transición entre mundos diferentes, primero definiremos algunos términos únicos en el área digital. Estos conceptos forman los fundamentos de la transformación de valores analógicos a digitales y viceversa, y son independientes del método que se utilice para digitalizar una señal. Para esto, es necesario entender que una representación digital de una señal analógica es una aproximación. Así, una señal analógica puede asumir cualquier valor dentro de un rango, por esta razón se dice que su resolución es infinita; mientras que una señal digital está limitada a distintos valores (números), en particular números binarios llamados bits, compuestos por unos y ceros, como se muestra en la figura 3.66. Este tema se analiza con mayor detalle en el siguiente capítulo. Como la salida de un ADC y la entrada de un DAC es una palabra digital, esta se caracteriza por el número de bits que contiene. La figura 3.68 muestra los símbolos de estos convertidores. VREF Entrada digital (Número de bits)
Salida analógica
DAC
(Voltaje o corriente)
VREF Entrada analógica
ADC
(Voltaje o corriente)
Salida digital (Número de bits)
=`^liX*%-/ JdYfcfj[\cfjZfem\ik`[fi\j8;:p;8:% Los bits definen la resolución disponible en el convertidor, pero no la exactitud de la conversión. Así, entre mayor sea el número de bits, se tiene mayor información que puede ser usada para representar la amplitud o la intensidad de la señal, lo cual redunda en una mayor resolución. La resolución es comúnmente considerada, en términos de bits, menos significativa (LSB, por sus siglas en inglés) de la palabra digital. Para cualquier convertidor, el LSB es calculado por la ecuación 3.55. 1LSB
VFS 2N 1
(3.55)
Donde VFS es el voltaje de escala plena del convertidor, el cual, generalmente, es su voltaje de alimentación, pero podría tener un voltaje de referencia arbitrario, y N es el número de bits. Por ejemplo, un convertidor de 16 bits operando a plena escala, VFS 5 V, tendrá una resolución que se calcula de la siguiente manera: 1LSB
5V 5V 76.3 μv 2 1 65535 16
Por lo común, la exactitud se expresa en términos del valor de LSB. Para visualizar la exactitud con relación a la resolución, vamos a considerar el juego de tiro al blanco que se representa en la figura 3.69, el cual tiene cuatro posibles combinaciones, las cuales pueden resultar de esta relación exactitud-resolución. 22
Si sigue interesado en este tema, es muy probable que la secuela de este libro esté relacionada con el procesamiento digital de señales, que complementará su estudio.
grupo editorial patria®
135
3 El mágico amplificador operacional
A
B
C
D
=`^liX*%-0
111
111
IDEAL 110
Código digital
Código digital
110 101 100 011
101 100
IDEAL 011
010
010
001
001
000
000 1/8
2/8 3/8 4/8 5/8 6/8 7/8
FS
1/8
2/8 3/8 4/8 5/8 6/8 7/8
Señal analógica a)
FS
Señal analógica b)
=`^liX*%.'
136
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Observe que en los errores arriba descritos, la función de transferencia permanece como una línea recta. Aunque, por definición, esto es conveniente, existen otros dos errores que describen la desviación de la línea recta ideal, como se muestra en la figura 3.71.
111
111 110
DNL
Código digital
Código digital
110 101 100
INL
011
101 100 011
010
010
001
001
000
000
No monotónico
Código perdido 1/8
2/8 3/8 4/8 5/8 6/8 7/8
FS
1/8
2/8 3/8 4/8 5/8 6/8 7/8
Señal analógica a)
FS
Señal analógica b)
=`^liX*%.(
El error no lineal integral (INL, por sus siglas en inglés) es una medida de la desviación de la función de transferencia de la línea recta ideal, mientras que el error no lineal diferencial (DNL, por sus siglas en inglés) es cualquier desviación en el tamaño del paso que se desvíe del ideal. Otros dos casos extremos de DNL se muestran en la figura 3.71 b). Estos errores pueden ser desastrosos en sistemas de control, donde un sistema de control de lazo cerrado se encuentre buscando una posición. Uno de estos errores sucede en caso de que se pierda un código y corresponda a la posición; si esto sucede, el sistema continuará buscando ese punto y nunca se logrará estabilizar. El otro error está relacionado a los sistemas monotónicos (de monótonos, es decir que no cambian), los cuales constituyen aquellos sistemas cuyo código de salida permanece constante o siempre se eleva con un incremento en los valores de entrada. Considere un sistema donde el código buscado es 110 en la entrada 6, de 8 posibles de escala plena. Cuando la entrada se incrementa del paso 3 al 8, el código de salida se incrementa. Ahora, cuando la entrada se incrementa de 4 a 8, el código de salida se decrementa. Así pues, el sistema puede concluir que ha pasado el punto buscado y regresarse. En este caso, el sistema permanece atrapado en un valor mínimo local, con ninguna oportunidad de alcanzar el punto deseado.
Convertidor analógico a digital (ADC) A pesar de todas las maravillas de la electrónica digital que se conocen en nuestros días, como reproductores mp3, reproductores DVD, teléfonos iphone, bolsas de aire, etcétera, ¡el mundo es analógico! En aplicaciones que van desde electrodomésticos y automóviles modernos hasta aplicaciones médicas e industriales, las señales analógicas provenientes de una diversidad grande de sensores, tienen que ser detectadas, amplificadas y convertidas al dominio digital, a fin de realizar su procesamiento. En todo este proceso, el convertidor analógico a digital (ADC) juega un papel primordial. En esta sección presentamos los fundamentos de la transformación de las señales de mundo analógico al mundo digital vía el ADC. ¿Por qué nos interesa el mundo analógico? Bien, porque existe un incremento en el uso de sensores (los cuales son esencialmente analógicos) y, hoy en día, la variedad de sensores es vasta, ya que incluye sensores de movimiento, presión temperatura, corriente, acústica, humedad, campo magnético, etcétera. Por ende, la mayoría de esas señales analógicas proviene de ellos, y casi todas las tarjetas electrónicas tienen al menos una señal analógica. Para apreciar la transformación del mundo analógico a su representación en el mundo digital, en la figura 3.72 esta se representa con el juego de la “resbaladilla”.
grupo editorial patria®
137
Altura (Unidades físicas)
3 El mágico amplificador operacional
rma
tafo
Pla
o4
Pas
o3
Pas
Perspectiva analógica
Tiempo T1
T0
T2
Plataforma
2 aso
Paso 4
P
o1
Perspectiva digital
Paso 3
Pas
Paso 2
rra
Tie
Paso 1
Tiempo
Tierra
T1
T0
T2
=`^liX*%.) KiXej]fidXZ`e[\cdle[fXeXc^`ZfXjli\gi\j\ekXZ`e[`^`kXc% En la figura 3.72 se aprecia que el deslizamiento por la resbaladilla es continuo en la perspectiva analógica y discreto, o en pasos, en su contraparte digital. Esto sirve como preámbulo para entender otro término importante en el proceso de digitalización, llamado error de discretización o ruido de discretización. En inlgés, este error es conocido como quantization error, por lo que existen algunos autores que en español lo llaman error de cuantización. La figura 3.73 muestra la función de transferencia ideal de un ADC de 3 bits.
Códigos digitales de salida
111 110 101 100 011 010 001 000 0
1
2
3
4
5
6
7
Voltaje analógico de entrada
=`^liX*%.* =leZ`e[\kiXej]\i\eZ`X`[\XcgXiXle8;:[\*Y`kj%
Error de salida
En la figura 3.73, la línea recta representa la función de transferencia para un sistema analógico, donde se tiene una señal analógica de entrada y una señal analógica de salida tanto para el eje X como para el eje Y. Por su parte, para el sistema digital, se tiene una señal analógica de entrada en el eje X y un código digital de salida en el eje Y. Debido a que la salida en el sistema digital debe asumir un código discreto, deberá existir una desviación de la línea ideal cuando la entrada no sea exactamente el valor del código. Esta desviación es el error de discretización o error de cuantización, el cual se representa en la figura 3.74. +1 LSB 000 1 –1 LSB
2
3
4
5
6
7
Voltaje analógico de entrada
=`^liX*%.+
138
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Este error genera un impacto en el desempeño del ADC, pero su análisis va más allá del alcance de este libro; sin embargo, es importante saber que existe y que podría afectar el funcionamiento del ADC. En esta sección nos centramos en las técnicas más usadas en la actualidad para entregar un valor digital proveniente de una entrada analógica. Para realizar los ADC, se han diseñado diferentes topologías de circuitos. Sin embargo, a causa de su desempeño, estos diseños se han reducido a cuatro topologías básicas: los convertidores flash, los convertidores de aproximaciones sucesivas (SAR, por sus siglas en inglés), los convertidores pipline y los convertidores delta-sigma. La figura 3.75 muestra una comparación de velocidad contra resolución para estos cuatro convertidores, donde además también se puede apreciar que los límites entre unos y otros se ha traslapado. 300 M
Flash
Velocidad (muestras/s)
100 M
Pipeline
10 M
Delta Sigma
1M 500 K
SAR
100 K 10 K
Delta Sigma
1K 0 6
8
10
12
14
16
18
20
24
Resolución en bits
=`^liX*%., :fdgXiXZ`e[\8;:j% Un cambio importante y significativo de estos nuevos diseños es la desaparición de un circuito OP AMP independiente, llamado muestra/retención o sample/hold (S/H, por sus siglas en inglés). El S/H se utilizaba como fornt end de la señal analógica de entrada, y su salida se conectaba al ADC para obtener resultados de conversión válidos; asimismo, se requería que la señal analógica de entrada fuera estable, al menos durante el tiempo de conversión de un LSB. Varios avances se han realizado en el desempeño de los ADC, entre los que se incluyen los incrementos en la resolución, los tiempos de conversión más cortos y los voltajes de escala plena reducidos. Adicionalmente, estas configuraciones avanzadas de circuitos ADC han permitido la integración del S/H dentro del convertidor.23 Más allá de la diferencia de velocidad-resolución, existen otros parámetros importantes como el tiempo de lectura del convertidor. Cada convertidor tiene ventajas y desventajas; sin embargo, el dispositivo óptimo depende de la aplicación, es decir de qué se necesita hacer con los datos. En esta sección solo se esboza, de manera general, el funcionamiento del ADC más rápido, el tipo flash, y del ADC de rango más amplio en términos de resolución, el tipo SAR. El ADC tipo flash es el más rápido para convertir una señal analógica a digital, y tal vez es el que presenta la topología de diseño más simple, como lo muestra la figura 3.76. Un ADC flash de N-bit se compone de 2N–1 OP AMPs comparadores, 2N resistencias y una malla lógica que determina el código binario de salida. En esta configuración, VREF es igual al voltaje de escala completa, VFS. Los valores de la cadena de resistencias es tal que el voltaje en la entrada inversora del comparador 1 (COMP1) es ½ de LSB. El valor del resto de los pasos de resistencias se define de tal forma que la entrada inversora de COMP2 es 1½ LSB. Por tanto, el funcionamiento es como sigue: t Cuando VENT < ½ LSB, entonces todas las salidas son cero lógico o estado BAJO. t Cuando ½ LSB < VENT < 1½ LSB, entonces COMP1 1 lógico o estado ALTO. t Cuando ½ LSB < VENT < 2½ LSB, entonces COMP1 y COMP2 1 lógico o estado ALTO. 23
Durante el desarrollo de mi tesis de licenciatura utilicé un circuito S/H y ADC del fabricante Burr Brown. El tamaño del S/H era de aproximadamente 2 cm r 2 cm, y junto con el ADC trabajaban muy bien. El único problema fue un sobrecalentamiento en un pin que realicé al re-alambrar mi circuito ADC para separar las tierras digitales de las analógicas. No apareció el humo mágico de destrucción, pero la parte digital dejo de operar. Menciono esto porque al final de este capítulo realizamos algunas recomendaciones prácticas para trabajar con estos circuitos y evitar, en la medida de lo posible, solicitar otro componente a los jefes inmediatos, a quienes no les va a gustar esta solicitud.
grupo editorial patria®
139
3 El mágico amplificador operacional
VENT R8 VREF
+
COMP7
R4
– +
COMP4
R3
– +
Conversión binaria
R7
–
COMP3
R2
– +
COMP2
R1
– +
COMP1
=`^liX*%.- :fe]`^liXZ`e[\[`j\f[\le8;:k`gf]cXj_% Cuando la magnitud del voltaje de entrada, VENT , se incrementa, la salida del número de comparadores que son 1 lógicos también se incrementa. La función del bloque de conversión binaria es cambiar la salida de los comparadores a un código binario. La ventaja principal del ADC tipo flash es su rapidez; no obstante, una de sus limitantes son los tiempos de propagación de los comparadores y de la red lógica. Pero, la desventaja más importante se encuentra en el número de resistencias (2N) y comparadores (2N–1) requerido, lo cual también impacta en su costo. Por ejemplo, un convertidor de 8 bits requiere de 255 comparadores y 256 resistencias. El ADC de aproximaciones sucesivas es uno de los más usados; este tiene, como parte de sus características fundamentales, el tiempo de conversión relativamente corto, comparado con otras tecnologías que le preceden, como el ADC tipo rampa. El ADC de aproximaciones sucesivas (SAR) es una configuración de hardware que sigue el valor de 1 bit en un esquema de árbol. Conceptualmente, un circuito lógico asume un valor digital inicial, por lo general el valor de media escala almacena esa información en un registro y la aplica a un DAC. Un OP AMP comparador determina si la suposición inicial, aplicada por el DAC, tiene un nivel ALTO o BAJO (1 o 0) y lo reporta al circuito lógico de control para guiar a la siguiente suposición. La figura 3.77 muestra la configuración del ADC tipo SAR. Comparador + Ventrada – VDAC
Registro de control Registro de Aproximaciones sucesivas
Salida digital
DAC
=`^liX*%.. :fe]`^liXZ`e[\_Xi[nXi\[\le8;:k`gfJ8I%
140
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
La primera suposición se determina, como mencionamos antes, a media escala, es decir entre cero y escala plena, lo cual se hace estableciendo en uno el bit más significativo de la palabra digital (MSB, por sus siglas en inglés) que para un DAC de 8 bits es 1000 0000, como se muestra en la secuencia 1 de la tabla 3.5. Secuencia
Palabra digital
Inicio
0000 0000
(0/255) * 0 < 2
Voltaje aproximado
1
1000 0000
(128/255) * 5 2.5 V > 2
2
0000 0000
(0/255) * 5 0 < 2
3
0100 0000
(64/255) * 5 1.25 V < 2
4
0110 0000
(96/255) * 5 1.88 V < 2
5
0111 0000
(112/255) * 5 2.19 V >2
6
0110 1000
(104/255) * 5 2.03 > 2
7
0110 0100
(100/255) * 5 1.95 < 2
8
0110 0110
(102/255) * 5 1.99 < 2
9
0110 0111
(103/255) * 5 2.01 > 2
KXYcX*%, J\^l`d`\ekf[\cmXcfiXeXc^`ZfljXe[fle8;:k`gfJ8I% 5V 19.6 MV . Si el voltaje de entrada VENT 2 V; entonces, al 28 1 realizar la comparación, el valor de salida sería menor que la salida del DAC y el bit MSB se reinicia a cero, como se aprecia en la secuencia 2 de la tabla 3.5. Si VENT es mayor, el MSB se deja en 1. La búsqueda binaria continúa sucesivamente cada ciclo de reloj del circuito digital hasta que se prueba el bit más bajo (LSB). Una de las desventajas del ADC tipo SAR es la velocidad de conversión, sin embargo cada vez aparecen CI con esta configuración y velocidades mayores. Asimismo, existen muchos dispositivos microcontroladores que poseen internamente un OP AMP, para realizar esta función de forma económica, o cuentan con ADC interno. Para este ejemplo, el VFS 5 V, por tanto 1 LSB
Convertidor digital a analógico (DAC) La tarea principal de los convertidores digital a analógico (DAC) es convertir un valor numérico a una señal analógica. De manera general, existen dos esquemas básicos de DAC: el sistema de ponderación binaria continua y el sistema de red de escalera R-2R. El sistema de ponderación binaria consiste en un circuito OP AMP tipo sumador, para el cual se ponderan las ganancias de cada bit discretizado o cuantizado. La figura 3.78 muestra un DAC de 4 bits. VREF R
R/2
R/4
R/8
B1 B2 B3 B4
R – +
VSA
* B1 = Bit menos significativo, B4 = Bit más significativo
=`^liX*%./
grupo editorial patria®
141
3 El mágico amplificador operacional
En el esquema de la figura 3.78 el bit menos significativo (LSB) alcanza la ganancia mínima y el bit más significativo (MSB) alcanza la ganancia máxima. Los interruptores analógicos (IA) activan las entradas al OP AMP y conectan la señal VREF a una ganancia que corresponde a la posición del bit. La ventaja de este esquema es su simplicidad, ya que utiliza únicamente un OP AMP junto con un arreglo de resistencias ponderadas, las cuales pueden depositarse en CI para estos propósitos. La desventaja de este esquema es que al desarrollar un DAC con elementos ponderados discretos, las resistencias requeridas podrían ser de una gama amplia de valores. Además, puede presentarse el caso de no tener mucha flexibilidad en la selección de resistencias, debido a las características prácticas de retroalimentación y operación del OP AMP seleccionado. El DAC por red de escalera R-2R es un circuito en el cual se utiliza un esquema de divisores de voltaje en forma seriada, a fin de generar la ponderación de un voltaje de referencia. En este, los IAs conectan o desconectan la posición relativa de la red a un punto común que puede ser tierra o un punto de voltaje de referencia. Para clarificar estos esquemas, vamos a presentar esta configuración con 2 bits. Existen dos circuitos para implementar este DAC: la red R-2R estándar y la red R-2R invertida. El circuito R-2R de escalera presenta una gran sencillez, ya que se requieren solo dos valores de resistencias, y el número de posibilidades en esquemas, tanto discretos como en integrados, es muy grande. Un inconveniente podría ser el uso de IAs de un solo tiro, dos polos, como se muestra en la figura 3.79. VREF
VREF
2R B1 B2
2R V1
R
R
2R – REQ
2R VSA
+
B1 B2
2R V1
R
R
2R – REQ
+
VSA
=`^liX*%.0
(3.56)
El voltaje equivalente de Thévenin de la red, visto desde el mismo nodo, en circuito abierto, es: VTH (–)
V1 (2 R ) 2 V1 2R R 3
(3.57)
El voltaje intermedio, V1, se obtiene por división de voltajes de la siguiente manera: V1
VREF (3 R % 2 R ) VREF 65 R 6 VREF (3 R % 2 R ) 2 R 65 R 105 R 16
(3.58)
Sustituyendo las ecuaciones 3.57 y 3.58, se obtiene el voltaje de Thévenin, VTH, en función del voltaje de referencia, VREF , por tanto: VTH
2 6 6 VREF VREF 3 16 16
Ahora, asumimos que el código binario es B1B0 10, como se muestra en la figura 3.80.
142
ELECTRÓNICA • MIJAREZ
(3.59)
3 El mágico amplificador operacional
VREF
2R
2R V1
B1 B2
R
2R –
R
REQ
VSA
+
=`^liX*%/'
(3.60)
El voltaje equivalente de Thévenin es: VTH
2 R r VREF VREF 2R 2R 2
(3.61)
Por último, aplicando el principio de superposición podemos obtener la tabla 3.6, la cual representa el funcionamiento del DAC de 2 bits para todos los casos. Código de entrada
Voltajes
B1
B0
VTH
VSAL
0
0
0
0
0
1
0.25 VREF
–0.25 VREF
1
0
0.50 VREF
–0.50 VREF
1
1
0.75 VREF
–0.75 VREF
KXYcX*%- Fg\iXZ`e[\le;8:[\)Y`kI$)I\jk}e[Xi% Para la red R-2R invertida de 2 bits, la red de escalera R-2R se coloca en la parte superior, invirtiendo la posición relativa de los interruptores analógicos, IAs. Igualmente, la red se conecta al voltaje de referencia, VREF , para producir la división de voltaje esperada en el nodo de retroalimentación, a fin de entrar a la terminal inversora del OP AMP, como se muestra en la figura 3.81. VREF R 2R
2R 2R
R
B1 B2
– REQ
+
VSA
=`^liX*%/( ;8:[\)Y`kjZfei\[I$)I`em\ik`[X#Z[`^f[\\ekiX[X9(9'4('%
grupo editorial patria®
143
3 El mágico amplificador operacional
El análisis de este circuito se efectúa usando, igualmente, el teorema de superposición y el teorema de Thévenin para obtener sus voltajes y resistencias equivalentes. Los resultados del DAC con red R-2R invertida son idénticos a los encontrados con la red estándar, los cuales se muestran en la tabla 3.6. Si se desea un DAC de 8 bits R-2R, se puede utilizar un CI que contenga un arreglo de dos valores de resistencias, como se muestra en la figura 3.82. R VREF
2R –
B8
2R
B7
2R
B6
2R
B5
2R
B4
2R
B3
2R
B2
2R
R
VSA
+
R
R
R
R
R
R
R
B1
=`^liX*%/) ;8:[\/Y`kjZfei\[I$)I% De igual modo, también existen DAC completos en CI, como el que se ilustra en la figura 3.82, los cuales usan interruptores analógicos, IAs, de corriente. Estos dispositivos proveen una salida proporcional a la ponderación dada por el código binario de entrada. Algunos CI con estas características son los convertidores tipo DAC 08 y tipo MC1408, entre otros. Estos DACs presentan configuraciones recomendadas para aplicaciones generales, ya que proporcionan una señal de salida en corriente; sin embargo, si es requerido cambiar a voltaje solo se agrega un convertidor de I-V basado en un OP AMP. A manera de ejemplo, vamos a describir un DAC tipo MC1408 con salida de corriente y con salida de voltaje. El DAC MC1408 utiliza la red escalera R-2R y obtiene la corriente de salida de la siguiente manera: I SAL I REF
A A A2 A4 A8 16A 32A 64A 128 256 1
2
3
4
5
6
7
8
Donde AN 1, para la salida ALTA, y AN 0, para la salida BAJA. La corriente de referencia para este CI se obtiene por: VREF I REF RREF La aplicación más sencilla, usando el DAC M1408, es obtenr una salida de corriente como la que se ilustra en la figura 3.83.
144
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
5 V
5 V 0.1 F
5 V
0.1 F 13
MSB
5 6 7 8 9 10 11
LSB
12
RREF
3
2 K
VEE (V)
VCC (V)
0.1 F
2.5 K
A1 A2
VREF
14
A3
MC1408
A4 A5
I0
SaIida
4
A6
RL = 500
A7
–– I0
A8
Datos de entrada
15
VREF
GND 2
1
=`^liX*%/* 8gc`ZXZ`ej`dgc\[\c;8:D(+'/% El MC1408 se calibra, de acuerdo con la hoja de datos, a una corriente de salida ISAL 1.99219 μA de plena escala. Por tanto, suponiendo que la corriente de referencia, IREF 2 μA, entonces la resistencia de referencia se obtine por: RREF
5V 2.5 k 7 2 mA
Si conectamos una resisitencia de carga, RL 500 Ω, entonces el voltaje de plena escala es: VSAL( MAX )
255 (2 mA)(500 7) 0.996 V 256
Si se requiere obtener una salida de voltaje, se usa un OP AMP, como se ilustra en la figura 3.84. +5 V 0.1 μF
–5 V 0.1 μF CCOMP
13
MSB
5 6 7 8 9 10 11
LSB
12
VCC (V+)
3
VEE (V–)
Comp
16
10 V
A1
5K
A2
+VREF 14
A3 A4
MC1408
A5
I0
A6
–– I0
A7 A8
+15 V 10 K
–VREF
4
15
Datos de entrada
5K – 741 741 +
VSA
–15 V
=`^liX*%/+ ;8:D:(+'/ZfejXc`[X[\mfckXa\gifgfiZ`feX[XgfileFG8DG%
grupo editorial patria®
145
3 El mágico amplificador operacional
Las tablas 3.7 y 3.8 ilustran la forma de compensar y calibrar el DAC tipo DAC08 o MC1408, de acuerdo con la información proporcionada por el fabricante, en este caso ON semiconductors. RREF (kΩ)
CCOMP (pF)
1.0
15
2.5
37
5.9
75
KXYcX*%. I\j`jk\eZ`Xj[\i\]\i\eZ`XpZXgXZ`kfi[\Zfdg\ejXZ`e%
B1 B2 B3 B4 B5 B6 B7 B8
VSAL (V)
Escala completa
1 1 1 1 1 1 1 1
4.96
Escala de cero
1 0 0 0 0 0 0 0
0.00
Negativo de escala completa (1LSB)
0 0 0 0 0 0 0 1
–4.96
Negativo de escala completa
0 0 0 0 0 0 0 1
–5.00
KXYcX*%/ :Xc`YiXZ`ekg`ZX[\c;8:D:(+'/% Existen otros DACs que pueden ser configurados para operación unipolar (0-10 V) o bipolar (–10 V a 10 V), con mayor resolución, como el AD667 de 12 bits. Los DACs pueden ser utilizados como periféricos de sistemas digitales basados en microprocesadores o microcontroladores. Otra vez, este es uno de los tópicos que cubriremos en el siguiente capítulo: Principios de electrónica digital y microprocesadores.
LAS
MISTERIOSAS TIERRAS
La reducción de ruido es uno de los aspectos más importantes en la mayoría de los diseños electrónicos. Al igual que las restricciones de potencia, los cambios en la temperatura, las limitaciones de tamaño y los requerimientos de rapidez y exactitud, el ruido es un factor omnipresente que debe ser tomado en cuenta para realizar diseños exitosos. Existen muchas fuentes de ruido, sin embargo, las generadas dentro del circuito o sistema electrónico es responsabilidad del diseñador y pueden afectar el desempeño total del circuito. Existen muchos artículos, extensas notas de aplicación e incluso libros que tratan el tema de las tierras. Pero, continuando con el sentido de este libro, vamos a tratar de generar un entendimiento intuitivo acerca de las misteriosas tierras. Así pues, empezamos definiendo el concepto de tierra. La tierra se considera un punto de referencia para todas las señales de un sistema o una trayectoria de retorno para las corrientes eléctricas de un circuito. Idealmente, la tierra tiene un voltaje, mejor conocido como diferencia de potencial, de cero volts, en todas partes que se encuentre. En el mundo cotidiano, la tierra no es otra cosa que una señal transportada por conductores, y los conductores reales tienen cierta impedancia. Las corrientes que circulan esta tierra causan que la diferencia de potencial a través del conductor sea diferente en todos los puntos. Una “buena” tierra se obtiene manteniendo la impedancia del conductor (por lo general, cobre) lo más baja posible, lo cual minimiza la diferencia de potencial en el mismo. Lo anterior se lleva a cabo dedicando una capa de la tarjeta del circuito impreso (PCB, por sus siglas en inglés) únicamente como plano de tierra, donde un área grande de cobre reduce la impedancia. Sin embargo, tenemos que recordar que la impedancia, del plano de tierra o de un cable conductor, contiene, además de resistencia, una componente de capacitancia o inductancia. Con frecuencia, al plano de tierra se le considera como el mejor retorno de corriente, tanto para la fuente de alimentación como para las señales de interés en el sistema o en la tarjeta electrónica; ello se debe a que este puede proveer un punto o nodo de referencia para convertidores, OP AMP y otros circuitos. No obstante, el uso del plano de tierra no asegura una tierra de “alta calidad” para circuitos de CA.
146
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Así, por ejemplo, la resistencia de CD de un cable aplica únicamente a muy bajas frecuencias y es directamente proporcional a su longitud. Considérese que la resistencia de un cable recto de 3 metros del número 12 (diámetro 2.56 mm) es aproximadamente 0.015 Ω, como lo muestra la figura 3.85. Por otro lado, la inductancia de un cable es casi independiente de su diámetro, pero es directamente proporcional a su longitud, y se incrementa cuando existen curvas o lazos. Por ejemplo, el cable de 3 metros del número 12 tiene una impedancia de 30 Ω a 1 MHz, como se ilustra en la figura 3.85. Si sustituimos este cable por uno de media pulgada de diámetro (12.7mm), la impedancia se reduce ligeramente a 25 Ω. 10K
Impedancia (ohms)
3K 1K 300 100 30 10 3.0 1.0 0.3 0.1 0.03 0.01 100
1K
10K
100K
1M
10M
100M
Frecuencia (Hertz)
=`^liX*%/, >i}]`ZX[\`dg\[XeZ`Xmj%]i\Zl\eZ`XgXiXleZXYc\i\Zkf[\*d[\ced\if()% Adicionalmente, un cable puede resonar, es decir se puede convertir en una antena irradiando energía, cuando su longitud es un cuarto de su longitud de onda, ¼ λ. Para el cable de 3 metros, esto sucedería a aproximadamente a: 25 MHz, f
C 3 x108 L 12 m
Para desmitificar un poco estas misteriosas tierras, vamos a usar un circuito muy simple, construido en una tarjeta de 2 capas, y el cual tiene una fuente de corriente de CD y de CA en la capa superior que es conectada al punto 1 en un extremo. Esta fuente de corriente se conecta al punto 2 a través de una trayectoria de cobre, también llamada pista, en forma de U, como se muestra en la figura 3.86. En la figura se observa cómo ambos puntos van a través del PCB y se conectan al plano de tierra. Idealmente, la impedancia en la trayectoria en forma de U es cero y el voltaje que aparece entre los puntos conectados de la fuente de corriente debería ser cero.
Punto 2
Punto 1
CD + CA
Capa inferior usada como plano de tierra sólido
Conductor con forma de U
Capa superior a)
b)
=`^liX*%/- X ;`X^iXdX\jhl\d}k`Zf[\leX]l\ek\[\Zfii`\ek\%Y =l\ek\[\Zfii`\ek\:;p:8 Zfe\ZkX[X\eki\cfjglekfj(p)XkiXmj [\leXkiXp\Zkfi`X\e]fidX[\L\e\cG:9#Zfei\kfief[\k`\iiXXkiXmj[\cgcXef[\k`\iiX%
El diagrama esquemático de la fuente de corriente, figura 3.86 a), no muestra estas sutilezas; pero, entendiendo como fluye la corriente en el plano de tierra, del punto 1 al punto 2, hace presentes estas realidades y muestra cómo puede evitarse el ruido de tierra a altas frecuencias.
grupo editorial patria®
147
3 El mágico amplificador operacional
En la figura 3.87 se ilustra cómo fluye la corriente de CD. Como sabemos, la corriente toma la trayectoria de menos resistencia, en este caso del punto 1 al punto 2.
Punto 2
Punto 1
Plano de tierra
CD
Trayectoria de la corriente de CD Conductor con forma de U
Área de lazo para calcular la inductancia Capa superior
=`^liX*%/. KiXp\Zkfi`X[\cXZfii`\ek\[\:;#[\cglekf(Xcglekf)% Como se aprecia en la figura 3.87, algo de la corriente de CD se dispersa, pero solo una cantidad pequeña de esa corriente fluye a una distancia sustancial de esta trayectoria. Por otro lado, es importante resaltar que la corriente de CA no toma la misma trayectoria de menos resistencia, sino que toma la trayectoria de menos impedancia, la cual depende de la inductancia. La inductancia es proporcional al área del lazo creado por el flujo de corriente, esta relación puede ilustrarse por la regla de la mano derecha y el campo magnético, como se muestra en la figura 3.88.
Oposición bucle exterior
Líneas de flujo alrededor del alambre superior
Refuerzo en el interior de bucle Líneas de flujo alrededor del alambre inferior
Oposición bucle exterior
=`^liX*%// Ce\Xj[\ZXdgfdX^ek`Zfp\ccXqf`e[lZk`mf% Dentro del lazo, la corriente produce líneas de campo magnético que se suman constructivamente. Sin embargo, lejos del lazo existen líneas del campo magnético que se suman destructivamente; por esta razón, el campo magnético se encuentra principalmente dentro del lazo. Entre más grande sea el lazo, mayor será la inductancia; esto significa que para un nivel de corriente dado, se almacena más energía magnética y se tiene una impedancia mayor. Como se recordará del capítulo 1, la impedancia inductiva es XL 2πfL; por tanto, la impedancia se incrementa con la frecuencia y, por ende, también se incrementa el voltaje. La pregunta, entonces, es: ¿cuál trayectoria escoge la corriente en el plano de tierra? Naturalmente, la trayectoria de menor impedancia. Considerando el lazo formado por la pista en forma de U en la capa superior, el plano de tierra en la capa inferior y despreciando la componente resistiva del cobre, la corriente de CA de alta frecuencia fluirá por la trayectoria de menor inductancia, por tanto, la de menor área. En el ejemplo de la figura 3.87, la trayectoria con menos área es, evidentemente, la pista en forma de U y la porción del plano de tierra directamente debajo de la pista.
148
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
En la práctica, la resistencia del plano de tierra causa que, a bajas o medianas frecuencias, la corriente fluya entre el plano de tierra y directamente en la pista de la capa superior. Sin embargo, el regreso de la corriente casi se desarrolla todo en la pista de la capa superior, incluso con frecuencias tan bajas como 1 MHz o 2 MHz. Una vez que se entiende el retorno de corriente en el plano de tierra, los problemas de distribución de pistas (layout, en inglés) se pueden identificar y corregir. De esta forma, si se identifica una trayectoria como crítica, se tratará de mantener corta y alejada de las líneas digitales. En tanto, si la pista tiene menos importancia, incluso, se puede cortar el plano de tierra y usar un camino que no afecte circuitería sensible. Desafortunadamente, resulta que la inductancia se introduce en ambos retornos de las señales, la pista en U y el plano de tierra; esta última produce que ambos lazos sean mayores. Para señales típicas TTL (lógica de transistortransistor, por sus siglas en inglés), la diferencia de potencial puede ser de cientos de milivolts, suficiente para comprometer el desempeño de un ADC de 8 o 12 bits. Una solución simple, no estética, es conectar un cable atravesando el plano de tierra, para mantener el lazo pequeño. Otro aspecto importante es la distribución de potencia en la tarjeta electrónica. Las líneas de la fuente de alimentación se tratan como líneas de transmisión, y estas deben de mantener la impedancia característica tan baja como sea L posible . Para mantener esta relación pequeña, la inductancia se reduce y la capacitancia se incrementa, por C medio del uso de un plano de tierra bajo las líneas de alimentación; adicionalmente, la capacitancia se puede incrementar seleccionado capacitores de desacoplo (bypass capacitors) en lugares críticos, como se describió antes. Si se conecta un capacitor de desacoplo de 0.l μf entre los pines de alimentación, se reducirá su impedancia.
Tierras digitales y analógicas En esta sección consideramos la importancia que tienen la distribución y la configuración geométrica de las tierras analógicas y digitales, a fin de asegurar la integridad de las señales de interés y reducir el ruido en diseños que incluyen señales mezcladas, es decir diseños de módulos que contienen tanto componentes analógicos como digitales, como los convertidores ADC y DAC. Muchos diseñadores separan o dividen el plano de tierra en dos secciones: una digital y una analógica, como se muestra en la figura 3.89. En esta división, los circuitos analógicos se localizan en la sección del plano analógico y la porción digital del sistema se encuentra en la parte digital. Por tanto, las dos tierras se unen en la fuente de alimentación del sistema.
A/D
Tierra analógica
Tierra digital ?
AGND DGND
?
Fuente de poder
=`^liX*%/0 ;`m`j`e[\cgcXef[\k`\iiX#le`[f\ecX]l\ek\[\Xc`d\ekXZ`e%
grupo editorial patria®
149
3 El mágico amplificador operacional
Por lo general, los convertidores DAC o ADC dividen sus tierras y disponen de dos terminales en su distribución de pines: una llamada tierra analógica (AGND) y otra llamada tierra digital (AGND); sin embargo, su conexión no consiste simplemente en conectar las terminales de tierra a su correspondiente sección del plano de tierra. Debido a que AGND y DGND no están conectadas dentro del CI, la impedancia interna sería muy alta; por tanto, los fabricantes de convertidores consideran que se debe usar una impedancia externa muy baja para conectar las terminales de tierras AGND y DGND, con el propósito de hacerlos funcionar adecuadamente. Las terminales AGND y DGND de un convertidor deben unirse en el convertidor o su desempeño no será el adecuado. En términos de cómo se conectan estas tierras, existen tres posibilidades: 1. Conectar las terminales de tierra analógica y digital del convertidor a su respectivo plano, y debajo del convertidor unir los planos como se muestra en la figura 3.90.
A/D
Tierra analógica
Tierra digital AGND DGND
Fuente de poder
=`^liX*%0' ;`m`j`e[\gcXefj[\k`\iiXZfeZfe\o`e[\YXaf[\cZfem\ik`[fi8;:% Idealmente, el punto de conexión de la figura 3.90 debería ser donde la tierra de la fuente de alimentación se conecta, para crear una tierra “con forma de estrella”, aunque en la mayoría de los sistemas es poco práctico. Técnicamente, lo anterior crea un lazo de tierra no deseado, pero si las corrientes fluyen por debajo del convertidor son sus propios retornos, entonces no habría ningún problema. 2. Conectar las terminales de tierra del convertidor, en este caso ADC, únicamente al plano de tierra analógico, como se muestra en la figura 3.91. Lo anterior pone las terminales de tierra del convertidor en el plano de tierra analógico, creando una ruta alrededor del pin de DGND. Este enfoque funciona con menos eficacia para sistemas con múltiples convertidores, ya que si usamos el enfoque de la figura 3.90 se producirían múltiples lazos de tierra, lo cual es pedir problemas gratis. 3. No dividir el plano de tierra y conectar las tierras del convertidor al plano de tierra común, como se muestra en la figura 3.92. Por tanto, es recomendable diseñar teniendo en mente una adecuada división de las secciones digital y analógica. Cuando se usan dispositivos de baja potencia, el plano de tierra sólido puede ser muy efectivo. Usar los planos de tierra, propiamente, ayuda a reducir trayectorias inadvertidas que pueden producir retornos de corriente de alta impedancia y problemas de interferencia electromagnética. Recuérdese que un convertidor de datos es un dispositivo analógico.
150
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
Parte analógica del plano de tierra
A/D
Tierra analógica
Parte digital del plano de tierra
A/D
Tierra digital AGND DGND
AGND DGND
Fuente de poder
Fuente de poder
=`^liX*%0( 8dYXjk`\iiXj[\leZfem\ik`[filjX[XjZfdfi\kfief
=`^liX*%0) GcXef[\k`\iiXe`ZfZfe\ZkXe[fcXjk`\iiXj\eleX
[\cgcXefXeXc^`Zf%
j\ZZ`eXeXc^`ZXpleXj\ZZ`e[`^`kXc%
CONSIDERACIONES
Y RECOMENDACIONES GENERALES
En teoría, todos los circuitos de este capítulo funcionan. Pero, más allá de la teoría, en este apartado presentamos algunas consideraciones que nos permiten diseñar con el OP AMP de una manera práctica y hacerlos funcionar a la primera vez. Por tanto, primero se presenta una lista de los problemas asociados con el OP AMP, principalmente cuando se usa un PCB; no obstante, estas recomendaciones se pueden extender a los prototipos que usamos de prueba en el laboratorio. La lista tiene dos categorías: sugerencias generales y las pequeñas trampas donde solemos caer cuando no somos lo suficientemente cuidadosos. 1. Debemos ser cuidadosos con las terminales de alimentación del CI. No se deben usar voltajes muy altos o muy bajos. Las fuentes con voltajes altos pueden dañar la componente. Por el contrario, los voltajes bajos no polarizarán internamente los transistores internos y es posible que el amplificador no funcione en absoluto o no funcione adecuadamente. 2. Debemos asegurarnos de que las fuentes de alimentación negativa y positiva tengan los voltajes que se espera, de acuerdo con las especificaciones del OP AMP. Algunas veces se usan dos baterías comerciales para proporcionar los voltajes VCC y –VCC , como se muestra en la figura 3.93. No dude, use un voltímetro entre las dos fuentes y entre cada fuente y tierra para verificar.
+9 V
Tierra
–9 V
+Vs
–Vs
+
–
Alcalina
9V
+
–
Alcalina
9V
=`^liX*%0* :fe\o`e[\[fjYXk\iXjgXiXgifgfiZ`feXicfjmfckXa\j[\"M::pÆM::\eleFG8DG%
grupo editorial patria®
151
3 El mágico amplificador operacional
3. Como se vio en la sección anterior, las místicas tierras no son de confiar, especialmente si usan componentes digitales. Si su circuito tiene mucha circuitería digital, considere separar las tierras analógicas de las digitales y, de ser posible, use planos de tierra. Es muy dif ícil, por no decir que imposible, eliminar el ruido digital de conmutación de una señal analógica. 4. Use capacitores de desacoplo tan cerca como sea posible de las terminales de alimentación del CI. Para OP AMP que operan con anchos de banda de hasta 1 MHz, los capacitores de 1 μF son apropiados. Algunas veces se usan capacitores más pequeños, por ejemplo de 0.1 μF, principalmente cuando los anchos de banda del CI, digitales o analógicos, son de decenas a cientos de megahertz. La figura 3.94 muestra una tarjeta electrónica con sus capacitores de desacoplo cerca de las terminales de alimentación de un CI. También es recomendable usar un capacitor de 10 μF en la fuente de alimentación. :XgXZ`kfi[\'%(μ=
=`^liX*%0+ KXia\kX\c\Zkie`ZX\ecXhl\j\`e[`ZXcXgfj`Z`e[\leZXgXZ`kfi[\[\jXZfgcf[\dfekXa\jlg\i]`Z`Xc% 5. Use las pistas de las entradas del OP AMP tan cortas como sea posible. Si tiene la costumbre de usar las tabletas blancas con perforaciones (protoboard), debe estar consciente de que existen capacitancias e inductancias que pueden causar ruido. Si tiene la oportunidad de hacer un PCB, estas cuestiones de ruido se reducirán bastante, a excepción de esos pequeños “vuelcos del destino” que suceden con algunas pistas.24 6. Existen varios símbolos para el uso de tierras. Como sabemos, las tierras sirven como trayectoria de retorno de las corrientes, tanto de las señales como de los voltajes de alimentación de los equipos, y para interconexión entre tarjetas electrónicas o equipos. Muchos diseños electrónicos usan una tierra única de retorno de las corrientes, la cual actúa como referencia para todas las señales. Por lo general, la tierra de la alimentación y la tierra de las señales se unen a través del encapsulado o la caja del equipo y se le llama tierra de chasis. Algunos autores usan la distinción entre tierra analógica y tierra digital, lo cual considero buena práctica. La figura 3.95 muestra estos símbolos.
K`\iiX[\cXj\Xc XeXc^`ZX
K`\iiX[\ Z_Xj`j
K`\iiX [`^`kXc
=`^liX*%0, JdYfcfjgXiXcXjk`\iiXj% Resumiendo, en este capítulo se estudió un juego de bloques básicos basados en el mágico OP AMP. Existen muchos otros circuitos basados en OP AMPs que permiten mostrar el ingenio de los diseñadores, pero debido a su gran 24
Existen muchas historias urbanas en los laboratorios del mundo acerca de estos “vuelcos del destino”. Por ejemplo, si se tiene un OP AMP en un protoboard sin ningún capacitor, y la resistencia de retroalimentación se coloca entre dos pines adyacentes, la capacitancia de fuga de esos pines puede prevenir la oscilación del circuito. Finalmente, cuando se pasa el diseño a un PCB, se podría tener una oscilación en el OP AMP. En alguna ocasión, revisando las conexiones de un PCB con un estudiante, nos aseguramos de que no existieran cortos, las conexiones fueran correctas, la correcta localización de los capacitores de desacoplo, etcétera; sin embargo, no nos percatamos de que la pista, de una señal de varios megahertz, daba una vuelta extraña entre sus conexiones. El resultado fue errores aleatorios de esa señal, por lo que se tuvo que hacer otro PCB.
152
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
variedad sería imposible describirlos. Sin embargo, siguiendo el tenor de este libro, se optó por fomentar los conceptos fundamentales que ayudan a entender estos bloques analógicos; adicionalmente, se sentaron las bases para entrar al mundo digital que se trata con detalle en el capítulo 4.
DATOS IMPORTANTES DEL CAPÍTULO ± Las entradas del OP AMP presentan una alta impedancia, de tal forma que tienen efectos despreciables en los circuitos a los cuales se conectan. ± Se pueden aplicar diferentes voltajes a las entradas de los OP AMP. ¡No tienen que ser iguales! ± La ganancia de lazo abierto de un OP AMP es muy alta. ± Debido a su alta ganancia de lazo abierto y a las limitaciones de salida del OP AMP, si una entrada es mayor que la otra, la salida se irá al voltaje máximo positivo o negativo. (A esta aplicación se le llama circuito comparador.) ± El OP AMP con retroalimentación negativa es la única configuración en la cual se puede asumir que la entrada V es igual a la entrada V. ± La alta ganancia de lazo abierto de los OP AMP es lo que hace que la ganancia de salida con retroalimentación negativa se iguale aproximadamente a 1/H (red de retroalimentación). ± Los OP AMP se crearon para facilitar la amplificación de señales, así que no se complique la vida. ± La primera etapa de un OP AMP es el par diferencial o amplificador diferencial. ± El amplificador diferencial tiene dos entradas: una inversora ( ) y una no-inversora (). ± El amplificador diferencial rechaza o atenúa con fuerza las señales que son comunes a ambas entradas. ± La Razón de Rechazo de Modo Común (CMRR, por sus siglas en inglés) se obtiene dividiendo la ganancia de voltaje diferencial Ad entre la ganancia de voltaje de modo común ACM. ± Al OP AMP se le considera un amplificador de alta ganancia directamente acoplado. ± Cuando el voltaje de salida se encuentra entre ±VSAT , el voltaje de entrada diferencial VED es tan pequeño que se considera cero volts. ± La frecuencia de corte de lazo abierto de un OP AMP es la frecuencia a la cual la ganancia de voltaje de lazo abierto AVOL se reduce a 70.7% de su valor máximo. ± La frecuencia a la cual la AVOL 1 se llama fUNITARIA.
± La especificación del slew rate (SR) indica qué tan rápido puede cambiar el voltaje de salida y se especifica en V/μs. ± La distorsión inducida por el SR produce una forma de salida triangular (amplitud reducida y forma de onda distorsionada). ± La especificación de settling time nos indica el tiempo que le toma al OP AMP estabilizarse en su salida, dentro de una banda de error, considerando una entrada escalón. ± El parámetro CMRR en el OP AMP está determinado por el amplificador diferencial y nos indica, en la salida, cuántas veces la señal de entrada diferencial es más grande que la señal de entrada de modo común. ± El parámetro PSRR muestra la capacidad de un OP AMP para eliminar cualquier señal de alta frecuencia que aparezca en la fuente de alimentación. ± A la entrada de los OP AMP el ruido puede ser generado por voltaje, por corriente de polarización y por resistencias. ± La mayoría de los circuitos con OP AMP usan retroalimentación negativa, con la cual se estabiliza la ganancia de voltaje y se mejora el ancho de banda y las impedancias de voltaje y corriente. ± El OP AMP inversor tiene una ganancia de lazo cerrado, AVL –RRETRO/RENT . El signo negativo indica que VSAL y VENT tienen un desfasamiento de 180°. ± El OP AMP no inversor tiene una ganancia de lazo cerrado, AVL 1 RRETRO/RENT . El OP AMP seguidor es la configuración de ganancia unitaria del OP AMP no inversor. ± El OP AMP sumador es el circuito cuya salida es la suma negativa de todas sus entradas. ± Un OP AMP diferencial es un circuito que amplifica la diferencia entre dos voltajes de entrada. ± El amplificador de instrumentación es una versión mejorada en especificaciones de un OP AMP diferencial; este puede basarse en dos o tres OP AMP. ± Los amplificadores de instrumentación en CI tienen una alta escala de integración (es decir, una gran cantidad de transistores); aunque sus especificaciones técnicas distan de las ideales, comúnmente son
grupo editorial patria®
153
3 El mágico amplificador operacional
± ±
±
±
±
±
±
± La impedancia de un cable conductor o de un plano conductor usada como tierra tiene, además de resistencia, principalmente inductancia, L, la cual es proporcional al área del lazo creado por el flujo de corriente. Como la impedancia inductiva es XL – 2πfL, también es dependiente de la frecuencia. A altas frecuencias, la impedancia crece y pueden aparecer diferencias de potencial en la tierra, las cuales se traducen en ruido. ± Las líneas de la fuente de alimentación se tratan como líneas de transmisión, por lo que deben mantener la impedancia característica tan baja como sea L posible . Para mantener esta relación pequeC ña, la inductancia se reduce al usar un plano de tierra debajo de las líneas de alimentación; adicionalmente, la capacitancia se puede incrementar usando capacitores de desacoplo. ± El OP AMP con las características ideales ¡no existe! Pero, si alguien lo diseñará pensando en hacerse muy rico, también sería en sus sueños, porque el costo ideal sería cero pesos. De modo que atienda las recomendaciones prácticas para trabajar con los OP AMP reales y familiarícese con las hojas de datos de los fabricantes.
mucho mejor que las provistas por los OP AMP de propósito general. Un filtro activo basado en un OP AMP provee ganancia de voltaje y del filtrado. Un filtro activo de primer orden solo usa un componente activo y su salida cambia a una taza de 10 dB/ década después de la frecuencia de corte. Un circuito OP AMP comparador compara el voltaje de entrada de una de sus terminales con otro voltaje de referencia en la otra entrada; no usa retroalimentación y su salida es ±VSAT . Un circuito Schmitt trigger es un OP AMP comparador que usa retroalimentación positiva para eliminar la operación errática del circuito causada por ruido. Los OP AMP pueden usarse en conjunto con diodos para rectificar señales muy pequeñas, del orden de los milivolts. Los OP AMP pueden usarse para realizar convertidores ADC y DAC, y para entrar del mundo analógico al digital y viceversa. En estos convertidores, el bit menos significativo determina su resolución, VFS 1LSB N , más no su exactitud. 2 1 El uso adecuado del sistema de tierras en un circuito electrónico reduce el ruido interno. Una buena tierra se obtiene manteniendo la impedancia del conductor tan baja como sea posible.
PROBLEMAS
DEL CAPÍTULO
3 cero al inicio y se aplicará un voltaje VENT 0.15 V en su entrada no-inversora, V, como se muestra en la siguiente tabla. Usando la tabla 3.9 (en Excel), complete los cálculos restantes y grafique el voltaje de salida, VSAL, con respecto a VENT.
3.1 Con el objetivo de obtener un entendimiento intuitivo de la retroalimentación negativa, se usará un OP AMP configurado como amplificador. Para esto, se asignarán valores a las ganancias, G 200 000 y H 10, se asumirá que la entrada negativa (V ) es
VSUMA o VERROR
G
VENT
H
Tiempo
G
H
VENT
V−
(VENT) − (V−)
VSAL
0 1 2
200 000 200 000 200 000
10 10 10
0 0 0.15
0 0 0
0 0 0.15
3
200 000
10
0.15
4
200 000
10
0.15
5
200 000
10
0.15
0 0 0 0 V –>VSAT() –> 0.5 V 0.5 0.01 V –>VSAT() –> 1 V 1 1 V >VSAT() > 1.3 V 1.3 1.3 V >VSAT() > 1.6 V
VSAL
(Continúa)
KXYcX*%0
154
ELECTRÓNICA • MIJAREZ
3 El mágico amplificador operacional
(Continuación)
Entrada no-inversora
+
Entrada inversora
–
Tiempo
G
H
VENT
6
200 000
10
0.15
7
200 000
10
0.15
V−
(VENT) − (V−)
VSAL 1.6 1.6 V >VSAT( ) > 1.4 V
Salida
1.4 1.4 V >VSAT() > 1.5 V
H
8
200 000
10
0.15
1.5
9
200 000
10
0.15
1.5
KXYcX*%0 3.2 Del siguiente circuito se requiere calcular la corriente de cola IT , a fin de obtener la IE, la ganancia de voltaje de modo diferencial, Ad, el voltaje de CA de salida, la CMRR en decibeles y la ganancia de voltaje de modo común, ACM.
3.8 Explique qué significado tiene que un OP AMP presente una CMRR 100 dB.
3.9 a) Con base en la ecuación 3.28, derive una fórmula exacta para la ganancia de un OP AMP configurado como inversor.
V:: 15 V "M CC4(,M
b) Si RENT 1 kΩ, RRETRO 10 kΩ, y AVOL 104, evalúe la ganancia de este amplificador inversor.
c) Compare el resultado del inciso b) con el resultado ideal obtenido por la ecuación 3.29.
15 k IRC:4(,bΩ
d) Calcular el voltaje de entrada diferencial VED. MSAL V J8C
3.10
Q2 H *
Q H1
(
3.11 MVENT 15 mVpp
3.12 12 k IR
V:: 15 V ÆM CC4(,M
=`^liX*%0- 3.3 En un amplificador diferencial, ¿cómo se relaciona la corriente de emisor, IE, de cada transistor con respecto a la corriente de cola?
3.4 Un OP AMP tiene un voltaje de saturación de VSAT
Calcule ZENT(CL) y ZSAL(CL) de un OP AMP configurado como circuito seguidor de voltaje, si RENT 2 MΩ, AVOL 100 000 y ZSAL(OL) 40 Ω. Explique por qué es importante utilizar un circuito seguidor de voltaje. a) Un sensor, considerado como fuente de voltaje, presenta un rango de voltaje de 0-2 VPP y una capacidad de corriente de 500 μA, como se muestra en la figura 3.97. El sensor se conecta a una carga RL 200 Ω. Calcule la máxima oscilación de salida en la carga. b) Utilice un OP AMP 741 como seguidor de voltaje entre el sensor y la carga; de acuerdo con su gráfica de voltaje de oscilación de salida vs. impedancia de carga, determine la máxima oscilación en la carga.
±10 V y una ganancia de lazo abierto AVOL 100 000. Determine el voltaje de entrada diferencial, VED , requerido para obtener los voltajes de saturación.
J\ejfi Sensor 0-2 VGGPP '$)M @ 500 A 7,''μ8
3.5 Un OP AMP tiene un AVOL 100 000. ¿Cuál es el
RILC4)''Ω 200
AVOL a la frecuencia de corte?
3.6 Calcule la frecuencia máxima para un OP AMP que tiene un slewrate SR 5 V/μs y un voltaje pico de salida VP 10 V.
3.7 Determine el valor mínimo de slewrate (SR) de un
+
J\ejfi Sensor 0-2 VGGPP '$)M @ 500 A 7,''μ8
OP AMP para manejar sin distorsión una señal sinusoidal con una frecuencia f 70 kHz y un voltaje de pico VP 5 V.
grupo editorial patria®
–
200 IRLC4)''Ω
=`^liX*%0.
155
3 El mágico amplificador operacional
3.13
Para un OP AMP no–inversor, ¿cuál es el valor de entrada diferencial, VED, para fines prácticos?
3.14
¿Cómo es la relación de fase entre el voltaje de salida y el de entrada para un OP AMP inversor? Explique por qué.
3.15
¿Cuál es el efecto de la retroalimentación negativa en la impedancia de salida del OP AMP?
3.16
¿Cómo se relaciona la ganancia fCL con la ganancia ACL?
3.17
MV)24Æ,M 5 V MV*34"*M 3 V
– A1
VX
+
RRETRO 10 k
– A3
R2 1 k
B
VY
+
A2
–
IR(4('bΩ 1 = 10 k IR)24*bΩ = 3 k
–
I*R4(%,bΩ 3 = 1.5 k MVJ8C SAL
+
=`^liX*%(''
3.21 Del siguiente circuito amplificador diferencial, calcule el voltaje de salida, VSAL , si:
a) VX 0.5 V y VY –0.5 V. b) VX 0.2 V. c) VY 0.2 V.
3.22 3.23 3.24
R1 R2 RRETRO R3
R1 = 1 k
En un filtro activo pasa altas, de primer orden, indique cuál es la frecuencia de corte y cómo se comporta la ganancia ACL con respecto a la frecuencia. ¿Qué beneficios tiene la retroalimentación positiva en un circuito Schmitt trigger? Diseñe un circuito de precisión detector de picos negativos basado en un OP AMP. Diseñe un circuito basado en un OP AMP que pueda manejar cargas conmutadas de 1 A. Calcule el voltaje de histéresis, VH, del circuito de la siguiente figura, si R1 1.5 kΩ y R2 250 kΩ. +VCC = 15 V
VENT
RRETRO 10 k
–
Vx
+
VSAL
R2 = 1 k
+ RL = 100 k
VSAL +Vsal VSAL = ±Vsal
=`^liX*%00
156
R2
R1
R3 = 10 k
3.19
VSAL = ±Vsal –VCC = 15 V
– Vy
VSAL
+ R3 10 k
=`^liX*%0/
Nota:
R1 1 k A
3.20
3.18
Amplificador diferencial
Obtenga el voltaje de salida, VSAL, del siguiente circuito sumador inversor. RRETRO 10 k II
VM1(4"(M 1 V
Etapa “buffer”
LTP
¿Cuál es el papel principal de los seguidores de voltaje A1 y A2 en el amplificador de instrumentación de la siguiente figura? Indique qué ventajas tiene usar un amplificador de instrumentación con respecto a un OP AMP de propósito general.
ELECTRÓNICA • MIJAREZ
UTP
VENT
–Vsal
=`^liX*%('(
3 El mágico amplificador operacional
3.25
Mencione las ventajas y las desventajas principales de un sistema analógico con respecto a un sistema digital.
3.26
Argumente por qué se dice que una señal analógica tiene una resolución infinita y cómo se obtiene la resolución de una señal digital.
3.27
Explique la diferencia entre resolución y exactitud en convertidores ADC y DAC.
3.28
Un sensor de temperatura, como el que se muestra en la siguiente figura, con una salida de 20 μV/°C, se conecta a un ADC con un voltaje de referencia de 5 V. Indique cuál es el la resolución (número mínimo de bits) en el ADC para poder convertir los valores de la señal analógica a digital adecuadamente. VREF
Sensor de temperatura 20 μV/ °C
Salida digital
A DC
se establece a media escala, es decir entre cero y escala plena, lo cual se hace estableciendo en uno el bit más significativo de la palabra digital (MSB, por sus siglas en inglés), que para un DAC de 8 bits es 1000 0000. Complete la tabla hasta que alcance el valor de 3.5 V.
Secuencia
Palabra digital
Inicio
0000 0000
(0/255) * 5 0 3.5 V
1
1000 0000
(128/255) * 5 2.5V 3.5 V
2
0000 0000
3
0100 0000
4
0110 0000
5
0111 0000
6
0110 1000
7
0110 0100
8
0110 0110
9
0110 0111
(Núm. de bits)
=`^liX*%(')
Voltaje aproximado
KXYcX*%(' 3.32
Existen dos esquemas básicos de DAC: el sistema de ponderación binaria continua y el sistema de red de escalera R-2R. Describa su funcionamiento.
3.29
Explique la diferencia en los errores de ganancia y offset con respecto a los errores de no linealidad (INL y DNL).
3.33
Describa qué es un plano de tierra en un PCB y cómo ayuda este a la reducción de ruido a bajas frecuencias.
3.30
Describa las características de un convertidor flash con respecto a un convertidor de aproximaciones sucesivas.
3.34
¿Qué parámetros se toman en cuenta con respecto a las tierras para señales de CA de altas frecuencias?
3.31
Para un ADC de o bit tipo SAR, se requiere digitalizar una entrada de 3.5 V. La primera suposición
3.35
Describa el objetivo de los capacitores de desacoplo.
grupo editorial patria®
157
4 La maravillosa
electrónica digital En el capítulo 3 se estudia ampliamente el tema de la interfaz entre el mundo analógico y el mundo digital. Ahora bien, en este capítulo nos adentraremos en el mundo digital, conformado por los sistemas digitales. Aclarado lo anterior, conviene definir lo que es un sistema digital: “es aquel que procesa elementos discretos, números binarios (unos y ceros), de información. El ejemplo más conocido de un sistema digital es una computadora digital, pero por mucho no es el único. Consciente o no, el ciudadano promedio de las sociedades modernas está en contacto con docenas o quizá hasta cientos de maravillosos sistemas o dispositivos electrónicos digitales. La mayoría de estos dispositivos lleva a cabo incalculables operaciones matemáticas en computadoras, teléfonos celulares, lavadoras y cámaras fotográficas, solo por mencionar unos cuantos. Su ubicuidad es de tal magnitud, que los encontramos hasta en cajas de cereal o en los juguetes de regalo que ofrecen algunas tiendas. Pese a ello, pocos de nosotros sabemos qué operaciones matemáticas realizan y, quizá lo más importante, no tenemos idea de cómo lo hacen.1 Los números binarios y los sistemas digitales son temas básicos para los miembros de la comunidad de las ingenierías eléctrica, electrónica y mecatrónica, quienes, por lo general, asumimos que los entendemos a la perfección. Si usted ya domina este tema, puede pasar directamente al siguiente 1
El hecho de que estemos familiarizados con los números y las operaciones básicas, muchas veces provoca que tendamos a no apreciar el tremendo esfuerzo mental realizado por muchos personajes a lo largo de la historia, para llevarnos al sobresaliente nivel que tenemos hoy en día. En la antigüedad, cuando poca gente sabía contar más allá del número de los dedos de sus manos y pies, cualquiera con conocimientos rudimentarios de matemáticas podía obtener una posición de poder; pero, si esa persona hubiera podido predecir un eclipse, alcanzaría un respeto grande (en especial si llegaba a suceder). De modo que con el conocimiento que tenemos, si se nos diera la oportunidad de viajar en el tiempo al pasado, tendríamos muchas oportunidades de sobresalir en numerosos actividades y empleos.
159
4 La maravillosa electrónica digital
capítulo, pero si tiene dudas, cuando menos puede dar un repaso. Siguiendo el camino trazado para este libro, este capítulo tiene el objetivo de esclarecer los fundamentos de cómo se realizan las maravillas digitales, principalmente como antesala de los sistemas basados en microprocesadores. Entonces, empecemos a maravillarnos. En este capítulo estudiamos: X X X X X X X
“Contando con dedos, piedras, semillas… y los sistemas numéricos.” La lógica de la electrónica digital. Simplificación de circuitos, sumadores y decodificadores. Celdas de memoria y memorias. Dispositivos de tres estados y latches. Uso de cables para representar números. Máquinas de estados.
“CONTANDO
CON DEDOS, PIEDRAS, SEMILLAS… Y LOS SISTEMAS NUMÉRICOS”
La palabra dígito se utiliza, por lo general, para referirse a un número o una cantidad numérica, pero de acuerdo con su origen, este vocablo también significa dedo, ya sea de las manos o de los pies. Por este motivo, no es coincidencia que la primera herramienta que el ser humano utilizó para ayudarse a contar fueron los dedos de las manos. En poco tiempo, sin embargo, crecieron las necesidades de representar cantidades mayores. El uso de pequeñas piedras pudo haber sido utilizado para representar números mayores a los que se pudieran representar con los dedos. Estas piedras pudieron haber sido usadas para enseñar a contar, y tenían la ventaja de ser capaces de almacenar resultados intermedios para su uso posterior. Por lo anterior, tampoco es coincidencia que la palabra “calcular” se derive del vocablo en latín calculare, usada para referirse a los guijarros, piedrecillas lisas y redondeadas por la erosión que abundan a la orilla de los ríos. A lo largo de la historia, los seres humanos hemos experimentado con varios y diferentes sistemas numéricos. Por ejemplo, se puede usar el dedo pulgar para contar las yemas de los dedos de la misma mano: 1, 2, 3 y 4. Pero, también con el pulgar es posible asignar a cada dedo tres números de la siguiente manera: 1, 2, 3 para el dedo índice; 4, 5, 6 para el dedo medio; 7, 8, 9 para el dedo anular, y 10, 11 y 12 para el dedo meñique. Con base en esta técnica, algunos de nuestros ancestros utilizaron el sistema base 12, lo cual explica por qué tenemos palabras especiales como docena, que significa doce, y grosso (gruesa) que significa ciento cuarenta y cuatro (12 r 12 144). El hecho de que tengamos un día de 24 horas, también se relaciona con el sistema base 12. De igual manera, algunos grupos usaron tanto los dedos de las manos como los dedos de los pies, lo cual dio como resultado el sistema base 20; esa es la razón por la cual en la actualidad usamos palabras como score (del inglés), que se utiliza para designar el número 20 o una veintena. Por otra parte, en la antigua Mesopotamia se usó el sistema base 60, del cual se derivan los 60 segundos de un minuto, los 60 minutos de una hora y los 360 grados de un círculo.2 No obstante, el hecho de que tengamos diez dedos en las manos hace que el sistema numérico con el cual estamos más familiarizados sea el sistema decimal, el cual se basa en diez dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;3 la palabra decimal se 2
3
Las culturas mesopotámicas, principalmente los babilonios, usaron el sistema base 60, el cual es un sistema posicional, del que hablaremos más adelante, en este mismo capítulo. Los babilonios también realizaron operaciones aritméticas y algebraicas. Tal vez uno de los aspectos más importantes es el uso de tablas para ayudarse en sus cálculos. Las tablas proveen los números al cuadrado hasta el 59 y al cubo hasta el 32. Por ejemplo el 82 1,4 1 r 601 4 r 600 64. Para multiplicar usaron la fórmula a r b [(a b)2 – (a r b)2]/4. Por lo que solo necesitaban las tablas para realizar la multiplicación de dos números, tomando la diferencia entre los dos cuadrados y al final dividir entre 4. Para la división usaron el concepto del recíproco, a/b a r 1/b, por lo que crearon tablas de recíprocos y posteriormente realizaban la multiplicación. Adicionalmente, existen tablas babilónicas relacionadas con el teorema de Pitágoras, con el cual ya estaban familiarizados. En realidad, cuando se empezó a usar el sistema decimal la cuenta iniciaba con el número uno y fue hasta alrededor del año 600 a.C. que en la India se introdujo el valor y concepto del cero y de los números negativos. Aunque algunos historiadores aseguran que los mayas usaron este concepto unos 300 años antes.
160
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
deriva del latín decam, que significa “diez”. Puesto que este sistema usa diez dígitos, se dice que es base 10 o radix 10 (el término radix proviene del latín y significa raíz).
Sistemas numéricos de posición Para iniciar este apartado vamos a considerar el sistema de numeración empleado por los romanos, donde: I 1, V 5, X 10, L 50, C 100, M 1,000, y así sucesivamente. Por ejemplo, con base en este sistema numérico, el número 24 se representa como XXIV (es decir, dos 10 y un 5 menos un 1, que equivale al número 4). Sin embargo, al paso del tiempo surgió problema con el uso de este sistema y es que conforme la sociedad evolucionaba y se desarrollaba, surgió la necesidad de representar cantidades cada vez más grandes. Para resolver este inconveniente y seguir usando este sistema numérico, se tendría que continuar inventando nuevos símbolos o utilizar una cantidad muy grande de los símbolos ya existentes. En la actualidad, la desventaja más grande de este sistema, es que es dolorosamente dif ícil trabajar con este. Por ejemplo, intente multiplicar CLXXV r DDDCV, y sabrá de lo que estamos hablando. La cultura maya (antigua civilización de la denominada Mesoamérica) usó un sistema vigesimal o base 20, debido a que, presumiblemente, empleaban los dedos de las manos y de los pies para contar, al tiempo que usaban semillas de cacao como dinero, porque eran fáciles de contar y almacenar. Los mayas aportaron dos ideas fundamentales a las matemáticas: el valor de la posición y el concepto del cero. Esta última concepción también fue impulsada por otra gran cultura de la antigüedad: la de la India. Sin embargo, los hindúes lo hicieron unos 300 años después. Cabe resaltar que los mayas contaban desde el 0 (cero) hasta el 19, antes de cambiar al siguiente orden o posición. Los números mayas fueron escritos con solo tres símbolos [véase figura 4.1 a)]. En la figura 4.1 a) podemos apreciar la representación de los números, según la cultura maya: un punto, para representar el 1; una línea, para representar el número 5, y la figura de una concha para representar el 0 (cero). Los siguientes diecinueve números fueron representados como se ilustra en la figura 4.1 b). En el sistema numérico maya un 1 (uno) seguido de un 0 (cero) equivale a veinte. Números mayores al diecinueve, por ejemplo, del 20 al 25, requieren dos niveles o posiciones, como se muestra en la figura 4.1 c). Por su parte, la figura 4.1 d) muestra la representación del número 13 en relieve.
'
(
,
X
)'
)(
Y
))
)*
)+
), [
Z
=`^liX+%( Eld\iXZ`edXpX%X JdYfcfj%Y Eld\iXZ`e[\c(Xc(0%Z Eld\iXZ`e[\c)'Xc),%[ Ed\ifki\Z\#i\gi\j\ekXZ`e\eleX\jk\cX Zfei\d`e`jZ\eZ`XjdXpXj#lY`ZX[X\ele_fk\c[\cgXZ]`Zfd\o`ZXef%
Los números mayas pueden escribirse en dos niveles hasta llegar al 400, ya que a partir del número 401 se requieren de tres niveles, como se muestra en la figura 4.2.
4 r 201 0 r 200 80
5 r 201 0 r 200 100
10 r 201 0 r 200 200
15 r 201 0 r 200 300
1 r 202 0 r 201 0 r 200 400
=`^liX+%) Ed\ifjdXpXji\gi\j\ekX[fjgfi[fje`m\c\j_XjkXXcZXeqXi\c+''#XgXik`i[\ced\if+'( j\i\hl`\i\eki\je`m\c\jfgfj`Z`fe\j%
grupo editorial patria®
161
4 La maravillosa electrónica digital
La técnica usada por los antiguos mayas es conocida como posicional vertical, aunque también fue empleada de manera horizontal en algunas inscripciones. En este sistema numérico, el valor de un dígito en particular depende de sí mismo y de la posición dentro del número,4 como se muestra la figura 4.3.
)') )'( )'' +' )' ' *+'' " ')' " '' 4()''
=`^liX+%* J`jk\dXm`^\j`dXc`e[`ZXe[f\cmXcfi[\ZX[X[^`kfXjfZ`X[fXcmXcfi[\jlgfj`Z`e% Esta es la forma en la que trabaja el sistema decimal o base 10, con el cual estamos familiarizados. Al igual que en el sistema numérico maya, en el sistema decimal cada columna en un número tiene un “peso” asociado, y el valor del número es determinado por la combinación de cada dígito con el peso de su columna, como se muestra en la figura 4.4.
Columna de millares Columna de centenas Columna de decenas Columna de unidades
6 2 4 9
= (6 × 1000) + (2 × 100) + (4 × 10) + (9 × 1) = 6000 + 200 + 40 + 9 = 6249
=`^liX+%+ :fdY`eXZ`e[\[^`kfjp\cg\jfXjfZ`X[f[\jljZfcldeXj\e\cj`jk\dX[\Z`dXc% Otra forma de comprender la representación de los sistemas numéricos de posición es usando el concepto de potencias, como se ilustró en el sistema vigesimal; por ejemplo, 100 10 r 10, que también puede escribirse como: 102, que significa “diez a la potencia de dos” o “diez multiplicado por sí mismo dos veces”. Igualmente, 1 000 10 r 10 r 10 103, 10 000 10 r 10 r 10 r 10 104, etcétera. La figura 4.5 muestra gráficamente este caso. En lugar de hablar de potencias, algunos matemáticos prefieren referirse a este tipo de representación como forma exponencial. Por ejemplo, en el caso del número 104, al número que se está multiplicando (es decir, el 10) se le llama base, mientras que el exponente (el número 4) especifica cuántas veces se va a multiplicar la base por sí misma. Existe un número importante de puntos asociados con los exponentes o potencias que es útil recordar:
4
Aunque la mayoría de los conocimientos científicos y tecnológicos de los mayas ya se habían perdido mucho antes de la llegada de los españoles, el historiador Otto Neugebauer (1899-1990), uno de los más productivos de la historia de las ciencias exactas, consideró que la numeración usada por los mayas es uno de los inventos más fértiles de la humanidad, comparable solo con la invención del alfabeto. Desafortunadamente, debido a la destrucción sistemática de sus manuscritos, no es posible saber de los conocimientos adquiridos por los mayas en otras ramas de las matemáticas, como el álgebra, donde las culturas mesopotámicas alcanzaron gran desarrollo, las cuales llegaron a resolver ecuaciones de segundo y tercer grado empleando un sistema numérico sexagesimal. No obstante, basta visitar Chichen Itzá en México, para ver el esplendor maya relacionado con el término denominado arqueoastronomía, que es el estudio de sitios arqueológicos relacionados con el estudio de la astronomía por culturas antiguas.
162
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Columna de millares Columna de centenas Columna de decenas Columna de unidades = (6 × 103) + (2 × 102) + (4 × 101) + (9 × 100) = 6000 + 200 + 40 + 9 = 6249
6 2 4 9
=`^liX+%, Ljf[\gfk\eZ`Xj[\[`\q% t $VBMRVJFSCBTFFMFWBEBBMBQPUFODJBEF VOP
FTMBCBTFNJTNBFTUPFT1 10. t %FGPSNBFTUSJDUB VOBQPUFODJBEF DFSP OPFTFOSFBMJEBEQBSUFEFMBTFSJFTJOFNCBSHP QPSDPOWFODJØO cualquier base elevada a la potencia de 0 (cero) es la unidad; esto es: 100 1. t $VBMRVJFSWBMPSDPOFYQPOFOUFEF FTSFGFSJEPDPNPel cuadrado del número; por ejemplo, 52 5 r 5 25, donde 25 es el cuadrado de 5. Igualmente, un valor con exponente de 3 es referido como el cubo del número; por ejemplo 43 4 r 4 r 4 64, donde 64 es el cubo de 4. Pero nos estamos desviando, el punto clave aquí es que el peso de las columnas, como se ilustra en la figura 4.5, es en realidad el número del sistema base, lo cual es de particular interés cuando consideremos otros sistemas.
Contar en decimal Contar usando el sistema decimal es relativamente fácil para nosotros, principalmente porque estamos acostumbrados a ello. Comenzando con el 0 (cero), incrementamos la primera columna hasta que llegamos al 9; en ese punto, ya se nos acabaron los dígitos. Por tanto, en la próxima cuenta, reiniciamos la primer columna a 0 (cero) e incrementamos la segunda columna con 1, y continuamos de esa manera, como se muestra en la figura 4.6. 0 1 2 3 : 8 9 10 11 :
=`^liX+%- :fekXi\e[\Z`dXc% Del mismo modo, una vez que alcanzamos el número 99, en la próxima cuenta reiniciamos otra vez la primera columna a 0 (cero) e intentamos incrementar la segunda columna. Pero, la segunda columna ya tiene el 9, así que esta columna también la reiniciamos a 0 (cero) e incrementamos la tercera columna, dándonos como resultado el 100, y así sucesivamente.
El sistema númerico binario El sistema decimal como tal, desafortunadamente, no es el más adecuado para realizar las funciones u operaciones internas de un sistema digital. De hecho, por una variedad de razones que iremos exponiendo en este capítulo, es preferible usar el sistema numérico binario, el cual emplea solo dos dígitos: el 1 (uno) y el 0 (cero).
grupo editorial patria®
163
4 La maravillosa electrónica digital
El sistema binario es un sistema numérico posicional, de modo que cada columna en un número binario tiene asignado un peso, el cual es una potencia del número base del sistema. En este caso, se trata de un sistema base dos, de modo que los pesos de las columnas son: 20 1, 21 2, 22 4, 23 8, etcétera, como se muestra en la figura 4.7. Cuando se trabaja en un sistema numérico diferente al decimal o con una mezcla de diferentes sistemas, como se muestra en la figura 4.7, es común usar subíndices para indicar qué base se está representando. Por ejemplo, 11002 1210 , es lo mismo que indicar: 1100binario 12decimal
Columna de los ochos Columna de los cuatros Columna de los dos Columna de los unos 1 1 0 02
Número binario
Número decimal
= = = =
(1 × 23) (1 × 8) 8 1210
+ (1 × 22) + (0 × 21) + (0 × 20) + (1 × 4) + (0 × 2) + (0 × 1) + 4 + 0 + 0
=`^liX+%. G\jfj\e\cj`jk\dXY`eXi`f[\cfj[^`kfjpcXjZfcldeXj% Otra alternativa que se emplea comúnmente para representar la base de los números es utilizar un carácter o símbolo como prefijo para indicar la base; por ejemplo, %1010, donde el símbolo % indica un valor binario; sin embargo, en realidad existen varias convenciones, solo es cuestión de conocerlas. A menos que se indique de otra forma, si el número no tiene subíndice o prefijo, por lo general se asume que la representación es decimal. Hacia 1940, el científico John Wilder Tukey5 se dio cuenta de que la conjunción de los sistemas digitales y el sistema numérico binario podría ser muy importante. Además de acuñar la palabra software, relacionada con la programación de funciones de control de estos sistemas digitales, Wilder Tukey intuyó que referirse a este dígito como dígito binario era un poco largo, así que buscó alternativas para reducirlo. Entre las opciones se incluyeron binit y bigit, pero eventualmente se decidió por bit, el cual es un término conciso y elegante, de gran uso hasta nuestros días. Así, los valores binarios 10102 y 110010102, se dice que son de 4 y 8 bits, respectivamente. Es muy común agruparlos en 4 bits, por lo que reciben un nombre especial: nibble. De manera similar, con frecuencia se agrupan en 8 bits, así que también reciben un nombre especial: byte. Por tanto, dos nibbles hacen un byte.6
Contando en binario Al inicio, contar usando el sistema binario parece una tortura, pero es más fácil que contar en decimal, solo cuesta un poco acostumbrarse a este. Como en los sistemas posicionales, en el sistema binario empezamos contando desde 0 (cero), y después incrementamos la primera columna a 1 (uno); como es un sistema de base 2, en este punto ya se nos acabaron los dígitos disponibles. Para la siguiente cuenta, reiniciamos la primer columna a 0 (cero), e incrementamos la segunda columna en 1, como se muestra en la figura 4.8. Asimismo, cuando la cuenta alcanza 112 , la próxima cuenta establece la primera columna a 0 (cero) e intenta incrementar la siguiente columna; pero, como la siguiente columna ya tiene un 1, esta también se reinicia a 0 (cero) y se incrementa la tercera columna a 1, resultando el número 1002 . 5
6
John Wilder Tukey (1915 - 2000) es mejor conocido por haber publicado en 1965, junto con James Cooley, un artículo donde explica el algoritmo llamado la transformada rápida de Fourier (FFT, por sus siglas en inglés), considerado de gran importancia en los sistemas de procesamiento digital. En idioma inglés, los términos nibbles y bytes ponen de manifiesto el sentido del humor de los ingenieros en sistemas digitales y computadoras. Sin embargo, en español esto no se aprecia tanto, a menos que los tradujéramos literalmente: dos mordiscos (nibbles) hacen una mordida (byte), o expresáramos: si no lo puedes morder (byte), mordisquéalos (usa nibbles); ni hablar, el humor ingenieril es bastante seco.
164
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Binario
1 1 1 1 1 0
1 1 0 0 1 1 0 :·
Decimal
0 1 0 1 0 1 0 1 0
0 1 2 3 4 5 6 7 8 :·
=`^liX+%/ :fekXe[f\eY`eXi`f%
Aprendiendo las tablas de multiplicar Ahora, vamos a remontarnos a aquellos días en la escuela primaria en los cuales aprendimos las tablas de multiplicar. Probablemente, recordarás aquella rutina de aprender repitiendo, casi cantando, cada una de las tablas, iniciando con la tabla del 2: dos por uno, dos; dos por dos, cuatro, etcétera, hasta llegar a la tabla del 9, obviando la del 10, por su facilidad. Una vez después, las tablas también se repetían de manera descendente y, por último, de manera aleatoria. Bien, la mala noticia es que ahora vamos a hacer un ejercicio similar con las tablas de multiplicar del sistema binario; la buena noticia, es que esto lo podemos aprender en unos cuantos segundos, como se ilustra en la figura 4.9. Esta es la única tabla de multiplicación del sistema binario, tan complejo como se presenta en la figura 4.9; es todo lo que se necesita.
Multiplicación 0 0 1 1
× × × ×
0 1 0 1
= = = =
0 0 0 1
=`^liX+%0 KXYcX[\dlck`gc`ZXi[\cj`jk\dXY`eXi`f%
El sistema numérico hexadecimal Los humanos, por lo general, tenemos una buena percepción de representaciones simbólicas, como palabras y números; en este sentido, el sistema numérico binario nos resulta simple porque emplea solo dos símbolos, el 1 (uno) y el 0 (cero). No obstante, tenemos dificultades para entender el significado de hileras o columnas grandes de ceros y unos. Por ejemplo, el número binario 101010012 no tiene el mismo impacto en nuestra memoria que su equivalente en decimal 169, el cual es más fácil de entender. Desgraciadamente, como veremos después, convertir de binario a decimal puede ser un poco latoso. Por fortuna, cualquier sistema numérico con una base que sea potencia de 2 (por ejemplo, 4, 8, 16, 32, 64, etc.) puede convertirse con facilidad a su equivalente binario y viceversa. En los diseños de las primeras computadoras era común manejar grupos de datos divisibles entre tres: 3 bits, 6 bits, 9 bits, 12 bits, etcétera. En consecuencia, el sistema numérico octal, es decir de base 8, llegó a ser muy popular, principalmente porque cada dígito octal podía convertirse a tres bits. Más recientemente, los sistemas computacionales se han estandarizado a utilizar grupos de bits divisibles entre ocho:
grupo editorial patria®
165
4 La maravillosa electrónica digital
8 bits, 16 bits, 32 bits, etcétera. El sistema octal decayó y el sistema numérico hexadecimal, es decir de base 16, predominó y prevalece hasta la fecha. La razón principal es que cada dígito hexadecimal puede convertirse directamente a cuatro bits. El sistema hexadecimal requiere únicamente 16 símbolos, e invertir en definir nuevos símbolos para este sistema no sería una solución muy eficaz y mucho menos tener que aprenderse todos estos nuevos símbolos. Además, sería impráctico tener que modificar los teclados de cada máquina de escribir o computadora del mundo. Como alternativa a este dilema, en este sistema se usó una combinación de números decimales, del 0 al 9, y de letras mayúsculas del abecedario, de la A hasta la F, como se muestra en la figura 4.10.
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
=`^liX+%(' Cfj(-[^`kfj[\cj`jk\dX_\oX[\Z`dXc%
Contar en hexadecimal El sistema numérico hexadecimal es un sistema posicional; por tanto, las reglas para contar son las mismas que hemos visto en los sistemas anteriores. Así, iniciamos con el 0 y continuamos hasta que se terminan todos los dígitos, en este caso hasta que llegamos a la letra F; entonces, en la próxima cuenta reiniciamos la primer columna en 0 e incrementamos la siguiente columna como se ilustra en la figura 4.11. En la figura 4.11 es posible observar que los números binarios se han dividido en grupos de 4 bits, para enfatizar cada dígito hexadecimal. Esta representación no es típica, porque con frecuencia se realiza de manera mental. También se puede observar que tanto los números binarios como los hexadecimales tienen ceros como prefijos a la izquierda; esta práctica de llenar con ceros un número se usa para ilustrar el número de bits con que se representa dicho valor. Valor Cero Uno Dos Tres Cuatro Cinco Seis Siete Ocho Nueve Diez Once Doce Trece Catorce Quince ……… Dieciséis Diecisiete Dieciocho :
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ………… 16 17 18 :
Binario 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001 0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 0000 1111 ………… 0001 0010 0001 0001 0001 0010
Hexadecimal 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F …………… 10 11 12
=`^liX+%(( :fekXe[f\e_\oX[\Z`dXc%
166
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Combinación de dígitos y peso de columnas en hexadecimal Como con cualquier sistema posicional, cada columna en un número hexadecimal tiene un peso asociado. Los pesos son derivados de la base del sistema; en este caso, la base es 16. Por consiguiente, los pesos de las columnas serán: 160 1, 161 16, 162 256, 163 4 096, y así sucesivamente, como se muestra en la figura 4.12.
Columna de los cuatro mil noventa y seis Columna de los doscientos cincuenta y seis Columna de los dieciséis Columna de los unos 4 F 0 A 10
Número hexadecimal Equivalente decimal
= (4 × 163) + (F × 162) + (0 × 161) + (A × 160) = (4 × 4 096) + (F × 256) + (0 × 16) + (A × 1) = 16 384 + 3 840 + 0 + 10 = 20 23410
=`^liX+%() :fdY`eXZ`e[\[^`kfjpg\jfj[\cXjZfcldeXj\e_\oX[\Z`dXc% Como vimos antes, es una práctica común usar subíndices para indicar el tipo de base que se está usando. Por ejemplo, 4F0A16 20 23410 , significa que el número a la izquierda de la igualdad se encuentra en representación hexadecimal y el de la derecha en representación decimal. Otra alternativa común es utilizar un carácter especial como prefijo para indicar la base. Por ejemplo, $4F0A, donde $ significa que el valor está en hexadecimal, aunque no debe sorprendernos que exista una variedad grande de representaciones.
Conversión entre números hexadecimales y binarios Convertir un número de hexadecimal a binario y viceversa es extremadamente simple. Por ejemplo, si queremos convertir el número $7A5C a binario, lo único que tenemos que hacer es reemplazar cada dígito hexadecimal por su equivalente binario de 4 bits de la siguiente manera: $7 l %0111,
$A l %1010,
5 l %0101,
C l %1100
Por tanto $7A5C en hexadecimal equivale a %0111101001011100 en binario. De manera similar, también es muy fácil convertir un número binario a su representación hexadecimal. Por ejemplo, para convertir el número binario %1100101001010111 a hexadecimal solo tenemos que dividir el número binario en nibbles (grupos de 4 bits) y convertir cada nibble a su representación hexadecimal, esto es: %1100 l $C,
%1010 l $A,
%0101 l $5,
%0111 l $7
Por tanto, el número %1100101001010111 en binario equivale a $CA57 en hexadecimal. Antes de presentar el uso de cables o alambres para representar números binarios, vamos a proveer una revisión general de cómo está conformada la electrónica digital y su lógica.
LÓGICA
DE LA ELECTRÓNICA DIGITAL
Los sistemas digitales están constituidos por una gran cantidad de interruptores microscópicos, hechos principalmente con nuestro activo transistor, que se estudia en el capítulo 2, los cuales se pueden encender y apagar increíblemente rápido, miles de millones de veces por segundo. Los transistores pueden ser conectados de tal manera que pueden
grupo editorial patria®
167
4 La maravillosa electrónica digital
formar elementos lógicos básicos llamados compuertas lógicas. A su vez, una gran cantidad de compuertas lógicas puede conectarse para formar una computadora o un procesador de datos.7 Una de las industrias con crecimiento continuo y sorprendente en los últimos 50 años ha sido la industria electrónica, la cual ha sido aplicada para manipular datos fundamentados en los principios de una lógica llamada lógica booleana.8 La lógica booleana se basa en conceptos muy simples, los cuales, sin embargo, han permitido la creación de sistemas muy complejos y sofisticados.9 Para los ingenieros en electrónica, es relativamente fácil crear compuertas lógicas que puedan detectar, procesar y generar dos niveles de voltaje. Estos niveles de voltaje consideran el valor lógico de 1 como verdadero y el valor de 0 como falso. En un circuito electrónico, un 1 lógico típicamente puede tener el valor de 3 a 5 V, mientras que un 0 lógico puede ser una señal entre 0 y 0.8 V. Los niveles de voltaje dependen del tipo de componente o familia utilizado en la construcción de los transistores y las compuertas. Lo primordial en el mundo lógico es saber que existen únicamente dos estados: el 1 y el 0. El mundo lógico es blanco y negro. Esta es la razón por la que muchos ingenieros obtienen un rápido entendimiento del dominio digital. A la fecha, no me he encontrado con un ingeniero al que no le guste el mundo digital, en el que se siguen reglas predecibles, lo cual, en cierta forma, resulta agradable. Resolver el mundo en dos estados, por supuesto que simplifica las cosas. Sin embargo, es importante hacer notar que en algún punto del circuito digital se tiene que tomar la decisión de si el valor presente, voltaje comúnmente, representa un 1 o un 0.10 En el estudio de la lógica booleana, a todas las posibles combinaciones de entradas de un circuito y sus respectivas salidas se les conoce como tabla de verdad. Por lo general, en esas tablas de verdad las entradas se localizan a la izquierda y las salidas a la derecha. A algunos de los componentes básicos que llevan a cabo estas tablas de verdad se les llama compuertas lógicas, de las cuales vamos a estudiar las elementales.
Compuerta inversor (NOT) La compuerta inversor, como su nombre lo indica, simplemente invierte cualquier señal que se presente en su entrada. Si se pone un 1 en su entrada, su salida será un 0 y viceversa. Para crear esta compuerta vamos a usar un transistor en corte y saturación, como se muestra en la figura 4.13. Si VENT 0 V, entonces VSAL será casi 5 V. Si VENT 5 V, la salida VSAL será casi 0V. Cabe resaltar aquí que estamos diciendo casi 5 V y 0 V, porque la salida no llega a ser exactamente 0 V o 5 V. Sin embargo, esto no importa si el valor se mantiene por debajo del máximo voltaje permitido para el 0 lógico y por encima del mínimo permitido para el 1
7
8
9
10
Las computadoras o procesadores pueden construirse usando sistemas mecánicos (hidráulicos o neumáticos), ópticos o electrónicos, los cuales pueden procesar datos utilizando técnicas digitales o analógicas. Sin embargo, la gran mayoría implementa estos sistemas usando electrónica digital, que es el tema de este capítulo. George Boole (1815-1864), matemático y filósofo británico, fue el inventor del álgebra que lleva su nombre. Boole publicó en 1854 un artículo llamado “An Investigation of the Laws of Thought”, en el que desarrolló un sistema de reglas que le permitían expresar, manipular y simplificar problemas lógicos y filosóficos cuyos argumentos admiten dos estados, verdadero o falso, usando procedimientos matemáticos. No obstante, su trabajo parecía no tener uso práctico hasta 1937, cuando Claude Shanon (1916-2001), entonces en la Universidad de Michigan, demostró cómo el álgebra de Boole podía usarse para optimizar el diseño de sistemas electromecánicos de relés, entonces utilizado en conmutadores de enrutamiento de teléfono. Independientemente, Victor Shestakov, de la Universidad Estatal de Moscú (1907-1987), propuso una teoría de interruptores eléctricos basados en la lógica booleana, incluso antes que Claude Shannon, pero publicó sus resultados en ruso hasta 1941. Desde entonces, el álgebra de Boole se convirtió en el fundamento de diseño de los circuitos digitales, y Boole, a través de Shannon y Shestakov, en la base teórica para la era digital. La película 2001: odisea del espacio, del director Stanley Kubrick se estrenó en 1968 y por su trama aún sigue siendo actual. Es considerada una de las películas de ciencia ficción más respetuosa con las leyes de la f ísica. El guión fue escrito por Kubrick y el novelista Arthur C. Clarke, basándose en una novela corta de Clarke, titulada El centinela, escrita en 1948. La película inicia con el amanecer del ser humano, mostrando una escena en la cual un primate da muerte al líder de otro grupo usando un hueso como arma; a manera de victoria, el primate lanza el hueso al aire y la trayectoria del hueso (que recorre 4 millones de años) da inicio a la escena de un equipo de astronautas viajando en una nave espacial que es controlada por una computadora de nombre HAL 9000, la cual muestra una inteligencia cuasihumana. Sí, el mismo primate que usó un hueso como arma es capaz de diseñar artificialmente algo tan sutil, complejo y sofisticado como la inteligencia. Ya hace algunos años, al trabajar en un proyecto y mostrar cierta inclinación por trabajar con sistemas electrónicos digitales, un antiguo jefe me argumentaba que no había tal división entre electrónica digital y analógica, todo era simplemente electrónica y esta era analógica por naturaleza. Lo cual es cierto, sin embargo, nuestra percepción es digital. Discernimos fácilmente entre alto y bajo, blanco y negro, grande y pequeño, ancho y angosto, fuerte y débil, rugoso y liso, etcétera, aunque sabemos que existen matices entre estos dos estados digitales.
168
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
MJ8CH
M
=`^liX+%(* :fdgl\ikXc^`ZXgXiX\c`em\ijfii\Xc`qX[XZfelekiXej`jkfi% lógico, como veremos posteriormente. Esa es una de las razones por las cuales lo digital es tan popular. El símbolo del inversor y su tabla de verdad se muestran en la figura 4.14. Tabla de verdad del inversor 8
Entrada A
Salida Q
1
0
0
1
H JdYfcf
=`^liX+%(+ JdYfcfpkXYcX[\m\i[X[[\cXZfdgl\ikX`em\ijfi% La expresión booleana para el inversor es Q A’ . Aunque hay varias formas de expresar la negación, – en este libro usaremos el apóstrofe, ’ como en el caso de A’ (también es muy común que algunos autores utilicen A ).
La compuerta AND La regla que describe la función de la compuerta AND expresa que todas las entradas tienen que ser 1, o verdaderas, para que la salida pueda ser 1 o verdadera. Sin embargo, si una de las entradas es 0 o falsa, la salida será falsa.11 Esto se define con la tabla de verdad mostrada en la figura 4.15. Tabla de verdad de la compuerta AND Entrada A
Entrada B
Salida Q
0
0
0
0
1
0
1
0
0
1
1
1
=`^liX+%(, KXYcX[\m\i[X[[\cXZfdgl\ikX8E;[\[fj\ekiX[Xj% La expresión booleana para la compuerta AND es Q A ∙ B Q A ∙ B. La representación que usaremos en este libro para expresar esta función es el símbolo de punto, aunque existen otras.
11
Algunos autores traducen al español el nombre de la compuerta AND como “Y”, para resaltar su función lógica. Si esto es verdadero, “Y” esto es verdadero, entonces la salida será verdadera; si cualquiera es falsa, la salida será falsa. Debido a que en el ambiente ingenieril, estudiantil y laboral se usa comúnmente la palabra AND para referirse a esta compuerta, continuaremos en este libro con esta nomenclatura.
grupo editorial patria®
169
4 La maravillosa electrónica digital
El circuito electrónico de la compuerta AND puede construirse de manera simplificada con un par de diodos, como se aprecia en la figura 4.16 a). Por lo general, esta compuerta se representa con el símbolo que se muestra la figura 4.16 b).
8
8 9
H 9
H
X
Y
=`^liX+%(- X :fdgl\ikX8E;[\[`f[fj%Y JdYfcf[\cXZfdgl\ikX8E;% De la tabla de verdad de la compuerta AND, podemos observar que tres de las combinaciones de entrada producen como resultado que sus salidas sean 0, o falsas; por otra parte, existe otra compuerta, llamada OR, que hace lo opuesto, aunque no exactamente.
La compuerta OR En la compuerta OR tres de sus condiciones de entrada producen salidas 1, o verdaderas. La regla que describe la función de la compuerta OR expresa que si cualquiera de sus entradas es 1, o verdadera, la salida será verdadera. Por tanto, se requiere que todas las entradas sean 0, o falsas, para que la salida pueda ser falsa.12 La figura 4.17 muestra su tabla de verdad. Tabla de verdad de la compuerta OR Entrada A Entrada B Salida Q 0 0 0 0 1 1 1 0 1 1 1 1
=`^liX+%(. KXYcX[\m\i[X[[\leXZfdgl\ikXFI[\[fj\ekiX[Xj% La expresión booleana para la compuerta OR es: Q A B Para expresar a la compuerta OR comúnmente se utiliza el símbolo de suma. El circuito electrónico de la compuerta OR también puede construirse usando un par de diodos, solo se tiene que cambiar la conexión de alimentación por una conexión a tierra e invertir la conexión de los diodos, como se aprecia en la figura 4.18 a). El símbolo comúnmente usado para esta compuerta se ilustra en la figura 4.18 b). 8 H 9 8 9 X
H Y
=`^liX+%(/ X :fdgl\ikXFI[\[`f[fj%Y JdYfcf[\cXZfdgl\ikXFI% 12
Algunos autores también traducen al español el nombre de la compuerta OR como “O”, para explicar su función lógica. Si esto es verdadero “O”, esto es verdadero, la salida será verdadera; entonces, solo se necesita que una entrada sea verdadera. Al igual que con la compuerta AND, continuaremos en este libro usando el término OR para referirnos a esta compuerta.
170
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Estas son todas las compuertas lógicas. Sí, eso es todo, solo existen tres elementos básicos. Por supuesto que hay más compuertas, pero todas se derivan de estos tres elementos lógicos primarios. Con esto en mente, vamos a describir algunas de las compuertas más populares.
Compuerta NAND La compuerta NAND significa NOT AND; es decir, la salida de una compuerta AND es invertida por una compuerta NOT. La expresión booleana para la compuerta NAND es: Q (A Ƃ B)’. La figura 4.19 ilustra su tabla de verdad. Tabla de verdad de la compuerta NAND Entrada A
Entrada B
Salida Q
0
0
1
0
1
1
1
0
1
1
1
0
=`^liX+%(0 KXYcX[\m\i[X[[\cXZfdgl\ikXE8E;% A diferencia de la compuerta OR, la compuerta NAND realiza la función exactamente opuesta o invertida de la compuerta AND, basta comparar sus tablas de verdad. La construcción de la compuerta NAND se puede realizar con los elementos básicos que conocemos. Sin embargo, esta compuerta es usada con tanta frecuencia que tiene su propio símbolo, como lo muestra la figura 4.20; donde el pequeño círculo en la salida de la compuerta se emplea para indicar que se invierte la señal. 8
8 H
9
H 9
=`^liX+%)' :fejkilZZ`e[\leXZfdgl\ikXE8E;pjljdYfcf% Para construir su circuito también se pueden utilizar los dispositivos semiconductores básicos. De hecho, una forma simplificada de realizar esta compuerta es usar un par de transistores como se muestra en la figura 4.21.
8
9 H
=`^liX+%)( :fejkilZZ`ej`dgc`]`ZX[X[\leXZfdgl\ikXE8E;%
grupo editorial patria®
171
4 La maravillosa electrónica digital
Compuerta NOR ¡Correcto! Como es de suponerse, la compuerta NOR significa NOT OR. Esta función se lleva a cabo invirtiendo la salida de la compuerta OR, de la misma forma que se hizo con la compuerta NAND. La expresión booleana para la compuerta NOR es: Q (A B)’. La figura 4.22 muestra su tabla de verdad. Tabla de verdad de la compuerta NOR Entrada A Entrada B Salida Q 0 0 1 0 1 1 1 0 0 1 1 0
=`^liX+%)) KXYcX[\m\i[X[[\cXZfdgl\ikXEFI% De manera similar que con la compuerta NAND, la compuerta NOR puede construirse usando dos transistores, como lo ilustra la figura 4.23 a). El símbolo de la compuerta NOR es el de una OR invertida, como se muestra en la figura 4.23 b).
H 8
8 9
9
X
H
Y
=`^liX+%)* X :fejkilZZ`e[\cXZfdgl\ikXEFIZfe[fjkiXej`jkfi\j%Y JdYfcf[\cXZfdgl\ikXEFI%
Compuertas XOR y XNOR La compuerta XOR significa OR exclusiva; la regla que describe la función de la compuerta XOR expresa que la salida es verdadera si una de las dos entradas es verdadera, pero su salida será falsa si ambas entradas son iguales, ya sea falsas o verdaderas. La tabla de verdad de esta compuerta se ilustra en la figura 4.24. Tabla de verdad de la compuerta XOR Entrada A Entrada B Salida Q 0 0 0 0 1 1 1 0 1 1 1 0
=`^liX+%)+ KXYcX[\m\i[X[[\cXZfdgl\ikXOFI%
172
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
La expresión booleana para la compuerta XOR es: Q A Ȉ B; en este caso, para expresar esta función se utiliza como operador binario el símbolo de suma encerrado en un círculo: ‘Ȉ’. El circuito que se usa para construir esta compuerta está hecho de dispositivos semiconductores básicos, como se muestra en la figura 4.25. 8 H 9
8 9
X
H
Y
=`^liX+%), X :fejkilZZ`e[\cZ`iZl`kfj`dgc`]`ZX[f[\cXZfdgl\ikXOFI%Y JdYfcf[\cXZfdgl\ikXOFI% Después de haber visto las compuertas anteriores, la función de la compuerta XNOR resulta obvia; esto es, una XOR con su salida invertida, por lo que su expresión booleana se define por: Q (A Ȉ B)’. La figura 4.26 muestra su tabla de verdad y su símbolo.
Tabla de verdad de la compuerta XNOR Entrada A
Entrada B
Salida Q
0
0
1
8
0
1
0
9
1
0
0
1
1
1
X
H
Y
=`^liX+%)- X KXYcX[\m\i[X[[\cXZfdgl\ikXOEFI%Y JdYfcf[\cXZfdgl\ikXOEFI%
SIMPLIFICACIÓN
DE CIRCUITOS, SUMADORES Y DECODIFICADORES
Minitérminos y maxitérminos Lo normal en un problema de diseño lógico es, como primer paso, construir una tabla de verdad que detalle la operación exacta del circuito digital; el siguiente paso es obtener la expresión booleana y finalmente realizar el circuito lógico. Existen dos formas de obtener la expresión booleana de una tabla de verdad; a la primera, se le llama suma de productos o minitérminos (minterms, en inglés) y a la segunda se le conoce como producto de sumas o maxitérminos (maxterms, en inglés). Los minitérminos utilizan las combinaciones de entrada que producen salida 1 y las unen con una compuerta OR. Por otro lado, los maxitérminos utilizan las combinaciones de entrada que producen una salida 0 y las unen con compuertas AND. Ambas expresiones describen con precisión la lógica de la tabla de verdad; depende únicamente del diseñador cuál expresión utilizar.
grupo editorial patria®
173
4 La maravillosa electrónica digital
Por ejemplo, en la tabla de verdad de la figura 4.27 a) podría ser conveniente usar minitérminos para expresar su función lógica, debido a que el número de combinaciones que producen 1 es menor que las que producen el número de 0. La expresión booleana en este caso es: Y (CŁ Ƃ BŁ Ƃ AŁ) (C Ƃ B Ƃ A), como se ilustra en la figura 4.27 b). El circuito lógico para esta función se muestra en la figura 4.27 c). X
JXc`[X
:
9
8
'
'
'
'
'
'
(
( :ŁƂ9ŁƂ8
'
(
'
'
'
(
(
'
(
'
'
'
(
'
(
'
(
(
'
'
(
(
(
( :Ƃ9Ƃ8
8
P
8 9 :
M
9
:
8Ł 9Ł :Ł Z :`iZl`kfc^`Zf\hl`mXc\ek\
Y
P4:ŁƂ9ŁƂ8 ":Ƃ9Ƃ8
=`^liX+%). ;\jXiifccf[\leX\ogi\j`ec^`ZXljXe[fd`e`kid`efj%X KXYcX[\m\i[X[% Y
Por el contrario, en la tabla de verdad de la figura 4.28 a) podría ser conveniente usar maxitérminos para expresar su función lógica, porque el número de combinaciones que producen 0 es menor que el número de 1. La expresión booleana en este caso es: Y (CŁ à BŁ à AŁ) Ƃ (CŁ à B à A), como se ilustra en la figura 4.28 b). En tanto, el circuito lógico para esta función se muestra en la figura 4.28 c). X
JXc`[X
:
9
8
' ' ' ' ( ( ( (
' ' ( ( ' ' ( (
' ( ' ( ' ( ' (
8 9 :Ł
8
P ( ( ( ( @em\ik`icXj ' mXi`XYc\j ( ( ' @em\ik`icXj
9
P 8Ł 9Ł :Ł
:
mXi`XYc\j
Z :`iZl`kfc^`Zf\hl`mXc\ek\ Y
P4:Łà9Łà8 Ƃ:Łà9à8
=`^liX+%)/ ;\jXiifccf[\leX\ogi\j`ec^`ZXljXe[fdXo`kid`efj% X KXYcX[\m\i[X[%Y
Segundo teorema (A Ƃ B)Ł AŁ B
Los teoremas de De Morgan reciben ese nombre en honor a Augustus De Morgan (1806-1871), matemático de la Universidad de Londres (llamada después University College), quien, junto con George Boole, contribuyó a la lógica matemática. El trabajo de De Morgan fue en gran medida una enorme extensión del trabajo de Boole. Aunque él no formuló estos teoremas, se le otorga este crédito porque formalmente los expresó en la forma en que los conocemos.
174
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
El primer teorema cambia una expresión básica NOR por una expresión AND y el segundo teorema hace lo opuesto, es decir cambia una expresión NAND por una OR, como se muestra en la figura 4.29. 8
8
8
P 9
9 8"9 Ł4P
8 P4 9
P4 9 8ŁƂ9Ł4P
8Ƃ9 Ł4P
P 8Ł"9Ł4P
=`^liX+%)0 8gc`ZXZ`fe\j[\cfjk\fi\dXj[\;\Dfi^Xe% El álgebra booleana es la base para simplificar circuitos lógicos. Aunque existen diferentes métodos de simplificación, como el conocido como mapas de Karnaugh, estos se fundamentan en los teoremas booleanos que ya vimos.
Sumadores Sabemos que es posible sumar y restar usando 1 y 0. La lógica y las matemáticas tienen una estrecha relación; en realidad, una es extensión de la otra. Para explicar la forma de realizar sumadores, iniciamos con el estudio de las reglas de la suma binaria, la cual es muy sencilla, como se muestra en la figura 4.30.
'à'â' 'à(â( (à'â( (à(â'pcc\mXdfj(
=`^liX+%*' I\^cXj[\cXjldXY`eXi`X% Usando la unión de la lógica con la aritmética binaria, veremos que es posible diseñar un circuito con compuertas que realice la suma; para esto, usaremos las reglas de la suma de la figura 4.30, como tabla de verdad; las columnas a la izquierda de la igualdad se usan como entradas y las de la derecha como salidas, tal como se muestra en la figura 4.31.
JXc`[Xj
OP
JldX
8ZXii\f
''
'
'
'(
(
'
('
(
'
((
'
(
O"P
J
:
=`^liX+%*( KXYcX[\m\i[X[[\cd\[`f$jldX[fi% Como se puede observar en la figura 4.31, las salidas tomadas de la regla de la suma coinciden exactamente con la tabla de verdad de la compuerta XOR y de la compuerta AND. ¡Esto es maravilloso!, ya que nos permite sumar. La forma de realizar la suma es a través de medios sumadores y sumadores completos, como se ilustra en la figura 4.32. Si bien se pueden usar compuertas lógicas para formar sumadores, es de esperarse que también se puedan usar para crear restadores. Por tanto, necesitamos conocer las reglas de la resta binaria, las cuales se ilustran en la tabla de la figura 4.33.
grupo editorial patria®
175
4 La maravillosa electrónica digital
D\[`fjldX[fi o pË J oË
o p
p o
J
:
:
p
Y J4oȈp :4op
X J4opË"oËp :4op JldX[fiZfdgc\kf o J
p
:
q
=`^liX+%*) D\[`fjldX[fipjldX[fiZfdgc\kfZi\X[fjljXe[fZ`iZl`kfjc^`Zfj% Minuendo
Sustraendo
Diferencia
Préstamo
0
0
0
0
0
1
1
y debemos 1
1
0
1
1
1
1
0
0
=`^liX+%** I\^cXj[\cXi\jkXY`eXi`X% De la misma manera que con el sumador, se usan las reglas de la resta binaria como tabla de verdad. La figura 4.34 muestra este caso. Entradas Minuendo
Salidas
Sustraendo
Diferencia
Préstamo
0
0
0
0
0
1
1
1
1
0
1
0
1
1
0
0
X
Y
Di
Bo
=`^liX+%*+ KXYcX[\m\i[X[[\cd\[`f$i\jkX[fi% Es fácil identificar en la figura 4.34 que la regla de la resta también coincide con la tabla de verdad de la compuerta XOR, y que la compuerta AND solo requiere que una de sus entradas sea negada. Con estos circuitos lógicos podemos crear medios-restadores y restadores completos, como se ilustra en la figura 4.35.
176
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
D\[`f$i\jkX[fi P
9`e O
O P
;`
O
D\[`f$i\jkX[fi
;`
;` 9f
P
9f
9f
=`^liX+%*, ;`X^iXdXc^`Zf[\lei\jkX[fiZfdgc\kf%
Restas usando circuitos sumadores En realidad, para realizar la resta se requiere únicamente un bloque sumador al cual se le agrega una compuerta inversora. La figura 4.36 muestra el circuito sumador completo en bloques y la conexión para realizar un restador de 4 bits usando sumadores completos. I\jkXY`eXi`X 8+8*8)8( D`el\e[f Æ9+9*9)9( JljkiX\e[f
8CKF 8( 9(
:`e
∑ JldX[fi 8 Zfdgc\kf ) 9 :f
:`e
∑ JldX[fi 8 Zfdgc\kf + 9 :f
:`e
∑ JldX[fi 8 Zfdgc\kf / 9 :f
8)
:`e 8 9
JldX[fi Zfdgc\kf
9)
∑
∑ JldX[fi 8 Zfdgc\kf ( :f 9
:`e
JXc`[Xj :f 8* 9*
8+ 9+
/ + ) ( ;`]\i\eZ`X
=`^liX+%*- ;`X^iXdX[\Ycfhl\[\cjldX[fiZfdgc\kfpi\jkX[fi[\+Y`kjljXe[fjldX[fi\jZfdgc\kfj% Como hemos visto hasta aquí, uniendo varias compuertas lógicas es posible crear sumadores y con ellos es posible crear, también, restadores binarios. Agrupar en forma correcta estos bloques, nos permite formar sumadores o restadores de cualquier número de dígitos binarios.
Suma y resta en complemento a 2 La representación de números en complemento a 2 o dos complemento (2’) se utiliza en sistemas basados en microprocesadores. En los circuitos sumadores vistos hasta ahora, los números a sumar o a restar se consideran positivos.
grupo editorial patria®
177
4 La maravillosa electrónica digital
Sin embargo, en muchas aplicaciones de sistemas basados en microprocesadores se requiere sumar o restar no solo números positivos, sino también números negativos. La utilización de números en 2’ hace posible la suma y la resta de números con signo. Usando esta representación, pueden determinarse tanto la magnitud como el signo de un número. Por ejemplo, si se tiene un número de 8 bits, el bit más significativo (MSB) es el bit de signo; si este bit es 0, el número es positivo; pero, si este bit es 1, el número es negativo. Los siete bits restantes representan la magnitud del número, como se muestra en la figura 4.37. 9`k[\j`^ef'4" (4Æ
DJ9
CJ9 DX^e`kl[
=`^liX+%*. Ed\if[\/Y`kj\ei\gi\j\ekXZ`e[\)Ë2\cDJ9\j\cY`k[\j`^ef% Por su parte, la figura 4.38 muestra una tabla con números de 8 bits en representación de 2’. Por ejemplo, el número decimal 126 está representado en 2’ por el número 0111 1110, y el número 125 está representado en 2’ por el número 1000 0011. De esta forma, podemos observar que todas las representaciones en 2’ para números positivos son iguales a sus equivalentes binarios de ese número decimal. Por tanto, para representar un número negativo es necesario realizar la conversión a 2’. Decimal con signo 127 126 125 124 Ȩ 5 4 3 2 1 0 –1 –2 –3 –4 –5 Ȩ –125 –126 –127 –128
Representación en complemento a 2, con 8 bits 0 111 1111 0 111 1110 0 111 1101 0 111 1100 Ȩ Ȩ Ȩ 0 000 0101 0 000 0100 0 000 0011 0 000 0010 0 000 0001 0 000 0000 1 111 1111 1 111 1110 1 111 1101 1 111 1100 1 111 1011 Ȩ Ȩ Ȩ 1 000 0011 1 000 0010 1 000 0001 1 000 0000 Signo Magnitud
»
¯ ¯
¯
¯ @^lXchl\cfj ¼ ed\ifjY`eXi`fj ¯ ¯
¯ ¯ ½
=`^liX+%*/ I\gi\j\ekXZ`e[\)ËmXcfi\jgfj`k`mfjpe\^Xk`mfj [\leed\if[\/Y`kj% Como se puede observar de la tabla, la conversión de un número en su 2’ es muy sencilla. Por ejemplo, si queremos convertir el número decimal con signo 3 en un número en 2’ hacemos lo siguiente: 1. Tomamos el número binario positivo: 0000 0011 (3) 2. Obtenemos el complemento a uno (1’); esto es: 1111 1100 3. Le sumamos un 1 para obtener el 2’; esto es: 1111 1101. Si queremos obtener el valor binario (positivo) de un número negativo en 2’, hacemos el mismo procedimiento:
178
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
1. 1111 1101. 2. 1’ 0000 0010. 3. 2’ 0000 0011. En la figura 4.39 se muestra un circuito que suma y resta números con signo. El circuito tiene un control de modo; si este control de modo se establece en 0, el circuito suma; en caso contrario, si el control de modo se establece en 1, el circuito resta. GifYc\dXj[\jldXfi\jkX
8/8. 8-8,8+ 8*8)8( "& 9/ 9. 9- 9, 9+ 9* 9) 9( Ed\ifj\eZfdgc\d\ekfX)
8(
:`e 8 9
∑ =8 (
:f
9( :`e
∑ 8 9
8)
=8 )
:f
9) :`e 8 9
8*
=8 +
∑ :f
9* :`e 8+
∑ 8 9
=8 /
8 9
=8 (-
8 9
=8 *)
8 9
=8 -+
8 9
=8 ()/
:f
9+ :`e 8,
∑ :f
9, :`e 8-
∑ :f
9:`e 8.
∑ :f
9. :`e 8/
∑ :f
9/ :fekifc[\df[f I\jkX4( JldX4'
-+ *) (- / + ) 9`k[\ j`^ef JldXf[`]\i\eZ`X \eZfdgc\d\ekfX)
(
=`^liX+%*0 :`iZl`kfjldX[fi&i\jkX[figXiXc\cf[\/Y`kj% ¿Cómo realiza su magia el circuito de la figura 4.40? Bien, revisando la tabla de verdad de la compuerta XOR podemos observar que si una de las entradas es 1, se convertirá en un inversor de la otra entrada. De esta manera, regresaríamos a la configuración del restador de la figura 4.40. Vamos a ver cómo se utiliza el 2’ para realizar estas operaciones de suma y resta usando solo sumadores. Por ejemplo, si queremos realizar la resta 40 13 en binario y en
grupo editorial patria®
179
4 La maravillosa electrónica digital
0010 1000 − 0000 1101 0001 1011
0000 1101 l 1111 0010 = 1’ + 1111 0010 1 1111 0011 l 2’
(+40) (+13) (+27)
X
0010 1000 + 1111 0011 0001 1011
(+40) 2’ (+27)
Z
Y
=`^liX+%+' X I\jkX\eY`eXi`fp\e[\Z`dXckiX[`Z`feXc%Y :fdgc\d\ekfX)[\cjljkiX\e[f% Z JldX[\cd`el\e[fZfe\cjljkiX\e[f\e)Ë%
decimal, de manera tradicional, realizaríamos esta operación usando las reglas de la resta, como se muestra en la figura 4.41 a). No obstante, para usar el sumador, primero obtenemos el complemento a dos del sustraendo, como se ilustra en la figura 4.41 b) y después lo sumamos al minuendo, como se ilustra en la figura 4.41 c), para obtener el resultado deseado. (+27) " (+10) +3710
11
1
(+20) " (−50) −3010
0001 1011 (%ÉjldXe[f\eZfdgc\d\ekfX) " 1111 0010 )%!jldXe[f\eZfdgc\d\ekfX) 1111 0011 JldX\eZfdgc\d\ekfX)
"
1 11 1 1
1
Z JldX[\leed\ifgfj`k`mfd\efiXleed\ife\^Xk`mfdXpfi
X JldX[\[fjed\ifjgfj`k`mfj (−1) (−3) −410
1 1
0001 0100 (%ÉjldXe[f\eZfdgc\d\ekfX) " 1100 1110 )%!jldXe[f\eZfdgc\d\ekfX) 1110 0010 JldX\eZfdgc\d\ekfX)
11 1
(+40) " (−13) +2710
1111 1111 (%ÉjldXe[f\eZfdgc\d\ekfX) " 1111 1101 )%!jldXe[f\eZfdgc\d\ekfX) 1 1111 1100 JldX\eZfdgc\d\ekfX)
1 1 1
0010 1000 (%ÉjldXe[f\eZfdgc\d\ekfX) " 1111 0011 )%!jldXe[f\eZfdgc\d\ekfX) 1 1111 1100 JldX\eZfdgc\d\ekfX)
;\jZXikX [ JldX[\leed\ifgfj`k`mfdXpfiXleed\ife\^Xk`mfd\efi
;\jZXikX Y JldX[\[fjed\ifje\^Xk`mfj
=`^liX+%+( :fdY`eXZ`fe\jgfj`Yc\j[\jldXjljXe[fed\ifj\eZfdgc\d\ekfX)% Esto es lo que hace exactamente el circuito sumador/restador de la figura 4.41. Si restamos, establecemos el control de modo en 1; es decir, invertimos los número B para obtener el 1’, posteriormente le sumamos el Cin 1, para obtener el 2’. La figura 4.42 muestra las cuatro posibles combinaciones de suma y resta. Entradas
Y5
Y9
0000
0
0
0001
0
0
0010
0
0
0011
0
0
0101
0
1
0110
0
0
0111
0
0
1000
0
0
1001
1
0
1010
0
0
1011
0
0
1100
0
0
1101
0
0
1110
0
0
1111
0
0
CXjXc`[XP,j\i}( jfcfj`cX\ekiX[X \j'('()
CXjXc`[XP0j\i}( jfcfj`cX\ekiX[X \j(''()
=`^liX+%+) ;\Zf[`]`ZX[fi[\+X(-#XZk`mXe[f\e(jfcfcXj\ekiX[Xj,p0%
180
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Multiplicaciones usando sumadores Las reglas de la multiplicación binaria son muy sencillas, como vimos en la sección aprendiendo las tablas de multiplicar, pero podrían involucrar un número grande de componentes lógicos. Una alternativa en este caso es usar sumadores. Por ejemplo, la multiplicación de 10012 r 01002 (9 r 4) puede resolverse usando un método denominado multiplicación de sumas repetidas. Aquí, el multiplicando (9) se suma cuatro veces (el multiplicador es 4) para obtener el producto 36. Esta técnica es fácilmente programable en sistemas basados en microprocesadores, como veremos en el capítulo siguiente. Entendiendo el proceso de suma de estos inquietos unos y ceros, automáticamente tenemos los fundamentos de la computación. Con la suma, además de sumar, podemos llevar a cabo restas y multiplicaciones; además, estas bases nos proporcionan una idea de la forma en que la calculadora de nuestro escritorio realiza internamente sus operaciones.14 La operación aritmética que falta describir es la división, pero con desplazamientos o corrimientos de bits es posible efectuarla, como veremos en la sección de microprocesadores.
Decodificadores Los decodificadores son dispositivos ampliamente utilizados en el diseño de sistemas digitales, principalmente para decodificar o seleccionar una dirección de un microprocesador. La tabla de verdad del decodificador podría tener como entradas las direcciones del microprocesador y las salidas corresponder a las habilitaciones de dispositivos periféricos, como se verá más adelante, en la sección de microprocesadores. El número de salidas de un decodificador de n entradas es 2n. Así, por ejemplo, con dos entradas podemos tener 4 posibles salidas; con 3 entradas, 8 salidas; con 4 entradas, 16 salidas, etcétera. La habilitación de las salidas puede ser activo bajo, 0, o activo alto, 1, dependiendo si usamos minitérminos o maxitérminos, respectivamente. Si tenemos, por ejemplo, 4 entradas y queremos que únicamente se activen en 1 las salidas correspondientes a las entradas 5 y 9, tendremos los circuitos mostrados en la figura 4.42. Por supuesto, podemos tener disponibles las 16 salidas, pero en este caso solo seleccionamos dos de ellas para ilustrar su funcionamiento. Existen circuitos decodificadores en CI que hacen este trabajo, como los 74LS139, con 2 entradas y 4 salidas, y los 74LS138, con 3 entradas y 8 salidas. El decodificador 74LS138 tiene tres entradas: A, B y C, y ocho salidas activo bajo: Y0-Y7. La figura 4.43 ilustra el diagrama a bloques y la tabla de verdad de este decodificador. Además, el 74LS138 tiene tres entradas: G2A, G2B activo bajo, y G1 activo alto. Normalmente, el fabricante recomienda que si estas entradas no se van a usar se conecten a VCC o tierra, dependiendo de su nivel lógico.
CELDAS
DE MEMORIA, MEMORIAS Y MÁQUINAS DE ESTADO
Celdas de memoria A los grupos de compuertas descritos hasta ahora se les denomina lógica combinacional, y también pueden usarse para formar celdas de memoria. La premisa básica de las celdas de memoria es almacenar unos y ceros. Algunas memorias pueden perder los datos que fueron almacenados si se pierde la energía que alimenta estos circuitos; a este tipo de memoria se le llama volátil. Un ejemplo de estas memorias es la memoria de acceso aleatorio o RAM, y las celdas que las forman son la base de la llamada lógica secuencial. Otra categoría de memoria es la llamada no volátil; este tipo de memoria mantiene los datos almacenados aun cuando se quita la energía que los alimenta. A este tipo de memorias corresponden las memorias de solo lectura ROM y sus variantes que pueden ser borradas, ya sea con luz ultravioleta, como las EPROM, o eléctricamente, como las EEPROM y las ahora ubicuas memorias FLASH15 tipo pluma o pen drives. 14
15
Técnicamente, la mayoría de las calculadoras usa un ingenioso algoritmo llamado CORDIC, con el cual es posible efectuar funciones trigonométricas, manteniendo la electrónica simple, es decir, trabajando con un número reducido de elementos lógicos. Las únicas operaciones que usa son suma, resta, desplazamiento de bits (bit shift) y búsqueda en tablas (table lookup). La memoria FLASH es un dispositivo de almacenamiento en CI que puede ser borrado y reprogramado eléctricamente. En la actualidad, este tipo de CI domina el mercado de las memorias no volátiles, anteriormente dominado por las memorias EPROM y EEPROM. La memoria
grupo editorial patria®
181
4 La maravillosa electrónica digital
MZZ
>E; P' P( P) P* P+ P, PP.
8 9 :
>)8
>)9
>(
?XY`c`kXZ`fe\j KXYcX[\m\i[X[
Entradas Ensamble G1 G2
Salidas
Select. C B A
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
X
H
X
X
X
H
H
H
H
H
H
H
H
L
X
X
X
X
H
H
H
H
H
H
H
H
H
L
L
L
L
L
H
H
H
H
H
H
H
H
L
L
L
H
H
L
H
H
H
H
H
H
H
L
L
H
L
H
H
L
H
H
H
H
H
H
L
L
H
H
H
H
H
L
H
H
H
H
H
L
H
L
L
H
H
H
H
L
H
H
H
H
L
H
L
L
H
H
H
H
H
L
H
H
H
L
H
H
L
H
H
H
H
H
H
L
H
H
L
H
H
H
H
H
H
H
H
H
H
L
=`^liX+%+* ;`X^iXdXXYcfhl\jpkXYcX[\m\i[X[[\c[\Zf[`]`ZX[fi.+CJ(*/% En la siguiente sección vamos a estudiar los principios fundamentales de las memorias no volátiles tipo ROM y posteriormente analizaremos las celdas de memoria básicas de la lógica secuencial, con la cual se realizan registros, memorias RAM y máquinas secuenciales.
Memorias no volátiles En la sección anterior aprendimos que un decodificador genera 2n minitérminos de las n variables de entrada. Además, sabemos que insertando compuertas OR para realizar la suma de los minitérminos es posible tener cualquier circuito combinacional deseado. Una memoria ROM es un dispositivo que incluye tanto el decodificador como las compuertas OR, dentro de un mismo CI. Adicionalmente, la ROM tiene un grupo de eslabones o interruptores compuestos por diodos especiales que pueden fusionarse o romperse. La interconexión deseada para una aplicación particular requiere FLASH revolucionó este mercado desde su introducción por Intel, en 1988. Sin embargo, esta memoria fue inventada en 1980 por el Dr. Fujio Masuoka mientras trabajaba para la compañía Toshiba. La memoria FLASH puede construirse con memorias NAND o NOR, usando transistores similares a los MOSFET, excepto que estos transistores tienen dos terminales de compuerta, una llamada control gate (CG), como en los FET estándar, y la otra floatinggate (FG), la cual es aislada por una capa de óxido. Debido a que la FG es aislada eléctricamente, cualquier grupo de electrones que se coloque en ella será “atrapado” y, en condiciones normales, no se descargará por muchos años. Las memorias FLASH tipo NAND ofrecen una mayor densidad (mayor cantidad de bits), pero deben ser programadas y leídas en bloques o páginas, mientras que las NOR (aunque con menos densidad) permiten ser leídas o programadas de manera aleatoria a nivel palabra o byte.
182
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
que se rompan ciertos eslabones, para formar las trayectorias del circuito necesarios. La figura 4.44 a) muestra el diagrama a bloques de una memoria ROM. La memoria ROM consta de n líneas de entrada y m líneas de salida. A cada combinación de bits de las variables de entrada se le llama dirección, y a cada combinación de bits de datos que sale de las líneas de salida se le llama palabra, como se indica en la figura 4.44 b). Básicamente, una dirección es un número binario que denota uno de los minitérminos de las n variables. El número de las diferentes direcciones posibles con n bits de entrada es 2n. Una palabra de salida puede seleccionarse por una dirección única. Puesto que existen 2n direcciones diferentes en una ROM, hay 2n palabras que podrían almacenarse en la memoria. "MZZ e\ekiX[Xj ;\Zf[`]`ZX[fi [\eXdce\Xj P' P ( P ) P*
?XY`c`kXZ`e
)ed IFD
;`i\ZZ`e
8' 8(
Pd
8e ;* ;) ;( ;' djXc`[Xj
GXcXYiX[Xkfj
X
Y
=`^liX+%++ X ;`X^iXdXXYcfhl\j[\leXd\dfi`XIFD%Y
8' 8(
A0
A1
D0
D1
0
0
0
1
0
1
1
0
1
0
1
1
1
1
1
0
'' '( ;\Zf[`]`ZX[fi (' )+ ((
;' X
;(
Y
=`^liX+%+, X KXYcX[\m\i[X[[\leXd\dfi`XIFD[\+)% Y :`iZl`kfc^`ZfZfdY`eXZ`feXc[\cXd\dfi`XIFD[\+)%
El ejemplo de la figura 4.45 es muy sencillo. En la práctica, no es necesario mostrar las conexiones internas de las compuertas, en este caso se mostró únicamente con fines ilustrativos. Una memoria ROM, algunas veces, se especifica por
grupo editorial patria®
183
4 La maravillosa electrónica digital
el número total de bits que contiene; por ejemplo, una memoria ROM de 65536 bits puede organizarse en 8192 palabras de 8 bits, esto significa que tiene 13 líneas de entrada y 8 líneas de salida (213 r 8). De forma comercial, existen memorias de este tipo en un CI, como es el caso de la memoria EPROM M27C256, de 32k r 8. La figura 4.46 ilustra el diagrama a bloques de esta memoria y uno de sus empaquetados llamado DIP (Dual in line Package). M::
MGG
(,
/
8'$8(+ Æ < Æ >
H'$H.
D).:),-9 )/
MJJ
=`^liX+%+- D\dfi`X
Memorias volátiles Las memorias de acceso aleatorio (RAM) constituyen un tipo de memoria basada en semiconductores capaces de mantener los datos almacenados en estas mientras se encuentren alimentadas de corriente eléctrica. Sin embargo, son memorias volátiles, es decir, pierden la información si se les interrumpe la alimentación eléctrica. El concepto de acceso aleatorio significa que las posiciones en la memoria pueden ser escritas o leídas en cualquier orden. Existen dos tipos de memoria RAM que predominan en el mercado: las memorias dinámicas (DRAM) y las memorias estáticas (SRAM). Para el caso de la DRAM, cada celda de memoria está formada por un transistor y un capacitor, este último puede ser cargado o descargado para representar los dos valores de un bit. Debido a que los capacitores tienden a descargarse, la información almacenada puede perderse a menos que se refresque periódicamente la carga al capacitor, lo cual podría verse como menoscabo de su operación. Esta es la razón por la cual se le llama memoria dinámica. Sin embargo, una de las ventajas de la DRAM es la simplicidad de su construcción, lo que le permite tener una mayor densidad que las memorias SRAM, ya que literalmente se pueden crear billones de bits en una DRAM de circuito integrado. Por otro lado, las memorias SRAM son capaces de mantener la información almacenada, mientras estén alimentadas, sin necesidad de un circuito de refresco. Cada celda de memoria o bit en una RAM se almacena en un dispositivo basado en compuertas (típicamente seis transistores) llamado flipflop, cerrojo o multivibrador biestable; no obstante, en este libro nos referiremos a este dispositivo como flipflop. En esta sección se describen las memorias SRAM, pero antes se analizan los elementos que constituyen sus celdas de memoria: los flipflops. La importancia de los flipflops radica en que estos pueden interconectarse para formar circuitos lógicos secuenciales que almacenen datos, generen tiempos y cuenten y sigan secuencias.
184
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Flipflops Los flipflops pueden construirse a partir de compuertas lógicas, por ejemplo, con compuertas NAND o NOR, o comprarse en forma de CI, como es el caso del flipflop básico RS. La figura 4.47 muestra la conexión lógica usando compuertas NAND, su símbolo lógico y su tabla de verdad. El flipflopRS tiene dos entradas etiquetadas como set (S) y reset (R); en este caso, las entradas se activan con 0, y se dice son activo bajo, lo cual es indicado por los círculos a la entrada del símbolo. A diferencia de las compuertas lógicas, los flipflops tienen dos salidas complementarias llamadas: Q y Q Q. La salida Q es la más usada y se considera la salida “normal”; la otra, Q , es el complemento de la salida Q, y se denomina salida complementaria; también se abrevia como Q’. En condiciones de operación normal, estas salidas son siempre complementarias, cuando Q 1, Q’ 0 y viceversa. De la figura 4.47 a) podemos observar una retroalimentación de la salida de una compuerta NAND a la entrada de la otra. Igual que con las compuertas lógicas, una tabla de verdad define la operación del flipflop, como se ilustra en la figura 4.47 c). La primera línea de la tabla de verdad es el estado prohibido; es decir, el estado en el que ambas salidas están en 1. Esta condición no se utiliza en el flipflopRS porque no está permitida. A la línea 2 de la tabla de verdad se le conoce como set (S); bajo esta condición, un nivel lógico 0 activa la entrada S y establece la salida Q en 1, como lo muestra la tabla. La condición de set se puede comprobar analizando la compuerta NAND de la figura 4.47 a). Un nivel lógico 0 en la compuerta 1 produce un 1 en la salida Q; este 1 lógico se retroalimenta a la compuerta 2, la cual ahora tiene dos 1 aplicados en sus entradas, lo que fuerza que su salida, Q’, sea 0 lógico. La línea 3 de la tabla de verdad es la condición de reset (R). Un nivel lógico 0 en la entrada de reset borra o pone en 0 lógico la salida Q. La cuarta línea de la tabla de verdad es la condición inhabilitación o mantenimiento del flipflopRS. En esta condición, las salidas permanecen como estaban, en otras palabras, no hay cambio en las salidas. A este tipo de flipflopRS se denomina asíncrono, debido a que no opera en sincronización con un reloj o con un sistema de temporización. Cuando se activa una entrada, por ejemplo reset, inmediatamente se activará su salida normal Q, como es el caso de los circuitos con compuertas. Sin embargo, existe un diseño de flipflopRS al cual se le añade la característica de sincronismo. Este tipo de flipflopRS opera con un reloj o con dispositivo de temporización, es decir, opera síncronamente. =c`g$]cfgIJ J
(
Df[f[\ fg\iXZ`e
H J\k
J
H ==
I X
EfidXc
I
H
:fdgc\d\ekXi`X
H
JXc`[Xj
J
I
H
Gif_`Y`[f
'
'
(
(
J\k
'
(
(
'
I\j\k
(
'
'
(
DXek\e`d`\ekf
(
(
Y
H
efZXdY`X
Z
=`^liX+%+. =c`g$]cfgY}j`Zfk`gfIJ%X :fe\o`elk`c`qXe[fZfdgl\ikXjE8E;% Y JdYfcfc^`Zf%Z KXYcX[\m\i[X[%
La implementación del flipflopRS síncrono se lleva a cabo añadiendo dos compuertas NAND a la entrada del circuito original asíncrono, como se muestra en la figura 4.48 a). Estas compuertas, 3 y 4, tienen un efecto inversor en las entradas set (S) y reset (R), por lo que ahora estas entradas se activan con un nivel lógico 1 o alto. Las figuras 4.48 b) y 4.48 c) ilustran el símbolo lógico y la tabla de verdad, respectivamente, del flipflopRS síncrono. A partir de la tabla de verdad del flipflop síncrono, es posible describir su funcionamiento; el modo de mantenimiento se indica en la línea 1 de la tabla de verdad. Cuando un pulso de reloj llega a la entrada CK, con las entradas R y S en 0, las salidas no cambian, permanecen en el estado lógico que tenían antes de la llegada del pulso de reloj. La línea 2 corresponde al modo de reset, en el cual la salida normal, Q, se borrará (es decir, se pondrá en 0) cuando un nivel lógico 1 active la entrada R y un pulso de reloj active la entrada de reloj CK. Al encontrarse las entradas R 1 y S 0, la salida normal, Q, inmediatamente se borrará; esto es, Q 0. Sin embargo, esto sucederá hasta que la entrada de reloj pase de un nivel lógico 0 a un nivel lógico 1. Expuesto lo anterior, es posible observar que el flipflop opera en sincronía con el reloj. La línea 3 de la tabla, por su parte, describe el modo set del flipflop. Teniendo la entrada R en 0
grupo editorial patria®
185
4 La maravillosa electrónica digital
J
*
H
(
J\k
:B
J
+
I
JXc`[Xj
:B I
I\j\k H
X
Y
Df[f[\ fg\iXZ`e
:B
JXc`[Xj
J
I
H
H
DXek\e`d`\ekf
'
'
efZXdY`X
I\j\k
'
(
'
(
J\k
(
'
(
'
Gif_`Y`[f
(
(
(
(
Z
=`^liX+%+/ =c`g$]cfgjeZifefIJ%X @dgc\d\ekXZ`eljXe[fZfdgl\ikXjE8E;% Y JdYfcfc^`Zf%Z KXYcX[\m\i[X[%
y activando la entrada S con un 1 lógico, la salida normal, Q, se establecerá en 1 hasta que se tenga un pulso de reloj de 0 lógico a 1 lógico en la entrada CK. La línea 4 de la tabla de verdad es aquella que se denomina como prohibida, debido a que no se utiliza, ya que establece ambas salidas en un nivel lógico 1. Las formas de onda o diagramas de tiempo se emplean con mucha frecuencia, debido a que estas resultan muy útiles para trabajar con flipflops y circuitos lógicos secuenciales, en especial con circuitos síncronos. La figura 4.49 muestra un diagrama de tiempos de un flipflop síncrono tipo RS. En este diagrama se muestran las entradas CK, S y R en la parte superior y las salidas Q y Q’ en la parte inferior.
CK Entradas
S
1
2
4
a
5 e
b
6
1 0 1 0 1
c
R Q
3
d
f
0 1 0 1
Salidas Q’
0
=`^liX+%+0 ;`X^iXdX[\k`\dgfjgXiXle]$]jeZifefk`gfIJ% Ahora, vamos a analizar la figura 4.49 empezando por el lado izquierdo; cuando llega el pulso de reloj (CK) 1, las salidas normal y complementaria no cambian, es decir Q 0 y Q’ 1, porque las entradas S y R se encuentran en estado de mantenimiento o sin cambio. En el punto a, la entrada S 1 y R permanece en 0; por tanto, cuando llega el pulso de reloj 2, la salida normal Q 1 y Q’ 0. Aquí es importante poner atención a que, aun cuando S 1, las salidas tienen que esperar a que llegue la transición del pulso de reloj 2 de 0 a 1, para que las salidas cambien. Un tiempo después, la entrada S se hace 0 otra vez, de tal forma que cuando llega el pulso 3, las salidas no cambian por estar en el
186
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
estado de mantenimiento. Posteriormente, la entrada R se hace 1, de tal manera que las salida cambian, ahora Q 0 y Q’ 1. Durante los pulsos de reloj 5 y 6 es posible observar que llega un momento en que las dos entradas, S y R, son 1, estado que se considera como el estado prohibido. En este caso, es aceptable que las salidas sean 1, porque durante este tiempo el pulso de reloj se encuentra en estado bajo y el f-f no se activa. Uno de los flipflops más populares es el tipo D. Este puede derivarse de un flipflopRS, solo que añadiéndole un inversor, como se muestra en la figura 4.50 a). El f-f tipo D solo tiene una entrada de datos, D, y una entrada de reloj, CK. La salidas continúan siendo Q y Q’, como se ilustra en la figura 4.50 b).
Dato Reloj
S FF Q CK –– R Q
Entradas
Dato Reloj
D FF Q CK –– Q
a)
Salidas
b)
=`^liX+%,' X :fejkilZZ`e[\le]c`g]cfgk`gf;XgXik`i[\le]$]k`gfIJ%Y JdYfcfc^`Zf[\le]$]k`gf;% Con frecuencia, al flipflopD también se le llama flipflop de retardo (Delay). Como su nombre lo indica, cualquiera que sea el dato de entrada, D, este aparecerá en la salida normal, Q, retardado un pulso de reloj. Entonces, el dato es transferido a la salida, durante la transición de 0 a 1 del pulso de reloj. Un flipflop tipo D comercial es el CI de la familia TTL, denominado 7474. El símbolo lógico de este CI y su tabla de verdad se muestran en la figura 4.51.
Modo de operación
Preset (set) Dato Reloj
PR D FF Q CK –– (7474) Q CLR
Borrado (reset)
Set asíncrono Reset asíncrono Prohibido Set Reset
Asíncronas PR CLR 0 1 1 0 0 0 1 1 1 1
Entradas Síncronas CK X X X k k
Salidas D X X X 1 0
Q 1 0 1 1 0
–– Q 0 1 1 0 1
0 = BAJO, 1 = ALTO, X = irrelevante, k = Transición BAJA=ALTA del pulso de reloj a)
b)
=`^liX+%,( =c`g]cfgZfd\iZ`Xc.+.+%X JdYfcfc^`Zf%Y KXYcX[\m\i[X[% Como se puede observar en la figura 4.51, hay dos señales de control adicionales llamadas Preset (PR) y Clear (CLR), respectivamente. Estas señales son entradas de control asíncronas activadas con 0 lógicos que determinan el valor de las salidas. Analizando la tabla de verdad, podemos observar que cuando PR 0 y CLR 1, la salida normal Q 1 y Q’ 0. Por el contrario, cuando PR 1 y CLR 0, se borra el valor de la salida normal, esto es, Q 0 y Q’ 1. La línea 3 de la tabla de verdad indica la entrada asíncrona prohibida, PR 0 y CLR 0. Mientras que las X significan que estas entradas son irrelevantes porque las señales asíncronas las anulan. Las entradas PR y CLR se deshabilitan cuando son 1 lógicos; en ese momento, se activan las entradas síncronas. La línea 4 muestra un 1 en la entrada de datos D y un pulso de reloj, representado por una flecha apuntando hacia arriba en la entrada CK. El 1 de la entrada D se transfiere a la salida Q durante el pulso de reloj. La línea 5 muestra que D 0, por lo que este valor se transferirá a la salida Q, durante la transición de 0 a 1 de la entrada CK. Los flipflopsD se utilizan con mucha frecuencia para almacenar datos; por esa razón, algunas veces se les llama flipflop de datos. El pequeño símbolo >, en la entrada CK de la figura 4.51 a), indica que la activación o el disparo de reloj es por flanco; en este caso, durante la transición de 0 a 1. La ausencia de este símbolo en la entrada de reloj indica que el disparo es por nivel, como se muestra en la figura 4.50 b). En los flipflops activados por nivel, un cierto nivel
grupo editorial patria®
187
4 La maravillosa electrónica digital
de voltaje hace que el dato de entrada D se transfiera a la salida Q. El inconveniente con los dispositivos activados por nivel es que la salida sigue a la entrada, mientras el pulso de reloj se encuentra en nivel lógico 1. Este tipo de disparo podría ser un problema si el dato de entrada cambia mientras la entrada de reloj está en 1. Otro tipo común de flipflop es el denominado JK. El símbolo lógico y la tabla de verdad de este flipflop se ilustran en las figuras 4.52 a) y 4.52 b), respectivamente. Al flipflopJK también se le conoce como flipflop universal porque a partir de este se puede formar el flipflopD, exactamente en la manera en que se formó a partir del flipflopRS, es decir añadiendo un inversor, como se ilustra en la figura 4.52 c); también se le llama universal porque puede construirse otro tipo de flipflop llamado tipo T (toggle), que se ilustra en la figura 4.52 d).
J FF Q CK –– Q K
J Entradas Reloj K
D Reloj
Salidas
J FF Q CK –– K Q
Dato = Reloj
a) Modo de operación
c)
Entradas CK
Mantenimiento Reset Set Conmutación
D FF Q CK –– Q
Salidas –– Q
J
K
Q
0 0 1 1
0 1 0 1
no cambia 0 1 1 0 estado opuesto
1 lógico Reloj
J FF Q CK –– K Q
= Reloj
b)
T
FF Q –– Q
d)
=`^liX+%,) =c`g]cfgk`gfAB%X JdYfcfc^`Zf%Y KXYcX[\m\i[X[%Z =c`g]cfgk`gf;[\i`mX[f[\c]c`g]cfgAB% [ =c`g]cfgk`gfK[\i`mX[f[\c]c`g]cfgAB%
La línea 4 de la tabla de verdad del flipflop JK muestra una condición muy útil. Cuando las entradas J y K son 1 lógicos, la salida cambia cada vez que llega un pulso a la entrada de reloj CK, a lo cual se le denomina estado de conmutación (toggle). Repitiendo los pulsos en la entrada CK, la salida cambiaría de 0 a 1 a 0 a 1 a 0 a 1, etcétera. Esta idea de cambio en la salida de 0-1-0-1-0-1 es a lo que se le llama conmutación. El término proviene de la naturaleza del interruptor de conmutación cerrado-abierto (on-off ). De esta manera, si las entradas JK se hacen 1 lógicos, será posible obtener un flipflop tipo T, como se observa en la figura 4.52 b), y si las entradas JK se hacen 0 lógicos, su salida no cambiaría. En términos generales, el principio de funcionamiento de todos los flipflops es el mismo. No obstante, por su facilidad, el uso del flipflop tipo D es muy extendido. Esta es la razón por la que consideramos el flipflop D para describir algunos parámetros importantes de los flipflops, como: a) La frecuencia máxima de reloj (fMÁX). b) Los tiempos de set up (tsu) y de hold (th). La frecuencia máxima de reloj, fMÁX, es la frecuencia más alta con la cual se puede “disparar” un flipflop de manera confiable. Cuando la frecuencia del reloj, en la entrada CK, sobrepasa el valor de fMÁX, el flipflop es incapaz de responder lo suficientemente rápido y su operación podría ser errática. El tiempo de set up, tsu, es el intervalo mínimo que las entradas de un flipflop (JK, RS, To D) requieren ser mantenidas constantes, sin cambio, antes de que llegue el disparo del pulso de reloj en la entrada CK. La figura 4.53 a) muestra el tiempo tsu para un flipflop tipo D. Por otro lado, el tiempo de hold, th, es el tiempo mínimo quelas entradas de control del flipflop requieren ser mantenidas constantes después de que llega el disparo del pulso de reloj, tal como se ilustra en la figura 4.53 b). Ambos tiempos deben cumplirse a fin de garantizar el almacenamiento del dato. Los tiempos de set up y de hold son relativamente pequeños; por ejemplo, para un flipflop 74HCT74 estos tiempos son de 18 ns y 3 ns, respectivamente. Los tiempos se miden considerando 50% de la transición de disparo de reloj y de la entrada D, ya sea de 0 a 1 (bajo a alto) o 1 a 0 (alto a bajo). La frecuencia máxima del pulso de reloj, fMÁX, para este flipflop es de 18 MHz.
188
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
D
D
50% del punto de transición del disparo
50% del punto
50% del punto
CK
50% del punto
CK
Tiempo de set up (tm)
Tiempo de hold (tm) a)
b)
=`^liX+%,* K`\dgfj[\j\klgp_fc[[\le]c`g]cfgk`gf;%X K`\dgfkjl%Y K`\dgfk_%
Memorias SRAM La memoria SRAM es más rápida y, por lo general, con un menor consumo de potencia que la memoria DRAM. Debido a su estructura interna, esta es menos densa que la DRAM y, por tanto, más cara y menos utilizada cuando se requiere una capacidad grande de datos; por ejemplo, como en la memoria principal de las computadoras personales. Sin embargo, debido a que no necesita un circuito de refresco su interfaz es sencilla. Las SRAM se utilizan en sistemas embebidos o sistemas de aplicación específica, las cuales pueden ser tanto científicas como industriales. Por consiguiente, las SRAM en forma de CI son un componente importante en sistemas basados en microcontroladores. Una memoria típica para estas aplicaciones es la SRAM de 32 kilobytes HM62256, de Hitachi. La figura 4.54 a) ilustra el diagrama a bloques de una SRAM de este tipo. VCC 15
8
A0-A14 –– CS
Q0-Q7
SRAM
–– CS
––– WE
–– OE
1
X
X
Modo CI no seleccionado
0
1
1
Salida deshabilitada
0
1
0
Lectura
0
0
1
Escritura
––– WE –– OE
Q0-Q7 Alta impedancia (Z) Alta impedancia (Z) Salida de datos Entrada de datos
Ciclo ------Ciclo de lectura Ciclo de escritura
VSS a)
b)
=`^liX+%,+ ;`X^iXdXXYcfhl\j[\leXd\dfi`XJI8D[\*)b`cfYpk\j% Del diagrama a bloques de la figura 4.54 a) es posible apreciar las terminales de alimentación VCC y VSS (tierra); además, también se puede ver que esta memoria tiene 15 líneas de direcciones (A0-A14), lo cual le permite seleccionar de manera aleatoria los 32 768 bytes (215). Como esta memoria es de lectura y escritura, se requiere una habilitación general del CI CI, denominada, CS CS (Chip Select), y dos señales de control, una para la escritura de datos, WE WE, y otra para la lectura de datos, OE OE, como se aprecia en la tabla de verdad de la figura 4.54 b). De la tabla de verdad, se observa que cuando la señal de control CS CS 1, las terminales de salida Q0-Q7 se van a un estado denominado de alta impedancia, Z, en el cual el consumo de energía de la memoria por lo general se reduce. En la siguiente sección se describe la operación de los dispositivos que tienen este estado. Por lo pronto, es suficiente entender que el estado de alta impedancia produce que las salidas vayan a una condición ideal de circuito abierto, aunque en realidad es una impedancia, Z, muy alta.
grupo editorial patria®
189
4 La maravillosa electrónica digital
La temporización de las señales de control, CS CS, WE WE y OE OE, y las señales de direcciones (A0-A14) y datos (Q0-Q7) son muy importantes para la realización de la interconexión de este tipo de memorias SRAM. Al igual que con las memorias ROM, un parámetro muy importante de la memoria RAM es el tiempo de acceso (tACC). Este tiempo se analizará con detalle cuando se estudie la interconexión de las memorias SRAM con los microprocesadores y/o microcontroladores. Sin embargo, podemos definir al tACC como el intervalo de tiempo que toma a la memoria RAM completar un acceso de lectura o escritura y empezar otro. Por lo general, las memorias SRAM tienen tiempos de acceso menores que las DRAM. Por ejemplo, una DRAM puede tener tiempos de acceso de 50 a 150 nanosegundos, mientras que las SRAM pueden tener tiempos de acceso menores a los 50 nanosegundos.
Dispositivos de tercer estado y latches Dispositivos de tercer estado Existe un par de dispositivos lógicos de una entrada llamados “buffer digital” no inversor y “buffer” de tres estados, respectivamente. La característica del buffer digital no inversor es que no realiza ningún tipo de operación lógica, puesto que su salida es exactamente igual que su entrada. En otras palabras, su salida iguala a su entrada; por tanto, su expresión booleana es A Q, donde A es la entrada y Q es la salida. La figura 4.55 muestra el símbolo y la tabla de verdad de este dispositivo digital.
A
1
Q
A
Q
0 1
0 1
a)
b)
=`^liX+%,, 9l]]\i[\ki\j\jkX[fj%X JdYfcfc^`Zf%Y KXYcX[\m\i[X[% Este buffer digital también puede construirse usando dos compuertas inversoras, como se ilustra en la figura 4.56; la primera compuerta invierte la señal de entrada A y la segunda compuerta invierte, otra vez, la señal, regresando a la señal A al nivel original de entrada.
A
1
–– A
1
–– A
Q=A
=`^liX+%,- 9l]]\i[\ki\j\jkX[fjZfejkil`[fXgXik`i[\[fjZfdgl\ikXj`em\ijfiXj% En este punto, quizá usted esté pensando: ¿qué caso tiene usar un buffer digital no inversor, si éste no altera la señal de entrada de ninguna manera y no realiza ninguna operación lógica como cualquier otra compuerta? Y podríamos continuar pensando, “este buffer tiene el mismo efecto digital que conectar un simple alambre”, lo cual en cierta forma es correcto. No obstante, el buffer digital tiene muchos usos en circuitos electrónicos digitales, ya que se puede usar para aislar, uno del otro, compuertas o dispositivos digitales. También puede usarse para manejar corrientes de carga altas, como transistores, debido a que su capacidad de manejo de corriente de salida es mayor que sus requerimientos de entrada; en otras palabras, su abanico de salida es alto. El abanico de salida es un parámetro de todas las compuertas lógicas; se puede definir como: “la capacidad de corriente que tiene la salida de una compuerta”. Este parámetro nos permite determinar el número de compuertas lógicas que pueden conectarse a la salida de una compuerta, o para conmutar una carga de corriente relativamente alta, como un LED. Por ejemplo, el abanico de salida de una compuerta 74HC04 es de 14, mientras que el de un buffer de tercer estado es de 50. Por consiguiente, con el buffer digital se podrían conectar varias compuertas o encender o apagar un LED. La figura 4.57 muestra un ejemplo del abanico de salida de un buffer de tercer estado.
190
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
/Ent A
1
/Ent
/Ent
Abanico de salida = 3
Buffer
=`^liX+%,. 9l]]\i[\k\iZ\i\jkX[fZfe\ZkX[fXki\jZfdgl\ikXj[`^`kXc\j% Si bien se entiende que el buffer digital “amplifica” la capacidad de corriente de un dispositivo digital, seguramente aún se estará preguntando: ¿qué hace entonces el buffer de tercer estado? El buffer de tercer estado puede pensarse como un interruptor que tiene una entrada digital de control, el cual permite cerrar o abrir electrónicamente los contactos de dicho interruptor. La señal de control o habilitación del buffer de tercer estado puede ser un 1 lógico o un 0 lógico, como se muestra en la figura 4.58 a) y 4.58 b), respectivamente. Si la señal de control del buffer de la figura 4.58 a) se habilita con 1 lógico, entonces se permitirá que su salida opere normalmente, es decir, la salida puede ser un 0 lógico o un 1 lógico, dependiendo de su entrada, como se puede apreciar en su tabla de verdad, A Q. Sin embargo, cuando la señal de habilitación se establece en 0 lógico, el dispositivo se deshabilita y su salida se apaga, produciendo una condición de circuito abierto, que en realidad es una impedancia muy alta (Alta-Z). Esta condición de alta impedancia no es 0 lógico ni 1 lógico. Por tanto, podemos decir que el buffer de tercer estado tiene dos entradas lógicas, un 0 o un 1, pero puede producir tres estados diferentes en su salida, “0”, “1” y “Alta-Z”; precisamente esa es la razón por la que se le llama de tercer estado.
Habilitación
Entrada
1
Habilitación
A
Q
1 1 0 0
0 1 0 1
0 1 Alta-Z Alta-Z
Habilitación
A
Q
0 0 1 1
0 1 0 1
0 1 Alta-Z Alta-Z
Salida
a) –––––––––– Habilitación Entrada
1
Salida
b)
=`^liX+%,/ 9l]]\i[\k\iZ\i\jkX[fpjlkXYcX[\m\i[X[%X 9l]]\iXZk`mfXckf%Y 9l]]\iXZk`mfYXaf% Los buffers de tercer estado son muy usados en muchos sistemas digitales y, particularmente, en circuitos basados en microprocesadores o microcontroladores. Ello se debe a que los buffers permiten conectar múltiples dispositivos digitales a un mismo alambre, también llamado bus, sin ocasionar daño o pérdida de información. Por ejemplo, si se tiene un alambre o bus de datos conectado a varios dispositivos, como pueden ser memorias, periféricos o microprocesadores, cada uno de estos dispositivos es capaz de enviar o recibir información usando ese mismo alambre o bus. Si estos dispositivos empiezan a enviar y recibir datos al mismo tiempo, entonces podría ocurrir
grupo editorial patria®
191
4 La maravillosa electrónica digital
una condición de corto circuito cuando un dispositivo envía al bus un 1 lógico (voltaje de la alimentación), mientras que otro dispositivo envía un 0 lógico (tierra). Esta condición puede causar posible daño en los dispositivos o pérdida de datos. En estas circunstancias, el buffer de tres estados es el componente digital adecuado para aislar estos dispositivos digitales, entre ellos y con el bus de datos. Si las entradas de habilitación de varios buffers de tercer estado se conectan a las salidas de un decodificador, entonces únicamente se podría habilitar un dispositivo de tercer estado a la vez. Cuando se habilita un buffer, el resto de los buffers se encuentra en su estado de alta impedancia. Un ejemplo de cuatro buffers de tercer estado conectados a un alambre común o bus se muestra en la figura 4.59. Habilitación 0
Habilitación 1
Habilitación 2
Habilitación 3
Dato 0
Dato 1
Dato 2
Dato 3
1
1
1
1
Línea de datos común (bus de datos)
=`^liX+%,0 :fe\o`e[\ZlXkifYl]]\ij[\k\iZ\i\jkX[fZfe\ZkX[fjXleXce\X[\[XkfjZfde% Comercialmente se encuentran disponibles, en CI, buffers de tercer estado TTL o CMOS. Uno de estos CI, es el buffer de ocho elementos (óctuple) 74HC244, el cual tiene dos entradas de control que se habilitan con 0 lógicos, como se ilustra en la figura 4.60. VCC
CB
Q1
A8
Q2
A7
Q3
A6
Q4
A5
20
19
18
17
16
15
14
13
12
11
1
2
3
4
5
6
7
8
9
10
CA
A1
Q8
A2
Q7
A3
Q6
A4
Q5
GND
=`^liX+%-' 9l]]\i[\k\iZ\i\jkX[f\e:@.+?:)++% Las señales de control del buffer 74HC244 habilitan de manera independiente a dos grupos de 4 buffers. Si se requiere habilitar los 8 buffers al mismo tiempo, como puede ocurrir en muchas aplicaciones de microprocesadores, solo es necesario unir las dos entradas de control, CA y CB, de la figura 4.60.
La magia del tercer estado de los buffers La pregunta obligada con respecto al buffer de tercer estado es saber de dónde proviene su estado de alta impedancia. Para esto, primero vamos a explicar cómo se obtiene un 1 lógico y 0 lógico en una compuerta NAND. Como se recordará, al inicio de este capítulo, se dijo que, de manera simple, podemos crear una compuerta NAND usando una compuerta AND y un inversor, como se muestra en la figura 4.61 a); sin embargo, aprovechando al máximo las posibilidades que ofrece la alta integración de transistores sobre un sustrato único de material semiconductor, al diseño de la compuerta NAND se le añade una etapa de salida amplificadora de corriente compuesta por dos transistores, en
192
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
X
+5 V
Y
VCC
4K
1K6
Z
130 T1
a+b a b
a b
a+b
T T2 1K
=`^liX+%-( X :fdgl\ikXE8E;j`dgc\%Y :fdgl\ikXE8E;d\afiX[XZfejXc`[Xglj_glcc% Z KiXej`jkfidlck`\d`jfiXeXc`qX[fZfejl\hl`mXc\ek\\e[`f[fj%
una configuración denominada push-pull, y se usa un transistor multiemisor en su entrada, como se muestra en la figura 4.61 b). La etapa de salida de dos transistores NPN, llamada totem pole, aumenta la corriente suministrable y, por ende, disminuye la resistencia de salida. El transistor multiemisor de entrada mejora considerablemente la conmutación de la puerta, y su comportamiento puede ser analizado en términos de diodos, como se muestra en la figura 4.61 c). El funcionamiento de la compuerta NAND que se ilustra en la figura 4.61 b) se basa en el sentido en que circula la corriente que recibe la base del transistor multiemisordes de la resistencia de 4K. Si dicha corriente va “hacia afuera”, es decir, si alguna de las entradas está conectada a 0 lógico, el transistor T se encontrará en corte, estableciendo a su vez en corte al transistor T2, mientras que el transistor T1 entrará en estado de saturación; en consecuencia, se tendrá un 1 lógico a la salida. Cuando las dos entradas se encuentran en 1 lógico, dicha corriente circula “hacia adentro”, hacia la base del transistor T, el cual se satura y lleva también a saturación al transistor T2, mientras T1 se va al estado de corte, por lo que se establece la salida a 0 lógico.16 En otras palabras, cuando un T1 se enciende, T2 se apaga y viceversa. Para un buffer de tercer estado, el estado de alta impedancia se basa en apagar simultáneamente los dos transistores de la salida Totem pole cuando se active la entrada de control. La figura 4.62 muestra un buffer de tercer estado TTL con la entrada de habilitación en 0 lógico; es decir, el buffer estará en alta impedancia cuando dicha entrada se ponga en 1 lógico. De la figura 4.62 observamos que cuando la entrada de habilitación B2se establece en 1 lógico, hace que el transistor T5 entre en estado de corte; por tanto, la corriente base colector de T5 satura los transistores T6 y T7. El diodo D1 R1
R5
R7 T3
A2
T2
T1
D1
D2
C2 = A2 ’
T4 R2 B2
R3 T5
R6 T6 T7 R4
=`^liX+%-) 9l]]\i[\k\iZ\i\jkX[f% 16
Un 0 lógico en una entrada supone una corriente “hacia afuera”, de forma que una entrada TTL que se deje sin conexión (al aire) equivale a un 1 lógico, exceptuando los efectos de ruido.
grupo editorial patria®
193
4 La maravillosa electrónica digital
conduce, lo cual produce que los transistores de salida del circuito se corten debido al potencial bajo en el emisor de T1 y del colector de T2. La conducción de T1 bloquea a T2, y produce que T4 no reciba corriente en la base, por lo que entra a estado de corte. Por otro lado, el colector del transistor T2 queda a un potencial muy cercano a tierra, llevando a T3 a corte.
Latches tipo D Algunas veces los términos flipflop y latch se usan como sinónimos, ya que su funcionamiento es muy similar; no obstante, hay una diferencia. Por ejemplo, se dice que un latch tipo Des transparente (permite el paso de su entrada D) cuando su entrada de reloj CLK es un 1 lógico, y cuando CLK es 0 lógico se dice que es opaco o que retiene el dato que se encontraba en la entrada D. Por otro lado, un flipflop permite el paso de su entrada D (es transparente) durante un breve intervalo, esto es, durante la transición de 0 lógico a 1 lógico. Como sabemos, los flipflops o latches pueden usarse para formar celdas de memoria. Un grupo paralelo de estos dispositivos forma lo que se denomina un registro. La terminal de reloj, CK, de todos los latches o flipflops se une, de tal manera que se puede almacenar una palabra de diferentes bits cuando se aplique una transición de reloj a sus entradas CK. Un dispositivo de esta naturaleza muy usado en sistemas digitales es el latch D 74HC573, del que la figura 4.63 muestra su símbolo y su diagrama lógico. D0
2 3 4 5 6 7 8 9
D0 D1 D2 D3 D4 D5 D6 D7
1 –– OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
19 18 17 16 15 14 13 12
D1
D Q LATCH 1 –– LE
D2
D Q LATCH 2 –– LE
D3
D Q LATCH 3 –– LE
D4
D Q LATCH 4 –– LE
D5
D Q LATCH 5 –– LE
D6
D Q LATCH 6 –– LE
D7
D Q LATCH 7 –– LE
D Q LATCH 8 –– LE
LE –– OE
LE 11 mna807
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
=`^liX+%-* JdYfcfp[`X^iXdXc^`Zf[\lecXkZ_fZkXck`gf;.+?:,.*% El 74HC573 es un CI compuesto por 8 latches tipo D y 8 buffers de tercer estado que corresponden a la salida de cada latch, tal como se aprecia en el diagrama lógico de la figura 4.63. La entrada de habilitación del latch, LE, y la entrada de habilitación de la salida, /OE, son comunes para todos los latches. Por su parte, la figura 4.64 muestra la tabla de verdad del latch 74HC573.
/OE
LE
Dn
Salida interna del latch
0
1
0
0
0
1
1
1
0
0
0
0
0
1
1
1
0
0
Z
1
1
Z
Entradas de control
Entrada
Modo de operación Habilitación y lectura de registro (modo transparente) Latch y lectura de registro Registro latch y salidas deshabilitadas
1
0
Salida Qn
=`^liX+%-+ KXYcX[\m\i[X[[\ccXkZ_.+?:,.*% Cuando la entrada de control, LE, es 1 lógico, los datos en las entradas Dn se introducen en los latches (modo transparente); esto es, la salida del latch cambiará cada vez que cambie su entrada D. Cuando LE es 0 lógico, los latches
194
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
almacenarán los datos que estaban presentes en las entradas D, considerando el tiempo de set up que precedió a la transición de 1 a 0 lógico. Cuando la señal de control /OE es un 0 lógico, el contenido de los latches estará disponible en las salidas. Pero, cuando /OE se establezca en 1 lógico, las salidas irán al estado de alta impedancia. En la tabla de verdad podemos observar que la operación de la entrada /OE no afecta el estado de los latches. Los latches 74HC573 son funcionalmente idénticos a los latches 74HC373 y 74HC563. Estos dispositivos son muy útiles como puertos de entrada o salida de sistemas basados en microprocesadores o microcontroladores, debido a que contienen buffers de tercer estado que los hace ideales para aplicaciones orientadas a buses.
Usar alambres para representar números Los sistemas digitales, en general, y los sistemas basados en microprocesadores, en particular, procesan elementos discretos de información; por esta razón, es preferible usar el sistema numérico binario, el cual emplea solo dos dígitos: el 1 y el 0. El procesamiento de estos números dentro de un sistema basado en un microprocesador tiene que mapearse a sistemas f ísicos de compuertas lógicas y alambres. Por ejemplo, un alambre puede usarse para representar dos valores binarios, 0 y 1, esto es 21 2; dos alambres pueden usarse para representar cuatro valores binarios distintos, 002 012 102 112, esto es 22 2 r 2 4; tres alambres pueden usarse para representar 8 valores binarios distintos, 0002 0012 0102 0112 1002 1012 1102 1112, esto es 23 2 r 2 r 2 8, y así sucesivamente. El término bus se usa para representar un grupo de señales que transmiten información binaria. En sistemas basados en microprocesadores, un bus (llamado bus de datos), como su nombre lo indica, se usa para transportar información digital. Para los propósitos de este apartado, vamos a asumir que tenemos un bus de datos de 8 alambres, los cuales deseamos usar para transportar datos binarios. En este caso, esos ocho alambres pueden representar de la siguiente manera: 28 2 r 2 r 2 r 2 r 2 r 2 r 2 r 2 256 combinaciones posibles de 0 y 1 lógicos. Si se desea usar estas diferentes configuraciones para representar números, se podrían representar valores decimales en el rango de 0 a 255, como se muestra en la figura 4.65. 27 = Columna de 128s (MSB) 26 = Columna de 64s 25 = Columna de 32s 24 = Columna de 16s 23 = Columna de 8s 22 = Columna de 4s 21 = Columna de 2s 20 = Columna de 1s (LSB)
Ocho alambres 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 1
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1 1
... ... ... ... ... : ... ... ...
(0) (1) (2) (3) (4) (253) (254) (255)
=`^liX+%-, FZ_fXcXdYi\jljX[fjgXiXi\gi\j\ekXied\ifjY`eXi`fjj`ej`^ef% En cualquier sistema de numeración es común escribir el dígito más significativo a la izquierda y el menos significativo a la derecha. De manera similar, el dígito binario más significativo, al cual se le conoce como el bit más significativo (MSB), se encuentra a la izquierda del número binario, mientras que el menos significativo (LSB) se encuentra a la derecha.
grupo editorial patria®
195
4 La maravillosa electrónica digital
Como sabemos del apartado de sistemas de numeración, que se desarrolló al inicio de este capítulo, los humanos somos buenos con representaciones simbólicas, como palabras y números, pero tenemos dificultades al tratar con cantidades grandes de 1 y 0. Por ejemplo, es más fácil entender el número 253 que su contraparte binaria 111111012. Desafortunadamente, cambiar de binario a decimal es un poco engorroso; razón por la que en la actualidad predomina el sistema numérico hexadecimal; como ya se dijo, dicho sistema requiere únicamente 16 símbolos, y cada dígito hexadecimal puede convertirse directamente a cuatro bits. Una confusión que por lo general ocurre al utilizar representaciones binarias y hexadecimales es que estamos acostumbrados a iniciar contando desde el número 1, mientras que en los sistemas digitales se acostumbra a iniciar desde el número 0.17 Por ejemplo, en la figura 4.65 usamos 8 alambres para representar 28 256 diferentes combinaciones de 0 y 1. Sin embargo, su representación en binario, y por ende en hexadecimal, no termina en el número 256 en decimal, sino que cubre desde 0 hasta 255. El 0 corresponde a todos los dígitos binarios del número iguales a 0 y el número máximo a todos los dígitos binarios iguales a 1. Cada vez que aumentamos un alambre, duplicamos la cantidad de diferentes combinaciones, como se muestra en la figura 4.66. Exponente que indica el número de alambres
Combinaciones en decimal contando a partir del 0
28
255
1111 1111
FF
29
511
1 1111 1111
1FF
210
1023
11 1111 1111
3FF
11
2
2047
111 1111 1111
7FF
212
4095
1111 1111 1111
FFF
213
8191
1 1111 1111 1111
1FFF
Combinaciones en binario
Combinaciones en hexadecimal
14
2
16383
11 1111 1111 1111
3FFF
215
32767
111 1111 1111 1111
7FFF
216
65535
1111 1111 1111 1111
FFFF
=`^liX+%-- I\gi\j\ekXZ`e\e[\Z`dXc#Y`eXi`fp_\oX[\Z`dXci\cXZ`feX[XZfe\ced\if[\XcXdYi\j% La representación de alambres para obtener diferentes combinaciones de números es muy usada en los buses de direcciones, ya que determina la capacidad de direccionamiento de los microprocesadores. Pero nos estamos adelantando, esto lo veremos en el capítulo siguiente.
Máquinas de estado y dispositivos lógicos programables Máquinas de estado Todos los componentes digitales, desde la compuerta más simple hasta la supercomputadora más poderosa con el procesador más “mega-cool”, se basan en los componentes lógicos más simples construidos con muchísimos transistores. En estos sistemas complejos, existe un dispositivo “intermedio” que es importante mencionar, conocido como máquina de estado. Las máquinas de estado se encuentran entre la lógica discreta y los microprocesadores. Las máquinas de estado usualmente funcionan en sincronía con un reloj, tienen memoria y la mayoría de los componentes que tiene un microprocesador. Sin embargo, no requieren todos los elementos de un microprocesador para operar. Como lo indica su nombre, la salida de una máquina de estado es función del estado de sus entradas en cualquier momento. Con frecuencia se usa una entrada de reloj para determinar el momento en que las entradas deben ser evaluadas. Los flipflops se usan para almacenar información. Los flipflops reflejan el estado de las entradas en el momento 17
Esta es la razón principal por la que este libro inició con el capítulo 0.
196
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
en que la entrada de reloj esté presente. De esta manera, las condiciones usadas para la evaluación de datos digitales pueden ser almacenadas en memoria. Dicha evaluación se realiza en la transición positiva, negativa o permanente de la entrada de reloj. Esto hace que la temporización de la señal sea un parámetro muy significativo. La importancia de la temporización la describiremos cuando exploremos a los microprocesadores y microcontroladores, los cuales son máquinas de estado con un grupo definido de instrucciones, aunque… otra vez nos estamos adelantando. Debido al bajo costo de los microcontroladores, algunos diseñadores digitales consideran que la implementación pura de máquinas de estado se encuentra en proceso de extinción. Cuando se llegan a utilizar las máquinas de estado, por lo general se llevan a cabo dispositivos lógicos programables, también llamados PLD, por sus siglas en inglés, o FPGA (Field Programable GateArrays). Están ya muy lejanos los tiempos en los que se utilizaban flipflops en protoboards o tarjetas de wire-wrapping para construir una máquina de estado. En la actualidad, los PLD o FPGA, pueden tener un CPU y hasta componentes analógicos como OP AMP o comparadores. Hoy en día, los dispositivos lógicos programables se presentan como una opción de soluciones digitales que complementan, e incluso compiten, con los sistemas basados en microprocesadores o microcontroladores, y merecen un texto por separado; sin embargo, siguiendo la tendencia de este libro en el siguiente apartado intentaremos explicar de una manera sencilla y resumida que son los dispositivos lógicos programables, con el fin de obtener un entendimiento básico en el tema.
Dispositivos lógicos programables Actualmente existe un gran espectro de dispositivos lógicos programables. En la parte baja de este espectro se encuentran los dispositivos lógicos programables originales (PLDs). Sin embargo, los antecesores del PLDs fueron los primeros dispositivos PROM (Programmable Read-Only Memory). A los PROM se les añadió cierta versatilidad, introduciendo un mayor número de entradas y la inclusión de registros, lo cual dio origen a los primeros PLDs en circuito integrado. Estos dispositivos podían ser usados para llevar a cabo diseños lógicos de un manera flexible en hardware. En otras palabras, se podían quitar de un módulo electrónico varios circuitos digitales TTL, como compuertas (ORs, ANDs e inversores), y remplazarlas por un PLD. Otros nombres que se usan para este dispositivo son los PLA (Programmable Logic Array) y GAL (Generic Array Logic). Con frecuencia, los PLDs se usan para decodificar direcciones y reemplazar a su contraparte digital discreta, como la serie 7400. Debido a que se utiliza un solo CI, estos dispositivos ofrecen varias ventajas, principalmente requieren menos área, menor potencia y menos alambrado. Otro beneficio importante es que el diseño dentro del CI es flexible, de modo que un cambio en la circuitería lógica no requiere ningún re-alambrado en el módulo electrónico. En su lugar, la lógica puede ser alterada simplemente substituyendo un PLD con otro que ha sido programado con el nuevo diseño. Internamente, cada PLD contiene un conjunto de celdas o bloques lógicos conectados entre sí. A esas celdas se les llama generalmente macroceldas y típicamente se componen de cierta lógica combinacional, como compuertas AND y OR, y un flip flop. La figura 4.67 muestra una versión simplificada de la arquitectura interna de un PLD. Entradas y retroalimentación de los flip flops
D ANDs
D D Salidas
ANDs
D D
ANDs
D
=`^liX+%-. 8ihl`k\ZkliX`ek\ieXj`dgc`]`ZX[X[\dXZifZ\c[Xj[\leGC;%
grupo editorial patria®
197
4 La maravillosa electrónica digital
En la figura 4.67 es posible apreciar que el PLD tiene dos niveles de compuertas lógicas: un plano programable de compuertas AND “alambradas”, seguido de un plano programable de compuertas OR. La estructura del PLD es tal que sus entradas, o sus complementos, pueden ser interconectados por compuertas AND, y cada salida del plano AND puede corresponder a cualquier minitérmino de las entradas. De manera similar, cada la salida del plano de las OR puede ser configurada para obtener una suma lógica de cualquiera de las salidas del plano de las AND. Con esta estructura, se pueden implementar adecuadamente funciones lógicas de suma de productos. Por ejemplo, vamos a suponer que se desea implementar un multiplexor de 4 entradas. Un multiplexor es un dispositivo que selecciona una entrada específica de un grupo de canales de entrada usando una entrada de control como se muestra en la figura 4.68 a). En este ejemplo, la salida, Z, del multiplexor es determinada por la entrada de control C. Si C 00, entonces la salida Z D0 y así sucesivamente. D0 C
D1
D0
Z
D2
D1
D3
Z D2 D3
C1C2 X
Y
=`^liX+%-/ @dgc\d\ekXZ`e[\ledlck`gc\ofiljXe[fleGC;% El diagrama esquemático del multiplexor se muestra en la figura 4.68 b). En este diagrama podemos apreciar dos planos de compuertas constituido por compuertas AND y una compuerta OR, los cuales pueden secillamente implementarse usando un PLD. La ecuación booleana para el multiplexor es: Z (D0·/C1·/C2)(D1·C1·/C2)(D2·/C1·C2)(D3·C1·C2) De esta manera, es posible construir ecuaciones booleanas dentro de cada macrocelda, y si es necesario, se puede almacenar en un flip flop el valor de salida en la próxima transición de reloj. Los flip flops conectados a las salidas de las compuertas OR pueden ser usados para llevar a cabo circuitos secuenciales como registros o máquinas de estado. Por ejemplo, un registro de corrimiento puede implementarse usando una cadena de flip-flops, como se muestra en la figura 4.69. FD0 DENT
D /C
Q
FD1 D /C
Q
FD2 D
Q
DSAL
/C
CLK
=`^liX+%-0 @dgc\d\ekXZ`e[\lei\^`jkif[\Zfii`d`\ekfljXe[f]c`g$]cfgj\eleGC;% Una transisición de reloj en cada flip flop establece un valor del flip flop anterior. Para que este circuito funcione, obviamente los tiempos de retardo de los flip flops deben ser mayores que los tiempos de hold de los flip flops. Conforme la tecnología avanzó, fue posible integrar múltiples PLDs simples o SPLDs en un mismo CI, lo cual proveyó a este tipo de dispositivos de una estructura más compleja y de mayor capacidad. A esta estructura compleja se le llamó Complex PLD (CPLD, por sus siglas en inglés).18 Hoy en día, los PLDs de mayor capacidad son los Field 18
Una de las compañías pioneras de CPLDs es ALTERA, la cual introdujo la familia EPLD y posteriormente las series MAX-5000, MAX-7000 y MAX9000. En los primero años después de graduarme de la universidad tuve un requerimiento en un diseño electrónico para realizar un decodificador de 32 salidas, el cual implementé con un MAX-5000. Fue realmente cool realizar esta pequeña hazaña con un solo CI programando hardware.
198
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Programmable Gate Arrays (FPGA, por sus siglas en inglés). Los FPGAs consisten de un arreglo de compuertas que pueden ser programadas por el usuario de acuerdo a la lógica del circuito. La programación se efectúa por medio de interruptores programables hechos predominantemente de transistores CMOS, aunque existen otras tecnologías. A estos arreglos se les llama bloques lógicos o macroceldas. Una arquitectura típica de un FPGA se ilustra en la figura 4.70. Macrocelda (lógica combinacional y flip flops) Bloque de E/S
Interconexiones
=`^liX+%.' 8ihl`k\ZkliXkg`ZXj`dgc`]`ZX[X[\le=G>8% Las particularidades de las compuertas lógicas y los flip flops son específicos de cada fabricante; sin embargo, el concepto general de los dispositivos programables es el mismo. El diseño de hardware en estos dispositivos es generalmente realizado usando lenguajes de programación como ABEL o PALASM, equivalentes al lenguaje ensamblador de los microprocesadores que se estudian en el siguiente capítulo, o dibujando con la ayuda de herramientas denominadas Computer Aided Design (CAD, por sus siglas en inglés) de captura de esquemáticos. Además, existen dos lenguajes de descripción de hardware (HDL, por sus siglas en inglés) muy importantes: el VHDL y el Verilog. VHDL es similar al lenguaje de alto nivel Pascal, mientras que Verilog es similar a C. La alta capacidad de los dispositivos programables de hoy en día ha sido la razón por la cual muchas aplicaciones de circuitos digitales se están realizando con dispositivos lógicos programables. Sus aplicaciones son muy variadas, de modo que es muy dif ícil generalizar. Los dispositivos lógicos programables se encuentran en aplicaciones orientadas a sistemas prototipos, donde este dispositivo le permite al diseñador cambiar con mayor facilidad la lógica digital entre componentes digitales, llamada “glue logic”, durante el desarrollo o la prueba del módulo electrónico. Cuando el módulo está listo, el dispositivo lógico programable puede cambiarse por sus equivalentes en CI digitales de menor costo. Con otro enfoque, fabricantes de FPGAs proporcionan bibliotecas con bloques complejos listos para usarse tales como contadores, temporizadores/contadores, comparadores analógicos y hasta microprocesadores o microcontroladores. De este modo se puede seleccionar a placer un bus de 8 o 16 bits. Otra alternativa es usar CI híbridos, donde los fabricantes incluyen dentro del CI una parte lógica fija, como un microprocesador funcional, y una parte de lógica programable y tal vez algo de memoria. Como vimos antes, es posible diseñar registros y hasta memorias SRAM con dispositivos programables y alterar los diseños on-the fly, es decir, cuando están en operación o cuando se requiere. Esta práctica se llama computación reconfigurable. Aunque originalmente se propuso en la década de 1960 por investigadores de la Universidad de California en Los Angeles (UCLA), todavía es un campo de estudio relativamente nuevo. Se podría pensar que han pasado ya varias décadas para que este campo de investigación se considere relativamente nuevo. La razón fue la falta de hardware reconfigurable. El uso de dispositivos lógicos programables ha alcanzado una alta integración de compuertas solo hasta años recientes, lo cual los hace adecuados para aplicaciones que vayan más allá de la investigación académica.
grupo editorial patria®
199
4 La maravillosa electrónica digital
Con todo lo anterior, el futuro de la computación reconfigurable luce brillante y en la actualidad ha encontrado usos en aplicaciones de comunicaciones, militares, automovilísticas y de inteligencia.19
PRINCIPALES
TECNOLOGÍAS DIGITALES
La popularidad de los circuitos integrados digitales se debe, en gran medida, a su accesibilidad a un precio muy bajo. Asimismo, también, porque en la actualidad los fabricantes han desarrollado muchas familias de CI que pueden utilizarse en conjunto con otros grupos de la misma familia para formar un sistema digital. En este caso, la interfaz20 entre circuitos de la misma familia se lleva a cabo con mucha facilidad; esto es, los CI son compatibles y pueden conectarse sencillamente entre sí. Algunas de las familias se fabrican usando tecnología bipolar, mientras que otras utilizan tecnología MOS. La familia de tecnología bipolar más popular es la que usa la lógica transistor-transistor (TTL, por sus siglas en inglés). Por su parte, la familia MOS utiliza transistores de efecto de campo (FET). Con frecuencia, los fabricantes clasifican a los CI de acuerdo con su complejidad, la cual se relaciona con su densidad o capacidad para integrar en un mismo microcircuito un cierto número de compuertas o el equivalente en transistores. La capacidad y el talento de los diseñadores de CI ha hecho posible, aproximadamente cada dos años, incrementar al doble el número de transistores, aspecto que se conoce como la ley de Moore.21 En la figura 4.71 se presenta una gráfica que muestra las tendencias previstas por los expertos, empezando desde la ZLI (cero escala de integración), pasando por la MLI (integración a escala media), hasta llegar a la ULSI (integración a escala ultra alta) y la GSI (integración a escala giga alta). ('(( ('('
>J@
0
('
:fdgfe\ek\jgfi:@
('/
LCJ@
('. ('-
MCJ@
(', ('+ ('* (')
CJ@ DJ@ JJ@ QJ@
(
('
(''
(0-'
(0.'
(0/'
(00'
)'''
)'('
)')'
=`^liX+%.( ;\ej`[X[[\:@Zfei\jg\ZkfXck`\dgf\ehl\j\cc\mXZXYf% 19
20
21
En la década de 1990 que iniciaba mi carrera profesional, ya tenía conocimiento y cierta fascinación por los dispositivos lógicos programables, aunque los costos para implementarlos en los diseños eran altos. Incluso hoy en día, debido al bajo costo de los microprocesadores, los dispositivos lógicos programables son una opción relativamente costosa aunque sus precios continúan bajando. El empleo de estos dispositivos en el campo de la computación reconfigurable no llamó mi atención hasta 1997, cuando un colega y amigo que hacía su doctorado en la Universidad de York, en Inglaterra, publicó un artículo denominado Biologically inspired reconfigurable hardware for dependable applications, en el cual utilizaba un FPGA para diseñar sistemas reconfigurables tolerantes a fallas. Este trabajo fue enmarcado en una naciente disciplina llamada embryionics, cuya propuesta conceptual ha continuado atrayendo a investigadores a este campo de la investigación. La palabra interfaz es muy común en sistemas digitales. De forma estricta, una interfaz se puede definir como la unión de un grupo (por ejemplo, es comparable a grupos como gente, instrumentos, dispositivos, sistemas, etcétera) capaz de funcionar de forma compatible y coordinada, es decir, sincronizada. En sistemas digitales, la interfaz puede considerar los aspectos de voltajes y corrientes, temporización y sentido de las corrientes (entradas y salidas). La ley de Moore lleva ese nombre en honor de Gordon Earle Moore (1929) investigador estadounidense y autor de dicha ley, la cual fue publicada en 1965 en la revista Electronics Magazine. Gordon Moore fue de los investigadores que dejó la compañía de William Shockley para crear la compañía Fairchild Semiconductor Corporation. Posteriormente, en 1968, Moore cofundó Intel Corporation junto con Bob Noyce. La ley de Moore publicada en 1965 y revisitada en 1975 establece que el número de transistores en un CI debería duplicarse cada 24 meses. Por más de 45 años, la ley de Moore ha sido la fuerza motriz de la industria electrónica, ya que los competidores se dan cuenta de que si no avanzan de acuerdo con esta ley podrían quedarse retrasados tecnológicamente. Compañías como Intel, IBM, Toshiba y Sony han llegado a reducir los transistores de sus CI a 45 nm (nanómetros), y se espera que los CI con 22 nm puedan fabricarse usando nuevos materiales que reemplacen el dióxido de silicio. Como ejemplo, Intel ha logrado introducir 731 millones de transistores en un solo CI. ¡Impresionante!
200
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Eventualmente, la industria de la microelectrónica espera llegar a un punto en el cual no sea posible hacer más pequeños los transistores. Hasta hace algunas décadas, se esperaba que en el año 2000 se alcanzara esa barrera; afortunadamente, los diseñadores de CI han logrado sobrepasar los obstáculos22 y el camino continúa en grado ascendente; parece que aún queda espacio suficiente para la creatividad. Volviendo al tema de las tecnologías, los diseñadores de sistemas digitales disponen de muchas familias de CI, ya sean bipolares o MOS, algunas de las cuales se listan en la figura 4.72. =Xd`c`XjY`gfcXi\j IKC ;KC KKC <:C ?KC ?K
C^`ZX[\i\j`jk\eZ`X$kiXej`jkfi C^`ZX[\[`f[f$kiXej`jkfi C^`ZX[\kiXej`jkfi$kiXej`jkfiKKC\jk}e[Xi#KKC[\YXaXgfk\eZ`X#KKC[\YXaXm\cfZ`[X[#KKCJZ_fkkbp#KKCJZ_fkkbp [\YXaXgfk\eZ`X#KKCJZ_fkkbpXmXeqX[X#\eki\fkifj C^`ZX[\\d`jfi\jXZfgcX[fjkXdY`eccXdX[Xc^`ZX\edf[f[\Zfii`\ek\ C ^`ZX[\XckfldYiXckXdY`eccXdX[X?@EC#c^`ZX[\XckX`edle`[X[Xcil`[f C ^`ZX[\`ep\ZZ`e`ek\^iX[X
GDFJ EDFJ :DFJ
Jj\d`Zfe[lZkfi[\d\kXc$o`[fZXeXcG J\d`Zfe[lZkfi[\d\kXc$o`[fZXeXcE J\d`Zfe[lZkfi[\d\kXc$o`[fZfdgc\d\ekXi`f
=Xd`c`XjDFJ
=`^liX+%.) Gi`eZ`gXc\j]Xd`c`XjY`gfcXi\jpDFJ% Aprovechando los avances en la reducción de dimensiones de los transistores y la correspondiente disminución de sus capacitancias parásitas, para conseguir incrementar la velocidad de conmutación de los transistores, las familias bipolares y las familias MOS fueron evolucionando, tal como lo muestra la figura 4.73.
IKC
gDFJ
;KC
KKC
CJ$KKC
.+
.+CJ jlg\im`m`\ek\j
EDFJ MCJ@
8CJ$KKC
8J$KKC
.+8J `ek\iYj
.+8J#.+= XckXm\cfZ`[X[
:DFJ +'
?:DFJ .+?:#.+8?: \eljf
=`^liX+%.*
Entre más pequeños y más rápidos sean los diseños de los transistores, se pueden realizar más cálculos en un mismo CI. Sin embargo, trabajar a estas escalas tan pequeñas no es gratuito. Uno de los retos se relaciona con la potencia de cada transistor. Al ser más pequeños y conmutar más rápido, su consumo de potencia también se incrementa. Otro problema son las corrientes de fuga en los dieléctricos de la compuerta de los transistores, lo cual reduce su efectividad. Para resolver esto, Intel y otras compañías han reemplazado el dióxido de silicio por el óxido de un metal tetravalente llamado hafnio, el cual tiene una mayor capacidad para almacenar carga eléctrica.
grupo editorial patria®
201
4 La maravillosa electrónica digital
Tecnologías TTL Los diversos términos que aparecen en la literatura de los fabricantes de CI, generalmente sirven a los diseñadores para comparar, seleccionar y usar las familias lógicas. En este apartado comentamos los términos y las características más importantes de las familias TTL vigentes y de las CMOS. Así pues, iniciamos con la familia TTL.
Niveles de entrada y de salida de las familias TTL ¿Cómo se define un 0 lógico (BAJO) o un 1 lógico (ALTO) en términos de voltaje? Para responder esta pregunta, inicialmente consideramos cuál es el voltaje de alimentación del CI. Típicamente, para la tecnología TTL de la serie 74, el voltaje de alimentación es VCC 5 V y GND 0 V. Por consiguiente, el fabricante suele especificar que para operar correctamente una entrada en 0 lógico, el voltaje debe encontrarse entre 0 V y 0,8 V, esto es, VIL(mín) 0 V y VIL(máx) 0,8 V. De igual manera, una entrada en 1 lógico debe encontrarse entre 2,0 V y 5,0 V, esto es, VIH(mín) 2 V y VIH(máx) 5 V. De igual modo, para que una salida en 0 lógico funcione correctamente, esta debe encontrarse entre 0 V y 0,4 V, esto es, VOL(mín) 0 V y VOL(máx) 0,4 V. Mientras que para operar una salida de 1 lógico, el voltaje debe encontrarse entre 2,4 V y 5 V, esto es, VOH(mín) 2,4 V y VOH(máx) 5 V. La figura 4.74 muestra estos niveles de voltaje de entrada y de salida de las tecnologías TTL. ,M
M@?d}o
MF?d}o
,M
(c^`Zf
(c^`Zf )%+M
MF?de
M@?de
)M
Efgi\[\Z`Yc\
Efgi\[\Z`Yc\ M@Cd}o
'%/M 'c^`Zf
M@Cde
'M E`m\c\j[\mfckXa\ XcX\ekiX[X
'%+M 'M
'c^`Zf
MFCd}o MFCde
E`m\c\j[\mfckXa\ XcX\ekiX[X
=`^liX+%.+ E`m\c\j[\mfckXa\[\\ekiX[Xp[\jXc`[X[\cXjk\Zefcf^XjKKC%
Margen de ruido en familias TTL En sistemas digitales, se denomina ruido a cualquier perturbación involuntaria que puede originar un cambio no deseado en la salida del circuito. Los circuitos digitales deben tener cierta inmunidad al ruido, la cual se define como la capacidad para tolerar fluctuaciones de voltaje no deseadas en sus entradas, sin que se afecte el estado de salida. Por lo anterior, los fabricantes de CI establecen un margen de seguridad, denominado margen de ruido, considerado una medida de la inmunidad del circuito digital frente al ruido. El margen de ruido se calcula tanto para el nivel lógico ALTO, VNH, como para el nivel lógico BAJO, VNL, usando las siguientes ecuaciones: VNH VOH (mín) – VIH (mín) VNL VIL (máx) – VOL (máx) En la figura 4.75 se observa el margen disponible frente al ruido para las familias TTL, es decir, el rango dentro del cual el ruido no produce errores sobre los valores lógicos, porque las variaciones de voltaje que provoca el ruido quedan dentro de los niveles asignados.
202
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
,M
,M
MF?de M@?de
DXi^\e[\il`[f
t gXiX\ce`m\c8CKF M@Cd}o MFCd}o
'M
'M
ME?4'%+M
t
DXi^\e[\il`[f gXiX\ce`m\c98AF
MEC4'%+M
=`^liX+%., DXi^\e[\il`[fgXiXcfje`m\c\jc^`Zfj8CKFp98AF[\cX]Xd`c`XKKC\jk}e[Xi% Para la lógica TTL, los márgenes de ruido son de 0,4 V para ambos niveles de voltaje, ALTO o BAJO.
Configuraciones de salida en las familias TTL Las familias lógicas TTL tienen tres tipos de configuraciones de salida: 1. Salida de colector abierto. 2. Salida tótem pole o poste totémico. 3. Salida de tres estados. Como sabemos, la lógica de funcionamiento de los dispositivos de tercer estado se describió en una sección anterior de este capítulo; por tanto, en esta sección describimos únicamente la lógica de las configuraciones de salida de colector abierto y tótem pole. Salida de colector abierto La compuerta básica TTL fue una modificación de la lógica DTL, en la cual no se incluían diodos, como se puede apreciar en la compuerta NAND de la figura 4.76. ,M
+B
8 9 :
,M
(%-B
IC
=
H) H( H* (B
=`^liX+%.- :fdgl\ikXE8E;KKCZfejXc`[X[\Zfc\ZkfiXY`\ikf% Como se puede observar en la figura 4.76, la resistencia externa RL (también llamada resistencia de pull-up) no es parte del CI, por lo que debe conectarse para que la salida pueda obtener el nivel lógico ALTO, cuando el transistor Q3 está en corte. Si cualquiera de los niveles lógicos de entrada es 0 lógico, la unión base-emisor en Q1 se polariza directamente. En consecuencia, el voltaje en la base Q1 es igual a: VIL (voltaje de entrada) VBE(Q1) 0.2 V 0.7 V VB (Q1) 0.9 V
grupo editorial patria®
203
4 La maravillosa electrónica digital
El transistor Q3 comienza a conducir cuando la suma de las caídas de voltaje de VBC(Q1), VBE(Q2) y VBE(Q3) son superiores a 2.1 V. Como el voltaje en la base de Q1, VB(Q1), es 0.9 V, cuando una de las entradas es 0 lógico, el transistor Q3 queda en estado de corte. Por tanto, si se conecta una resistencia al colector, el voltaje de salida será un 1 lógico. Si todos los niveles lógicos de entrada son 1 lógico, los transistores Q2 y Q3 se saturan debido a que el voltaje en la base de Q1 es superior a la suma de las caídas de voltaje VBC(Q1), VBE(Q2) y VBE(Q3). Por consiguiente, el estado de salida es igual a 0 lógico. Salida tótem pole La otra configuración de salida es aquella que recibe el nombre de tótem pole, la cual se ilustra en la figura 4.77. La diferencia entre una compuerta de colector abierto y una de tipo tótem pole radica en el transistor Q4 y el diodo D1. ,M
+B
(%-B
(*'7 H+
8 9 :
;(
H)
=
H( H* (B
=`^liX+%.. :fdgl\ikXE8E;KKCZfejXc`[Xkk\dgfc\% La salida es 0 lógico cuando Q2 y Q3 se encuentran en saturación, como en la compuerta de colector abierto. El valor del voltaje en el colector, VC, de Q2 se obtiene mediante la siguiente ecuación: VBE (Q3) VCE (Q2) 0.7 V 0,2 V VC(Q2) 0.9 V Por su parte, el voltaje de salida tótem pole en el punto F está determinado por el VCE (Q3) 0.2 V, es decir, un 0 lógico (BAJO), y por el transistor Q4 que se encuentra en estado de corte. El transistor Q4 está en corte debido a que VC(Q2) VB(Q4) 0.9 V. El diodo se coloca para provocar una caída de voltaje en el lazo, VBE(Q4) V(D1), y asegurar el corte de Q4 con Q3 saturado, esto es: VB(Q4) < VBE(Q4) V(D1) ® 0.9 V< 0.7 V 0.7 V Una transición al estado de 1 lógico en la salida tótem pole, F, por causa de un cambio en una entrada a 0 lógico, hace que los transistores Q2 y Q3 vayan a estado de corte. Cuando Q2 entra en corte, Q4 conduce por el voltaje conectado a su base a través de la resistencia de 1,6 kΩ. Entonces, el voltaje de salida tótem pole, F, es: F (VCC) – (VBE Q4) – (VD1) 5 V – 0.7 V – 0.7 V 3.6 V Aplicaciones de lógica TTL con salida de colector abierto La salida tótem pole de un circuito TTL puede absorber una cantidad de corriente limitada en estado 0 lógico, IOLmáx, de 16 mA en la serie estándar y de 20 mA en la serie AS. Sin embargo, en muchas aplicaciones se requiere excitar
204
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
dispositivos que necesitan un consumo de corriente mayor, como relés, lámparas, LEDs, etcétera. En este caso, la mejor opción es usar transistores discretos a la salida tótem pole de la compuerta o una compuerta en colector abierto, debido a su mayor capacidad de manejo de corriente y voltaje, que típicamente puede absorber hasta 40 mA. La figura 4.78 muestra un ejemplo del uso de compuertas de colector abierto para excitar un LED o una lámpara de mayor voltaje.
(
M::
)
M::4)'M )
IC 8
* (
9
( )
9
* ( *
( )
)
8
)
)
(
=`^liX+%./ :fdgl\ikXE8E;[\Zfc\ZkfiXY`\ikfljX[XgXiX\oZ`kXileC<;pleXc}dgXiX[\)'M%
Sentido de las corrientes En este apartado analizamos los sentidos de las corrientes y estudiamos los conceptos de fuente (source) y sumidero o absorción (sink) de corriente. En la figura 4.79 se muestran dos compuertas NAND TTL conectadas en serie. "M::
"M:: J\ek`[f[\cX`ek\ej`[X[ gXiXjXc`[Xe`m\c8CKF
>E;
>E;
=`^liX+%.0 :fe\o`e[\[fjZfdgl\ikXjE8E;\ej\i`\2cXZfdgl\ikX\oZ`kX[fiXj\\eZl\ekiXXZk`mf8CKF pXZkXZfdf]l\ek\jfliZ\ [\Zfii`\ek\%
Cuando la compuerta excitadora, que se ubica hacia el lado izquierdo de la figura 4.79, tiene un nivel de salida ALTO, actúa como fuente de corriente para la carga, en este caso otra compuerta NAND. La entrada a la NAND de carga son diodos en polarización inversa, por lo que la corriente es muy pequeña, típicamente 40 μA para una carga TTL. Por otro lado, cuando la salida de la compuerta excitadora se encuentra en un nivel BAJO, actúa como un sumidero de corriente, como se ilustra en la figura 4.80. Esta corriente es mayor, ya que los diodos base-emisor de la carga se encuentran en polarización directa, típicamente 1,6 mA, para una carga TTL. Además, el sentido de la corriente es negativo, por lo que en las hojas de características de los proveedores aparece con un signo negativo. Por lo general, un CI de la familia TTL puede absorber más corriente de la que puede proporcionar. No se recomienda conectar las salidas tótem pole juntas, ya que dicha conexión produce una corriente excesiva que podría dañar los dispositivos.
grupo editorial patria®
205
4 La maravillosa electrónica digital
"M::
"M:: J\ek`[f[\cX `ek\ej`[X[gXiX jXc`[Xe`m\c98AF
>E;
>E;
=`^liX+%/' :fe\o`e[\[fjZfdgl\ikXjE8E;\ej\i`\2cXZfdgl\ikX\oZ`kX[fiXj\\eZl\ekiXXZk`mf98AF pXZkXZfdfjld`[\ifj`eb [\Zfii`\ek\%
Tecnologías CMOS La fabricación de transistores MOS en CI presentó grandes problemas, especialmente derivados de un efecto superficial del cristal de silicio, el cual era afectado por cualquier impureza. Para resolver estas dificultades, fue necesario desarrollar técnicas de muy alta limpieza ambiental, que no estuvieron disponibles sino hasta mediados de la década de 1970. Una vez que se dispuso de estas técnicas, las ventajas de los transistores MOS, principalmente el tamaño y el consumo, determinaron un rápido desarrollo y difusión de los mismos. Al principio resultaba más sencillo integrar transistores MOS de canal P; sin embargo, estos pronto fueron desplazados por transistores NMOS, cuya velocidad de conmutación es notoriamente mayor, debido a la mayor movilidad de los electrones respecto de los huecos. El uso de transistores MOS como resistencias de polarización permitió configurar compuertas lógicas utilizando únicamente transistores. La figura 4.81 muestra tres inversores NMOS, donde el transistor superior se encuentra siempre en conducción y equivale a una resistencia de polarización. M( M:: M::
M::
MJ8C M
M::
MJ8C M
MJ8C M
=`^liX+%/( Ki\jk`gfj[\`em\ijfi\jEDFJhl\`eZclp\elekiXej`jkfiZfdfi\j`jk\eZ`X[\gfcXi`qXZ`e% Al excluir resistencias integradas de valores relativamente altos, disminuyeron con notoriedad tanto el área de integración como el consumo de potencia. De esta manera, se estableció un nuevo avance en la miniaturización de la electrónica digital. La utilización conjunta de transistores MOS de canal N y de canal P permitió que el consumo estático de las puertas fuera nulo, lo cual dio lugar a la lógica CMOS (lógica con transistores MOS complementarios). La primera serie CMOS adoptó el indicativo 40 y presentaba fuertes limitaciones en cuanto a velocidad e inmunidad al ruido, aunque admitía un amplio rango de voltajes de alimentación (desde 3 V a 18 V). Sin embargo, atendiendo a la demanda
206
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
de los usuarios acostumbrados a usar la familia TTL, se desarrolló la serie 74C, compatible con la familia TTL en cuanto a funciones y terminales de los circuitos integrados del mismo número. Posteriormente, también se desarrollaron series avanzadas, como la 74HCT y la 74ACT, todas basadas en los ahora populares transistores CMOS. La figura 4.82 muestra un inversor y una compuerta CMOS. "M;; "M;;
J
J
8
8
>E; 9 >E; Gl\ikXE8E;:DFJ
@em\ijfi:DFJ
=`^liX+%/) :fdgl\ikXj`em\ijfiXpE8E;ljXe[fk\Zefcf^X:DFJ%
Niveles de voltaje de entrada y salida y margen de ruido en la familia 74 AC CMOS Considerando que la alimentación de la tecnología CMOS es VDD 5 V, el nivel de voltaje de entrada para el 0 lógico es desde 0 V hasta 1.5 V; esto es, VIL(mín) 0 V y VIL(máx) 1.5 V; mientras que para el nivel de voltaje de entrada para el 1 lógico es desde 3.5 V hasta los 5 V, es decir, VIH(mín) 3.5 V y VIH(max) 5 V. Por otro lado, el nivel de voltaje de salida para el 0 lógico es desde 0 V hasta 0.1 V, esto es, VOL(mín) 0 V y VOL(máx) 0.1 V; mientras que el nivel de voltaje de salida para el 1 lógico es de 4.9 V hasta 5 V, esto es, VOH(mín) 4.9 V y VOH(máx) 5 V. La figura 4.83 muestra estos niveles de voltaje de entrada y salida de la tecnología CMOS considerando un voltaje de alimentación de 5 V. ,M
M@?d}o
,M (c^`Zf
MF?d}o
(c^`Zf +%0M
Efgi\[\Z`Yc\
MF?de
M@?de
*%,M Efgi\[\Z`Yc\
M@Cd}o
(%,M 'c^`Zf
M@Cde
'M E`m\c\j[\mfckXa\ XcX\ekiX[X
'%(M
'c^`Zf
'M
MFCd}o MFCde
E`m\c\j[\mfckXa\ XcX\ekiX[X
=`^liX+%/* E`m\c\j[\mfckXa\[\\ekiX[XpjXc`[X[\cXk\Zefcf^X:DFJ% Por tanto, los márgenes de ruido son: VNH VOH(mín) – VIH(mín) 4.9 V – 3.5 V 1.4 V VNL VIL(máx) – VOL(máx) 1.5 V – 0.1 V 1.4 V
grupo editorial patria®
207
4 La maravillosa electrónica digital
De manera similar a las familias TTL, los márgenes de ruido en la tecnología CMOS son los mismos en ambos estados, ALTO y BAJO. Sin embargo, la familia CMOS tiene una mayor inmunidad al ruido que las familias TTL, razón por la que esta tecnología es una opción muy atractiva para aplicaciones que están expuestas a medios ruidosos.23
Parámetros relevantes para las familias TTL y CMOS Disipación de potencia La disipación de potencia, PD, se obtiene del producto entre voltaje de alimentación por intensidad de corriente consumida por cada compuerta. Para ello, se considera un valor promedio de disipación para las salidas en ALTO y en BAJO; esto es, el valor medio de potencia que la compuerta puede consumir. Cuando un circuito lógico CMOS se encuentra sin cambiar (régimen estático), su disipación de potencia es extremadamente baja; no obstante, esta aumenta conforme aumenta la frecuencia de conmutación de las compuertas. Por otra parte, la disipación de potencia en función de la frecuencia para una compuerta TTL es constante dentro del rango de operación, como lo ilustra la figura 4.84. Gfk\eZ`X
:D
FJ
KKC
]
'
=`^liX+%/+ ;`j`gXZ`e[\gfk\eZ`X\ecXj]Xd`c`XjKKCp:DFJ\e]leZ`e[\cX]i\Zl\eZ`X% Cada vez que una salida CMOS pasa de BAJO a ALTO, tiene que suministrar una corriente de carga momentánea. Estos breves picos de corriente son proporcionados por el voltaje de alimentación VDD , y pueden tener una amplitud regular de 5 mA y durar de 20 a 30 ns. Evidentemente, cuando la frecuencia de conmutación aumenta, hay más de estos picos de corriente por segundo y el consumo de corriente promedio de VDD aumenta. Por esta razón, se recomienda que al diseñar sistemas digitales con tecnología CMOS se realice un análisis detallado de los componentes a utilizar, a fin de determinar la disipación de potencia en cierta frecuencia de operación.
Consumo El consumo energético de un sistema digital, en términos de intensidad o de potencia, tiene importancia desde dos puntos de vista: t El consumo de energía. t La disipación de calor de los componentes y del sistema en general. El consumo de energía se relaciona con la fuente de alimentación, la cual provee el voltaje de alimentación, VCC , el cual tiene la función de suministrar suficiente corriente, de acuerdo con el consumo global del sistema digital. Por 23
El ruido puede generarse en el exterior por la presencia de motores o interruptores; por el acoplamiento de conexiones a líneas de voltaje cercanas a los CI, o por picos de la corriente de alimentación.
208
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
otro lado, la energía consumida por el sistema se disipa en el mismo en forma de calor y tiene que ser desalojado para evitar un aumento excesivo de la temperatura; en ocasiones, se requiere de un sistema de enfriamiento particular para asegurar la velocidad o frecuencia de operación de un circuito.24 Los fabricantes de CI digitales especifican los datos del consumo estático en términos de la cantidad de corriente consumida de forma global por el CI; esto es, la cantidad de corriente cuando la salida es un 0 lógico, ICCL, y la cantidad de corriente cuando la salida es un 1 lógico, ICCH. El consumo estático no incluye las transiciones entre los dos estados lógicos. Por ello, además del consumo estático, el fabricante también incluye datos del consumo dinámico, es decir, el que se produce durante las transiciones. En la familia TTL prevalece el consumo estático, por lo que el consumo dinámico es despreciable respecto al estático. En cambio, en la familia CMOS el consumo estático es nulo, al tiempo que el dinámico se relaciona con la frecuencia de operación. Por tanto, cuando se realiza la evaluación global del consumo dinámico de un sistema digital, se recomienda considerar que no todos los componentes lógicos conmutan a la vez, y que en determinados subsistemas lo hace solamente un pequeño número de ellos.
Retardo de propagación El diseño de un sistema digital siempre debe considerar el tiempo que transcurre entre el cambio de nivel lógico en una entrada y el correspondiente cambio de nivel lógico a la salida de los componentes lógicos utilizados. Por ejemplo, cuando una señal llega a la entrada de un dispositivo digital, la respuesta a dicha señal no aparece instantáneamente en la salida, sino que toma un cierto tiempo en propagarse. Este tiempo es denominado por los fabricantes como retardo de propagación (tPD), y se especifica de acuerdo con la transición de estado lógico; esto es, cuando la salida cambia de nivel ALTO a BAJO (tPHL) y cuando la salida cambia de nivel BAJO a ALTO (tPLH). Ambos tiempos de propagación suelen tener valores cercanos entre sí, lo cual permite utilizar su promedio como tiempo de propagación genérico: tPD (tPLH tPHL) / 2 Los tiempos de propagación dependen del voltaje de alimentación, de la impedancia de carga conectada a la salida y de la temperatura. Así, entre más alto es el voltaje de alimentación, el tiempo de retardo es menor. Por otro lado, la impedancia de carga es el número de entradas conectadas a la salida del componente digital; en el caso de los CI CMOS, sus entradas son de tipo capacitivo, del orden de unos pocos picofaradios, de tal forma que los tiempos de propagación CMOS suelen medirse y expresarse con relación a una carga típica de 50 pF. Finalmente, podemos decir que los valores típicos de los tiempos de propagación se expresan para 25 °C, ya que dichos tiempos dependen de la temperatura, y aumentan junto con ella; esta dependencia se debe a que las resistencias de los transistores MOS aumentan con la temperatura, por disminuir con ella la movilidad de sus portadores. Para facilitar la suma de tiempos en compuertas conectadas en serie, cada tiempo de propagación suele medirse por el retraso entre el punto medio de conmutación (VCC/2) de la onda de entrada y el punto medio de la conmutación de la señal de salida, como se ilustra en la figura 4.85.
JXc`[X
kG?C
kGC?
=`^liX+%/, K`\dgf[\gifgX^XZ`e[\[fjZfdgl\ikXjZfe\ZkX[Xj\ej\i`\% 24
Para alcanzar las altas frecuencias de operación, del orden de los GHz, los procesadores Pentium de las PC requieren un fuerte disipador con un ventilador; ambos situados directamente sobre el propio circuito integrado.
grupo editorial patria®
209
4 La maravillosa electrónica digital
Es evidente que un tiempo de retardo de propagación pequeño se traduce en una mayor frecuencia de funcionamiento. Por tanto, típicamente, el tiempo de propagación medio se mide en ns (nanosegundos) y la máxima de frecuencia de funcionamiento en MHz.
Abanico de entrada, abanico de salida, cargas e interconexión de familias lógicas En los circuitos digitales se usa un parámetro denominado abanico de entrada (fan in) para indicar el número de entradas que puede manejar, por ejemplo, una compuerta. De esta forma, si se tiene una AND de cuatro entradas, entonces se tiene un abanico de entrada de cuatro. El abanico de entrada de las compuertas en un CI se determina, principalmente, por las limitaciones externas de terminales en el empaquetado del CI. Por otro lado, el abanico de salida (fan out) se utiliza para expresar el número de entradas que pueden conectarse en la salida de un elemento digital sin deteriorar su operación. Por lo general, a las entradas que pueden conectarse a una salida digital se les llama “cargas”. Entonces, una carga puede ser la entrada de una compuerta o cualquier otro circuito; sin embargo, es necesario especificarlo en la definición del abanico de salida. Por esta razón, también se hace referencia al abanico de salida como las cargas que la salida puede manejar. El término se deriva por el hecho de que la salida de una compuerta puede suministrar una potencia limitada; pero, si se excede ese valor, entonces la compuerta dejará de operar correctamente. En la familia TTL, la limitación relativa del abanico de salida está dada por el cociente entre las corrientes de salida y de entrada, Io/Ii; en cambio, en las series CMOS, cuya corriente de entrada es muy pequeña, el abanico de salida se determina por la carga capacitiva que pueden operar. De esta forma, para tener una adecuada conexión entre componentes digitales, se tiene que cumplir la relación de corrientes para nivel lógico ALTO y BAJO, como lo muestra la siguiente igualdad. IOH > IIH(1) ... IIH(n) IOL > IIL(1) ... IIL(n) La figura 4.86 muestra los parámetros importantes que se deben considerar de acuerdo con el abanico de salida de cada compuerta o elemento digital.
@F?
@@?
@FC
@@C
@@?
@@C
@@?
@@C
=`^liX+%/- GXi}d\kifj`dgfikXek\j[\cXYXe`Zf[\jXc`[X[\leXZfdgl\ikX[`^`kXc% Para interconectar familias TTL y CMOS, debemos verificar, además de los niveles de voltaje de alimentación, los voltajes y las corrientes de las familias lógicas involucradas, cumpliéndose lo siguiente: VOH(mín) > VIH(mín) VOL(máx) < VIL(máx) IOH > IIH IOL > IIL
210
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
Como sabemos, las familias lógicas se agrupan en series, según sus características de velocidad, consumo, etcétera. En la actualidad, la gama de familias que existe es grande y describir cada una de ellas va más allá de las intenciones de este libro. Sin embargo, en la siguiente sección delineamos algunas de estas familias.
Otras tecnologías La tecnología bipolar dio origen a la familia TTL, cuya amplitud de difusión consolidó la lógica digital en circuitos integrados; posteriormente, la tecnología MOS evolucionó hasta llegar a la predominante HCMOS. Posteriormente, la mezcla entre estas tecnologías derivó en la denominada tecnología BiCMOS (bipolar-CMOS), la cual resulta apropiada para sistemas de buses (inter-bús), y la derivación actual es la más óptima para series de bajo voltaje, pasando de la alimentación habitual de 5 V, a 3 V, 2,5 V y a solo 1,8 V.25 La selección de la familia digital a utilizar en los diseños depende mucho de la aplicación, pero la cantidad de opciones es muy grande, como se ilustra en la figura 4.87. Lógica especial Lógica de 5 V
GTLP BTL
Lógica de 3.3 V AHC AC
HSTL
SSTL TVC
LS
S
HC/HCT
AS
LVT
AVC
CBT
TTL
AC/ACT
VME
ALB
ALVT
FCT
CD4000
ETL
F
LV
LV-A
SSTV
GTL
LV
AHC/ AHCT BCT
ABT ALS
ALVC CBTLV
LVC1G
Lógica de 2.5 V
LVC
LVC
LV
Lógica de 1.8 V
ALVC AVC
AVC
LVC ALVC
CBTLV
AUC ALVT
AUC
=`^liX+%/. ;`]\i\ek\jk`gfj[\]Xd`c`Xjc^`ZXj% Las tecnologías digitales también tienen un tiempo de vida, por esta razón es importante tomar en cuenta en qué etapa se encuentra la familia seleccionada, ya que podría quedar fuera del mercado y, en consecuencia, los productos que se produzcan con dicha tecnología tender a la obsolescencia. La figura 4.88 muestra una gráfica del ciclo de vida de algunas tecnologías digitales, haciendo énfasis en las familias bipolar, CMOS y BiCMOS. BCT
HC
Bipolar
ALS F
CMOS
ACL AS ABT LVC
BICMOS
FCT CD4000
LVT
LS CBT
ALVT
GTLP AUC
S
ALVC
AHC
AVC
LV
CBTLV TVC
TTL
Little Logic
SSTV VME
Introducción
Crecimiento
Madurez
Declinación
Obsolescencia
=`^liX+%// :`Zcf[\m`[X[\cXj]Xd`c`Xj[`^`kXc\j% 25
Se recomienda leer el documento Logic Selection Guide First Half, 2009 (Rev. Q), en la página web de Texas Instruments: http://focus.ti.com/ docs/logic/catalog/resources/logicliterature.jhtml
grupo editorial patria®
211
4 La maravillosa electrónica digital
Como se describió en la sección anterior, el retardo de propagación se relaciona con la velocidad de operación de la tecnología y con la potencia o corriente de la misma. Lo anterior se puede usar como figura de mérito para comparar diferentes familias. La figura 4.89 muestra algunas características de las familias bipolares y CMOS más populares. TTL Características
CMOS 3.3 V ALS
LV
LVC
ALVC
CMOS 5 V
F
LS
HC
AC
AHC
Retardo de propagación de puerta, tp(ns)
3.3
10
7
9
4.3
3
7
5
3.7
Frecuencia máxima de reloj (MHz)
145
33
45
90
100
150
50
160
170
Excitación de salida IOL(mA)
20
8
8
12
24
24
4
24
8
=`^liX+%/0 :XiXZk\ijk`ZXj[\Xc^leXj]Xd`c`XjY`gfcXi\jp:DFJ%
RECAPITULANDO En resumen, ahora que se cuenta con la habilidad de tomar decisiones lógicas, realizar cálculos matemáticos y de recordar o almacenar resultados de tal manera que podamos tomar decisiones posteriormente, se tienen las bases de la máquina de Turing.26 En términos generales, la máquina de Turing describe un sistema que tiene una memoria infinita, la habilidad para ir hacia atrás o hacia adelante a lo largo de la memoria y la capacidad para seguir instrucciones en cualquier localidad de memoria. Descontando la memoria infinita, los sistemas actuales basados en microprocesadores se encuentran muy cercanos a la máquina de Turing. Por tanto, con todos estos elementos estamos listos para iniciar el capítulo 5 relacionado con los microprocesadores.
DATOS IMPORTANTES DEL CAPÍTULO ± Un dígito binario, bit, es información que solo puede tener dos valores: 0 o 1. ± En un sistema posicional, como el binario, el hexadecimal y el decimal, cada columna en un número tiene un “peso” asociado, y el valor del número es determinado por la combinación de cada dígito con el peso de su columna. ± Cada dígito significativo que se añade en binario duplica el valor del dígito previo. ± A los grupos de 4 bits se les llama nibbles y a los de 8 bits se les llama bytes.
26
± Para convertir de hexadecimal a binario se reemplaza cada dígito hexadecimal por su equivalente binario. Igualmente, para convertir un número de binario a hexadecimal, primero se divide el número binario en nibbles y cada nibble se convierte a su representación hexadecimal. ± En la lógica digital 1 es verdadero y 0 es falso. ± Primero, vea o realice la tabla de verdad. ± Los circuitos sumadores se pueden realizar usando compuertas lógicas, como XOR y AND.
Alan Turing fue un criptógrafo inglés quien sentó muchas de las bases de la teoría computacional. En 1950, Turing escribió el artículo “ComputingMachinery and Intelligence” en el cual propuso lo que se llamó el Turing Test (TT) para reemplazar la pregunta ¿pueden pensar las máquinas? Se ha considerado que este trabajo representa el inicio del área computacional llamada inteligencia artificial. Durante la Segunda Guerra Mundial, Turing trabajó en descifrar los códigos nazis, particularmente los de la máquina Enigma. Después de la guerra diseñó una de las primeras computadoras electrónicas programables digitales en el Laboratorio Nacional de Física del Reino Unido y poco tiempo después construyó otra de las primeras máquinas en la Universidad de Manchester. Turing fue un genio incomprendido, ya que fue enjuiciado por el gobierno inglés debido a su condición de homosexual. Dos años después se suicidó. Muy cerca de la Universidad de Manchester existe una estatua de Alan Turing que solía ver cuando salía de la universidad mientras hacía mi doctorado y pensaba en lo injusto que había sido el trato hacia este científico. Fue hasta 2009 que el primer ministro Gordon Brown, a nombre del gobierno, publicó una disculpa póstuma después de que miles de personas pusieron su nombre en una petición en internet creada por el científico computacional John GrahamCumming.
212
ELECTRÓNICA • MIJAREZ
4 La maravillosa electrónica digital
± Usando sumadores es posible realizar, además de sumas y restas, las multiplicaciones. ± La representación en complemento a 2 permite realizar operaciones con signo. ± Los minitérminos son expresiones booleanas que utilizan las combinaciones de entrada de una tabla de verdad que producen salida 1 y las unen con una compuerta OR. ± Los maxitérminos son expresiones booleanas que utilizan las combinaciones de entrada de una tabla de verdad que producen salida 0 y las unen con una compuerta AND. ± El número de salidas de un decodificador es de 2n, donde n es el número de entradas. ± Las salidas de un decodificador pueden ser activo bajo, 0 lógicos, para lo cual usamos maxitérminos, o activo alto, 1 lógico, para lo cual se usan minitérminos. ± La lógica combinacional utiliza como elementos principales a las compuertas lógicas. ± La lógica secuencial utiliza como elemento base a las celdas de memoria. ± Existen dos tipos de memorias: volátiles, que pierden la información cuando pierden la energía (tipo memorias RAM), y no volátiles, las cuales puede mantener sus datos aun cuando se quita su alimentación (tipo memorias ROM; EPROM, EEPROM y FLASH). ± Las memorias constan de n líneas de entrada, llamadas dirección, y m líneas de salida, llamadas palabras. ± Las memorias tienen parámetros importantes de temporización, como las señales de control y el tiempo de acceso (tACC), utilizados al interconectarse con otros dispositivos como microprocesadores. ± Los flip-flops constituyen los elementos básicos de la lógica secuencial, y son utilizados para almacenar
PROBLEMAS
DEL CAPÍTULO
datos (1 y 0) en memorias volátiles y registros, para generar tiempos y contar secuencias, etcétera. ± El tiempo de set up en un flip flop D es el tiempo que la entrada, D, debe permanecer estable antes de que llegue la transición del pulso de reloj. ± El tiempo de hold en un flip flop D es el tiempo que la entrada, D, debe permanecer estable después de que llegue la transición del pulso de reloj. ± Los dispositivos de tercer estado tienen un estado de alta impedancia, el cual les permite hacer buses digitales. ± Un bus representa un grupo de señales que transmiten información binaria. ± Las máquinas de estado se basan en lógica secuencial, flip flops, y, generalmente, se sincronizan con un reloj. ± Los flip flops, en una máquina de estados, reflejan el estado de las entradas en el momento en que la entrada de reloj esté presente; también pueden ser usados para almacenar información. ± Los dispositivos lógicos programables (PLD, PAL o GAL) consisten de un arreglo de compuertas AND y OR que pueden ser programadas por el usuario, y además pueden contener flip flops. ± La programación de los PLDs se efectúa por medio de interruptores programables hechos predominantemente de transistores CMOS. ± Los dispositivos lógicos programables con mayor capacidad son los FPGAs. ± El diseño de hardware en estos dispositivos es realizado usando lenguajes de programación especializados (ABEL, PALASM, VHDL o Verilog) o dibujando con la ayuda de herramientas CAD de captura de esquemáticos.
4
4.1 ¿Cuál es el valor equivalente en decimal del siguiente número maya de tres posiciones?
4.3 ¿Qué término se utiliza para definir un dígito binario? Defina que significan los términos nibble y byte.
4.4 Convierta el número en representación hexadecimal
=`^liX+%0' 4.2 Usando la representación exponencial de un número, en este caso el valor 106, defina qué términos se utilizan para el 10 y para el 6, respectivamente.
7A5C16 a su equivalente en decimal. 4.5 Convierta el siguiente número binario %1011110010100101 a su equivalente hexadecimal. 4.6 Describa la tabla de verdad de las tres compuertas lógicas elementales que conforman los sistemas digitales.
grupo editorial patria®
213
4 La maravillosa electrónica digital
4.7
Describa la tabla de verdad de la compuerta NAND y de la compuerta NOR.
4.8
Describa la tabla de verdad de la compuerta XOR y defina cómo se puede usar esta compuerta como inversor.
4.9
4.10
4.11
Describa cómo se relacionan los minitérminos y los maxitérminos de una tabla de verdad con el teorema de De Morgan. De acuerdo con la tabla de verdad obtenida de la regla de las sumas, es posible diseñar circuitos sumadores. Defina cómo se pueden hacer circuitos restadores y multiplicadores a partir de los sumadores. Con la representación de números en complemento a 2 se pueden realizar sumas y restas con signo. Realice la siguiente operación usando el complemento a 2. 20
40
2010
de las señales de entrada del siguiente f-f síncrono tipo RS. 0
1
1
0
0
1
0
1
h
g
f
e
d
c
b
a
0
0
1
0
1
0
0
0
S
FF
Q
?
–– Q
?
CK R
=`^liX+%0( 4.16
Describa el tiempo de set up y de hold de un flipflop tipo D.
4.17
¿Cuál es la diferencia entre las memorias SRAM y DRAM?
4.18
Describa la diferencia entre las memorias ROM, EPROM, EEPROM y FLASH.
4.19
¿Para qué se utilizan los dispositivos de tercer estado y a qué se le llama alta impedancia?
4.20
¿Cuál es la diferencia entre un flip flop y un latch?
4.21
Una memoria ROM tiene un bus de direcciones de 20 líneas. ¿Cuál es su capacidad de direccionamiento?
4.12
Diseñe un decodificador de 3 a 8, con las salidas activo alto.
4.13
¿Cuántas líneas de direcciones se requieren para direccionar una memoria EPROM de 16K bytes?
4.22
Describa qué significan los acrónimos PLD, PAL, GAL, CPLD y FPGA.
4.14
Diseñe una memoria de 8K bytes con 2 memorias de 8K r 4 bits.
4.23
Describa qué elementos constituyen un bloque lógico o macrocelda en un PLD.
4.15
Obtenga el diagrama de tiempos de los pulsos de salida que correspondan a los trenes de pulsos
4.24
Describa las ventajas de los PLD con respecto a su contraparte digital discreta en circuitos integrados.
214
ELECTRÓNICA • MIJAREZ
5 El popular
microcontrolador INTRODUCCIÓN El microcontrolador, abreviado como μC o MCU, es una maravilla digital integrada en un solo CI. Aunque la creación de los microcontroladores es hasta cierto punto reciente y estos han estado con nosotros solo desde hace unas cuantas décadas, su impacto ha sido profundo. El uso de los microcontroladores se ha hecho tan grande y común que en muchas ocasiones no se advierte su presencia; sin embargo, es posible encontrarlos como componente central de muchos de los productos que contienen interfaces con el “mundo f ísico”. Estas interfases pueden ser funciones de control de entrada o salida, tan comunes como encender o apagar dispositivos y/o monitorear determinadas condiciones. Entre algunos de los ejemplos del empleo de este popular dispositivo destacan: los sistemas de control de procesos automotrices (bolsas de aire, control del motor, frenos ABS, etc.); los medidores de servicios (de energía eléctrica, agua o gas); los productos de línea blanca (lavadoras, hornos de microondas, procesadores de comida, secadoras, etc.); algunos artículos de consumo común (monitores de glucosa, dispositivos de presión de sangre, teléfonos, radios, relojes despertadores, etc.); algunos juguetes y aplicaciones de Internet, entre muchos otros. En la actualidad, la popularidad de los microcontroladores sigue en aumento debido a que es posible comprar microcontroladores de ocho y hasta seis terminales por solo unos cuantos centavos de dólar; aunque por unos centavos más, es posible conseguir microcontroladores con capacidades de procesamiento, las cuales hasta hace algunos años hubieran sido catalogadas como
215
5 El popular microcontrolador
propias de supercomputadoras.1 Todo esto con base en el uso de los dispositivos semiconductores que hemos visto en este libro. Por esa razón, en este capítulo iniciamos con un esbozo histórico de los microprocesadores (μP) y los microcontroladores. Posteriormente, abordamos los conceptos fundamentales de los microprocesadores con la presentación de un microprocesador modelo, el cual contiene los elementos principales de la mayoría de los microprocesadores. Luego, hacemos uso de calculadora con operaciones lógicas e instrucciones de programación básicas (para conocer sus principios y su manejo) que se incluye en el CD ROM que acompaña este libro. Los conceptos aprendidos aquí se pueden aplicar de manera general a cualquier microprocesador y nos preparan para entrar al mundo de los microcontroladores. Los microprocesadores y microcontroladores son, de cierta manera, similares; por tal razón, algunas veces se usa el término micro para referirse indistintamente a cualquiera de ellos. Sin embargo, existen diferencias marcadas entre uno y otro, las cuales puntualizaremos antes de abordar el tema de uno de los microcontroladores más populares de la industria electrónica: el 80C51 de Intel. Para entender los conceptos básicos de los μC, en particular del μC 80C51, usamos un enfoque práctico conocido como ABpra; es decir, vamos a aprender basándonos en prácticas de laboratorio, aunque también incluimos prácticas usando un simulador comercial. Estas prácticas enfatizan conceptos simples, pero importantes, del 80C51, que una vez comprendidas se pueden aplicar a cualquier microcontrolador, consultando el manual del usuario y las hojas técnicas de cada uno. Sin más aplausos para el popular microcontrolador, en este capítulo estudiamos: X X X X X X X X X X
Esbozo histórico de los microprocesadores y microcontroladores. Frenéticos por las computadoras digitales. Desmitificando al CPU o μP. μC de 8 bits: el popular 8051. Arquitectura. Periféricos mapeados a memoria. Modos de direccionamiento. Procesador de Bool. Periféricos internos. Interfaz de hardware para un μC.
ESBOZO
HISTÓRICO DE LOS MICROPROCESADORES Y MICROCONTROLADORES
Los microprocesadores y microcontroladores se encuentran en todas partes; están entre nosotros, haciendo nuestras vidas más seguras y confortables, por lo que es dif ícil imaginar el mundo moderno sin ellos. Basta mirar a nuestro alrededor para encontrarnos con decenas de estos dispositivos. Los microcontroladores, tanto como sus antecesores los microprocesadores, están conformados por los activos transistores. Con la ayuda de la microelectrónica, los transistores se combinan para formar compuertas; a su vez, las compuertas se combinan para formar flip-flops, contadores y otras funciones lógicas. Por su parte, las funciones lógicas, a su vez, se combinan para constituir memorias, unidades de control y unidades aritméticas y lógicas, las cuales en conjunto constituyen a los microprocesadores. De esta manera, el número de transistores en un CI se ha convertido en una medida razonable de su complejidad funcional. 1
Buzz Aldrin (bautizado con el nombre Edwin Eugene Aldrin, Jr.), uno de los tres astronautas del emblemático Apolo 11, escribió en su libro Magnificent desolation, the long journey home from the moon, que las computadoras con las que estaba equipada la nave tenían únicamente 70 kilobytes de memoria y un procesador con una frecuencia de reloj de solo 2,048 kHz. Si en la actualidad se observan los sistemas de control del Apolo 11, con sus pequeños displays y teclados de 19 botones, se consideran arcaicos respecto de los estándares de hoy en día. Los videojuegos y la mayoría de los teléfonos celulares de la actualidad cuentan con una capacidad de procesamiento muchas veces mayor que la tecnología que llevó al hombre a la Luna a fines de la década de 1960. Aun así, la NASA se aseguró de que las computadoras del Apolo 11 fueran de las más avanzadas de su época, ya que fueron las primeras en usar tecnología de circuitos integrados. Aun así, estas limitadas computadoras permitieron a los astronautas realizar los complejos cálculos de navegación, cruciales para descender exitosamente en la Luna.
216
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Microprocesadores El primer microprocesador en CI tiene su origen en el decenio de 1970, hace apenas cuatro décadas.2 En 1971, Intel Corporation fabricó el primer microprocesador de tecnología PMOS: el 4004. El microprocesador 4004 era un microprocesador de 4 bits; contenía 2,300 transistores y corría a 108 kHz; podía direccionar solo 4096 localidades de memoria de 4 bits; reconocía 45 instrucciones y podía ejecutar, en promedio, una instrucción en 20 μs. La popularidad de este microprocesador se debe a que se utilizó en las primeras calculadoras de escritorio; sin embargo, debido a limitaciones de capacidad y velocidad, hacia 1972 Intel desarrolló una versión más poderosa: el microprocesador 8008. Este microprocesador tenía una arquitectura de 8 bits; es decir, podía manipular bytes, y la memoria que podía manejar se incrementó a 16 Kbytes; no obstante, la velocidad de operación continuó igual. Hacia 1974, Intel lanzó al mercado el 8080 (el primer microprocesador de tecnología NMOS), el cual superó la velocidad de su predecesor, el 8008, que operaba a 2 MHz, y al cual se le consideró el primer diseño de microprocesador comercialmente exitoso, cuyo costo inicial fue de 179 dólares. Adicionalmente, se incrementó la capacidad de direccionamiento de memoria hasta 64 Kbytes. Con base en ese diseño, a partir de ese año varias compañías fabricantes de circuitos integrados comenzaron a producir microprocesadores, como National Semiconductors, Rockwell International, Zilog, Motorola y Fairchild, entre otras. En 1975, Zilog lanzó al mercado el Z80, uno de los microprocesadores de 8 bits más poderosos. El Z80 estaba diseñado para ser compatible a nivel de código con el Intel 8080, de tal forma que la mayoría de los programas para el 8080 pudieran funcionar en este, en especial el sistema operativo CP/M.3 El mismo año, 1975, Motorola abate dramáticamente el costo de los microprocesadores con sus modelos 6501 y 6502, este último adoptado por Apple Inc., para su primera microcomputadora personal.4 Estos microprocesadores se comercializaron en 20 y 25 dólares, respectivamente, lo que provocó un auge en el mercado de las microcomputadoras de uso doméstico y un caos en la proliferación de lenguajes, sistemas operativos y programas, ya que ningún producto era compatible respecto del otro fabricante. Los microprocesadores por sí solos no eran utilizables; pero, como parte de las llamadas computadoras de una tarjeta (SBC, por sus siglas en inglés), se convirtieron en el componente central. Con el advenimiento de las SBC, fue posible fabricar útiles productos, con el fin de diseñar y aprender acerca de los microprocesadores. Por tanto, las SBC muy pronto encontraron un destacado uso en los laboratorios de diseño de universidades, centros de investigación y compañías relacionadas con aplicaciones electrónicas.
Microcontroladores En 1976 aparecieron las primeras microcomputadoras de un solo CI, las cuales, posteriormente, se denominaron como microcontroladores. De esta forma, dos de los primeros microcontroladores son el 8048 de Intel y el 6805R2 de Motorola. Años más tarde, en la década de 1980 se acentuó la división en la evolución tecnológica entre microcontroladores y microprocesadores. En la figura 5.1 se muestra el orden cronológico de los microcontroladores y microprocesadores que marcaron el inicio de la carrera tecnológica de las computadoras personales (PC), basadas en microprocesadores Intel y Motorola. En la actualidad, los microprocesadores incorporan cada vez mayores capacidades para aplicaciones en las que se requiere el manejo de grandes volúmenes de información. Los microcontroladores, en cambio, agregan más capaci2
3
4
En 1971, el primer μP del mundo, el 4004, fue diseñado por el italiano Federico Faggin (1941- ), quien entonces trabajaba para Intel. Durante 1971-1972, Faggin dirigió un equipo que diseñó el μP de 8 bits de alta funcionalidad, el 8080, el cual tuvo gran éxito. Pero, para 1974, Federico Faggin dejó Intel para iniciar Zilog, competidor directo de Intel en este emergente mercado de los microprocesadores. CP/M fue el primer sistema operativo creado para las computadoras personales; predecesor del sistema operativo Disc Operating System (DOS, por sus siglas en inglés). Antes de que Steve Jobs (1955-2011) y Steve Wozniak (1950- ) diseñaran la computadora Apple I, en el garaje de la casa de Jobs, las computadoras no eran consideradas como aparatos personales; estas eran grandes máquinas que dif ícilmente podían estar en las casas. Las únicas corporaciones con recursos para comprar computadoras eran las industrias y las universidades; además, manejarlas requería saber comandos especializados. La clave para diseñar una computadora de bajo costo, que estuviera al alcance de la mayoría de las personas, fue el empleo de un microprocesador de solo 25 dólares y una memoria ROM, ambos contenidos en una tarjeta madre. Jobs continuó mostrando su talento, rodeándose de gente brillante y generando productos innovadores hasta su fallecimiento. A los 26 años de edad Jobs ya era millonario, con su empresa de la manzana. ¡Impresionante!
grupo editorial patria®
217
5 El popular microcontrolador
Intel 4004 First Microprocessor
Intel 8008/8080 8-bit Microprocessor
Motorola 6500 Microprocessor
Intel 8048 8-bit Microcontroller Intel 8086 16-bit Microprocessor
PC
Motorola 6800 series Microcontrollers
Motorola 68000 Microprocessor
1971
Intel 8051 8-bit Microcontroller
1974
Mac
1980
=`^liX,%( Fi[\eZifefc^`Zf[\cfjgi`d\ifjd`ZifgifZ\jX[fi\jpd`ZifZfekifcX[fi\j% Arquitecturas con mayor número de periféricos internos, e.g., de comunicaciones, de E/S, de memoria, de temporización, etc.; facilidades para el control en tiempo real.
MICROCONTROLADORES
1971
1976 MICROPROCESADORES Arquitecturas con longitudes de palabras de 16, 32 64 bits..., mayor capacidad de manejo de memoria.
=`^liX,%) ;`m`j`e\ecX\mfclZ`ek\Zefc^`ZX\eki\μGpμ:% dades que permiten una mayor interacción con el mundo f ísico en tiempo real, además de mejores desempeños en ambientes de tipo industrial. En la figura 5.2 se observa la división entre estos dispositivos. Las aplicaciones de los microprocesadores se centran en el manejo de grandes cantidades de datos, como en las computadoras personales (PC). Por otro lado, los microcontroladores enfocan sus recursos al control en tiempo real, como el caso de los sistemas mínimos y/o sistemas embebidos. La figura 5.3 ejemplifica las aplicaciones de ambos. En 1976, Intel introdujo la familia de microcontroladores MCS-48TM; el primer dispositivo de esta familia, el 8748, incluía una unidad central de procesamiento (CPU, por sus siglas en inglés), una EPROM de 1 Kbyte, 64 bytes de RAM, 27 terminales de entrada/salida (E/S) y un temporizador de 8 bits; todos estos circuitos empaquetados en un solo CI de 40 terminales y con 17 000 transistores. La familia de dispositivos MCS-48TM pronto se popularizó en la industria ligada a las aplicaciones de control. Así, una de sus primeras aplicaciones fue la sustitución de componentes electromecánicos usados en productos, como lavadoras y controladores de señales de tránsito (semáforos), entre otros. A partir de su creación, los fabricantes de microcontroladores continuaron mejorando fuertemente las características de potencia, tamaño y funcionalidad; así, en 1980, Intel presentó en el mercado la familia de microcontroladores
218
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Control en tiempo real
Grandes volúmenes de datos
Sistemas mínimos/ embebidos
Sistemas informáticos
MICROCONTROLADORES
MICROPROCESADORES
=`^liX,%* ;`m`j`e[\Xgc`ZXZ`fe\j\eki\μGpμ:% MCS-51TM. En comparación con su predecesor, el 8048, este microcontrolador contaba con 4 Kbytes de ROM, 128 bytes de RAM, 32 terminales de E/S, un puerto serie y dos temporizadores de 16 bits; un número extraordinario de circuitos en un solo CI de 40 terminales. Por supuesto, su complejidad se incrementó al contener más de 60 000 transistores. Posteriormente, también se agregaron nuevos miembros a la familia MCS-51TM; así, en la actualidad existen versiones de otros fabricantes, independientes de Intel, que mejoraron drásticamente sus especificaciones originales. En consecuencia, la familia del MCS-51TM se encuentra bien establecida en el mercado como uno de los microcontroladores de 8 bits más poderosos y versátiles. Por tanto, su lugar como líder de microcontroladores de 8 bits está consolidado por muchos años más. Para aprender más acerca de los microcontroladores, en este capítulo describimos a los miembros de la familia del MCS-51TM, por lo que en los siguientes apartados presentamos la arquitectura de su circuitería (hardware), así como su programación (software). También, se demuestra mediante prácticas, cómo podemos usar los microcontroladores en diseños electrónicos con una cantidad mínima de componentes adicionales. Sin embargo, antes de introducirnos de lleno en el mundo de los microcontroladores, primero se exponen los fundamentos de los sistemas basados en microprocesadores, incluyendo los acrónimos y términos más populares que predominan y que, en ocasiones, producen confusiones en este campo de la electrónica.
Frenéticos por las computadoras digitales Es innegable que en las sociedades modernas se tiene un frenesí por las computadoras digitales. Las tenemos en la casa, el automóvil, la industria y las traemos con nosotros como objetos personales y de entretenimiento; la tendencia es, pues, que el número de estos dispositivos continúe incrementándose. Pero, ¿qué es una computadora digital? Bien, en su sentido más amplio, una computadora se define como un dispositivo que puede aceptar información del mundo exterior, procesar esa información usando operaciones lógicas y/o aritméticas, tomar decisiones con base en los resultados de este procesamiento y, por último, regresar la información procesada al mundo exterior en un nuevo formato. Los elementos principales que conforman un sistema computacional son: el microprocesador (μP), también llamado unidad central de procesamiento (CPU, por sus siglas en inglés); los dispositivos de memoria tipo ROM o RAM, los cuales se usan para almacenar programas (secuencia de instrucciones) o datos, respectivamente, y los puertos de entrada y salida (E/S) que se usan para realizar la comunicación con el mundo exterior. En la figura 5.4 se muestran los elementos principales de los que se compone una computadora digital de propósito general. El componente toral de una computadora, el “cerebro”, es la CPU; debido a que, precisamente, es en la CPU donde se llevan a cabo todas las operaciones numéricas y la toma de decisiones. La CPU tiene dos señales de entrada que se generan externamente: la señal de inicialización o restablecimiento (reset) y una señal de reloj, también llamada oscilador.
Señales de reset y de reloj La señal de reset se usa para forzar a la CPU a iniciar en un estado conocido. Algunas veces, debido a determinados eventos, los programas complejos y/o mal diseñados pueden terminar atrapados en lazos infinitos. La única forma de
grupo editorial patria®
219
5 El popular microcontrolador
Bus de control Bus de datos
RA
M
Bus de direcciones
M RO a alid es d rto Pue
CP
t
se Re
ada ntr ee d rto Pue
U
Hacia el mundo exterior
Desde el mundo exterior
loj
Re
=`^liX,%+ :fdgfe\ek\jgi`eZ`gXc\jhl\Zfejk`klp\eleXZfdglkX[fiX[`^`kXc% sacarlos de estos lazos es usar la señal de reset. Por lo general, un circuito externo denominado power-on-reset, que podría ser un circuito RC, sirve para inicializar la CPU; se usa para aplicar de manera automática la señal de reset a la CPU cuando se enciende por primera vez el sistema. La señal de reloj se caracteriza por conmutar entre dos niveles de voltaje millones o miles de millones de veces por segundo. La señal de reloj se usa para sincronizar las acciones internas y externas de la CPU, de la misma forma que el ritmo de un tambor sincroniza a una banda de música; el refrán: “bailar al son que te toquen”, aplica perfecto para explicar que la CPU procesa al son (frecuencia) del circuito de reloj. Una de las preguntas más frecuentes al iniciar el estudio de sistemas basados en microprocesadores es: ¿cómo se genera esta señal de reloj? La forma más común para obtener esta señal de reloj es mediante un dispositivo llamado oscilador de cristal. Oscilador de cristal: piedras con ritmo No cabe duda que el componente más “sexy” de una computadora digital es la CPU o microprocesador; aunque mucho de su “sex appeal” proviene de la señal de reloj, la cual es generada por un circuito oscilador basado en un cristal. Este circuito oscilador usa la resonancia mecánica de vibración de un cristal con características piezoeléctricas,5 por medio del cual se genera una señal eléctrica con una frecuencia muy precisa; esta frecuencia se usa como base de tiempo de los sistemas digitales, de la misma manera que en los relojes de cuarzo, y provee la extrema exactitud con la que operan los dispositivos basados en microprocesadores, desde los sistemas de posicionamiento global (GPS) hasta el reloj del horno de microondas que se usa en los hogares. Desde su creación, el cristal piezoeléctrico más usado es el cuarzo; a los diseños de circuitos basados en esta piedra se les llama simplemente osciladores de cristal. No obstante, otros materiales, como los resonadores cerámicos, también tienen mucha popularidad en aplicaciones que requieren exactitudes menos exigentes. La frecuencia de resonancia de un cristal depende del tamaño, la forma, la elasticidad y la velocidad del sonido del material. Cuando un cristal de cuarzo se corta de forma adecuada, puede deformarse por la influencia de un campo eléctrico al aplicarle un voltaje a las caras del cristal; esta propiedad se conoce como piezoelectricidad. Cuando se retira el voltaje, el cristal genera un campo eléctrico al regresar a su forma original, produciendo un voltaje. Como resultado, el cristal de cuarzo se comporta como un circuito compuesto por una inductancia, una capacitancia y una resistencia. En la figura 5.5 se muestra el símbolo para un oscilador de cristal y su circuito eléctrico equivalente. 5
El efecto piezoeléctrico fue descubierto en 1880 por los hermanos Jacques y Pierre Curie; sin embargo, la primera aplicación práctica fue realizada por Paul Langevin, durante la Primera Guerra Mundial, al emplear este efecto para desarrollar el sonar. Pero, el primer oscilador basado en un cristal fue construido hasta 1917 y patentado en 1918 por Alexander M. Nicholson, de los laboratorios Bell, aunque su paternidad fue disputada por Walter Guyton Cady.
220
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
C L R
a)
b)
=`^liX,%, FjZ`cX[fi[\Zi`jkXc%X JdYfcf%Y :`iZl`kf\cZki`Zf\hl`mXc\ek\% Las características particulares de cada cristal dependen de los ángulos que se forman de acuerdo con sus ejes, y con los cuales se corta el cristal, así como también dependen de sus deformaciones llamadas modos de vibración. En la figura 5.6 es posible observar algunos de los modos de vibración de los cristales más comunes.
Modo longitudinal
Modo transversal
Modo flexural
Tenedor sintonizable
=`^liX,%- Df[fj[\m`YiXZ`e[\leZi`jkXcg`\qf\cZki`Zf% La frecuencia es inversamente proporcional al grosor del cristal. Por tanto, la frecuencia de resonancia del cristal, que depende de su tamaño, no varía significativamente, de ahí su increíble exactitud. Adicionalmente, para aplicaciones críticas al cristal de cuarzo se le integra un control de temperatura, y se monta sobre amortiguadores especiales, con el fin de prevenir perturbaciones provenientes de vibraciones mecánicas. Pero, el cristal no funciona por sí solo, requiere de un circuito electrónico oscilador para que se mantenga una oscilación. En este caso, el circuito oscilador toma el voltaje producido por el cristal, lo amplifica y lo retroalimenta al circuito oscilador, como lo representa esquemáticamente la figura 5.7. La tasa de expansión y de contracción del cristal determina la frecuencia de resonancia. Cuando la energía de las frecuencias generadas iguala las pérdidas en el circuito, la oscilación puede sostenerse de manera constante. Cabe destacar aquí que los cristales de cuarzo proveen resonancias en serie y en paralelo. Por lo general, la resonancia en serie es unos kilohertz menor que la resonancia en paralelo. Algunos fabricantes diseñan cristales que operan con una capacitancia de carga con valores de unos cuantos picofarads; típicamente 30 pF. Por ejemplo, para que
Voltaje sintonizador
Cristal resonador Frecuencia de salida Amplificador
=`^liX,%. ;`X^iXdX\jhl\d}k`Zf[\leZ`iZl`kffjZ`cX[fi[\Zi`jkXc%
grupo editorial patria®
221
5 El popular microcontrolador
un cristal con resonancia en paralelo opere a su frecuencia especificada, el circuito electrónico debe tener una capacitancia en paralelo especificada por el fabricante. Es importante remarcar que igualar la frecuencia del cristal con el circuito electrónico recomendado es responsabilidad del fabricante. El circuito electrónico puede estar compuesto de transistores bipolares, transistores FET, OP AMPs o compuertas digitales. En la figura 5.8 se muestra un circuito oscilador típico con compuertas digitales.
=`^liX,%/ :`iZl`kffjZ`cX[fiZfeZfdgl\ikXj[`^`kXc\j% La mayoría de las aplicaciones de los circuitos osciladores requieren ondas sinusoidales o señales compatibles con los niveles lógicos TTL o CMOS; de estos, los últimos dos pueden ser generados por una onda sinusoidal. En la figura 5.9 se observan las salidas típicas de un circuito oscilador.6
+15 V +10 V +5 V 0V –5 V Sinusoidal
TTL
CMOS
=`^liX,%0 JXc`[Xjkg`ZXj[\leZ`iZl`kffjZ`cX[fi%
Dispositivos de memorias y puertos de entrada y salida Los otros componentes que conforman el sistema computacional son los dispositivos de memoria ROM y RAM, además de los puertos de entrada y de salida. Por lo que respecta a los dispositivos de memoria, estos pueden contener miles o millones de datos. En su caso, los datos que contiene la memoria ROM se almacenan de manera permanente durante su construcción. Por tanto, la CPU puede leer (extraer) datos de la memoria ROM, pero no puede escribir (insertar) nuevos datos en esta. Así pues, en la memoria ROM pueden almacenarse las instrucciones de inicialización de la computadora y las rutinas de control requeridas en el encendido de la computadora por primera vez.7 6
7
Se recomienda leer un tutorial muy completo, con información adicional acerca de los cristales de cuarzo, de John R. Vig, titulado Quartz crystals resonators and oscillators, disponible en: http://www.am1.us/Local_Papers/U11625%20VIG-TUTORIAL.pdf En el tiempo en el que aún no existían las memorias ROM, los usuarios de las computadoras debían introducir manualmente las instrucciones de inicialización cada vez que se encendía el sistema por primera vez. Este proceso se realizaba definiendo un conjunto de interruptores por cada instrucción, y después presionando un botón para introducir la instrucción. Este proceso se llamaba booting up the computer, en inglés, y podía ser muy largo y tedioso. Soy originario del norte de México y durante mi adolescencia usar botas vaqueras era “cool” y casi una obligación. Este tipo de botas tiene un par de pequeños aros de piel cosidos en la parte superior de las botas, los cuales se utilizan para jalar las botas hacia arriba y calzar cada pie; desde la época de los legendarios cowboys, en Estados Unidos de América, a finales del siglo xix, quienes tuvieron su origen en los vaqueros del norte de México, a estos pequeños aros se les llama bootstraps, en inglés; así pues, de ese tiempo también data la frase: “pulling
222
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Por otro lado, la CPU sí puede leer datos de una memoria RAM y escribir datos nuevos en esta. Cuando el sistema se enciende por primera vez, la memoria RAM contiene datos aleatorios. Lo anterior significa que cualquier dato importante almacenado en la RAM debe ser escrito por la CPU después que se encendió el sistema. De manera general, es posible almacenar grupos de datos en las memorias RAM, así como también resultados intermedios y, en ocasiones, hasta programas.8 Por último, cabe aclararse que la computadora usa puertos de entrada y salida para comunicarse con el exterior. La figura 5.4 muestra únicamente dos puertos, pero la computadora puede contener cuantos puertos requiera el diseñador. A todos los dispositivos que se encuentran en la periferia de la CPU y permiten la comunicación con el exterior se les llama dispositivos periféricos. Estos periféricos podrían ser los dispositivos necesarios para la aplicación concreta que se le dará al sistema computacional, tales como el teclado, que permite introducir la información necesaria para el funcionamiento del sistema, o los indicadores visuales, que permiten tener un monitoreo del proceso realizado. Adicionalmente, existen otros periféricos que se pueden agregar a la CPU, como los convertidores ADC y DAC, para permitir la interfaz con el mundo analógico, puertos seriales y paralelos, para comunicación con otros dispositivos periféricos o incluso otras CPU.
Buses de datos, direcciones y control El término bus se usa para referirse al medio por el cual un grupo de señales puede transferir información digital desde una o varias fuentes a cualquiera de varios destinos; sin embargo, una transferencia solo puede realizarse en un tiempo determinado. Un sistema basado en una CPU, como es el caso de la computadora que estamos analizando, hace uso de tres tipos de buses: 1. El bus de datos. 2. El bus de direcciones. 3. El bus de control. La CPU usa el bus de direcciones para seleccionar otros dispositivos en el sistema, mientras que utiliza el bus de control para indicar si se desea “hablarle” al dispositivo (transmitir/escribir/sacar datos de la CPU) o “escucharlo” (recibir/leer/introducir datos hacia la CPU); por último, la CPU usa el bus de datos como medio para transferir información con dispositivos de memoria o puertos de entrada y salida. El bus de control El bus de control contiene las señales que se utilizan para realizar la lectura o la escritura de datos a memoria y/o a dispositivos de entrada y salida; además, en este se incluyen las señales de interrupción del sistema, las cuales, por lo general, son abreviadas como INT. Es común que las señales de reloj y de reset se consideren parte del bus de control, aunque estas señales se tratan de manera independiente, como se ilustra en la figura 5.4. Por lo general, para representar las señales de escritura y de lectura se usan las abreviaturas WR y RD, del inglés write y read. El cuestionamiento que hago al explicar estas señales de control es el siguiente: ¿cuál es el sentido de corriente de las señales WR y RD?, ¿salen o entran de la CPU? Bien, estas señales de control salen de la CPU. Sí, también la señal de RD es una señal de salida. Las señales que entran a la CPU cuando se activa la señal de RD son los datos que se leen de la memoria o puerto, precisamente por el bus de datos. En la figura 5.10 se representa el sentido de las principales señales de control de una CPU.
8
oneself up by one´s own bootstraps”, la cual significa “alcanzar el éxito por tu propio esfuerzo”. La palabra bootstrap se ha usado comúnmente en el ámbito computacional desde 1950; sin embargo, con el auge de las computadoras en la década de 1980 esta palabra se acortó por “boot ” y se hizo popular hasta nuestros días para indicar el proceso de inicialización que se almacena en la memoria ROM de un sistema computacional. Las primeras memorias que se diseñaron para usarse en las computadoras eran de naturaleza secuencial, lo que significa que la única forma de extraer los datos era en el mismo orden en el cual habían sido almacenados, como en el caso de las cintas magnéticas. Así, cuando se inventó la memoria RAM, se utilizó el término memoria de acceso aleatorio para enfatizar que en este tipo de memoria los datos podían ser leídos o escritos desde cualquier localidad del dispositivo.
grupo editorial patria®
223
5 El popular microcontrolador
WR RD
CPU Reset INT
Reloj
=`^liX,%(' J\ek`[f[\cXjgi`eZ`gXc\jj\Xc\j[\Zfekifc[\leX:GL%
El bus de datos En la figura 5.4 el bus de datos está representado como una entidad sólida, que es una representación simbólica, ya que en la realidad el bus de datos está formado por un grupo de alambres o líneas conductoras. Para fines prácticos, vamos a considerar que la computadora tiene un bus de datos de 8 bits. La figura 5.11 a) muestra la representación simbólica del bus de datos, mientras que la figura 5.11 b) ilustra la representación con alambres, donde los puntos entre alambres significan una conexión. Hacia/desde la RAM
Hacia/desde el resto del sistema
res s mb uale a l A ivid ind
Desde la ROM
= Conexión
Hacia un puerto
Hacia/desde el CPU
Desde un puerto
b)
a)
=`^liX,%(( 9lj[\[Xkfj%X I\gi\j\ekXZ`ej`dYc`ZX%Y I\gi\j\ekXZ`eZfeXcXdYi\j%
La información que se transfiere por el bus de datos es bidireccional; es decir, por los alambres que conforman este bus, la CPU se comunica, en ambos sentidos, con dispositivos externos (memorias RAM y ROM, y puertos de entrada y de salida) para leer o escribir datos, según corresponda. Bus de direcciones Para describir el bus de direcciones, primero imaginemos la forma en que la CPU ve el mundo exterior. Por ejemplo, el almacenamiento de instrucciones en una memoria ROM y de datos en una memoria RAM puede ser visto por la CPU como un conjunto de cajas. Para el caso de la memoria ROM, las cajas están selladas con un plástico transparente y cada caja contiene un número en un fragmento de papel que la CPU puede leer, pero no puede modificar. En cambio, para la memoria RAM las cajas están abiertas, por lo que la CPU puede escribir un número en un papel e insertarlo en la caja. Si la caja ya contiene un papel con un número escrito, la CPU tiene la posibilidad de leer el número escrito
224
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
0
1
2
3
4
Cajas selladas (ROM) 0
1
2
3
4
Cajas abiertas (RAM) =`^liX,%() I\gi\j\ekXZ`e[\d\dfi`XjZfdfleZfealekf[\ZXaXj%
en el papel, copiarlo y escribirlo en otra caja; o bien, también puede borrar el número del papel y escribir un nuevo número. La figura 5.12 muestra esta representación de las memorias como conjuntos de cajas. Aunque parezca extraño, la CPU ve el mundo exterior como un conjunto de cajas que pueden usarse para almacenar instrucciones y datos; sin embargo, el término formal que se utiliza es localidad de memoria en lugar de “cajas”, que utilizamos a manera de ejemplo para una mayor comprensión. Incluso, la CPU puede no saber si escribe o lee un dato de una localidad de memoria o si escribe o lee un dato de un puerto de entrada o de salida, esto depende del diseñador y/o el programador. Cada localidad de memoria tiene un número de identificación único al cual se le denomina dirección. Por tanto, la CPU usa el bus de direcciones para apuntar a la localidad de memoria que le interesa, tal como se muestra en la figura 5.13.
Bus de control
Dirección
Bus de datos Bus de direcciones
Re
se
C
t Re
lo
PU
Apunta a la localidad de memoria o puerto de E/S
j
Palabra de memoria $000A El carácter $ indica un número hexadecimal
0 0 1
Bit 7
1 0 1 0 1
Bit 0
Memoria
$0000 $0001 $0002 $0003 $0004 $0005 $0006 $0007 $0008 $0009 $000A $000B $000C $000D $000E
=`^liX,%(* 9lj[\[`i\ZZ`fe\jXglekX[fXleX[`i\ZZ`e[\d\dfi`X%
Con referencia a este mismo tema, se puede decir aquí que a cada localidad de memoria se le llama palabra, y que cada palabra tiene el ancho del bus de datos. De esta manera, la CPU que estamos analizando tiene un bus de datos de 8 bits, por ende, cada palabra en la memoria debe ser de 8 bits. Estos bits se numeran del bit 0 al bit 7, como se ilustra
grupo editorial patria®
225
5 El popular microcontrolador
en la figura 5.13.9 Cada bit de una palabra de memoria puede almacenar un 0 o un 1, y todos los bits que conforman la palabra son propiamente leídos o escritos por la CPU en grupo de manera simultánea. Para el ejemplo de la figura 5.13, el contenido de la palabra de memoria es 00110101%, y se localiza en la dirección $000A. A la capacidad total de la CPU de direccionar las diferentes localidades de memoria se le llama espacio de dirección y depende del bus de direcciones de la arquitectura computacional del sistema. Existen varias arquitecturas computacionales, pero antes de adentrarnos en su estudio, vamos a describir la arquitectura de su componente principal: la CPU.
Desmitificando a la CPU Ciclo de instrucción Como hemos apreciado hasta aquí, el componente central de un sistema computacional es la CPU o microprocesador. Este componente se caracteriza porque administra todas las actividades que se llevan a cabo en el sistema y realiza todas las operaciones sobre los datos. La CPU es un componente complejo, por lo que un halo de misterio rodea su funcionamiento; sin embrago, la mayor parte de ese misterio no es justificado, ya que la CPU está compuesta por un conjunto de circuitos que ejecutan tres operaciones de manera continua: búsqueda, decodificación y ejecución de instrucciones.10 A este conjunto de operaciones se le define como Ciclo de instrucción de la CPU, como se ilustra en la figura 5.14. CICLO DE FETC H
Búsqueda de la siguiente instrucción
Decodificación de la instrucción
Ejecución de la instrucción
CI C LO D E I N STR U CC I Ó N
=`^liX,%(+ :`Zcf[\`ejkilZZ`e[\leX:GL% Algunos autores consideran a las operaciones de búsqueda y de ejecución como una operación conjunta a la que llaman ciclo fetch; sin embargo, el resultado final al ejecutar las instrucciones es el mismo. Las instrucciones son codificadas en forma binaria, y el trabajo de la CPU es interpretarlas y ejecutarlas durante los ciclos de instrucción. ¿En cuánto tiempo se ejecuta un ciclo de instrucción? Bien, el ciclo de instrucción, también llamado ciclo de máquina, está constituido por un determinado número de ciclos del reloj. Por tanto, el ciclo de máquina es la unidad que representa el tiempo de ejecución de una determinada instrucción; por ejemplo, hay instrucciones que se ejecutan en un ciclo de máquina, otras en dos, otras en cuatro, etc. Donde cada instrucción representa una operación simple; por lo general, estas instrucciones son aritméticas (suma, resta, multiplicación, división), lógicas (AND, OR, NOT, etc.), de transferencia de datos o de operaciones de bifurcación (brincos condicionales o incondicionales). Cualquiera que sea su tipo, todas estas operaciones se representan por un conjunto de códigos binarios llamado conjunto de instrucciones. Diagrama simplificado de una CPU De manera general, internamente una CPU consiste en una serie de circuitos, como lo ilustra el diagrama de bloques simplificado de la figura 5.15.
9
10
La razón por la cual se numeran los bits iniciando desde el número 0 la revelamos en el capítulo anterior, cuando describimos que podemos usar alambres para representar números. La función principal de una CPU es buscar, decodificar y ejecutar instrucciones de manera cíclica. Repetir esta frase como mantra ayuda a desmitificar el funcionamiento de la CPU.
226
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Bus de datos
VCC
Buffer de datos
Bus de datos interno
RTEMP
ACC
PC
SP
IR
R1
R2
R3
RN
Conjunto de registros ALU Temporizador y control Banderas
Señales internas de control
Bus de direcciones
Reset
GND Bus de direcciones
Bus de control
Oscilador
=`^liX,%(, ;`X^iXdXj`dgc`]`ZX[f[\Ycfhl\j[\leX:GL% Entre los circuitos más importantes de una CPU destaca un conjunto de registros de propósito general (R1, R2, R3…); estos circuitos se usan para el almacenamiento temporal de datos; de una unidad aritmética y lógica (ALU, por sus siglas en inglés), la cual realiza las operaciones numéricas con los datos almacenados, y un registro de instrucción (IR, por sus siglas en inglés), el cual almacena el código binario para cada instrucción a medida que se ejecuta. El contenido del registro IR pasa a un decodificador de instrucción, en la sección de temporización y control, con el fin de identificar la instrucción e iniciar las acciones para ejecutarla. El área de temporización y control es probablemente el elemento más complejo de la CPU, ya que afecta y da secuencia, en particular, a todos los eventos internos de la CPU, y, en su totalidad, al sistema computacional. En esta sección, cada instrucción se divide en una serie de microinstrucciones llamado microprograma. El microprograma de cada instrucción reside en la sección de decodificación de instrucciones y es ejecutado en dicha sección de temporización y control. Otros dos registros importantes son el puntero o apuntador de pila o stack pointer (SP) y el contador de programa o program counter (PC). Destaca el hecho de que el registro SP contiene la dirección del stack o pila, el cual es un área de memoria RAM reservada para guardar datos temporales o para almacenar datos que son resultado de la ejecución de ciertas instrucciones, como llamadas a subrutinas. El registro PC es un registro de N bits, donde, por lo general, N es el ancho del bus de direcciones y su función es almacenar la dirección de memoria de la siguiente instrucción a ejecutar. Por su parte, la ALU realiza operaciones como: sumas, corrimiento circular, incrementos, decrementos, negación, AND, OR, XOR, complementos, limpiar y preestablecer. En este sentido, destaca, por un lado, el hecho de que las operaciones de la ALU se realizan entre el registro acumulador (Acc) y un registro temporal (RTEMP) y, por el otro, que los resultados son alimentados de regreso al acumulador a través de un bus interno. La figura 5.16 muestra el estado de los registros Acc y RTEMP antes y después de una operación lógica AND.
grupo editorial patria®
227
5 El popular microcontrolador
RTEMP
Acc Antes de la Operación lógica AND
1
0
1
0
0
0
1
1
Operación lógica AND Entre el Acc y el RTEMP
1
1
1
1
0
0
0
0
0
0
AND A, RTEMP RTEMP
Acc Después de la Operación lógica AND
0
1
0
1
0
0
0
0
0
1
1
1
1
0
=`^liX,%(-
El contenido del contador de programa, PC, se transfiere al bus de direcciones a través de un buffer. Se activa la señal de control de lectura, RD. Los datos del código de operación de la instrucción se leen de la memoria ROM y se transfieren al bus de datos. El código de operación se almacena en el registro de instrucción, IR, dentro de la CPU. El contador de programa, PC, se incrementa (PC PC 1), como preparación para la siguiente búsqueda en la memoria ROM.
La figura 5.17 muestra la secuencia de señales y flujo de datos durante la búsqueda de una instrucción. 6. Una vez almacenado el código de operación en el registro IR, se efectúa la decodificación o interpretación de dicho código. 7. Se generan las señales de control para permitir la entrada y la salida de datos de los registros internos de la ALU, además de que también se ejecuta en la ALU la operación especificada. En este ejemplo específico, el código de operación es el número 86H, el cual puede corresponder a una operación muy simple como incrementar el registro Acc. Sin embargo, operaciones más complejas requerirían la lectura de un segundo o tercer byte, necesarios como parte de los datos para ejecutar la operación.
Calculadora lógica Para ganar intuición en el manejo de operaciones lógicas, como la operación AND de la figura 5.16, es conveniente hacer uso de la calculadora lógica que se incluye en el CD ROM que acompaña este libro. La figura 5.18 muestra la pantalla de esta calculadora lógica. Como se puede observar en la figura, en el extremo superior izquierdo se ubican los operadores 1 y 2 (operando 1 y operando 2), que son equivalentes a los registro Acc y RTEMP de una ALU, respectivamente. Por su parte, en el
228
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Bus de direcciones
ROM tos Da
CPU
PC
BUS INTERNO
RD
D H 8 6 CS R
IR
FFFFH
BUFF DATOS Bus de datos
86H
DIR
DECO
BUFF DIR
0001H 0000H
Señal de lectura
(código de operación)
=`^liX,%(. 8ZZ`fe\j[\cfjYlj\j[\[`i\ZZ`fe\j#[XkfjpZfekifc#[liXek\cXYjhl\[X[\leZ[`^f[\fg\iXZ`e% extremo inferior izquierdo se distingue el resultado de la operación lógica, que es equivalente al resultado del registro Acc después de la operación; en el extremo derecho se distinguen las operaciones lógicas que se pueden realizar. Las operaciones lógicas que se decidió incluir en esta calculadora son las operaciones lógicas básicas: AND, OR y NOT; además de algunas operaciones lógicas comunes generadas a partir de las operaciones básicas: NAND, NOR y XOR; dos operaciones de corrimiento de bits, corrimiento a la derecha, RR, y corrimiento a la izquierda, RL; y por último, una operación lógica interesante llamada SWAP, que en México se traduce como intercambio o cambalache.
=`^liX,%(/ :XcZlcX[fiXc^`ZX[\jglj[\\a\ZlkXicXfg\iXZ`e8E;%
Lógica para establecer bits individuales en 0 lógico Una característica importante de la operación lógica AND es que el RTEMP de la ALU se puede usar como un registro que puede filtrar dígitos individuales del registro Acc. Cuando el registro RTEMP se usa de esta manera se dice que funciona como una máscara, la cual permite ver solo los bits de interés y poner en 0 los bits que no importan. La figura 5.19 muestra el esquema de la operación lógica AND usando el registro RTEMP como máscara.
grupo editorial patria®
229
5 El popular microcontrolador
AND
Acc
Máscara
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
=`^liX,%(0 Fg\iXZ`ec^`ZX8E;ljXe[f\ci\^`jkifIK
X
Y
=`^liX,%)' Fg\iXZ`ec^`ZX8E;ljX[XgXiX[\k\id`eXi\c\jkX[f[\cY`k+\e\cfg\iXe[f(#\hl`mXc\ek\Xc8ZZ% X
Lógica para establecer bits individuales en 1 lógico Si la operación lógica AND es útil para poner bits individuales del registro Acc en 0 lógico; su contraparte, lógica OR, se utiliza para poner en 1 lógico bits particulares en el Acc, sin afectar el estado de los otros bits en el registro. En la figura 5.21 se observa el esquema de la operación lógica OR usando el RTEMP como máscara para establecer en 1 lógico los bits que se requieran.
230
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
OR
Acc
Máscara
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
=`^liX,%)( Fg\iXZ`ec^`ZXFIljXe[f\ci\^`jkifIK
=`^liX,%)) Fg\iXZ`ec^`ZXFIljX[XgXiX\jkXYc\Z\i\e(c^`Zf\cY`k.[\ci\^`jkif8ZZ#j`eX]\ZkXicfjY`kji\jkXek\j%
Lógica para complementar bits individuales En algunos casos, se requiere que un registro complemente o niegue el estado de un bit, en particular, o de cierto grupo de bits, en general, por supuesto sin afectar el estado de los bits restantes; la operación lógica que nos permite alcanzar este objetivo es la operación XOR. En la figura 5.23 se presenta el esquema de la operación lógica XOR usando el RTEMP como máscara para conmutar el estado de los bits o grupo de bits de interés.
XOR
Acc
Máscara
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
=`^liX,%)* Fg\iXZ`ec^`ZXOFIljXe[f\ci\^`jkifIK
Corrimiento de bits La calculadora lógica contiene dos operaciones que comúnmente tienen las ALU de los microprocesadores:
grupo editorial patria®
231
5 El popular microcontrolador
=`^liX,%)+ Fg\iXZ`ec^`ZXOFIljX[XgXiXZfdgc\d\ekXi\c\jkX[f[\cfjY`kj.p'[\c8ZZ#j`eX]\ZkXicfjY`kji\jkXek\j% a) Los corrimientos o rotaciones de bits hacia la derecha, RR. b) Los corrimientos a la izquierda, RL. Para la operación RL, los ocho bits del registro Acc son rotados un bit a la izquierda; así, el bit 7 es rotado a la posición del bit 0. Como ejemplo, asumiremos que el Acc 11000101B (C5H). Así, al ejecutar la operación RL, el contenido del acumulador tendrá el valor 10001011B (8BH); usando la calculadora lógica, es posible comprobar este resultado como se aprecia en la figura 5.25.
=`^liX,%), Fg\iXZ`ec^`ZXIC#[fe[\\cY`k.\jifkX[fXcXgfj`Z`e[\cY`k'% Para el caso de la operación lógica RR, los ocho bits del acumulador son rotados un bit a la derecha. Así, el bit 0 es rotado a la posición del bit 7. Como ejemplo, asumamos el mismo valor del acumulador del caso anterior, Acc 11000101B (C5H). Entonces, al ejecutar la operación RR, el contenido del acumulador tendrá el valor 11100010B (E2H). Usando la calculadora lógica, es posible comprobar este resultado, como se aprecia en la figura 5.26. Operación lógica de cambalache SWAP La operación lógica SWAP intercambia los nibbles (grupos de 4 bits) de orden alto y bajo del acumulador (bits 7-4 y bits 3-0). La operación también puede ser vista como una operación lógica de rotación de 4 bits; por ejemplo, si el acumulador contiene el valor 11000101B (C5H), al ejecutar la operación SWAP, el resultado del acumulador será el valor 01011100B (5CH). La figura 5.27 muestra este ejemplo usando la calculadora lógica.
232
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
=`^liX,%)- Fg\iXZ`ec^`ZXII#[fe[\\cY`k'\jifkX[fXcXgfj`Z`e[\cY`k.%
=`^liX,%). CXfg\iXZ`ec^`ZXJN8G`ek\iZXdY`Xcfje`YYc\j[\fi[\eXckfpYXaf[\c8ZZ%
Organización de memoria y decodificación de direcciones Organización de memoria La arquitectura computacional que estamos describiendo refleja un sistema muy simple, que fue utilizado en el diseño de las primeras computadoras digitales.11 Como mencionamos antes, al describir la función del bus de direcciones, a la totalidad de las localidades de memoria que una computadora es capaz de direccionar se le denomina espacio de dirección. Para el caso de la CPU que estamos analizando vamos a asumir que el bus de direcciones es de 16 bits, los cuales a su vez, por lo general, se dividen en dos bytes, que se denominan como byte de orden alto y byte de orden bajo, respectivamente. La figura 5.28 muestra esquemáticamente el espacio de dirección para una CPU de 16 bits. Como se puede observar, la figura 5.28 indica que con este bus de direcciones es posible llevar a cabo 216 combinaciones diferentes de 1 y 0; esto significa que la CPU puede apuntar a 65 536 localidades de memoria, si empezamos a contar desde el número 1. No obstante, en este tipo de sistemas, es una práctica común empezar a contar desde el 0, por lo que las localidades son numeradas desde 0 hasta 65 535. Asimismo, es muy común usar la abreviatura K (kilo) para referirnos a las localidades de memoria a las que se puede acceder. Por ejemplo, con un bus de direcciones de 10 bits podemos direccionar 210 1 024 localidades o 1 Kbyte, mientras que en el caso de un bus de direcciones de 6 bits podemos direccionar 26 64 localidades. Por tanto, 216 210 r 26 64 K localidades. Sin embargo, por varias razones no es muy útil referirse a las localidades de memoria usando el sistema decimal. En vez de referirnos a la localidad 8 189 usando su valor decimal o, peor aún, usando su equivalente binario 0001111111111101B, resulta preferible y más práctico referirse a las direcciones usando la notación hexadecimal, en este caso 1FFDH.12 11
12
Las computadoras modernas, como las PC, usan buses y protocolos de comunicaciones más complejos. No obstante, como lo mencionamos en el capítulo 0, si aprendemos los fundamentos y educamos nuestra intuición, podemos extrapolar nuestro conocimiento a sistemas más complejos. Debemos recordar que existen varias formas para indicar si un número se encuentra en notación hexadecimal, entre las que destacan: el símbolo $, o la letra H; en tanto, para la notación binaria puede ser el símbolo %, o la letra B. Ambas notaciones son comunes en la literatura, por lo
grupo editorial patria®
233
5 El popular microcontrolador
A15 A14 A13 A12 A11 A10 A9 A8
A7 A6 A5 A4 A3 A2 A1 A0 μP
0000H
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0001H
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
FFFEH
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
FFFFH
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Byte de orden mayor
Byte de orden menor
=`^liX,%)/
ROM
H
00
00
FH
RAM
Puertos de E/S
FFF
=`^liX,%)0
234
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Sin embargo, resulta más fácil realizar el mapa de memoria en forma de bloques rectangulares. Por tanto, la figura 5.30 ilustra un mapa de memoria con forma rectangular, en el cual se asigna un espacio de direccionamiento de 4 Kbytes a cada dispositivo periférico.
Dirección hexadecimal
Contenido
0 0 0 0 0 0 0 1 0 0
F F
1
0 0 0
1
F
2 2
0 0 0 0 0 1
2 2
F F
3
0 0 0
F F
F
F F
F
4K bytes de ROM
E F
4K bytes Puerto de entrada
F
4K bytes de RAM
E F
3
F
4
0 0 0
4K bytes Puerto de salida
F
Direcciones abiertas (disponibles) F
F
F
F
=`^liX,%*' DXgX[\d\dfi`X\e\chl\j\Xj`^eXle\jgXZ`f[\[`i\ZZ`e[\+BYpk\jXZX[X[`jgfj`k`mfg\i`]i`Zf%
Como sabemos, la CPU o μP realiza operaciones de transferencia de datos desde o hacia un dispositivo periférico. Si se tienen varios dispositivos de memoria y de puertos, se hace necesario utilizar un decodificador de direcciones, que le permita a la CPU seleccionar un dispositivo a la vez. El decodificador puede ser un CI, como los 74LS138, 74LS139 y 74LS159, o diseñarse con compuertas lógicas, ya sea con CI discretos o con un dispositivo lógico programable (PLD, por sus siglas en inglés). Adicionalmente, la decodificación puede ser parcial o total.
Decodificación parcial o total Para explicar las decodificaciones de direcciones parcial y total vamos a considerar un sistema simple basado en un microprocesador con dos memorias, ROM y RAM, de 4 Kbytes y dos puertos, uno de entrada para realizar la interfaz a un teclado y uno de salida para efectuar la interfaz con un display de 7 segmentos, como se observa en la figura 5.31 a). Las memorias ROM y RAM que necesita el sistema descrito deben ser de 4 Kbytes cada una. Como el bus de direcciones de esta CPU es de 16 bits (A0-A15), se puede decir que tenemos un espacio de dirección de 64 Kbytes, por lo que debemos decidir dónde colocar los cuatro dispositivos. La figura 5.31 b) representa una de las opciones posibles para realizar el mapa de memoria. En este caso, el mapa de memoria se dividió en 16 fragmentos de 4 Kbytes. La memoria ROM ocupa el espacio de direcciones desde la
grupo editorial patria®
235
5 El popular microcontrolador
Decodificador
(9000H-9FFFH)
4 12
(0000H-0FFFH)
(2000H-2FFFH)
(8000H-8FFFH)
SI CS RD
INT
A0 INT μP A15 D0-D7 WR RD A0 A1 1 D0-D7 CS ROM OE A0 RAM A11 D0-D7 CS OE R/W WR CS
8
D0-D7
a)
0000H 0FFFH 1000H 1FFFH 2000H 2FFFH 3000H 3FFFH 4000H 4FFFH 5000H 5FFFH 6000H 6FFFH 7000H 7FFFH 8000H 8FFFH 9000H 9FFFH A000H AFFFH B000H BFFFH C000H CFFFH D000H DFFFH E000H EFFFH F000H FFFFH
ROM Totalmente decodificadas RAM
Salida Entrada
Parcialmente decodificadas
b)
=`^liX,%*( J`jk\dXj`dgc\YXjX[f\eleμG%X ;`X^iXdX[\Ycfhl\j%Y DXgX[\d\dfi`X% 0000H hasta la 0FFFH; la memoria RAM ocupa desde la dirección 2000H hasta la 2FFFH; el puerto de salida ocupa desde la dirección 8000H hasta la 8FFFH y el puerto de entrada ocupa desde la dirección 9000H hasta la 9FFFH. Con la asignación de direcciones que se ilustra en la figura 5.31 b), la memoria ROM se podría seleccionar con cualquier dirección de 16 bits de la forma 0000 XXXX XXX XXXXB o 0XXXH. En otras palabras, cualquier dirección cuyos 4 bits más significativos se encuentren en 0 lógico, seleccionarán los 4 Kbytes inferiores del mapa de memoria, en este caso la memoria ROM. Por tanto, la habilitación de la memoria ROM denominada CS o chip select, debe conectarse a una lógica combinacional que tuviera como entradas los 4 bits más significativos y como salida las señal de /CS, en este caso activo BAJO, como se ilustra en la figura 5.32. Para la memoria RAM se puede usar el mismo principio; sin embargo, esta debe habilitarse con la dirección de 16 bits 0010 XXXX XXXX XXXXB o 2XXXH. Por lo que para generar el /CS se requiere de un inversor adicional, como se ilustra en la figura 5.33. A la lógica de decodificación de las memorias ROM y RAM de las figura 5.33 y 5.34 se les llama decodificación total de direcciones, ya que se usa el bus de direcciones completo de la CPU para acceder a los datos de las memorias; esto es, de A0 a A11 como entradas de dirección de la memoria ROM o de la memoria RAM y de A12 a A15 para selección del dispositivo. Para la selección del puerto de salida se asignó el espacio de direcciones desde 8000H hasta la 8FFFH. Por su parte, para el puerto de entrada se establecieron las direcciones desde 9000H hasta 9FFFH. Es decir, para seleccionar cualquiera de estos dos puertos se tienen 4 096 posibles direcciones. La lógica de decodificación de estos puertos se denomina decodificación parcial de direcciones, debido a que no se usa el bus de direcciones completo; en este caso, únicamente se utilizaron las direcciones A15 a A12. En consecuencia, para escribir un dato al puerto de salida podemos usar las direcciones 8000H, 8001H, 8002H… hasta 8FFFH, todas las direcciones son válidas. De la misma manera, para leer un dato del puerto de entrada se pueden utilizar las direcciones 9000H, 9001H, 9002H… hasta la 9FFFH. Usar cualquiera de todas estas direcciones para seleccionar un dispositivo, no causa ningún daño. No obstante,
236
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
A0 Tabla de verdad Entradas A15 0
A14 0
A13 0
Salidas A12 0
Bus de direcciones
/CS 0
Expresión booleana
A12
/C8 = A15 + A14 + A13 + A12
A15
/C8
ROM 4K =`^liX,%*) >\e\iXZ`e[\c&:JgXiXcXd\dfi`XIFDljXe[fc^`ZXZfdY`eXZ`feXc[`jZi\kX% A0 Tabla de verdad Entradas A15 0
A14 0
A13 1
Salidas A12 0
/CS 0
Bus de direcciones
Expresión booleana
A12 /CS = A15 + A14 + A13 + A12
A16
RAM 4K /CS
=`^liX,%** >\e\iXZ`e[\c&:JgXiXcXd\dfi`XI8DljXe[fc^`ZXZfdY`eXZ`feXc[`jZi\kX% si se está diseñando un sistema basado en un microprocesador que pueda ampliarse en un futuro próximo, se debe evitar la decodificación parcial, ya que inutiliza mucho espacio de direcciones; de lo contrario, la decodificación parcial es plenamente funcional. La técnica más común de decodificación de direcciones es con el uso de un CI decodificador como el de la figura 5.31 a). Conectando los 4 bits más significativos como entradas del decodificador, es posible tener 16 posibles salidas que se pueden usar como habilitaciones o selectores de chip, CS. Pero, si se requiere una decodificación total de los puertos de entrada o de salida, tendríamos que involucrar, en la decodificación, al bus de direcciones completo del μP, tal como se muestra en la figura 5.34 a). De esta manera, los
grupo editorial patria®
237
5 El popular microcontrolador
puertos de entrada o de salida serían seleccionados con una dirección única. Por ejemplo, si queremos seleccionar el puerto de salida con la dirección 8000H, debemos usar un decodificador de 16 entradas a 1 salida. Como este decodificador en CI no existe comercialmente, tendríamos que implementarlo con compuertas lógicas, ya sea con CI discretos o con un PLD, como se muestra en la figura 5.34 b).
Tabla de verdad Entradas (A35........................... A0)
Salidas /CS
1000 0000 0000 0000
0
μP
A0 = A15
Decodificador
Expresión booleana
/WR
/CS = A15 + A14 + A13 + A12... A1 + A0
Puerto /CS de salida /WR
Decodificador A15
CS
A14-A0 a)
b)
=`^liX,%*+ X ;\Zf[`]`ZXZ`ekfkXcgXiX\cgl\ikf[\jXc`[X%Y @dgc\d\ekXZ`e[\le[\Zf[`]`ZX[fiZfeZfdgl\ikXjljXe[fcX[`i\ZZ`e/'''? gXiXj\c\ZZ`feXi\cgl\ikf%
Asimismo, también se puede realizar la decodificación parcial con memorias o con puertos. Por ejemplo, vamos a suponer que tenemos un sistema basado en un microprocesador, el cual cuenta con una memoria ROM de 256 bytes y una memoria RAM de 128 bytes. El μP tiene 10 líneas de direcciones (A0-A9) y 8 líneas de datos (D0-D7). Se nos pide realizar el mapa de memoria y el diagrama a bloques del circuito usando decodificación parcial. El espacio de dirección de este μP es de 210 1Kbytes. Si se nos solicita una decodificación parcial, podemos usar un solo bit del bus de direcciones (A9) y dividir el mapa de memoria en dos bloques de 512 bytes cada uno. En este caso, a la parte baja le asignamos la memoria ROM de 256 bytes, la cual se seleccionaría cuando A9 es un 0 lógico, y a la parte alta le asignamos la memoria RAM de 128, la cual se seleccionaría cuando A9 es un 1 lógico, como lo muestra la figura 5.35. Debido a que no se decodifican todas las direcciones del μP, podemos seleccionar la memoria ROM o la memoria RAM con direcciones mayores a la capacidad de la memoria. Por ejemplo, la última localidad de la memoria RAM es la 27FH; esta localidad, sin embargo, podría leerse tanto con la dirección 27FH como con la dirección 37FH. Desde el punto de vista del diseñador de hardware, no importa qué direcciones se usen si se tiene conocimiento cabal del mapa de direcciones; no obstante, desde el punto de vista del programador se podría pensar que dos direcciones diferentes leen dos localidades diferentes. Considerando el mismo sistema basado en un μP, ahora vamos a suponer que se nos pide diseñar el sistema con decodificación total para la memoria ROM y decodificación parcial para la memoria RAM. Como el espacio de direccionamiento del μP es de 1 Kbyte y la memoria ROM es de 256 bytes, se hace necesario dividir el mapa de memoria en 4 bloques de 256 bytes, cada uno. Para esto, haremos uso de un decodificador de 2 a 4, como el 74LS139. La figura 5.36 muestra el mapa de memoria y el diagrama a bloques del circuito. Ahora, vamos a suponer que se requiere que el sistema basado en un microprocesador tenga una decodificación total tanto para la memoria ROM como para la memoria RAM. Usando el mapa de memoria del ejemplo anterior, dividimos el espacio de memoria del μP en 4 bloques de 256 bytes, cada uno. Entonces, asignamos la memoria ROM al primer bloque del mapa de memoria y en el segundo bloque involucramos todo el bus de direcciones para seleccionar la memoria RAM de 128 bytes. La figura 5.37 muestra el mapa de memoria y el diagrama a bloques del circuito.
238
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Hexa 000H 001H
uP A9-A0
:.
D0-D7
/WR /RD
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
ROM
0FFH
:.
:.
:.
:.
:.
:.
:.
:.
:.
0 0
1
1
1
1
1
1
1
1
: :
: :
: :
: :
: :
: :
: :
: :
: :
: :
ROM
/RD
1FFH 1FFH 200H 201H
D7-D0
A7-A0 /CS A9
27FH
RAM
/RD
RAM
0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 : : : : : : : : : : 1 0 0 1 1 1 1 1 1 1 : : :
: : :
: : :
: : :
: : :
: : :
: : :
: : :
: : :
: : :
1 1
1 1
1 1
0 0 0 0 0 0 0 1 1 1 1 1 1 1
A6-A0 M/R
D7-D0 3FFH 3FFH
/CS a)
b)
=`^liX,%*, J`jk\dXYXjX[f\eleμGZfe[\Zf[`]`ZXZ`egXiZ`XcgXiXXdYXjd\dfi`Xj%X ;`X^iXdXXYcfhl\j[\cZ`iZl`kf%Y DXgX[\d\dfi`X%
uP A9-A0 /WR /RD
A9
D0-D7
A8 /RD
74LS139
A7-A0
/Y3 /Y2 /Y1 /Y0
ROM
Hexa 000H
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0
0FFH 100H
0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0
1FFH
0
1
200H
1
0 0 0 0 0 0 0 0 0
2FFH
1
0
1
300H
1
1
0 0 0 0 0 0 0 0
3FFH
1
1
1
ROM RAM
D0-D7
1
1
1
1
1
1
1
1
/CS
/RD
RAM
A6-A0 W/R
1
1
1
1
1
1
1
D0-D7
/CS
1
1
1
1
1
1
1
b)
a)
=`^liX,%*- J`jk\dXYXjX[f\eleμGZfe[\Zf[`]`ZXZ`ekfkXcgXiXcXd\dfi`XIFDpZfe[\Zf[`]`ZXZ`egXiZ`XcgXiXcXd\dfi`XI8D% X ;`X^iXdXXYcfhl\j[\cZ`iZl`kf%Y DXgX[\d\dfi`X%
Del mapa de memoria de la figura 5.37 b) es posible apreciar que la única dirección que no ha sido considerada en la decodificación de la RAM es A7. Por tanto, para realizar la decodificación total usamos la salida /Y1 del decodificador de 2 a 4 y la dirección A7 como entradas; mientras que la salida de este decodificador será la señal de habilitación /CS. Cuando A7 es un cero lógico, se seleccionan los 128 bytes correspondiente a la parte baja de los 256 bytes; en cambio, cuando A7 es un 1 lógico, se seleccionan los 128 bytes de la parte superior. El diagrama a bloques de este
grupo editorial patria®
239
5 El popular microcontrolador
μP A9-A0 WR/ RD/
A9
D0-D7
A8 RD/ 139
ROM
A7-A0
Y3/ Y2/ Y1/ Y0/
RAM
RD/ A6-A0
RAM
WR/ CS/
Y1/ 0 0 1 1
A7 0 1 0 1
CS/ RAM 0 Parte baja 1 1 1
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0
0FFH 100H
0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0
17FH 180H 1FFH
0 0 0
1 1 1
200H
1
0 0 0 0 0 0 0 0 0
2FFH
1
0
1
300H
1
1
0 0 0 0 0 0 0 0
3FFH
1
1
1
ROM
/CS
A7
Hexa 000H
Y1/ 0
A7 0
CS/ 1
RAM
0
1
0
Parte alta
1 1
0 1
1 1
0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
b)
a)
=`^liX,%*. J`jk\dXYXjX[f\eleμGZfe[\Zf[`]`ZXZ`ekfkXcgXiXcXd\dfi`XIFDpleX[\Zf[`]`ZXZ`egXiZ`XcgXiXcXd\dfi`XI8D% X ;`X^iXdXXYcfhl\j[\cZ`iZl`kf%Y DXgX[\d\dfi`X%
circuito con decodificación total, estableciendo la memoria RAM en la parte baja de los 256 bytes asignados a la RAM, se muestra en la figura 5.37 a). Existen sistemas basados en microprocesadores que requieren cierta cantidad de memoria RAM o ROM, pero los dispositivos de memoria con los que se cuenta no proveen la cantidad solicitada en un solo CI, por lo que se deben seleccionar diferentes dispositivos o bloques de memoria. Por ejemplo, un sistema basado en un microprocesador de 8 bits de datos y 10 líneas de direcciones, requiere conectarse a un sistema de memorias de 512 bytes de ROM y 128 bytes de RAM, y a un puerto de salida mapeado a memoria. No obstante, solo se cuenta con memorias RAM de 128 nibbles y memorias ROM de 256 bytes. En este caso, se requiere realizar el mapa de memoria y el diagrama de bloques del circuito usando decodificación parcial. El espacio de dirección de este μP es de 1 Kbyte, por lo que podemos dividir el mapa de memoria en 4 bloques de 256 bytes, asignar dos bloques para la memoria ROM, un bloque para la memoria RAM y un bloque para el puerto de salida. En la figura 5.38 se representa el diagrama de bloques del circuito y el mapa de memoria. Como se puede observar en la figura 5.38, para obtener los 128 bytes de RAM necesarios para el sistema, usando memorias de 128 nibbles (4 bits), fue necesario realizar la conexión en paralelo para formar la palabra de 8 bits requerida. En consecuencia, el/CS de la memoria RAM 1 y de la memoria RAM 2 se seleccionó al mismo tiempo, de tal forma que la RAM 1 provee al bus de datos los bits D0 a D3 y la RAM 2 los bits D4 a D7. Por otro lado, para el caso de la memoria ROM, contamos con el ancho de los bits necesarios, pero no de su capacidad total; por tanto, se requirió usar dos memorias con su respectivo /CS, como lo ilustra la figura 5.38. Ahora, regresemos a nuestro μP de 8 bits de datos y 16 bits de direcciones; en este caso, se requiere que el sistema basado en este microprocesador contenga un bloque de memoria de 32 Kbytes de RAM y 32 Kbytes de ROM. Las memorias con las que se cuenta son: ROM de 8Kbytes, RAM de 16Kbytes, además de un decodificador de 3 a 8 74LS138 y diferentes compuertas digitales. El diagrama del circuito y su mapa de memoria se observan con claridad en la figura 5.39.
240
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Microprocesador WR/
RD/
A0-A9
D0-D7
2 Deco A9, A8 LS139
8 8
ROM1 D0-D7 ROM2 A0-A7 CS/ RD/
000H
D0-D7
ROM1
CS/
0FFH
ROM
100H
RAM1 7
4 A0-A6 D0-D3 RAM2 CS/ RD/ 4 WR/ D4-D7
Puerto de salida
CS/ D0-D7
8
WR/
ROM2 1FFH RAM
RAM1
RAM2
200H
2FFH 300H Puerto de salida 3FFH
a)
b)
=`^liX,%*/ J`jk\dXYXjX[f\eleμGZfe[fjYcfhl\j[\d\dfi`Xj1IFDpI8D%X ;`X^iXdX[\Ycfhl\j[\cZ`iZl`kf%Y DXgX[\d\dfi`X%
En la figura 5.39 es posible notar que al dividir nuestro mapa de memoria en 8 secciones, de 8 Kbytes cada una, es sencillo asignar un bloque a cada memoria ROM, porque contamos con memorias de esa capacidad. Sin embargo, las memorias RAM que tenemos para el diseño son de 16 Kbytes; por tanto, usamos dos habilitaciones del decodificador como entradas a una compuerta AND para generar el /CS de cada memoria RAM como salida. Asimismo, en la figura también es fácil observar que es posible acceder a los 16 Kbytes de datos de la RAM habilitando de forma independiente cada bloque de 8 Kbytes; después de todo, la RAM no toma cuenta cómo se genera su habilitación /CS, siempre y cuando se realice su interfaz de manera correcta.
Interfaz con dispositivos periféricos La mayoría de los microprocesadores, en sí mismos, tienen poco valor funcional. Aunque constituyen el componente principal de los sistemas computacionales, la mayoría de estos no tiene una memoria interna sustancial y pocos poseen puertos de entrada y salida que permitan conectarlos de forma directa con los dispositivos periféricos. Por tanto, el μP opera como parte de un sistema y requiere interconectarse con las otras partes para obtener su valor práctico. A la interconexión de partes de un sistema se le conoce como interfaz, que se define como la unión o el límite compartido entre miembros de un grupo que son capaces de funcionar de forma compatible y coordinada, en otras palabras, sincronizados. Dichos grupos pueden estar integrados por diferentes elementos, como personas, instrumentos, sistemas, etc. En el contexto que nos ocupa, la compatibilidad se refiere a la temporización entre el μP y sus periféricos, la dirección de los datos transmitidos y, en algunas ocasiones, el ajuste de señales de voltajes y corrientes. Por otro lado, la coordinación o sincronía significa que todas las operaciones están controladas por señales provenientes de un reloj, como base de tiempo. En esta sección nos centramos en la sincronización y transmisión de datos desde y
grupo editorial patria®
241
5 El popular microcontrolador
0000 H
Microprocesador /WR /RD
ROM1
A0-A15
1FFF H 2000 H
D0-D7
ROM2 3FFF H 4000 H
3
ROM3
Deco
5FFF H 6000 H
13
A15-A13 LS138
ROM1 A0-A12 D0-D7 CS/ RD/
ROM4
8
ROM2 ROM3
ROM4
D0-D7 D0-D7
CS/
D0-D7 CS/ CS/
RAM1 14 RAM2 A0-A13 CS/ D0-D7 RD/ D0-D7 WR/ CS/
7FFF H 8000 H 9FFF H A000 H
RAM1
BFFF H C000 H DFFF H E000 H
RAM2
8
a)
FFFF
H b)
=`^liX,%*0 J`jk\dXYXjX[f\eleμGZfe[fjYcfhl\j[\d\dfi`XjIFDpI8Dple[\Zf[`]`ZX[fi.+CJ(*/% X ;`X^iXdX[\Ycfhl\j[\cZ`iZl`kf%Y DXgX[\d\dfi`X%
hacia el μP. En esta transmisión de datos, los buses de direcciones, de datos y de control, desempeñan un papel importante en la interconexión del μP y sus periféricos. Por lo general, la transferencia de datos hacia y desde el μP, alrededor de los buses, toma la forma de: 1. Lectura/escritura de memorias. 2. Lectura/escritura de puertos de entrada/salida. 3. Interrupciones. Es muy común que los fabricantes de CI produzcan componentes especializados de interfaz con los μP. Algunos de estos componentes incluyen, además de memorias RAM y ROM, interfaz programables de comunicaciones o de puertos, controladores programables de interrupciones, controladores programables de teclados, controladores programables de estaciones de despliegue, controladores programables de acceso directo de memoria (DMA)13 y muchos otros. No obstante, en este apartado, en particular, nos centramos en describir los principios básicos de la interfaz entre el μP y las memorias, el μP y los puertos de E/S, e introducimos los conceptos de las interrupciones y la entrada/ salida programada o polling.
13
Usualmente el μP es el foco de todas las transferencias de datos, lecturas y escrituras; sin embargo, algunos componentes, como el DMA, relevan al μP del control de los buses de direcciones y de datos, de manera que este periférico puede tener acceso a la memoria principal del sistema sin tener que pasar a través del μP.
242
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Interfaz con memorias Antes de iniciar la descripción de la interfaz del μP con las memorias, primero vamos a detallar la temporización de los ciclos de lectura y escritura de un μP. Recordemos que la operación continua de un μP es buscar, decodificar y ejecutar instrucciones. Por tanto, para llevar a cabo un ciclo de lectura el μP se requiere: 1. Colocar el contenido del contador de programa, PC, en el bus de direcciones. 2. Tiempo después, habilitar la señal de control, en este caso la señal de /RD activo BAJO. 3. Tiempo posterior el μP lee los datos que espera estén disponibles en el bus de datos. Este proceso se define como el ciclo de lectura y permite tener acceso a los datos de un periférico. En la figura 5.40 se ilustra el diagrama de tiempos de las señales del μP durante la operación de lectura de datos.
tAS
tCMD
tAH
Dirección (A0-A15) estable Comando de lectura (RD)
Entrada Datos estables
Bus de datos (D0-D7) tACC Alta impedancia
=`^liX,%+' :`Zcf[\c\ZkliX[\leμG%
En el diagrama de tiempos que se representa en la figura 5.40, se observa que las direcciones deben estar estables un tiempo, tAS, antes de que llegue el comando de lectura, /RD; este tiempo es, aproximadamente, el que necesita la interfaz para decodificar las direcciones y seleccionar el periférico correspondiente. El comando de lectura, /RD, debe tener una duración, tCMD , y terminar un tiempo, tAH, antes de modificar la dirección en el bus de direcciones. Durante la activación del comando de lectura, /RD, se observa un par de círculos con flechas, los cuales simbolizan una importante relación causa-efecto en el diagrama de tiempos. La transición de ALTO a BAJO del comando de lectura, /RD, ocasiona que el bus de datos en el μP deshabilite su condición de alta impedancia y de esta forma acepte los datos del bus como entradas. Por su parte, en la transición de BAJO a ALTO del comando de lectura, /RD, el bus de datos del μP cambia su estado a alta impedancia y detiene la aceptación de datos proveniente del bus de datos. Un parámetro importante es el tiempo que transcurre desde que el μP coloca las direcciones en el bus de direcciones, hasta que los datos son válidos y están listos para ser leídos; a ese tiempo se le conoce como tiempo de acceso, tACC. En tanto, el ciclo de escritura del μP se ilustra en el diagrama de tiempos de la figura 5.41. Como se puede apreciar, el dato que se va a escribir y la dirección donde ha de escribirse este, se ponen en los buses de direcciones y de datos, un tiempo tAS y un tiempo tDS , respectivamente, antes de que se active la señal de control, en este caso el comando de escritura, /WR. Asimismo, los datos y las direcciones deben permanecer estables un tiempo tDH y un tiempo tAH, respectivamente, después que se desactivó la señal /WR. Las etiquetas y el valor de los tiempos, así como las señales disponibles, varían de forma considerable entre los microprocesadores comerciales. Por tal razón, se recomienda leer cuidadosamente los manuales de datos de los fabricantes para observar todos los detalles.
grupo editorial patria®
243
5 El popular microcontrolador
tAS
tCMD
tAH
Dirección (A0-A15) estable Comando de escritura (WR) tDH
tDS Salida Datos estables
Bus de datos (D0-D7)
Alta impedancia
=`^liX,%+( :`Zcf[\\jZi`kliX[\leμG% Es importante hacer notar que las señales del microprocesador y de las memorias no se encuentran combinadas en los diagramas de tiempos de los manuales de datos de los fabricantes; por tanto, los diagramas de tiempos se tienen que examinar de manera independiente para determinar si son compatibles. Interfaz con memorias ROM Una vez que conocemos los ciclos de lectura y de escritura de un μP, el siguiente paso es analizar la interfaz entre nuestro μP de 8 bits de datos y de 16 bits de direcciones y una memoria ROM de 4 Kbytes. La figura 5.42 muestra el diagrama de conexiones entre estos dos dispositivos, usando una decodificación total por medio de un decodificador de 4 a 16.
μP
A0
A0
A15
A11 A12 A15
Deco
ROM 4k x 8
CS
D0
D0
D7
D7
RD
OE
=`^liX,%+) ;`X^iXdX[\Zfe\o`fe\j\eki\leμGpleXd\dfi`XIFD% Para determinar si la interfaz entre estos dispositivos es la correcta, se combinan los diagramas de tiempos, tanto el del μP como el de la memoria ROM, como se ilustra en la figura 5.43. Al igual que con el microprocesador, el tiempo de acceso, tACC, también es una característica importante de la memoria ROM. Asumiendo que las direcciones son estables, el tACC de la memoria ROM es el tiempo que transcurre desde que se habilitó la selección del circuito, /CS, hasta que los datos se encuentran disponibles, considerando que el comando de lectura, /RD, ya ha sido activado.
244
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Señales del μp
Lectura de ROM tAS
tCMD
tAH
Dirección (A0-A15) estable Comando de lectura (RD)
Entrada Datos estables
Bus de datos (D0-D7) tACC
Señales de la ROM
Lectura de ROM tPD
(Decodificador)
Selector de chip (CS) Habilitación de lectura (OE) Datos de salida
Salida de datos (O0-O7) tACC
=`^liX,%+* ;`X^iXdX[\k`\dgfj\eki\\cμGpcXd\dfi`XIFD[liXek\leXfg\iXZ`e[\c\ZkliX% Un tiempo que es importante considerar en el análisis es el retardo de propagación, tPD, del decodificador. Por tanto, para asegurar que la interfaz entre el μP y la memoria ROM se realice correctamente, el tPD del decodificador más el tACC de la memoria debe ser menor que el tACC del μP. Es decir: tPD(decodificador) tACC (memoria) < tACC(μP) Interfaz con memorias RAM En el capítulo anterior clasificamos a las memorias RAM como memorias volátiles de dos tipos: estáticas y dinámicas. En esta sección en particular nos enfocamos en el análisis de las memorias RAM estáticas, las cuales son más fáciles de interconectar, comparadas con las memorias RAM dinámicas. Por ende, para describir la interfaz entre el μP y una memoria RAM estática vamos a considerar nuestro μP de 8 bits de datos y 16 bits de direcciones, y una memoria RAM de 4 Kbytes. En la figura 5.44 se puede observar el diagrama de conexiones entre estos dos dispositivos, usando una decodificación total por medio de un decodificador de 4 a 16. Para comprobar si la interfaz entre estos dispositivos es la correcta, al igual que con la memoria ROM, se combinan los diagramas de tiempos del μP y de la memoria RAM. De esta forma, como se muestra en la figura 5.45, iniciamos con la operación de lectura, donde el análisis de tiempo entre el μP y la memoria RAM es igual que el análisis con
grupo editorial patria®
245
5 El popular microcontrolador
μP
A0
A0
A15
A11 A12
Deco
A15
RAM 4k x 8
CS
D0
D0
D7
D7
RD
OE
WR
WE
=`^liX,%++ ;`X^iXdX[\Zfe\o`fe\j\eki\le«GpleXd\dfi`XI8D% la memoria ROM, la única diferencia radica que en este caso es que la señal de escritura, /WR, permanece deshabilitada durante todo el ciclo de lectura.
Señales del μp
Lectura de ROM tAS
tCMD
tAH
Dirección (A0-A15) estable Comando de lectura (RD)
Datos estables
Bus de datos (D0-D7) tACC
Señales de la ROM
Lectura de RAM tPD
(Decodificador)
Selector de chip (CS) Habilitación de lectura (OE) Habilitación de escritura (WE) Datos de salida
Salida de datos (O0-O7) tACC
=`^liX,%+, ;`X^iXdX[\k`\dgfj\eki\\cμGpcXd\dfi`XI8D[liXek\leXfg\iXZ`e[\c\ZkliX%
246
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Por su parte, el diagrama de tiempos para la operación de escritura en la memoria RAM se muestra en la figura 5.46. En este caso, la secuencia de eventos durante la operación de escritura implica el envío, por parte del μP, de una dirección a la memoria RAM y al decodificador de direcciones, este último, como en el caso del ciclo de lectura, activa la entrada de selección de la memoria RAM, /CS. Después de un lapso conocido como tiempo de preparación de la dirección, tAS, y un tiempo de preparación de los datos, tDS, el μP a través del pulso de escritura, /WR, activa la entrada de escritura de la memoria RAM, /WE, y coloca a la memoria en modo de escritura. En tanto, el tiempo de preparación de la dirección en la memoria RAM, tAS, se considera el tiempo que transcurre después de que se activa la señal de /CS hasta que se activa el comando de escritura, /WR.
Señales del μP
Escritura de RAM tAS
tCMD
tAH
Dirección (A0-A15) estable ___ Comando de escritura (WR) tDS
tDH
Bus de datos (D0-D7)
Datos de salida
Señales de la ROM
Escritura de RAM tPD (Decodificador)
___ Selector de chip (CS) ___ Habilitación de escritura (WE) ___ Habilitación de escritura (OE) Bus de datos D0 (S)
Datos de entrada tAS
=`^liX,%+- ;`X^iXdX[\k`\dgfj\eki\\cμGpcXd\dfi`XI8D[liXek\leXfg\iXZ`e[\\jZi`kliX% En la figura 5.46 también es posible apreciar que el pulso de escritura debe ser habilitado por lo menos un tiempo mínimo, llamado tiempo del comando de escritura, tCMD , o tiempo del ancho del pulso. Es importante destacar que al mismo tiempo que el pulso de escritura está activo, /WR, los datos que se escribirán en la memoria RAM se colocan, por medio del μP, en el bus de datos. Después, la memoria RAM acepta los datos del bus de datos y los escribe en la posición direccionada. Dependiendo del μP, los datos y las direcciones deben permanecer estables un tiempo tDH y un tiempo tAH , respectivamente, después que se desactivó la señal /WR. Por lo general, los fabricantes de memorias ROM indican un tiempo tDS y tDH de 0 ns. Estos últimos tiempos son muy similares a los tiempos de set up y de hold requeridos en los flip-flops descritos en el capítulo 4; aunque en realidad, conceptualmente son los mismos. A manera de ejemplo, supongamos que tenemos un sistema basado en un microprocesador que requiere de una memoria EPROM de 8Kbytes. El μP tiene un bus de direcciones de 16 bits y un bus de datos de 8 bits; el ciclo de lectura del μP es de 1000 ns y el tiempo de acceso, tACC, para leer los datos es de 300 ns; en este caso se necesita una decodificación total de la memoria, con el menor costo posible. Para ello, se cuenta con los componentes de la tabla 5.1 para diseñar el sistema requerido: Es importante hacer notar que el /CS de las EPROM se habilita en BAJO, de la misma forma que la señal de /RD del μP.
grupo editorial patria®
247
5 El popular microcontrolador
Componente
tACC(ns)
Precio
EPROM1 8 Kbytes
120
60
EPROM2 8 Kbytes
290
40
EPROM3 8 Kbytes
450
25
($)
tPD(ns) 74HC139 (decodificador 2-4)
7
6
74HC138 (decodificador 1-8)
14
10
74HC32 (OR 2 entradas)
3
4
74HC04 (inversor)
2
4
KXYcX,%( :fdgfe\ek\j[`jgfe`Yc\jgXiXlej`jk\dXYXjX[f\eleμGZfe/BYpk\j[\d\dfi`XIFDp[\Zf[`]`ZXZ`ekfkXc% Con base en los datos de la tabla, entonces, se pide seleccionar la mejor opción costo/funcionamiento de la interfaz entre el μP y la EPROM, realizando su: a) Mapa de memoria. b) Diagrama de conexiones del decodificador. c) Diagrama de tiempos. Como el μP tiene un espacio de direccionamiento de 64K bytes (216) y el sistema debe constar de 8 Kbytes de memoria EPROM y decodificación total, dividiremos nuestro mapa en 8 secciones, de 8 Kbytes cada una, usando los componentes disponibles. Pero, antes haremos el diagrama de tiempos entre el μP y la memoria EPROM, como se muestra en la figura 5.47.
Microprocesador Dir 1000 nseg /RD Datos
Datos de entrada tACC 300 nseg Memoria
Dir /CS tPD /RD Datos
Datos de salida tACC EPROM
=`^liX,%+. ;`X^iXdX[\k`\dgfj\eki\leμGpleXd\dfi`X[\/BYpk\j% Una opción es dividir nuestro mapa de memoria en 8 fragmentos de 8 Kbytes, cada uno, usando un decodificador 74HC138, de 3 entradas y 8 salidas, y seleccionar la mejor opción de memoria. Para que opere correctamente la interfaz entre el μP y la memoria EPROM se debe cumplir que tPD (decodificador) tACC (EPROM)
248
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
A15 A14 A13 0000H 1FFFH 2000H
EPROM
/Y0 · · · /Y7
A B C
/CS
EPROM1
74HC138 14 ns
120 ns
FFFFH E000H
=`^liX,%+/ DXgX[\d\dfi`Xp[\Zf[`]`ZX[fi.+?:(*/% 14 ns 120 ns 134 ns < 300 ns; con esta opción el sistema funcionaría de forma correcta y la interfaz al μP costaría 80 pesos. Desafortunadamente, la opción anterior no es la mejor en cuanto a costo/funcionamiento. Por otra parte, si usamos la memoria EPROM2, tendríamos que 14 ns 290 ns 304 ns > 300 ns y este sistema no funcionaría debido a que no se cumple la temporización adecuada. En tanto, si usamos el decodificador 74HC139 y una compuerta OR para realizar la decodificación total, como se observa en la figura 5.49, tendríamos que 10 ns 290 ns 300 ns 300 ns; con esta opción, la interfaz tampoco sería la correcta, ya que la temporización no se cumple a la perfección. A15 A14 A13 0000H 1FFFH 2000H
EPROM
16 K bytes
A B
3F F F H
/CS
/Y0 · · · /Y7
EPROM1
74HC138 7 ns
3 ns
290 ns
FFFFH E000H
=`^liX,%+0 DXgX[\d\dfi`Xp[\Zf[`]`ZX[fi.+?:(*0% Por último, al usar la EPROM2 y componentes discretos para realizar la decodificación total del sistema, como se muestra en la figura 5.50, la interfaz entre el μP y la memoria se realizaría de manera correcta, ya que la temporización se cumple adecuadamente: 6 ns 290 ns 296 ns < 300 ns; además de que el costo de la interfaz al μP sería de 42 pesos. A15 A14 A13 0000H 1FFFH 2000H
/CS
EPROM
EPROM2
3F F F H
3 ns
3 ns
290 ns
FFFFH E000H
=`^liX,%,' DXgX[\d\dfi`Xp[\Zf[`]`ZX[fi[`j\X[fZfeZfdgfe\ek\j[`jZi\kfj%
grupo editorial patria®
249
5 El popular microcontrolador
En este ejemplo, los tiempos de propagación de los decodificadores y el tiempo de acceso de las memorias fueron ajustados, con el fin de enfatizar el análisis que debe realizarse al efectuar la interfaz entre un μP y memorias ROM o RAM. La diferencia en costo/funcionamiento de la primera respecto de la última opción es de 18 pesos, lo cual parecería muy poco. Sin embargo, si se planea realizar el diseño en cantidades de 10 mil, 50 mil o 100 mil piezas, esta diferencia tiene un efecto considerable. Interfaz con puertos de entrada/salida El concepto de entrada/salida engloba la comunicación o transferencia de información entre el μP y el exterior. Esta comunicación puede efectuarse fundamentalmente en paralelo o en serie. La entrada/salida en paralelo se basa en la transmisión simultánea de un grupo de n bits, donde n por lo general es el ancho de la palabra del bus de datos. Por otra parte, la entrada/salida en serie puede considerarse como un caso particular de la anterior en el que n 1. En la entrada/salida en paralelo, el μP transfiere de manera simultánea la palabra completa del bus de datos hacia o desde los dispositivos periféricos, mediante un ciclo de lectura o escritura. En cambio, la entrada/salida en serie exige un ciclo de lectura o escritura para cada bit que se desee transferir, por lo que la recepción o transmisión de un byte requerirá de ocho ciclos de lectura o escritura. Por consiguiente, la entrada/salida en paralelo tiene un tiempo de transmisión/recepción menor que la entrada/salida en serie; sin embargo, la entrada/salida en paralelo requiere una interfaz con un mayor número de alambres de conexión que la interfaz de entrada/salida en serie. Como consecuencia, cuando la distancia entre μP y periféricos es reducida, o bien cuando la velocidad de transmisión debe ser elevada, se prefiere la entrada/salida en paralelo.14 En esta sección, primero describimos la interfaz simple de salida usando un bit y después utilizando un byte; luego, detallamos la interfaz simple de entrada de un bit y de un byte. Aunque estos ejemplos son muy simples, nos preparan para ingresar con prontitud al mundo de los microcontroladores. Interfaz de salida Para describir la interfaz de salida, vamos a considerar que contamos con un sistema basado en un μP de 8 bits de datos y 16 bits de direcciones, el cual se interconecta con una interfaz de salida elemental y un dispositivo periférico, como se ilustra en la figura 5.51. Adaptador de interfase se salida
Dispositivos periféricos
Microprocesador 1
D0
D0-D7
D
Q
0000H Puerto de salida
A15
A0-A15
7FFFH 8000H
1
CK
/WR FFFFH
a)
b)
=`^liX,%,( @ek\i]Xq[\jXc`[Xj`dgc\p[`jgfj`k`mfg\i`]i`Zf%X :`iZl`kf%Y DXgX[\d\dfi`X% En la figura 5.51 a) se observa un adaptador de interfaz y el dispositivo periférico. En este caso, el adaptador de interfaz es un flip-flop tipo D y el dispositivo periférico es un simple LED. Mientras tanto, en la figura 5.51 b) se 14
La E/S en paralelo es más rápida que la E/S en serie; sin embargo, para simplificar la interconexión entre el μP y los dispositivos periféricos, los fabricantes de dispositivos electrónicos han desarrollado interfaces de E/S en serie bidireccionales con solo dos alambres de conexión. En la actualidad, la velocidad de transmisión de estas E/S seriales es del orden de los 100 kHz, llegando hasta los MHz. Algunas de estas interfaces son la Inter-Integrated Circuit (I2C) y la Serial Peripheral Interfase (SPI).
250
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
distingue el mapa de memoria del sistema, donde es posible apreciar que el puerto de salida se selecciona con un solo bit de dirección, A15; en consecuencia, el mapa de memoria se divide en dos bloques de 32 Kbytes y el puerto de salida se asigna a la parte baja del mapa de memoria, desde 0000H hasta 7FFFH. Como entrada de datos, al adaptador de interfaz se le asignó el bit menos significativo del bus de datos, D0. Por tanto, para encender o apagar el LED requerimos que el μP efectúe un ciclo de escritura. Por ello, en la figura 5.52 se observa el diagrama de tiempos entre el μP y el periférico de salida para el ciclo de escritura.
Señales del μP
Ciclo de escritura tAS
tCMD
Dirección (A0-A15) estable
tAH
(0000H - 7FFFH)
___ Comando de escritura (WR) tDS
tDH
Bus de datos (D0-D7)
(00H - 01H)
Adaptador de interfase
Escritura a LED tPD (NOR)
Entrada NOR (A15) ___ Entrada NOR (WE) ___ Salida NOR (CK) tPD (NOR) Bus de datos D (D0)
0 lógico o 1 lógico
=`^liX,%,) ;`X^iXdX[\k`\dgfj\eki\\cμGple[`jgfj`k`mfg\i`]i`Zf[liXek\leZ`Zcf[\\jZi`kliX%
En el diagrama de tiempos de la figura 5.52 se observa que la dirección válida para acceder al puerto de salida es de 0000H a 7FFFH y el dato válido en el bus de datos para encender o apagar el LED es XXXX XXX0B o XXXX XXX1B, respectivamente. Una de las opciones en el bus de datos sería 00H para apagar el LED y 01H para encenderlo. Es importante hacer notar que hasta que la dirección A15 y la señal de control de escritura, /WR, son 0 lógico, se proporcionará el flanco de subida en el flip-flop para almacenar el estado del dato D0 colocado previamente en el bus de datos. El ejemplo anterior es una forma simple de describir la interfaz E/S serial. En tanto, si quisiéramos encender /apagar el LED de acuerdo con el estado de un byte, tendríamos que realizar ocho ciclos de escritura del μP. Mientras que si usamos la interfaz de E/S en paralelo, podemos escribir el estado de los ocho bits del byte en cuestión, usando un solo ciclo de escritura. En la figura 5.53 se observa el mismo sistema basado en un μP de 8 bits de datos y 16 bits de direcciones, pero en este caso ahora se interconecta con una interfaz de salida de ocho bits y un dispositivo periférico. El diagrama de tiempos para el circuito de la figura 5.53 es igual al de la figura 5.51, pero en este caso el μP transfiere ocho bits, a través del bus de datos, al adaptador de interfaz de salida, debido a que el adaptador de interfaz almacena los datos de salida en un grupo de ocho flip-flops. Este dispositivo podría ser un latch tipo 74LS373, con su control de salida, /OE, habilitado de forma permanente. Cada segmento de LED, a-g, funciona exactamente igual como el LED de la figura 5.51 a); un 1 lógico encendería cualquier segmento.
grupo editorial patria®
251
5 El popular microcontrolador
Adaptador de interfase de salida
Dispositivos periféricos
Microprocesador 8
Q1 D1-D8 Q2 Q3 Q4 Q5 Q6 LE Q7 Q8 /OE
D0-D7 A0-A15
1
A15
/WR
a b c d e f g Punto
0000H Puerto de salida 7FFFH 8000H
FFFFH a)
b)
=`^liX,%,* @ek\i]Xq[\jXc`[XZfe[\jgc`\^l\[\j`\k\j\^d\ekfj%X :`iZl`kf%Y DXgX[\d\dfi`X%
Las instrucciones básicas del μP para acceder a los periféricos las analizamos en una sección posterior, la cual está relacionada con la programación de los μP. Interfaz de entrada Con el objetivo de describir la interfaz de entrada, utilizamos un dispositivo periférico elemental y su adaptador de interfaz. Al igual que con la interfaz de salida, en este caso también usamos un sistema basado en un μP de 8 bits de datos y 16 bits de direcciones, como se muestra en la figura 5.54 a). Por su parte, en la figura 5.54 b) se indica el mapa de memoria y el rango de direcciones asignado a este puerto de entrada. Dispositivos periféricos
Adaptador de interfase se salida 0000H
+5 V
E
Puerto de entrada
S /OE
7FFFH 8000H
Microprocesador A15 1
A0-A15
D0-D7
/RD FFFFH a)
b)
=`^liX,%,+ @ek\i]Xq[\\ekiX[Xj`dgc\ple[`jgfj`k`mfg\i`]i`Zf%X :`iZl`kf%Y DXgX[\d\dfi`X% En este caso, el dispositivo periférico es un simple interruptor, usado para seleccionar un estado lógico ALTO o BAJO. Por su parte, el adaptador de interfaz es un dispositivo de tercer estado, activado a través de una compuerta OR cuando la dirección A15 y la señal de control de lectura, /RD, se encuentran en 0 lógico. El dato de entrada es leído usando el bit menos significativo del bus de datos, D0. Por tanto, para conocer el estado del interruptor, requerimos que el μP efectúe un ciclo de lectura. En la figura 5.55 se muestra el diagrama de tiempos entre el μP y el periférico de entrada para el ciclo de lectura. En la figura 5.55 es posible observar que la dirección válida para acceder al puerto de salida es de 0000H a 7FFFH y el dato a ser leído se asignó al bit menos significativo, D0, del bus de datos. Es importante distinguir que hasta que la dirección A15 y la señal de control de lectura, /RD, son 0 lógico, se habilita la señal de salida, /OE, del circuito (buffer) de tercer estado, con lo cual es posible leer el estado del interruptor a través de D0 del bus de datos. Al terminar el pulso de la señal de lectura, /RD, la compuerta OR va a un estado lógico ALTO, y lo mismo ocurre con la entrada de
252
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Señales del μP
Ciclo de lectura tAS
Bus de datos (D0-D7)
tCMD
tAH
Dirección (A0-A15) estable ___ Comando de lectura (RD)
Bus de datos (D0-D7)
Datos de entrada tACC
Adaptador de interfase
Lectura del interruptor tPD (OR)
Entrada OR (A15) Entrada OR (/RD)
tPD (OR)
Salida OR (/OE)
tPD (Buffer 3er estado) Datos de entrada
Bus de datos D0 (S) tACC
=`^liX,%,, ;`X^iXdX[\k`\dgfj\eki\\cμGple[`jgfj`k`mfg\i`]i`Zf[liXek\leZ`Zcf[\c\ZkliX% control del buffer, /OE, por lo que su salida, S, regresa al estado de alta impedancia y no tiene efectos sobre otras transferencias del bus de datos. Sin embargo, al realizar el ciclo de lectura, el μP lee el byte completo, por lo que es necesario realizar un artificio lógico en la ALU, conocido con el nombre de máscara (el cual se estudia con detalle en la sección: calculadora lógica), si queremos averiguar si el bit leído por D0 es 1 o 0 lógico. Una extensión del ejemplo anterior es leer más de un bit en un ciclo de lectura. La figura 5.56 a) muestra un circuito basado en un μP de 8 bits de datos y 16 bits de direcciones, donde 8 bits de datos, provenientes de un teclado, son leídos de manera simultánea. Mientras que la figura 5.56 b) indica el mapa de memoria y el rango de direcciones asignado a este puerto de entrada. El control de lectura y el direccionamiento son los mismos que se usaron en los ejemplos anteriores. Dispositivos periféricos
Adaptador de interfaz de salida
0000H Buffer (8 bits)
Puerto de entrada
8
/OE
7FFFH 8000H
Microprocesador A15 1
A0-A15
D0-D7
/RD FFFFH a)
b)
=`^liX,%,- @ek\i]XqZfelek\ZcX[fZfdf\ekiX[X%X :`iZl`kf%Y DXgX[\d\dfi`X%
grupo editorial patria®
253
5 El popular microcontrolador
Interfaz mediante interrupciones y mediante E/S por programa (polling) Hasta el momento hemos asumido que cuando el programa dirige al μP para leer un dato desde un puerto de entrada, el dato en esa posición se encuentra disponible y, por ende, es un dato válido. Pero esto podría no ocurrir, debido a que los dispositivos periféricos (como el teclado) no actúan a la misma velocidad que el μP. Por este motivo, existen varias técnicas para la sincronización de la transferencia de datos, entre las que destacan: entrada/salida por programa o polling y las interrupciones. Entrada/Salida, E/S, por programa La E/S por programa o polling es el método más sencillo para sincronizar las entradas/salidas y se utiliza en aplicaciones dedicadas pequeñas. La idea del polling es escribir o leer datos de forma repetitiva usando una iteración en el programa. Para ejemplificar su uso, supongamos que tenemos un sistema muy sencillo basado en un μP que utiliza como puerto de entrada un interruptor y como puerto de salida un LED. Para esto podríamos combinar los circuitos que se ilustran en las figuras 5.51 a) y 5.54 a) mediante un solo μP. Una interfaz de polling muy simple, usando este sistema, podría leer el estado del interruptor y luego reflejarlo en el indicador de salida de LED. En este ejemplo, la iteración continua del programa sería lectura-escritura-lectura-escritura, sucesivamente. Algunos autores también utilizan la traducción: “encuesta o muestreo”, para referirse al polling. En este sentido, el μP interrogaría el estado del puerto de entrada mediante un ciclo de lectura y actualizaría su salida con intervalos de unos cuantos microsegundos. En el ejemplo anterior se tiene solo un puerto de entrada y un puerto de salida; sin embargo, con frecuencia se requiere realizar el polling de varios dispositivos de entrada/salida. Para esto, el μP tendría que interrogar a cada dispositivo sucesivamente. Si cada dispositivo tuviera un bit en 1 lógico actuando como bandera e indicando que tiene un dato válido, el μP atendería a ese dispositivo. En cambio, si el bit fuera un 0 lógico, el μP se dirigiría hacia el segundo dispositivo de E/S y así sucesivamente. Interrupciones El otro método para informar al μP que un dispositivo de E/S está “listo” y que debe emprender una acción son las interrupciones. Podemos definir una interrupción como la sucesión de un evento que causa la suspensión temporal de un programa, mientras otro programa se encarga de servir a dicho evento. Esto le permite a un sistema computacional responder a un evento de manera asíncrona, es decir, sin saber cuándo se interrumpirá el programa principal. Ahora bien, si el μP es el cerebro del sistema computacional, entonces podemos decir que la atención mediante interrupciones a los dispositivos periféricos, por parte del μP, es conceptualmente similar a la sucesión de acontecimientos que podemos tener un día en nuestra vida cotidiana. Para ejemplificarlo, consideremos la siguiente secuencia de acontecimientos: 1) usted está leyendo un libro; 2) el teléfono suena; 3) utiliza un separador para marcar la página que estaba leyendo y se dirige a contestar el teléfono; 4) contesta el teléfono con un “bueno” para indicar que está preparado para iniciar la conversación; 5) platica con la otra persona en la línea y termina su conversación; 6) regresa a leer su libro, localizando, gracias al separador, el lugar en que se encontraba cuando se produjo la interrupción; 7) el timbre de la puerta suena; 8) una vez más, utiliza el separador para marcar la página que estaba leyendo y se dirige a abrir la puerta; 9) abre la puerta; 10) atiende a la
Lectura sin interrupciones
Lectura con interrupciones
Lectura de libro
Lectura de libro
Lectura de libro
Int. de telefono
Lectura de libro
Int. de timbre Tiempo
=`^liX,%,. C\ZkliX[\lec`YifZfepj`e`ek\iilgZ`fe\j%
254
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
persona que está en la puerta y termina su asunto con ella; 11) por último, regresa a leer su libro, localizando el lugar en que se encontraba cuando se produjo la segunda interrupción. La figura 5.57 muestra el flujo de lectura de un libro con interrupciones y sin interrupciones respecto del tiempo. Volviendo a nuestro sistema basado en μP, cuando se genera un acontecimiento (interrupción), el flujo del programa principal se interrumpe para llevar a cabo una rutina denominada: Rutina de Servicio de Interrupción (RSI), la cual toma el control, realiza sus operaciones y termina al pasar de regreso el control a la rutina principal. El programa principal continúa su ejecución en donde se quedó cada vez que regresa de la RSI. La figura 5.58 ilustra el flujo de ejecución de un programa sin interrupciones y con interrupciones respecto del tiempo.
Ejecución sin interrupciones
Programa principal
Principal
Principal
Ejecución con interrupciones
RSI
Principal
RSI
Tiempo
=`^liX,%,/
μP
μP Dispositivo 1 Dispositivo 2 Dispositivo 3 Dispositivo 4
Dispositivo 1 Dispositivo 2 Dispositivo 3 Dispositivo 4
INT1 INT2 INT3 MNI
a)
INT1 MNI
b)
=`^liX,%,0 ;fjk`gfj[\`ek\iilgZ`fe\j\eleμG%X @ek\iilgZ`fe\j\edXjZXiXYc\jpef\edXjZXiXYc\j% Y @ek\iilgZ`fe\j\edXjZXiXYc\j[\leXjfcX\ekiX[X%
No obstante, adicionalmente, también existen alternativas a los escenarios anteriores. Supongamos que por alguna razón no deseamos ser interrumpidos cuando estamos leyendo nuestro libro. Entonces, en lugar de atender el teléfono y el timbre de la puerta que nos están interrumpiendo, podemos elegir ignorarlos y desconectarlos o dejarlos sin servicio. En ese estado, se dice que las interrupciones han sido bloqueadas. Por supuesto, es probable que exista una interrupción que no permita ser ignorada, como puede ser el hecho de que se funda un fusible que provoque una suspensión de la energía eléctrica. A este tipo de interrupciones se les llama interrupciones no enmascarables (NMI).
grupo editorial patria®
255
5 El popular microcontrolador
Por tanto, es imperante atender la interrupción, reemplazando el fusible, antes de volver a la lectura del libro. Con base en este ejemplo, resulta sencillo explicar que las interrupciones no enmascarables tienen mayor prioridad que las interrupciones que podemos elegir ignorar, que reciben el nombre de interrupciones enmascarables (INT). Al conjunto de interrupciones enmascarables se le pueden asignar prioridades que permitan que las tareas con mayor prioridad se realicen sin ser interrumpidas por las tareas de menor prioridad. Por ejemplo, puede que no sea deseable permitir que llamen a la puerta para interrumpir una conversación telefónica de larga distancia. Si varios dispositivos son capaces de interrumpir al μP, y este solo cuenta con una entrada para las interrupciones, las líneas de requerimiento de las interrupciones podrían ser unidas lógicamente mediante una compuerta OR, como lo muestra gráficamente la figura 5.59 b), sin embargo, el μP tendría que encontrar el dispositivo de E/S que causó la interrupción. El procedimiento para encontrar al periférico implica el uso de la técnica de polling mencionada antes, conocida como esquema de interrupción por programa o de polling. Por otro lado, a las interrupciones que consisten no solo de una señal de petición de interrupción, sino también de un identificador que permite que el μP brinque de forma directa a la rutina de servicio de interrupción, se conocen como interrupciones vectorizadas. En la práctica, el identificador puede ser una dirección o el primer byte de una instrucción, lo cual le permite al μP saber cuál es el dispositivo de E/S que está interrumpiendo. Por lo común, los μP no cuentan con más de cuatro terminales de interrupción, por lo que se pueden usar CI externos, como el controlador de interrupciones por prioridad Intel 8259. Como ejemplo vamos a considerar un sistema basado en nuestro μP de 8 bits de datos y 16 bits de direcciones, el cual se interconecta con un teclado mediante un puerto de E/S con interrupción simple, como se muestra en la figura 5.60.
Dispositivo periférico (Teclado)
Línea strobe
(
ALTO = salida BAJO = entrada
)
BAJO
Control del modo
ALTO Línea selectora de dispositivo Línea de lectura de E/S
STB DI0 MD Flip flops
CLR
Decodificador de direcciones
DO0 Buffers · de tercer ·· DO7 estado
DS2 ___ DS1 Puerto de E/S Intel 8212
A15 · (16) · · A0
(8)
___ INT
Línea de requerimiento de interrupción
___ RD A7 (8) A0
Adaptador de interfaz de entrada
DI7
μP
D0 · (8) · · D7 INT
=`^liX,%-' J`jk\dXYXjX[f\eleμGZfeleX`ek\i]Xq[\k\ZcX[fgfid\[`f[\legl\ikf[\<&J@ek\c/)()Zfe`ek\iilgZ`ej`dgc\% Como se puede observar, el adaptador de interfaz es un puerto de E/S 8212 de Intel, que puede ser programado tanto como puerto de entrada como de salida con la terminal de control de modo, MD, la cual en este caso está en BAJO, lo que significa que opera como puerto entrada; en este caso, la entrada de borrar datos está inhabilitada con un nivel lógico ALTO. Los 8 bits de datos provenientes en paralelo del teclado se conectan a las entradas de datos DI0DI7 del CI 8212. En este sistema la entrada strobe, STB, equivale al pulso de reloj de un grupo de flip-flops o a la terminal LE de un latch de 8 bits, mientras que las entradas /DS1 y DS2 equivalen a la habilitación de los buffers de tercer estado de salida de datos. El teclado debe colocar un byte en la entrada del puerto y producir un pulso activo ALTO en la señal STB, para almacenar en los flip-flops el dato correspondiente. El diagrama de tiempos para analizar el funcionamiento del puerto 8212 se muestra en la figura 5.61. De acuerdo con el diagrama de tiempos de la figura 5.61, una vez que los 8 bits de datos son almacenados en los flip-flops internos, la circuitería del CI 8212 genera un pulso de interrupción de salida, /INT, activo BAJO, indicando al μP que tiene un dato válido. Como en este caso el μP tiene una entrada de interrupción activo ALTO, se agregó un
256
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Señales en el puerto de E/S Intel 8212
Modo de entrada
Datos de entrada D0-D7
Datos de entrada
Entrada strobe STB Flip flops de datos
Controles de buffers de tercer estado
Almacenamiento en flip flops
DS1
DS2
Salidas hacia el bus de datos
D0-D7
Salida de interrupciones
___ INT
Aparece en las salidas
=`^liX,%-( ;`X^iXdX[\k`\dgfj[\]leZ`feXd`\ekf[\cgl\ikf/)()[\@ek\c% inversor, como se aprecia con claridad en la figura 5.60. Tras interrumpir al μP, este brinca a la RSI, que en este caso realizará un ciclo de lectura para leer los datos provenientes del teclado. Para realizar esto, envía las direcciones, las cuales a su vez generan la señal proveniente del decodificador que activa la entrada DS2; en seguida, se activa la señal de control, /RD, que activa la entrada DS1, deshabilitando el estado de alta impedancia de los buffers de salida y permitiendo leer el dato almacenado en el CI 8212. En esta sección describimos con más detalle el tratamiento de las interrupciones, debido a que es la técnica más utilizada en aplicaciones de microcontroladores, como se verá cuando se analice el microcontrolador 8051 en el capítulo siguiente. En esta sección solo nos resta describir la programación simple de un μP usando operaciones lógicas y ciclos de lectura y escritura, para esto, usaremos algunas de las operaciones lógicas más comunes de una ALU usando la calculadora lógica del CD ROM que acompaña este libro.
Programación simple de una CPU o μP Programa o software Una de las cosas más importantes que se deben recordar acerca de los sistemas basados en microprocesadores es que estos pueden efectuar únicamente lo que se les instruye que hagan mediante un conjunto de códigos binarios, llamado conjunto de instrucciones. En este conjunto, cada instrucción representa una operación simple; por lo general, estas instrucciones son aritméticas y lógicas, de transferencia de datos y de bifurcación (brincos condicionales o incondicionales). Para ejecutar una tarea útil, el sistema basado en un μP debe tener una serie de instrucciones, listadas de manera muy clara y exhaustiva. A la colección de estas instrucciones se le llama programa o software y a las personas que escriben y revisan esas instrucciones se les conoce como programadores o desarrolladores. La calidad de los programas o software es lo que determina el grado de eficiencia y exactitud con el que se ejecuta un programa, y no lo sofisticado que sea el microprocesador. Dicho de otra manera, los microprocesadores son controlados por los programas, y cuando estos fallan podría considerarse un reflejo de los puntos débiles de sus autores.15 15
Por lo común, se escuchan frases como “la computadora falló” o “la computadora cometió un error”, pero dichas frases no son del todo exactas. Si bien la falla de un equipo es inevitable, los resultados erróneos usualmente son indicaciones de programas poco eficientes o errores de los operadores.
grupo editorial patria®
257
5 El popular microcontrolador
Lenguajes de máquina y lenguaje ensamblador Los sistemas basados en microprocesadores únicamente entienden un lenguaje representado en una serie codificada de números binarios, que recibe el nombre de lenguaje de máquina. Cada familia de microprocesadores tiene su propio lenguaje de máquina, el cual por lo general no puede ser entendido por microprocesadores de otras familias; incluso, un microprocesador en particular, entre miembros de una misma familia, podría utilizar un “dialecto” ligeramente diferente, dado que podría incorporar características en hardware no disponibles en otros miembros de la familia. Por tanto, el conjunto de instrucciones para un microprocesador específico contiene su lenguaje de máquina particular. Por su parte, el lenguaje ensamblador consiste en un conjunto de instrucciones mnemónicas y modos de direccionamiento, donde las instrucciones describen qué es lo que se tiene qué hacer y los modos de direccionamiento describen dónde hacerlo. Cada instrucción tiene dos posibles componentes: el código de operación u opcode y un operando. El código de operación es la función que ejecuta la instrucción, mientras que el operando es el dato usado por el código de operación. Como ejemplo, retomamos la operación lógica AND, entre el acumulador y el número F0H, de la figura 5.18: AND A, F0H Ahora, podemos mostrar que los formatos del código de operación y del operando de esta instrucción son 01010100 dddddddd, respectivamente. Así, en este caso, el operando es el número 11110000B, como se observa en la figura 5.62.
01010100
11110000
Código de operación
Operando
=`^liX,%-) :[`^f[\fg\iXZ`epfg\iXe[fgXiXcX`ejkilZZ`e8E;% A diferencia de las máquinas, los humanos sufrimos para recordar una serie grande de números binarios. Tratar de recordar todos los códigos de operación, aun en hexadecimal, para cada microprocesador, es muy dif ícil. Esta es la razón por la que se inventaron las instrucciones mnemónicas, por lo común llamadas solo mnemónicos. Los mnemónicos no son otra cosa que una palabra codificada que representa un dato binario (en lenguaje de máquina) y con el cual resulta más fácil la programación del μP; en realidad, de aquí es donde se deriva el concepto de lenguaje ensamblador. Los datos binarios representados por los mnemónicos se almacenan en la memoria de programa, ROM, y son leídos por el microprocesador mediante los ciclos de instrucción. La figura 5.63 ilustra este proceso para el código de operación y el operando de la instrucción AND A, F0H anterior.
IR
54
(Registro de instrucción) Bus de control
Reset
Bus de datos Reloj
Bus de direcciones
PC
0110
(Contador de programa)
Memoria ROM Dirección Dato 0001H 0010H 0011H 0100H 0101H 0 1 1 0H 01010100B 0 1 1 1 H 1 1 1 1 0000B 1000H FFFEH FFFFH
=`^liX,%-* ;XkfjY`eXi`fjZfii\jgfe[`\ek\jXcX`ejkilZZ`e8E;8#='?#c\[fjgfileμGd\[`Xek\Z`Zcfj[\`ejkilZZ`e%
258
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Un modo de dirección, en cambio, es simplemente el medio por el que se determina una dirección. Existen varios modos de direccionamiento, algunos de los más comunes son los modos de direccionamiento de dato inmediato, de direccionamiento directo, indirecto o indizado, los cuales analizamos con más detalle en la sección de microcontroladores. No obstante, los programas en lenguaje ensamblador no son ejecutados de forma directa por el μP, sino que deben traducirse a lenguaje de máquina. Esta traducción la hace un programa llamado ensamblador, el cual toma las palabras codificadas de las instrucciones mnemónicas y las cambia a sus valores en binario, creando un archivo que posteriormente es el que se copia en la memoria ROM. También existen otros programas llamados compiladores de código, los cuales toman un código en lenguaje de alto nivel, por ejemplo el lenguaje C, y crean un código que se ejecuta en un sistema computacional. Los compiladores, a diferencia del lenguaje ensamblador, pueden manejar tareas como el direccionamiento de memoria sin la necesidad de que el desarrollador se preocupe de ello. Esta es la razón por la que a estos lenguajes se les llama de alto nivel. El lenguaje ensamblador, por su parte, trabaja de forma directa con la circuitería o hardware, al que está conectado el microprocesador. Muchos microprocesadores y, en la actualidad, también muchos microcontroladores tienen compiladores para el lenguaje C. Lo anterior permite hacer uso de un lenguaje de alto nivel, con el que se puede estar familiarizado, con el fin de programar al microprocesador o al microcontrolador. Sin embargo, se recomienda ser cuidadoso cuando se usa este enfoque, debido a que a pesar de que los compiladores son cada día mejores, es posible perder eficiencia en el camino.16
Desarrollo de programas sencillos en lenguaje ensamblador Como comentamos antes, en un principio los lenguajes de programación se crearon para reducir el tiempo de desarrollo de un programa, debido a que estos no solo incrementan la portabilidad y la claridad de los programas, sino también permiten la modificación de los programas de una manera más fácil. En esta sección analizamos algunas instrucciones o mnemónicos en lenguaje ensamblador representativos para nuestro microprocesador genérico de 8 bits de datos y 16 bits de direcciones. Así, con estas instrucciones realizamos programas sencillos que enfatizan los ciclos de lectura y escritura de un μP mediante instrucciones de transferencia de datos, operaciones lógicas y operaciones de bifurcación. Para esto, primero vamos a considerar que nuestro μP tiene el conjunto de instrucciones mostrado en la tabla 5.2. Para iniciar lo antes expuesto, vamos a considerar que tenemos un sistema basado en nuestro ya conocido μP de 8 bits de datos y 16 bits de direcciones. Como sabemos, el sistema cuenta con una memoria EPROM de 8 Kbytes y dos periféricos como puertos de entrada y salida, un interruptor y un LED indicador, respectivamente; en este caso, los periféricos son mapeados a memoria con una decodificación parcial. En la figura 5.64 se observa el diagrama esquemático para este sistema y el mapa de memoria. Con base en el conjunto de instrucciones de la tabla 5.2, requerimos de una rutina que lea el estado del interruptor y lo despliegue en el LED indicador. Si el interruptor es un 1 lógico, el LED se enciende y si es un 0 lógico el LED se apaga. Para realizar este programa hacemos uso de la interfaz de E/S por programa; el listado de este programa se muestra en la figura 5.65. Aunque el programa de la figura 5.65 es muy simple, para su comprensión vamos a describir cada instrucción. La primera instrucción, MOV DPTR, 4000H, carga el contenido del registro apuntador de datos DPTR (Data Pointer) con una de las 16 mil posibles direcciones asignadas, de acuerdo con su mapa de memoria. Por su parte, la instrucción MOVX A, DPTR, es una instrucción de transferencia externa; aunque, en realidad, con esta instrucción el μP ejecuta un ciclo de lectura. Esto es, el μP coloca el contenido del DPTR en el bus de direcciones y un tiempo después envía el comando de control, /RD, para leer el dato proveniente del buffer de tres estados por el bus de datos; el dato leído se almacena en el registro acumulador, A. En la figura 5.66 se observa el ciclo de lectura efectuado al ejecutarse la instrucción de transferencia de datos MOVX A, DPTR.
16
Conozco el caso de una aplicación que requería usar un microcontrolador de 4 Kbytes. El desarrollador consideró que no tenía ningún sentido aprender el lenguaje ensamblador del μC si podía usar el lenguaje C. El código desarrollado no cupo en los 4 Kbytes, de modo que solicitó un μC con mayor capacidad de memoria (y costo) para realizar el código en ensamblador. Una vez escrito el código en ensamblador, este no sobrepasó 1 Kbyte de memoria. Por supuesto, este es un caso extremo, ya que también hay diseños muy eficientes usando el lenguaje C. La moraleja es tener siempre una idea de la cantidad de información binaria que se convierte a código, ya sea en C o en ensamblador.
grupo editorial patria®
259
5 El popular microcontrolador
Código de operación y operando
Instrucción
Explicación
MOV
DPTR, OP1
10010000 (d15..d8) (d7..d0)
Carga dato inmediato (16 bits) en el registro DPTR.
MOV
R, A
11111000 dddddddd
Carga dato del Acc al registro interno R.
MOV
A, R
11101000 dddddddd
Carga dato del registro interno R al Acc.
MOVX A, DPTR
1110 0000
Transfiere el contenido de la dirección apuntada por el DPTR (A0-A15) al acumulador (ciclo de lectura).
MOVX DPTR, A
1111 0000
Transfiere el contenido del acumulador a la dirección apuntada por el DPTR (A0-A15) (ciclo de escritura).
ANL
A, OP2
0101 1000 dddddddd
AND lógico entre el acumulador y OP2. Afecta registro de estados.
ORL
A, OP2
0100 1000 dddddddd
ORL lógico entre el acumulador y OP2. Afecta registro de estados.
XRL
A, OP2
0110 1000 dddddddd
EX-OR lógico entre el acumulador y OP2. Afecta registro de estados.
JZ
etiqueta
0110 0000 (dddddddd)
Brinca a etiqueta si el acumulador es cero.
0011 0010
Fin de rutina de interrupción.
RETI
Nota: OP1 es dato de 16 bits y DPTR es un registro apuntador de datos de 16 bits. R puede ser un registro interno (R1, R2, R3…). OP2 puede ser un dato de 8 bits o un registro R.
KXYcX,%) :fealekf[\`ejkilZZ`fe\jgXiX\cμG^\ei`Zf[\/Y`kj[\[Xkfjp(-Y`kj[\[`i\ZZ`fe\j% A15, A14
Microprocesador
0000H Deco 2 74139
EPROM 13
A0-A15 D0-D7 /RD /WR
D0 1
A0-A12 D0-D7 /CS /OE EPROM S /OE D0
E
D
3FFFH 4000H +5 V
Puerto de entrada 7FFFH 8000H Puerto de salida BFFFH C000H
Q
CK FFFFH
a)
b)
=`^liX,%-+ J`jk\dXYXjX[f\eleμGZfeki\jg\i`]i`ZfjdXg\X[fjXd\dfi`X#leX
En tanto, la instrucción ANL A, 01H, enmascara el bit D0 del bus de datos, ya que es el único que nos interesa en esta aplicación. La instrucción MOV DPTR, 8000H, actualiza el valor del apuntador de datos con una de las direcciones asignadas en el mapa de memoria al puerto de salida. Por último, con la instrucción MOVX DPTR, A, que también es una instrucción de transferencia externa, el μP ejecuta un ciclo de escritura; el μP coloca en el bus de direcciones el
260
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
INICIO: MOV MOVX ANL MOV MOVX
DPTR, 4000H A, DPTR A, 01H DPTR, 8000H DPTR, A
END
=`^liX,%-, Gif^iXdXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%-+%
Señales del μP
Ciclo de lectura
MOVX A, DPTR tCMD
tAS Dirección (A0-A15) Contenido de DPTR
tAH
(4000H - 7FFFH)
___ Comando de lectura (RD) tACC
tDH
Bus de datos (D0-D7) Datos se transfieren del Acumulador
Datos de entrada
=`^liX,%-- :`Zcf[\c\ZkliXXjfZ`X[fZfecX`ejkilZZ`eDFMO8#;GKI%
contenido del registro DPTR, y un tiempo después activa el comando de control, /WR, para colocar en el bus de datos el contenido del registro acumulador. En la figura 5.67 se observa el ciclo de escritura efectuado al ejecutarse la transferencia de datos externa MOVX DPTR, A. Es importante remarcar que el contenido del bus de direcciones (A0-A15), al realizar los ciclos de lectura o escritura hacia periféricos mapeados de memoria, es el contenido que almacenamos en el registro apuntador de datos DPTR. Una pregunta frecuente al comienzo de los estudios de microprocesadores o microcontroladores es: t ¿El contenido del bus de direcciones no tiene el contenido del contador de programa PC?
Señales del μP
Ciclo de escritura
MOVX DPTR, A tCMD
tAS Dirección (A0-A15) Contenido de DPTR
tAH
(8000H - BFFFH)
___ Comando de escritura (WR) tDS Bus de datos (D0-D7) Datos se transfieren del Acumulador
tDH Datos de salida
=`^liX,%-. :`Zcf[\\jZi`kliXXjfZ`X[fZfecX`ejkilZZ`eDFMO;GKI#8%
grupo editorial patria®
261
5 El popular microcontrolador
La respuesta es sí, el contenido del PC siempre apunta a la dirección de la siguiente instrucción que se va a ejecutar, de modo que se coloca en el bus de direcciones para apuntar a la memoria de programa, ROM. Sin embargo, la colocación del contenido del PC en el bus de direcciones la realiza el μP de manera automática al efectuar el ciclo de instrucción de una CPU, ilustrado en la figura 5.14. Por otro lado, el uso de los buses de direcciones y de datos, asociados con los registros DPTR y acumulador, son producto de la ejecución de las instrucciones de transferencia de datos externa, tanto de lectura como de escritura. Para resaltar el uso de las instrucciones de transferencia citamos otro ejemplo. Entonces, consideremos que tenemos nuestro microprocesador de 8 bits de datos y 16 bits de direcciones, pero ahora tenemos mapeados a memoria un interruptor, un LED rojo, un LED verde, una memoria de EPROM de 8 Kbytes y una memoria RAM de 4 Kbytes; en este caso, los periféricos son mapeados a memoria con una decodificación parcial. La figura 5.68 muestra el diagrama esquemático para este sistema y el mapa de memoria. 13 A15-A13 MP A0-A15 D0-D7 /RD /WR
A0-A12 D0-D7 /CS /OE
8
Deco 74138
3 12 1
D4
/OE
1 D4 D CK
Q
D
Q
A0-A11 EPROM D0-D7 /CS /OE /WE RAM +5 V
S
E
CK
0000H
RAM EPROM Puerto de entrada LED rojo LED verde
1FFFH 2000H 3FFFH 4000H 5F F F H 6000H 7FFFH 8000H 8FFFH A000H BFFFH C000H DFFFH E000H FFFFH
=`^liX,%-/ J`jk\dXYXjX[f\eleμGZfeZ`eZfg\i`]i`ZfjdXg\X[fjXd\dfi`X#leX
Con base en el conjunto de instrucciones de la tabla 5.2, requerimos establecer una rutina que apague ambos LED y lea el estado del interruptor. Si el interruptor es un 1 lógico, enciende el LED rojo, pero si es un 0 lógico enciende el LED verde y escribe un 55H en la dirección 7FH de la memoria RAM. De igual manera que en el ejemplo anterior, hacemos uso de la interfaz de E/S por programa; el listado del programa requerido se representa en la figura 5.69. El programa de la figura 5.69 es muy simple y parecería no tener una aplicación específica; sin embargo, nos introduce en el uso de instrucciones de bifurcación (brinco condicional), con el fin de tomar decisiones, además de realizar una operación lógica y ejecutar una escritura a una localidad de la memoria RAM externa, como lo muestra el diagrama de flujo de la figura 5.70. Con base en lo anterior, vamos a describir este programa por bloques. En el primer bloque del diagrama, correspondiente a las primeras cinco instrucciones del programa, se efectúa el proceso de inicialización, que consiste en apagar ambos LED mediante dos ciclos de escritura. Para realizar estos ciclos de escritura, el bit que nos interesa, que se encuentra en 0 lógico en el acumulador para colocarse en el bus de datos y almacenarse en los flip-flops, es el bit D4 (XXX0XXXX). Por esta razón, el valor que seleccionamos para almacenar en el registro acumulador es 00H. El segundo bloque del diagrama de flujo inicia con la etiqueta LEE_SW del programa, en el cual se lee el dato correspondiente al estado del interruptor, mediante la ejecución de un ciclo de lectura. Una vez que se tiene el dato en el acumulador, se realiza una operación lógica AND entre el acumulador y el valor 00010000B (10H), la cual sirve como máscara del bit que nos interesa, en este caso el bit D4. ¿Por qué el bit D4? Bien, esto se debe a que en el diagrama del circuito de la figura 5.68 usamos el bit D4 del bus de datos tanto para leer el estado del interruptor, en la salida del buffer de tres estados, como para proporcionar la entrada del dato en los flip-flops que encienden los LED. El esquema de la operación lógica AND entre el acumulador y el número 00010000B (10H) como máscara se observa en la figura 5.71.
262
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
INICIO: MOV MOV MOVX MOV MOVX
A, 00H DPTR, 6000H DPTR, A DPTR, 8000H DPTR, A
MOV MOVX ANL JZ
DPTR, 4000H A, DPTR A, 10H LED_VERDE
MOV MKOVX MOV MOV MOVX JZ
DPTR, 6000H DPTR, A A, 00H DPTR, 8000H DPTS, A LEE_SW
MOV MOVX MOV MOV MOVX
DPTR, 6000H DPTR, A A, 10H DPTR, 8000H DPTR, A
MOV MOV MOVX MOV JZ
DPTR, 007H A, 55H DPTR, A A, 00H LEE_SW
LEE_SW:
LED_ROJO:
LED_VERDE:
RAM:
END Inicio
=`^liX,%-0 Gif^iXdXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%-/% Apaga ambos LEDs
Lee estado del interruptor Interruptor en 1 lógico
Interruptor en 0 lógico
Enciende LED rojo
Enciende LED verde
Apaga LED verde
Apaga LED rojo
Escribe a la memoria RAM
=`^liX,%.' ;`X^iXdX[\]claf[\cgif^iXdX[\cX]`^liX,%-0%
grupo editorial patria®
263
5 El popular microcontrolador
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Acc
0
0
0
1
0
0
0
0
Máscara
AND
=`^liX,%.( Fg\iXZ`ec^`ZX8E;ljX[XgXiX\edXjZXiXi\cY`k[\[Xkfj;+% Como sabemos, el resultado de esta operación lógica se almacena de regreso en el acumulador. Por ende, después de la operación lógica AND, el resultado en el acumulador será 10H, si el bit 4 es un 1 lógico, o 00H si el bit 4 es un 0 lógico. El tercer bloque del diagrama de flujo es el símbolo de decisión, el cual corresponde a la instrucción de brinco condicional, JZ (esto significa que brinca a etiqueta si el acumulador es un 0 lógico). Es decir, si el resultado del acumulador es un 0 lógico, el programa brinca a la etiqueta LED_VERDE del programa. Pero, si el resultado es un 1 lógico, el programa continúa con la siguiente instrucción, en este caso MOV DPTR, 6000H, correspondiente a la etiqueta LED_ROJO del programa. Ahora, vamos a suponer que el programa continúa de manera secuencial en la etiqueta LED_ROJO, debido a que el resultado en el acumulador fue diferente de cero (10H). Entonces, en este bloque se realizan dos ciclos de escritura: uno para encender el LED rojo y el otro para apagar el LED verde; para lograr esto, nos aseguramos de que el valor a escribir contenga en el acumulador un 10H, con el fin de encender un LED rojo, y un 00H, para apagar el LED verde. En seguida, escribimos un 00H en el acumulador para forzar al programa que brinque a la etiqueta LEE_SW, para leer otra vez el estado del interruptor. Por otro lado, si el resultado en el acumulador es 00H, después de la instrucción de brinco condicional, el programa brinca a la etiqueta LEE_VERDE. En este bloque, se realizan dos ciclos de escritura: uno para encender el LED verde y el otro para apagar el LED rojo. De igual modo, nos aseguramos que el valor a escribir contenga en el acumulador un 10H, para encender el LED verde, y un 00H, para apagar el LED rojo. Después de esto, el diagrama de flujo continúa con el bloque para escribir a la memoria RAM. En este bloque se realiza un ciclo de escritura, escribiendo el número 55H en la localidad 007FH. Por último, escribimos un 00H en el acumulador, para forzar al programa que brinque a la etiqueta LEE_SW, con el objetivo de leer otra vez el estado del interruptor. Para comprender mejor los ciclos de lectura o escritura a la memoria RAM, podemos usar la sección de transferencia de datos internos y externos del μP que se desarrolla en el CD ROM que acompaña este libro. En esta sección, se pueden ejecutar las instrucciones MOV y MOVX, asociadas con los registros acumulador (ACC) y Apuntador (DPTR). Considerando el ejemplo anterior, primero almacenamos de manera secuencial, mediante la instrucción MOV, el contenido deseado al registro Apuntador, en este caso el valor 7FH, y posteriormente almacenamos el valor 55H en el registro acumulador, tal como se muestra en la figura 5.72.
=`^liX,%.)
264
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
=`^liX,%.*
Una vez que los registros internos ACC y apuntador tienen los valores adecuados, ejecutamos la instrucción MOVX, Apuntador, ACC, equivalente a la instrucción MOVX DPTR, A, del conjunto de instrucciones de la tabla 5.2, con la cual se realiza un ciclo de escritura, y escribimos el valor 55H en la dirección 7FH de la memoria RAM. En la figura 5.73 se ilustra la ejecución de esta instrucción de transferencia.
Hardware, software y firmware Por lo general, los sistemas basados en microprocesadores cuentan con una cantidad mayor de memoria RAM que de memoria ROM. Esto se debe a que los programas que controlan el hardware se almacenan en la memoria ROM, mientras que la memoria RAM se usa para el almacenamiento temporal. Al programa de control se le denomina firmware, debido a que se encuentra almacenado firmemente, de manera permanente, en la memoria ROM. Si hiciéramos una analogía de lo antes expuesto, con el hecho de escribir una carta, podríamos decir que la hoja de papel sería el hardware, las palabras escritas con lápiz serían el software y las palabras escritas con tinta serían el firmware. De esta forma, con esta sección concluimos los fundamentos de los sistemas basados en microprocesadores, lo cual nos sirvió como introducción para entrar al universo de los populares microcontroladores. En la siguiente sección, empezamos a examinar la familia de microcontroladores MCS-51, enfocándonos en el 80C31BH de Intel y, posteriormente, en el 89C2051 de Atmel.
MICROCONTROLADORES
DE
8
BITS
¿Qué es un microcontrolador? El microcontrolador ha estado entre nosotros por cerca de cuatro décadas. En esta era de vertiginoso avance tecnológico, donde los dispositivos electrónicos pueden llegar a ser obsoletos no mucho tiempo después de que se colocaron en el mercado, esto es notable. Su longevidad se atribuye a varias razones. Para empezar, los microcontroladores de la actualidad no son iguales a los que aparecieron a principios de la década de 1970. Los de hoy en día son más pequeños, más rápidos, más baratos, más fáciles de programar, requieren menos potencia y ofrecen mayor cantidad de periféricos internos. Por tanto, son una opción ideal para resolver problemas. Pero, ¿qué tipo de problemas pueden resolver estos?, ¿qué es en sí un microcontrolador? Bien, un microcontrolador es una computadora autocontenida en un circuito integrado, la cual incorpora todos los componentes básicos de un sistema basado en un microprocesador o de una computadora personal, pero a una escala mucho menor. Por este motivo, con frecuencia, a los microcontroladores se les denomina dispositivos de un solo CI o microcomputadoras. Por supuesto, que los microcontroladores tienen recursos mucho más limitados que las computadoras personales; no obstante, en términos funcionales, un microcontrolador es un circuito integrado programable que puede utilizarse para controlar un sistema o un proceso. Las aplicaciones típicas de los microcontroladores son como controladores embebidos o integrados en un proceso o sistema grande, del cual controlan solo una parte. Los sistemas pueden ser un electrodoméstico, un automóvil,
grupo editorial patria®
265
5 El popular microcontrolador
instrumentos científicos o médicos, o los periféricos de una computadora. El diseño de los microcontroladores está orientado a proveer soluciones de bajo costo, de tal manera que su uso reduzca drásticamente los costos de diseño y el número de componentes de un proyecto. Es importante hacer notar que los microcontroladores no funcionan aislados; como su nombre lo sugiere, sino que controlan otros dispositivos. De la manera más simple, el microcontrolador es un sistema que toma decisiones basado en las condiciones de señales externas, es decir, acepta entradas provenientes de otros dispositivos y provee salidas a otros dispositivos dentro del mismo sistema, con base en sus decisiones. Por ejemplo, un microcontrolador puede aceptar como entrada una señal proveniente de un interruptor y activar como salida un LED. Asimismo, si el interruptor se presiona, puede instruirse al microcontrolador para que se ilumine el LED, donde el interruptor y el LED podrían ser parte de un sistema de reproducción de discos compactos (compact disc) en el sistema de sonido de un automóvil. Otro ejemplo es el control de un sistema, donde la entrada de un microcontrolador podría ser el umbral 1 o 0 lógicos que detecta el nivel de un contenedor industrial, mientras que la salida podría ser un LED utilizado como alarma en el tablero de control de una planta y la activación de una válvula que mantenga el contenedor con el nivel requerido. Físicamente, un microcontrolador es un circuito integrado con terminales a sus lados, conocidas en México como pines, derivado del inglés pins. Los microcontroladores se usan para proporcionar el voltaje de alimentación, la tierra, el reloj, los puertos de E/S, las señales de petición de interrupción, la señal de reset y las señales de control. En contraste, el microprocesador, por lo general, tiene terminales para buses de direcciones y de datos, en lugar de puertos de E/S. Los microcontroladores por lo común incluyen una CPU, memorias, puertos de E/S de propósito general y periféricos, como se observa en la figura 5.74.
Puertos Periféricos E/S Memoria
CPU =`^liX,%.+
Arquitecturas de procesadores Como la mayoría de los grandes inventos, las computadoras tienen muchos padres y madres. En sus inicios, por lo común un grupo de hombres agrupados en grandes habitaciones realizaban de forma manual cálculos, usando ciertos procedimientos de operación estandarizados, para producir tablas balísticas; esos hombres eran conocidos como los computers. Sin embargo, la Primera Guerra Mundial puso a la mayoría de estos hombres en uniforme y los sacó de esas oficinas; de esta manera, las mujeres fueron reclutadas para realizar esta clase de cálculos. A lo largo del tiempo, varias máquinas mecánicas y electromecánicas fueron creadas por diferentes personalidades con alta inventiva, como Charles Babbage y Konrad Zuse. No obstante, la computadora que marcó el inicio de la carrera computacional moderna fue la computadora ABC, creada por el Dr. Atanasoff y su estudiante Clifford Berry, en el entonces Iowa
266
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
State Collage, entre los años 1939 y 1942. Esta computadora usaba alrededor de 300 tubos al vacío (los elementos activos predecesores de los transistores), pero no era programable. Aunque funcionaba, fue descartada muy rápido. Mientras tanto, bajo la dirección de John Mauchly y J. Presper Eckert, en la Moore School of Electrical Engineering (hoy día, Universidad de Pennsylvania), se desarrollaba y construía la primera computadora electrónica: la ENIAC (por sus siglas en inglés, Electronic Numerical Integrator and Computer). La ENIAC era un monstruo de máquina de propósito general que contenía cerca de 18 000 tubos al vacío, pesaba 30 toneladas y consumía 150 kW de electricidad. Aunque la ENIAC tenía una capacidad de cómputo mayor que cualquier máquina de su tiempo, ya que podía ejecutar 5000 sumas o restas por segundo, tampoco era programable.17 Con los años la evolución de las computadoras seguía su marcha; así, investigadores de las universidades de Princeton y Harvard, en Estados Unidos de América, desarrollaron arquitecturas de computadoras que podían usarse para el cálculo de tablas relacionadas con artillería naval. Estas arquitecturas han sido muy importantes en el desarrollo de las computadoras y, en consecuencia, en el desarrollo de los microprocesadores y microcontroladores. Por lo general, los microprocesadores usan arquitecturas Von Neumann, mientras que los microcontroladores utilizan, de manera más frecuente, la arquitectura Harvard o Harvard modificada. Por tanto, describimos con más detalle estas arquitecturas.
Arquitectura Princeton o Von Neumann La característica principal de la arquitectura computacional desarrollada en la Universidad de Princeton era que esta computadora tenía una memoria común en la cual se podía almacenar el programa de control, así como otras variables y estructuras de datos; es decir, era programable. A esta arquitectura se la llama Von Neumann, en honor de John von Neumann, quien escribió un reporte describiendo su funcionamiento.18 Para su comprensión, en la figura 5.75 se muestra el diagrama a bloques de la arquitectura Von Neumann. Decodificador de instrucciones
CPU y registros
Datos Unidad de interfaz de memoria
Direcciones
Memoria de programa Memoria de variables (datos)
Control Memoria de estructura de datos
=`^liX,%., 8ihl`k\ZkliXMfeE\ldXee% Cabe resaltar que la arquitectura Von Neumann tiene un solo espacio de memoria en donde se almacenan las instrucciones del programa y los datos. En esta arquitectura, la unidad de interfaz de memoria es la responsable de arbitrar el acceso a este espacio de memoria, para determinar entre leer una instrucción o leer o escribir un dato con la CPU y sus registros. Asimismo, tiene un bus de datos mediante el cual se realizan las operaciones de lectura, tanto 17
18
De acuerdo con Jack Ganssle, en su artículo “Microprocessors change the world”, se estima que el iPhone tiene alrededor de 32 mil millones de transistores. De esta forma, si construyéramos un iPhone con los elementos activos (tubos al vacío) que se usaron para construir la ENIAC, el iPhone tendría el tamaño de un edificio de 170 pisos, su peso sería de alrededor de 2 500 portaviones de carga clase Nimitz, los cuales tienen desplazamientos de 100 mil toneladas; y una potencia del orden de los terawatts, requiriendo la salida de 500 plantas nucleoeléctricas como la Olkiluoto (la más grande del mundo en su clase). Por supuesto, enviar mensajes a casa usando un iPhone con tecnología ENIAC solo para decir voy en camino, desmotivaría a cualquiera. Mauchly y Eckert propusieron una computadora más avanzada que la ENIAC, conocida como la EDVAC, la cual incorporaba el concepto de almacenamiento de programa; es decir, era programable. Pero, desafortunadamente no la patentaron en su momento. Por lo que a esta arquitectura se le llamó Von Neumann debido a que John von Neumann, quien trabajaba como consultor de la Moore School of Electrical Engineering, donde se construyó la ENIAC, escribió un reporte acerca de la EDVAC resumiendo su diseño, pero olvidó dar crédito a Mauchly o a Eckert por la idea. Si este error fue por omisión o deliberado no se sabe, pero mucha amargura y resentimiento resultó de esto.
grupo editorial patria®
267
5 El popular microcontrolador
para las instrucciones como para los datos. Esto significa que cada vez que la CPU realiza un ciclo de instrucción de la memoria de programa, es posible que posteriormente pueda realizar una operación de lectura o escritura de la memoria de datos. Pero, la CPU debe esperar a que se terminen estas operaciones subsiguientes, antes de ejecutar otro ciclo de instrucción (búsqueda-decodificación-ejecución) de la próxima instrucción contenida en el programa. En resumen, con esta arquitectura no es posible leer instrucciones y datos de manera simultánea, pero su ventaja radica en su simplicidad y costo reducido, razón por la cual esta arquitectura es la más común en los microprocesadores. En la figura 5.76 se muestra el diagrama de bloques de la arquitectura Von Neumann acomodando los buses de la manera en que analizamos los sistemas basados en microprocesadores.
Bus de datos Memoria de datos
CPU
Memoria de ... instrucciones
Puertos de E/S
Bus de direcciones Bus de control Reloj
=`^liX,%.- 8ihl`k\ZkliXMfeE\ldXeeZfecfjYlj\j[\[`i\ZZ`fe\j#[XkfjpZfekifcXii\^cX[fj[\cX]fidX\ehl\j\[\jZi`Y\ecfjj`jk\dXj YXjX[fj\ed`ZifgifZ\jX[fi\j%
Arquitectura Harvard Comparando la arquitectura Von Neumann con la arquitectura Harvard, destaca de esta última el hecho de que presenta espacios de memoria separados: uno para instrucciones de programa y otro para datos, como se observa en la figura 5.77. La arquitectura Harvard tiene dos o más buses de datos internos que le permiten acceder de manera simultánea tanto a la memoria de instrucciones como a la de datos. Así, la CPU realiza la búsqueda-decodificación de instrucciones mediante el bus de instrucciones. Si la instrucción decodificada requiere una operación en la memoria de datos, la CPU puede realizar la próxima búsqueda-decodificación de la instrucción del programa mientras usa el bus de datos, para efectuar su operación en la memoria de datos. Lo anterior incrementa la velocidad del tiempo de ejecución. Nada es gratis, para realizar esto, también se incrementa la complejidad en la circuitería o hardware.
Memoria de programa
Bus de instrucciones
Bus de datos
Bus de direcciones
Bus de direcciones
CPU Bus de control
Bus de control
Memoria de datos
=`^liX,%.. 8ihl`k\ZkliX?XimXi[%J\ZXiXZk\i`qXgfigi\j\ekXi[fj\jgXZ`fj[\d\dfi`X`e[\g\e[`\ek\j#lefgXiX`ejkilZZ`fe\jpfkifgXiX[Xkfj%
268
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
En resumen, la arquitectura Harvard tiene como ventaja principal la ejecución de menos ciclos de instrucción que la arquitectura Von Neumann. Por tanto, la pregunta obligada es: entonces, ¿por qué la mayoría de los microprocesadores no tiene esta arquitectura? Bien, se prefirió la arquitectura Von Neumann a la arquitectura Harvard debido a la falta de fiabilidad de la tecnología de ese tiempo. Ya que se encontró que la arquitectura de una sola memoria era más adecuada para las computadoras, debido a que permitía mayor flexibilidad en el desarrollo de software, principalmente en el área de sistemas operativos en tiempo real, dado que el contenido del contador de programa (PC) y los datos eran accesibles al programador. En este sentido, las arquitecturas Harvard asumen que únicamente almacenan instrucciones en el espacio asignado a la memoria de programa; sin embargo, si un dato se declara como constante y este se almacena en la memoria ROM, entonces ¿cómo se accede a ese dato? Existen diferentes soluciones, pero en la actualidad los lenguajes de alto nivel generan de forma automática el código adecuado para los requerimientos de hardware. Hoy día, los procesadores digitales de señales (DSP, por sus siglas en inglés) son un tipo especial de procesadores que presentan arquitecturas Harvard y que, por lo general, son usados para realizar operaciones matemáticas complejas, como el diseño de filtros digitales. Los microcontroladores, por su parte, aunque pueden tener esta arquitectura, se usan cuando se requiere el control de un sistema o proceso, o parte del mismo.19 La figura 5.78 muestra una aplicación de un DSP y el diagrama de bloques de una aplicación de un microcontrolador.
[kH
z]
Tiempo
(μs)
Frec
Coeficientes
uen
cia
Sensor 1
WT
0.0015 0.0010
800
0.0005 0
600 0
100
Sensor 2
Microcontrolador Ecuación de control
400 200
300
200 400
Acción ejecutada
Actuador 500
X
Y
=`^liX,%./ X 8gc`ZXZ`e[\le;JGi\Xc`qXe[ffg\iXZ`fe\j\e\c[fd`e`f[\ck`\dgfpcX]i\Zl\eZ`X% Y 8gc`ZXZ`ekg`ZX[\Zfekifc[\led`ZifZfekifcX[fi%
Microcontroladores de 8, 16 y 32 bits Hoy día, en el mercado existe una gran variedad de microcontroladores; los hay de diferentes tamaños, arquitecturas y costos. Aunque la primera generación de microcontroladores inició de 8 bits, en la actualidad existen en el mercado microcontroladores de 16 y hasta 32 bits, como se ilustra en el diagrama de bloques de la figura 5.79. Sin embargo, en aplicaciones de sistemas integrados, los microcontroladores de 8 bits son los más ampliamente usados, por lo que exceden en volumen a las computadoras personales y a los servidores. Cada año se construyen y utilizan millones de microprocesadores y miles de millones de microcontroladores. Recientemente, la amplia disponibilidad y competitividad en precio de los microcontroladores de 32 bits ha hecho creer a algunos usuarios que estos sustituirán a los microcontroladores de 8 bits. No obstante, el microcontrolador de 8 bits se niega a dejar el mercado. ¿Por qué? Bien, podemos enumerar algunas de las razones más importantes: 1. El costo manda. Resulta más económico resolver un problema usando un microntrolador de 8 bits que uno de 32 bits.
19
En la actualidad, en el mercado existen circuitos integrados denominados DSC (Digital Signal Controllers), los cuales incluyen las características de procesamiento de un DSP, con las características de control de un microcontrolador. Así, la saga de este libro podría estar relacionada con los DSP y DSC.
grupo editorial patria®
269
5 El popular microcontrolador
Bus de datos (8, 16 o 32 bits)
CPU
Memoria
Bus de direcciones (cualquier número de bits)
=`^liX,%.0 ;`X^iXdX[\Ycfhl\jhl\`cljkiXXcfjd`ZifZfekifcX[fi\j[\/#(-p*)Y`kj% 2. Los sistemas de control requieren interfaces de entrada simples, por ejemplo, relevadores, teclados, sensores, interruptores, comunicaciones de relativa baja velocidad; las salidas normalmente son LEDs y actuadores básicos como motores y solenoides. 3. El conjunto de instrucciones de un microcontrolador de 32 bits es más grande que el de 8 bits; por ende, el código de las aplicaciones es aproximadamente 4 veces mayor. 4. Los microcontroladores de 32 bits consumen más potencia. Por esta razón, los sistemas integrados que usan baterías normalmente usan microcontroladores de 8 bits.
Mercado en movimiento: microcontroladores de 8 bits A pesar de su amplia permanencia, el mercado de microcontroladores de 8 bits continúa expandiéndose y los fabricantes siguen haciendo mejoras a sus componentes. En años recientes, ha habido una gran innovación en estos. Por ejemplo, el microcontrolador original 8051 de Intel opera de 1-12 MHz, y su ciclo de máquina consiste de 12 periodos del circuito de reloj; sin embargo, ahora existen microcontroladores 8051 que operan a 100 MHz y el ciclo de máquina equivale a un periodo del circuito de reloj. ¡1 200 veces más rápido! Además, los microcontroladores de 8 bits son más fáciles de usar y sus herramientas de desarrollo tienen un alto grado de madurez y un costo muy bajo. Por los motivos expuestos antes, es que existe una gran cantidad de código disponible (legacy code) para muchos microcontroladores. Por ejemplo, se estima que hay aproximadamente 300 millones de horas, en tiempo de desarrollo, invertido en escribir código solo para el 8051. Esta es una de las principales razones por la cual la arquitectura del 8051 continúa usándose en una gran cantidad de aplicaciones.
Criterios para seleccionar un microcontrolador La selección de un microcontrolador depende de su aplicación; pero, en términos generales, también requiere cumplir con las necesidades de cómputo de la tarea específica a realizar de manera eficiente y económica. Algunas de las características importantes a considerarse son: t t t t t t t
270
Velocidad de operación. Empaquetado. Consumo de potencia. Cantidad de memoria RAM/ROM interna. Número de pines de E/S, temporizadores, interrupciones (periféricos internos). Facilidad de migrar a un componente con mayores recursos. Costo por unidad.
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Otros puntos importantes que también deben considerarse a la hora de seleccionar un microcontrolador son los siguientes: t Disponibilidad de las herramientas de desarrollo, como ensambladores, compiladores, simuladores, emuladores, etcétera. t Amplia disponibilidad de fabricantes de microcontroladores. En este sentido, la familia del microcontrolador 8051 tiene el número más grande y diversificado de fabricantes o proveedores, entre los que destacan: Intel (original), Atmel, Philips/Signetics, AMD, Infineon (antes Siemens), Matra y Dallas Semiconductor/Maxim, entre otros. Lo anterior sirve de preámbulo para describir al popular microcontrolador 8051, que analizamos en el siguiente apartado.
El popular microcontrolador 8051 Arquitectura de hardware del microcontrolador 8051 En 1981 Intel introdujo al mercado el microcontrolador 8051, referido sencillamente como el MCS-51. Este microcontrolador se hizo bastante popular después de que Intel le permitió a otros fabricantes diseñar y comercializar cualquier modalidad del 8051, siempre y cuando se conservara la compatibilidad de código. Los MCS-51 contienen dos sistemas básicos: uno constituido por la CPU y el otro por sus periféricos. En la figura 5.80 se observa el diagrama de bloques de la arquitectura del microcontrolador 8051.
INT1 INT0 Temporizador 2 (8032/8052) Temporizador 1 Temporizador 0 Puerto serial
Control de interrupciones
Otros registros
128 bytes de RAM (8032/8052)
ROM 0K - 8031 0K - 8032 4K - 8051 8K - 8052
128 bytes de RAM
Temporizador 2 (8032/8052)
T2 T2EX
Temporizador 1
T1
Temporizador 0
T0
CPU
Control de bus
Oscilador
EA RST
Puerto de E/S
ALE PSEN
P0
P1
P2
Puerto serial
P3
TX0
RX0
=`^liX,%/' ;`X^iXdX[\Ycfhl\j[\cXXihl`k\ZkliX[\cd`ZifZfekifcX[fi/',(%
grupo editorial patria®
271
5 El popular microcontrolador
Las características más importantes en la arquitectura de la familia MCS-51 original son: t t t t t t t t t t t
CPU de 8 bits. Direccionamiento de 64 Kbytes de ROM Direccionamiento de 64 Kbytes de RAM y/o puertos de E/S. Reloj de 3.5 MHz a 20 MHz. 32 líneas de E/S. Unidad de procesamiento booleano. Dos interrupciones externas. Un puerto serie asíncrono. Hasta 8 Kbytes de memoria ROM o EPROM interna o sin estas. Hasta 256 bytes de localidades de memoria RAM interna. Hasta tres temporizadores/contadores.
Dadas sus características y desempeño, existe una gran variedad de circuitos integrados del microcontrolador 8051. Por este motivo, en la tabla 5.3 solo se listan los más representativos de la familia de Intel.
Dispositivo
Versión sin ROM
Versión EPROM
ROM bytes
RAM bytes
Puertos de E/S (8 bits)
Temporizadores/ contadores
Fuentes de interrupción vectores
8051
8031
----
4K
128
4
2
6/5
8051AH
8031AH
8751H 8751BH
4k
128
4
2
6/5
8052AH
8032AH
8752BH
8K
256
4
3
8/6
80C51BH
80C31BH
87C51BH
4K
128
4
2
6/5
80C52
80C32
-----
8K
256
4
3
8/6
83C51FA
80C51FA
87C51FA
8K
256
4
3
14/7
Modos de ahorro de energía
V
KXYcX,%* D`ZifZfekifcX[fi\jD:J$,(d}ji\gi\j\ekXk`mfj[\cX]Xd`c`X@ek\c%
Todos los microcontroladores de la familia MCS-51 de Intel ofrecen diferentes combinaciones de memoria de programa, la cual puede estar incorporada en el circuito integrado; la versión con ROM es el 8051; la versión con EPROM es el 8751, y la versión sin ROM es el 8031. La memoria RAM incluida en el circuito integrado puede ser de 128 bytes, 2 temporizadores/contadores y dos interrupciones externas. Pero, también existe una versión con mayor capacidad: el 8052, el cual tiene hasta 8 Kbytes de memoria ROM, 256 bytes de memoria RAM y 3 temporizadores/ contadores. Asimismo, cada miembro de la familia MCS-51 cuenta con una versión CMOS de bajo consumo de energía, resaltada en la tabla 5.3 como la familia 80C51BH. Es práctica común utilizar el término “8051” para referirnos a toda la familia de microcontroladores MCS-51. Sin embargo, cuando se diseña una versión mejorada de la básica suele usarse el número específico de circuito integrado. Entonces, ¿cuándo se diseña con la versión 80C51BH? Bien, por lo general, esta versión se utiliza cuando los programas ya han sido depurados de tal manera, que ya no habrá ningún cambio en ellos y se manda programar con el fabricante. Una variante de esta versión es la programable solo una vez, llamada OTP (One-Time- Programable); la diferencia respecto de la versión ROM, es que la programación en la OTP se realiza después de que se construyó el microcontrolador. Por otro lado, cuando se está desarrollando una aplicación y se realizan modificaciones en los programas, es práctica común usar la versión EPROM (87C51BH), la cual requiere de un equipo programador y de un borrador de rayos ultravioleta UV-EPROM, el cual toma alrededor de 20 minutos en borrar un dispositivo. También es muy frecuente usar la versión sin ROM (80C31BH), la cual necesita que se le añada una memoria externa ROM/ EPROM al microcontrolador. Otros fabricantes, como Atmel, cuentan con versiones con memorias de programa tipo flash, como el microcontrolador AT89C51, con 4 Kbytes de memoria flash, o la versión económica y de bajo voltaje de
272
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
alimentación (2.4 V a 5.5 V): el microcontrolador AT89C2051 o AT89LP2052 con 2 Kbytes de memoria flash. Con estas opciones de memoria flash no es necesario usar un equipo independiente para borrar la memoria, incluso la versión AT89LP2052 es in-system programable, con lo cual es posible programar el microcontrolador una vez que se encuentra soldado y funcionando en una tarjeta. En el diagrama de bloques de la figura 5.81 se muestra con más detalle la arquitectura de hardware del 8051. P0.0-P0.7
P2.0-P2.7
Port 0 Drivers
Port 2 Drivers
Port 0 Latch
Port 2 Latch
VCC VSS
RAM address Register
RAM
ROM/ EPROM/ FLASH
Stack Pointer
ACC
B Register
TMP2
Program Address Register
TMP1
ALU
PCON
SCON
TMOD
TCON
T2CON
TH0
TL0
TH1
SBUF
IE
IP
Buffer
TL1 PC Incrementer
Interrupt, Serial Port, and Timer Blocks
Program Counter
PSW _____ PSEN ALE ___ EA RST
Timing and Control
Instruction Register
DPTR
PD Port 1 Latch
Port 3 Latch
Port 1 Drivers
Port 3 Drivers
Oscillator
XTAL1
XTAL2
=`^liX,%/( ;`X^iXdX[\Ycfhl\jZfedXpfi[\kXcc\[\cXXihl`k\ZkliX[\_Xi[nXi\[\cd`ZifZfekifcX[fi/',(% La arquitectura de hardware del 8051 consta de una CPU de 8 bits, memoria para datos tipo RAM y memoria para programa tipo ROM/EPROM/FLASH, puertos de entrada/salida, registros, un oscilador, la lógica necesaria para realizar las funciones de los periféricos y una sección de temporización y control. Estos elementos se comunican median-
grupo editorial patria®
273
5 El popular microcontrolador
te un bus interno de 8 bits, el cual se comunica con el exterior haciendo uso de un puerto de E/S del microcontrolador (puerto 0), cuando se desea una expansión de memoria o de puertos de E/S.
CPU del 8051 La familia de microcontroladores MCS-51/8051 tiene una CPU de 8 bits; consta de una ALU y registros asociados de 8 bits como A, B, PSW, SP, y dos registros de 16 bits: el PC (contador de programa) y el DPTR (apuntador de datos). La vasta mayoría de registros es de 8 bits; incluso el PC y el DPTR, están compuestos, cada uno, por dos registros de 8 bits. El 8051 tiene una unidad de control microprogramada, es decir, cada instrucción en la CPU se divide y es implementada por una secuencia de una o más microoperaciones; en este caso, cada microoperación se asocia con un conjunto de líneas de control, las cuales al activarse causan que se realice la microoperación. Esta sección de control es la parte más compleja del microcontrolador. Asimismo, todos los microcontroladores MCS-51 tienen un oscilador interno, el cual puede usarse, si se desea, como fuente de reloj para la CPU; por lo general, este se controla a través de un cristal y capacitores de estabilización. En el caso de los microcontroladores de Intel, la frecuencia nominal del cristal es de 12 MHz; no obstante, hay versiones de Intel, como el 80C31BH-1, que trabajan hasta 16 MHz. Asimismo, otros fabricantes, como Atmel, usan cristales de hasta 24 MHz. Cuando se utiliza un cristal de cuarzo, los capacitores de estabilización, C1 y C2, típicamente son de 30 pF, y cuando se utiliza un resonador son de 47 pF. La figura 5.82 muestra las fuentes de reloj para un 8051 cuando se usa un cristal de cuarzo o un resonador de cerámica, y la opción usando un generador externo.
MCS-51
Cristal de cuarzo o resonador de cerámica XTAL2 C1
MCS-51 Sin conexión
XTAL2
Señal de reloj externo
C2 XTAL1
XTAL1
GND
GND
=`^liX,%/) =l\ek\j[\i\cfagXiXled`ZifZfekifcX[fi/',(%
Ciclos de máquina Un cristal de 12 MHz genera 12 millones de ciclos de reloj por segundo. Estos ciclos forman la base de sincronización para cada operación del 8051 y definen la secuencia de estados que conforman un ciclo de máquina. Por lo común, un ciclo de máquina consiste de una secuencia de seis estados, numerados del S1 al S6. Cada estado, por su parte, está constituido por dos periodos del oscilador, divididos como fase 1 y 2 (P1 y P2). Por tanto, un ciclo de máquina se compone de 12 periodos del oscilador, como se ilustra en la figura 5.83. Es importante resaltar que para llevar a cabo la operación discreta de una instrucción, ya sea la búsqueda, la decodificación o la ejecución, se requiere de un estado S, es decir, de dos periodos del oscilador. En otras palabras, con tres estados podemos ejecutar una instrucción completa (búsqueda-decodificación y ejecución). Si la instrucción es muy simple y consta de un solo byte, como la instrucción INC A (incrementa el acumulador), los tres primeros estados
274
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Un ciclo de máquina
S1 P1
S2 P2
P1
S3 P2
P1
S4 P2
P1
S5 P2
P1
S6 P2
P1
S1 P2
P1
P2
Osc
=`^liX,%/* :`Zcf[\d}hl`eX[\cD:J$,(Zfejk`kl`[fgfi()g\i`f[fj[\cfjZ`cX[fi%
Un ciclo de máquina S1 P1
S2 P2
P1
S3 P2
P1
S4 P2
P1
S5 P2
P1
S6 P2
P1
S1 P2
P1
P2
OSC (XTAL2) ALE Lee código de operación S1
S2
Lee próximo código de operación (ignorado) S3
S4
S5
Lee próximo código de operación otra vez S6
S1
1 BYTE, 1 CICLO DE INSTRUCCIÓN, Por ejemplo INC A Lee código de operación S1
S2
Lee segundo byte S3
S4
Lee próximo código de operación otra vez S5
S6
S1
2 BYTES, 1 CICLO DE INSTRUCCIÓN
=`^liX,%/+ J\Zl\eZ`X[\cZ`Zcf[\`ejkilZZ`eYjhl\[X$[\Zf[`]`ZXZ`e$\a\ZlZ`e gXiX\cd`ZifZfekifcX[fi/',(%
del ciclo de máquina son suficientes para ejecutar la instrucción. Sin embargo, si la instrucción es de dos bytes, el segundo byte es leído en el estado S4 del mismo ciclo de máquina, como lo ilustra la figura 5.84. Si la instrucción es de un byte, aún se lleva a cabo la búsqueda del siguiente byte en el estado S4, pero el byte leído es ignorado y el contador de programa, PC, no se incrementa. Debido a que las señales de sincronización generadas por el oscilador interno del microcontrolador no son accesibles al diseñador en los pines disponibles, se toman como referencia las señales de los pines XTAL2 del oscilador y una señal denominada ALE (Address Latch Enable). En este caso, ALE es activada normalmente dos veces cada ciclo de máquina, esto es, durante los estados S1P2 y S2P1 y S4P2 y S5P1. Una de las formas de saber si el circuito oscilador se encuentra trabajando correctamente, consiste en medir la frecuencia de la señal de ALE, la cual debe ser 1/6 de la frecuencia del oscilador; por tanto, la frecuencia de la señal de ALE para un cristal de12 MHz sería de 2 MHz. Como comentamos antes, la frecuencia típica de operación de los microcontroladores de Intel es de 12 MHz; como consecuencia, su periodo, T, de un ciclo de reloj está dado por T 1 /f 83.33 ns, y un ciclo de máquina duraría
grupo editorial patria®
275
5 El popular microcontrolador
83.33 ns r 12 1 μs.20 La mayoría de las instrucciones del 8051 se ejecutan en un ciclo de máquina, a excepción de las instrucciones de multiplicación y división, las cuales toman cuatro ciclos de máquina.
ALU La ALU del MCS-51 realiza operaciones lógicas y aritméticas con variables de 8 bits. Las operaciones aritméticas que puede ejecutar son suma, resta, multiplicación y división, y las operaciones lógicas son AND, OR, EX-OR, así como rotar, borrar y complementar. Además, la ALU atiende las operaciones de brincos condicionales. Una característica importante y única de la arquitectura de hardware del 8051 es que la ALU puede manipular tanto datos de 8 bits como de 1 bit. Así, bits individuales pueden ser puestos a cero (borrados), puestos a uno, rotados, complementados, transferidos, probados y usados en operaciones lógicas de bits.
Acumulador El acumulador es un registro de 8 bits, el cual se abrevia como ACC o simplemente A. El acumulador es uno de los operandos; en particular, es el que recibe el resultado de todas las operaciones aritméticas. El acumulador puede ser fuente o destino para las operaciones lógicas de la ALU y para un número especial de instrucciones de transferencia, de acuerdo con el formato que se muestra en la figura 5.85.
INSTRUCCIÓN
DESTINO,
FUENTE
=`^liX,%/, =fidXkf[\`ejkilZZ`e`e[`ZXe[fcfjfg\iXe[fj]l\ek\p[\jk`ef% Es importante resaltar que el acumulador es el único registro por el cual se puede tener acceso hacia el exterior del microcontrolador. Algunas operaciones se realizan solo con el acumulador; por ejemplo: rotar, cálculo de paridad, prueba de cero, etcétera. Otro registro, independiente del acumulador, que se utiliza con frecuencia para efectuar las operaciones de multiplicación y división, es el registro B. Con otras instrucciones, el registro B funciona como un registro de propósito general.
Registro PSW El registro PSW (Program Status Word) es el registro de banderas y consta de 8 bits. El PSW contiene información relacionada con el estado del programa. En la figura 5.86 se ilustra con detalle el registro PSW.
Otros registros de la CPU El registro apuntador de pila o SP (Stack Pointer) es un registro de 8 bits. Este registro se incrementa (SP SP 1) cada vez que se realiza la instrucción PUSH o CALL y se decrementa (SP SP – 1) cada vez que se realiza la instrucción POP o RET. La pila o stack reside en cualquier parte de la RAM interna, mientras que el SP es inicializado en la dirección 07H de la RAM interna, después de que se aplica una señal de RESET, lo anterior causa que el stack empiece en la localidad 08H. Por otra parte, el registro apuntador de datos, DPTR, es un registro de 16 bits compuesto por dos registros de 8 bits: el DPL, que es el byte bajo, y el DPH, que es el byte alto. Se utiliza para acceder los 64 Kbytes de la memoria RAM 20
Los microcontroladores 8051 de Intel, como el 80C51BH, y de Atmel, como el AT89C51, utilizan 12 periodos de oscilador para efectuar un ciclo de máquina. Sin embargo, los avances en la tecnología de circuitos integrados y de diseño de CPU han permitido a otros fabricantes del 8051, como Philips, usar 6 periodos del oscilador, como en el μC P89C54X2, y a los μC de Dallas Semiconductors, como el DS5000, usar 4 periodos del oscilador, y la serie DS89C420/30/40/50 también de Dallas Semiconductors, usar solo un periodo del oscilador. Un microcontrolador de Intel que opera con un cristal de 12 MHz realiza la mayoría de sus instrucciones en 1 μs, mientras que un microcontrolador de Dallas trabajando con el mismo cristal podría efectuar las mismas instrucciones en tan solo 83.3 ns; lo anterior, por el precio de un café de Sanborns. ¡Sorprendente!
276
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
CY
AC
F0
RS1
RS2
0V
CY Bandera de acarreo (Carry flag) Indica si hubo acarreo o no en el bit 7 como resultado de alguna operación aritmética, también sirve como acumulador de un bit. Esta bandera no se ve afectada con las instrucciones de INC o DEC. AC Bandera auxiliar de acarreo (Auxiliary Carry flag) Bandera de acarreo auxiliar, esta bandera funciona igual que la bandera de CY, pero indica si hubo o no acarreo del bit 3 al 4 para operaciones BCD. F0 Esta es una bandera de propósito general designada para el usuario. RS1, RS0 Bits de selección de banco de registro. Estos bits indican el banco de registros que se está utilizando. OV Bandera de sobreflujo (Overflow flag) Esta bandera indica si hubo un desbordamiento del bit 7 a causa de operaciones aritméticas. En suma o resta este bit sirve para hacer operaciones con signo. - Bit reservado P Bandera de paridad (Parity flag) Indica si el número de unos en el acumulador es par o non, esto es, señala la paridad par.
-
P
RS1
RS2
0 0 1 1
0 1 0 1
BANCO DE REGISTROS Banco 0 Banco 1 Banco 2 Banco 3
=`^liX,%/- ;\kXcc\[\ci\^`jkifGJN%
externa o periféricos mapeados a memoria. Su función es mantener una dirección de 16 bits durante un ciclo de lectura o escritura del microcontrolador. Si se requiere, el DPTR se puede manipular como dos registros independientes de 8 bits. El contador de programa, PC, es el otro registro de 16 bits. Este registro también está conformado por dos registros de 8 bits: PCL, que es el byte bajo, y PCH, que es el byte alto. Se usa para acceder a los 64 Kbytes de memoria de programa externa. Se inicia en la dirección 0000H después que se aplica la señal de RESET. Los MCS-51 contienen 4 bancos de 8 registros, de 8 bits cada uno; estos registros están numerados del R0 al R7, de igual manera que en cada uno de los bancos. De los cuales, en un instante solo puede estar activado uno de los cuatro bancos. El banco de registros se selecciona mediante la programación de los bits RS1 y RS2, localizados en la palabra de estado del programa PSW (registro de banderas), que explicamos con anterioridad. Los registros R0 y R1 se pueden utilizar para acceder hasta 255 bytes de direccionamiento indirecto. Estos es, dichos registros se encuentran localizados en las primeras 32 localidades de RAM interna. Es muy importante mencionar que después de la reinicialización del programa del microcontrolador, mediante un pulso de RESET, el banco de registros seleccionado es el cero; si se quisiera utilizar el banco 1 de registros, se tendría que reposicionar el apuntador del stack (SP), debido a que al usar una instrucción PUSH o CALL, el apuntador de stack, SP, se encontraría en la localidad 08H de RAM interna, que corresponde al registro R0 del segundo banco, y la información se podría traslapar.
Registros con funciones especiales Los sistemas integrados, basados en microcontroladores, tienen que satisfacer ciertos requerimientos comunes para este tipo de aplicaciones, con el objetivo de hacerlos más versátiles. Por lo general, estos requerimientos son: t t t t t
Dar seguimiento al tiempo transcurrido. Mantener la cuenta de ciertas transiciones de señales en determinados pines. Medir con precisión el ancho de pulsos de entrada. Comunicarse con otros sistemas o personas. Realizar un monitoreo estrecho de eventos externos asíncronos.
Los sistemas basados en microprocesadores requieren de circuitos periféricos externos, como contadores, temporizadores, puertos seriales (USART), etc., para cumplir las necesidades arriba mencionadas. Los sistemas basados en microcontroladores, como la familia MCS-51, integran este tipo de periféricos dentro del mismo circuito integrado, como:
grupo editorial patria®
277
5 El popular microcontrolador
t Temporizadores/contadores. t Interfaz de comunicación serial. t Fuentes externas de interrupciones. Cada uno de estos periféricos internos contiene un grupo de registros asociado con ellos, como son: TCON, TH0, TH1, TL0, TL1, TMOD, SBUF, IE, IP y PCON; a estos y otros registros especiales se les denomina SFR (Special Function Registers). Detallaremos cada uno de estos en secciones posteriores de este capítulo, en particular cuando examinemos cada uno de estos periféricos internos, pero antes describimos la organización de memoria de la arquitectura del 8051.
Organización de memoria del 8051 En su gran mayoría, los sistemas basados en microprocesadores efectúan su mapa de memoria compartiendo tanto memoria de programa (ROM) como memoria de datos (RAM). Lo anterior se debe a que con frecuencia los programas se almacenan en un disco y se cargan a la memoria RAM para su ejecución; esa es la razón por la cual tanto los datos como los programas se almacenan en la memoria RAM. Asimismo, los microcontroladores no se utilizan como los microprocesadores de sistemas computacionales, estos más bien se emplean en sistemas integrados, como el componente principal orientado a control. La capacidad de memoria en los sistemas basados en microcontroladores es restringida, por lo que estos no cuentan con una unidad de disco o un sistema operativo en disco; como consecuencia, el programa de control radica en la memoria ROM y los datos en la memoria RAM. Esta es la razón principal por la cual la organización de memoria del microcontrolador 8051 cuenta con dos espacios separados de memoria externa: uno para memoria de programa (código) y otro para memoria de datos. Aunque en realidad, se puede decir que el 8051 cuenta con tres mapas de memoria, si consideramos a la memoria interna que contiene el microcontrolador, como se lo ilustra la figura 5.87. FFFFH
FFFFH Memoria para código (ROM/EPROM/Flash)
Memoria de datos (RAM/puertos de E/S)
se habilita mediante _____ la señal PSEN
se habilita mediante ___ las ___ señales RD y WR
FFH Memoria de datos (RAM)
00H 0000H
0000H Memoria incorporada en el microcontrolador
0000H Memoria externa
=`^liX,%/. I\jld\e[\cfj\jgXZ`fj[\d\dfi`XgXiX\cd`ZifZfekifcX[fi/':*(9?% Los tres mapas de memoria del 8051 son: un mapa de memoria de RAM interna, en el cual se encuentran la memoria de datos y los registros con funciones especiales (SFR) que controlan a los periféricos internos; un mapa de memoria RAM externo, que puede contener de manera compartida a la memoria de datos externa y a los dispositivos
278
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
de entrada y salida, y, por último, dependiendo del dispositivo, un mapa de memoria de código interno y/o externo que contiene la memoria de programa ROM/EPROM/Flash.
Organización de memoria de programa externa Dependiendo del dispositivo de la familia MCS-51 que se va a utilizar, este puede contar con memorias de programa interna, externa o ambas, como se es posible observar en la figura 5.88.
FFFFH
FFFFH
FFFFH
ROM externa ROM externa 1 FFFH
1 FFFH 8K bytes
0FFFH
8K bytes
ROM interna
0FFFH
4K bytes 0000H
ROM interna
4K bytes 0000H
0000H
=`^liX,%// FgZ`fe\jgfj`Yc\j[\d\dfi`X[\gif^iXdXgXiXcX]Xd`c`XD:J$,(%
Como se puede observar, las opciones de memoria de programa disponibles que se plantean en la figura 5.88 son las siguientes: t Que solo se utilice la memoria interna de 4 Kbytes/8 Kbytes. t Que solo se utilice una memoria externa de hasta 64 Kbytes de direccionamiento. t Que se utilicen ambas memorias: la memoria interna de 4 Kbytes/8 Kbytes y una memoria externa con 64 Kbytes de direccionamiento en total. En esta opción, cualquier intento de ejecución de un programa con un direccionamiento mayor a los 4 Kbytes/8 Kbytes se dirigirá a la memoria externa.
Organización de memoria de datos interna En los MCS-51 que cuentan con una memoria interna de 256 bytes, el primer bloque de 128 bytes va de la dirección 00H a la 7FH, y se puede direccionar de manera directa e indirecta; por su parte, el segundo bloque de 128 bytes corresponde a los registros con funciones especiales, SFR, el cual tiene un espacio de dirección que abarca desde la dirección 80H a la FFH y únicamente puede direccionarse de manera directa. Lo anterior corresponde a los microcontroladores que tienen especificados solo 128 bytes de memoria RAM interna, como el 8051/8751/8031. Estos microcontroladores tienen especificados 128 bytes porque solo la parte baja (00H–7FH) se utiliza para datos de propósito general, mientras que normalmente la parte alta (80H-FFH) se utiliza para propósitos específicos y no para datos de uso general; por este motivo, la parte baja es la única que se considera como RAM interna. No obstante, los microcontroladores mejorados, como el 8052/8032, especifican una memoria RAM interna de 256 bytes. Algunas veces, la diferencia entre estas familias puede causar confusión debido a que los microcontroladores 8052/8032 tienen un espacio de memoria adicional de 128 bytes que cubre las direcciones 80H a FFH, pero la forma de acceder a ellos es únicamente con direccionamiento indirecto, como se muestra en la figura 5.89. La parte baja de la RAM interna (00H-7FH) se divide en bancos de registros (00H–1FH), en RAM direccionable por bits (20H-2FH) y en RAM de propósito general (30H–7FH). Por otro lado, la parte alta de la RAM corresponde a
grupo editorial patria®
279
5 El popular microcontrolador
FFH
FFH Accesible solo con el modo de direccionamiento indirecto
128 bytes superiores
Accesible solo con el modo de direccionamiento directo
80H 7FH
80H Registros con funciones especiales (SFRs)
Accesible con los modo de direccionamiento directo e indirecto
128 bytes superiores 00H
=`^liX,%/0
Dirección de byte 7F
Dirección de byte
Dirección de bit Memoria RAM de propósito general
30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 18 17 10 0F 08 07 00
7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07
7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06
7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05
7C 74 6C 64 5C 54 4C 44 3C 34 2C 24 1C 14 0C 04
7B 73 6B 63 5B 53 4B 43 3B 33 2B 23 1B 13 0B 03
7A 72 6A 62 5A 52 4A 42 3A 32 2A 22 1A 12 0A 02
Banco 3 Banco 2 Banco 1 Banco de registros por defecto para R0 - R7
79 71 69 61 59 51 49 41 39 31 29 21 19 11 09 01
78 70 68 60 58 50 48 40 38 30 28 20 18 10 08 00
Dirección de bit
FF F0
F7
F6
F5
F4
F3
F2
F1
F0
B
E0
E7
E6
E5
E4
E3
E2
E1
E0
ACC
D0
D7
D6
D5
D4
D3
D2
-
D0
PSW
B8
-
F6
F5
F4
F3
F2
F1
F0
IP
B0
F7
F6
F5
F4
F3
F2
F1
F0
P3
A8
F7
F6
F5
F4
F3
F2
F1
F0
IE
A0
F7
F6
F5
F4
F3
F2
F1
F0
P2
99 98
F7
F6
no accesible por bit F5 F4 F3 F2
F1
F0
SBUF SCON
90
F7
F6
F5
F1
F0
P1
8D 8C 8B 8A 89 88 87 83 82 81 80
F7
F7
F6
F6
F4
F3
F2
no accesible por bit no accesible por bit no accesible por bit no accesible por bit no accesible por bit F5 F4 F3 F2 no accesible por bit no accesible por bit no accesible por bit no accesible por bit F5 F4 F3 F2
RAM
=`^liX,%0' ;\kXcc\[\cXd\dfi`XI8D`ek\ieXgXiX\cd`ZifZfekifcX[fi/':,(9?%
280
ELECTRÓNICA • MIJAREZ
F1
F1
F0
F0
TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0
5 El popular microcontrolador
las direcciones de los registros con funciones especiales, con exactitud 21 registros para el 8051 y 26 registros para el 8052. En la figura 5.90 se observa el detalle de la memoria RAM interna para el microcontrolador 8051. En las primeras 32 localidades de la memoria RAM interna del microcontrolador 8051 se encuentran los 4 bancos de 8 registros: R0-R7; estos registros ocupan las direcciones de la 00H a la 1FH. En importante resaltar que en el espacio entre las direcciones de la 20H a la 2FH se encuentra un segmento que puede ser direccionado como byte o como bit de propósito general, dependiendo de la instrucción que se utilice; es decir, podemos direccionar 16 bytes o direccionar 128 bits (8 bits r 16 bytes) de manera independiente. Por su parte, las direcciones de la 30H a la 7FH pueden ser utilizadas por el usuario de manera compartida, como memoria de datos y como área reservada para el stack o pila. Los registros con funciones especiales se encuentran en la parte superior de la RAM interna (80H-FFH). Estos registros incluyen el Acc, el registro B, el registro DPTR (DPL y DPH), el SP y los puertos; asimismo, también contienen los registros de temporizadores, del puerto serie, de interrupciones y de control de energía. Ahora, describiremos al microcontrolador 8051 desde un perspectiva externa.
Descripción de terminales o pines En esta sección describimos la arquitectura del MCS-51 desde una perspectiva externa; para lo cual, explicamos funcionalmente los pines o terminales del microcontrolador. Los MCS-51 cuentan con un total de 40 terminales, como lo ilustra la figura 5.91. Dichas terminales se pueden agrupar, como se muestra en la tabla 5.4.
Núm.
Terminales
Función de las terminales
2
VCC y VSS (GND)
Alimentación
2
XTAL1 Y XTAL2
Entradas del cristal de cuarzo/resonador para el oscilador interno
1
RST
Entrada de RESET o reinicio
1
/EA
Entrada para seleccionar la memoria de programa: interna o externa
2
ALE y /PSEN
Address Latch Enable (ALE) y Program Store Enable (PSEN): Señales de control para acceder a un programa externo
32
P0, P1, P2 y P3
4 puertos paralelos de 8 bits
KXYcX,%+ ;\jZi`gZ`e]leZ`feXc[\cXjk\id`eXc\j[\c/',(% En la figura 5.91 y en la tabla 5.4 podemos apreciar que de las 40 terminales disponibles en el 8051, 32 funcionan como líneas para puertos de entrada/salida, pero 24 de estas son de propósito dual (26 en el 8032/8052). Cada una de estas líneas puede funcionar como puerto de entrada/salida o bien como línea de control o de bus de datos o de bus de direcciones. Las ocho líneas de cada puerto se pueden utilizar no solo como una unidad de interfaz en paralelo para dispositivos como ADC/DAC, displays, teclados, etc., sino que cada línea también puede funcionar de forma independiente, como una interfaz para dispositivos de un solo bit, como LED, transistores, bocinas (altavoces) y solenoides, entre otros. Las conexiones correspondientes a las terminales 18 y 19, XTAL1 y XTAL2, ya fueron examinadas antes, cuando describimos la CPU del 8051 y su temporización. Por tanto, en este momento nos centramos en describir las terminales restantes. Conexiones de alimentación La familia MCS-51 de Intel funciona con una fuente de alimentación de 5 volts. La conexión VCC se encuentra en la terminal 40 y la conexión VSS o tierra en la terminal 20. Sin embargo, existen microcontroladores de la familia Atmel que operan con un rango de voltaje de 2.4 V a 5.5 V.
grupo editorial patria®
281
5 El popular microcontrolador
40 30 pF
19 12 MHz 18
VCC P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
XTAL1 XTAL2
30 pF
29 30 31 9 ___ RD ___ WR T1 T0 ____ INT1 ____ INT0 TXD RXD
17 16 15 14 13 12 11 10
_____ PSEN
RST
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
ALE __ EA
32 33 34 35 36 37 38 39
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0
8 7 6 5 4 3 2 1 28 27 26 25 24 23 22 21
A15 A14 A13 A12 A11 A10 A9 A8
VSS 20
=`^liX,%0( 8j`^eXZ`e[\k\id`eXc\j[\c/',(%
Reset o reinicio La señal de entrada en la terminal 9, RST, es la señal maestra de reinicio del microcontrolador 8051. La función principal de esta señal es inicializar los registros internos del microcontrolador a los valores adecuados y efectuar un ciclo ordenando del sistema. En tabla 5.5 se listan los valores de los registros internos del 8051, después de un pulso de reset. El contador de programa, PC, es tal vez el registro más importante listado en la tabla 5.5; este se carga con el valor 0000H, lo cual indica que después de recibir la señal adecuada de reset, la ejecución del programa inicia en la primera localidad de la memoria de código, en este caso en la dirección 0000H. La señal de reset se debe mantener a nivel alto, por lo menos dos ciclos de máquina, y debe permanecer a nivel bajo durante la operación normal del microcontrolador. Esta señal se puede poner en 1 mediante un interruptor, o al momento de encender el sistema vía un circuito RC, como se muestra en la figura 5.92. Considerando un voltaje de entrada (VH) de 5 V del circuito RC, el pin de RST se mantiene en ALTO un tiempo dado por: VL VH (1 – e–t/RC)
282
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
+5 V
+5 V
+ 100 ohms
10 μF
Reinicio RST
8.2 K ohms
=`^liX,%0) :`iZl`kf[\i\j\kgXiX\c/',(%
Puertos del MCS-51 Los 4 puertos del MCS-51 son bidireccionales; cada uno consiste de: un latch (registros SFR de P0-P3), un driver de salida y un buffer de entrada. Los drivers de salida de los puertos P0 y P2, y el buffer de entrada del P0, se usan para acceder a memoria externa. El puerto P0 es un bus multiplexado en tiempo; es decir, proporciona la parte baja de las direcciones y escribe o lee un byte de datos a memoria externa. Por su parte, el puerto P2 proporciona la parte alta de las direcciones cuando el direccionamiento es de 16 bits; de otro modo, se puede usar para propósito general. Registro
Valor de reset
PC ACC B PSW SP DP TR P0-P3 IP IE TMOD TCON TH0 TL0 TH1 TL1 SCON SBUF PCON (NMOS) PCON (CMOS)
0000H 00H 00H 00H 07H 0000H FFH XXX00000B 0XX00000B 00H 00H 00H 00H 00H 00H 00H INDETERMINADO 0XXXXXXXB 0XXX0000B
KXYcX,%, MXcfi\j[\cfji\^`jkifj`ek\iefj[\c/',(#[\jglj[\leglcjf[\i\j\k%
grupo editorial patria®
283
5 El popular microcontrolador
El puerto P3 y dos pines del puerto P1 en el 80C52, son de multifunción, esto es, operan como puertos de propósito general o con funciones especiales. Las funciones especiales del puerto P3 y (dos pines) del puerto P1 son: t t t t t t t t t t
P1.0* P1.1* P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
T2 (entrada externa del temporizador/contador 2) T2EXT (captura/recarga del temporizador/contador 2) RXD (entrada del puerto serial) TXD (salida del puerto serial) INT0 (interrupción externa 0) INT1 (interrupción externa 1) T0 (entrada externa temporizador/contador 0) T1 (entrada externa temporizador/contador 1) WR/ (pulso de escritura para RAM externa) RD/ (pulso de lectura para RAM externa)
El circuito electrónico de cada uno de los puertos se muestra en la figura 5.93. Los puertos P2 y P0 son controlados internamente para conmutar entre direcciones y datos (ADDR/Data), respectivamente. El puerto P3, es controlado por el latch; si este es 1, la salida es controlada por la función alterna. Los puertos P1, P2 y P3 tienen resistencia de “pull up” internas, y el puerto P0 tiene salida drenador abierto (open drain).
ADDR/Data
VCC
Control
Read Latch
VCC
Read Latch
Internal Pullup*
P0.X Pin Int. Bus
D
Write to Latch
CL
Q P0.X Latch
MUX
_Q_
Int. Bus
D
Write to Latch
CL
P1.X Pin
Q P1.X Latch _Q_
Read Pin
Read Pin
b. Port 1 Bit
a. Port 0 Bit
ADDR/Data Control Read Latch
Alternate Output Function
VCC Read Latch
Internal Pullup*
VCC Internal Pullup* P3.X Pin
MUX Int. Bus
D
Q P2.X Latch
Write to Latch
CL
_Q_
Read Pin
P2.X Pin
Int. Bus
D P3.X Latch
Write to Latch
CL
_Q_
Alternate Input Function
Read Pin c. Port 2 Bit
d. Port 3 Bit
=`^liX,%0* ;\kXcc\[\cfjgl\ikfj[\cD:J$,(%
284
Q
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
ALE y PSEN La señal PSEN\ se activa a nivel bajo durante la búsqueda (fetch) de una instrucción almacenada en la memoria externa para programas. Esta señal se mantiene en estado inactivo, nivel alto, cuando se ejecuta un programa en la memoria ROM interna. La señal ALE (Address Latch Enable) se utiliza para demultiplexar los buses de datos y las direcciones provenientes del puerto P0 en su función alterna. Esta señal, permite almacenar en un registro externo el byte inferior del bus de direcciones (véase sección interfaz a memoria externa). ALE envía pulsos a una tasa de 1/6 la frecuencia del oscilador y se puede usar como reloj de propósito general; sin embargo, hay una excepción cuando se usa la instrucción MOVX, ya que se pierde un pulso de esta señal.
Señal para acceso externo, EA La señal EA, terminal 31, se mantiene ya sea a nivel bajo o a nivel alto, dependiendo de la zona donde se va a ejecutar el programa, como se observa en la figura 5.94. Si EA se encuentra a nivel lógico alto, ejecuta sus programas en la memoria ROM interna. Al momento de ejecutar un programa con una dirección mayor a los 4/8 Kbytes asignados, se dirigirá automáticamente a la memoria externa. En tanto, si el pin EA se encuentra a nivel lógico bajo, sólo se ejecutan los programas en la memoria externa. FFFFH
Memoria externa
__ EA = 0
__ EA = 1
Memoria externa
Memoria interna
1FFFH/0FFFH
0000H
=`^liX,%0+ J\c\ZZ`e[\XZZ\jfXd\dfi`X[\gif^iXdXIFD `ek\ieXf\ok\ieX%
Para los microcontroladores 8031/8032 la terminal /EA debe mantenerse a un nivel lógico bajo, debido a que estos microcontroladores no cuentan con memoria de programa incorporada en el circuito integrado; de esta forma, los programas se ejecutan desde una memoria EPROM externa. En tanto, la versión 8751, la cual contiene memoria EPROM interna, también utiliza la terminal /EA para aplicar un voltaje de 21 V (Vpp), necesario para programar dicha memoria.
EXPANSIÓN
DE MEMORIA Y DISPOSITIVOS DE
E/S
La arquitectura de la familia MCS-51 tiene la capacidad de expandir sus recursos de memoria y puertos de entrada/ salida más allá de los recursos incorporados en el circuito integrado. Esta capacidad permite evitar posibles restriccio-
grupo editorial patria®
285
5 El popular microcontrolador
nes de diseño. Los espacios de expansión de memoria son de 64 Kbytes para código y 64 Kbytes para datos y puertos de entrada/salida. Si es necesario, en los diseños es posible añadir memorias ROM y RAM. Adicionalmente, también es posible agregar dispositivos periféricos para incrementar la capacidad de entradas/salidas. Dichos dispositivos periféricos forman parte del espacio de memoria asignado para la memoria de datos; es decir, los periféricos externos se mapean a memoria, y se lee o escribe a ellos, como si fueran localidades de memoria RAM. Cuando se accede a la memoria externa, el puerto P0 no está disponible como puerto de entrada/salida. En este caso, el puerto P0 se convierte en un bus multiplexado de direcciones (A0-A7) y datos (D0-D7). La señal de ALE juega un papel muy importante, ya que permite fijar el byte inferior de las direcciones al principio de cada ciclo de memoria externa. Por otro lado, el puerto P2 por lo general se utiliza para proveer el byte superior del bus de direcciones (A8A15). Antes de describir con detalle el funcionamiento del bus multiplexado de direcciones y datos, se estudia el arreglo de un bus de direcciones de 16 bits no multiplexado y un bus de datos de 8 bits, en contraste con un bus multiplexado de direcciones (byte bajo) y datos. La figura 5.95 muestra estos dos casos.
Ciclo de memoria
A0 - A15
Dirección
D0 - D7
Datos a) No multiplexado (24 líneas)
Ciclo de memoria A8 - A15
AD0 - AD7
Dirección
Dirección
Datos
b) Multiplexado (16 líneas)
=`^liX,%0, X J`jk\dXefdlck`gc\oX[f[\[`i\ZZ`fe\jp[Xkfj%Y J`jk\dXdlck`gc\oX[f[\[`i\ZZ`fe\jYpk\YXaf p[Xkfj%
La pregunta obligada es: ¿cuál es la ventaja de usar un bus multiplexado, si con un bus no multiplexado es posible operar correctamente? Bien, en la figura 5.95a), podemos apreciar que el sistema no multiplexado utiliza 16 líneas de direcciones y 8 líneas de datos, con un total de 24 líneas o pines del microcontrolador. Mientras que el sistema con un bus multiplexado, como el que se muestra en la figura 5.95b), utiliza 8 líneas para el byte alto de direcciones y 8 líneas para el byte bajo de las direcciones y para el byte de datos, con un total de 16 pines o terminales del microcontrolador. ¡Con esto se ahorran 8 pines del microcontrolador¡ Este ahorro de pines permite que el microcontrolador pueda ofrecer funciones adicionales en el mismo encapsulado de doble línea (DIP) de 40 pines. Ahora volvamos al bus multiplexado de direcciones y datos, con el fin de analizar cómo trabaja: 1. Durante la primera mitad del ciclo de memoria, el puerto P0 provee el byte inferior del bus de direcciones (A0A7). Esta dirección se almacena por medio de la señal ALE en un latch externo de 8 bits, como el 74HC573 o equivalente. La dirección baja permanece estable a la salida del latch durante todo el ciclo de memoria. 2. Durante la segunda mitad del ciclo de memoria, el puerto P0 se utiliza como bus de datos y los datos se leen o escriben dependiendo de la operación externa que se realice.
286
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Acceso a la memoria externa de código La memoria externa para código es de solo lectura y se utiliza como señal de control de lectura la señal /PSEN. En estas circunstancias, los puertos P0 y P2 no se encuentran disponibles como puertos de entrada/salida. Por ejemplo, cuando se utiliza una memoria EPROM externa, el puerto P0 funciona como bus multiplexado de direcciones (byte bajo) y byte de datos, y el puerto P2 como bus de direcciones (byte alto). La figura 5.96 muestra las conexiones de hardware entre un microcontrolador 8031 y una memoria EPROM externa de 64 Kbytes.
D0 - D7
Puerto 0
8051
EPROM
74HC573 ___ EA
D Q
ALE
LE
A0 - A7
/OE
Puerto 2
A8 - A15
___ OE
_____ PSEN
=`^liX,%0- :fe\o`fe\j[\_Xi[nXi\\eki\led`ZifZfekifcX[fi/'*(pleXd\dfi`X
Como sabemos, un ciclo de máquina del 8051 consta de 12 periodos del oscilador. Durante cada ciclo, normalmente se generan 2 pulsos de habilitación /PSEN y 2 pulsos de la señal ALE; en consecuencia, es posible leer 2 bytes de la memoria de programa. El segundo byte se ignora si la instrucción que se realiza es de un solo byte. La figura 5.97 muestra la temporización para la búsqueda del código de operación (fetch).
Acceso a la memoria externa de datos La memoria externa para datos es una memoria tipo RAM de lectura/escritura, la cual se habilita mediante las señales de control /WR y /RD, correspondientes a las funciones alternas de los pines P3.6 y P3.7, respectivamente. Es importante destacar que el único acceso a la memoria de datos externa es a través de la instrucción MOVX, la cual involucra el registro acumulador (ACC) y los registros apuntadores DPTR (16 bits) o los registros R0 o R1 (8 bits), como registros de dirección. La instrucción MOVX (transferencia de datos externa) usada para acceder a la memoria de datos externa es: MOVX @DPTR, A
Ciclo de escritura, dirección de 16 bits
MOVX A, @DPTR
Ciclo de lectura, dirección de 16 bits
MOVX @Ri, A
Ciclo de escritura, dirección de 8 bits
MOVX A, @Ri
Ciclo de lectura, dirección de 8 bits
grupo editorial patria®
287
5 El popular microcontrolador
Un ciclo de máquina S1 P1
S2 P2
P1
S3 P2
P1
S4 P2
P1
S5 P2
P1
S6 P2
P1
S1 P2
P1
P2
Osc
ALE _____ PSEN
Puerto 2
PCH
Puerto 0
PCH
Código de operación
PCL
PCL
Byte 2
Nota: PCH = byte superior del contador de programa. PCL = byte inferior del contador de programa.
=`^liX,%0. K\dgfi`qXZ`e[\c/',(gXiX\]\ZklXicXYjhl\[X[\cZ[`^f[\fg\iXZ`e% En este caso, Ri puede ser R0 o R1. Las conexiones del bus de datos y direcciones se realizan mediante los puertos P0 y P2, de la misma manera que se usaron en la conexión de la EPROM externa. La única diferencia es que ahora la línea de control para lectura es /RD, la cual se conecta al pin /OE de la memoria RAM, y la línea de control para escritura es /WR, la cual se conecta al pin /W de la memoria RAM. La figura 5.98 muestra las conexiones entre un microcontrolador 8051 y una memoria RAM de 2 Kbytes.
D0 - D7
Puerto 0
8051
RAM
74HC573 ___ EA
+5 V
D Q
ALE
P2.0 P2.1 P2.2 ___ RD ___ WR _____ PSEN
LE
(2 Kbytes)
A0 - A7
/OE
NC (sin conexión)
A8 A9 A10 ___ _OE __ W ___ CS
=`^liX,%0/ :fe\o`fe\j[\_Xi[nXi\\eki\led`ZifZfekifcX[fi/',(pleXd\dfi`XI8D\ok\ieX[\)BYpk\j%
288
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Como mencionamos antes, la señal de ALE y /PSEN se generan dos veces en cada ciclo de máquina; la única excepción es cuando se utiliza la instrucción MOVX, donde se omite un pulso de cada una de estas señales y se reemplaza por el pulso de la señal de control, ya sea /RD o /WR. La figura 5.99 muestra el diagrama de tiempos para un ciclo de lectura usando la instrucción MOVX A, @DPTR.
Un ciclo de máquina S1
S2
S3
S4
Un ciclo de máquina S5
S6
S1
S2
S3
S4
S5
S6
ALE _____ PSEN ___ RD PCH
Puerto 2
Puerto 0
PCL
DPH (byte superior del apuntador de datos)
Código de operación
Entrada de datos
DPL
Nota: DPH = byte superior del registro apuntador. DPL = byte inferior del registro apuntador.
=`^liX,%00 K\dgfi`qXZ`egXiX`ejkilZZ`eDFMO8#7;GKI%
En la figura 5.99 apreciamos que una vez que el microcontrolador lee el código de operación de la instrucción MOVX A, @DPTR, este ejecuta la instrucción. Para esto, por el puerto P2 envía el byte superior del registro DPTR (DPH) y por el puerto P0 envía el byte inferior del registro DPTR (DPL). En este caso, los datos enviados por el puerto P0 se sincronizan con la señal de ALE, para almacenar esta parte de la dirección en un latch externo 74HC573 o similar. Posteriormente, el microcontrolador envía la señal de control. En este ejemplo, la señal de lectura /RD y los datos de la memoria son colados en el P0 y transferidos al registro acumulador. Si el sistema requiere acceder a una cantidad pequeña de memoria de datos (por ejemplo, 256 bytes) y se cuenta con 2 Kbytes de RAM, como se muestra en la figura 5.88, es posible acceder a la memoria externa mediante direcciones de 8 bits usando los registros R0 o R1, y utilizar solo 3 bits del puerto 2 o de otro puerto, para dividir la memoria de 2 Kbytes en 8 bloques o páginas de 256 bytes. Por ejemplo, la selección de un bloque sería usando los pines P2.0, P2.1 y P2.2. De esta manera, se liberaría al puerto P2 de su función alterna; es decir, se proporcionaría el byte superior del bus de direcciones. Para realizar el ciclo de lectura en este caso se usaría la instrucción MOVX A, @R0, como lo ilustra la figura 5.100. El diagrama de tiempos para un ciclo de escritura a memoria RAM, usando las instrucciones MOVX A @DPTR, o MOVX A @R0, es muy similar a los diagramas mostrados en las figura 5.99 y 5.100, solo que los datos en el acumulador serían los datos de salida, la señal de control sería la señal de /WR y la señal de /RD permanecería a nivel lógico alto. Si el sistema basado en un microcontrolador requiere de una interfaz para varias memorias RAM o EPROM, es necesario usar un decodificador de direcciones, de la misma manera que se uso con los sistemas basados en microprocesadores, que se estudiaron en el apartado Organización de memoria y decodificación de direcciones de este capítulo. Por ejemplo, si se requiere diseñar un sistema basado en el μC 80C31BH, con 24 Kbytes de memoria EPROM y 24 Kbytes de memoria RAM, y se cuenta con memorias EPROM 27C64 y RAM 62C64 de 8 Kbytes, entonces es necesario decodificar el bus de direcciones para seleccionar cada memoria de 8 Kbytes. A menudo, también se utiliza un decodificador de 3 entradas a 8 salidas 74HC138. Las entradas corresponden al bus de direcciones (puerto P2) y las
grupo editorial patria®
289
5 El popular microcontrolador
Un ciclo de máquina S1
S2
S3
S4
Un ciclo de máquina S5
S6
S1
S2
S3
S4
S5
S6
ALE _____ PSEN ___ RD PCH
Puerto 2
Código de operación
PCL
Puerto 0
P2.0, P2.1 y P2.2 (para selección de bloque)
Entrada de datos
R0
=`^liX,%('' K\dgfi`qXZ`egXiX`ejkilZZ`eDFMO8#7I'%
salidas se conectan a la terminal de selección de circuito integrado, también llamado chip (/CS), de cada memoria, como se muestra en la figura 5.101.
Bus de direcciones
(P2 y P0)
Bus de datos
_____ PSEN
(P0)
___ OE
D0 - D7 2764 EPROM (8 kbites) A0 - A12 ___ CS
___ RD ___ WR
___ OE __ W
D0 - D7 6264 RAM (8 kbites) A0 - A12 ___ CS
___ CS
___ CS ___ CS
___ CS
74HC138 A15 A14 A13
+5 V
C B A
_G1 ____ _G2A ____ G2B
__ _0_ _1_ _2_ _3_ _4_ _5_ _6_ 7
Selección a otras memorias o periféricos
=`^liX,%('( J`jk\dXYXjX[f\eled`ZifZfekifcX[fiZfe[\Zf[`]`ZXZ`e[\[`i\ZZ`fe\j%
290
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
El 8051 tiene dos espacios separados de direccionamiento de 64 Kbytes para memoria ROM y RAM o periféricos, los cuales son habilitados por las señales de control: /PSEN y /RD, y /WR, respectivamente. Por esta razón, las memorias ROM y RAM de la figura 5.101 pueden tener el mismo espacio de memoria y compartir su habilitación (/CS). Cuando se utiliza un microcontrolador 8051, el cual contiene internamente memoria de solo lectura (ROM), no es posible depurarlo al escribir código, ya que la memoria es de solo lectura y no puede ser modificado. No obstante, otras alternativas son usar el 8031 y emplear memorias EPROM externas o usar el 8751 con memoria EPROM interna. Sin embargo, si se cuenta con el 8051 y se desea desarrollar software, es posible usar un truco para traslapar los espacios de memoria externos para datos y código. Debido a que /PSEN se utiliza para leer código y /RD para leer memoria de datos, una memoria RAM puede ocupar espacio tanto para código como para datos mediante la conexión de su terminal /OE a una compuerta AND, como se ilustra en la figura 5.102.
RAM ___ WR
__ W
___ RD _____ PSEN
___ OE
=`^liX,%(')
En la configuración de la figura 5.102 se puede cargar un programa en la memoria RAM, al que se le escribe el código como si fueran datos y el cual se ejecuta accediendo a la RAM, como si fuera código.
Acceso a periféricos (puertos de E/S) mapeados a memoria En la figura 5.102 usamos un truco para “engañar” al microcontrolador y leer tanto código como datos de una memoria RAM. Un truco similar se utiliza para agregar dispositivos periféricos, a fin de incrementar la capacidad de entradas/salidas. Los periféricos forman parte del espacio de memoria de 64 Kbytes asignado para memoria de datos. Es decir, se puede escribir o leer a un periférico usando la instrucción MOVX como si fueran localidades de memoria. Por ejemplo, vamos a suponer que tenemos un sistema basado en el microcontrolador 87C51, el cual tiene mapeados a memoria tres periféricos: una memoria RAM de 1 Kbytes, un display de 7 segmentos a través de un latch 74LS573 y un arreglo de cuatro interruptores tipo DIP mediante un buffer 74LS244, como se ilustra en la figura 5.103. En la figura 5.103a) es posible observar que se utilizó un decodificador de direcciones 74LS139 para mapear los periféricos a memoria. Este decodificador tiene 2 entradas y 4 salidas, por lo que nuestro mapa de memoria se dividió en 4 segmentos de 16 Kbytes, como se muestra en la figura 5.103b). Así, podemos comprobar que se usó una decodificación parcial; es decir, que se tienen 16 mil posibles direcciones para acceder a cada uno de los periféricos. Aunque la arquitectura de software del MCS-51 se estudia en el siguiente apartado, ahora vamos a realizar un pequeño programa usando el hardware de la figura 5.103 y algunas instrucciones usadas en la tabla 5.2, las cuales, aunque parecen no tener aplicación, nos permiten hacer uso de la instrucción MOVX y su relación con el hardware del sistema. Para esto, requerimos leer el arreglo de interruptores; de esta manera, si el valor leído es diferente de cero, debemos escribir el número nueve en el display de 7 segmentos, pero si el valor leído es cero debemos escribir el número 55H en la última localidad de la memoria RAM. La figura 5.104 muestra el listado del programa solicitado.
grupo editorial patria®
291
5 El popular microcontrolador
+5 V
74LS573 D0 - D7
P0
RAM (1 Kbites)
74LS573 8751 ___ +5 V EA
D
ALE
Q
P0.0 ·· · P0.7 /OE
A0 - A7
220 ½
a f e
LE /OE
A8 A9 ___ OE ___ _W __ CS
74LS139
F F F FH
b g
Teclado
c
C000H BF F FH
dp d
LED de 7 segmentos
74LS244
P2.0 NC _____ P2.1 PSEN ___ RD ___ WR P2.6 P2.7
a b c d e f g dp
Arreglo de interruptores
8 000H 7 F F FH
P0.0 ·· · P0.3
LED de 7 segmentos
4 000H 3 F F FH
/OE Arreglo de interruptores
Memoria RAM
A0 /Y0 /Y1 A1 /Y2 /Y3
0 0 0 0H
a)
b)
=`^liX,%('* X :`iZl`kfYXjX[f\eleμ:/.,(Zfe*dl g\i`]i`ZfjdXg\X[fjXd\dfi`X%Y DXgX[\d\dfi`X%
INICIO MOV
DPTR, #8000H
;Carga el apuntador con la dirección de los interruptores
MOVX
A, @DPTR
; Lee el contenido de los interruptores y lo carga en A
ANL
A,#0FH
; Enmascara nibble bajo
JZ
ESCR_RAM
; Brinca a la etiqueta si el ACC 00H
MOV
DPTR,#4000H
;Carga el apuntador con la dirección del display
MOV
A,#0E6H
;Carga dato en A que corresponde al número 9 en el display
MOVX
@DPTR,A
;Escribe dato al display de 7 segmentos
JMP
INICIO
ESCR_RAM: MOV
DPTR, #003FH
;Carga el apuntador con la última dirección de la RAM
MOV
A,#55H
; Carga dato en A que se pidió escribir a la RAM
MOVX
@DPTR,A
; Escribe dato a la memoria RAM
JMP
INICIO
END
=`^liX,%('+ Gif^iXdXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%('*%
La secuencia de cargar un dato en el registro apuntador y posteriormente leer o escribir a los periféricos mapeados a memoria, lo describimos con detalle en la sección Desarrollo de programas sencillos en lenguaje ensamblador (de este capítulo), cuando analizamos los sistemas basados en microprocesadores. De esta manera, en el desarrollo de este programa fue necesario observar la correspondencia bit a bit entre el puerto P0 y los LED del display, con el fin de determinar el número en binario que corresponde al número 9 en el display. La tabla 5.6 muestra esta correspondencia, la cual en este caso es el número binario 11100110B (E6H). En el programa que se muestra en la figura 5.104 se indica el valor a cargar en el registro acumulador como 0E6H; sin embargo, en realidad solo nos estamos adelantando un poco, ya que los programas ensambladores normalmente requieren un cero si el número a transferir empieza con una letra.
292
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Display de 7 segmentos LED
a
b
c
d
e
f
g
dp
Puerto P0
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
bit
1
1
1
0
0
1
1
0
KXYcX,%- :fii\jgfe[\eZ`X\eki\cfjY`kj[\cgl\ikfG'pcfjC<;[\c[`jgcXp% Bien, parece que ya empezamos a calentar motores. Vamos a realizar otro sistema basado en un microcontrolador 8031, el cual se usa para dar acceso de manera electrónica a una puerta por medio de un código de seguridad. El sistema requiere de 1 Kbytes de memoria EPROM y mapeados a memoria, un teclado a través de un buffer de tercer estado 74HC244, dos flip flop que controlan dos LED y un flip flop que controla un solenoide (activo ALTO), para abrir el cerrojo de la puerta. En la figura 5.105 se muestra el diagrama de bloques del sistema solicitado.
RST
80C31BH
8
Flip flop
LED Rojo
8
1
Flip flop
LED Verde
8
1
Flip flop
Solenoide
EPROM
Buffer
1
=`^liX,%(', ;`X^iXdX[\Ycfhl\j[\lej`jk\dX[\XZZ\jfXleXgl\ikX\c\Zkie`ZXYXjX[f\ele:/'*(%
En este caso, lo primero que debemos hacer es diseñar el hardware del sistema y realizar un programa que lea el código de acceso correcto (405 decimal). Si el código es el correcto, el sistema encenderá un LED verde y alimentará el solenoide. Pero, si se activa un dígito erróneo, se encenderá el LED rojo y el sistema entrará en un lazo (loop) infinito, hasta que se abre la puerta, lo cual proporciona un pulso de RESET al sistema. La figura 5.106 muestra el diseño simplificado de este hardware. La figura 5.106a) muestra el diseño de hardware del sistema requerido, donde se puede apreciar que la señal de habilitación de memoria de programa /PSEN se conecta a las terminales /CS y /OE de la memoria EPROM, debido a que esta es una memoria única; es decir, que aun cuando la EPROM sea de 1 Kbytes, se le asignan los 64 Kbytes para memoria de código, como se observa en la figura 5.106b). Por otro lado, se utiliza un decodificador 74LS139 para habilitar los 4 periféricos requeridos; donde a cada uno de estos se le asignan 16 Kbytes de direcciones, como se aprecia en el mapa de memoria para memoria de datos y puertos de entrada/salida. Por simplicidad, se asume que los números presionados en el teclado se leen como datos en hexadecimal (00H09H) y que el microcontrolador realiza un ciclo de lectura (MOVX A,@DPTR) cada vez que se presiona una tecla, como si estuvieran trabajando por interrupciones, en lugar de entrada/salida por programa. Es importante hacer notar que la electrónica de potencia (driver) para manejar el solenoide no se muestra; sin embargo, esta podría estar compuesta por transistores BJT, Darlington o FET, y el tiempo en que se activa el solenoide con un ciclo de escritura (MOVX A,@DPTR) es suficiente para abrir la puerta. Ahora, para realizar el programa introducimos una instrucción que analizaremos con detalle más adelante. La instrucción se llama CJNE, la cual compara y brinca a etiqueta si los bytes comparados no son iguales (Compare and
grupo editorial patria®
293
5 El popular microcontrolador
P0.0
74LS74 D
Q
CK
D0 - D7
P0 RST ___ EA
D
P0.0
EPROM (1 Kbites)
74LS573
8031
P0.0 ALE
LE /OE
P2.0 P2.1 _____ PSEN ___ ___ WR RD P2.6 P2.7
A8 A9 ___ OE ___ CS A0 /Y0 A1 /Y1 /Y2 /Y3
D
Q
F F F FH
CK
A0 - A7
Q
74LS74 F F F FH Teclado
74LS74
+12 V
D
Driver
Q
C000H BF F FH Solenoide
CK
8 000H 7 F F FH
74LS244 LED verde
P0.0 ·· · P0.7
4 000H 3 F F FH /OE
F F FH EPROM 01 0 0 0H
LED rojo
0 0 0 0H
74LS139
a)
b)
=`^liX,%('- X ;`j\f[\_Xi[nXi\[\lej`jk\dX[\XZZ\jfXleXgl\ikX\c\Zkie`ZXYXjX[f\ele:/'*(%Y DXgX[\d\dfi`X% Jump if Not Equal). Para este ejemplo, la instrucción compara el byte del acumulador con el byte de una constante, esto es: CJNE A,#constante. La figura 5.107 muestra el listado del programa solicitado.
@E@:@F1 DFM DFM DFMO DFM DFMO DFM DFMO
8#''? ;GKI#+'''? 7;GKI#8 ;GKI#''''? 7;GKI#8 ;GKI#/'''? 7;GKI#8
2G'%'j\\jkXYc\Z\\e' 2:Xi^X\cXglekX[fiZfecX[`i\ZZ`e[\cC<;m\i[\ 28gX^XC<;m\i[\ 2:Xi^X\cXglekX[fiZfecX[`i\ZZ`e[\cC<;ifaf 28gX^XC<;ifaf 2:Xi^X\cXglekX[fiZfecX[`i\ZZ`e[\cjfc\ef`[\ 2;\jXZk`mXjfc\efc[\gXiXdXek\e\icXgl\ikXZ\iiX[X
DFM DFMO :AE< DFMO :AE< DFMO :AE<
;GKI#:'''? 8#7;GKI 8#'+?#
2:Xi^X\cXglekX[fiZfecX[`i\ZZ`e[\ck\ZcX[f 2C\\\cZfek\e`[f[\ck\ZcX[f 2J`ef\j\c[^`kf\jg\iX[fYi`eZXX
DFM DFM DFMO DFM DFMO ADG
8#'(? ;GKI#+'''? 7;GKI#8 ;GKI#/'''? 7;GKI#8 @E@:@F
2G'%'j\\jkXYc\Z\\e( 2:Xi^X\cXglekX[fiZfecX[`i\ZZ`e[\cC<;m\i[\ 2
DFM DFM DFMO
;GKI#''''? 8#'(? 7;GKI#8
2:Xi^X\cXglekX[fiZfecX[`i\ZZ`e[\cC<;ifaf 2G'%'j\\jkXYc\Z\\e( 2
DFM AQ
8#''? C8QF
2CXqf`e]`e`kf#k\id`eX_XjkXhl\j\gifgfiZ`feXlei\j\kXcj`jk\dX 29i`eZXXC8QF,(\c8::\jZ\if
C8QF1
=`^liX,%('. Gif^iXdXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%('-%
294
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Aunque el programa de la figura 5.107 tiene algunas simplificaciones para funcionar, este enfatiza el empleo de periféricos mapeados a memoria y sus instrucciones. Ahora, solo resta estudiar los periféricos internos del microcontrolador; sin embargo, primero es necesario que conozcamos la arquitectura de software del 8051.
Arquitectura de software del 8051 De la misma manera que las oraciones o párrafos de un escrito están compuestos por palabras, el software o los programas de los sistemas basados en microprocesadores o microcontroladores se forman a partir de instrucciones. Los programas pueden ser rápidos y eficientes, incluso elegantes, si se crean utilizando secuencias de instrucciones lógicas y bien estructuradas. Así como el lenguaje escrito refleja la personalidad del autor, los programas reflejan la personalidad de su creador. Es importante resaltar que el conjunto de instrucciones para cada familia de microcontroladores es único y que está compuesto por operaciones aritméticas, lógicas, de transferencia o de brincos condicionales o incondicionales. Aunque en este apartado no veremos técnicas de programación, si examinaremos el conjunto de instrucciones del lenguaje ensamblador del MCS-51, a través de sus modos de direccionamiento, usando ejemplos representativos de ambientes o tareas de programación. Entonces, ¡empecemos! Todos los miembros de la familia MCS-51 ejecutan el mismo conjunto de instrucciones, el cual está optimizado para aplicaciones de control de 8 bits, mismas que proveen, de manera rápida y eficiente, varios modos de direccionamiento para acceder a la RAM interna y facilitan operaciones a nivel byte en estructuras de datos pequeñas. Además, el conjunto de instrucciones del MCS-51 presenta un importante procesador de Boole, que proporciona una gran capacidad para manipular directamente variables de 1 bit, y que es útil en sistemas de control y aplicaciones que requieren operaciones lógicas booleanas. La figura 5.108 muestra un resumen del conjunto de instrucciones del microcontrolador MCS-51. Como la mayoría de los procesadores de 8 bits, los códigos de operaciones de las instrucciones del MCS-51 también son de 8 bits. Con esta estructura, es posible tener 256 (28) instrucciones. Del total de estas instrucciones, 255 están implementadas y una no se encuentra definida. Por tanto, las instrucciones pueden estar formadas por el código de operación y 1 o 2 bytes adicionales para datos y direcciones. La mayoría de estas instrucciones (139 en total) son de 1 byte, 92 instrucciones son de 2 bytes y 24 instrucciones son de 3 bytes, como podemos apreciar en la figura 5.108.21
Modos de direccionamiento del MCS-51 Como ocurre en el lenguaje ensamblador de los sistemas basados en microprocesadores, las instrucciones describen qué es lo que se tiene que hacer y los modos de direccionamiento describen dónde hacerlo. Por tanto, cada vez que se lleva a cabo una instrucción es conveniente conocer la sección de memoria interna o externa de los registros involucrados o la localidad donde se almacenan los datos que resultan de la ejecución de la misma. Los modos de direccionamiento se consideran una parte integral del conjunto de instrucciones, además de que proveen la flexibilidad para especificar, de varias formas, la fuente o destino de los datos a utilizar, dependiendo de las necesidades del programa, como lo ilustra la figura 5.85. El registro acumulador, a menudo se utiliza como registro principal de almacenamiento de resultados; sin embargo, también pueden utilizarse otros operandos, dependiendo del modo de direccionamiento. Estos operandos pueden localizarse en los espacios de memoria del MCS-51: memoria de programa, memoria de datos externa, memoria de datos interna, registros SFR y memoria de Bit. En suma, el MCS51 tiene ocho modos de direccionamiento: 1. 2. 3. 4. 5. 21
Registro Directo Indirecto Inmediato Relativo
Una descripción general del hardware del MCS-51, así como las definiciones del conjunto de instrucciones se puede encontrar fácilmente en Internet. En especial, se recomienda el documento de Intel MCS® 51 Microcontroller Family User’s Manual, febrero 1994, número de publicación 121517; este se puede consultar en la literatura de referencia de Wikipedia buscando Intel MCS-51. (http://eeweb1.poly.edu/networks/ specs/27238302.pdf ).
grupo editorial patria®
295
5 El popular microcontrolador
:FEALEKF;<@EJKIL::@FEDC:H6G>IBwI>86H
Z KI8EJ=
CZbc^Xd
9ZhXg^eX^c
8;; 8;; 8;; 8;; 8;;: 8;;: 8;;: 8;;: JL99 JL99 JL99 JL99 @E: @E: @E: @E: @E: ;<: ;<: ;<: ;<: DLC ;@M ;8
JldXi\^`jkifZfe\cXZldlcX[fi JldXYpk\[`i\ZkfZfe\cXZldlcX[fi JldXI8D`e[`i\ZkXZfe\cXZldlcX[fi JldX[Xkf`ed\[`XkfZfe\cXZldlcX[fi JldXi\^`jkifZfe\c8ZZZfe:Xiip JldXYpk\[`i\ZkfZfe\c8ZZZfe:Xiip JldXIXd`e[`i\ZkXZfe\c8ZZZfe:Xiip JldX[Xkf`ed\[`XkfZfe\c8ZZZfe:Xiip I\jkXi\^`jkif[\c8ZZZfe9fiifn I\jkXYpk\[`i\Zkf[\c8ZZZfe9fiifn I\jkXI8D`e[`i\ZkX[\c8ZZZfe9fiifn I\jkX[Xkf`ed\[`Xkf[\c8ZZZfe9fiifn @eZi\d\ekX\cXZldlcX[fi @eZi\d\ekXi\^`jkif @eZi\d\ekXYpk\[`i\Zkf @eZi\d\ekI8D`e[`i\ZkX @eZi\d\ekX8glekX[fi[\[Xkfj ;\Zi\d\ekX8ZldlcX[fi ;\Zi\d\ekXI\^`jkif ;\Zi\d\ekXYpk\[`i\Zkf ;\Zi\d\ekI8D`e[`i\ZkX Dlck`gc`ZX8gfi9 ;`m`[\8gfi9 8aljkXX[\Z`dXc\cXZldlcX[fi
8#Ie 8#[`i\Zk 8#7I` 8#[XkX 8#Ie 8#[`i\Zk 8#7I` 8#[XkX 8#Ie 8#[`i\Zk 8#7I` 8#[XkX 8 Ie [`i\Zk 7I` ;GKI 8 Ie [`i\Zk 7I` 89 89 8
7niZ ( ) ( ) ( ) ( ) ( ) ( ) ( ( ) ( ( ( ( ) ( ( ( (
EZg^dYdh dhX^aVYdg () () () () () () () () () () () () () () () () )+ () () () () +/ +/ ()
WDE:G68>DC:HAâ<>86H CZbc^Xd 8EC 8#Ie 8EC 8#[`i\Zk 8EC 8#7I` 8EC 8#[XkX 8EC [`i\Zk#8 8EC [`i\Zk#[XkX FIC 8#Ie FIC 8#[`i\Zk FIC 8#7I` FIC 8#[XkX FIC [`i\Zk#8 FIC [`i\Zk#[XkX OIC 8#Ie OIC 8#[`i\Zk OIC 8#7I` OIC 8#[XkX OIC [`i\Zk#8 OIC [`i\Zk#[XkX :CI 8 :GC 8 IC 8 IC: 8 II 8 II: 8 JN8G 8
EZg^dYdh 9ZhXg^ei^dc 7niZ dhX^aVYdg 8E;[\i\^`jkifZfe\c8ZldlcX[fi ( () 8E;[\Ypk\[`i\ZkfZfe\c8ZldlcX[fi ) () 8E;[\I8D`e[`i\ZkXZfe\c8ZldlcX[fi ( () 8E;[\[Xkf`ed\[`XkfZfe\c8ZldlcX[fi ) () 8E;[\8ZldlcX[fiZfeYpk\[`i\Zkf ) () 8E;[\[Xkf`ed\[`XkfZfeYpk\[`i\Zkf * )+ FI[\i\^`jkifZfe\c8ZldlcX[fi ( () FI[\Ypk\[`i\ZkfZfe\c8ZldlcX[fi ) () FI[\I8D`e[`i\ZkXZfe\c8ZldlcX[fi ( () FI[\[Xkf`ed\[`XkfZfe\c8ZldlcX[fi ) () FI[\8ZldlcX[fiZfeYpk\[`i\Zkf ) () FI[\[Xkf`ed\X[`XkfZfeYpk\[`i\Zkf * )+ OFI[\i\^`jkifZfe\c8ZldlcX[fi ( () OFI[\Ypk\[`i\ZkfZfe\c8ZldlcX[fi ) () OFI[\I8D`e[`i\ZkXZfe\c8ZldlcX[fi ( () OFI[\[Xkf`ed\[`XkfZfe\c8ZldlcX[fi ) () OFI[\8ZldlcX[fiZfeYpk\[`i\Zkf ) () OFI[\[Xkf`ed\X[`XkfZfeYpk\[`i\Zkf * )+ C`dg`X\cXZldlcX[fi ( () :fdgc\d\ekX\cXZldlcX[fi ( () IfkX\cXZldlcX[fi_XZ`XcX`qhl`\i[X ( () IfkX\c8ZZ_XZ`XcX`qhl`\i[Xgfi\c:Xiip ( () IfkX\cXZldlcX[fi_XZ`XcX[\i\Z_X ( () IfkX\c8ZZ_XZ`XcX[\i\Z_Xgfi\c:Xiip ( () @ek\iZXdY`Xcfje`YYc\j[\c8ZldlcX[fi ( ()
E\de`Zf
;\jZi`gZ`e
DFM: DFM: DFMO DFMO DFMO DFMO GLJ? GFG O:? O:? O:? O:?;
KiXej]`\i\Ypk\[\Z[`^fi\cXk`mfXc;GKIXc8ZZ KiXej]`\i\Ypk\[\Z[`^fi\cXk`mfXcG:Xc8ZZ KiXej]`\i\Ypk\[\I8D\ok\ieX[`i/$Y`kj Xc8ZZ KiXej]`\i\Ypk\[\I8D\ok\ieX[`i(-$Y`kj Xc8ZZ KiXej]`\i\\c8ZZXI8D\ok\ieX[`i/$Y`kj KiXej]`\i\\c8ZZXI8D\ok\ieX[`i(-$Y`kj :fcfZXYpk\[`i\Zkf\e\cjkXZb JXZXYpk\[`i\Zkf[\cjkXZb @ek\iZXdY`Xi\^`jkifZfe\c8ZldlcX[fi @ek\iZXdY`XYpk\[`i\ZkfZfe\c8ZldlcX[fi @ek\iZXdY`XI8D`e[`i\ZkXZfe\c8ZldlcX[fi @ek\iZXdY`Xcfj[^`kfj[\YXaffi[\e[\cXI8D
8#78";GKI 8#78"G: 8#7I` 8#7;GKI 7I`#8 7;GKI#8 [`i\Zk [`i\Zk 8#Ie 8#[`i\Zk 8#7I` 8#7I`
9pk\ ( ( ( ( ( ( ) ) ( ) ( (
G\i`f[fj fjZ`cX[fi )+ )+ )+ )+ )+ )+ )+ )+ () () () ()
[ D8E@GLC8:@äE;<M8I@89C
;\jZi`gZ`e C`dg`X\c:Xiip C`dg`XY`k[`i\Zkf
G\i`f[fj 9pk\ fjZ`cX[fi ( () ) () ( () ) () ( () ) () ) )+ ) )+ ) )+ ) )+ ) () ) )+
\ FGI8D8 E\de`Zf 8:8CC X[[i(( C:8CC X[[i(- I
G\i`f[fj ;\jZi`gZ`e 9pk\ fjZ`cX[fi CcXdX[fXYjfclkfXjlYilk`eX ) )+ CcXdX[fcXi^fXjlYilk`eX * )+ I\^i\jf[\jlYilk`eX ( )+ I\^i\jf[\`ek\iilgZ`e ( )+ 9i`eZf8Yjfclkf ) )+ 9i`eZfcXi^f * )+ 9i`eZfZfikfi\cXk`mfXcX[`i\ZZ`e ) )+ 9i`eZf`e[`i\Zkfi\cXk`mfXc;GKI ( )+ 9i`eZXj`\c8ZldlcX[fi\jZ\if ) )+ 9i`eZXj`\c8ZldlcX[fief\jZ\if ) )+ 9i`eZXj`\c:Xiip\j(c^`Zf ) )+ 9i`eZXj`\c:Xiip\j'c^`Zf ) )+ 9i`eZXj`\cY`k[`i\Zkf\j(c^`Zf * )+ 9i`eZXj`\cY`k[`i\Zkf\j'c^`Zf * )+ 9i`eZXj`\cY`k[`i\Zkf\j(c^`Zfpc`dg`X\cY`k * )+ :fdgXiXYpk\[`iZfe8ZZpYi`eZXj`efjfe`^lXc\j * )+ :fdgXiXYpk\`ed%Zfe8ZZpYi`eZXj`efjfe`^lXc\j * )+ :fdgXiX[Xkf`ed%Zfei\^%pYi`eZXj`efjfe`^lXc\j * )+ :fdgXiX[Xkf`ed%Zfe`e[`i\ZkfpYi`eZXj`efjfe`^lXc\j * )+ ;\Zi\d\ekXi\^`jkifpYi`eZXj`ef\jZ\if ) )+ ;\Zi\d\ekXYpk\[`i\ZkfpYi`eZXj`ef\jZ\if * )+ EfFg\iXZ`e ( ()
Z KI8EJ=
8N DK 68
699 O O O
;\jZi`gZ`e 9pk\ KiXej]`\i\\ci\^`jkifXc8ZldlcX[fi ( KiXej]`\iXYpk\[`i\ZkfXc8ZldlcX[fi ) KiXej]`\i\I8D`e[`i\ZkXXc8ZldlcX[fi ( KiXej]`\i\[Xkf`ed\[`XkfXc8ZldlcX[fi ) KiXej]`\i\\c8ZldlcX[fiXcI\^`jkif ( KiXej]`\i\Ypk\[`i\ZkfXcI\^`jkif ) KiXej]`\i\[Xkf`ed\[`XkfXcI\^`jkif ) KiXej]`\i\\c8ZldlcX[fiXYpk\[`i\Zkf ) KiXej]`\i\i\^`jkifXYpk\[`i\Zkf ) KiXej]`\i\Ypk\[`i\ZkfXYpk\[`i\Zkf * KiXej]`\i\I8D`e[`i\ZkXXYpk\[`i\Zkf ) KiXej]`\i\[Xkf`ed\[`XkfXYpk\[`i\Zkf * KiXej]`\i\\c8ZldlcX[fiXI8D`e[`i\ZkX ( KiXej]`\iXYpk\[`i\ZkfXI8D`e[`i\ZkX ) KiXej]`\i\[Xkf`ed\[`XkfXI8D`e[`i\ZkX ) :Xi^X\c;GKIZfeZfejkXek\[\(-$Y`kj *
6998 O O O
6CA8!W^i O $ $
8?C: O $ $
8AG8 ' $ $
G\i`f[fj fjZ`cX[fi () () () () () )+ () () )+ )+ )+ )+ () )+ () )+
EfkXji\cXZ`feX[XjZfecfjdf[fj[\[`i\ZZ`feXd`\ekf[\[Xkfj1 Ie I\^`jkifj[\kiXYXafI'$I. ;`i\Zk ()/cfZXc`[X[\j[\I8D`ek\ieX#ZlXchl`\igl\ikf[\<&Jfi\^J=I 7I` ;`i\ZZ`feXd`\ekf`e[`i\Zkf[\I8D`ek\ieXmXI'fI( [XkX :fejkXek\[\/$Y`kj`eZcl`[X\ecX`ejkilZZ`e [XkX(- :fejkXek\[\(-$Y`kj`eZcl`[X\ecX`ejkilZZ`e 9`k ()/Y`kj[\[`i[`i\Zkf#ZlXchl`\ig`e[\<&JfY`kj[\i\^J=I EfkXji\cXZ`feX[XjZfecfjdf[fj[\[`i\ZZ`feXd`\ekf[\gif^iXdX1 X[[i(- ;`i\ZZ`e[\jk`efgXiXC:8CCpCADG#cXZlXcgl\[\\jkXi[\ekif [\cfj-+BY`k\j[\c\jgXZ`f[\d\dfi`X[\gif^iXdXIFD % X[[i(( ;`i\ZZ`e[\jk`efgXiX8:8CCp8ADG#cXZlXcgl\[\\jkXi[\ekif [\cd`jdfYcfhl\[\)BY`k\j[\d\dfi`X[\gif^iXdXZfdf\c gi`d\iYpk\[\j`^l`\ek\`ejkilZZ`e% I\c JADGpkf[fjcfjYi`eZfjZfe[`Z`feXc\j`eZclp\eleYpk\[\f]]j\k [\/Y`kj%
I<>@JKIF;<K BDK8!W^i BJA DGA!8!W^i O O ' O ' O $ $ O $ O $ $ $ $ $ $ $
GA8 O $ $
GG8 O $ $
=`^liX,%('/ I\jld\e[\cZfealekf[\`ejkilZZ`fe\j[\cd`ZifZfekifcX[fiD:J$,(%
296
ELECTRÓNICA • MIJAREZ
H:I78 ( $ $
HJ77 O O O
8N DK
68
5 El popular microcontrolador
6. Absoluto 7. Largo 8. Indexado El formato de los modos de direccionamiento que incluye el código de operación de la instrucción y la dirección de sus operandos se muestran claramente en la figura 5.109. a) Direccionamiento por registro
Código de operación (5)
b) Direccionamiento directo
Código de operación (8)
c) Direccionamiento indirecto
n (3)
Código de operación (7)
Dirección directa
n (1)
d) Direccionamiento inmediato
Código de operación (8)
Dato inmediato (8)
e) Direccionamiento relativo
Código de operación (8)
Desplazamiento relativo (8)
f) Direccionamiento absoluto
Dir A8-A10 (3)
Código de operación (5)
g) Direccionamiento largo
Código de operación (8)
h) Direccionamiento indexado
PC o DPTR
Registro base
Dirección A0-A7 (8)
Dirección A0-A7 (8)
Dirección A8-A15 (8)
Acc
Desplazamiento
Dirección resultante
=`^liX,%('0 Df[fj[\[`i\ZZ`feXd`\ekf#`eZclp\e[fZ[`^f[\fg\iXZ`epfg\iXe[fj%
Direccionamiento por registro El direccionamiento por registro se indica mediante el símbolo Rn, donde n varía de 0 a 7; es decir, se cuenta con 8 registros funcionales numerados de R0 a R7. La codificación para las instrucciones que usan este direccionamiento es de un byte. Para especificar el registro preciso, se utilizan los tres bits menos significativos, como se ilustra en la figura 5.109 a). Por ejemplo, para transferir el contenido del registro R1 al acumulador, se utiliza la siguiente instrucción: MOV
A, R1
Entonces, el código de operación para la instrucción anterior es 11101001B. En este caso, los cinco bits más significativos, 11101, indican la instrucción y los tres bits menos significativos, 001, seleccionan el registro. Los registros utilizados corresponden a 1 de los 4 bancos de registros especificados en el mapa de memoria de la RAM interna del 8051, los cuales ocupan los primeros 32 bytes (00H a 1FH). De estos bancos, solo uno se encuentra activo en un momento dado. Al inicializar el sistema o al proporcionarse un pulso de RESET al microcontrolador, este activa el banco 0; sin embargo, es posible seleccionar cualquier otro banco usando los bits RS1 y RS0, que corresponden a las posiciones 3 y 4, respectivamente, del registro de banderas, PSW. Por ejemplo, para seleccionar el banco 2 se utiliza la siguiente instrucción:
grupo editorial patria®
297
5 El popular microcontrolador
MOV
PSW,#00010000B
Pero, también existen instrucciones que operan con un registro específico, como el acumulador, el apuntador de datos, etcétera; por tanto, no se requieren bits de dirección, ya que en estos casos, el registro se indica en el mismo código de operación. Las instrucciones que utilizan un registro específico se refieren a este mismo como: A, para el acumulador; DPTR, para el apuntador de datos; PC, para el contador de programa; C, para la bandera de acarreo o carry; y los registros AB, para el acumulador y registro B. Por ejemplo, MOVX A @DPTR, es una instrucción que transfiere el contenido del registro acumulador a la dirección de memoria externa de 16 bits, especificada por el registro DPTR. Donde el código de operación es de un byte y se indica como 11110000B. Direccionamiento directo Con el direccionamiento directo es posible acceder a cualquier variable o registro que se encuentre en algunos de los dos espacios de la RAM interna (256 bytes) incorporada en el microcontrolador. Por esta razón y con el fin de especificar la localidad a utilizar, en este direccionamiento se agrega un byte adicional al código de operación, como se muestra en la figura 5.109b). La dirección directa de la parte baja de la RAM es de 00H a 7FH, mientras que la de la parte alta es de 80H a FFH, como se muestra en la figura 5.89. La parte alta corresponde a los registros SFR y se puede acceder a ellos usando sus direcciones directas; sin embargo, la mayoría de los programas ensambladores, como el ASM51 de Intel, aceptan y entienden las abreviaturas de los nemónicos. Por ejemplo, la dirección del puerto P1 es la 90H y se puede utilizar usando una instrucción de direccionamiento directo: MOV
90H, A
Esta instrucción transfiere el contenido del acumulador al puerto P1. Sin embargo, no es necesario saber la dirección, esta instrucción también puede utilizarse como: MOV
P1, A
Así, la codificación completa de esta instrucción es: 11110101 para el código de operación 10010000 para la dirección directa del puerto P1. En lenguaje de máquina, F5H y 90H son los bytes que conforman la instrucción anterior. Direccionamiento indirecto El direccionamiento indirecto se utiliza para manipular localidades secuenciales en memoria, valores indexados dentro de tablas de memoria RAM, cadenas de caracteres o números de múltiple precisión. No obstante, únicamente se pueden utilizar los registros R0 y R1, como registros apuntadores; en este caso, su contenido indica la dirección de la memoria RAM interna en donde se escriben o leen los datos. Este direccionamiento es muy útil, ya que permite identificar una variable cuando su dirección se modifica o determina el momento de correr un programa (run-time). Lo anterior no es posible usando los direccionamientos por registro y directo, debido a que estos requieren que se conozcan las direcciones, directa o de registro, al momento que se ensambla el programa. La codificación para el direccionamiento indirecto contiene solo un byte, como se aprecia en la figura 5.109c), donde el bit menos significativo indica cuál registro, ya sea R0 o R1, se utiliza como apuntador. En el lenguaje ensamblador del 8051, el direccionamiento indirecto se representa usando el símbolo arroba (@), como prefijo para R0 o R1, como se ilustra en el conjunto de instrucciones de la figura 5.108. Por ejemplo, si el contenido del registro R1 es 50H y el contenido del acumulador es 77H, la instrucción es: MOV
298
@R1, A
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Así, esta instrucción transferirá el contenido del acumulador, 77H, a la dirección 50H de la RAM interna. El código de operación para esta instrucción es F7H, pero si se usa el registro R0 en lugar de R1, el código de operación sería F6H, ya que el bit menos significativo determina el registro a usar. Direccionamiento inmediato Este direccionamiento se utiliza cuando el operando “fuente” es una constante en lugar de una variable; esto es, la instrucción usa un valor conocido al momento de ensamblar el programa, de tal forma que la constante puede añadirse a la instrucción como un byte de dato inmediato. Por consiguiente, se añade un byte al código de operación, como se ilustra en la figura 5.109d). Para indicar un operando como constante, los programas ensambladores usan el símbolo de número (#) precedido del operando. De esta manera, el ensamblador interpreta la constante y la incorpora en la instrucción. Por ejemplo: MOV
A,#19H
Esta es una instrucción que carga el valor 19H en el acumulador. El valor de la constante es el número #19H, pero si se omite la notación hexadecimal, H, y se usa solo #19, el ensamblador asume que la notación se encuentra en decimal y cargaría el número 13H. Asimismo, el ensamblador también interpreta las constantes en decimal cuando al número le sigue el prefijo “D”. Por tanto, la constante anterior en decimal se puede escribir como #19D. Todas las instrucciones usan constantes de 8 bits, a excepción del uso del registro DPTR. En este caso, se requiere de una constante de 16 bits y la instrucción utiliza 3 bytes. Por ejemplo: MOV
DPTR,#8000H
Esta es una instrucción que carga el contenido del apuntador de datos con el número 8000H. La codificación completa para la instrucción anterior es: 10010000 para el código de operación 10000000 para el contenido de DPH 00000000 para el contenido de DPL En lenguaje de máquina, 90H, 80H y 00H, son los bytes que conforman esta instrucción. Direccionamiento relativo El direccionamiento relativo se relaciona con ciertas instrucciones de brinco. Este tipo de direccionamiento agrega un byte con signo al contador de programa, PC, para construir la dirección de la siguiente instrucción a ejecutar. Debido a que se utiliza un número de 8 bits con signo (representación en 2 complemento), el desplazamiento o brinco es de –128 a 127 ubicaciones. En este tipo de direccionamiento, este byte de desplazamiento se agrega al código de operación, como se muestra en la figura 5.109e). Para efectuar el desplazamiento relativo, el contador se incrementa a la dirección a la que se dirige después de la instrucción de brinco; por esta razón, la nueva dirección del contador de programa es relativa a la siguiente instrucción, no a la dirección de la instrucción de brinco, como se ilustra en la figura 5.110. Por lo general, el programador no se ocupa del cálculo de la dirección usando el desplazamiento relativo, ya que por lo común utiliza etiquetas que indican la ubicación en el programa, donde se desea que se realice el brinco, y el programa ensamblador realiza de manera automática este cálculo. Por ejemplo, si la etiqueta ADELANTE representa la dirección 2009H y la instrucción SJMP ADELANTE se localiza en las direcciones 2000H y 2001H de la memoria de programa, el ensamblador requerirá realizar un desplazamiento relativo; es decir, sumar el valor 07H al byte bajo del PC. Para esto, primero el PC se incrementa y se convierte en PC1 2002H, y posteriormente se agrega el byte de desplazamiento; esto es 2002H 07H 2009H, como se muestra en la figura 5.110a). Este mismo procedimiento se realiza si la etiqueta a donde se desea brincar se encuentra en una ubicación atrás del PC, como se ilustra en la figura 5.110b).
grupo editorial patria®
299
5 El popular microcontrolador
200BH
200BH
200AH
200AH 7
2009H
2009H
6
2008H
El valor del brinco relativo desde la localidad 2002H es 07H (2002H + 07H = 2009H)
4
2006H
3
2005H
2
2004H
1
2003H
2000H
2007H 2006H
07H 80H
SJMP 2006H
–3 –4 –5
2005H 2004H 2003H 2002H
2002H 2001H
–1 –2
2008H
5
2007H
FBH 80H
El valor del brinco relativo desde la localidad 200BH es –05H o FBH (200BH – 05H = 2006H)
2001H
SJMP 2009H
2000H
1FFFH
1FFFH
1FFEH
1FFEH
Memoria de programa a)
Memoria de programa b)
=`^liX,%((' :}cZlcf[\cX[`i\ZZ`e[\cG:\ecXd\dfi`X[\gif^iXdX#ljXe[f[`i\ZZ`feXd`\ekfi\cXk`mf% X 9i`eZf_XZ`XX[\cXek\%Y 9i`eZf_XZ`XXki}j%
La desventaja del brinco relativo es que el número de localidades a brincar es limitado; por tanto, si se excede el rango, el ensamblador indicará un error al momento del ensamblado. De esta manera, la codificación completa de la instrucción SJMP ADELANTE es: 10000000H para el código de operación 00000111H el valor del brinco relativo. En lenguaje de máquina, 80H y 07H, constituyen los bytes que conforman esta instrucción. Direccionamiento absoluto y direccionamiento largo Las instrucciones de direccionamiento absoluto son únicamente AJMP y ACALL, cada una de las cuales utiliza 2 bytes en su codificación completa; de estos, 11 bits son utilizados para proveer la dirección de destino: A10-A8 en el byte que contiene el código de operación y A7-A0 en el segundo byte, tal como se aprecia en la figura 5.109f ). Lo anterior permite llevar a cabo brincos de hasta 2 Kbytes en la memoria de código; por ende, tanto la instrucción que sigue de la instrucción de brinco, AJMP o ACALL, como la instrucción de destino deben estar localizadas en el bloque de 2 Kbytes. Por tanto, al usar las instrucciones AJMP y ACALL dividimos nuestro mapa de memoria de programa de 64 Kbytes en 32 bloques de 2 Kbytes, usando los 5 bits más significativos de la dirección de destino del contador de programa, PC, mientras que los 11 bits restantes determinan el rango de la dirección de origen y de destino, como se observa en la figura 5.111. Por ejemplo, si tenemos una etiqueta definida como INICIO ubicada en la dirección 0064H y la instrucción AJMP INICIO se localiza en las direcciones 0400H y 0401H; en consecuencia, el programa ensamblador codificará la dirección de destino de la siguiente forma: 00000001 01100100
300
Primer byte (A10-A8) y (código de operación) Segundo byte (A7-A0)
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
FFFFH Bloque 31 de 2 Kbites F 8 00H F7FFH .. . 1 8 00H 17FFH Bloque 2 de 2 Kbites 1 000H 0F F F H
Memoria de código 32 r 2K
A15
A10
A0
Bloque 1 de 2 Kbites 08 00H 07 F F H Bloque 0 de 2 Kbites
Los 5 bits más significativos seleccionan el banco de 2 kbites
Los 11 bits menos significativos determinan el rango de la dirección origen y destino dentro del bloque de 2 Kbites
0000H
a)
a)
=`^liX,%((( :f[`]`ZXZ`eZfdgc\kXgXiX[`i\ZZ`feXd`\ekfXYjfclkf%X DXgX[\d\dfi`X%Y
Los 11 bits menos significativos contienen la dirección de destino, 0000 0000 0110 0100B, mientras que los 5 bits más significativos del contador de programa, PC, no se modifican cuando se ejecuta la instrucción y contienen la dirección del bloque de los 2 Kbytes seleccionados (00000B); en este caso el bloque 0, tal como se puede observar en la figura 5.111a). La ventaja del direccionamiento absoluto es que este tipo de direccionamiento solo utiliza 2 bytes en su codificación completa. Mientras que su desventaja es su rango limitado de la dirección de destino, por lo que se requiere utilizar código que depende de su posición. Por otro lado, el direccionamiento largo utiliza 3 bytes en su codificación completa, compuesto por 1 byte para el código de operación y 2 bytes (16 bits) para la dirección de destino, como se ilustra en la figura 5.109g). Por esta razón, el rango de la dirección de origen y de destino cubre los 64 Kbytes del espacio total de direccionamiento de la memoria de programa. Es importante resaltar, que las únicas instrucciones que utilizan este direccionamiento son LCALL y LJMP. Direccionamiento indexado El direccionamiento indexado se utiliza para la búsqueda de datos en tablas o para crear tablas de salto. Este direccionamiento emplea un registro base, que puede ser el contador de programa, PC, o el registro apuntador de datos, DPTR, y un desplazamiento expresado por el acumulador. Con estos registros, se forma una dirección para las instrucciones JMP y MOVC, de la forma en que se ilustra en la figura 5.109h). Estas instrucciones pueden ser MOVC A, @A (registro base) o JMP @A DPTR. La instrucción MOVC, por ejemplo, transfiere al acumulador un byte de código o constante del programa localizado en la memoria de código tipo ROM. La dirección del byte escogido es la suma de los 8 bits del contenido original del acumulador y los 16 bits del registro base, el cual puede ser el DPTR o el PC. Cuando se utiliza el PC, este es incre-
grupo editorial patria®
301
5 El popular microcontrolador
mentado a la dirección de la siguiente instrucción, antes de ser sumado con el acumulador. No obstante, en cualquiera de los casos, el registro base no es alterado. La suma de los 16 bits es optimizada con esta instrucción. Un acarreo de salida del byte de orden bajo se propaga al byte de orden alto. Por ejemplo, la instrucción MOVC A, @A DPTR utiliza un solo byte, mientras que el código de operación, en este caso el número 93H, especifica tanto la operación como el modo de direccionamiento. La instrucción transfiere, hacia el acumulador, un byte de datos del programa almacenado en la memoria ROM. La dirección del byte de datos en la memoria de código se obtiene sumando el registro índice (acumulador) con el registro base (DPTR). El valor del índice se pierde al ejecutarse la instrucción, debido a que el valor transferido desde la memoria tipo ROM sustituye el valor del índice.
Clasificación de instrucciones Las instrucciones del microcontrolador MCS-51 se dividen en cinco grupos funcionales, como se ilustra en la figura 5.108. Estos grupos contienen las siguientes instrucciones: t t t t t
Aritméticas Lógicas De transferencia de datos Booleanas De brincos condicionales o incondicionales de programa
Además de estudiar estas instrucciones, adicionalmente analizaremos de manera general las directivas más comunes, consideradas como seudoinstrucciones, y las reglas para las etiquetas. La figura 5.108 constituye una referencia rápida muy útil para familiarizarse con el conjunto de instrucciones del MCS-51. Por tanto, en esta sección examinaremos las instrucciones contenidas en cada grupo y, posteriormente, resolveremos algunos ejemplos típicos usando las instrucciones más representativas de cada grupo. Instrucciones aritméticas Las instrucciones aritméticas se encuentran agrupadas y descritas en la figura 5.108a), donde también se muestran las posibles formas de realizar una operación aritmética de acuerdo con los modos de direccionamiento que soporta. Por ejemplo, la instrucción de suma sin acarreo, ADD A, soporta los siguientes modos de direccionamiento:
ADD
A,R3
(Direccionamiento por registro)
ADD
A,03H
(Direccionamiento directo)
ADD
A,@R0
(Direccionamiento indirecto)
ADD
A,#55H
(Direccionamiento inmediato)
Además, este grupo muestra las instrucciones de suma con acarreo (ADDC), de resta (SUBB), de incrementos (INC), de decrementos (DEC), de multiplicaciones (MUL) y de divisiones (DIV). Es importante hacer notar que todas las instrucciones aritméticas se ejecutan en un ciclo de máquina, 12 periodos del oscilador, a excepción de las instrucciones INC DPTR, la cual utiliza dos ciclos de máquina, MUL AB y DIV AB, que utilizan cuatro ciclos de máquina cada una. A menudo, se utiliza un cristal de 12 MHz, debido a que con esta base de tiempo los ciclos de máquina duran 1 μs. La instrucción DA, la cual ajusta el acumulador a decimal, se encuentra en este grupo, y se utiliza en operaciones BCD, a lo cual haremos referencia en los ejemplos típicos. Instrucciones lógicas Las instrucciones lógicas del 8051 llevan a cabo las operaciones booleanas AND, OR y XOR, como lo muestra la figura 5.108b). Dichas instrucciones se pueden ejecutar sobre bytes de datos, o bit por bit, de acuerdo con sus modos de direccionamiento. En el caso de que las operaciones se efectúen sobre bytes, el resultado se puede almacenar en el acumulador, por ejemplo:
302
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
ANL
A,R5
(Direccionamiento por registro)
ANL
A,20H
(Direccionamiento directo)
ANL
A,@R0
(Direccionamiento indirecto)
ANL
A,#55H
(Direccionamiento inmediato)
Todas las instrucciones que utilizan el acumulador como uno de sus operandos se ejecutan en un ciclo de máquina; en cambio, las instrucciones que no utilizan el acumulador requieren dos ciclos de máquina. Sin embargo, las operaciones lógicas no necesariamente necesitan al acumulador para realizar sus operaciones; estas se pueden efectuar en cualquier byte del espacio asignado a la memoria RAM interna del microcontrolador. Por ejemplo, la instrucción ANL P1,#0FH (direccionamiento directo con dato inmediato), establece en cero, el nibble alto del puerto P1, enmascarando el nibble bajo. Esta instrucción lleva a cabo una operación con secuencia lectura-modificaciónescritura. De esta manera, primero lee los 8 bits del puerto P1; después, realiza la operación AND en cada uno de los bits leídos con cada uno de los bits correspondientes al dato inmediato; y por último, el resultado se escribe en el puerto P1. Por otro lado, si las operaciones se realizan bit por bit, el resultado se almacena en el bit de acarreo carry, C, por ejemplo: ANL
C,P1.0
(AND de bit directo con el Carry)
ORL
C,P1.0
(OR de bit directo con el Carry)
Existe un par de instrucciones interesantes para aplicaciones lógicas, en las cuales el símbolo de diagonal (/), o slash, precede a uno de los operandos. Estas instrucciones son: ANL
C,/P1.7
(AND del complemento de bit directo con el Carry)
ORL
C,/P1.7
(OR del complemento de bit directo con el Carry)
En el lenguaje ensamblador del 8051, se indica que el complemento lógico del bit direccionado se usa como el valor fuente, pero el bit original no es afectado. Las instrucciones que usa el acumulador para corrimiento o rotación de bits (RR, RL, RRC, RLC) y SWAP operan de manera similar a lo explicado cuando usamos la calculadora lógica de la sección Desmitificando al microprocesador. Asimismo, en este grupo también se incluyen las instrucciones CLR y CPL, las cuales limpian y complementan (operación NOT) los bits del acumulador. Instrucciones para transferencia de datos El grueso del conjunto de instrucciones del 8051 se relaciona con la transferencia de datos, como lo ilustra la figura 5.108c). Esta transferencia de datos se puede efectuar tanto en los espacios de direccionamiento de la RAM interna, como en los espacios de direccionamiento de memoria externa y puertos de E/S. RAM interna Las instrucciones que involucran la transferencia de datos dentro de los espacios de direccionamiento de la RAM interna del microcontrolador se ejecutan en 1 o 2 ciclos de máquina. Dicha transferencia puede realizarse entre cualquier par de localidades de la RAM interna (00H–7FH) o registros SFR (80H–FFH), sin la necesidad de usar el acumulador. Cabe recordar que solo las versiones 8032/8052 pueden acceder al espacio de 80H a FFH usando direccionamiento indirecto; por tanto, se recomienda tener cuidado con las versiones 8031/8051, las cuales no tienen f ísicamente implementada esa área de memoria. Si se accede a esa área, los datos escritos se pierden y los leídos son indeterminados.
grupo editorial patria®
303
5 El popular microcontrolador
Como ejemplo de transferencias de datos en la parte alta de la RAM incorporada en el μC (80H–FFH), vamos a considerar que el registro B tiene el valor 55H, el acumulador tiene el dato 44H y el registro R0 tiene el dato F0H (dirección del registro B). De esta manera, si ejecutamos la instrucción XCH A,@R0 (intercambio de RAM indirecta con el acumulador), entonces el contenido del acumulador es A 55H y el registro es B 44H. Como se puede ver, esta instrucción usó el direccionamiento indirecto para transferir datos entre registros SFR; sin embargo, también se puede obtener el mismo resultado usando direccionamiento directo, mediante la instrucción XCH A,0F0H (intercambio acumulador con byte directo). La transferencia de datos se puede llevar a cabo entre registros y localidades de la RAM interna. Por ejemplo, para transferir el contenido del acumulador a la localidad 40H de la RAM interna y transferir el contenido de la localidad 50H de la RAM interna al registro R0, podemos usar las siguientes instrucciones: MOV
40H,A
(Transfiere el acumulador a byte directo)
MOV
R0,50H
(Transfiere byte directo a registro)
Otro ejemplo típico es transferir bloques de datos dentro de la memoria RAM interna. Por ejemplo, vamos a suponer que se requiere leer 05H datos del puerto P1 y almacenarlos conforme se van leyendo en la RAM interna, a partir de la localidad 20H. Para esto, podríamos usar el siguiente programa: TRANSFE_BLOQUE: MOV RO,#20H OTRO: MOV @R0,P1 INC R0 CJNE R0,#26H,OTRO END En este ejemplo se transfieren 6 datos leídos del puerto P1 a la RAM interna, empezando en la localidad 20H y terminando en la localidad 25H. En este caso, la primera instrucción transfiere la constante 20H al registro R0, el cual sirve como apuntador de datos de la RAM interna; la segunda instrucción transfiere el contenido del puerto P1 a la localidad de la RAM interna especificada por el registro R0; la tercera instrucción incrementa el apuntador de datos, y la cuarta instrucción compara el contenido del apuntador con la última localidad (más uno) que necesitamos usar. Si el resultado es diferente, vuelve a leer del puerto P1; pero, si el resultado es igual, esto significa que ya leyó los 5H datos y continúa con la siguiente instrucción, aunque en este caso termina el programa. Las operaciones con el puntero de pila o stack pointer, SP, usan únicamente instrucciones con direccionamiento directo, además de que se llevan a cabo en la RAM interna. Dichas instrucciones son PUSH y POP. La instrucción PUSH incrementa en 1 el puntero de pila (SP SP 1) y después transfiere el contenido de la variable (byte indicado) a la localidad de la RAM interna direccionada por el SP. Por ejemplo, si el puntero de pila SP 07H, como ocurre después de un RESET, y tenemos la siguiente secuencia de instrucciones:
304
MOV
A,#99H
MOV
B,#75H
PUSH
ACC
PUSH
0F0
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
después de ejecutarse estas instrucciones, el valor del SP 09H y el valor de la localidad 08H y 09H de la RAM interna serán 99H y 75H, respectivamente. Las primeras dos instrucciones transfieren las constantes 99H y 75H al acumulador y registro B, respectivamente. Como el SP 07H, después de ejecutarse la instrucción PUSH ACC, el SP 08H, al tiempo que el contenido del acumulador (99H) se transferirá a la localidad 08H de la RAM interna; por tanto, al ejecutarse el PUSH 0F0H, el SP 09H, al tiempo que el contenido del registro B (75H) se transferirá a la localidad 09H de la RAM interna. A la inversa, la instrucción POP transfiere el contenido de la localidad de la RAM interna direccionada por el SP a la variable (byte indicado) y después decrementa el SP en 1 (SP SP–1). Así, por ejemplo, si tenemos la siguiente secuencia de instrucciones: MOV
SP,#20H
MOV
20H,#33H
MOV
1FH,#22H
POP
ACC
POP
B
después de ejecutarse esta secuencia de instrucciones, el SP 1EH, el acumulador A 33H y el registro B 22H. La primera instrucción transfiere la constante 20H al SP, para inicializar el SP; la segunda y tercera instrucciones almacenan los datos 33H y 22H en las localidades 20H y 1FH de la RAM interna; la cuarta instrucción, POP ACC, transfiere al acumulador el contenido de la localidad apuntada por el SP (20H), por lo que A 22H, y después decrementa el SP en uno, SP 1FH; por último, la quinta instrucción, POP B, transfiere al registro B el contenido de la localidad apuntada por el SP (IFH), por lo que B 33H, y posteriormente decrementa el SP en uno, SP 1EH. RAM externa Las instrucciones de transferencia de datos entre la RAM interna y la RAM externa del microcontrolador usan únicamente direccionamiento indirecto. La dirección indirecta puede ser especificada por 8 bits o 16 bits, dependiendo de la aplicación. Cuando se utiliza 1 byte de dirección, se emplea el registro R0 o R1 del banco de registros seleccionado (@Ri); sin embargo, si el direccionamiento es de 16 bits se emplea el registro DPTR (@DPTR). Usando 16 bits de dirección se cubre el espacio total de direccionamiento de la RAM externa y los puertos de E/S del microcontrolador, esto es 64 Kbytes; la desventaja de este direccionamiento es que se utilizan los 8 bits del puerto P2 para proporcionar el byte alto del bus de direcciones, deshabilitando el puerto P2 como puerto de E/S. Por otro lado, las direcciones de 8 bits permiten el acceso a solo 256 bytes de memoria RAM externa, pero no sacrifican el puerto P2, como se explicó en la sección previa Acceso a la memoria externa de datos. Todas las instrucciones de transferencia de datos externos utilizan el acumulador como registro fuente o destino y se llevan a cabo en 2 ciclos de máquina. Las señales de sincronización de lectura y escritura, /RD y /WR, se activan únicamente cuando se ejecuta la instrucción MOVX. Si esta instrucción no se utiliza, estas señales se encuentran disponibles como terminales de E/S de propósito general, normalmente con un nivel lógico 1. Ahora, a manera de ejemplo vamos a realizar una secuencia de instrucciones para transferir los datos de las localidades 17FFH y 1800H de la memoria RAM externa a los registros R3 y R4, respectivamente. MOV
DPTR
MOV
A,@DPTR
MOV
R3,A
INC
DPTR
MOV
A,@DPTR
MOV
R4,A
#17FFH
grupo editorial patria®
305
5 El popular microcontrolador
Como podemos observar en este ejemplo, los datos primero deben ser leídos de las localidades de la RAM externa al acumulador y después transferidos a los registros correspondientes. La primera instrucción inicializa el apuntado de datos, DPTR, con la primera dirección. La segunda instrucción lee el byte de la localidad de memoria externa 17FFH y lo transfiere al acumulador. La tercera instrucción transfiere el contenido del acumulador al registro R3. La cuarta instrucción incrementa el apuntador de datos para apuntar a la siguiente dirección. La quinta instrucción lee el byte de la localidad de memoria externa 1800H y lo transfiere al acumulador. Por último, la sexta instrucción transfiere el contenido del acumulador al registro R4. Una aplicación que es muy común, consiste en transferir un bloque de datos entre la RAM externa y la RAM interna. Supongamos que requerimos transferir 10H datos de la memoria RAM externa a la memoria RAM interna. En este caso, los datos se encuentran en la RAM externa, a partir de la localidad FF00H, y en la interna se almacenan a partir de la localidad 40H. La secuencia de instrucciones para realizar esta tarea es: TRANSFE_EXT_INT: MOV DPTR,#0FF00H MOV R0,#40H OTRO: MOVX A,@DPTR MOV @RO,A INC DPTR INC RO CJNE R0,#51H,OTRO END En este ejemplo usamos dos apuntadores, uno de 16 bits para la RAM externa y uno de 8 bits para la RAM interna. La primera instrucción inicializa el apuntado de datos, DPTR, con la dirección de la RAM externa. La segunda instrucción inicializa el apuntador de datos de 8 bits, R0, con la dirección de la RAM interna. La tercera instrucción transfiere al acumulador, A, el contenido de la localidad direccionada por el registro DPTR. La cuarta instrucción transfiere el contenido del acumulador a la dirección de la RAM interna direccionada por el registro R0. La quinta instrucción incrementa el apuntador de datos, DPTR, para apuntar a la siguiente dirección de la RAM externa. La sexta instrucción incrementa el apuntador de datos, R0, para apuntar a la siguiente dirección de la RAM interna. La séptima instrucción compara el contenido del apuntador de datos de 8 bits, R0, con la última localidad (más uno) que necesitamos usar; si el resultado es diferente, vuelve a leer de la RAM externa, pero si el resultado es igual significa que ya leyó los 10H datos y continúa con la siguiente instrucción, aunque en este caso aquí se termina el programa. Búsqueda de datos en tablas La transferencia de datos (constantes), organizados como tablas, desde la memoria de programa hacia el microcontrolador se realiza mediante dos instrucciones. Así, los datos solo pueden leerse debido a que se encuentran en localidades de memoria tipo ROM. El nemónico de estas instrucciones es MOVC o transfiere constante (move constant, en inglés). Estas instrucciones utilizan el contador de programa, PC, o el registro apuntador de datos, DPTR, como registro base y el acumulador como registro que proporciona un desplazamiento de 8 bits. Por ejemplo, la instrucción MOVC A,@ADPTR puede leer constantes de una tabla de 256 elementos, numerados desde 0 hasta 255. El apuntador de datos, DPTR, se carga con la dirección inicial de la tabla, mientras que el elemento que se desea leer se carga en el acumulador. La instrucción MOVC A,@APC funciona de manera similar, la única diferencia es que el registro base es el contador de programa, PC. A menudo, la forma de acceder a una tabla de constantes es por medio de una subrutina. En este caso, primero se carga en el acumulador el elemento deseado de la tabla y posteriormente se llama a la subrutina. Esta secuencia se puede implementar de la siguiente forma:
306
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
INICIO: MOV A,#ELEMENTO_DESEADO CALL BUSCAR_DATO : JMP INICIO BUSCAR_DATO: INC A MOVC A,@APC RET TABLA: DB DATO, DATO, DATO, DATO, DATO END En este caso, la tabla se coloca después de la instrucción RET (regreso de la subrutina). En esta secuencia de instrucciones se requiere la instrucción INC A, debido a que al ejecutar la instrucción MOVC A,@APC, el contador de programa, PC, apunta a la dirección de la siguiente instrucción que se va a ejecutar, la cual, en este caso, es la instrucción RET. Al incrementar el acumulador podremos sobrepasar la instrucción RET y llevar a cabo la búsqueda de datos de la tabla. Sin embargo, al usar esta estrategia reducimos el número de elementos de la tabla de 256 a 255, esto es de 00H a FEH. Lo anterior se debe a que cuando el contador de programa es FFH y se ejecuta la instrucción INC, la cual suma un 1 al acumulador, el resultado sería 00H, puesto que el acumulador es de 8 bits. En esta condición, el contador de programa, PC, intentaría ejecutar la instrucción RET, lo cual no es válido. Por esta razón, los elementos que podríamos usar con la instrucción MOVC A, @APC son de 00H a FEH. En este ejemplo, hemos estado leyendo los datos con el uso de una directiva llamada DB (define byte). Las directivas no son instrucciones, sino comandos o seudoinstrucciones del lenguaje ensamblador, las cuales describiremos de manera general en una sección posterior. Como ejemplo, ahora vamos a realizar una subrutina llamada PRIMOS, la cual nos proporciona en hexadecimal los primeros 09H números primos (2, 3, 5, 7, 11, 13, 17, 19, 23, 29). En esta subrutina, el acumulador nos permite determinar el número primo deseado; por tanto, antes de llamar a la subrutina, primero se carga en el acumulador un número que va de 00H a 09H y después se manda llamar la subrutina PRIMO. La correspondencia entre el número que cargamos en el acumulador con el número primo es la siguiente: Acumulador
Número primo 00H : 08H 09H
02H : 23H 29H
Al concluir la subrutina, en el acumulador se obtiene el número primo deseado. Por ejemplo, vamos a suponer, que el número deseado lo determina el estado del puerto P1; así, al iniciar el programa el puerto P1 07H, como se muestra a continuación: INICIO: MOV A, P1 CALL PRIMO : : JMP INICIO PRIMO: INC A MOVC A, @APC RET TABLA: DB 02H, 03H, 05H, 07H, 11H, 13H, 17H, 19H, 23H, 29H
grupo editorial patria®
307
5 El popular microcontrolador
De acuerdo con lo anterior, la primera instrucción transfiere el número 07H al acumulador. Enseguida, se ejecuta la segunda instrucción CALL, la cual manda realizar la subrutina PRIMO. Al terminar de ejecutarse la subrutina, en el acumulador se obtendrá el número 19H. Los dos puntos (:) indican que el programa continúa ejecutando código, usando el valor del número primo solicitado. Posteriormente, debería usar la instrucción JMP para brincar al inicio del programa y solicitar otro número. Para variar, nos estamos adelantando un poquito, ya que aquí estamos usando instrucciones de brinco, las cuales explicaremos una vez después de analizar las instrucciones booleanas. En el ejemplo anterior solo se utilizaron 10 datos, los cuales podrían calcularse usando operaciones aritméticas, con el fin determinar el número primo requerido. Sin embargo, si la cantidad de números primos se incrementa a 1 000, al utilizar la instrucción MOVC se usarían más localidades de la memoria de programa, debido a que los datos (constantes) se almacenarían en la memoria tipo ROM; no obstante, su ejecución sería más eficiente que calcular cada número primo. Instrucciones booleanas El 8051 contiene un potente procesador de Boole capaz de realizar operaciones sobre bits individuales. Como se ilustró en la figura 5.90, la parte baja (00H–7FH) de la RAM interna contiene 128 bits direccionables, mientras que el espacio de los registros SFR (80H–FFH) contiene otros 128 bits direccionables más. En este caso, cada bit de los puertos es direccionable individualmente y puede tratarse como si fuera un puerto independiente de un bit. Las instrucciones que acceden a estos bits se ilustran en la figura 5.108d), e incluyen tanto operaciones de transferencia de datos y brincos condicionales, como operaciones lógicas AND y OR, capacidad para establecer en 1 o 0 lógicos y complementar. Todas las instrucciones por bit utilizan el direccionamiento directo con las 128 direcciones de bit de la parte baja de la RAM interna, 00H a 7FH, y las 128 direcciones de bit de la parte alta de la RAM interna, 80H a FFH, las cuales corresponden a los registros SFR. Los 128 bits de la parte baja de la RAM interna se localizan desde las direcciones de byte 20H a 2FH, como se ilustró en la figura 5.90. Las direcciones de estos bits se numeran de manera secuencial desde el bit 00H hasta el bit 7FH, los cuales corresponden al bit 0 de la dirección de byte 20H y hasta el bit 7 de la dirección de byte 2FH. Este tipo de operaciones sobre bits es una de las características más importantes de la familia MCS-51. El control, usando bits individuales, es muy frecuente para muchos dispositivos de E/S, como relevadores, solenoides, motores, LED, timbres, alarmas, bocinas o la entrada proveniente de interruptores, dispositivos electrónicos como comparadores o indicadores de estado. Por ejemplo, si conectamos un timbre al pin 1 del puerto P1, el timbre podría activarse si establecemos en 1 este bit del puerto: SETB P1.1. De manera similar, si queremos desactivar el timbre, podemos establecer en 0 este bit del puerto: CLR P1.1. La dirección del puerto P1.1 es 91H, la cual se localiza en la sección de memoria de los registros SFR. Podríamos usar esta dirección en lugar del nombre del bit del puerto P1 y obtendríamos los mismos resultados; esto es: SETB 91H o CLR 91H. Sin embargo, el ensamblador soporta el símbolo P1.1 y realiza, de manera automática, la conversión a la dirección correcta, en este caso la dirección 91H. El procesador de Boole usa como acumulador de bit al bit de acarreo carry de la palabra de estados, PSW. Las instrucciones que usan el bit de acarreo se refieren a este como C y se ensamblan como instrucciones específicas para el acarreo. Puesto que el bit de acarreo, C, reside en el registro PSW, y este es direccionable por bit, también tiene una dirección directa definida como D7H. Los bits del registro PSW, así como otros registros SFR direccionables por bit, tienen nemónicos predefinidos, que el programa ensamblador acepta en vez de la dirección de bit. Por ejemplo, el nemónico para la bandera de acarreo no es C, sino CY, como se ilustró en la figura 5.86. Sin embargo, el ensamblador puede entender ambos nemónicos. Vamos a considerar las siguientes instrucciones: CLR
C
CLR
0D7H
CLR
CY
En este caso, las tres instrucciones realizan la misma operación; no obstante, la primera instrucción es de un solo byte, mientras que la segunda y la tercera son de dos bytes, cada una. El byte adicional en las dos últimas instrucciones es la dirección directa del bit de acarreo, esto es D7H.
308
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
El procesador de Boole nos permite transferir con facilidad el estado de un bit o bandera a un pin de un puerto, o tomar señales de entrada o salida de un puerto como variables de una ecuación booleana. Por ejemplo, vamos a suponer que la variable X F0, la variable Y P1.1 y la variable Z P1.7. Donde, F0 es el nemónico del bit 5 del registro PSW, el cual se usa como bit de propósito general (véase figura 5.86). Bien, con estas variables queremos implementar la función lógica Z X/Y. Para una observación más clara, la figura 5.112 nos muestra la implantación de esta operación booleana simple de manera esquemática.
8051
P1.1
P1.7 F0 PSW
=`^liX,%(() @dgc\d\ekXZ`e[\leXfg\iXZ`eYffc\XeXj`dgc\% La secuencia de instrucciones necesaria para realizar esta operación booleana se muestra a continuación: OPERACION: MOV
C,F0
; 1 ciclo de máquina
ANL
C,/P1.1
; 2 ciclos de máquina
MOV
P1.7,C
; 2 ciclos de máquina
SJMP
OPERACION ; 2 ciclos de máquina
En esta operación, la primera instrucción transfiere a la bandera de carry, C, el contenido del bit F0, del registro PSW. La segunda instrucción realiza la operación lógica AND del complemento del pin P1.1 con el carry, C, y el resultado se almacena en C. La tercera instrucción transfiere el contenido de la bandera de acarreo al pin P1.7. La cuarta instrucción realiza un brinco al inicio del programa para proseguir realizando esta operación de manera continua. Si implementamos la operación booleana anterior usando una compuerta AND 74LS08 y una compuerta NOT 74LS04 que tienen un tiempo de retraso de propagación, tPD, de 7 ns, cada una, el peor caso de retardo de propagación de la operación booleana sería de 14 ns. Este es el tiempo que transcurre desde que sucede una transición en la entrada, P1.1, hasta la aparición del nivel lógico correcto en la salida, P1.7. La pregunta obligada es: ¿cuál sería el peor caso de retraso de propagación de la operación booleana si esta se realiza usando el programa que acabamos de describir? Bien, el peor caso sería que el bit F0 cambie inmediatamente después de ejecutarse la primera instrucción. El cambio no se registraría en la salida hasta que se ejecute la primera, segunda y tercera instrucciones otra vez, lo cual tomaría 11 ciclos de máquina. Si usamos un cristal de 12 MHz, esto sería de 11 μs. Es evidente que no hay comparación entre estas dos implementaciones. Si usamos el código del microcontrolador tomaría aproximadamente 1 000 veces más tiempo que si usamos las compuertas digitales discretas. En resumen, los microcontroladores no son los dispositivos más eficientes en el manejo de eventos que requieren respuestas extremadamente rápidas. ¡No son la panacea! Aún así, los microcontroladores actuales, incluyendo la familia del 8051, han sido mejorados con la incorporación de diferentes periféricos y tiempos de respuesta muy rápidos, de modo que la operación anterior podría realizarse en el orden de las centenas de nanosegundos.22 22
La ventaja para los microcontroladores es que muchas aplicaciones no requieren tiempos de respuesta en extremo reducidos, en particular cuando los microcontroladores tienen que interactuar con humanos. En un automóvil, por ejemplo, si una puerta no se encuentra bien cerrada
grupo editorial patria®
309
5 El popular microcontrolador
El procesador de Boole incluye instrucciones AND y OR lógicas, pero no contiene la instrucción XOR, como en el caso de las instrucciones por byte. Sin embargo, la operación XOR se puede implementar fácilmente por software. Por ejemplo, vamos a suponer que se requiere realizar el OR-EXCLUSIVO entre el pin P1.1 y P1.2, y el resultado reflejarlo en P1.7. Si asignamos variables como Z P1.7, X P1.1 y Y P1.2, una opción podría ser obtener la ecuación booleana de minitérminos de la forma Z X/Y Y/X, y la secuencia de instrucciones podría ser la siguiente: XOR_BOOL: MOV
C,P1.1
ANL
C,/P1.2
MOV
F0,C
MOV
C,P1.2
ANL
C,/P1.1
ORL
C,F0
MOV
P1.7,C
SJMP
XOR_BOOL
Aquí, la primera instrucción transfiere el contenido del pin P1.1 a la bandera de carry, C. La segunda instrucción realiza la primera AND lógica de la ecuación booleana entre C y el complemento del pin P1.2. La tercera instrucción almacena el resultado parcial en la bandera de propósito general F0 del registro PSW. La cuarta instrucción carga el valor de P1.2 en la bandera de carry, C. La quinta instrucción efectúa la segunda AND lógica de la ecuación booleana entre C y el complemento del pin P1.1. La sexta instrucción realiza la OR lógica entre la bandera de carry, C, y el bit F0 que contiene el resultado parcial de la primera AND lógica. La séptima instrucción transfiere el resultado obtenido de la ecuación booleana, almacenado en la bandera de carry, al pin P1.7. La octava instrucción efectúa un brinco al inicio del programa, con el fin de continuar realizando esta operación de manera permanente. Asimismo, existen otras dos maneras de resolver el problema anterior. Una de estas es usar instrucciones de brinco con prueba de bit JB y JNB, y la otra es usar instrucciones de byte incluyendo la instrucción XRL. Aunque esta última no resulta tan eficiente en código, ya que es necesario enmascarar bits y usar instrucciones de brinco con el acumulador. Sin embargo, si usamos instrucciones de Boole, junto con instrucciones de brinco con prueba de bit, basándonos en la tabla de verdad de la XOR, el código puede ser muy eficiente, como se muestra en la siguiente secuencia de instrucciones: XOR: MOV
C, P1.1
JNB
P1.2, BRINCO
CPL
C
BRINCO: MOV
P1.7,C :
En la primera instrucción, el contenido del puerto P1.1 se transfiere a la bandera de carry, C. La segunda instrucción realiza una operación de brinco condicional; si el pin P1.2 0, entonces C tendrá el resultado correcto y brincara a la cuarta instrucción, de lo contrario continuará con la tercera instrucción que realiza el complemento de C para tener el valor correcto en C. Por último, la cuarta instrucción se transfiere el valor de C al pin P1.7. o la presión del aceite disminuye, no necesitamos saberlo en los primeros nanosegundos, incluso no lo necesitamos saber en los primeros microsegundos. Pero, reducir la cantidad de componentes a un solo CI o realizar cambios en el diseño con la sola modificación del software tiene sus ventajas, ya que en un ciclo de producción de un dispositivo el cambio podría ser mínimo.
310
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
En otras palabras, P1.2 P1.1 P1.1 si P1.2 0; si P1.2 1 se realiza el complemento de C para obtener el resultado de acuerdo con la tabla de verdad de la compuerta XOR. Entradas
Salida
Entradas
P1.2 P1.1 P1.7
Salida
P1.2 P1.1P1.7
0
0
0
1
0
complemento 1
0
1
1
1
1
complemento 0
En el ejemplo anterior usamos una instrucción de brinco condicional por bit, la cual se encuentra dentro de las instrucciones para prueba de bit del procesador de Boole. Estas instrucciones ejecutan un brinco a la etiqueta (dirección) especificada, si el bit bajo prueba es un 1 lógico (JC, JB) o si es un 0 lógico (JNC, JNB). En el programa anterior, se ignora la tercera instrucción (CPL) si el pin P1.2 0. Adicionalmente, también se cuenta con la instrucción JBC, la cual ejecuta no solo el brinco si el bit bajo prueba es un 1 lógico, también restablece el contenido del bit a 0 lógico; por ende, con una sola instrucción se puede probar si el bit en cuestión es un 1 lógico y después establecerlo a 0 lógico. Dependiendo del programa ensamblador que se utilice para ensamblar el código desarrollado, el direccionamiento directo de bit se puede especificar en tres formas:23 1. Por un número correspondiente al direccionamiento directo de bit (0-255). 2. Por el nombre o dirección del registro que contiene el bit, el símbolo de punto “.”, y el bit de posición en el registro (7-0). 3. En el caso de registros de control y de estatus, por los símbolos predefinidos del ensamblador. Además de estas tres técnicas, los bits también pueden ser definidos por el usuario por medio de un nombre y la directiva del ensamblador “BIT”. Por ejemplo, el bit 5 de PSW puede ser puesto a cero por cualquiera de las siguientes instrucciones: BANDERA_USR
BIT
PSW.5
; Definición de símbolo por el usuario
CLR
0D5H
; Direccionamiento absoluto
CLR
PSW.5
; Uso del operador de punto.
CLR
F0
; Símbolo predefinido del ensamblador.
CLR
BANDERA_USR
; Símbolo definido por el usuario
Instrucciones de brinco Las instrucciones de brinco por byte, condicionales o incondicionales, usadas para controlar el flujo de los programas son muy variadas, e incluyen las instrucciones de llamada y regreso de subrutinas como se ilustra en la figura 5.108e). Esta variedad de instrucciones de brinco aumenta debido a los modos de direccionamiento, como veremos a continuación. t#SJODPTJODPOEJDJPOBMFT La instrucción genérica de brinco incondicional, JMP, está formada por las instrucciones SJMP, LJMP y AJMP, las cuales corresponden a los modos de direccionamiento relativo, largo y absoluto, respectivamente. El nemónico genérico JMP puede usarse siempre y cuando lo soporte el programa ensamblador que se utilice para ensamblar los programas, y que al programador no le interese el número de bytes con el que se codifica la instrucción. El programa de ensamblador ASM51 de Intel, por ejemplo, ensambla la instrucción genérica JMP como AJMP, si la dirección destino se encuentra dentro del mismo bloque de 2 Kbytes de memoria de programa donde se encuentra la instrucción de brinco. De lo contrario, la instrucción JMP se ensambla como LJMP. 23
El ensamblador ASM51 de Intel soporta estas tres formas, y por lo general se usa como referencia de otros programas de ensamblador.
grupo editorial patria®
311
5 El popular microcontrolador
t4VCSVUJOBTFJOUFSSVQDJPOFT De manera similar que con la instrucción JMP, existen dos variaciones de la instrucción genérica CALL: ACALL y LCALL. Con el programa ensamblador de Intel ASM51, es posible usar el nemónico genérico CALL, si al programador no le interesa cómo se codifica la instrucción. De cualquier forma, estas dos instrucciones almacenan de manera automática el contenido del contador de programa, PC, en el stack, mediante dos instrucciones PUSH, las cuales incrementan dos veces el stack pointer, SP. Adicionalmente, la instrucción CALL carga el contador de programa, PC, con la dirección especificada en la instrucción de CALL. Recordemos que el contador de programa, PC, contiene la dirección de la siguiente instrucción a ejecutarse, esto es, contiene la dirección de la siguiente instrucción después de la instrucción CALL al momento de almacenarse en la pila o stack de memoria RAM interna. Primero, se introduce en el stack el byte inferior del contador de programa, PCL, y después se introduce el byte superior, PCH. Es importante hacer notar que todas las subrutinas deben iniciar con una instrucción CALL y terminar con una instrucción RET. La instrucción RET regresa la ejecución del programa a la instrucción que sigue de la instrucción CALL. La instrucción RET hace lo contrario a la instrucción CALL, es decir, transfiere los dos últimos bytes almacenados en el stack al contador de programa, PC, mediante dos instrucciones POP, disminuyendo dos veces el stack pointer, SP. Primero, se transfiere el byte superior, PCH, y después el byte inferior, PCL. Una vez que el PC es cargado con la nueva dirección, se continúa con la ejecución del programa principal, en la instrucción siguiente a la instrucción que llamó a la subrutina (ACALL o LCALL). La instrucción RETI es funcionalmente igual a la instrucción RET, y se utiliza para regresar de una rutina de servicio de interrupción (RSI), como se ilustró conceptualmente en la figura 5.58. La diferencia entre RETI y RET, es que RETI envía señales al sistema de control de interrupciones del microcontrolador, indicándole que la interrupción en proceso ha terminado. En el apartado de ejemplos típicos se ve un ejemplo usando las instrucciones de CALL y RET, mientras que en el apartado relacionado con los periféricos internos del microcontrolador se ven las interrupciones y la instrucción RETI, mediante un ejemplo.
t#SJODPTDPOEJDJPOBMFT Las instrucciones de brincos condicionales en el microcontrolador 8051 especifican la dirección de destino usando el direccionamiento relativo, por lo que sus brincos están restringidos de –128 a 127 bytes, desde la instrucción que sigue a la instrucción de brinco condicional. La dirección de destino a donde se desea brincar se define de la misma forma que con los brincos incondicionales; esto es, por medio de una etiqueta. El programador no tiene que hacer nada más, ya que el programa ensamblador se encarga de calcular la distancia correspondiente a la dirección que se desea. El ensamblador del 8051 no contiene, en su registro de banderas, PSW, ninguna bandera que indique si el resultado de alguna operación es cero. Para esto, se utilizan las instrucciones de brincos condicionales JZ y JNZ, las cuales brincan a una dirección, si el contenido en el acumulador es cero o diferente de cero, respectivamente. En la sección de Acceso a periféricos (puertos de E/S) mapeados a memoria se hace uso de este tipo de instrucciones mediante un par de ejemplos. Además, existe un par de instrucciones de brincos condicionales DJNZ y CJNE. La instrucción DJNZ decrementa el registro o dirección directa indicada y brinca si el resultado es diferente de cero, sin afectar ninguna bandera. Esto provee un medio para llevar a cabo control de ciclos de programa un número dado de veces o para añadir retardos, de 2 a 512 ciclos de máquina, con una sola instrucción. Para ejecutar un ciclo N veces, cargamos un contador de un byte con un valor N y finalizamos el ciclo con una instrucción DJNZ apuntando al inicio del ciclo como se muestra a continuación:
MOV
R1,#07H
; registro contador
CICLO:
:
; inicio de ciclo
: :
312
:
; fin de ciclo
DJNZ
R1, CICLO
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Por ejemplo, supongamos que tenemos un sistema basado en el microcontrolador 8051 operando con una frecuencia del cristal de 12 MHz y que se requiere un lazo de retardo por software, para generar un pulso, en 0 lógico, de 100 μs, en el puerto P1.1. CLR
P1.1 MOV
R2, # 49D
; Registro contador (1 ciclo de máquina)
DJNZ
R2, CICLO
; 2 ciclos de máquina r 49 98
SETB
P1. 1
; 1 ciclo de máquina
CICLO:
La primera instrucción establece en 0 lógico el puerto P1.1. La segunda instrucción carga el valor 49D al registro que hará la función de contador, y consume un ciclo de máquina. La tercera instrucción es el inicio y fin del ciclo del programa; como DJNZ consume 2 ciclos de máquina, y este se va a repetir 49 veces, entonces el tiempo que tarda en ejecutarse esta instrucción es de 98 ciclos de máquina (49 r 2). La cuarta instrucción establece en 1 lógico el puerto P1.1 y tarda 1 ciclo de máquina en ejecutarse. Como el cristal es de 12 MHz, cada ciclo de máquina es de 1 μs. Por tanto, si sumamos los ciclos de máquina justo después de que se estableció en 0 lógico el puerto P1.1 hasta que este regresa a 1 lógico, tendremos los 100 μs que nos solicitan. Ahora, vamos a suponer ahora que se nos pide generar una señal cuadrada de 38.4 KHz de manera continua, con un ciclo de trabajo de 50%, usando el puerto P1.0 de un microcontrolador 8051 con un cristal de 12 MHz, como se muestra en la figura 5.113.
8051
P1.0 f = 1/T
=`^liX,%((* >\e\iXZ`e[\leXj\Xc[\fe[XZlX[iX[X[\*/%+B?q% El programa para generar esta señal considera que el periodo T 1/f 26 μs. Por consiguiente, la señal debe mantenerse 13 μs en 1 lógico, y 13 μs en 0 lógico, como se muestra en el siguiente programa: INICIO: CPL
P1.0
;1 ciclo de máquina
MOV
R0,#04H
;1 ciclo de máquina
DJNZ
R0,$
;8 ciclos de máquina
NOP SJMP
;1 ciclo de máquina INICIO
;2 ciclos de máquina
END
grupo editorial patria®
313
5 El popular microcontrolador
La primera instrucción realiza el complemento del estado lógico del pin P1.0 y tarda 1 ciclo de máquina. La segunda instrucción carga en el registro R0 el valor del contador, en este caso 04H, y tarda en ejecutarse 1 ciclo de máquina. La tercera instrucción es el inicio y fin del ciclo del programa; en este caso se utiliza el símbolo de pesos ($) para indicar de una manera elegante “la dirección de esta instrucción” como DJNZ consume 2 ciclos de máquina, y este se va a repetir 4 veces, entonces el tiempo que tarda en ejecutarse esta instrucción es de 8 ciclos de máquina (4 r 2). La cuarta instrucción, NOP (no operation), no realiza ninguna operación y se encuentra agrupada en el bloque de instrucciones de brinco. Esta instrucción no afecta al contador del programa ni a los registros o banderas, y su ejecución tarda 1 ciclo de máquina. Por lo general, este se emplea para producir retardos de manera intencional.24 La quinta instrucción es un brinco incondicional al inicio del programa y consume 2 ciclos de máquina. Como el cristal es de 12 MHz, los ciclos de máquina son de 1 μs. Por tanto, después que se ejecuta la primera instrucción el estado del puerto P1.0 cambia, vamos a suponer que de 1 lógico se hace 0 lógico. Una vez que está en 0 lógico, toma 12 μs en llegar nuevamente a la primera instrucción. Al ejecutarse otra vez la primera instrucción, se alcanzan los 13 μs deseados y el puerto P1.0 cambia a 1 lógico, repitiéndose el ciclo continuamente. El problema anterior puede resolverse usando una secuencia de instrucciones NOP, SETB y CLR, sin usar la instrucción de brinco condicional DJNZ. INICIO: CLR NOP : NOP SETB NOP : NOP SJMP END
P1.0
; 1 ciclo de máquina (P1.0 dura 13 μs en alto) ; 1 ciclo de máquina (NOP número 1) ; 1 ciclo de máquina (NOP número 12) ; 1 ciclo de máquina (P1.0 dura 13 μs en bajo) ; 1 ciclo de máquina (NOP número 1)
P1.0
INICIO
; 1 ciclo de máquina ( NOP número 9) ; 2 ciclos de máquina (P1.0 dura 12 μs en alto)
Este programa realiza la misma función que el anterior, genera una frecuencia de 38.4 KHz. Sin embargo, utiliza 25 instrucciones y pierde toda la eficiencia y elegancia del programa anterior. La instrucción CJNE (compara y brinca si no es igual) compara las magnitudes de dos operandos (bytes) y brinca si son desiguales: CJNE OP_destino, OP_fuente. La bandera de carry, CY, sigue las reglas de la sustracción, es decir, se establece en 1 lógico, CY 1, si el valor del operando destino es menor que el operando fuente; de lo contrario, CY 0. La instrucción CJNE no modifica ninguno de los operandos, y permite cuatro combinaciones de operandos asociados a diferentes modos de direccionamiento; el acumulador puede compararse con cualquier byte directamente direccionado o con un dato inmediato, y cualquier localidad de RAM interna indirectamente direccionada o registro (R0–R7) puede ser comparado con una constante inmediata, como se ilustra en la figura 5.108. CJNE CJNE CJNE CJNE
24
A,20H,CICLO A,#92H,CICLO @R0,#33H,CICLO R7,#27,CICLO
(Compara byte directo con el acumulador) (Compara byte inmediato con el acumulador) (Compara dato inmediato con un byte indirecto) (Compara dato inmediato con un registro)
Parecería que la instrucción NOP no sirve para mucho, ya que no realiza ninguna operación y solo consume tiempo; sin embargo, como le comento a mis alumnos, esta es el equivalente al tiempo que tomamos para pensar cuando se recibe una pregunta que requiere una respuesta exacta. Por ejemplo, si repentinamente nos preguntan el resultado de multiplicar 15 r 12, para dar la respuesta tragamos saliva, respiramos profundo, tomamos agua o simplemente fijamos la mirada antes de empezar a procesar 15 r10 150 y 15 r 2 30, por tanto 150 30 180. El tiempo que usamos antes de empezar a pensar (procesar) hacemos la cara de NOP, NOP, NOP… Dependiendo de la persona, es el número de NOP que utiliza.
314
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Esta instrucción también se utiliza para control de ciclos, como lo mostramos en los ejemplos de la sección Instrucciones para transferencia de datos. Por ejemplo, si transferimos al acumulador los 8 bits del puerto P2 y deseamos continuar con el programa, solo si el dato leído es igual a 7FH, entonces podemos usar la instrucción CJNE de la siguiente manera: LEE: MOV A,P2 CJNE A,#7FH, LEE (Continúa el programa) Otra aplicación muy común es usar esta instrucción en comparaciones de “mayor que” o “menor que”, usando la bandera de carry, CY, que se ve modificada al ejecutarse esta instrucción. Los dos operandos de la instrucción se toman como enteros sin signo. Por ejemplo, si se requiere brincar a la etiqueta MAYOR cuando el valor del registro R6 es mayor o igual a la constante 40H, podemos usar la siguiente secuencia de instrucciones: CJNE
R6,#40H,SIGUE
SIGUE: JNC
MAYOR
(Continúa programa) En este ejemplo, después de ejecutarse la instrucción CJNE, el programa continúa con la siguiente instrucción, JNC, sin importar el resultado de la comparación. El objetivo de usar la instrucción CJNE es establecer en 1 o 0 lógico la bandera de carry, CY, y dejar que la instrucción JNC determine si se ejecuta el salto o no. Esta instrucción puede ejecutarse en repetidas ocasiones comparando una variable de código con una lista de valores de “casos especiales”, como una instrucción CASE en lenguaje de alto nivel. Por ejemplo, supongamos que un μC 8051, usado como procesador de palabras, recibe caracteres en ASCII (por su nombre en inglés, American Standard Code for Information Interchange) en el acumulador, a través del puerto serie y maneja una impresora térmica. Una rutina imprime los caracteres normales, pero los de control o , deben especificar una rutina especial. Interp: CJNE A,#7FH, Intp_1 .....
; rutina especial DEL RET
Intp_1: CJNE A,#0AH, Intp_2 ......
; rutina especial < FEED >
Intp_2: CJNE A,#20H, Intp_3 ......
; rutina especial
RET Intp_3: CJNE A,#0BH, imprime ......
; rutina especial
RET
grupo editorial patria®
315
5 El popular microcontrolador
Directivas, símbolos, etiquetas y comentarios Directivas Las directivas del ensamblador del MCS-51, a diferencia de las instrucciones que son ensambladas y escritas en la memoria de programa, se usan como comandos del lenguaje ensamblador para definir símbolos, reservar diversos espacios de memoria, almacenar constantes en la memoria de programa e identificar el inicio o el fin del programa fuente, entre otros usos. Aunque las directivas se escriben en la columna reservada para las instrucciones; pero, al igual que las instrucciones, solo se permite una directiva por línea y estas no tienen influencia en la operación del microcontrolador. Sin embargo, algunas son obligatorias, como parte de cada programa, mientras que otras se usan únicamente para facilitar o acelerar la operación de los programas. En los siguientes apartados de esta sección describimos las directivas obligatorias y algunas de las directivas más usadas en el desarrollo de los programas. Aclarado lo anterior, entonces empecemos. Directiva ORG La directiva ORG (origen) se usa para especificar una localidad en la memoria de programa, donde se ubicará el inicio del programa que sigue la directiva. Por ejemplo: ORG
64H
; Inicio de código a partir de la localidad 64H
Directiva END La directiva END indica al ensamblador el fin del código del programa almacenado en un archivo fuente (extensión ASM). Esta directiva es la última línea de un programa del 8051; por tanto, significa que cualquier instrucción después de esta será ignorada por el programa ensamblador. Por ejemplo: END
; fin del programa
Esta directiva es obligatoria en un programa del 8051, ya que si se omite o se escribe un código después de esta, el programa ensamblador desplegará una serie de errores. Directiva EQU La directiva EQU (equate) se usa para reemplazar un número por un símbolo. Esta directiva define constantes sin ocupar espacio de memoria; por lo general, se usa al inicio de los programas. No obstante, también puede usarse para especificar nombres, definidos por el programador, de símbolos predefinidos como el acumulador (A) y los ocho registros de propósito general (R0–R7). Por ejemplo: EQU
99
; Símbolo que reemplaza un número
CONTADOR EQU
MAXIMO
R5
; Símbolo usado para reemplazar símbolos predefinidos
Después de usar la directiva EQU, cada vez que aparezca la etiqueta MAXIMO en el programa, esta será interpretada por el programa ensamblador como el número 99. Por ejemplo: MOV A, MAXIMO Por otro lado, la etiqueta CONTADOR puede usarse donde sea permitido usar el registro R5. Por ejemplo, la instrucción INC R5 puede sustituirse por:
316
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
INC CONTADOR La ventaja de usar la directiva EQU es que si se modifica su valor al inicio del programa, el programa ensamblador la cambiará en todas las partes del programa que se utilice, sin necesidad de realizar los cambios uno a uno. Directiva SET La directiva SET se usa para reemplazar un número por un símbolo o uno de los símbolos predefinidos. La diferencia con la directiva EQU es que la directiva SET puede usarse un número ilimitado de veces en un programa, no solo al inicio del mismo. Por ejemplo: UMBRAL
SET
49H
UMBRAL
SET
33H
APUNTADOR
SET
R1
APUNTADOR
SET
R0
Directiva DB La directiva DB (Define Byte) es una de las directivas de datos más ampliamente usadas en el ensamblador del 8051. Se emplea para escribir datos específicos en la memoria de programa. Dichos datos pueden ser números en hexadecimal, decimal, binario o ASCII. En esta directiva no importa cómo se escriban los números, el ensamblador los convierte a hexadecimal. Sin embargo, si se especifica un arreglo ASCII, este debe escribirse entre apóstrofos (‘’). De esta manera, el ensamblador asignará en forma automática el código ASCII para los números o caracteres utilizados. Pero, si se especifican varios valores, estos deben estar separados por comas. De manera opcional, el formato de esta directiva puede usar una etiqueta, cuyo valor, si se usa, apuntará al primer byte o constante listada. Por ejemplo: MSJ_DERECHOS: DB ‘(c) Copyright, 2012’ ; Mensaje en ASCII CONSTANTES: MEZCLA:
DB 127,18,54,0,99
; Tabla de constantes
DB 2*8,’MPG’,2*16,’abc’
; Mezcla de valores ASCII y números
Un ejemplo de cómo se usa la directiva DB, ya se desarrolló en la sección Búsqueda de datos en tablas, al utilizar la instrucción MOVC. Directiva BIT La directiva BIT asigna un símbolo a un bit de la memoria interna del 8051, direccionándolo de manera directa. Si el valor asignado se encuentra entre 0 y 127, el bit que se reemplaza por un símbolo corresponde al mapa de direccionamiento de la RAM interna. Pero, si el bit está entre 128 y 255, el bit que se reemplaza es una dirección de bit que corresponde a los registros de funciones especiales. Por lo que se refiere a direcciones mayores a 255, estas no son válidas, por tanto serán señaladas con errores al ensamblar el programa. Algunos ejemplos de la directiva BIT son: BANDERA_PARIDAD
BIT
0D0H ; Bandera de paridad en PSW
SALIDA
BIT
07H
; Al bit de la dirección 07H se le asigna el nombre SALIDA
RELE
BIT
80H
; El bit de la dirección 80H (P0) toma el nombre de RELE
grupo editorial patria®
317
5 El popular microcontrolador
La manera en cómo se usa esta directiva ya se mostró al final de la sección Instrucciones booleanas.
Símbolos Los símbolos son representaciones alfanuméricas de constantes, direcciones, macros, etcétera. Los caracteres que soporta el ensamblador son el conjunto de letras mayúsculas o minúsculas (A…Z, a…z) y el conjunto de números decimales (0…9), además de otros caracteres especiales, como el símbolo de interrogación (?) o el símbolo de guión bajo (_). Para asegurarse de que el programa ensamblador distinga correctamente entre un símbolo y un número, todos los símbolos deben empezar ya sea con una letra o con un carácter especial (? o _). Algunos ejemplos de símbolos permitidos por el ensamblador son: Puerto_salida LOCALIDAD_8192 ?_SEÑAL De esta manera, el programa ensamblador convierte todos los símbolos, instrucciones y directivas en letras mayúsculas. Como consecuencia, el ensamblador no distingue entre letras minúsculas y mayúsculas. Por ejemplo, los siguientes dos símbolos serían vistos por el ensamblador como el mismo símbolo: Puerto_salida PUERTO_SALIDA Los símbolos pueden definirse solo una vez. Su longitud es de hasta 255 caracteres; sin embargo, solo los primeros 32 tienen significado. No obstante, existen ciertos símbolos que son reservados y no pueden ser definidos por el programador; especialmente aquéllos relacionados con instrucciones, nombres de registros y directivas, entre otras. Por ejemplo DPTR, MOV, BIT, etcétera.
Etiquetas Las etiquetas son un caso especial de los símbolos. Sin embargo, las etiquetas se usan antes de cualquier instrucción o directiva que tenga una dirección f ísica asociada a esta. Las etiquetas siguen las mismas reglas de los símbolos, con la única diferencia de que estas requieren ir seguidas por dos puntos (:).25 Algunos ejemplos válidos para las etiquetas son: TABLA__DE_CTES: DB 0,2,8,16,32 MENSAJE:
DB ´OPCION 1 o 2´
INICIO:
MOV A,#87H
La selección de nombres para símbolos y etiquetas que tengan un significado para el programa que se va a desarrollar, hace que el programador pueda realizar, leer, depurar o mantener con mayor facilidad un programa en lenguaje ensamblador. En forma auxiliar a las directivas, símbolos y etiquetas, el lenguaje ensamblador también soporta algunos controles, como título del programa, $TITLE, fecha, $DATE(), número de caracteres en cada línea $PAGEWIDTH(), entre otros. 25
Los dos puntos que requieren las etiquetas son un punto arriba del otro (:), no un punto seguido del otro (..). Aunque suene a broma, he sabido de este error en programadores principiantes.
318
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Comentarios Adicionalmente, como hemos visto en algunos ejemplos, el lenguaje ensamblador también soporta el uso de comentarios, los cuales ayudan a la legibilidad de los programas, debido a que estos ayudan a explicar el objetivo y la secuencia de las instrucciones. Los comentarios siempre deben empezar con un punto y coma (;). Es posible usar líneas enteras para realizar comentarios, siempre y cuando estos comiencen con un símbolo punto y coma. Por lo general, las subrutinas y los bloques grandes de un programa inician con un grupo de líneas para comentarios, en los cuales se explica el propósito, los registros utilizados y las propiedades de la sección de software que sigue.26
Programación en lenguaje ensamblador Como explicamos en la sección Lenguajes de máquina y lenguaje ensamblador, el lenguaje ensamblador es un lenguaje de programación que se ubica entre los lenguajes de alto nivel, como Pascal o lenguaje C, y un lenguaje de máquina, conformado por un conjunto de bytes binarios. Por tanto, en esta sección nos dedicamos al estudio de los campos que constituyen el formato que sigue el lenguaje ensamblador del microcontrolador 8051, además de que también usamos un programa ensamblador comercial para crear y ejecutar un programa.
Formato de un programa en lenguaje ensamblador del 8051 El formato de un programa en lenguaje ensamblador consiste, entre otras cosas, en una serie de líneas que contienen instrucciones en lenguaje ensamblador. Así, las instrucciones constan de cuatro campos: [Etiqueta:]
nemónico
[operando1][operando2]
[;comentario]
Los corchetes cuadrados indican que el campo es opcional, por esa razón no todas las líneas los tienen. Bien, ahora que se ha definido el formato básico de un programa en lenguaje ensamblador, estamos listos para analizar cómo se crea, se ensambla y se ejecuta un programa en lenguaje ensamblador. Operación de un programa ensamblador En el mercado existen comercialmente muchos programas ensambladores que facilitan el desarrollo de aplicaciones basadas en el microcontrolador 8051. Uno de los más importantes era el programa ensamblador de Intel para la familia MCS-51, el ASM51TM, sin embargo ya no se encuentra disponible en el mercado. No obstante, este estableció un estándar con el cual se comparan otros programas ensambladores. En esta sección usamos el ensamblador comercial de Keil μVision©27 para crear, ensamblar y dejar listo para ejecutar un programa en lenguaje ensamblador. Aunque Keil μVision© tiene un simulador, haremos uso de un simulador más versátil, denominado TS Controls©, para simular los resultados de los programas previamente ensamblados. De manera general, los programas para ensamblar la familia MCS-51 toman un archivo fuente en lenguaje ensamblador y lo convierten en un archivo en lenguaje de máquina. Este proceso se lleva a cabo en varios pasos, como lo muestra la figura 5.114. De esta manera, el primer paso de este proceso es crear un archivo fuente que contenga el código del programa en lenguaje ensamblador. Por lo común, a este archivo se le asigna la extensión ASM, aunque algunos ensambladores usan la extensión SRC (source). Una vez creado el archivo ASM, el segundo paso es alimentar al programa ensamblador. De esta manera, el programa ensamblador convierte las instrucciones del lenguaje ensamblador a código de máquina y luego genera dos archivos llamados: objeto (OBJ) y de listado (LST). El proceso de ensamblado requiere un tercer paso, en el que interviene el programa denominado enlazador (linker). En esta parte, el 26
27
La lista completa de directivas y controles del 8051 es grande, y normalmente se incluye en la documentación que proporciona el fabricante del microcontrolador específico que se esté usando. Por otro lado, el uso tanto de controles como comentarios depende del programador. Lo importante es crear, en el usuario de microcontroladores, la cultura de documentar los programas. El programa ensamblador de Keil μVision© es muy popular y altamente recomendable, pero este no es el único, incluso existen programas ensambladores para la familia de microcontroladores MCS-51 que se pueden descargar gratis; uno de estos es el ASEM-51, el cual se puede obtener en el sitios web: http://plit.de/asem-51/final13.htm.
grupo editorial patria®
319
5 El popular microcontrolador
programa enlazador toma uno o más archivos objeto y produce un archivo objeto absoluto con extensión ABS. Por último, el archivo ABS alimenta a un programa llamado OH (Object-hexadecimal), el cual convierte un archivo objeto en un archivo hexadecimal y genera un archivo con extensión HEX; precisamente el programa ensamblador es el archivo que se graba en la memoria ROM del sistema basado en un microcontrolador. Los programas ensambladores actuales basados en el sistema operativo Windows, como el Keil μVision©, combinan todos los pasos en uno solo.
1 PROGRAMA EDITOR
MI_ARCHIVO .ASM (ARCHIVO FUENTE)
2 PROGRAMA ENSAMBLADOR
MI_ARCHIVO.OBJ
MI_ARCHIVO.LST
3 PROGRAMA ENLAZADOR
OTROS ARCHIVOS OBJ
MI_ARCHIVO.ABS
4 PROGRAMA OH
MI_ARCHIVO.HEX
=`^liX,%((+ GifZ\jf[\\ejXdYcX[f[\legif^iXdX]l\ek\\elec\e^lXa\\ejXdYcX[fi%
Ensamblador Keil μVision Este aparatado lo iniciamos describiendo, de manera general, el procedimiento para ensamblar un archivo fuente (ASM), mediante el uso del programa ensamblador comercial de Keil μVision. El programa de Keil μVision es un ambiente de desarrollo integrado (IDE, por sus siglas en inglés), el cual nos permite escribir, ensamblar, compilar y depurar programas de la familia MCS-51, y que soporta una variedad grande de fabricantes como Intel, Atmel, Philips y Dallas Semiconductors, entre muchos otros. Este programa IDE integra los siguientes componentes: un administrador de proyectos, un editor de texto, una herramienta de configuración y un depurador de programas. Para empezar a usar este programa IDE vamos a proporcionar una guía o un procedimiento rápido, mediante un programa ejemplo. De la página principal del Keil μVision, retomamos el primer paso, el cual es crear un proyecto nuevo. Para esto seleccionamos un directorio e introducimos el nombre del proyecto. Inmediatamente después de crear el proyecto, como segundo paso, aparece una pantalla solicitando, de la vasta base de datos, el dispositivo que se quiere utilizar. En este ejemplo seleccionamos el microcontrolador 80C31BH de Intel. Acto seguido, emerge otra ventana donde aparece un mensaje que nos pregunta si queremos añadir al proyecto
320
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
=`^liX,%((, un archivo de código tipo plantilla. Entonces, seleccionamos la opción no, debido a que dicho archivo se encuentra en lenguaje C para hacer uso del compilador de Keil μVision y nosotros tenemos centrada nuestra atención en el lenguaje ensamblador.28
=`^liX,%((28
La programación en Lenguaje C para el 8051 es tema de otro libro o cuando menos de otro capítulo extenso. Pero si has llegado hasta estas alturas del libro y pides a gritos: ¡quiero ver más, más, más…! tendrás que esperar, ya que el alcance de esta edición del libro está delimitada a un determinado número de páginas.
grupo editorial patria®
321
5 El popular microcontrolador
El tercer paso es seleccionar, de la opción View del menú principal, la opción proyect window, para visualizar el microcontrolador que escogimos como Target1 y sus archivos fuente asociados. El cuarto paso es crear un archivo fuente con el programa en lenguaje ensamblador. Para esto, seleccionamos la barra de iconos new file o la opción file del menú principal y después escogemos new. Hecho lo anterior, emerge la pantalla para editar nuestro programa en lenguaje ensamblador y entonces procedemos a escribir un programa fuente. En este ejemplo, escribimos un programa muy simple29 de los que describimos en el apartado de Brincos condicionales. Acto seguido, de la barra de iconos, seleccionamos save, para guardar este archivo fuente y le asignamos un nombre con extensión ASM, por ejemplo: Prueba_minimo.asm.
=`^liX,%((. El quinto paso consiste en seleccionar de la ventana Project window el Target1, donde se da doble clic, provocando que aparezca la opción Source Group1 en esta ventana. Luego, seleccionamos Source Group1, damos clic derecho y emergerá otra ventana de la cual seleccionaremos Add files to Group ‘Source Group1’ y del directorio de nuestro proyecto añadimos el programa fuente (ASM) al proyecto (véase figura 5.118).
=`^liX,%((/ 29
Se recomienda que el primer programa se realice lo suficientemente simple (pero, no más simple, como reza una de las frases de Albert Einstein). Debido a que el objetivo de este programa es probar que el hardware principal del microcontrolador se encuentra funcionando correctamente, como oscilador interno, área de temporización y control y puertos de E/S.
322
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
El sexto paso es seleccionar Project del menú principal y elegir Options for target ‘target1’; acto seguido, emergerá la pantalla de herramienta de configuración, donde todas las opciones especiales están definidas automáticamente. Por lo común, solo es necesario configurar la ventana de salida (Output), y de esta seleccionar la opción donde se acepta crear el archivo HEX y se introduce el nombre del archivo HEX que se va a generar. Se recomienda usar el mismo nombre del archivo fuente, para tener otro archivo con el mismo nombre pero con extensión HEX (véase figura 5.119).
=`^liX,%((0 El séptimo, y último, paso es seleccionar Project del menú principal y escoger Rebuild all target files o Build target. Si el programa ensamblador no detecta errores, se generará el archivo HEX, listo para grabarse en una memoria ROM, y de este modo habremos concluido el proceso (véase figura 5.120).
=`^liX,%()'
grupo editorial patria®
323
5 El popular microcontrolador
Más sobre los archivos LST y HEX Aunque no se usa en el proceso de grabación de la memoria ROM, el archivo LST es muy útil para el programador, debido a que este lista todos los códigos de operación y sus direcciones, así como los errores y las advertencias que detectó el programa ensamblador. Se puede acceder a este archivo usando un editor de textos tipo Bloc de notas, de Windows, para detectar errores de sintaxis, o usando el editor de texto del Keil μVision. Aunque, solo hasta que se resuelvan todos los errores indicados por el archivo LST, es cuando el archivo OBJ se encuentra listo para ser la entrada del programa enlazador y producir el archivo HEX. Por ejemplo, si se tiene un error al escribir el programa, como escribir P1.8 en lugar de P1.0, el ensamblador indicará el error. Pero, solo abriendo el archivo de listado (LST) se pueden averiguar la localidad de memoria, el código objeto, las líneas del programa y el lugar y el tipo de errores detectados.
=`^liX,%()( Como se puede observar en la figura, en este caso el ensamblador nos indica que el error ocurrió en la línea 10 y que es del tipo OUT OF RANGE OR NON-TYPELESS BIT-OFFSET. Como mencionamos antes, es necesario corregir el programa para tenerlo libre de errores y que se genere el archivo HEX. Ahora toca hablar acerca del archivo HEX. El archivo en lenguaje de máquina con extensión HEX utiliza un formato ampliamente usado denominado Intel hexadecimal (Intel hex). Este formato fue diseñado para estandarizar el grabado de códigos de máquina ejecutables en circuitos integrados tipo ROM. Esta es la razón por la cual los sistemas programadores de dispositivos ROM soportan este formato. En los programas ensambladores basados en Windows, como el Keil μVision, el archivo Intel hex se produce automáticamente, solo es necesario proporcionar los ajustes correctos. Para esto, por lo general, simplemente se tiene que seleccionar una casilla; en Keil μVision, esta es Create Hex file. En este punto, si abrimos el archivo Prueba_minimo.hex con el editor de textos de Keil μVision, podremos observar la siguiente secuencia de números: :09000000B2907804D8FE0080F7EC :00000001FF
324
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
La información que provee este archivo es la que se transcribe en la figura 5.122. Cada línea empieza con dos puntos seguidos (:) Contador de bytes.- indica cuantos bytes (00 a 16) hay en la línea. Dirección de 16 bits.- indica localidad del primer byte en la memoria ROM. Tipo- 00, indica que hay más líneas después de esta línea; 01, indica que es la última línea. Información de código o datos.- esta parte es máximo de 16 bytes. El grabador coloca esta información en localidades sucesivas de la ROM.
Byte de suma.- indica el checksum de todo lo que hay en la línea.
: CC AAAA TT DDDDDDDDDDDDDDDDDD SS : 90 0000 00 B2907804D8FE0080F7 EC : 00 0000 01 FF
=`^liX,%()) El checksum es un algoritmo que se usa para verificar que la información que se graba en la memoria ROM no ha sido corrompida; el resultado de este algoritmo debe ser cero. Por ejemplo, vamos a realizar el checksum de la primera línea del archivo HEX y posteriormente verificamos si esta información no ha sido corrompida. :09000000B2907804D8FE0080F7EC
checksum 87
Este procedimiento consiste en sumar todos los bytes, lo cual da como resultado el número 687: 09000000B2907804D8FE0080F7EC 687 Posteriormente, descartamos el nibble con acarreo; en este caso, es el número 6, lo cual nos da como resultado el número 87. Inmediatamente después calculamos su 2 complemento, que en este caso es el número 79. Si realizamos la suma entre el resultado del 2 complemento y el resultado de la suma de todos los bytes, tenemos que: 79 687 700. Otra vez, si descartamos el nibble con acarreo, el resultado es 00, con lo cual se verifica que la información de esa línea no ha sido corrompida.
Ejecución de programas Una vez que un programa en lenguaje ensamblador ha sido ensamblado adecuadamente y contamos con nuestro archivo HEX, existen cuatro opciones para ejecutar este código en hexadecimal: 1. 2. 3. 4.
Usar un sistema comercial de evaluación del 8051. Usar un sistema comercial emulador (in-circuit). Usar un software simulador del 8051. Construir un sistema basado en el 8051.
Las primeras dos opciones requieren la adquisición de un hardware comercial basado en un microcontrolador 8051, del cual hay muchas opciones. No obstante, en este libro nos concentramos en las dos últimas, principalmente
grupo editorial patria®
325
5 El popular microcontrolador
porque se aprende haciendo, como lo dicta el aprendizaje basado en prácticas (ABPRA), y porque haremos uso de nuestros conocimientos de electrónica para diseñar un módulo basado en un microcontrolador. Primero, usaremos el simulador TS Controls© para simular los programas que realicemos, con el objetivo de depurar nuestros programas, y posteriormente nos referiremos a las prácticas de laboratorio, en las cuales usaremos el hardware propietario basado en un μC de la familia MCS-51, el cual se sugiere construir para realizar dichas prácticas. La figura 5.123 muestra los elementos necesarios para transferir un archivo HEX a un simulador y a un sistema basado en un microcontrolador. 1) Se escribe un programa en lenguaje ensamblador. 2) Se ensambla (archivos HEX y LST).
4) Se graba el archivo HEX en una memoria EPROM o en un microcontrolador con memoria integrada.
5) Ejecución del código HEX en un dispositivo basado en un microcontrolador.
3) El archivo HEX y LST se usan para ejecutar el código en un simulador.
Programador
=`^liX,%()*
30
31
En 1989 tuve la gran oportunidad de usar el sistema de desarrollo HP 64000, localizado en el laboratorio de electrónica del centro de investigación donde realicé las prácticas para mi tesis de licenciatura. Este sistema fue introducido por Hewlett Packard en 1980. Pero, a dicho centro en México llegó a mitad de esa década. El HP 64000 era un sistema de desarrollo de hardware y software para varios microprocesadores y microcontroladores, entre los que destaca la familia del MCS-51. El HP 64000 podía tener de 1 a 6 estaciones de trabajo HP64100A, las cuales compartían un disco duro, de tamaño un poco menor al de una lavadora, y una impresora. Esta arquitectura permitía que hasta seis diseñadores o desarrolladores pudieran usar su estación de trabajo, compartiendo la instrumentación de un bus HPIB, el disco duro y la impresora. En este sistema se podía editar, ensamblar, emular y grabar memorias o microcontroladores con memorias integradas. En horas convencionales de trabajo (de 8:00 a.m. a 5:00 p.m.), los investigadores tenían prioridad de uso; sin embargo, incluso entre ellos mismos se disputaban las horas de las estaciones de trabajo. Los becarios como yo teníamos asignado un tiempo mucho mayor; claro, de las 5:00 p.m. a las 8:00 a.m. del día siguiente, ventaja que aprovechamos y en muchas ocasiones hasta disfrutamos. Hoy día, los ambientes de desarrollo integrado (IDE), caben en una caja de chocolates, contienen todas estas características y las podemos tener sobre un escritorio, conectadas a una computadora personal. Existen microcontroladores, como el AT89LP2052 de Atmel, que soportan la programación in circuit; esto es, que se pueden reprogramar mediante un conector especial, aun después que fueron soldados en el dispositivo electrónico, y no necesitan desmontarse para poder ser grabados.
326
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
circuitos. Pero, otra vez nos estamos adelantando. Siguiendo el proceso descrito antes, primero ejecutamos nuestros programas usando el simulador TS Controls.
Ejecución de programas usando el simulador TS Controls El programa simulador del 8051 TS Controls©32 provee la flexibilidad necesaria para simular los archivos generados por los programas ensambladores, como el Keil μVision. Continuando con el mismo tenor del programa ensamblador, enseguida damos una guía rápida de cómo usar este simulador por medio de un ejemplo simple; sin embargo, se recomienda usarlo en cada programa que se realice, con el fin de aprovechar todas sus potencialidades. Entonces, ahora si empecemos. De la página principal del TS Controls, el primer paso es seleccionar, de la barra de iconos, Load HEX file o Load LST file; asimismo, también podemos usar la opción file y seleccionar cargar los archivos HEX o LST. En este ejemplo usamos los archivos Prueba_minimo.HEX y Prueba_minimo.LST (véase figura 5.124).
=`^liX,%()+ Una vez realizado el paso anterior, podemos visualizar el archivo LST y el código (HEX) desensamblado, así como las localidades de la RAM interna y externa, los registros SFR y los registros más empleados en programas ensambladores, como el acumulador, B, PC, SP, DPTR, R0 a R7 y el número de ciclos de máquina (ticks) que toman las instrucciones que se ejecutan. Pero, antes de ejecutar el programa, primero seleccionamos los ajustes apropiados para el sistema basado en el microcontrolador que estamos usando. En este caso, un 8051 con un cristal de 12 MHz. Por tanto, del menú principal seleccionamos Mode, 8051, y establecemos la frecuencia a la cual se desea operar el microcontrolador (véase figura 5.125). El segundo paso consiste en ejecutar propiamente el programa, el cual efectuaremos siguiendo instrucción por instrucción. Para esto, del menú principal seleccionamos Run y Step o simplemente usamos el icono correspondiente o la tecla F11. Como sabemos, de RESET los puertos del μC se encuentran en 1 lógico; por ende, el estado del puerto P1 es FFH. Así, al ejecutar la primera instrucción, podemos apreciar que el número de ticks es 1 y que el estado del 32
En la actualidad existen varios programas simuladores del 8051, los cuales se pueden bajar de Internet. El simulador del 8051 TS Controls no es la excepción; por tanto, se puede obtener una versión de evaluación en la liga: http://bit.kuas.edu.tw/~8051/emul8051.zip.
grupo editorial patria®
327
5 El popular microcontrolador
=`^liX,%(), puerto P1 cambio a FEH, debido a que se realizó la instrucción de complemento de bit CPL P1.0 que cambia el estado del puerto P1.0 (véase figura 5.126). En este momento podemos considerar que el estado del pin P1.0 se encuentra en estado lógico 0, y que permanecerá así 12 ciclos de máquina (ticks), hasta que se ejecute otra vez la instrucción CPL, lo cual será en el ciclo de máquina 13. Al ejecutarse nuevamente la instrucción CPL, esto toma otro ciclo de máquina y se completa el ciclo de 13 μs en estado lógico 1 y 13 μs en estado lógico 0, lo cual generará la señal cuadrada de 38.4 KHz que se solicitó.
=`^liX,%()-
Ejecución de programas usando un sistema mínimo En esta sección nos referimos a la ejecución de programas en ensamblador llevando a cabo el diseño de un sistema mínimo basado en un microcontrolador de la amplia familia MCS-51, el cual se puede usar en varias aplicaciones posteriormente. El sistema mínimo es un sistema basado en un microcontrolador que se construye con los circuitos o componentes mínimos necesarios para ejecutar un programa. Para tal efecto, primero seleccionamos el microcontrolador que queremos usar. En este ejemplo vamos a usar el microcontrolador 80C31BH de Intel, el cual requiere una memoria EPROM externa.33 Adicionalmente a la memoria EPROM, también requerimos un latch tipo 74HC373, un 33
Seleccionar inicialmente una versión del 8051 sin EPROM tiene un doble propósito; el primero es mantener el costo del sistema a un precio bajo, mientras que el segundo es de carácter didáctico, ya que permite enfatizar los ciclos de búsqueda-decodificación-ejecución que realiza el microcontrolador, que de otra forma se asumen y en ocasiones no se entienden. El precio que hay que pagar es el tiempo que se tarda en borrar la
328
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
circuito de reset, un circuito oscilador y una alimentación de 5 V CD. La memoria sugerida es una EPROM de 32 Kbytes, M27C256B. El diseño del sistema mínimo nos lleva a realizar la primera práctica de laboratorio del microcontrolador 8051. Por tanto, el programa requerido también debe ser mínimo; esto es, contar con muy pocas instrucciones, como el ejemplo del apartado anterior o incluso una sola instrucción. El objetivo es probar que el componente más “sexy” del módulo electrónico, el microcontrolador, funciona adecuadamente. En este punto, ha llegado el momento de mostrar nuestras habilidades de electrónica, debido a que requerimos unir los bloques tipo lego de electrónica usando ciertas directrices. Los bloques que requerimos unir para construir nuestro sistema mínimo se muestran en la figura 5.127.
5 V
5 V
6-12 V
VCC
120 VCA
LM7805 100 MF
10 MF
100 7 Reinicio
5V
RST 10 MF
100 nF 8.2 K7
GND
a)
3 4 7 8 13 14 17 18
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
2 5 6 9 12 15 16 19
5 V P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 OSC2 OSC1 GND
c)
12 MHz 20-30 pF GND
20-30 pF GND
80C31BH
11 1
D1 D2 D3 D4 D5 D6 D7 D8 __ __ LE OE
b)
VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 22 20
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 __ __ OE CE
1
VPP
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
e)
d)
=`^liX,%(). 9cfhl\j[\\c\Zkie`ZXi\hl\i`[fjgXiXZfejkil`ilej`jk\dXde`dfYXjX[f\eled`ZifZfekifcX[fi/':*(9?[\@ek\c% X :`iZl`kf[\Xc`d\ekXZ`e[\,M:;%Y :`iZl`kf[\i\j\k%Z CXkZ_.+?:*.*%[ D`ZifZfekifcX[fi/':*(9?pZ`iZl`kffjZ`cX[fiZfeZi`jkXc [\()D?q%\ D\dfi`X
grupo editorial patria®
329
5 El popular microcontrolador
programa, PC, se carga con el valor 0000H. Esto significa que se espera que el primer código de operación se encuentre almacenado en la dirección 0000H de la memoria EPROM. Para diseñar nuestro sistema mínimo y unir los bloques de la figura 5.127 se recomienda usar un software comercial, con el fin de realizar nuestro diagrama esquemático.34 La práctica del sistema mínimo solicita esta y otra información relevante del circuito construido, como la verificación de la frecuencia de la señal de ALE y la comprobación del funcionamiento del programa Prueba_minimo.hex. Ahora, continuamos con algunos ejemplos típicos de procesamiento y control, pero antes debemos describir la estrategia incrementalista para probar circuitos electrónicos.
Estrategia de construcción y pruebas de un dispositivo electrónico Para construir y probar los dispositivos electrónicos basados en un microcontrolador, como el sistema mínimo, vamos a basarnos en una estrategia muy simple llamada incrementalista, la cual es usada por médicos, ingenieros, administradores y otros profesionistas, la cual consiste en el siguiente procedimiento: t Realizar cambios deliberados para obtener su objetivo. t Medir y evaluar los efectos de cada cambio realizado. t Ajustar, si es necesario, los objetivos y decidir el próximo cambio. Este procemiento tiene diferentes nombres, entre los más comunes se encuentran: “prueba y error”, aunque entre amigos o colegas se conoce como “muévele y observa los cambios”. Lo anterior nos permite avanzar en nuestros objetivos y, lo más importante, aprender. Cuando el procedimiento incrementalista se lleva a cabo en forma deliberada y con bases sólidas de conocimiento, estos nombres coloquiales adquieren una apariencia respetable. Por ejemplo, los médicos, al tratar a un paciente usan el siguiente procedimiento:
JekfdX
;`X^ejk`Zf
KiXkXd`\ekf
;`X^ejk`Zf
8aljkXi kiXkXd`\ekf
:liX
=`^liX,%()/
Por otro lado, los ingenieros que desarrollan un producto o proceso de innovación usan el siguiente procedimiento:
;`j\f
;\jXiifccf
8aljkX [`j\f
Gil\YX
Gil\YX
Fg\iXZ`e
=`^liX,%()0
Este procedimiento es de gran utilidad al diseñar tanto hardware como software de manera integral durante el ciclo de desarrollo de un dispositivo electrónico; por tanto, se recomienda su aplicación de manera sistemática, tal como se ilustra en la figura 5.130. Realizar cambios en el hardware de un sistema electrónico es laborioso y podría incrementar el costo del dispositivo. Por esta razón, se recomienda al diseñador ser muy cuidadoso al momento de alambrar su primer prototipo, poniendo atención a los detalles sutiles, como trayectorias de tierras, capacitores de desacoplo, etcétera, que los simuladores de hardware dif ícilmente pueden detectar. Por otra parte, efectuar cambios en software puede no incrementar 34
Existen paquetes de software comerciales para realizar diagramas esquemáticos y placas de circuito impreso o PCB (Printed Circuit Boards) como Orcad©, easyPC©, PCB123© y muchos otros; incluso, en Internet están disponibles versiones de evaluación que pueden usarse para estos propósitos. Por ejemplo, el software PCB123 puede descargarse del sitio http://download.cnet.com/windows/pcb123/3260-20_4-103143. html?tagrb_content;contentBody
330
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
los costos de las partes del módulo, pero sí el tiempo invertido en depurar el programa; para esto, hacemos uso de simuladores de software aplicando esta estrategia en forma metódica.35
Ajuste No Especificación de software
Diseño de software
Editar, ensamblar/ compilar
Pruebas preliminares
¿Bien? Sí Integración y verificación
Concepto
Producto
Sí Especificación de hardware
Diseño de hardware
Creación de prototipo
Pruebas preliminares
¿Bien? No
Ajuste
=`^liX,%(*'
De acuerdo con la figura 5.130, la depuración de errores usando la estrategia incrementalista nos regresa a la etapa de diseño; sin embargo, dependiendo de la severidad del error, la corrección puede forzar al diseñador a regresar hasta la etapa de concepto. Por otro lado, la etapa más dif ícil del ciclo de desarrollo es la integración y verificación de hardware y software, donde algunos de los problemas que evadieron las pruebas preliminares pueden surgir durante la ejecución en tiempo real del dispositivo. Por último, la etapa de integración y verificación conduce a la aceptación del diseño como producto.36
Ejemplos sencillos de procesamiento y control En esta sección realizamos ejemplos sencillos, pero típicos en aplicaciones basadas en el microcontrolador 8051. Asimismo, describimos el funcionamiento de las operaciones aritméticas, hacemos uso de directivas, símbolos y llamadas a subrutinas y, por último, llevamos a cabo operaciones simples de control y transferencia de datos.
Suma, resta, ajuste a decimal, multiplicación y división El microcontrolador 8051 puede realizar las cuatro operaciones aritméticas (suma, resta, multiplicación y división) con registros de 8 bits. No obstante, es importante subrayar que la CPU del 8051 no entiende si los datos son binarios, binarios sin signo, BCD, ASCII, etcétera. En este caso, el programador es el único que lo sabe, de acuerdo con su aplicación. El mecanismo para manejar diferentes formatos de datos los proporcionan los bits del registro de banderas, PSW. 35
36
Cuando se construye un sistema basado en un microcontrolador por primera vez, siempre recomiendo a mis alumnos que sean cuidadosos con el alambrado y la distribución de los componentes. Es perfectamente válido realizar el procedimiento de prueba y error; sin embargo, como en el futbol, la diferencia entre un goleador bueno y uno talentoso es la certeza. Las etapas posteriores a la aceptación del diseño no se muestran en la figura 5.127, ya que van más allá de las intenciones de este libro, pero incluyen procesos de manufactura, pruebas, distribución y comercialización.
grupo editorial patria®
331
5 El popular microcontrolador
:P
8:
='
IJ(
IJ)
'M
$
G
=`^liX,%(*( De esta manera, iniciamos con la descripción genérica de las instrucciones de la suma y la resta, indicando las banderas que se ven afectadas. ADD
A,
; A A
ADDC
A,
; A A
SUBB
A,
; A A -
Banderas efectuadas : CY AC OV
No está de más recordar las reglas de la suma y resta binaria que vimos en el capítulo 4 (véase figura 132). I\^cXjJldX
I\^cXj[\cXI\jkX
'"'4'
'Æ'4'
("' 4(
(Æ( 4'
'"( 4(
(Æ'4(
("( 4('f
'Æ(4("gijkXdf
("( 4'"(Xcc\mXiXZXii\f
=`^liX,%(*) Bien, ahora sí estamos listos. Vamos a suponer que requerimos saber el estado de las banderas C, AC y P después de sumar 38H y 2FH en las siguientes instrucciones. MOV
A,#38H
;
ADD
A,#2FH
; A 67H
Para conocer la solución, resolveremos la operación de manera manual. 38 00111000 2F 00101111 67 01100111 En este caso, la bandera de CY 0, porque no hay un acarreo en el bit D7; la bandera AC 1, debido a que hay un acarreo del bit D3 al bit D4; por último, la bandera P 1, porque el acumulador tiene un número impar de números 1, esto es tiene 5. En el ejemplo anterior, si la suma a realizar ahora es 88H y 93H, ¿cuál es el estado de CY, AC y P? MOV
A,#88H
;
ADD
A,#93H
; A 1BH
Otra vez, realizando la operación de manera manual. 88 93 1B
332
10001000 10010011 00011011
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Ahora, la bandera de CY 1, porque hay un acarreo en el bit D7; la bandera AC 0, debido a que no hay un acarreo del bit D3 al bit D4; por último, la bandera P 0, porque el acumulador tiene un número par de números 1, esto es tiene 4. Las operaciones tanto de suma como de resta también pueden realizarse con representaciones de números con signo. Si el resultado se encuentra fuera del rango para números con signo de 8 bits, esto es, fuera del rango –12810 a 12710, entonces la bandera de sobreflujo, OV, en el registro PSW se establecerá en 1. Por ejemplo, si el acumulador y el registro R1 tienen los números con signo, 61H y 30H, respectivamente, y efectuamos la suma de estos registros mediante el siguiente programa: MOV
A,#60H
MOV
R1,#30H
ADD
A,R1
; A 90H
¿Cuál es el valor del acumulador y del registro PSW después de ejecutar este programa? El valor del acumulador es A 90H y del PSW 04H. Recordemos que estamos asumiendo que los valores de A y R1 son números de 8 bits con signo; la CPU del microcontrolador solo entiende 1 y 0. Por tanto, para entender los valores de A y PSW vamos a convertir a decimal sus representaciones en hexadecimal. 60H l 9610 y 30H l 4810, por tanto 96 48 14410 En este caso, el número 14410 se encuentra fuera del rango permitido para números con signo, es decir 14410 es mayor que 12710. Por tanto, la bandera de sobreflujo, OV, se establece en 1. Ahora, vamos a pasar a la resta. En el siguiente ejemplo realizaremos una secuencia de instrucciones en las cuales restaremos el contenido del registro R5 del contenido del registro R6 y el resultado lo colocaremos en el registro R0. MOV
A,R6
CLR
C
SUBB
A,R5
MOV
R0,A
Para las operaciones de resta, el bit de acarreo, CY, opera como el bit de préstamo. Por tanto, si no se conoce el estado del bit CY, este debe ponerse a cero antes de ejecutar la instrucción SUBB. Esta es la razón por la que debemos usar la instrucción CLR C en la secuencia de instrucciones anterior. Si R5 05H y R6 F5H, el resultado será R0 F0H, lo cual es fácil de verificar llevando a cabo la operación en forma manual. F5 11110101 - 05 00000101 F0 11110000 Sin embargo, si el valor de R5 F5H y el de R6 F3H, el resultado será R0 FEH y el estado de las banderas de CY 1, AC 1 y P 0. ¿Por qué? F3 11110011 -F5 11110101 FE 11111110 En este ejemplo hacemos uso de la estrategia de préstamo, usando la bandera de acarreo, CY, esto es 0 – 1 1 préstamo. CY 1 porque hay un acarreo del bit D7, AC 1 porque hay un acarreo del bit D3 al bit D4 y P 1, porque existe un número impar de 1 en el acumulador, esto es tiene 7.
grupo editorial patria®
333
5 El popular microcontrolador
Aunque el programa anterior es muy sencillo, podemos ensamblarlo con el Keil μVision© y simularlo con el TS Controls©, para verificar el estado del registro PSW y observar las banderas que se afectan. Para esto, cargamos los archivos LST y HEX en el simulador, después asignamos los datos del problema a los registros R5 y R6, dando doble clic en el registro en cuestión de la ventana de registros, por ejemplo a R5, de donde emergerá una pantalla que nos permite proporcionar un nuevo valor de dicho registro (véase figura 5.133).
=`^liX,%(** Así, introducimos R6 F3H y R5 F3H, y observamos que el estado del registro PSW 00H. Entonces, ejecutamos paso a paso el programa, y observamos que después de ejecutar la instrucción de resta el registro PSW modifica sus banderas, ahora PSW C1H, y al ejecutar la última instrucción apreciamos que R0 FEH, corroborando nuestro análisis anterior (véase figura 5.134).
=`^liX,%(*+ El microcontrolador permite realizar sumas en decimal o en formato BCD (Digital Codificado en Binario). Para ello, se dispone de una instrucción denominada DA (Decimal Adjust), la cual se utiliza después de una suma en BCD. Muchas veces surge cierta confusión con respecto a esta instrucción. Sin embargo, esta instrucción no convierte un número hexadecimal a formato BCD, sino que ajusta un número BCD para que el resultado continúe en formato BCD. El resultado binario (8 bits) en el acumulador de una suma previa de dos variables, cada una empaquetada como un par de dígitos BCD, es ajustado para formar dos dígitos BCD de 4 bits cada uno. La instrucción DA lleva a cabo este ajuste tomando las siguientes consideraciones:
334
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
a) Si el contenido de los bits 0-3 del acumulador es mayor que nueve (XXXX1010–XXXX1111). b) Si la bandera AC se ha establecido en 1. Si cualquiera de estas dos consideraciones ocurre, la instrucción DA añade el número 6 al valor del acumulador, produciendo el resultado BCD correcto. Para aclarar cómo realiza este sortilegio la instrucción DA, vamos a realizar dos sumas con las dos consideraciones anteriores. Así, primero sumamos dos números en formato BCD, 56 y 27, y esperamos que el resultado sea otro número BCD, en este caso el número 83; sin embargo, el resultado que obtenemos es 7D, el cual no es un valor BCD. En el segundo caso, sumamos los números en formato BCD 59 y 27, y esperamos que el resultado sea 86; pero, obtenemos como resultado el número 80. Si a estas dos sumas le añadimos el número 6, que es lo que hace la instrucción DA, tendremos los resultados correctos. 56 ------- 0101 0110
59 -------
0101 1001
27 ------- 0010 0111
27 -------
0010 0111
83
0111 1101 (7D)
86
1000 0000 (80)
0000 0110
0000 0110
1000 0011 (83)
1000 0110 (86)
En el primer caso, el nibble bajo del acumulador tiene un número mayor de nueve, mientras que en el segundo caso existe un acarreo del bit D3 al D4, activando la bandera de AC. La bandera CY se deja en 1, si originalmente era 1 o si la suma de 6 produce un acarreo del bit D7, indicando que la suma de dos variables BCD es mayor o igual a 100. Una vez que entendimos cómo opera la instrucción DA, ahora vamos a realizar la suma de dos constantes en formato BCD con dos registros. Para esto, se requiere sumar la constante 1234 al contenido de los registros R2 y R3, también en formato BCD, y el resultado almacenarlo nuevamente en R2 y R3, esto es: 12 34 R2 R3 R2 R3 Entonces, el programa sería el siguiente: SUMA_BCD :
MOV
A, R3
ADD
A, # 34H
DA
A
MOV
R3, A
MOV
A, R2
ADDC
A, #12H
DA
A
MOV
R2, A
END En este ejemplo usamos la instrucción ADDC en lugar de ADD, para considerar un posible acarreo de la suma del byte bajo, entre la constante 34 y el registro R3. Ahora, de la suma y la resta vamos a pasar a la multiplicación y la división con el 8051. De esta manera, iniciamos con la multiplicación, MUL AB. Esta operación multiplica los 8 bits del acumulador y los del registro B. Debido a que la multiplicación es entre registros de 8 bits, el resultado esperado es un valor de 16 bits. El registro B almacena el byte de orden alto, mientras que el acumulador almacena el byte de orden bajo. Si el producto es mayor a 25510 (FFH), la bandera de sobreflujo, OV, se establecerá en 1, de lo contrario se limpiará y será 0.
grupo editorial patria®
335
5 El popular microcontrolador
En el siguiente ejemplo se solicita realizar la multiplicación entre el registro acumulador y el registro B, los cuales tienen los números 50H y 31H, respectivamente. Antes de realizar la multiplicación, tenemos que el PSW 00H. El programa para realizar esta multiplicación sería el siguiente: MULTI :
MOV
A, #50H
MOV
B,#31H
MUL
AB
END ¿Cuál es el valor de los registros A, B y PSW después de ejecutar la multiplicación? Para entender cómo funciona la multiplicación en el 8051, vamos a realizar la multiplicación pero con números decimales en lugar de usar su representación hexadecimal; acto seguido, el producto de la multiplicación en decimal lo convertiremos a hexadecimal. 50H l 8010 y 31H l 4910, por tanto 80 r 49 392010 Ahora 392010 l 0F50H, por tanto, el registro B 0FH y A 50H. De acuerdo con el resultado anterior, el registro B y el acumulador almacenan los bytes de orden alto y bajo, respectivamente. Pero, el registro PSW 04H, lo que indica que la bandera OV se estableció en 1 lógico, porque el resultado es mayor al número 25510 (FFH). Si el acumulador es el multiplicando A 50H, entonces ¿cuál es el máximo valor del registro B, que hace las veces de multiplicador, para que el resultado en el programa anterior sea menor de 25510 y la bandera OV sea un 0 lógico? La respuesta es simplemente dividir 255/80 3.18. En consecuencia, si el registro B 3, el resultado será 24010 y OV 0. En cambio, si el registro B 4, el resultado será 32010 y OV 1. Luego, realizamos la división entre el acumulador y el registro B, DIV AB. Esta instrucción divide el entero sin signo del acumulador entre el entero sin signo del registro B (A/B). De esta manera, el acumulador recibe la parte entera del cociente y el registro B el residuo. Las banderas de acarreo, CY, y sobreflujo, OV, se establecen en 0 lógico. Ahora, supongamos que el acumulador y el registro B tienen los valores de 60H y 21H, respectivamente. Realice esta división y observe el estado de los registros A, B y PSW. DIVI :
MOV
A,#60H
MOV
B,#21H
DIV
AB
END De igual manera que en la multiplicación, vamos a realizar la división con números decimales en lugar de su representación hexadecimal. En tanto, al cociente y residuo que resulten de la división en decimal la convertiremos a hexadecimal. 60H l 9610 y 21H l 3310, por tanto 96/33 l cociente 0210 y el residuo 3010 Ahora 0210 l 02H, y 3010 l 1EH, por tanto, registro A 02H y B 1EH. Debido a que la división es entre registros de 8 bits, el resultado esperado es un valor de 8 bits en el cociente (acumulador) y 8 bits en el residuo (registro B). En este caso, el valor del registro PSW 01H, debido a que la bandera P se estableció en 1 lógico, indicando que hay un número impar de 1 en el acumulador. Como mencionamos antes, después de la instrucción de división, DIV AB, las banderas de CY y OV se limpian, es decir, se ponen en 0 lógico. La excepción a esta regla es la bandera de OV, la cual se establece en 1 cuando el divisor, registro B, es 00H. En este caso, el valor tanto del acumulador como del registro B será indefinido. La instrucción DIV es útil para manejar números en BCD. En este caso, supongamos que el acumulador tiene un número binario, el cual sabemos que es menor a 10010. Entonces, se requiere convertir este número a formato BCD y
336
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
almacenar las unidades, decenas y el número BCD en las direcciones 20H, 21H y 25H de la RAM interna, respectivamente. Por ejemplo, si el acumulador tiene el número 4FH, queremos que en la dirección 20H de la RAM interna se almacene el número 09H, en la dirección 21H se tenga el 07H y en la dirección 25H esté almacenado el número BCD 79H. Esto lo podemos realizar de la siguiente manera: NUM_BCD: MOV
A,#4FH
MOV
B,#0AH
DIV
AB
MOV
20H,A
;UNIDADES
MOV
21H,B
;DECENAS
SWAP
A
ADD
A,B
MOV
25H,A
;NÚMERO BCD
END Si ensamblamos y simulamos este programa, podemos visualizar que en las direcciones solicitadas de la RAM interna del μC se encuentran los datos correctos, como se muestra a continuación en la figura 5.135.
=`^liX,%(*,
Uso de directivas, símbolos y llamadas a subrutinas En esta sección hacemos uso de tres de las directivas más comunes y aclaramos la magia detrás de las llamadas a subrutinas. La mejor forma de explicar algo es con un ejemplo; para ello, usamos el programa anterior, el cual convierte un número binario menor de 10010 a formato BCD. ORG UNIDADES
20H SET
20H
DECENAS
SET
21H
DATO_BCD
SET
25H
MOV
A,#4FH
MOV
B,#0AH
DIV
AB
; INICIO ARBITRARIO DE CÓDIGO
NUM_BCD:
grupo editorial patria®
337
5 El popular microcontrolador
MOV MOV CALL ADD MOV JMP
UNIDADES,A DECENAS,B BCD A,B DATO_BCD,A FIN
MOV MOV SWAP RET
A,UNIDADES B,DECENAS A
BCD:
FIN: END Como se puede observar, en este ejemplo usamos las directivas ORG, SET y END. Aquí, la directiva ORG nos indica la dirección donde iniciará el código del programa, en este caso se especificó a partir de la localidad 0020H de la memoria de programa; la directiva SET nos ayuda a reemplazar un número por un símbolo, en este programa los números son las localidades de la RAM interna; y la directiva END le indica al programa ensamblador el fin del código del programa, esta directiva es obligatoria para todos los μC MCS-51. Para visualizar la operación correcta de este programa lo ensamblamos y posteriormente lo simulamos, como se muestra en la figura 5.136.
=`^liX,%(*-
Como podemos ver, la instrucción CALL se encuentra en la localidad 002BH y la etiqueta BCD de la subrutina se encuentra en la localidad 0033H. Para entender cómo sabe el μC a qué localidad brincar y cómo regresar a la siguiente instrucción después de la llamada a subrutina, CALL, nos haremos un par de preguntas relacionadas con el estado de algunos registros después de que se ejecuta la llamada a la subrutina BCD. t ¿Cuál es el valor del SP y del PC? t ¿Cómo se explica el valor de las localidades 08H, 09H de la RAM interna? Para responder a estas preguntas es útil observar el archivo HEX desensamblado, el cual muestra las localidades de memoria tipo ROM donde se grabará el código de operación, el código de operación y la secuencia de instruccio-
338
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
nes. También es importante recordar que el puntero de pila o stack pointer, SP, al encender el sistema o después de un reset se encuentra en la dirección 07H de la RAM interna. Cuando se ejecuta la instrucción CALL, el PC se incrementa dos veces, con lo cual apunta a la dirección de la siguiente instrucción, que en este ejemplo es la dirección 002DH y corresponde a la instrucción ADD A,B. Por su parte, el SP se incrementa (PUSH) dos veces; con el primer incremento, SP SP 1 08H, almacena en el stack el byte de bajo orden del PC, es decir 2DH; con el segundo incremento, SP SP 1 09H, almacena en el stack el byte de orden alto del PC, esto es 00H. En consecuencia, la dirección 08H de la RAM interna contendrá el número 2DH y la dirección 09H de la RAM interna tendrá el número 00H, como se puede apreciar en la ventana de RAM interna del simulador. Por último, la CPU del μC carga el contenido del PC con la dirección 0033H, la cual corresponde a la dirección de la etiqueta donde se desea brincar para ejecutar la subrutina. Estos son los pasos que realiza el μC para brincar a la dirección de la etiqueta coligada a la instrucción CALL. Pero, una vez concluida la subrutina, ¿cómo sabe el μC cuál es la instrucción a la que debe regresar? La respuesta es la instrucción RET, que se encuentra siempre al final de las subrutinas. Al ejecutarse la instrucción RET, se decrementa el SP dos veces y se extraen (POP) del stack los bytes de orden alto y bajo y se almacenan en el PC. Después de la instrucción CALL, el SP 09H; por tanto, primero, almacena en el PHC el contenido del SP que es 00H y realiza el primer decremento, SP SP – 1 08H; luego, almacena en PCL el contenido del SP que es 2DH y lleva a cabo el segundo decremento, SP SP – 1 07H. Una vez que el PC es cargado con la nueva dirección, continúa con la ejecución del programa principal, en la instrucción siguiente a la instrucción que llamó a la subrutina BCD.
Operaciones de control y transferencia de datos En la sección Acceso a periféricos (puertos de E/S) mapeados a memoria realizamos algunos problemas sencillos de control, mapeando los periféricos como si fueran localidades de memoria. Ahora, vamos a resolver estos problemas explotando las capacidades de hardware y software del microcontrolador, mediante el uso de los puertos de E/S. El primer problema de aquella sección, ilustrado en la figura 5.103, es un sistema basado en el microcontrolador 87C51, el cual tiene mapeados a memoria tres periféricos: una memoria RAM de 1 Kbytes, un display de 7 segmentos a través de un latch 74LS573 y un arreglo de cuatro interruptores tipo DIP mediante un buffer 74LS244. Con este sistema se solicitó leer el arreglo de interruptores y si el valor leído era diferente de cero, se debía escribir el número nueve en el display de 7 segmentos, pero si el valor leído era cero, se pedía escribir el número 55H en la última localidad de la memoria RAM. En esta sección simplificamos el diseño de hardware, reduciendo el número de componentes. Esto lo lograremos usando los puertos P1 y P3 del μC 87C51, tanto para leer los datos de los interruptores como para escribir los datos al display; además, usamos la última localidad de la memoria RAM interna (128 bytes) del μC, en lugar de la memoria RAM externa de 1 Kbytes. El diseño simplificado se ilustra en la figura 5.137.
+5 V
+5 V
74LS244 ___ EA P1
RST
P0.0 ·· · P0.7 /OE
8751
NC _____ PSEN
a b c d e f g dp
P3
220 7
a f e
b g
c
dp d
LED de 7 segmentos
P0.0 ·· · P0.3
Sin conexión ALE
Arreglo de interruptores
=`^liX,%(*. ;`j\f[\lej`jk\dXYXjX[f\eleμ:/.:,(ZfeleX`ek\i]XqYXjX[X\ecfjgl\ikfj[\<&JG(pG*gXiXleXii\^cf [\`ek\iilgkfi\jple[`jgcXp[\.j\^d\ekfj%
grupo editorial patria®
339
5 El popular microcontrolador
La simplificación del hardware de la figura 5.137, también se observa en el software. De esta manera, la figura 5.138 muestra el listado del programa solicitado. @E@:@F1 FIC
G*#'==?
DFM
8#G*
2gi\gXiXG*Zfdf\ekiX[X 2c\\\cZfek\e`[f[\cfj`ek\iilgkfi\j
8EC
8#'=?
2\edXjZXiXe`YYc\YXaf
AQ
29i`eZXXcX\k`hl\kXj`\c8::4''?
DFM
8#'<-?
2ZXi^X[Xkf\e8hl\Zfii\jgfe[\Xced\if0\e\c[`jgcXp
DFM
G(#8
2\jZi`Y\[Xkf\e\c[`jgcXp[\.j\^d\ekfj
ADG
@E@:@F
.=?#,,?
ADG
@E@:@F
2\jZi`Y\[Xkfjfc`Z`kX[f\ecXI8D`ek\ieX
=`^liX,%(*/ Gif^iXdXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%(*.% En el segundo problema se solicitó diseñar el hardware y software de un sistema basado en un Μc, para controlar de manera automática el cerrojo de una puerta mediante un código de acceso. De esta manera, se pidió que el programa lea el código de acceso de tres dígitos, 405 decimal; si este es correcto, el sistema debe encender un LED verde y alimentar un solenoide para abrir la puerta. Pero, si se activa un dígito erróneo, se debe encender el LED rojo y el sistema entra en un lazo (loop) infinito hasta que se abre la puerta, lo cual proporciona un pulso de reset al sistema. Originalmente, como se ilustró en la figura 5.106, el sistema se conformó por un μC 80C31BH, una memoria EPROM de 1 Kbytes, un teclado leído a través de un buffer de tercer estado 74HC244, dos flip flops que controlan dos LED y un flip flop que activa/desactiva un solenoide (activo ALTO). Sin embargo, para simplificar el hardware de este sistema ahora vamos a usar un μC 87C51, el cual contiene internamente una memoria EPROM de 8 Kbytes, y los puertos P1 y P2 para leer los datos del teclado, encender/apagar los LED y activar/desactivar el solenoide mediante un driver. La figura 5.139 muestra el diagrama simplificado de hardware de este sistema. En la figura 5.139 se puede apreciar que la terminal EA se conecta a 5 V, indicando que el microcontrolador ejecutará su programa en la memoria EPROM interna; en esta caso, no tenemos ningún dispositivo mapeado a me+5 V ___ EA P1
P0.0 ··· P0.3
RST
8751
+5 V ALE
+5 V
+12 V Driver
_____ PSEN ___ WR ___ RD
P2.0 P2.1 P2.2
=`^liX,%(*0 ;`j\f[\_Xi[nXi\[\lej`jk\dX[\XZZ\jfXleXgl\ikX\c\Zkie`ZXYXjX[f\ele:/.,(%
340
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
moria, razón por la cual no especificamos un mapa de memoria. La simplificación de hardware en el diseño de la figura 5.139 es evidente, comparándolo con el diseño de la figura 5.106. Un cambio adicional en el presente diseño es que los LED se encienden con 0 lógico; debido a que es más fácil controlar la corriente de sumidero sink del μC proveniente del voltaje de alimentación, que proporcionar la corriente necesaria, usualmente 20 mA, para encender los LED. Por sencillez, como en el ejemplo de la figura 5.106, asumimos lo siguiente: a) Que los números presionados en el teclado se leen como datos en hexadecimal (00H–09H). b) Que cada vez que el microcontrolador lee un dato por el puerto P1 es porque se presionó una tecla, como si estuviera trabajando por interrupciones. c) Que la electrónica de potencia (driver) no se muestra, pero podría estar compuesta por transistores BJT, Darlington o FETs. d) Que el tiempo que se activa el solenoide mediante el establecimiento en 1 lógico, de uno de los pines del puerto P2, es suficiente para abrir la puerta. El programa para realizar la acción de control requerida se muestra en la figura 5.140. @E@:@F1 J
G)%'
28gX^XC<;ifaf
J
G)%(
28gX^XC<;m\i[\
:CI
G)%)
2;\jXZk`mX\cjfc\ef`[\gXiXdXek\e\icXgl\ikXZ\iiX[X
DFM
8#G(
2C\\Zfek\e`[f[\ck\ZcX[f
:AE<
8#'+?#
2J`ef\j\c[^`kf\jg\iX[fYi`eZXX\iifi%
DFM
8#G(
2C\\Zfek\e`[f[\ck\ZcX[f
:AE<
8#''?#
2J`ef\j\c[^`kf\jg\iX[fYi`eZXX\iifi%
DFM
8#G(
2C\\Zfek\e`[f[\ck\ZcX[f
:AE<
8#',?#
2J`ef\j\c[^`kf\jg\iX[fYi`eZXX\iifi%
J
G)%)
28Zk`mX\cjfc\ef`[\ 2
:CI
G)%(
ADG
@E@:@F
:CI
G)%'
2
ADG
C8QF
2\ekiXXlecXqf`e]`e`kf#_XjkXhl\j\gifgfiZ`feXleIJK
=`^liX,%(+' Gif^iXdXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%(*.% En este ejemplo podemos observar que el procesador de Boole provee una gran facilidad para controlar tanto los LED como el solenoide. Sin embargo, también podríamos haber usado instrucciones de byte con sus respectivas máscaras. Por ejemplo, las primeras dos instrucciones podrían haberse sustituido por la instrucción MOV P2,#1111 1100B, para apagar inicialmente los LED. Terminamos este apartado con un ejemplo típico de control. Un sistema basado en el μC 8751 requiere de un programa que encienda un sistema de ventilación cuando el valor de la temperatura es mayor o igual a 25 grados centígrados, el cual corresponde al valor 1FH proveniente de un convertidor análogo-digital (ADC) de 8 bits, y si es menor, se apaga. Aquí, el ADC se encuentra conectado al puerto P1 del microcontrolador y la salida de control del ventilador a la terminal P3.1; en este caso, con 0 lógico apaga el ventilador y con 1 lo enciende. En tanto, las señales de control del ADC son atadas a GND (conversión continua). La figura 5.141 ilustra el diseño simplificado de hardware. El programa para realizar la acción de control de temperatura se muestra en la figura 5.142. En esta sección enfatizamos las capacidades de hardware y software del microcontrolador mediante el uso de los puertos de E/S. Sin embargo, por simplicidad, también hemos asumido retardos y funcionamiento de programas, como si el microcontrolador estuviera respondiendo a eventos de manera asíncrona, mediante interrupciones. Con
grupo editorial patria®
341
5 El popular microcontrolador
+5 V ___ EA
P3.1
Driver
Alimentación ventilador
ADC
Sensor de temperatura
RST 8751
P1
P1.0 ··· P1.7
/CS /RD
_____ PSEN Sin conexión ALE
=`^liX,%(+( ;`j\f[\_Xi[nXi\[\lej`jk\dX[\Zfekifc[\k\dg\iXkliXYXjX[f\e\c:/.,(% @E@:@F1 :CI
G*%(
28gX^X\cm\ek`cX[fi
FIC
G(#'==?
2gi\gXiXG(Zfdf\ekiX[X
DFM
8#G(
2C\\[Xkf
JL99
8#(=?
2J`cXk\dg\iXkliXK \jdXpfifd\efi[\cmXcfi
:GC
:
2J`K8ZZ 3*=?#:P4(#g\if[\Y\j\i`em\ijf
DFM
G*%(#:
2J`K5\ekfeZ\jZ4(p\eZ`\e[\\c
8ADG
8;H
8;H1
m\ek`cX[fi#[\cfZfekiXi`fj\dXek`\e\XgX^X[f 2JXckXXi\Xc`qXifkiXX[hl`j`Z`e
=`^liX,%(+) Gif^iXdX[\Zfekifc[\k\dg\iXkliXZfii\jgfe[`\ek\XcZ`iZl`kf[\cX]`^liX,%(+(% esto llegamos a la descripción de los periféricos internos del microcontrolador, con lo cual se cubren este tipo de requerimientos en los diseños.
Periféricos internos Los sistemas basados en microcontroladores tienen que satisfacer ciertas necesidades comunes que les permitan mayor flexibilidad en los diseños. Por ejemplo: t t t t t t
Monitorear eventos externos asíncronos. Mantener el seguimiento de tiempo transcurrido de un evento en tiempo real. Llevar la cuenta de transiciones de señales de entrada. Medir con precisión el ancho de ciertos pulsos de entrada. Comunicarse con otros sistemas o con personas. Ahorrar energía.
Los sistemas basados en microprocesadores requieren de periféricos externos para realizar estas funciones; sin embargo, la familia del microcontrolador MCS-51 integra todas estas capacidades internamente. Los periféricos internos con los que cuenta el 8051 son las interrupciones, los contadores/temporizadores y el puerto serie; adicionalmente, cuenta con modos de operación para ahorro de energía.37 37
Como ya lo habíamos dicho, existen otros fabricantes del original μC 8051 de Intel que incluyen más periféricos internos, tales como ADC, DAC, PWM, comparadores analógicos, etcétera. Un par de ejemplos son los μC P89LPC904 de Phillips o el AT89LP3240 de Atmel, por mencionar
342
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Particularidades de las interrupciones del 8051 Los conceptos generales de las interrupciones para los sistemas basados en microprocesadores los describimos en la sección “Interfase mediante interrupciones y mediante E/S por programa (polling)”, del apartado Desmitificando al microprocesador, los cuales se aplican perfectamente para los microcontroladores. Ahora, en esta sección describimos las particularidades de las interrupciones del 8051, las cuales incluyen sus habilitaciones, sus prioridades y una secuencia de sondeo o “polling”. Una interrupción, en un microcontrolador, es un evento interno o externo que interrumpe a la CPU del μC de manera asíncrona, para informarle que un dispositivo necesita de sus servicios. El programa que se asocia a la interrupción se llama rutina de servicio de interrupción (RSI). El microcontrolador 8051 cuenta con cinco interrupciones enmascarables: dos externas y tres internas. Cada interrupción es asignada a una localidad fija en la memoria de programa, como se muestra en la figura 5.143.
FFFFH
.. .
Reset
.. .
002 3 H 00 1 B H 00 1 3 H 000B H 0003 H 0000H
MEMORIA DE PROGRAMA
=`^liX,%(+* @ek\iilgZ`fe\j[\cμ:/',(% Cuando se acepta una interrupción, esta causa que la CPU salte a su localidad asignada; esto es, el μC carga el PC con el valor de esa dirección, donde comienza a ejecutar la RSI. El valor cargado en el PC se conoce como vector de interrupción. El reset se incluye debido a que esta señal interrumpe al programa principal y el microcontrolador carga el PC con la dirección 0000H. La instrucción para terminar una RSI es RETI, la cual es conceptualmente muy similar a la instrucción RET, que termina las subrutinas, y carga el PC con la dirección de la siguiente instrucción, después de la llamada (CALL) a la subrutina. Cuando ocurre una interrupción y esta interrupción se encuentra habilitada, el programa principal interrumpirá al μC. Lo anterior provoca: a) Que la instrucción que se esté ejecutando se termine. b) Que se almacene el contenido del PC en el stack, el cual contiene la dirección de la siguiente instrucción. c) Que el estado de la interrupción actual se almacene temporalmente. d) Que otras interrupciones se bloqueen al nivel de la interrupción. e) Que el PC se cargue con la dirección del vector de interrupción de la RSI. f) Que la RSI se ejecute y realice una acción en respuesta a la interrupción. g) Que la RSI se termina con la instrucción RETI.
algunos. No obstante, si manejamos los periféricos básicos del 8051 de Intel, podremos migrar a cualquier otro microcontrolador con mayores capacidades.
grupo editorial patria®
343
5 El popular microcontrolador
La instrucción RETI obtiene el valor del PC almacenado en el stack, lo cual le permite regresar al programa principal donde continúa su ejecución con la siguiente instrucción después de la interrupción. El 8051 cuenta con un esquema de prioridades de dos niveles y una secuencia de sondeo “polling”, para el caso que dos o más interrupciones ocurran al mismo tiempo, o si una interrupción ocurre cuando se le está dando servicio a otra interrupción. Las prioridades de las interrupciones son programables y la secuencia de sondeo de las interrupciones es fija. Antes de detallar cómo asignamos prioridades a las interrupciones, vamos a describir los dos tipos de interrupciones: internas y externas. Las tres interrupciones internas son generadas por cada uno de sus periféricos internos: dos temporizadores/ contadores y un puerto serial. Por otro lado, las dos interrupciones externas permiten a los periféricos trabajar con la CPU de manera independiente. Cada interrupción genera una bandera y esta se asocia con un vector de interrupción preestablecido; en el caso de las interrupciones externas (INT0 e INT1) y el reset, además del vector de interrupción, también se asocian con un pin del μC. El puerto serie tiene solo una interrupción que se relaciona a dos banderas, una para la transmisión (TI) y otra para la recepción (RI). En la tabla 5.7 se muestran estas interrupciones, incluyendo las banderas, los vectores y los pines del μC asociados a estas. #BOEFSBRVFHFOFSB la interrupción
Interrupción
Dirección del vector asociado
Pin asociado
Reset
RST
0000H
(9)
Externa 0
IE0
0003H
P3.2 (12)
Contador/temporizador 0
TF0
000BH
–
Externa 1
IE1
0013H
P3.3 (13)
Contador/temporizador 1
TF1
001BH
–
Puerto serial
TIRI
0023H
–
KXYcX,%. 9Xe[\iXj#m\Zkfi\jpg`e\jXjfZ`X[fjXcXj`ek\iilgZ`fe\j[\c/',(% Todas las interrupciones se deshabilitan después de aplicar un reset al sistema, y se habilitan de manera individual por medio del software. El hardware del microcontrolador borra automáticamente la bandera que causó la interrupción, a excepción de las banderas TI y RI, correspondientes al puerto serie. Por tanto, estas banderas deben probarse en la RSI, para determinar la fuente de interrupción y después borrar por software la bandera que causó la interrupción. Por lo general, ocurre que el μC brinca a una dirección específica dependiendo de la fuente de interrupción. Lo anterior lo detallaremos cuando describamos al puerto serie. Las banderas que generan las interrupciones se encuentran en dos registros de la RAM interna situada en el área para los SFR, estos son el registro de control de temporizadores/contadores e interrupciones externas, TCON, y el registro de control del puerto serie, SCON (véase figura 5.144). K:FE
K=(
KI(
K='
KI'
@<(
@K(
@<'
@K'
J:FE
JD'
JD(
JD)
I
K9/
I9/
K@
I@
=`^liX,%(++ Las banderas del registro TCON se limpian por hardware de forma automática, mientras que las banderas del registro SCON se limpian por software. A partir de aquí, analizaremos cada bit de estos registros cuando describamos los periféricos internos a los que están asociadas estas banderas. Si las interrupciones no van a usarse, sus localidades se encuentran disponibles como localidades de propósito general en la memoria para código. Sin embargo, por lo general, la primera instrucción del programa principal es un salto por encima de esta área de memoria, a menudo el salto es JMP 0030. Por consiguiente, la estructura sugerida para un programa, independientemente que use interrupciones, es la siguiente:
344
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
ORG JMP
0000H PRINCIPAL : : : 0030H
ORG PRINCIPAL:
;Inicio después de un reset ;Localidades para las RSI ;Punto de inicio del programa principal ;inicio del programa principal
: : END
8 bytes
La primera instrucción brinca por encima de las localidades asignadas a los vectores de interrupción, donde comienzan las RSI; en este ejemplo, la dirección a donde brinca es la 0030H, indicando que el programa principal inicia en esa dirección. Las localidades de las rutinas de interrupción se espacian 8 bytes; es decir, se tienen 8 bytes entre la localidad 0003H y la 000BH, a su vez entre la localidad 000BH y la 0013H, y así sucesivamente. Si la RSI es lo suficientemente corta, como sucede con frecuencia en aplicaciones de control, esta puede residir en ese espacio de 8 bytes y regresar de la RSI al programa principal, por ejemplo: ORG 0000H JMP PRINCIPAL ORG 0003H RSI_INTO: : : RETI PRINCIPAL
;Inicio después de un reset ; inicio de la interrupción externa a 0 ; inicia RSI de la INTO ; Regresa al programa principal ; inicio del programa principal
: En este ejemplo, podemos observar que el programa principal inicia inmediatamente después de la instrucción RETI, debido a que se utilizó solo la interrupción externa 0. No obstante, si se utilizan más interrupciones, se tiene que tener cuidado que la RSI de una interrupción no se sobrepase a las localidades de la siguiente RSI. En cambio, si la RSI es mayor de los ocho bytes asignados, entonces se puede usar la instrucción JMP para saltar las localidades de las interrupciones subsiguientes, en caso de que otras interrupciones estén en uso. Por tanto, este tipo de RSI generalmente inicia con un salto a otra área de la memoria para código, donde la RSI pueda realizarse sin la restricción de los ocho bytes. Siguiendo el ejemplo de la interrupción externa 0, podemos usar la siguiente estructura: ORG JMP ORG LJMP ORG PRINCIPAL
0000H PRINCIPAL 0003H RSI_INT0 0030H
; Inicio después de reset ; Inicio de la interrupción externa 0 ; Salto a la interrupción externa 0 ; Inicio de código encima de los vectores de las RSI ; Inicio del programa principal
: : RSI_INT0:
RETI
: : : ; :
; RSI de la interrupción externa 0 ; Regreso al programa principal
grupo editorial patria®
345
5 El popular microcontrolador
Para enfatizar el uso de las interrupciones y que todo el trabajo se lleve a cabo en la RSI, después de las instrucciones de inicialización, el programa principal podría constar solo de una instrucción: ESPERA:
SJMP
ESPERA
Como sabemos, al ocurrir una interrupción el programa principal se interrumpe temporalmente, mientras se ejecuta la RSI. La instrucción RETI al final de la RSI deja inactiva la rutina y regresa al programa principal. Habilitando y deshabilitando las interrupciones Cada una de las fuentes de interrupción se habilita o deshabilita de manera individual mediante el registro de función especial habilitador de interrupciones, IE, el cual es direccionable por bit y se localiza en la dirección A8H. @<
<8
Æ
=`^liX,%(+, El registro IE cuenta con un bit de habilitación/deshabilitación global, EA, adicional a los bits individuales para cada fuente de interrupción como se muestra en la tabla 5.8. #JU
Símbolo
Dirección de bit
Descripción (1 = habilitación; 0 = deshabilitación)
IE.7
EA
AFH
Habilitación/deshabilitación global
IE.6
--
AEH
Indefinido
IE.5
ET2
ADH
Habilita interrupción del temporizador 2 (solo en el 8052)
IE.4
ES
ACH
Habilita interrupción del puerto serial
IE.3
ET1
ABH
Habilita interrupción del temporizador 1
IE.2
EX1
AAH
Habilita interrupción externa 1
IE.1
ET0
A9H
Habilita interrupción del temporizador 0
IE.0
EX0
A8H
Habilita interrupción externa 0
KXYcX,%/ I\jld\e[\jZi`gk`mf[\ci\^`jkif_XY`c`kX[fi[\`ek\iilgZ`fe\j#@<% Para habilitar cualquier interrupción, es necesario habilitar dos bits: el bit de habilitación individual y el bit de habilitación global. Por ejemplo, para habilitar la interrupción externa 0, podemos usar las siguientes dos instrucciones: SETB
EX0
;Habilita interrupción externa 0
SETB
EA
;Activa el bit de habilitación global
Sin embargo, también es posible usar solo una instrucción para habilitar la interrupción externa 0. MOV
IE,10000001B
;Habilita interrupción externa 0
Ambas formas de habilitar la interrupción externa 0 producen el mismo efecto si provienen de una reinicialización del sistema. Pero, si se requiere habilitar una interrupción cuando se está ejecutando un programa “run time”, la primera opción no afecta ninguno de los otros cinco bits del registro IE; en cambio, la segunda opción borraría estos cinco bits, lo cual podría tener un efecto no deseado en el programa. Por consiguiente, se recomienda usar una transferencia de byte para inicializar el registro IE, al inicio de un programa, y usar instrucciones de establecer en 1 un bit (SETB) o borrar bit (CLR) para habilitar/desabilitar una interrupción en “run time”.
346
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Prioridades de las interrupciones Desde el punto de vista conceptual, las prioridades de las interrupciones se explicaron en la sección Interface mediante interrupciones y mediante E/S por programa (polling), del apartado Desmitificando al microprocesador. En el 8051, cada fuente de interrupción tiene dos niveles de prioridad programables de manera individual por medio del registro de función especial de prioridad de interrupciones, IP, el cual es direccionable por bit y se ubica en la dirección D8H. @G
Æ
Æ
GK)
GJ
GK(
GO(
GK'
GO'
=`^liX,%(+La tabla 5.9 muestra el resumen de los bits que conforman el registro IP. #JU
Símbolo
Dirección de bit
Descripción (1 = prioridad alta; 0 = prioridad baja)
IP.7
--
AFH
Indefinido
IP.6
--
AEH
Indefinido
IP.5
PT2
BDH
Prioridad de interrupción del temporizador 2 (8052)
IP.4
PS
BCH
Prioridad de interrupción del puerto serial
IP.3
PT1
BBH
Prioridad de interrupción del temporizador 1
IP.2
PX1
BAH
Prioridad de interrupción externa 1
IP.1
PT0
B9H
Prioridad de interrupción del temporizador 0
IP.0
PX0
B8H
Prioridad de interrupción externa 0
KXYcX,%0 I\jld\e[\jZi`gk`mf[\ci\^`jkif[\gi`fi`[X[[\`ek\iilgZ`fe\j#@G% Después de reinicializar el μC, se borran los bits del registro IP, para que todas las interrupciones tengan el nivel de prioridad más bajo de forma predeterminada. Lo anterior permite que una RSI pueda ser interrumpida por otra interrupción, si esta nueva interrupción es de una prioridad más alta que la interrupción que se está atendiendo. Debido a que se tienen solo dos niveles de prioridad, el uso de las prioridades es simple. Si una RSI de baja prioridad se encuentra ejecutándose cuando ocurre una interrupción de alta prioridad, la RSI se interrumpe y se atiende la nueva interrupción. Una RSI con alta prioridad no puede ser interrumpida por una de baja prioridad. Si de forma simultánea ocurren dos interrupciones, primero se atenderá la interrupción de más alta prioridad. Secuencia de sondeo (polling) de las interrupciones Cuando ocurren dos interrupciones de la misma prioridad simultáneamente, se hace uso de una secuencia preestablecida de sondeo “polling”, que determina a cuál de las interrupciones se le dará servicio primero. La secuencia de prioridad de sondeo de las interrupciones es: 1. 2. 3. 4. 5. 6.
Externa 0 Temporizador/contador 0 Externa 1 Temporizador/contador 1 Puerto serial Temporizador/contador 2 (solo en el 8052)
La figura 5.147 ilustra la organización general de las interrupciones, la cual incluye las cinco fuentes de interrupción, el mecanismo de habilitación individual y global correspondientes al registro IE, los niveles de prioridad relacionados con el registro IP y la secuencia de sondeo que acabamos de describir. El estado de todas las fuentes de interrupción se encuentra disponible a través de los bits de los registros de funciones especiales IE e IP. Por ejemplo, si se habilitan tanto los bits individuales del temporizador/contador 0 y del
grupo editorial patria®
347
5 El popular microcontrolador
Registro IE ____ INT0
IT0
TF0
IT1
Interrupción de alta prioridad
1 IE0
0 ____ INT1
Registro IP
Interrupción de baja prioridad
1 IE1
0
Secuencia de sondeo de interrupciones
TF1 R1 T1 (Solo en el 8052)
TF2 EXF2
Habilitadores de interrupción individuales
Habilitador global de interrupciones
Interrupción aceptada
=`^liX,%(+. Fi^Xe`qXZ`e^\e\iXc[\cXj`ek\iilgZ`fe\j[\c/',(% temporizador/contador 1, como el bit global correspondientes al registro IE y además se asigna una prioridad alta para ambas interrupciones, en caso de generarse las dos interrupciones simultáneamente, el μC hará uso de la secuencia de sondeo; en consecuencia, atenderá primero la interrupción del temporizador/contador 0.
Interrupciones externas Las interrupciones externas del 8051 son causadas por la transición de un flanco de bajada (negativo) o de un nivel lógico bajo en las terminales /INT0 e /INT1, correspondientes a las funciones alternas de los puertos P3.2 (pin 12) y P3.3 (pin 13), respectivamente. Los registros asociados con el manejo de las interrupciones externas son IE, IP y el registro de control de TCON. K:FE
K=(
KI(
K='
KI'
@<(
@K(
@<'
@K'
=`^liX,%(+/ Las banderas que generan estas interrupciones son los bits IE0 e IE1, ubicados en el registro TCON. En este registro se encuentran también los bits IT0 e IT1, que determinan si las interrupciones externas se activarán por niveles o por flancos negativos como lo ilustra la figura 5.149. IT0 ____ INT0
Interrupción externa INT0 INT1
Bandera IT0 0/IT0 1 IT1 0/IT1 1
IE0 0
Activación Nivel/Flanco Nivel/Flanco
1
IT1 ____ INT1
1 IE0 0
=`^liX,%(+0
348
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Por tanto, la selección de una interrupción por flanco o por nivel requiere de la programación de los bits IT0 e IT1 del registro TCON. Por ejemplo, si IT0 0, la interrupción externa 0 se disparará por un nivel lógico bajo detectado en la terminal INT0. En cambio, si IT0 1 la interrupción externa 0 se disparará por un flanco negativo en la terminal INT0; acto seguido, el bit IE0 solicitará la interrupción. El estado de las terminales externas, INT0 e INT1, se muestrea cada ciclo de máquina; en consecuencia, si la interrupción se genera por flanco, la fuente externa debe mantener la terminal de petición en un nivel lógico alto, por lo menos, un ciclo de máquina, y después mantener la terminal en un nivel lógico bajo, cuando menos un ciclo más para asegurar la detección del flanco negativo. En este caso, los bits IE0 e IE1 se borran automáticamente por hardware, cuando la CPU del μC carga en el PC el vector de interrupción que le corresponde y brinca a atender la RSI. En otras palabras, la RSI se ejecuta una sola vez, después de haberse detectado un flanco en la terminal externa /INT0 o INT1 como se muestra en la figura 5.150. ____ ____ INT0 o INT1
ts
ts
ts tiempo de ejecución de la RSI
=`^liX,%(,'
ts
ts
ts
ts
ts tiempo de ejecución de la RSI
=`^liX,%(,(
grupo editorial patria®
349
5 El popular microcontrolador
recomendará verificar las reglas de prioridad. La práctica consiste en generar las dos interrupciones externas usando un μC 8751. Las RSI deben encender un par de LED por 9 segundos, los cuales se conectan a dos pines del puerto 1 como se ilustra en el circuito de prueba de la figura 5.152. 30 pF XTAL 1 3.59 Mhz XTAL 2 5 V 30 pF
8751
5 V 220 7
220 7
INT 0
INT 1
P1.0 P1.1
1K 7
=`^liX,%(,) :`iZl`kf[\gil\YX#YXjX[f\e\cμ:/.,(#gXiXm\i`]`ZXi]leZ`feXd`\ekf[\cXj`ek\iilgZ`fe\j%
Aquí se requiere realizar un programa que encienda un LED por 9 segundos, dependiendo del botón interruptor “push button” que se presione, y poder comprobar el funcionamiento de las prioridades. Ahora, realizamos el programa con la programación de las interrupciones por niveles y asignándole prioridad alta a la interrupción externa 1. ;PROGRAMA DE PRUEBA PARA LAS INTERRUPCIONES EXTERNAS ORG
0000H
AJMP
PRINCIPAL
ORG
0003H
;***Vector de la interrupción externa cero
AJMP
INTE0
;Salta a la RSI de la interrupción externa 0
ORG
0013H
;***Vector de la interrupción externa uno ***
AJMP
INTE1
;Salta a la RSI de la interrupción externa 1
ORG
0030H
;Inicio del código encima de las localidades de las RSI
PRINCIPAL:
;Inicio después del reset
;Inicio del programa principal. MOV
IE,#85H
;Habilita interrupciones externas cero y uno
MOV
IP,#04H
;Se asigna una mayor prioridad a INT1
SJMP
ESPERA
;Espera a que llegue una interrupción
ESPERA:
;*** Rutina de servicio de la interrupción cero *** INTE0:
350
CLR
P1.0
;Se enciende el “LED” cero
MOV
R0,#15H
;Se genera un retardo de 9.1 s aprox.
RET3:
MOV
R1,#0FFH
;con un cristal de 3.59 MHz
RET2:
MOV
R2,#0FFH
;
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
RET1:
DJNZ
R2,RET1
;(255X2) 510
DJNZ
R1,RET2
;(255X255)X2 130,050
DJNZ
R0,RET3
;21(255X255X2) 2,731,050
SETB
P1.0
;Se apaga el “LED” cero
RETI
;Retorno de la interrupción
;*** Rutina de servicio de la interrupción uno *** INTE1: CLR
P1.0
;Se enciende el “LED” cero
MOV
R0,#15H
;Se genera un retardo de 9.1 s aprox.
RETT3:MOV
R1,#0FFH
;con cristal de 3.59 MHz
RETT2:MOV
R2,#0FFH
;
RETT1:DJNZ
R2,RETT1
;(255X2) 510
DJNZ
R1,RETT2
;(255X255)X2 130,050
DJNZ
R0,RETT3
;21(255X255X2) 2,731,050
SETB
P1.1
;Se apaga el “LED” cero
RETI
;Retorno de la interrupción
END
Después de reinicializar el sistema, el programa brinca a la etiqueta PRINCIPAL, donde inicia el código del programa, localidad 0030H, sobrepasando las localidades asignadas previamente a las interrupciones INT0 e INT1. Las primeras instrucciones después de la etiqueta PRINCIPAL se encuentran relacionadas con la habilitación de las interrupciones externas y con la asignación de prioridades; posteriormente, el programa entra en un lazo de espera (loop), hasta que ocurran las interrupciones externas. Como las RSI de las interrupciones externas requieren más de ocho bits, la primera instrucción en la localidad asignada al vector de interrupción es una instrucción de brinco a un área del programa donde no se tengan restricciones de memoria de código. Cuando llega una interrupción, por ejemplo la interrupción externa 0 (INT0), el programa termina la instrucción que esté efectuando, en el lazo de espera, y brinca a la dirección especificada por el vector de interrupción, en este caso la 0003H. Una vez en esa localidad, la instrucción que ejecuta es un brinco (AJMP) hacia la RSI que inicia con la etiqueta INTE0. La primera instrucción de la RSI es borrar (CLR) el pin P1.0, para encender el LED rojo, después se genera un retardo de 9 segundos y finalmente la última instrucción es establecer en 1 lógico (SETB), el pin P1.0, para apagar el LED rojo. Como el cristal es de 3.59 MHz, el ciclo de máquina es de 3.342 μs; en consecuencia, se requiere realizar un retardo de 2,731,050 ciclos de máquina, lo cual resulta en los 9.1 segundos requeridos para encender el LED rojo. Si usamos el simulador TS Controls es posible verificar el funcionamiento de las interrupciones y de los tiempos de retardo esperados. Así, para simular el programa, realizamos los siguientes pasos ejemplificados en la figura 5.153. En esta simulación se verificó el funcionamiento de la interrupción externa 0, pero igualmente puede verificarse el funcionamiento de la interrupción externa 1. Para esto, solo es necesario modificar el registro TCON (paso 3); ahora, el dato que hay que cargar en el registro TCON sería un 80H para habilitar la bandera IE1. Por otro lado, para programar la activación de las interrupciones por flancos, se modifica el programa después de la etiqueta PRINCIPAL. Por consiguiente, es necesario establecer en 1 lógico las banderas IT0 e IT1, lo cual se puede realizar por bit. Por ejemplo:
grupo editorial patria®
351
5 El popular microcontrolador
(
(%
* *%
+ +% 8ek\j[\\a\ZlkXi\cgif^iXdX#\ck`\dgf kiXejZlii`[f[\\a\ZlZ`e\j'%'j\^le[fj% ,
,% 8c\a\ZlkXij\\cgif^iXdXj\c\ZZ`feXe[file =, #\jk\j\[\k`\e\\e\cYi\Xbgf`ek#cfZlXc `e[`ZX\ck`\dgf\ed`Zifj\^le[fj_XjkX\j\ dfd\ekf#\hl`mXc\ek\X0%(j\^le[fj%
-
=`^liX,%(,*
352
ELECTRÓNICA • MIJAREZ
-% FYj\im\hl\\cgif^iXdXj\[\klmfleZ`Zcf [\d}hl`eXk`Zb Xek\j[\hl\\cgl\ikfG(%' j\\jkXYc\qZX\e(c^`Zf2gfikXekf#XgX^l\ \cC<;pi\^i\j\Xcgif^iXdXgi`eZ`gXc%
5 El popular microcontrolador
ORG PRINCIPAL: MOV MOV SETB SETB SJMP
0030H
;Inicio del código encima de las localidades de las RSI ;Inicio del programa principal. ;Habilita interrupciones externas cero y uno ;Se asigna una mayor prioridad a INT1 ;Programa por flanco el disparo de la INT0 ;Programa por flanco el disparo de la INT1ESPERA: ;Espera a que llegue una interrupción
IE,#85H IP,#04H IT0 IT1 ESPERA
Las interrupciones son la parte más truculenta y complicada de manejar en todos los microcontroladores. Por esta razón, se recomienda realizar las prácticas sugeridas en el apéndice que se encuentra en el CD que acompaña este libro, donde se es posible verificar las prioridades de las interrupciones.
Contadores/temporizadores En esta sección describimos los contadores/temporizadores integrados dentro del microcontrolador 8051. Estos temporizadores adquieren gran importancia debido a que se utilizan en una gran variedad de aplicaciones orientadas a control. De manera general, los temporizadores están compuestos por una serie de flip flops de división entre dos, los cuales tienen como entrada una fuente de reloj. La señal del reloj se aplica a la entrada del primer flip flop y su salida produce una señal con la frecuencia de entrada dividida entre dos. La salida del primer flip flop se conecta a la entrada del segundo flip flop, el cual a su vez divide la frecuencia, y así sucesivamente. Un número n de flip flops divide la frecuencia de entrada entre 2n veces. Por ejemplo, un temporizador de 3 flip flops divide la frecuencia de entrada entre 8. La salida del último flip flop se aplica a la entrada de reloj de un flip flop denominado de desbordamiento o sobreflujo (overflow), el cual genera un bit o bandera cuyo estado lógico 1 puede usarse para generar una interrupción. El valor binario de las salidas de los flip flops representa el número de pulsos de reloj (o eventos) que el temporizador puede contar. Continuando con nuestro temporizador de tres bits, este podría contar ocho pulsos, es decir, desde que sus salidas son 000B hasta que son 111B. Por ejemplo, la cuenta 6 sucede cuando Q2 1, Q1 1 y Q0 0 (610 1102). La bandera de desbordamiento se establece en 1 lógico cuando ocurre el desbordamiento de 111B a 000B, como se muestra en la figura 5.154. Temporizador de 3 bits
D
D
Q
D
Q
D
Q
Bandera
Reloj
a)
Q
Flip flop de desbordamiento +5 V
CK Q0
CK Q1
CK Q
CK Q2
Bit menos significativo
Bit más significativo
Reloj Q0 (Bit menos significativo) Q1 Q2 (Bit más significativo) Contador
0
1
2
3
4
5
6
7
0
Bandera b)
La bandera se establece en 1 en un desbordamiento de 7 a 0 en el temporizador
=`^liX,%(,+ K\dgfi`qX[fi[\*Y`kj%X ;`X^iXdX\jhl\d}k`Zf%Y ;`X^iXdX[\k`\dgfj%
grupo editorial patria®
353
5 El popular microcontrolador
El microcontrolador 8051 cuenta con dos contadores/temporizadores (C/T) de 16 bits con cuatro modos de operación. Un tercer contador/temporizador se añade en el μC 8052 de Intel y en microcontroladores de otros fabricantes de la familia MCS-51; sin embargo, en este libro nos centraremos en el microcontrolador 8051. Como cada temporizador es de 16 bits, el último flip flop divide la frecuencia de reloj de entrada entre 216 65,536. Sin embargo, la arquitectura del 8051 es de 8 bits; por consiguiente, se accede a cada C/T usando registros por separado de 8 bits: un byte de orden bajo y un byte de orden alto. Los C/T pueden usarse de la siguiente manera: t Como temporizadores, para generar tiempos de retardo regulares o temporización de intervalos. t Como contadores de eventos, para contar eventos que ocurren fuera del microcontrolador. t Como temporizadores, para generar la tasa de transmisión/recepción (baud rate) de datos para el puerto serie incorporado en el microcontrolador. En las aplicaciones de temporización de intervalos, un temporizador se programa para causar un desbordamiento a intervalos regulares, estableciendo en 1 lógico la bandera de desbordamiento y, por ende, generando una interrupción. La RSI puede verificar el estado de las entradas de los puertos o enviar datos a las salidas de los mismos. Otras implementaciones incluyen medir el tiempo transcurrido entre dos condiciones, como lo es medir el ancho de un pulso. Por otro lado, el conteo de eventos se utiliza para contar cuantas veces ha ocurrido un evento externo. Un evento externo es cualquier señal que proporciona una transición de 1 lógico a 0 lógico, en una terminal preestablecida del microcontrolador. Los temporizadores también pueden usarse para proveer el reloj de la tasa de transmisión/recepción del puerto serie. Para programar cada C/T del 8051, es necesario tener acceso a seis registros de funciones especiales: t t t t t
Registros IE e IP. Registros de modo de los temporizadores (TMOD). Registro de control de los temporizadores (TCON). Registros contadores del contador/temporizador 0 (TH0 y TL0). Registros contadores del contador/temporizador 1 (TH1 y TL1).
Los registros IE e IP los describimos previamente en la sección Particularidades de las interrupciones del 8051, por lo que nos resta explicar el funcionamiento de los registros TCON, TMOD y los dos registros contadores asociados a cada temporizador (C/T0 y C/T1). El registro TMOD se divide en dos grupos de cuatro bits que determinan el modo de operación para los C/T0 y C/T1. KDF;
>8K<
:&K
D(
D'
>8K<
:&K
D(
D'
=`^liX,%(,, Los primeros cuatro bits del registro de TMOD corresponden al T/C0 y los otros cuatro al T/C1. Para ambos casos, M1 y M0 seleccionan el modo de operación de acuerdo con la tabla 5.10. M1
M0
Modo
Descripción
0
0
0
Modo de temporizador de 13 bits
0
1
1
Modo de temporizador de 16 bits
1
0
2
Modo de temporizador de 8 bits con recarga automática
1
1
3
Modo temporizador dividido: TL0 funciona como un temporizador de 8 bits controlado por los bits del modo temporizador 0; y TH0 funciona como un temporizador de 8 bits controlado por los bits del modo temporizador 1. Temporizador 1 detenido.
KXYcX,%(' Df[fj[\fg\iXZ`e[\cfjZfekX[fi\j&k\dgfi`qX[fi\j%
354
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
El registro TMOD es uno de los SFR que no es direccionable por bit. Por lo general, este registro se carga por software al inicio de un programa para inicializar el modo de operación del temporizador. El bit GATE permite que cada C/T pueda ser arrancado con una interrupción externa si este bit se establece en 1. Por su parte, con el bit C/Ť se selecciona la operación del C/T, ya sea como temporizador o un contador; si C/Ť 1 la función es de contador. La tabla 5.11 muestra el resumen descriptivo del registro TMOD. #JU
Símbolo
Temporizador
Descripción
7
GATE
1
Bit de compuerta. Cuando se establece en 1, el temporizador funciona solo si la terminal /INT1 se encuentra en 1 lógico.
6
C/ Ť
1
Bit de selección de contador/temporizador. Si es 1, funciona como contador, y si es 0 como temporizador.
5
M1
1
Bit de selección de modo temporizador 1 (véase tabla 5.10)
4
M0
1
Bit de selección de modo temporizador 1 (véase tabla 5.10)
3
GATE
0
Bit de compuerta. Cuando se establece en 1, el temporizador funciona solo si la terminal /INT0 se encuentra en 1 lógico.
2
C/ Ť
0
Bit de selección de contador/temporizador. Si es 1, funciona como contador, y si es 0 como temporizador.
1
M1
0
Bit de selección de modo temporizador 0 (véase tabla 5.10)
0
M0
0
Bit de selección de modo temporizador 0 (véase tabla 5.10)
KXYcX,%(( I\jld\e[\jZi`gk`mf[\ci\^`jkif[\df[f[\cfjk\dgfi`qX[fi\j#KDF;% El registro TCON, al igual que el registro TMOD, también se divide en dos grupos de 4 bits, pero este registro si es direccionable por bit. Los bits del nibble bajo del registro TCON no tienen relación con los temporizadores; por lo general, estos se usan para detectar e iniciar las interrupciones externas, como lo vimos en la sección Interrupciones externas. En cambio, los bits del nibble alto del registro TCON contienen los bits de estado y de control de los temporizadores. K:FE
K=(
KI(
K='
KI'
@<(
@K(
@<'
@K'
=`^liX,%(,Los bits TR0 y TR1 se utilizan para encender o apagar los T/C, y los bits TF0 y TF1 son las banderas de desbordamientos de los temporizadores. La tabla 5.12 muestra el resumen descriptivo del registro TCON. #JU
Símbolo
Dirección de bit
TCON.7
TF1
8FH
Bandera de desbordamiento del T/C1. Se establece en 1 mediante hardware cuando ocurre el desbordamiento. Se borra por software o por hardware cuando se brinca a la RSI correspondiente.
TCON.6
TR1
8EH
Bit de control de ejecución del T/C1. Se establece en 1/0 para encender/ apagar el T/C.
TCON.5
TF0
8DH
Bandera de desbordamiento del T/C0. Bis.
TCON.4
TR0
8CH
Bit de control de ejecución del T/C0. Bis.
TCON.3
IE1
8BH
Bandera de flanco de la interrupción externa 1. Se establece en 1 mediante el hardware cuando se detecta un flanco negativo en la terminal /INT1; se pone en 0 por software o mediante hardware cuando la CPU brinca a la RSI correspondiente.
Descripción
Continúa
grupo editorial patria®
355
5 El popular microcontrolador
#JU
Símbolo
Dirección de bit
TCON.2
IT1
8AH
Bandera para selección del tipo de interrupción externa 1. Se establece en 1/0 por software para activar la interrupción externa por flanco negativo/ nivel lógico bajo.
TCON.1
E0
89H
Bandera de flanco de la interrupción externa 0.
TCON.0
IT0
88H
Bandera para selección del tipo de interrupción externa 0.
Descripción
KXYcX,%() I\jld\e[\jZi`gk`mf[\ci\^`jkif[\Zfekifc[\cfjk\dgfi`qX[fi\j#K:FE%
Nos falta describir los registros contadores THx y TLx relacionados con cada C/T. El sufijo “x” lo utilizaremos para referirnos indistintamente a los temporizadores 0 o 1; por consiguiente, “THx” significa bien TH1 o TH0, dependiendo del temporizador.
Modos de operación La figura 5.157 muestra la organización de los registros TLx y THx y las banderas de desbordamiento TFx de los temporizadores 0 y 1, según correspondan, de acuerdo con su modo de operación. El modo 0 y el modo 1 mostrados en la figura 5.157a) disponen de una conexión en cascada de los registros TLx y THx. En el modo 0, los ocho bits del registro contador de orden alto (THx) y los cinco bits menos significativos del registro contador de orden bajo (TLx) se utilizan para formar un temporizador de 13 bits. Los tres bits más significativo del registro TLx no se utilizan. El modo 1 hace uso de los mismos registros, excepto que utiliza todos los bits de ambos registros para formar un temporizador de 16 bits. Puede accederse a los registros THx y TLx en cualquier momento por software. Para el modo 1, por ejemplo, al recibir los pulsos de reloj los contadores contarán de manera ascendente desde 0000H, 0001H, 0002H hasta FFFFH. En la transición del conteo de FFFFH a 0000H, ocurrirá el desbordamiento que establecerá en 1 la bandera de desbordamiento TFx del temporizador, la cual puede ser accedida (leída o escrita) por software en el registro TCON. El temporizador sigue contando. El bit más significativo (MSB) es el bit 7 del registro THx y el bit menos significativo (LSB) es el bit 0 del registro TLx. El LSB cambia con una frecuencia de entrada dividida entre dos; y el MSB cambia con una frecuencia de entrada dividida entre 216, por tanto puede contar hasta 65536 pulsos de reloj. El modo 2, ilustrado en la figura 5.157b), es un modo de recarga automática de 8 bits. El registro contador de orden bajo TLx funciona como temporizador de 8 bits, mientras que el registro contador de orden alto THx almacena un valor de recarga. Cuando la cuenta del registro TLx se desborda después de FFH, se establece en 1 la bandera de desbordamiento TFx y se transfiere de manera automática el valor del registro THx al registro TLx; el temporizador sigue contando hasta llegar otra vez al desbordamiento después de FFH, y así sucesivamente. Por lo general, se carga el valor del registro THx al inicio del programa. Por ejemplo, si THx FDH, el temporizador contará continuamente desde FDH hasta FFH, generando una interrupción periódicamente cada tres pulsos de reloj: de FDH a FEH, de FEH a FFH y de FF a 00H. Tener interrupciones de forma periódica es muy útil para ciertas aplicaciones de generación de señales, como veremos en un ejemplo. El modo de operación 3, ilustrado en la figura 5.157c), es un modo de temporizador dividido; es decir, se divide en dos temporizadores de 8 bits que utilizan los registros TL0 y TH0, los cuales actúan como temporizadores independientes, estableciendo en 1 lógico las banderas TF0 y TF1, respectivamente. La importancia del modo 3 radica en que se dispone de un temporizador de 8 bits adicional, por lo que funcionalmente el 8051 podría tener tres temporizadores. Aún más, en el modo 3 el temporizador 1 se encuentra detenido, aunque podría inicializarse a uno de los otros modos; la restricción es que su bandera de desbordamiento TF1 no se activará, debido a que TF1 está conectada a TH0 en el modo 3; es decir, el modo 3 predomina en el temporizador 1 sobre otros modos. Aún así, el temporizador 1 todavía puede utilizarse para generar la tasa de transmisión y recepción del puerto serie o en cualquier otra aplicación que no requiera que se produzca una interrupción.
356
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
v12
OSC
INTERRUPCIÓN
— C/ T 0 TLx
THx
Modo 0
TLx (5 bits)
THx (8 bits)
TFx
Modo 1
TLx (8 bits)
THx (8 bits)
TFx
C/— T1 Tx (PIN)
TFx
CONTROL
TRx GATE INTx (PIN)
a)
v12
OSC
INTERRUPCIÓN
— C/ T 0 TLx
C/— T1 Tx (PIN)
THx
TFx
CONTROL RECARGA
TRx THx (8 bits)
GATE INTx (PIN)
b)
v12
OSC
— C/ T 0 C/— T1 T0 (PIN)
TL0 (8 bits)
TFx
INTERRUPCIÓN
TH0 (8 bits)
TF1
INTERRUPCIÓN
CONTROL
TR0 GATE INT0 (PIN) 1/12 fOSC CONTROL TR1
c) =`^liX,%(,. Df[fj[\fg\iXZ`e[\cfjZfekX[fi\j&k\dgfi`qX[fi\j%X Df[f'p(%Y Df[f)%Z Df[f*%
grupo editorial patria®
357
5 El popular microcontrolador
Fuentes de reloj De la figura 5.157 se puede observar que los temporizadores tienen dos fuentes de reloj: una fuente de reloj es externa al μC y la otra fuente es interna. La fuente de reloj externa se utiliza para trabajar como contador de eventos y la fuente interna se usa para operar como temporizador de intervalos. Estas fuentes pueden programarse mediante la escritura al bit contador/temporizador (C/Ť) del registro TMOD. Si C/Ť 1, el temporizador recibe la señal de reloj por medio de una fuente externa. Esta fuente proporciona un pulso de reloj cuando ocurre un evento externo, por esta razón el temporizador realiza operaciones como contador de eventos. El número de eventos se registra cada vez que se detecta un flanco negativo en la terminal externa Tx del μC, incrementándose en uno los registros contadores TLx/ THx. La terminal externa Tx es una de las funciones alternas del puerto P3. El puerto P3.4 corresponde a T0 y sirve como entrada externa de reloj para el temporizador 0, el puerto P3.5 corresponde a T1 y se usa como entrada externa de reloj para el temporizador 1. Como contador de eventos, la entrada de reloj externa se muestrea durante la etapa S5P2 de cada ciclo de máquina; en consecuencia, cuando el μC detecta en la entrada un nivel lógico alto en un ciclo y un nivel lógico bajo en el siguiente ciclo de máquina, la cuenta se incrementa. El nuevo valor se almacena en los registros contadores durante la etapa S3P1 del ciclo posterior al que detectó la transición de 1 a 0 lógicos. Por tanto, si usamos un cristal de 12 MHz, la máxima frecuencia que podemos detectar es de 500 kHz, debido a que se requiere de dos ciclos de máquina, es decir, un periodo de 2 μs, para reconocer una transición. Por otro lado, si C/Ť 0, se selecciona la operación como temporizador y este recibe de forma continua la señal de reloj del oscilador incorporado en el μC. Esta señal de reloj pasa a través de una etapa de división entre 12 con el objetivo de reducir la frecuencia de entrada a valores requeridos en muchas aplicaciones. Por ejemplo, para un oscilador con un cristal de 12 MHz, la frecuencia utilizada por el temporizador será de 1 MHz. Los desbordamientos que generan la interrupción ocurrirán cada número fijo de pulsos de reloj, es decir, cada intervalo de tiempo determinado por el valor inicial cargado en los registros contadores TLx/THx.
Cálculo y lectura de los registros TLx/THx Como ya se mencionó, las interrupciones en los T/C se generan por las banderas de desbordamiento; en consecuencia, los registros TLx y THx se deben iniciar con un valor tal que, al irse incrementando, lleguen al desbordamiento en la cuenta deseada. Para el caso del T/C funcionando como temporizador, los registros se incrementan cada doce periodos del oscilador interno; si se inician los registros con cero, después de 65536 cuentas se generará el desbordamiento. Con las consideraciones anteriores, es posible deducir la siguiente fórmula para obtener el valor de los registros contadores: (THx,TLx) 65536 – (t)(fosc)/12 Donde t es el retardo en segundos que se requiere, fosc es la frecuencia del oscilador y THx/TLx es el valor que debemos cargar en los registros contadores. Los valores de THx y TLx se calculan en decimal, posteriormente se transforma su valor a hexadecimal y finalmente se divide en parte baja y parte alta. En el caso del T/C programado para funcionar como contador de eventos externos, la fórmula para obtener el valor de los registros contadores es: (TH,TL) 65536 – NE Donde NE es el número de eventos que se desea contar. A partir de esta, el valor de los registros contadores THx y TLx se obtienen de igual forma que en el temporizador. Asimismo, existen aplicaciones que requieren leer el valor de los dos registros contadores TLx/THx “al instante”, cuando el temporizador se encuentra en operación. Sin embargo, al realizar estas lecturas puede surgir un error de fase; esto ocurre cuando el byte del registro TLx se desborda hacia el byte superior del registro THx, a la mitad de las dos operaciones de lectura, con lo cual podría llegar a leerse un valor que no existió. Tambiém es posible darle solu-
358
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
ción a este problema mediante software. En este caso, primero se lee el registro de orden alto, THx, después se lee el registro de orden bajo, TLx, y posteriormente se lee el registro de orden alto otra vez, THx. Si el byte superior cambió después de la segunda lectura, se repiten las dos operaciones de lectura. El siguiente código es capaz de leer el contenido de los registros TL0/TH0 y almacenarlo en los registros R0/R1, lo que resuelve el problema. LEE_CONTADORES: MOV
A,TH0
MOV
R0,TL0
CNJE
A,TH0, LEE_CONTADORES
MOV
R1,TH0
Inicialización y ABPRA con los temporizadores Por lo general, la inicialización de los temporizadores se realiza al iniciar el programa principal, para establecer el modo de operación requerido. Posteriormente, dentro del programa, los temporizadores se pueden iniciar o detener, las banderas de desbordamiento se pueden leer y borrar, los registros contadores se pueden leer o actualizar, etcétera, según lo requiera la aplicación. La inicialización del temporizador la describiremos con un ejemplo. ¡Así que manos a la obra! En este ejemplo, vamos a hacer uso del ABPRA y a aprender con una práctica/ejemplo. La práctica consiste en generar una onda cuadrada de 4 kHz utilizando el temporizador 0 en el modo más apropiado. La señal debe generarse en la terminal P1.0, como se muestra en la figura 5.158. 30 pF XTAL1
12 MHz XTAL2
30 pF
P1.0 0.125 ms
80C31
0.125 ms
f = 4 kHz
=`^liX,%(,/ :`iZl`kf[\gil\YX#YXjX[f\e\cμ:/.:*(#gXiX^\e\iXileXj\Xc[\+b?qljXe[f\ck\dgfi`qX[fi'%
Para resolver esta práctica, primero realizamos el cálculo de los registros contadores y, posteriormente, desarrollamos el programa requerido; pero, antes definimos que el T/C0 lo utilizaremos como temporizador, ya que no requerimos contar ningún evento externo. El cálculo de los registros contadores lo realizamos de acuerdo con la siguiente fórmula: (THx,TLx) 65536 – (t)(fosc)/12 En este caso, la frecuencia del oscilador es de 12 MHz y el tiempo que requerimos nos interrumpa el temporizador 0 es de 125 μs para establecer en 1 y después poner en 0 al pin del puerto P1.0. Por tanto, el valor de los registros contadores se obtiene sustituyendo estos valores: (TH,TL) 65536 – (125 μs)(12 MHz)/12 6541110 FF8316
grupo editorial patria®
359
5 El popular microcontrolador
Ahora, dividimos el byte de orden alto y bajo y lo asignamos a los registros contadores: TH0 0FFH y TL0 83H Como se observa, el valor del registro TH0 debe ser FFH, de tal manera que el único registro que se incrementará será el TL0; por tanto, no requerimos los dos registros contadores, un registro de 8 bits es suficiente. Por otro lado, como requerimos que la interrupción se genere de manera automática durante intervalos de tiempo regulares, seleccionamos el T/C como temporizador en modo 2, el cual utiliza un contador de 8 bits con recarga automática. A continuación, realizamos el programa requerido. ;PROGRAMA PARA USAR EL TEMPORIZADOR 0 del μC 8051 ORG 0000H AJMP PRINCIPAL ORG CPL RETI ORG PRINCIPAL: MOV MOV MOV MOV SETB ESPERA: AJMP
000BH P1.0
;Cambia de estado la terminal P1.0 ;Retorno de la interrupción
0030H IE,#82H TMOD,#02H TLO,#83H TH0,#83H TR0
;Habilita la interrupción del C/T0 ;Programa T/C0 en modo 2 y con control interno ;Carga parte baja ;Carga parte alta ;Arranca el temporizador
ESPERA
;Espera a que termine el retardo y se genere la interrupción
END El análisis del programa es el siguiente: después de reinicializar el sistema, el programa brinca a la etiqueta PRINCIPAL, donde inicia el código del programa en la localidad 0030H, sobrepasando la localidad asignada previamente al temporizador 0. Las primeras instrucciones, después de la etiqueta PRINCIPAL, son relacionadas con la habilitación de la interrupción del C/T 0, registro IE 82H, y la programación del C/T0, como temporizador en el modo 2, registro TMOD 02H; luego, se cargan los registros contadores con el valor calculado, para generar una interrupción cada 125 μs, TL0 TH0 83H. Por último, el programa entra en un lazo de espera (loop), hasta que ocurra la interrupción del temporizador. La RSI del temporizador 0 requiere menos de 8 bits; por tanto, cuando llega la interrupción el PC se carga con el valor 000BH correspondiente al vector de interrupción del T/C0. Una vez en esa localidad, la RSI ejecuta la instrucción CPL, la cual conmuta el estado del puerto P1.0; acto seguido, ejecuta la instrucción RETI que borra la bandera de desbordamiento y regresa nuevamente al lazo de espera, en el programa principal, para esperar otra interrupción, y así sucesivamente. De esta manera, el puerto P1.0 se establecerá en 1 lógico 125 μs, y en 0 lógico 125 μs, alternadamente y de forma continua, generando una onda cuadrada con un periodo de 250 μs o 4 kHz. En este ejemplo se espera que el temporizador genere la interrupción sin errores, puesto que la recarga es automática y por hardware. Los errores en un temporizador se generan por el tiempo que se tarda el microcontrolador en recargar los registros por software. Para los modos que no tienen recarga automática, es necesario considerar dicho retardo en el cálculo del valor del registro.38
38
Por razones de espacio, en esta edición no se presentan ejemplos con los otros modos de operación de los contadores/temporizadores del 8051. Sin embargo, siguiendo la tónica de este libro, una vez asimilado el funcionamiento básico, y principalmente educando nuestra intuición, se puede realizar la programación de cualquier otro modo, e incluso llevar a cabo la programación de temporizadores de cualquier otro microcontrolador. Para ello, se recomienda realizar las prácticas sugeridas en el CD que acompaña este libro.
360
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Puerto serie El microcontrolador 8051 cuenta con un puerto serie como parte importante de sus periféricos internos. El puerto serie es útil para interconectar en serie dispositivos asíncronos tipo receptor/transmisor asíncrono universal (UART, por sus siglas en inglés) y para la expansión síncrona de entradas/salidas. La comunicación serial implica la transmisión de datos, bit por bit, usando solo una línea de comunicación. De manera general, las comunicaciones seriales pueden clasificarse como síncronas o asíncronas. La comunicación serial síncrona transmite un bloque completo de datos sincronizados a través de un reloj de referencia; mientras que la comunicación serial asíncrona transmite un bloque de datos en forma aleatoria, en cualquier momento, sin usar un reloj como referencia. No obstante, la función principal de la comunicación serial en los microcontroladores es transferir datos usando solo una o dos terminales del microcontrolador mediante una conversión paralelo a serie para los datos de salida y de serie a paralelo para los datos de entrada. El puerto serie del 8051 puede operar en varios modos sobre diferentes rangos de frecuencias. Sus principales características son: t Comunicación full dúplex. t Baud rate programable. t Cuatro modos de operación. La operación full dúplex significa que la transmisión y recepción de datos en serie se puede realizar de manera simultánea; para esto, el hardware del 8051 permite recibir un bloque de datos que se almacena en un registro buffer, mientras se recibe otro bloque de datos. Los datos no se pierden si la CPU del μC logra leer el primer bloque de datos antes de que el segundo bloque se haya recibido por completo. El puerto serie tiene una tasa de transmisión/recepción (baude rate) o frecuencia de operación que puede ser fija o variable. La tasa de transmisión/recepción fija se obtiene de la frecuencia del oscilador interno del μC y la tasa de transmisión/recepción variable la proporciona el temporizador 1, por lo que esta debe programarse adecuadamente.
Registro SBUF y registro SCON El acceso en hardware al puerto serie se realiza a través de dos terminales del puerto P3, las cuales forman parte de sus funciones alternas: P3.0, terminal 10 (RXD) y P3.1, terminal 11 (TXD). Mientras que el acceso al puerto serie por software se lleva a cabo mediante dos registros de función especial: el registro buffer del puerto serie (SBUF) y el registro de control del puerto serie (SCON). El registro SBUF se localiza en la dirección 99H de la RAM interna perteneciente a los registros de funciones especiales. El registro SBUF, está constituido por dos registros de 8 bits que sirven como buffers de entrada o salida del puerto, y cada vez que se transmiten o reciben datos por el puerto serial es necesario acceder a estos buffers. Aunque ambos registros tienen la misma dirección, f ísicamente son dos registros separados, como lo muestra el diagrama de bloques del puerto serie de la figura 5.159. En la figura 5.159 podemos apreciar que el puerto serie contiene un registro de desplazamiento o corrimiento (shift), que convierte los datos de entrada serie a paralelo, con el fin de sincronizar los datos recibidos antes de que se transfieran al registro de recepción SBUF. Pero, los bits de datos de entrada se transfieren al registro de entrada SBUF únicamente hasta que hayan sido recibido todos; lo anterior permite que cuando se estén recibiendo los bits de entrada, los datos recibidos previamente se conserven intactos en el registro de lectura SBUF. De manera general, al escribir en el registro SBUF se cargan los datos a transmitir, y al leer del registro SBUF se accede a los datos recibidos. Por ejemplo, las siguientes instrucciones transfieren datos f ísicamente hacia o desde los diferentes registros SBUF: MOV
SBUF, A
;Transmite el contenido del Acc, habilitando el buffer transmisor
MOV
A, SBUF
;habilita al buffer receptor, transfiriendo dato de SBUF al Acc
Por otro lado, el control del puerto serie y el monitoreo de su estado se lleva a cabo por medio del registro SCON. El registro SCON es un registro direccionable por bit ubicado en la dirección 98H de la RAM interna del μC. Este registro contiene tanto los bits de estado como los bits de control del puerto serie.
grupo editorial patria®
361
5 El popular microcontrolador
T1
Transmisión de datos
SBUF (Tx)
CLK
TXD (P3.1)
Bus interno 8051
SCON
SBUF (Rx) Frecuencia del oscilador
CLK Registro de D desplazamiento
÷ 12
Recepción de datos RXD (P3.0)
R1
=`^liX,%(,0 ;`X^iXdX[\Ycfhl\j[\cgl\ikfj\i`\% J:FE
JD;
JD(
JD)
I
K
I
K(
I(
=`^liX,%(-' Los bits de estado indican el fin de la transmisión o recepción de un dato, y pueden probarse por software o programarse para generar una interrupción. Mientras que los bits de control establecen los modos de operación del puerto serie a través de su escritura. Las tablas 5.13 y 5.14 muestran el resumen descriptivo del registro SCON. #JU
Símbolo
Dirección de bit
SCON.7
SM0
9FH
Bit 0, especifica el modo de operación del puerto serial.
SCON.6
SM1
9EH
Bit 1, especifica el modo de operación del puerto serial.
SCON.5
SM2
9DH
Bit 2, habilita la comunicación entre múltiples procesadores en los modos 2 y 3. En estos modos, si RM2 1, se activa RI hasta que RB8 0 (noveno bit es recibido). En el modo 1, RI se activa hasta que se recibe el bit de stop. En el modo 0, SM2 debe ser 0.
SCON.4
REN
9CH
Habilita la recepción serial. REN debe ser 1 para recibir datos.
SCON.3
TB8
9BH
Bit 8 de transmisión. Es el noveno bit de datos que se transmite en los modos 2 y 3. Se establece en 1 o 0 lógicos por software.
SCON.2
RB8
9AH
Bit 8 de recepción. En los modos 2 y 3, es el noveno bit de datos que fue recibido. En el modo 1, si SM2 0, RB8 es el bit de stop recibido. En el modo 0, RB8 no se usa.
SCON.1
TI
99H
Bandera de interrupción de la transmisión. Activada por hardware al final del octavo bit en modo 0, y al inicio del bit de stop en los otros modos. Se debe limpiar por software.
SCON.0
RI
98H
Bandera de interrupción de la recepción. Activada por hardware al final del octavo bit en modo 0, y al inicio del bit de stop en los otros modos. Se debe limpiar por software.
Descripción
KXYcX,%(* I\jld\e[\jZi`gk`mf[\ci\^`jkif[\Zfekifc[\cgl\ikfj\i`\#J:FE%
362
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
SM0
SM1
Modo
0
0
0
Velocidad (baud rate) Registro de desplazamiento. Baud rate fijo. Frecuencia de oscilación ÷ 12.
0
1
1
UART de 8 bits; baud rate Variable.
1
0
2
UART de 9 bits; baud rate fijo. Frecuencia de oscilación ÷ 32 o ÷ 64.
1
1
3
UART de 9 bits, baud rate Variable.
KXYcX,%(+ Df[fj[\fg\iXZ`e[\ci\^`jkif[\Zfekifc[\cgl\ikfj\i`\J:FE% Para utilizar el puerto serie en el modo adecuado, este debe inicializarse a través del registro SCON. Por ejemplo, la siguiente instrucción inicializa el puerto serie en modo 1, SM0 0 y SM1 1, habilita al receptor, REN 1, y por último establece en 1 la bandera de interrupción de la transmisión, TI 1, para indicarle a la CPU del μC que el transmisor se encuentra listo para empezar a transmitir. MOV
SCON, 52H
;Puerto serie modo 1, establece en 1 REN y TI
Modos de operación De acuerdo con la tabla 5.14, el puerto serie puede programarse a través de los bits SM0 y SM1 del registro SCON para operar en cuatro diferentes modos. En el modo 0, el puerto serie opera de forma síncrona, como un registro de desplazamiento o corrimiento. En cambio, en los modos 1, 2 y 3 las comunicaciones se efectúan de forma asíncrona, donde cada dato transmitido o recibido tiene una estructura (frame) de 10 bits (modo 1) o de 11 bits (modos 2 y 3). Modo 0 El modo 0 configura el puerto serie para operar con registros de desplazamiento de 8 bits, proporcionando al μC una expansión síncrona de entradas/salidas. La estructura de datos es de 8 bits, donde el bit menos significativo (LSB) es el primero en transmitirse o recibirse. La velocidad o baud rate está fija a un doceavo de la frecuencia del oscilador interno. En este modo, la transferencia de datos en serie (entrada y salida) se realiza a través de la terminal RXD, mientras TXD envía los pulsos de salida del reloj para el registro de desplazamiento, como lo ilustra la figura 5.161. Sin duda, lo anterior llega a confundir, debido a que en los otros modos RXD es solo para recibir datos seriales y TXD es solo para transmitirlos. 8 entradas adicionales
RXD
Registro de desplazamiento CLK
8051
TXD
8 salidas adicionales
RXD
Registro de desplazamiento CLK
8051
TXD
=`^liX,%(-( Df[f'[\cgl\ikfj\i`\#\ogXej`ejeZifeX[\<&J%
En el modo 0, la transmisión se inicia cuando se escribe un dato, por medio de una instrucción, al registro SBUF. Los 8 bits de datos se desplazan uno a uno a través de la terminal RXD, mediante pulsos de reloj enviados por medio de la terminal TXD. Cada bit transmitido es válido solo durante un ciclo de máquina. También durante cada ciclo de
grupo editorial patria®
363
5 El popular microcontrolador
Un ciclo de máquina S1 P1
S2 P2
P1
S3 P2
S4
P1
P2
P1
S5 P2
P1
S6 P2
P1
P2
Osc. ALE Salida de datos
Bit de datos válido
Reloj de desplazamiento S3P1
S6P1 Visita expandida
ALE Salida de datos (RXD) Reloj de desplazamiento (TXD)
D0
D1
D2
D3
D4
D5
D6
D7
=`^liX,%(-) J`eZife`qXZ`e[\[Xkfj[\jXc`[XgXiX\cdf[f'[\cgl\ikfj\i`\[\c/',(% máquina la señal de reloj cambia de 1 lógico a 0 lógico en el S3P1, y regresa de 0 a 1 lógico en el S6P1. Esta sincronización de datos de salida se muestra en la figura 5.162. La recepción se inicia cuando el bit de habilitación de la recepción REN 1 y el bit de interrupción de la recepción RI 0. Por lo general, el bit REN se activa al inicio de un programa, como parte de la inicialización del puerto serie, y RI se borra, para empezar una operación de entrada serial de datos. Los pulsos de reloj salen de la terminal TXD al borrarse la bandera RI, lo cual comienza el siguiente ciclo de máquina, al tiempo que los datos se sincronizan en la terminal RXD. La sincronización de los datos de recepción ocurre durante los flancos positivos de TXD, como lo muestra la figura 5.163.
Un ciclo de máquina
ALE Salida de datos (RXD)
D0
D1
D2
D3
D4
D5
D6
D7
Reloj de desplazamiento (TXD)
=`^liX,%(-* J`eZife`qXZ`e[\[Xkfj[\\ekiX[XgXiX\cdf[f'[\cgl\ikfj\i`\[\c/',(% En resumen, este modo posibilita la expansión de las capacidades de E/S del 8051, al conectar un registro de desplazamiento (corrimiento) a las terminales RXD y TXD del μC, como lo ilustra la figura 5.161. Además, es posible conectar en cascada otros registros de desplazamiento para aumentar aún más la expansión de E/S del 8051. Sin embargo, la transmisión y recepción seriales no son simultáneas, debido a que usamos una sola línea, terminal RXD, ya sea para transmitir o para recibir. A esta comunicación en serie se le llama half dúplex. Pero, la comunicación serial simultánea, full dúplex, es posible usando dos líneas, terminales RXD y TXD, como se describe en los modos 1, 2 y 3.
364
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Modo 1 En el modo 1, el puerto serie del 8051 opera como un UART de 8 bits con velocidad, en bauds, variable. Un dispositivo UART es capaz de recibir/transmitir datos seriales con una estructura de datos compuesta por un bit de inicio, un grupo de bits de datos y un bit de detención. En ocasiones, se agrega un bit de paridad entre el último bit de datos y el bit de detención. De este manera, la estructura de datos se compone de un bit de inicio, 8 bits de datos y un bit de detención, como se ilustra en la figura 5.164. DATOS Detención
Inicio
=`^liX,%(-+
grupo editorial patria®
365
5 El popular microcontrolador
TEMPORIZADOR 2 TEMPORIZADOR 1 DESBORDAMIENTO DESBORDAMIENTO
BUS INTERNO DEL 8052/51 TB8
ESCRIBE EN SBUF
D S Q CL
v2
SMOD = 0
SMOD = 1 “0”
SBUF
TXD
DETECTOR DE CERO
“1” SHIFT DATA CONTROL TX SEND TX CLOCK TI START
TCLK v16
“0”
“1”
INTERRUPCIÓN PUERTO SERIE
RCLK v16
MUESTREO
CARGA SBUF
DETECTOR TRANSICIÓN DE 1 A 0
RX CLOCK RI START CONTROL RX
DETECTOR DE BIT
SHIFT IFFH
REG. DESPLAZAM (9 bits)
RXD CARGA SBUF NOTA: TCLK, RCLK y el temporizador 2 están presentes solo en el microcontrolador 8052
SHIFT
SBUF
LEE SBUF BUS INTERNO DEL 8052/51
=`^liX,%(-,
S1 P1
TRANSMISIÓN
BIT DE START
D0
D1
D2
D3
D4
D5
D6
D7
BIT DE STOP
=`^liX,%(-- ;`X^iXdX[\k`\dgfjgXiXcXkiXejd`j`e[\[Xkfj[\cgl\ikfj\i`\\edf[f(% c) La bandera de interrupción de la recepción Se activa en 1 lógico, RI. Lo anterior sucede siempre y cuando existan las siguientes condiciones: t RI 0 t SM2 1 t El bit de detención 1 o SM2 0
366
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Bit de inicio
TXD (P3.1)
1 ———————————— Velocidad en bauds
Bit de detención
D0
T1 (SCON.1) Interrupción de transmisión (se leen más datos)
=`^liX,%(-.
RX CLOCK
v16
RESET
BIT DE START
D0
D1
D2
D3
D4
D5
D6
D7
BIT DE STOP
RECEPCIÓN
=`^liX,%(-/ ;`X^iXdX[\k`\dgfjgXiXkiXejd`j`e&i\Z\gZ`e[\cgl\ikfj\i`\\edf[f(%
El requisito de RI 0 asegura que el software haya leído el dato anterior y por consiguiente que RI se haya restablecido en 0 lógico. El segundo requisito parece confuso, pero tiene aplicaciones cuando se utilizan esquemas de múltiples procesadores en los modos 2 y 3, los cuales describimos después. Modos 2 y 3 En el modo 2, el puerto serie del 8051 opera como un UART de 9 bits, con velocidad en bauds fija cuando se programa SM1 0 y SM0 1. En este modo se transmiten y se reciben 11 bits por las terminales TXD y RXD, respectivamente: 1 bit de inicio (0 lógico), 8 bits de datos, 1 bit programable (noveno bit) y un bit de detención (1 lógico), como lo muestra la figura 5.169.
DATOS Detención
Inicio
=`^liX,%(-0
El noveno bit es igual al contenido de TB8 en el registro SCON, el cual puede usarse como bit de paridad en la transmisión. Durante la recepción, el noveno bit se transfiere al RB8 del registro SCON. La velocidad en bauds es de 1/32 o 1/64 de la frecuencia del oscilador interno del μC y lo determina el bit SMOD del registro PCON, el cual describiremos en una sección posterior y en el apartado relacionado con los modos de ahorro de energía. Por su parte, el modo 3 es funcionalmente igual al modo 2. Este también opera como un UART de 9 bits de datos, la única diferencia es que la velocidad en bauds es programable mediante un temporizador. En realidad, los modos 1, 2 y 3 son modos de comunicación full dúplex y asíncronos con funcionamiento muy similar; solo difieren en la velocidad en bauds y el número de bits de datos.
grupo editorial patria®
367
5 El popular microcontrolador
Comunicación multiproceso Los modos 2 y 3 permiten la comunicación de múltiples procesadores. En estos modos, el noveno bit de datos se almacena en el bit RB8 del registro SCON. Asimismo, el puerto serie puede programarse para que la interrupción se active únicamente si RB8 1, cuando se recibe el bit de detención. Este rasgo distintivo de los μC 8051 se habilita al activar el bit SM2 del registro SCON. El bit SM2 no tiene ningún uso en el modo 0, mientras que en el modo 1 se puede utilizar para corroborar la validez del bit de detención, ya que si SM2 1, la interrupción no se activará hasta que reciba un bit de detención válido. En cambio, en los modos 2 y 3 el bit SM2 puede usarse en aplicaciones de comunicación multiproceso, las cuales se relacionan con las conexiones a redes, donde se utilizan múltiples μC 8051 en una configuración maestro/esclavo, como se observa en la figura 5.170.
MCS-51 Maestro
MCS-51 Esclavo 1
MCS-51 Esclavo 2
MCS-51 Esclavo n
32 líneas de E/S
32 líneas de E/S
32 líneas de E/S
=`^liX,%(.' :fe]`^liXZ`edX\jkif&\jZcXmfljXe[fdck`gc\jμ:/',(%
Cuando el procesador maestro desea transmitir un bloque de datos a uno de sus esclavos, primero envía un byte de dirección, el cual identifica al esclavo destino. Un byte de dirección difiere de un byte de datos en cuanto a que el noveno bit es igual a 1 en la dirección e igual a 0 en el byte de datos. Sin embargo, con un byte de dirección se interrumpen todos los esclavos; el objetivo de esto es que cada esclavo pueda verificar si es el esclavo destino seleccionado. El esclavo direccionado puede borrar su bit SM2, SM2 0, y prepararse para recibir los bytes de datos que siguen. Por otro lado, los esclavos no direccionados dejan en 1 sus bits SM2 y prosiguen su operación normal, ignorando los bytes de datos siguientes. Los procesadores esclavos serán interrumpidos nuevamente cuando el procesador maestro envíe un nuevo byte de dirección. En este ejemplo, la comunicación es half dúplex y unidireccional maestro a esclavos. No obstante, existen aplicaciones donde el esclavo seleccionado le puede responder al maestro, para indicarle, por ejemplo, que el mensaje fue recibido adecuadamente, poniendo especial atención en no utilizar el noveno bit, ya que accidentalmente podría seleccionar a otros esclavos. La figura 5.171 muestra un protocolo simple de comunicación multiproceso.
Selección de velocidades en bauds del puerto serie Los modos 0 y 2 del puerto serie presentan una velocidad en bauds fija, según se especifica en la tabla 5.14. En el modo 0, la frecuencia del oscilador incorporado en el μC, dividida entre 12, determina la velocidad en bauds del puerto serie. Por ejemplo, si el cristal del microcontrolador tiene una frecuencia nominal de 12 MHz, entonces la velocidad en bauds será de 1 MHz, como se aprecia en la figura 5.172 a). La velocidad en bauds en el modo 2 es el resultado de dividir la frecuencia del oscilador entre 32 o 64. La selección de una u otra velocidad, se determina por medio del bit SMOD, bit 7, del registro de control de potencia, PCON. No obstante, cuando se reinicia el sistema, el bit SMOD 0, indica que la frecuencia del oscilador se dividirá entre 64. Esta
368
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Procesador maestro
Procesador esclavo N
Enviar dirección N
Recibe dirección. Verifica es seleccionado
Espera respuesta de confirmación
Confirma que recibí selección
Envía bytes de datos
Espera bytes de datos
Espera respuesta de confirmación
Confirma que recibí todos los bytes
=`^liX.%(.( GifkfZfcfj`dgc\[\Zfdle`ZXZ`eZfedck`gc\jgifZ\jX[fi\j%
velocidad puede duplicarse hasta 1/32 de la frecuencia del oscilador si SMOD se establece en 1 lógico, SMOD 1, como se ilustra en la figura 5.172b).
Oscilador incorporado en el microcontrolador
Oscilador incorporado en el microcontrolador
Velocidad en bauds
v 12 a) Modo 0 v 64
SMOD 0
v 32
SMOD 1
Velocidad en bauds
b) Modo 2
Desbordamiento del temporizador 1
v 32
SMOD 0
v 16
SMOD 1
Velocidad en bauds
c) Modos 1 y 3
=`^liX,%(.) J\c\ZZ`e[\m\cfZ`[X[\j[\cgl\ikfj\i`\%X Df[f'%Y Df[f)%Z Df[fj(p*%
El registro PCON no es direccionable por bit; por esta razón, la activación del bit SMOD, sin modificar los otros bits, requiere de una operación de lectura-modificación-escritura. Por ejemplo, si se desea establecer en 1 lógico el bit SMOD del registro PCON, podemos realizar la siguiente secuencia de intrucciones:
grupo editorial patria®
369
5 El popular microcontrolador
MOV
A,PCON
;lee el valor presente en el registro PCON
SETB
ACC.7
;establece en 1 lógico el bit 7 del acumulador
MOV
PCON,A
;escribe valor al registro PCON
Para los modos 1 y 3, la velocidad en bauds se determina con la velocidad de desbordamiento del temporizador 1. Asimismo, en estos modos, el bit SMOD del registro PCON se utiliza para dividir el desbordamiento del temporizador entre 32 o 16, antes de generar el reloj que provee la velocidad en bauds al puerto serie, como se muestra en la figura 5.172c).
Temporizador 1 como reloj de velocidad en bauds En el microcontrolador 8051, los modos 1 y 3 usan el temporizador 1 para generar el reloj que determina la velocidad en bauds del puerto serie. En estos modos, cuando se reinicializa el sistema, es necesario programar tanto los registros del puerto serie como los del temporizador 1. Por lo común, para generar la velocidad en bauds se inicializa el registro TMOD en el modo 2, modo de recarga automática de 8 bits, y se establece el valor de recarga previamente calculado en el registro TH1, con lo cual se provee del desbordamiento adecuado para la velocidad en bauds requerida. Para inicializar el registro TMOD en modo 2 se utiliza la siguiente instrucción: MOV TMOD,#0010XXXXB Los bits del temporizador 0 se representan por X y se sustituyen con el nibble adecuado, según lo requiera este temporizador. El modo 2 del temporizador 1 no es la única opción, ya que es posible alcanzar velocidades muy bajas usando el modo 1, de 16 bits, programando el registro TMOD con 0001XXXXB. Sin embargo, debido a que este modo no tiene recarga automática, esto causa una pequeña pérdida de tiempo y de recursos en el software, puesto que los registros TH1 y TL1 deben reinicializarse cada vez que ocurra un desbordamiento, lo cual podría llevarse a cabo en una rutina de servicio de interrupción. No obstante, lo anterior no es necesario en el modo 2 del temporizador 1, esta es la razón principal por la que es muy común su uso. La fórmula para determinar la velocidad en bauds en los modos 1 y 3 es la siguiente: Baud Rate
fOSC 2 SMOD 32 12 (256 TH1)
Por lo general, conocemos la velocidad de operación en bauds y la frecuencia del oscilador interno fosc, en MHz; por tanto, necesitamos obtener el valor del registro TH1. TH1 256 – [(1)(fosc)/(384)(Baud rate) Por ejemplo, si se requiere una frecuencia de operación del puerto serie de 2400 bauds y se cuenta con una frecuencia del oscilador interno de 12 MHz, el valor de TH1 es: TH1 256 – [(1)(12 MHz)/(384)(2400 bauds) 242.9 F3H No obstante, existe un ligero error al redondear el valor obtenido de TH1. Aunque, por lo general un error de 5% es tolerable en las comunicaciones con UART. Sin embargo, para obtener velocidades en bauds más exactas, se utiliza un cristal de 11.059 MHz. La tabla 5.15 presenta algunos valores de recarga para TH1 y su porcentaje de error usando cristales de 12 MHz o 11.059 MHz, para las velocidades en bauds más comúnmente utilizadas.
370
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
Velocidad en bauds
Frecuencia del cristal
#JU4.0% (registro PCON)
Valor de recarga para TH1
Velocidad real en bauds
Error (%)
62,500
12.000 MHz
1
FFH
62,500
0
9,600
12.000 MHz
1
F9H
8,928
7
2,400
12.000 MHz
0
F3H
2,404
0.16
1,200
12.000 MHz
0
E6H
1,202
0.16
19,200
11.059 MHz
1
FDH
19,200
0
9,600
11.059 MHz
0
FDH
9,600
0
2,400
11.059 MHz
0
F4H
2,400
0
1,200
11.059 MHz
0
E8H
1,200
0
KXYcX,%(, M\cfZ`[X[\j\eYXl[jd}jZfdle\jZfefjZ`cX[fi\j[\()D?qp((%',0D?q% Por consiguiente, si se cuenta con un cristal de 12 MHz y se desea una velocidad de operación de 2400 bauds, la secuencia de instrucciones para programar el temporizador 1 en modo 2 es la siguiente: MOV
TMOD,#00100000B
;temporizador 1, modo 2
MOV
TH1,#0F3H
;valor de recarga
SETB
TR1
;También puede utilizarse MOV TCON, #40H
Como puede comprobar, ¡ya estamos agarrando velocidad!, y no en bauds precisamente, sino en nuestro proceso de entendimiento del puerto serie del 8051; por consiguiente, vamos a realizar algunos ejemplos sencillos que emplean el puerto serie para ganar una mayor comprensión y, potencialmente, intuición.
Ejemplos de programación del puerto serie Hoy día, existen algunas aplicaciones que requieren transmitir un bit de paridad. Como sabemos, el registro de banderas o de estados, PSW, contiene el bit de paridad, P, el cual se establece en 1 o en 0 lógico cada ciclo de máquina, para determinar si existe una paridad par en los 8 bits de datos del acumulador. En el modo 1 del puerto serie, los 8 bits de datos pueden estar formados por 7 bits de datos, como es el caso de los caracteres ASCII, más un bit de paridad, como bit más significativo (MSB). Véase figura 5.173.
E
O
O
O
O
O
O
O
:Xi}Zk\i8J:@@
=`^liX,%(.* La siguiente secuencia de instrucciones nos permite transmitir un carácter ASCII, de 7 bits, con paridad par en el bit 8. MOV
A,#’C’
;Carga la letra C mayúscula en ASCII, igual a 43H (0100 0011B), P 1
CLR
ACC.7
;Borra el MSB del acumulador
MOV
C,P
;Copia el contenido del bit de paridad a la bandera de acarreo
MOV
ACC.7,C
;Almacena bit de paridad par en el bit MSB del acumulador
MOV
SBUF,A
;Transmite carácter, de 7 bits, más el bit de paridad par
grupo editorial patria®
371
5 El popular microcontrolador
En este ejemplo, se transfiere al acumulador la letra C mayúscula, la cual es igual a 43H y contiene un número impar de 1; en consecuencia, la bandera de paridad se establece en 1. Como queremos transmitir los datos con paridad par, es necesario añadirle este 1 al bit más significativo, bit 8 del acumulador, antes de transferir el dato al registro SBUF. Por tanto, el bit transmitido es un C3H. El programa es muy sencillo, pero si se desea corroborar su funcionamiento se puede ensamblar con el Keil μVision y ejecutarlo usando el simulador TS Controls, donde podemos apreciar que antes de ejecutar la última instrucción el acumulador ya contiene el dato a transmitir con paridad par, C3H (véase figura 5.174).
=`^liX,%(.+ Si requerimos transmitir una paridad impar, solo es necesario añadir una instrucción, como se aprecia en la siguiente secuencia de instrucciones. MOV
A,#’C’
;Carga la letra C mayúscula en ASCII, igual a 43H (0100 0011B), P 1
CLR
ACC.7
;Borra el MSB del acumulador
MOV
C,P
;Copia el contenido del bit de paridad a la bandera de acarreo
CPL
C
;Conversión a paridad impar
MOV
ACC.7,C
;Almacena bit de paridad par en el bit MSB del acumulador
MOV
SBUF,A
;Transmite carácter, de 7 bits, más el bit de paridad par
En aplicaciones de múltiples procesadores, modos 2 y 3 del puerto serie, podemos transmitir los 8 bits de datos del acumulador con una paridad impar agregada en el noveno bit, el cual sabemos debe cargarse en TB8, por medio de software. En el siguiente ejemplo enviamos un dato de 8 bits, el número 27H, y añadimos paridad impar en el noveno bit de datos, bit TB8 del registro SCON. MOV
A,#27H
;Carga DATO a transmitir
MOV
C,P
;Transfiere bit de paridad a bit de acarreo
CPL
C
;Convierte a paridad impar
MOV
TB8,C
;Bit de paridad se convierte en el noveno bit TB8
MOV
SBUF,A
;Transfiere 8 bits de datos al acumulador
En este ejemplo en particular, el bit TB8 debe ser igual que 1, debido a que el número 27H (0010 0111B) tiene un número par de 1 y queremos transmitir paridad impar. Esto lo podemos apreciar usando el simulador TS Controls, donde se observa que el bit TB8 del registro SCON se establece en 1 (SCON 08H). Véase figura 5.175.
372
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
=`^liX,%(., Bien, ahora que hablamos del registro SCON, vamos a describir el uso de las banderas de interrupción de la transmisión y la recepción, TI y RI, respectivamente, la cuales forman parte de este registro. Estas banderas se establecen en 1 lógico automáticamente, mediante hardware, cuando ocurre una interrupción; sin embargo, deben ser puestas en 0 lógico por medio de software. Por claridad, con frecuencia las rutinas de transmisión y recepción se manejan por polling, a través de la verificación del estado de estas banderas, como veremos a continuación. La bandera de RI se establece en 1 al final de la recepción de un dato para indicar que el buffer de recepción se encuentra lleno. El estado de esta bandera se verifica por software o se programa para generar una interrupción. Por tanto, si se desea recibir un dato del dispositivo conectado al puerto serie, el software tiene que esperarse hasta que el bit RI se establezca en 1 lógico y después restablecerlo en 0 lógico, para finalmente poder leer el dato almacenado en el registro SBUF, como se muestra en la siguiente secuencia de instrucciones: ESPERA: JNB
RI, ESPERA
;Permanece en este ciclo hasta que RI 1, buffer lleno
CLR
RI
;Restablece RI, RI 0
MOV
A, SBUF
;Lee dato del registro SBUF
De igual forma, la bandera TI se establece en 1 lógico al final de la transmisión de un dato, para indicar al programador que el buffer de transmisión se encuentra vacío. Si se desea enviar un dato al dispositivo conectado al puerto serie, se tiene que verificar mediante software que el registro SBUF de transmisión del puerto serie se encuentre disponible. Es decir, si se envía un dato por el puerto serie y posteriormente se requiere enviar otro dato, el programa debe verificar que el primer dato se acabó de transmitir, para poder transmitir el siguiente. La siguiente secuencia de instrucciones realiza la transmisión de un dato por el puerto serie: ESPERA: JNB
TI, ESPERA
;Permanece en este ciclo hasta que TI 1, buffer vacío
CLR
TI
;Restablece TI, TI 0
MOV
SBUF, A
;Escribe dato a transmitir al registro SBUF
Las secuencias de instrucciones anteriores se utilizan con frecuencia como subrutinas, con el fin de realizar la entrada o salida de datos por el puerto serie, como se verá posteriormente en el desarrollo de un ejemplo. Ahora, supongamos que tenemos un esquema de comunicación UART de 8 bits de datos, a una velocidad de 2400 bauds, entre un sistema basado en el microcontrolador 8051 y un programa monitor, tipo hiperterminal de Windows, de una computadora personal (PC), como se ilustra en la figura 5.176. En este, la comunicación se realiza mediante el
grupo editorial patria®
373
5 El popular microcontrolador
puerto serie en modo 1 y emplea caracteres alfanuméricos (ASCII). Cada carácter es transmitido como un bit de inicio, dato de 7 bits, 1 bit de paridad par y un bit de detención. La pregunta es: ¿cuántos caracteres se transmitirían/recibirían en un segundo?
8051 TXD
RXD
RXD
TXD
Computadora personal
Interfase
=`^liX,%(.-
Para responder la pregunta planteada antes, debemos a hacer referencia a la figura 5.167, en la cual se ilustra que el periodo de cada bit es el recíproco de la velocidad en bauds; en este ejemplo, un bit se tardaría en transmitirse o recibirse 1/2400 segundos o 416.67 μs. Pero, cada carácter está compuesto por 10 bits; por consiguiente, cada carácter tendría un periodo de 416.67 μs r 10, es decir 4.16 ms, y su frecuencia de transmisión/recepción sería de 1/4.16 ms, esto es, 240 caracteres por segundo. Otra forma de ver este problema es entender los bauds de velocidad como bits por segundo (bps). Entonces, 2400 bauds son 2400 bps. Debido a que cada carácter está compuesto por 10 bits, tenemos que 2400 bps/10 bits, cuya operación nos da como resultado los 240 caracteres por segundo. En el siguiente ejemplo se pide realizar un programa para inicializar el puerto serie a 2400 bauds en modo 1, es decir como UART de 8 bits, el cual usa el temporizador 1 para proveer el reloj de velocidad en bauds. En este ejemplo, el microcontrolador opera con un cristal de 12 MHz. Para realizar este programa e inicializar el puerto serie, es necesario programar los registros SCON, TCON, TMOD y TH1 que explicamos en las secciones del temporizador y los registros del puerto serie. Los valores que requieren estos registros y la secuencia de instrucciones del programa se muestran a continuación: MOV
SCON,#52H
;Puerto serie, establece en 1 REN y TI
MOV
TMOD,#20H
;Temporizador 1 modo 2 (recarga automática)
MOV
TH1,#0F3H
;baud rate 2400 bps, f Cristal 12 MHz
MOV
TCON,#40H
;Habilita timer 1
La primera instrucción se relaciona con el registro SCON. Los valores que requiere en este registro se resumen en la figura 5.177:
J:FE
JD'
JD(
JD)
I
K9/
I9/
K@
I@
'
(
'
(
'
'
(
'
=`^liX,%(.. Para este registro se establecen los bits SM0 0 y SM1 1, con lo cual se configura el puerto serie como UART de 8 bits. La habilitación de la recepción de datos se realiza con el bit REN 1; por último, se establece en 1 lógico el bit TI, TI 1, para indicar que el buffer de transmisión SBUF se encuentra vacío y se puede transmitir el primer dato. La segunda instrucción se refiere al registro TMOD. El dato que requiere este registro se muestra en la figura 5.178:
374
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
KDF;
>8K<
:&K
D(
D'
>8K<
:&K
D(
D'
'
'
(
'
'
'
'
'
=`^liX,%(./ Para este registro, se establecen los bits M1 1 y M0 0, y el bit C/T 0. Con esto, se programa el contador/ temporizador 1 como temporizador en modo 2 de recarga automática de 8 bits. El bit GATE 0, con el objetivo de permitir activar el temporizador con un bit del registro TCON. La tercera instrucción se relaciona con el valor de recarga del registro TH1, con lo cual se provee del desbordamiento adecuado para la velocidad de 2400 bauds. El cálculo de este registro se obtiene usando la fórmula descrita en la sección Temporizador 1 como reloj de velocidad en bauds o de la tabla 5.15 de esa misma sección. El valor calculado para 2400 bauds es F3H usando un cristal de 12 MHz.
K?(
(
(
(
(
'
'
(
(
=`^liX,%(.0 La última instrucción es la inicialización del registro TCON, la cual utiliza una instrucción de transferencia por byte (MOV TCON,#40H) para establecer en 1 lógico un bit del registro; sin embargo, este registro es direccionable por bit, por tanto también puede usarse la instrucción SETB TR1. En este caso, ambas tienen el mismo efecto en el registro, como se muestra a continuación. K:FE
K=(
KI(
K='
KI'
@<(
@K(
@<'
@K'
'
(
'
'
'
'
'
'
=`^liX,%(/' Cuando el bit TR1 se establece en 1 lógico, TR1 1, se activa el temporizador 1. Los bits restantes se establecen en 0 lógico debido a que controlan características o modos no requeridos para este ejemplo.
ABPRA para el puerto serie En esta sección reforzamos lo aprendido acerca del puerto serie por medio del aprendizaje basado en prácticas. Aun cuando las prácticas son sencillas, incluyen los principales bloques de software que pueden trasladarse a aplicaciones específicas de uso práctico. Para esta ABPRA, se pide realizar un programa que transmita letreros alfanuméricos, conformados por caracteres ASCII. La comunicación que se requiere es entre un sistema basado en un microcontrolador y una computadora personal con un programa monitor tipo hiperterminal de Windows. Para esto, usaremos las rutinas más comunes que se emplean en sistemas basados en microcontroladores con interfaz de comunicación RS232 o recientemente con interfaz USB. En esta práctica, el control del puerto serie se realiza mediante el “polling ” de las banderas de interrupción TI y RI, sin habilitar las interrupciones. El objetivo es transmitir letreros con menús de control para encender/apagar un LED de prueba de un sistema basado en un microcontrolador 8051. El esquema de comunicación que se solicita se ilustra en la figura 5.181. Este programa es del tipo integral, debido a que incorpora varias de las subrutinas relacionadas con el puerto serie, además de que también incluye instrucciones de comparación, de transferencia de datos y directivas. El programa se muestra a continuación: ORG
0000H
EOL
EQU
00H;(End-of-line) fin de línea
grupo editorial patria®
375
5 El popular microcontrolador
+5 V 220
<> <>
8051 TXD P1.0
RXD
RXD
LED de prueba
<<>> <<>>
TXD Interfase
Computadora personal
=`^liX,%(/(
CR
EQU
0DH;(carriage return) retorno de carro
LF
EQU
0AH;(linefeed) salto de línea
JMP
PRINCIPAL
ORG
30H
;inicio arbitrario
PRINCIPAL: CLR
A
MOV
SCON,#01010010B
;Puerto serie, establece en 1 REN y TI
MOV
TMOD,#20H
;Temporizador 1 modo 2 (recarga automática)
MOV
TH1,#0F3H
;baud rate 2400 bps, frecuencia del cristal 12 MHz
MOV
TCON,#40H
;Habilita temporizador 1
MOV
DPTR,#INFORME
CALL
TX_LETRERO
MOV
DPTR,#SEPARACION
CALL
TX_LETRERO
MOV
DPTR,#MENU
CALL
TX_LETRERO
CALL
RX
CJNE
A,#’1’, OPCION2
CLR
P1.0
JMP
PRINCIPAL
;Enciende LED
OPCION2: CJNE
A,#’2’,PRINCIPAL
SETB
P1.0
JMP
PRINCIPAL
;Apaga LED
;****** RUTINA PARA TRANSMISIÓN DE LETREROS A LA PANTALLA ****** TX_LETRERO:
376
CLR
A
MOVC
A,@ADPTR
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
JZ
TERMINA
CALL
TX
INC
DPTR
JMP
TX_LETRERO
TERMINA: RET ;******* RUTINA PARA TRANSMITIR CARACTERES POR EL UART del μC ** TX:
;TI se inició igual a 1
JNB
TI,TX
;Si TI 1, el bit de STOP fue transmitido por SBUF
CLR
TI
;TI 0 para reiniciar transmisión
MOV
SBUF,A
RET ;******* RUTINA PARA RECIBIR CARACTERES POR EL UART del μC ** RX: CLR
RI
JNB
RI,RX_D
MOV
A,SBUF
RX_D: ;Si RI 1, el bit de detención esta en SBUF
RET ;*******LETREROS VARIOS A MONITOR************* INFORME: DB
CR,LF,”<<>>”
DB
CR,LF,”<<>>”,EOL
SEPARACION: DB
CR,LF,”<<<
>>>”,EOL
DB
CR,LF,”<<>>”,EOL
DB
CR,LF,”<<>>”,EOL
MENU:
END El primer bloque del programa son directivas relacionadas con el control de los letreros que transmitiremos hacia el monitor de la computadora personal. En tanto, el segundo bloque corresponde al primer grupo de instrucciones, el cual se refiere a la inicialización del puerto serie en modo 1, programado a 2400 bauds, usando una frecuencia de oscilación interna de 12 MHz, como lo describimos en el ejemplo anterior. El tercer bloque contiene las rutinas que transmiten los letreros hacia el monitor de la computadora personal. La primer instrucción de este bloque MOV DPTR, #INFORME, transfiere la dirección de la memoria de código al DPTR donde se encuentra la etiqueta INFORME, al final del programa. Después de esta instrucción, se manda llamar la rutina TX_LETRERO. Esta rutina, TX_LETRERO, primero borra el acumulador y posteriormente transfiere al acumulador el dato al cual apunta la dirección de la etiqueta INFORME. El primer dato en este caso es 0DH correspondiente al byte CR, retorno de carro (carriage return). La siguiente instrucción verifica si el resultado es 00H. Si la instrucción es 00H significa que el byte que leímos fue EOL, fin de línea (End of line) y, por tanto, se termina la rutina. Pero, si el resultado es diferente de cero, como ocurre con el primer dato, entonces esta rutina manda llamar a la subrutina TX, la cual es la encargada de transmitir el primer dato que se leyó en el acumulador, corroborando previamente que el registro SBUF se encuentre vacío. En consecuencia, el primer dato transmitido será 0DH, el cual proporciona un retorno de carro en el programa
grupo editorial patria®
377
5 El popular microcontrolador
monitor de la PC. La subrutina TX termina y el programa continúa en la rutina TX_LETRERO, la cual incrementa el valor del registro DPTR y brinca a leer el siguiente byte, después de 0DH; en este caso, 0AH, que corresponde a LF, retorno de línea (Linefeed). Esta rutina prosigue transmitiendo todos los bytes que corresponden a los caracteres ASCII, incluyendo los símbolos de menor que (<) y mayor que (>), hasta llegar al byte 00H, que indica el fin de línea, EOL. Hasta este momento, el programa transmitió a la PC el letrero INFORME, por lo que se desplegará en la pantalla de la PC: <<>> <<>> La siguiente instrucción carga en el registro DPTR la dirección de la etiqueta SEPARACION y después se manda llamar otra vez la rutina TX_LETRERO. El proceso se repite, solo que en este caso únicamente se desplegará una línea de espacio en la pantalla de la PC. De igual forma, la instrucción siguiente carga en el registro DPTR la dirección de la etiqueta MENU, y posteriormente manda llamar la rutina TX_LETRERO. Con la ejecución de la rutina anterior se despliega en la pantalla de la PC lo siguiente: <<>> <<>> El cuarto bloque de instrucciones inicia con la llamada de la subrutina RX, la cual ejecuta la rutina de recepción de datos por el puerto serie. La subrutina RX es la encargada de recibir el dato que se encuentra en el acumulador, borrando previamente el bit RI y verificando que el registro SBUF se encuentre lleno, ya que el bit RI se establece en 1 cuando el bit de detención se encuentra en el registro SBUF. Después de ejecutar la subrutina RX, se compara qué opción presionó el usuario. Si es un 1, entonces se establece en 1 lógico la terminal P1.0 del μC, encendiendo el LED de prueba; en cambio, si es un 2, dicha terminal se restablece en 0 lógico, apagando el LED de prueba. Después de encender/apagar el LED de prueba, o si no fue ninguna de las opciones solicitadas, el programa brinca a la etiqueta PRINCIPAL, para reiniciar el programa. En el siguiente ABPRA se pide utilizar dos sistemas basados en un microcontrolador 8051. El objetivo es transferir un dato en paralelo de 8 bits en forma serial de un microcontrolador a otro en modo full dúplex, con velocidad en bauds fija. El puerto 1 de los microcontroladores se utiliza para leer los datos en paralelo y el puerto 3 se utiliza para escribir los datos leídos por el puerto serie. La figura 5.182 representa gráficamente este esquema de comunicación serial con baud rate fijo.39 8051
P1
8051 TXD
RXD
RXD
TXD
P3
P3
P1
=`^liX,%(/)
Como los bits P3.0 (RXD) y P3.1 (TXD) se utilizan para transmitir y recibir los datos seriales, se recomienda que P1.0 y P1.1 se conecten permanentemente en alto, con el fin de evitar un conflicto en la comunicación.
378
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
ORG
0000H
;Inicio después de reinicializar
MOV
IE,#90H
;Habilita interrupciones
MOV
SCON,#98H
;Programa puerto serial en modo 2, REN 1 y TB8 1
MOV
SBUF,P1
;Trasmite el dato presente en el puerto 1
SJMP
ESPERA
;Espera a que ocurra la interrupción
ORG
0023H
JBC
RI,RECIBE
;Si RI 1, borra RI y brinca a leer dato de SBUF
MOV
SBUF,P1
;Si RI 0, indica que la interrupción la generó TI 1
CLR
TI
;Borra la bandera TI, generadora de la interrupción
RETI
;Regresa al programa PRINCIPAL
PRINCIPAL: NOP
ESPERA:
RECIBE: MOV
P3,SBUF
;Escribe en puerto 3 el dato recibido
RETI
;Regresa al programa PRINCIPAL
END El programa principal inicia en la dirección 0000H, debido a que solo se utiliza la interrupción concerniente al puerto serie. De este modo, las primeras dos instrucciones habilitan las interrupciones y el programa el puerto serie en el modo 2, el cual opera con una velocidad en bauds fija. En la tercera instrucción, los datos que se encuentran en el puerto P1 se transfieren al registro SBUF, con el objetivo de que estos se transmitan por el puerto serie. Una vez transmitidos los datos, el programa entra en un lazo de espera, hasta que llega una interrupción generada bien por la bandera RI o bien por la bandera TI. La interrupción hace que el programa brinque al vector asignado de la RSI, dirección 0023H. La RSI del puerto serie verifica si la interrupción fue por recepción, RI 1. Si es así, el dato recibido de forma serial en el registro SBUF se escribe por el puerto P3 y termina la RSI. Si la bandera RI 0, significa que la interrupción la generó la bandera de transmisión TI, TI 1. Esto indica que el puerto serie terminó de enviar su dato por el puerto serie y que el registro SBUF se encuentra vacío para poder transmitir otro dato. Por tanto, la siguiente instrucción transfiere el contenido del puerto P1 al registro SBUF, para iniciar la transmisión por el puerto serie. La siguiente instrucción de la RSI borra la bandera TI, TI 0 y termina la RSI. En esta práctica, el mismo programa se ejecuta en ambos microcontroladores. Para obtener un mejor entendimiento de este programa, lo más recomendable es simularlo usando el software TS Controls y habilitando las interrupciones TI y RI en el registro SCON, como se muestra en la figura 5.183. Las rutinas del puerto serie se usan en numerosos sistemas basados en microcontroladores con interfaces RS232, RS485, y en tiempos recientes USB. La interfaz depende de la selección adecuada de un circuito integrado para que la comunicación se realice con los niveles de voltaje y velocidad de la interfaz seleccionada. Por este motivo, se recomienda realizar las prácticas sugeridas en el apéndice que se encuentra en el CD que acompaña este libro, donde se pide realizar variaciones de los ejemplos mostrados en este texto.40
Modos de ahorro de energía Existen aplicaciones donde el consumo de potencia es crítico, como el caso de equipos portátiles que operan con baterías. Por lo general, los microcontroladores permanecen inactivos por periodos muy largos, esperando a que una 40
La práctica del puerto serie es muy interesante y por demás estimulante. Por tanto, no hay nada como tener control de nuestro hardware, nuestro sistema basado en el 8051, mediante un PC que envía o recibe mensajes.
grupo editorial patria®
379
5 El popular microcontrolador
;\jglj[\\jZi`Y`i\eJ9L=#j\\jg\iX Xhl\j\^\e\i\cX`ek\iilgZ`e[\]`e [\kiXejd`j`e2gfikXekf#K4(
KXdY`ej\gl\[\^\e\iXicX`ek\iilgZ`ej` cc\^Xle[XkfIO;#cfZlXc\jkXYc\Z\I@4(
=`^liX,%(/* señal externa haga su aparición. Lo anterior reduce la energía disponible en la fuente de alimentación cuando se usan baterías. Un ejemplo típico es el control remoto de la televisión, el cual puede permanecer sin usarse por meses y cuando se usa solo le toma unos milisegundos enviar un comando al receptor de la televisión. Los teléfonos celulares son otro ejemplo donde el sistema basado en un microcontrolador puede durar inactivo por mucho tiempo.41 En operación regular, los microcontroladores 8051 pueden consumir alrededor de 25 mA. Sin embargo, las versiones CMOS del MSC-51 proveen, como una característica más, algunos modos óptimos para reducir la energía de operación. Dichos modos son el modo desocupado idle y el modo de baja potencia power down. El registro relacionado con los modos de ahorro de energía es el registro de control de potencia, PCON, localizado en la dirección 87H de los SFRs, el cual no es direccionable por bit, como se muestra a continuación. G:FE
JDF;
$$$$
$$$$
$$$$
>=(
>='
G;
@;C
=`^liX,%(/+ Los modos de ahorro de energía se activan estableciendo en 1 lógico los bits IDL y PD, con el fin de activar los modos idle o power down, respectivamente. El resumen descriptivo de los bits que constituyen el registro PCON se muestra en la tabla 5.16. #JU
41
Símbolo
Descripción (1 = habilitación; 0 = deshabilitación)
PCON.7
SMOD
Bit para generar double baud rate
PCON.6
--
No implementadas, reservadas para uso futuro
PCON.5
--
No implementadas, reservadas para uso futuro
PCON.4
--
No implementadas, reservadas para uso futuro
Por ejemplo, el teléfono celular iPhone tiene un sensor de proximidad, que indica al sistema de ahorro de energía que el usuario está hablando por teléfono y que tiene el teléfono cerca de su oído; por tanto, no es necesario que ilumine la interfaz de despliegue.
380
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
#JU
Símbolo
Descripción (1 = habilitación; 0 = deshabilitación)
PCON.3
GF1
Banderas de propósito general
PCON.2
GF0
Banderas de propósito general
PCON.1
PD
Bit para modo power down, se activa estableciéndose en 1 lógico
PCON.0
IDL
Bit para modo idle, se activa estableciéndose en 1 lógico
KXYcX,%(- I\jld\e[\jZi`gk`mf[\ci\^`jkif[\Zfekifc[\gfk\eZ`X#G:FE% En caso de que ambos bits, IDL y PD se establezcan en 1 lógico, simultáneamente, el modo preponderante es power down. La figura 5.185 muestra el diagrama lógico del hardware del 8051 para los modos idle y power down.
XTAL2
XTAL1
Osc
___ PD
Generador de reloj
___ IDL
Interrupciones, puerto serie, temporizadores
CPU
=`^liX,%(/, ;`X^iXdXc^`Zf[\c_Xi[nXi\[\c/',(gXiXcfjdf[fj`[c\pgfn\i[fne%
Activación del modo idle Al activar el modo idle, la instrucción que establece en 1 lógico el bit PCON.0 sería la última instrucción ejecutada antes de entrar en este modo de ahorro de energía. En el modo idle, la señal interna de reloj de la CPU es desactivada, como se aprecia en la figura 5.185; sin embargo, las interrupciones, el puerto serie y los temporizadores continúan operando. El estado de la CPU se preserva en su totalidad: el SP, el PC, el PSW, el Acc y otros registros mantienen sus datos. Por lo normal, el consumo corriente en este modo es de aproximadamente 6.5 mA. Los pines mantienen los estados lógicos que tenían al momento que se activó el modo idle, mientras que ALE y PSEN se establecen en niveles lógicos altos. Existen dos maneras de terminar el modo idle: t La activación de cualquier interrupción previamente habilitada. Lo anterior causa que el bit PCON.0 se borre por hardware, terminando el modo. Se dará servicio a la RSI y, después de la instrucción RETI, la próxima instrucción a ser ejecutada será la instrucción subsiguiente de cuando se activó el modo. t Reset por hardware. Al recibirse un pulso de reinicialización en el pin RST, internamente se limpia el bit IDL de manera directa y asíncrona. Toma de 2 a 3 ciclos de máquina para que el reset interno se lleve a cabo. Durante este tiempo, el hardware inhibe el acceso a la RAM, pero no a los puertos. Por ende, se recomienda que la instrucción siguiente a la que invoca el modo idle, no sea de acceso a RAM externa o puertos. En el modo idle, las banderas GF0 y GF1 pueden usarse para indicar si una interrupción ocurrió en operación normal o cuando se encontraba en modo idle. Por ejemplo, una instrucción que activó el modo idle también puede establecer a 1 lógico uno o los dos bits GF0 y GF1. Al terminarse el modo mediante una interrupción, la RSI puede examinar estos bits.
grupo editorial patria®
381
5 El popular microcontrolador
Activación modo power down Al igual que el modo idle, al activar el modo power down, la instrucción que establece en 1 lógico el bit PCON.1, sería la última instrucción ejecutada antes de entrar en este modo. En el modo power down, el oscilador interno es detenido, y por tanto todas las funciones; sin embargo, la RAM interna y los SFRs se mantienen activados. El consumo de corriente en este modo es de aproximadamente 40 μA. Las salidas de los pines de los puertos mantienen sus valores establecidos por sus respectivos registros de funciones especiales, y ALE y PSEN se establecen a un nivel lógico bajo. La única forma de desactivar el modo power down es mediante un reset por hardware. El reset redefine todos los SFRs, pero no cambia los valores de la RAM interna. Una vez en modo power down, el voltaje de alimentación (VCC) se puede reducir a 2 V; aunque esta característica es un poco truculenta, ya que VCCe debe restablecerse a 5 V antes de terminar el modo. El reset no se debe activar antes de que se restablezca VCC y debe permanecer activo lo suficiente para permitirle al oscilador inicializarse y estabilizarse, aproximadamente 10 ms.
Arquitectura del AT89C2051 Existen muchos microcontroladores compatibles con la arquitectura del MCS-51, los cuales incluyen mayor cantidad de periféricos internos y mejor desempeño operativo que el original 8051 de Intel. Unos de estos microcontroladores es el μC CMOS de 8 bits AT89C2051, de Atmel. Este, además de contar con los periféricos internos de la arquitectura 8051, tiene una memoria flash de 2 Kbytes en un empaquetado de solo 20 terminales. La combinación de memoria Flash con la versatilidad del CPU del 8051, proveen la flexibilidad necesaria para resolver diversas aplicaciones de control en sistemas embebidos. Asimismo, presenta características de bajo consumo, buen desempeño y costo competitivo (1.8 USD). Entre las características principales de la arquitectura 2051 destacan: t t t t t t t t t t
Dos Kbytes de memoria Flash. Voltaje de operación de 2.7 a 6 V. Frecuencia de operación de hasta 24 MHz. Dos niveles para bloquear la memoria Flash. Cuenta con 128 bytes de RAM. Tiene 15 líneas de E/S. Dos temporizadores/contadores|. Seis fuentes de interrupción. Un UART. Un comparador analógico.
La arquitectura del 2051 cuenta con 15 líneas de E/S, correspondientes a los puertos P1 y P3. En su caso, el puerto P1 es un puerto de E/S bidireccional. Los pines P1.2 y P1.7 contienen pull-ups internos, sin embargo P1.0 y P1.1 requieren pull-ups externos, ya que también sirven como las entradas positivas y negativas del comparador analógico, AIN0 y AIN1, respectivamente, como se observa en la figura 5.186. Los pines del puerto P3, P3.0 a P3.5 y P3.7, son de E/S bidireccional. En cambio, el pin P3.6 se encuentra alambrado como una entrada de la salida del comparador y no se puede acceder a él. Precisamente, el periférico interno adicional del microcontrolador AT89C205142 es un comparador analógico. Como mencionamos antes, este comparador usa las terminales P1.0 (AIN0) y P1.1 (AIN1) como entradas analógicas, y el bit 6 del puerto 3 (P3.6) como salida del comparador. Por esta razón, P3.6 no se encuentra disponible como E/S de propósito general. En tanto, cuando AIN0 es mayor o igual a la entrada analógica AIN1, el CPU del μC establece la salida P3.6 en 1 lógico. Por otra parte, el ciclo de máquina de la arquitectura AT89C2051 consiste en 12 periodos del oscilador, de igual manera que el original 8051; sin embargo, como su frecuencia de operación máxima es de 24 MHz, el ciclo de máquina y la mayoría de sus instrucciones se pueden ejecutar en 0.5 μs. Debido a que el AT89C2051 no cuenta con los puertos P0 y P2, como el original 8051, la construcción del sistema mínimo requiere de un número reducido de componentes, como lo muestra el diagrama de bloques de la figura 5.187. 42
Estas se utlizan para aplicaciones que requieran menor o mayor capacidad de memoria Flash que el AT89C2051. El fabricante Atmel cuenta con los uC AT89C1051 y el AT89C4051, con 1 Kbytes y 4 Kbytes de memoria Flash, respectivamente.
382
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
VCC GND
Reg. Dir RAM
Registro B
RAM
FLASH
Acumulador (ACC)
Reg. Dir de programa
Stack Pointer (SP)
Reg. Temp. 2
Buffer
Reg. Temp. 1
Incremento del PC (PC + 1)
ALU Interrupciones, puerto serie y temporizadores
Contador de programa (PC)
PSW Reset (RST)
RST/VPP (RXD) P3.0 (TXD) P3.1 XTAL2 XTAL1 (INT0) P3.2 (INT1) P3.3 (T0) P3.4 (T1) P3.5 GND
Temp. Reg. y Instrucción Control (IR)
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
VOC P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 (AIN1) P1.0 (AIN0) P3.7
DPTR
Comparador analógico + – Oscilador
LATCH P3
LATCH P3
Puerto P1
Puerto P3
P1.0-P1.7
P3.0-P3.5
P3.7
=`^liX,%(/- 8ihl`k\ZkliXp[`jki`YlZ`e[\k\id`eXc\j[\c8K/0:)',(% VCC 30 pF XTAL1
VCC
XTAL2
RST
24 MHz
1 F
30 pF
AT89C2051
GND
=`^liX,%(/. J`jk\dXde`dfljXe[f\cd`ZifZfekifcX[fi8K/0:)',(% En las versiones HMOS, el reset automático se obtiene conectando el voltaje de alimentación VCC a la terminal RST, a través un capacitor de 10 μF, y a GND, a través de una resistencia de 8.2 kΩ, como se mostró en el circuito de reset del 8051 de la figura 5.92. Sin embargo, las versiones CHMOS, como el AT89C2051, tienen una resistencia de pulldown conectada a la terminal RST; en consecuencia, no requieren de la resistencia de 8.2 kΩ, aunque su presencia no afecta su funcionamiento. Por tanto, podemos eliminar esta resistencia y reducir el valor del capacitor a 1 μF, como se observa en la figura 5.187.
grupo editorial patria®
383
5 El popular microcontrolador
Como sabemos, el μC AT89C2051 es totalmente compatible con la arquitectura del MCS-51 y puede ser programado con el mismo conjunto de instrucciones. Sin embargo, se debe tener en mente que este dispositivo solo tiene 2 Kbytes de memoria flash, por tanto es responsabilidad del programador no realizar brincos mayores a los 7FFH. Por ejemplo, un brinco a una etiqueta localizada en la dirección 709H, LJMP 709H, será una instrucción válida. Pero, un brinco a una etiqueta con dirección A07H, LJMP A07H, no lo será. Asimismo, las instrucciones con MOVX tampoco serán válidas, debido a que este μC no cuenta con los puertos P0 y P2. De igual modo, el AT89C2051 cuenta con dos bits internos, las cuales pueden ser programados al momento de grabar un programa en la memoria flash. Si estos bits se dejan sin programar, la memoria flash puede borrarse y programarse; pero, si estos se programan, se llevará a cabo la programación de la memoria flash y, posteriormente, se deshabilitará la capacidad de reprogramar dicha memoria. Lo anterior es útil cuando ya se tiene completamente depurado y probado un programa, y no se desea tener más cambios en la memoria. Los modos de ahorro de energía en este microcontrolador son los mismos que en el original 8051, idle y power down. Sin embargo, para saber la potencia que consume el dispositivo, es necesario consultar la hoja de datos relacionada con las características de CD, las cuales muestran ejemplos de consumo de corriente de alimentación (ICC) a 12 MHz, operando a 6V y 3 V en modo activo, modo idle y modo power down. En el modo activo, la corriente ICC es 15 mA/5.5 mA operando a 6 V/ 3 V. En tanto, en el modo idle la corriente ICC es de 5 mA/1 mA con voltajes de 6 V / 3 V. En el modo power down, la corriente ICC es 100 μA/20 μA, operando a 6 V / 3 V. No obstante, si el voltaje de alimentación o la frecuencia de operación son diferentes a los especificados en las características de CD, se deben consultar las gráficas de desempeño de potencia. La figura 5.188 muestra este tipo de gráficas en los modos activo, idle y power down.
ICC modo activo (85°C) 20
I C C m A
ICC modo activo (85°C) 3
VCC 6.0 V
15 VCC 5.0 V
10
VCC 3.0 V
m A
5 0
I C C
0
6
12
Frecuencia (MHz)
18
24
ICC modo activo (85°C) 20
VCC 6.0 V
2
I C C
VCC 5.0 V
1 VCC 3.0 V 0
0
3
6
9
12
Frecuencia (MHz)
½ A
15 10 5 0
3.0 V
4.0 V
5.0 V
6.0 V
Voltaje (VCC)
=`^liX,%(// MXcfi\jkg`Zfj[\Zfii`\ek\[\Xc`d\ekXZ`e@:: [\c8K/0:)',)#gXiXcfjdf[fjXZk`mf#`[c\pgfn\i[fne%
Las características anteriores de ahorro de energía del μC AT89C2051, lo convierten en un atractivo candidato para aplicaciones con equipos portátiles que requieran operar con baterías.43
ABPRA para hacer uso del comparador El siguiente punto consiste en analizar cómo hacer uso del ABPRA. Para esto, primero vamos a verificar el funcionamiento del periférico interno adicional en la arquitectura del AT89C2051, el comparador analógico. En este caso, se requiere que las entradas del comparador consten de un divisor de voltaje, el cual incluya una fotorresistencia, y un voltaje de referencia, la cual podría ser ½ VCC, como se ilustra en la figura 5.189. Ahora, se solicita que la configuración de la figura 5.189 se utilice para controlar una carga, por ejemplo un motor de CD de 12 V. En este caso, el programa de control es muy simple, este debe activar el motor y encender un LED cada vez que se cubre la fotorresistencia de la luz ambiental; asimismo, debe desactivar el motor y apagar el LED cuando entre la luz ambiental a la fotorresistencia. El programa que realiza esta tarea de control es el siguiente. 43
Aunque el AT89C2051 es competitivo en ahorro de energía, este no es el único. En la actualidad, existen microcontroladores como la familia MPS 430, de Texas Instruments, que tienen características superiores de ahorro de energía, con voltajes de alimentación de 1.8 V a 3.6 V, corriente de alimentación de 220 μA en modo activo y los modos de ahorro de energía presentan corrientes ICC de 0.5 μA y hasta 0.1 μA. ¡Fascinante!
384
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
VCC AT89C2051 330 ohms 5 V
P1.3 15
FR 2.5 V Vx
13 AIN1 12 AIN0
12 V
10 k7
1 K7 P1.2
14
=`^liX,%(/0 Gil\YX[\cZfdgXiX[fiXeXc^`Zf`ek\^iX[f\e\cμ:8K/0:)',(%
ORG 0000H
;inicio SETB
P1.0
SETB P1.1
;Establece AIN0 como entrada ;Establece AIN1 como entrada
SETB
P1.3
;Apaga LED
CLR
P1.2
;Desactiva Motor
MOV
C,P3.6
;Lee estado del comparador
JNC
PRENDE
;Si CY 0, se cubre fotorresistencia, Vx< 2.5V,
SETB
P1.3
;CY 1, Vx>2.5V Apaga LED
CLR
P1.2
;Desactiva motor
JMP
INICIO
;Brinca a leer el estado del comparador
CLR
P1.3
;Enciende LED
SETB
P1.2
;Activa motor
JMP
INICIO
;Brinca a leer el estado del comparador
INICIO:
PRENDE:
END
Interfaces sencillas de hardware En esta sección ilustramos de manera simplificada, por razones de espacio en esta edición, algunas interfaces sencillas de hardware, que pueden utilizarse con los microcontroladores MCS-51. Las interfaces que mostramos incluyen ejemplos de interfaces de E/S seriales, de E/S digitales y E/S analógicas.
Interfaces de E/S seriales En la actualidad existe una gama amplia de interfaces de comunicación serial, las cuales permiten comunicar un microcontrolador con otros dispositivos. Algunas de estas interfaces seriales son:
grupo editorial patria®
385
5 El popular microcontrolador
t t t t t t t
USB (Universal Serial Bus) CAN (Controller Area Network) SPI (Serial Peripheral Interface) I2C (Inter Integrated Circuit) UART (Universal Asynchronous Receiver Transmitter) LIN (Local Interconnect Network) Ethernet
También existen interfaces inalámbricas como: ZigBee, Bluetooth y WiFi. Cada una de estas interfaces tiene diferentes aplicaciones, por lo que sería extenso describirlas todas. A cambio, analizamos de manera general la interfaz serial RS232 y posteriormente bosquejamos la ahora omnipresente interfaz USB. Lo anterior tiene como objetivo continuar con la misma tónica de este libro: adquirir un entendimiento intuitivo de las comunicaciones seriales, con el fin de utilizar después cualquier otro tipo de comunicación que requieran nuestras aplicaciones. La importancia de la interfaz RS232 radica en que durante muchos años fue una característica estándar en los puertos de comunicaciones seriales, como los módems de muchas computadoras. La interfaz RS232 fue muy usada durante la década de 1990; sin embargo, esta ha sido apabullantemente reemplazada por otras interfaces seriales, como la USB.
Interfaz RS232 Como aprendimos en el apartado anterior, uno de los periféricos internos con los que cuenta el μC 8051 es un puerto serie. Como se observa en el ejemplo de la figura 5.181, un 8051 se conecta al puerto serie de una PC. De esta manera, el puerto serie de la PC es compatible con el estándar de comunicación serial RS232 o EIA 232; por consiguiente, las señales que viajan del 8051 al puerto serie de la PC requieren seguir el estándar RS232. La función del estándar consiste en especificar, a circuito abierto, los niveles de voltaje de hasta ±25 V; sin embargo, los valores de voltaje más utilizados son ±3 V, ±5 V, ±10 V y ±15 V, los cuales dependen de las fuentes de alimentación; por consiguiente, los niveles lógicos de voltaje son de 3 V a 15 V para un 0 lógico, y de –3 V a –15 V para un 1 lógico. Es importante destacar que estos niveles de voltaje no son compatibles con los niveles de voltaje TTL que utiliza el μC 8051, típicamente de 0 a 5 V. Debido a esta diferencia, las conexiones entre el 8051 y la PC deben llevarse a cabo mediante un controlador de línea o driver. La función de los controladores de línea o drivers consiste en realizar la conversión entre los diferentes niveles de voltaje; esto es, de TTL a RS232 y de RS232 a TTL. La figura 5.190 muestra la conexión de un μC 8051 a la interfaz serial RS232, a través de un controlador de línea como el MAX1489. El cable que conecta a los dispositivos termina en ambos extremos con un conector denominado DB25 o DB9. Estos conectores tienen la forma de la letra D mayúscula y tienen 25 o 9 terminales, respectivamente. Debido a que no
Controlador de línea (driver) RS232
Conector DB9 1
TXD
2 (RXD)
RXD
3 (TXD)
GND
5 (GND) 4 6
AT89C2051
7 8 9
=`^liX,%(0' D`ZifZfekifcX[fi/',(Zfe`ek\i]XqIJ)*)%
386
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
todas las terminales son utilizadas, el conector más común es el DB9. Esta interfaz incluye líneas de control para habilitar protocolos de comunicación como petición para enviar (RTS), el cual concede permiso para enviar (CTS), terminal de datos disponible (DTR) y un conjunto de datos disponibles (DSR). Sin embargo, las terminales más utilizadas son TXD, RXD y GND, como se muestra en la figura 5.190. Para enfatizar cómo trabaja la interfaz RS232, retomamos el ejemplo de la figura 5.185. El puerto serie del μC 8051 genera un tren de bits TTL (0 – 5 V) en la terminal TXD, estos niveles de voltaje son transmitidos al controlador de línea y después a través de un cable son transmitidos a la PC. El controlador de línea convierte los niveles TTL a niveles RS232, en este caso a ±12 V, como lo ilustra la transmisión del carácter ASCII para la letra ´J´, 4AH, de la figura 5.191.
Valor lógico
1
0
0
1
0
1
0
0
1
0
1
1
12 V 5 V t Niveles TTL en la terminal de salida (TXD) de UART 12 V
t
12 V Niveles RS232 en la terminal de salida del controlador de línea Estructura de datos
B0 B1 B2 B3 B4 B5 B6 B7 Inicio
Detención
=`^liX,%(0( :fekifcX[fi[\ce\Xhl\Zfem`\ik\leXkiXejd`j`e[\cXc\kiXËAË[\e`m\c\jKKCXe`m\c\jIJ)*)% Los valores típicos de programación en el programa monitor de la PC, como la hyperterminal de Windows, se muestran en la tabla 5.17. Velocidad
1200/2400/9600/ bauds
#JUTEFEBUPT
8
Paridad
Ninguna
#JUEFEFUFODJØO
1 bit
KXYcX,%(. MXcfi\jkg`Zfj\e\cgif^iXdXdfe`kfiZfdfcX_pg\ik\id`eXc[\N`e[fnj% Las señales de transmisión y de recepción en el estándar RS232 son referidas a tierra, lo cual limita tanto la inmunidad al ruido, como la distancia de transmisión. Esto se debe a que ambos extremos de los circuitos RS232 dependen de que la señal GND sea 0 volts. Cuando fuentes de ruido, como maquinaria, se conectan a la alimentación de la computadora, pueden ocurrir ciertos problemas. Este ruido puede ser inducido por el cable, ocasionando que la terminal GND, en uno de los extremos, y la terminal GND, en el otro extremo, no tengan 0 volts. Lo anterior causa los denominados “lazos de tierra”, que en este caso afectarían las comunicaciones. El uso de tierra común limita el estándar RS232 a aplicaciones con cables relativamente cortos. Si los dos dispositivos se encuentran separados a distancias muy grandes, las conexiones de tierra en cualquiera de los extremos tendrán diferentes voltajes; esta diferencia es la que
grupo editorial patria®
387
5 El popular microcontrolador
reduce el margen de ruido en las señales. La solución a este problema es utilizar señales seriales diferenciales que no estén referidas a tierra, tal es el caso de las interfaces RS422, RS485 y la interfaz USB.
Interfaz USB La interfaz USB (Universal Serial Bus) es un estándar de la industria desarrollado en la década de 1990. El estándar define cables, conectores y protocolos de comunicaciones usados en un bus para su conexión, comunicación y alimentación entre computadoras y dispositivos electrónicos. La interfaz USB fue diseñada con el propósito de estandarizar la conexión de periféricos en las computadoras, como teclados, cámaras digitales, impresoras, equipos portátiles y discos duros, entre otros. Esta interfaz, aparte de realizar la comunicación entre dispositivos, provee el voltaje de alimentación, por lo que no son necesarias las fuentes de alimentación de los equipos portátiles. En la actualidad, la interfaz USB ha reemplazado a otras interfaces seriales y puertos paralelos, ya que se encuentra en dispositivos como teléfonos celulares, los denominados smartphones, asistentes personales digitales (PDA, por sus siglas en inglés) y videojuegos. Las especificaciones generales del estándar USB incluyen una longitud de transmisión de 5 metros, la cual puede extenderse con un hub como tarjetas madre o PC; permiten conexión con los sistemas alimentados (hot pluggable) y el cable está constituido por 4 alambres en las versiones USB 1.0 y USB 2.0, y nueve en la versión USB 3.0. Existen dos tipos de conectores USB llamados tipo A y tipo B, como lo ilustra la figura 5.192.
Conector tipo A
D D
4
3
2
Conector tipo B D 1 2
Terminal 1 Terminal 2 Terminal 3 Terminal 4
VCC (5 V) Dato Dato GND
1 4
3 D
=`^liX,%(0) :fe\Zkfi\jLJ9k`gf8p9pjl[`jki`YlZ`e[\k\id`eXc\j%
Por lo común, los conectores tipo A se encuentran en host y hubs como las PC. Mientras que los conectores tipo B, por lo general, se encuentran en los “dispositivos” como nuestro sistema basado en un microcontrolador MCS-51. Debido a la existencia de dispositivos electrónicos en miniatura, la especificación USB 2.0 introdujo un mini USB tipo B. Las señales eléctricas son de 5 V (±5%) con una corriente de 500 mA a 900 mA dependiendo de la versión. Los datos son empaquetados de acuerdo con la especificación del estándar en cuestión y la velocidad de transmisión es de 1.5/12/480/5000 Mbps, también dependiendo de la versión. La forma más fácil de realizar una interfaz serial entre un sistema basado en el microcontrolador 8051 y una PC es usar un módulo que nos convierta las señales TTL o RS232 de nuestro sistema al popular estándar USB y viceversa. Una de estas opciones es el módulo MM232R mini USB-serial UART.44 El MM232R es un módulo miniatura, el cual usa el circuito integrado FT232RQ de FTDI. Este circuito constituye una interfaz serial USB-UART. Algunas de sus características principales son: t t t t t t 44
Interfaz UART de 7 u 8 bits. Alimentación de 3.3 V a 5.25 V. Alimentación por bus y por fuente externa. Velocidad de 300 bps a 3 Mbps (RS422/RS485 y TTL) y de 300 bps hasta 1 Mbps RS232. Velocidad compatible con el estándar USB 2.0. Driver de puerto virtual (software libre), Windows Vista, XP, etcétera.
Se recomienda revisar la hoja de datos del módulo MM232R, la cual se puede obtener en la liga: http://www.ftdichip.com/Support/Documents/ DataSheets/Modules/DS_MM232R.pdf.
388
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
El procedimiento para realizar la interfaz de hardware entre un sistema basado en el 8051 y el MM232R es el siguiente: 1. Descomprimir el archivo CDM 2.02.04 WHQL Certified que contiene el driver virtual, ejecutarlo en la PC y definirle una trayectoria.45 2. Conectar MM232R a la PC, si esta tiene Windows XP debe de identificarlo. 3. Programar la hyperterminal para recibir la información proveniente del sistema basado en un microcontrolador. La figura 5.193 ilustra la conexión entre un microcontrolador 8051 y un módulo MM232R. +5 V
MM232R
10
SHIELD 2 VCC 3 VCC10 VCC30 5 TXD
11
7
80C51
P3.0 (RXD) P3.1 (TXD)
RTS# RXD CTS#
SHIELD USBPWR VCC50 GND PWREN RESET# SLEEP# CLK12M
15 14 13
4.7 K7
11 10 K7
=`^liX,%(0* ;`X^iXdX[\Zfe\o`e\eki\led`ZifZfekifcX[fi/',(pled[lcfDD)*)I% La conexión de la figura 5.193 nos permite realizar el ABPRA de la figura 5.181, por medio del uso del puerto USB de la PC, y estableciendo previamente los valores de comunicación en la hyperterminal de Windows. Esto nos permitiría dejar atrás la ahora anacrónica interfaz RS232 y entrar a la modernidad, con nuestro humilde sistema basado en el microcontrolador 8051.
Interfaces de hardware para E/S digitales y analógicas Las terminales del microcontrolador 8051 pueden conectarse en forma directa a diversos dispositivos, los cuales pueden ser digitales o analógicos. Sin embargo, en esta sección solo mostramos las conexiones de hardware y se dejará al talento de los lectores, los diseñadores, realizar las adaptaciones pertinentes al hardware y desarrollar el software que corresponda. Algunas de las salidas digitales simples más importantes se ilustran en la figura 5.194. Sin embargo, es importante que revise las hojas de datos del dispositivo MSC-51 que esté usando, concón respecto a la capacidad de voltajes y corrientes que el μC puede proveer (source) o absorber (sink). Una interfaz digital muy común se relaciona con los motores de pasos. Así, los microcontroladores 8051 pueden interconectarse a estos dispositivos, como se ilustra en la figura 5.195. Usando microcontroladores MCS-51 con ADC o comparadores como parte de los periféricos internos del μC, es posible realizar interfaces de hardware para entradas analógicas sencillas, como se muestra en la figura 5.196. Asimismo, también es posible conectar directamente los puertos de un microcontrolador MCS-51 a convertidores analógicos tipo ADC o DAC, como se muestra en la figura 5.197. 45
El archivo CDM 2.02.04 WHQL Certified puede descargarse de Internet en varias páginas. Una de estas páginas es: http://www.filecrop.com/ CDM-2.02.04-WHQL-Certified.rar.html.
grupo editorial patria®
389
5 El popular microcontrolador
VCC 12 V 12V Relé de estado sólido
47uF Relé
1 K7
A una salida digital
A una salida digital
A una salida digital
A una salida digital
=`^liX,%(0+ @ek\i]XZ\j[\_Xi[nXi\jgXiXjXc`[Xj[`^`kXc\j[\leμ:%
Motor de pasos
P1
VCC
80C51
Rojo
Rojo
Café Naranja 10 K½ Fase 1 (motor de pasos)
P1.0 VCC
Amarillo D
Q
Negro
1 K½
Control
Motor de pasos Airopax 5 V, 65 ohms
10 K½ D
Q
P1.1
M
1 K½
=`^liX,%(0, @ek\i]Xq[\_Xi[nXi\[\leμ:/',(Zfeledfkfi[\gXjfj% Voltaje de entrada de CD
5V
5V Ent
R1 Pot 10 K7 10 K7 A entrada analógica
10 K7
LM34
Sal 75 7
R2 A entrada analógica
1 MF
10 K7 A entrada analógica
=`^liX,%(0- @ek\i]Xq[\_Xi[nXi\[\leμ:/',(Zfe\ekiX[XjXeXc^`ZXj%
Además, existen sistemas híbridos (analógicos y digitales) integrados en circuitos de 8 terminales, como sensores o potenciómetros digitales, los cuales pueden programarse en forma serial. Tal es el caso del sensor de temperatura DS1620 o el potenciómetro digital DS1267 que se muestran en la figura 5.198.
390
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
ADC0804
MC1408L8 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
1 K7
P3.4 P3.5
14
5 6 7 8 9 10 11 12
Vref+ D7 5 V D6 1 K7 15 D5 Vref– D4 1 D3 nc 4.7 K7 D2 DAC D1 12 V
12 V D0 7 4 2 13
4 6 I0 VCC +5 V 16 8 LM301 COMP 3 15 pF
2
33 pF
3
AT89C2051
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
1
GND VEE
3
VCC 20
WR
5 INTR 1 CS 2 RD 28 27 26 25 24 23 22 21
18 17 16 15 14 13 12 11
Vin() Vin( )
7
Vref 9 CLK R
+5 V potenciómetro de ajuste pequeño 10 K7
6
nc
19
10 K7
ADC 4 CLK IN
150 pF
10
D GND 8 A GND
80C31BH
–12 V
=`^liX,%(0. D`ZifZfekifcX[fiD:J$,(Zfe`ek\i]XqjXc`[X&\ekiX[XXeXc^`ZX%
80C31BH
AT89C2051
VCC
P1.0 P1.1 P1.2
RST CLK DQ
P3.2 P3.3 P3.4
TH1 TL0 TCOM
RST CLK DQ
H1 W1
Vsal
L1
DS1237
DS1620
=`^liX,%(0/ D`ZifZfekifcX[fiD:J$,(Zfe`ek\i]Xqj\i`XcX[`jgfj`k`mfjXeXc^`Zfj$[`^`kXc\jZfdfj\ejfi\j [\k\dg\iXkliXfgfk\eZ`d\kifj[`^`kXc\j%
Futuro del 8051 y los microcontroladores La arquitectura del 8051 no solo ha permanecido, sino ha madurado con el transcurso del tiempo. Como los buenos vinos, esta arquitectura no es más vieja sino cada vez es mejor. La existencia de fabricantes con licencia de la arquitectura 8051, como Atmel, NXP, Silicon Labs, Dallas/Maxim, Infineon, ST, Rabbit y otros, se han encargado de mejorar sus especificaciones técnicas, asegurar su permanencia en el mercado por muchos años más. De esta manera, recientemente Digital Core Design anunció el microcontrolador con arquitectura del 8051 más rápido del mundo, el DQ80251, el cual ofrece resultados 56 veces mejores que el estándar 8051 de Intel y 70% más eficiencia que cualquiera de sus competidores. Hoy día las mejoras continúan y la tendencia indica que seguiremos siendo testigos de los avances en la humilde, pero versátil arquitectura de 8 bits del 8051 de principios de la década de 1980. Pero el 8051 no es la única arquitectura de microcontroladores, también existen excelentes arquitecturas de microcontroladores en el mercado, de las cuales podemos beneficiarnos si se tienen los conocimientos básicos. Algunas de estas arquitecturas son la ARM, la cual tiene como fabricantes NXP, ST, Freescales, Atmel, entre otros; la arquitectura MIPs, del fabricante Microchip y la arquitectura MPS430, del fabricante Texas Instruments, solo por mencionar algunas opciones.
grupo editorial patria®
391
5 El popular microcontrolador
La tendencia de los microcontroladores continúa siendo la reducción de los voltajes de alimentación y del consumo de potencia mediante los modos de ahorro de energía. El tamaño también prosigue su camino de miniaturización; hoy en día tenemos microcontroladores casi del tamaño de la punta de un lápiz. El aumento de la muy alta escala de integración continúa. Hoy día, existen microcontroladores de 32 bits a precios muy accesibles, los cuales incluyen no solo memoria flash, sino también funcionalidades de procesamiento digital de señales (DSP). A estos últimos dispositivos se les ha denominado Digital Signal Controllers (DSC, por sus siglas en inglés). Aún más, existe la tendencia fuerte para la proliferación de múltiples CPU de microcontroladores, como el caso de las computadoras personales. Es muy probable que la ley de Moore, aun cuando no es una ley f ísica, continúe su vigencia. Esta ley asume que la potencia computacional se duplicará cada 18 meses, y muy probablemente continuará siendo válida por algunas décadas más. Teniendo como base la ley de Moore, podemos vislumbrar razonablemente bien lo que pueda suceder en los años 2020 o 2030. Consideremos que en los últimos cuarenta años el desarrollo de los microprocesadores y microcontroladores ha sido impresionante. Los teléfonos celulares y videojuegos de hoy en día tienen más potencia computacional que la NASA, cuando en 1969 Neil Armstrong y Buzz Aldrin pisaron la Luna. Asimismo, en la actualidad podemos obtener microcontroladores por el costo de un café en cualquier restaurante, pero se espera que el precio de estos dispositivos continúe disminuyendo. Esto significa que los microprocesadores y los microcontroladores podrán encontrarse en todos lados, incluso en lugares donde hoy no los esperamos. Por ejemplo, es muy probable que estos circuitos integrados los podamos encontrar alojados como parte de estructuras metálicas o de concreto, las cuales forman parte sustancial en la construcción de puentes, edificios, automóviles, aviones, etcétera, permitiendo monitorear constantemente su integridad mecánica. Los circuitos integrados podrían estar en los lentes de contacto corrigiendo problemas de visión o aumentado sus capacidades.46 La tecnología para miniaturizar ya se encuentra aquí. En la actualidad, existen circuitos integrados que se pueden alojar en una píldora, incluirlos una cámara de televisión y un imán. Lo anterior permite que un paciente trague la píldora y su descenso sea guiado con el imán para monitorear con la cámara el interior del cuerpo. Esto le daría otro significado a la popular frase de las computadoras personales, “Intel inside”. El desarrollo de la electrónica, y de los microcontroladores en particular, nos ofrece muchas y novedosas oportunidades. Sin embargo, las oportunidades requieren mentes preparadas, innovadoras e intuitivas.
DATOS IMPORTANTES DEL CAPÍTULO ± El número de transistores en un CI se usa como medida de su complejidad funcional. ± El primer microprocesador de 8 bits comercialmente exitoso fue el 8080 de Intel, fabricado con tecnología NMOS y mayores capacidades que su predecesor el 8008. ± Motorola abatió en forma considerable el costo de los microprocesadores con sus modelos 6501 y 6502, los cuales provocaron un auge en el mercado de microcomputadoras. ± Los microprocesadores eran el componente principal de las denominadas computadoras en una sola tarjeta (SBC).
46
± A las primeras microcomputadoras de un solo CI se les llamó posteriormente microcontroladores. Dos de los primeros microcontroladores son el 8048 de Intel y el 6805R2 de Motorola. ± Los microprocesadores se utilizan en aplicaciones donde se requiere el manejo de grandes volúmenes de información como las PC. Los microcontroladores, en cambio, enfocan sus recursos al control en tiempo real, como el caso de los sistemas embebidos. ± Un sistema computacional básico está conformado por el μP o CPU, memorias tipo ROM o RAM y puertos de entrada/salida.
Cuando era niño existía una serie televisiva llamada The Six Million Dollar Man, que en México recibió el nombre de El hombre nuclear. En dicha serie, un astronauta y piloto de pruebas sufre un terrible accidente durante un vuelo experimental. Como resultado de este, los médicos deben amputarle ambas piernas y el brazo derecho, además de que también pierde la visión del ojo derecho a causa de una infección. El daño en su cuerpo fue reemplazado por partes cibernéticas que le proporcionaron poderes espectaculares. Su ojo, en particular, tenía capacidades telescópicas e infrarrojas. Bien, tal vez con ayuda de lentes con cómputo integrado, en un futuro estemos cerca de convertirnos en hombres nucleares.
392
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
± La CPU tiene dos señales de entrada que se generan externamente: la señal reset y una señal de reloj (oscilador). ± La frecuencia del reloj se usa como base de tiempo de la CPU y proporciona la excelente exactitud con la que operan estos dispositivos. ± Los circuitos osciladores que proporcionan la frecuencia de reloj utilizan cristales con características piezoeléctricas como el cuarzo, y se les llama osciladores de cristal. ± Las memorias tipo ROM almacenan datos de manera permanente durante su construcción, y pueden usarse para almacenar las instrucciones de inicialización de una computadora, y las rutinas de control cuando se enciende una PC por primera vez. ± En las memorias tipo RAM se puede escribir y leer datos, pero pierden su información cuando se les quita la alimentación. ± Los puertos de entrada y salida permiten a un μP comunicarse con el mundo exterior. ± Los dispositivos que se encuentran en la periferia de la CPU y permiten la comunicación con el mundo exterior se les llaman dispositivos periféricos; por ejemplo, teclados, indicadores visuales, convertidores ADC/DAC, puertos seriales/paralelos o incluso otros μP. ± El término bus se usa para referirse a un grupo de alambres que transfieren información digital desde una o varias fuentes a cualquiera de varios destinos. ± Los principales buses de un sistema basado en un μP son el bus de datos, el bus de direcciones y el bus de control. ± El bus de direcciones es usado por la CPU para seleccionar otros dispositivos en el sistema, el bus de control se usa para indicar si se desea escribir o leer datos de un dispositivo, y el bus de datos es un medio para transferir información a los dispositivos de memoria o puertos de E/S. ± Las señales de reset y reloj, así como las interrupciones del sistema, se consideran parte del bus de control. ± El espacio de dirección de una CPU es la capacidad de direccionar diferentes localidades de memoria, y es determinado por el bus de direcciones. ± La función principal de una CPU es ejecutar continuamente ciclos de instrucción, también llamados ciclos de máquina, consistentes en la búsqueda, decodificación y ejecución de instrucciones.
± Un ciclo de máquina está constituido por un número preestablecido de ciclos del reloj, y representa el tiempo de ejecución de una determinada instrucción. ± Las instrucciones en un μP realizan operaciones aritméticas, lógicas, de transferencia de datos o de brincos condicionales o incondicionales. Todas estas operaciones se representan por un conjunto de códigos binarios llamado conjunto de instrucciones. ± Los circuitos más importantes que constituyen una CPU son la ALU y su registro de banderas, los registros IR, SP y PC, circuitos de temporización y control, así como un grupo de registros de propósito general. ± Al espacio de dirección de una CPU se le asignan los periféricos, memorias y/o puertos de E/S; esta asignación de espacios se conoce como mapa de memoria. ± Cuando la CPU accede a los puertos como si fueran localidades de memoria, se les denomina puertos de E/S mapeados por memoria. ± Los decodificadores de direcciones se usan para que la CPU seleccione un dispositivo periférico a la vez, activando la línea de selección del CI o Chip select (CS). ± La decodificación de direcciones por parte de la CPU puede ser parcial o total. ± La decodificación total utiliza todas las líneas del bus de direcciones para acceder a los datos de un periférico, como localidades de memoria. La decodificación parcial usa algunas líneas de direcciones, como cuando se accede a puertos de E/S. ± La interconexión de partes de un sistema, de forma compatible y coordinada, es decir, sincronizada, se conoce como interface o interfaz. ± La interface entre un μP y sus periféricos involucra su correcta temporización, la compatibilidad de voltajes/corrientes, y la dirección (entrada/salida) de datos. Todas las operaciones están controladas por una señal de reloj como base de tiempo. ± Las operaciones que realiza un μP y sus periféricos son transferencias de datos desde o hacia el μP a través de ciclos de lectura/escritura a memorias, lectura/escritura a puertos y por medio de las interrupciones. ± Un ciclo de lectura de un μP permite tener acceso a los datos de un periférico, e involucra las señales del bus de direcciones, la señal de control de lectura
grupo editorial patria®
393
5 El popular microcontrolador
(RD) y el bus de datos. La temporización la especifica el fabricante en sus hojas de datos. ± El tiempo de acceso, tACC, en el ciclo de lectura de un μP, es el tiempo que transcurre desde que el μP coloca las direcciones en el bus de direcciones hasta que los datos son válidos y están listos para ser leídos. Para asegurar la transferencia correcta, la memoria debe proveer estos datos con un tACC menor que el del μP. ± Un ciclo de escritura de un μP permite escribir datos a un periférico, e involucra las señales del bus de direcciones, la señal de control de escritura (WR) y el bus de datos. La temporización la especifica el fabricante en sus hojas de datos. ± Las señales de temporización de un μP y de las memorias no se encuentran combinadas en los diagramas de tiempos que proveen los fabricantes. Estos diagramas se deben combinar tomando en cuenta los tiempos de propagación, tPD, de la lógica combinacional requerida y de los parámetros de temporización como el tACC. ± La interface con puertos de E/S se realiza en serie o en paralelo, donde el grupo de datos a transferir en paralelo es n, normalmente el ancho del bus de datos, y en serie n es 1. ± La interface en paralelo y en serie se lleva a cabo mediante ciclos de lectura/escritura; en la primera, usando el bus de datos completo del μP, por lo que la transferencia es más rápida pero utiliza varios alambres; la segunda, usa 1 bit del bus de datos, por lo que es más lenta pero con un alambrado simplificado. ± Los periféricos normalmente no operan a la misma velocidad del μP; por tanto, para sincronizar su transferencia de datos se utilizan las técnicas de E/S por programa o polling y las interrupciones. ± La E/S por programa o polling realiza la lectura de datos en forma repetitiva usando una iteración en el programa; es decir, el μP le pregunta a cada periférico si tiene un dato válido para tomar una acción (lectura/escritura) determinada. ± La E/S por interrupción es asíncrona, es decir, le permite al μP responder a un evento externo sin saber cuando pueda ocurrir este. Cuando se genera un evento (interrupción), el flujo del programa principal se interrumpe para llevar a cabo una rutina denominada Rutina de servicio de interrupción (RSI), la cual toma el control, realiza sus operaciones y termina al pasar de regreso el control a la rutina principal.
394
± Existen dos tipos de interrupciones: enmascarables (INT) y no enmascarables (NMI). A las interrupciones enmascarables se les pueden asignar prioridades que permitan que las tareas con mayor prioridad se realicen sin ser interrumpidas por las tareas de menor prioridad; inclusive, algunas interrupciones pueden ser deshabilitadas por programa. Las interrupciones no enmascarables no permiten ser ignoradas y tienen mayor prioridad que las interrupciones enmascarables. ± Las interrupciones que no solo consisten de una señal de petición de interrupción, sino también de un identificador que permite que el μP brinque directamente a la RSI, se conocen como interrupciones vectorizadas. Dicho identificador puede ser una dirección o bien el primer byte de una instrucción. Lo anterior le permite saber al μP cual dispositivo de E/S lo está interrumpiendo. ± Los sistemas basados en μP entienden únicamente un lenguaje representado por una serie codificada de números binarios a los que se les llama: lenguaje de máquina. Por lo general, cada μP tiene un conjunto de instrucciones específico y por tanto contiene su lenguaje de máquina particular, incluso entre miembros de una misma familia. ± El lenguaje ensamblador consiste de un conjunto de instrucciones mnemónicas y modos de direccionamiento, donde las instrucciones describen qué es lo que se tiene que hacer y los modos de direccionamiento describen dónde hacerlo. ± Las instrucciones mnemónicas son palabras codificadas como ADD, ORL, etc., que representan un dato binario en lenguaje de máquina, con el cual resulta más fácil la programación del μP. ± Cada instrucción en ensamblador tiene dos posibles componentes: el código de operación u opcode y un operando. El código de operación es la función que ejecuta la instrucción, mientras el operando es el dato usado por el código de operación. ± Los datos binarios representados por los mnemónicos se almacenan en la memoria de programa, ROM, y son leídos por el μP mediante los ciclos de instrucción. ± Los programas en lenguaje ensamblador, desarrollados por los diseñadores o programadores, no son ejecutados directamente por el μP, sino que son traducidos a lenguaje de máquina por un programa comercial llamado ensamblador, el cual genera un archivo que posteriormente se graba en las memorias de programa tipo ROM.
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
± Los programas llamados compiladores de código toman un código en lenguaje de alto nivel, como el lenguaje C, y crean un código que se ejecuta en un sistema basado en un μP. ± Los programas compiladores pueden manejar tareas como direccionamiento de memoria sin la necesidad de que el desarrollador se preocupe de ello. Sin embargo, esto tiene un precio, aunque estos programas son cada día más eficientes, por lo general ocupan más código. ± El lenguaje ensamblador trabaja directamente con la circuitería, o hardware, a la que está conectado el μP. Esta cercanía le provee mayor eficiencia en la traducción de código ejecutable que un compilador, pero requiere un conocimiento del hardware y modos de direccionamiento. Sin embargo, se recomienda siempre tener una idea de la cantidad de información binaria que se convierte a código ejecutable, ya sea en C o en ensamblador. ± Al programa de control que se almacena f írmemente de manera permanente en la memoria ROM se le denomina firmware. La analogía con la acción de escribir una carta aclara este concepto: una hoja de papel sería el hardware, las palabras escritas con lápiz serían el software, y las palabras escritas con tinta serían el firmware. ± Un μC es una computadora autocontenida en un CI que incorpora todos los componentes básicos de un sistema basado en un μP o de una computadora personal a una escala mucho menor. ± Las aplicaciones típicas de los μC son como controladores embebidos en un proceso o sistema grande del cual controlan solo una parte, de ahí el ahora difundido término de sistemas embebidos. ± Los μC típicamente incluyen una CPU, memorias, puertos de E/S de propósito general y periféricos. ± Aunque existen μC de 8, 16 y 32 bits, los μC de 8 bits se usan en forma amplia y exceden en volumen a las computadoras personales y a los servidores. ± Los μC de 8 bits por lo general son más baratos, tienen interfaces de E/S simples, conjuntos de instrucciones reducidos y consumen menos potencia que sus contrapartes de 32 bits. ± La familia del μC 8051, referido como MCS-51, contienen dos sistemas básicos: uno constituido por la CPU y el otro por sus periféricos. ± La CPU del 8051 es de 8 bits con una capacidad de direccionamiento de 64 Kbytes para memoria de
programa y 64 Kbytes para memoria de datos y periféricos mapeados a memoria. ± Los periféricos principales son 4 puertos de E/S de 8 bits, un circuito oscilador interno, un procesador de Boole, 2 interrupciones externas, 2 temporizadores/ contadores, un puerto serie, 128/256 bytes de memoria RAM y 8/4K/0K bytes de memoria de programa. ± En la familia original MCS-51 de Intel, el 8051 es la versión ROM, el 8751 es la versión EPROM y el 8031 es la versión sin ROM interna. ± Existen otros fabricantes con licencia del 8051como Atmel, Philips, Dallas Semiconductors, entre muchos otros que cuentan con versiones con memorias de programa tipo Flash, mayor número de periféricos y mayor velocidad de operación. ± El ciclo de máquina del 8051consiste de una secuencia de 6 estados (S1-S6), y cada estado está constituido por 2 periodos del oscilador (P1, P2). Por tanto, un ciclo de máquina se compone de 12 periodos del oscilador. ± La ALU del 8051 puede manipular datos tanto de 8 bits como de 1 bit debido a su procesador de Boole. ± Después de una señal de reset, el 8051 inicializa el contador de programa, PC, en la dirección 0000H, el stack pointer, SP, en la dirección 07H y los pines de los puertos de E/S se establecen en 1 lógicos (FFH). ± El 8051 cuenta con tres mapas de memoria: uno para memoria de datos externa (RAM/periféricos mapeados a memoria), uno para memoria de programa externa (ROM) y uno para memoria RAM interna. ± Los 4 puertos de 8 bits del MCS-51 son bidireccionales; cada uno consiste de un latch, un driver de salida (transistor FET) y un buffer de tres estados de entrada. ± El puerto P1 es el único dedicado para E/S, el puerto P3 tiene funciones de control alternas, y el P0 proporciona la operación de bus multiplexado datos/ direcciones (A0-A7) y el P2 provee el byte superior de direcciones (A8-A15) como función alterna. ± La señal de ALE se utiliza para demultiplexar el bus de datos/direcciones proveniente del puerto P0 en su función alterna. ALE se genera a 1/6 de la frecuencia del oscilador y por lo general se utiliza para verificar la correcta temporización del μC. ± Todos los miembros de la familia MCS-51 ejecutan el mismo conjunto de instrucciones. Los códigos de operaciones de las instrucciones son de 8 bits, por tanto, se pueden tener hasta 256 instrucciones dife-
grupo editorial patria®
395
5 El popular microcontrolador
±
±
± ±
±
rentes, de ellas se tienen implementadas 255, y la mayoría (139) son de 1 byte. El 8051 tiene 8 modos de direccionamiento, los cuales se consideran una parte integral del conjunto de instrucciones y proveen la flexibilidad para especificar, de varias formas, la fuente o destino de los datos a utilizar. Las directivas del ensamblador del 8051 no son instrucciones. Estas se usan como comandos del lenguaje ensamblador para definir símbolos, reservar diversos espacios de memoria, almacenar constantes en la memoria de programa, identificar el inicio o fin del programa fuente, entre otros usos. Los símbolos son representaciones alfanuméricas de constantes, direcciones, macros, etcétera. Las etiquetas son un caso especial de los símbolos. Sin embargo, las etiquetas se usan antes de cualquier instrucción o directiva que tenga una dirección f ísica asociada. En algunos ensambladores del 8051, los comentarios deben empezar con un punto y coma (;), y pueden usarse líneas enteras para realizar comentarios si se comienzan con un punto y coma. Se recomienda siempre comentar los programas.
PROBLEMAS
DEL CAPÍTULO
± El sistema mínimo es un sistema basado en un microcontrolador que se construye con los circuitos o componentes mínimos necesarios para ejecutar un programa. Para el 8051, sería: el μC mismo, el cristal, la memoria EPROM externa (si se requiere), el circuito de reset y un voltaje de alimentación. ± El sistema mínimo se prueba con un programa mínimo. Es decir, un programa con un número reducido de instrucciones, de ser posible una sola instrucción. Se recomienda utilizar de manera sistemática la metodología “incrementalista” de prueba y error. ± Los programas para ensambladores y simuladores son muy útiles y se recomienda ampliamente usarlos y familiarizarse con ellos. ± Desde el punto de vista funcional, todos los microcontroladores son similares. Por tanto, se recomienda aprender muy bien uno de ellos, para que, cuando se requiera utilizar cualquier otro, el proceso de aprendizaje sea rápido. Recuerden poner atención en su arquitectura, corrientes y voltajes de los puertos de E/S y su temporización. Claro, leyendo las hojas de datos del fabricante.
5
5.1 Describe cuál fue el primer μP comercialmente exi-
5.10
Dibuja el diagrama de bloques de una CPU con sus circuitos principales. Explica de forma simplificada su funcionamiento.
5.11
¿Qué es el mircroprograma de cada instrucción?
5.12
¿Para qué se utiliza el registro de banderas?
5.13
Realiza la descripción secuencial de la ejecución del ciclo de instrucción por una CPU.
5.14
Usando la calculadora lógica el operador 1 y el operador 2 representan el registro Acc y el registro temporal, RTEMP, de una ALU. Realiza las operaciones AND, NAND, OR, NOR y XOR entre el Acc 80H y RTEMP 22H.
5.15
El registro RTEMP de una ALU puede usarse como máscara en operaciones lógicas. Define cómo funciona este registro máscara y cuál es su uso.
5.16
Usando la operación lógica AND, realiza la máscara del bit más significativo (MSB) del registro acumulador para cuando Acc 95H y Acc 65H.
toso lanzado por Intel y su capacidad de direccionamiento.
5.2 Describe el efecto que causó en el mercado de los μP el lanzamiento de los μP 6501 y 6502 de Motorola.
5.3 Describe lo que eran las tarjetas electrónicas SBC, su componente principal y sus primeras aplicaciones.
5.4 Describe la diferencia entre un μP y un μC y cuáles son sus aplicaciones.
5.5 Describe los componentes principales de una computadora digital.
5.6 Describe el efecto en el que se basan los cristales de los circuitos osciladores (de reloj) de un sistema digital.
5.7 Describe el funcionamiento de los buses de direcciones, datos y control de un μP.
5.8 Define el sentido de las principales señales de control de una CPU.
5.9 Define qué es el ciclo de instrucción o ciclo de máquina de un μP.
396
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
5.17
Usa la operación lógica OR para establecer en 1 el bit menos significativo (LSB) del registro acumulador, sin afectar los otros bits de este registro para cuando Acc 48H.
5.18
Usa la operación lógica XOR para realizar el complemento de nibble bajo del registro acumulador cuando Acc 85H.
5.19
Realiza cuatro corrimientos a la derecha del registro acumulador cuando Acc 27H, de tal manera que el resultado sea un 72H.
5.20
Realiza la operación lógica SWAP cuando el operador 1 (Acc) en la calculadora digital es 27H y compara el resultado con el resultado obtenido en la pregunta anterior.
5.21
5.22
5.23
5.24
Se cuenta con un μP con 8 bits de datos y un bus de direcciones de 12 bits. Las señales de control de lectura /RD y escritura /WR, se activan con 0 lógicos. Se tienen una memoria ROM de 1 Kbytes y una memoria RAM de 500 bytes. a) Usando un decodificador 74HC139, realiza el mapa de memoria y el diagrama a bloques del circuito usando decodificación total para la memoria ROM y decodificación parcial para la memoria RAM. b) Realiza el mapa de memoria y el diagrama a bloques del circuito usando decodificación total para ambas memorias. Un sistema basado en un μP de 8 bits de datos, y 11 líneas de direcciones, requiere conectarse a un sistema de memorias de 1 Kbytes de ROM y 256 bytes de RAM, y a un puerto de salida mapeado a memoria. Se cuenta con memorias RAM de 256 nibbles y memorias ROM de 1 Kbytes y diferentes compuertas digitales. Realiza el mapa de memoria y el diagrama a bloques del circuito usando decodificación parcial. Se tiene un sistema basado en un μP de 8 bits de datos, y 16 bits de direcciones. Se requiere que el sistema contenga un bloque de memoria de 16 Kbytes de RAM y 32 Kbytes de ROM. Las memorias con que se cuenta son ROM de 8 Kbytes, RAM de 16 Kbytes, un decodificador de 3 a 8 74LS138 y diferentes compuertas digitales. Realiza el mapa de memoria y el diagrama a bloques del circuito usando decodificación parcial. Un sistema basado en un μP requiere de una memoria EPROM de 8 Kbytes. El μP tiene un bus de direcciones de 16 bits y un bus de datos de 8 bits; el ciclo de lectura del μP es de 800 ns y el tiempo de acceso, tACC, para leer los datos es de 300 ns. La memoria EPROM tiene un tiempo de acceso de 250 ns, y se cuenta con un decodificador 74HC138
y lógica combinacional con tiempos de retraso de 30 ns y 10 ns, respectivamente. Realiza el diagrama a bloques del circuito y el diagrama de tiempos entre la memoria EPROM y el μP para determinar si su funcionamiento será el adecuado.
5.25
Se cuenta con un μP de 8 bits de datos y 16 bits de direcciones y una memoria EPROM de 8 Kbytes, y se desea que el μP lea tres interruptores mapeados a memoria de manera independiente por medio de tres buffers 74HC125 como se muestra en la figura 5.199. EPROM 8K bytes
VCC Interruptores
BUFFER HC125
PB1
LEDs
PB2
OE
PB3
OE
D0-D7
A0-A15
½P RD/ WR/ RST
LATCH 373 LE
OE
=`^liX,%(00 El conjunto de instrucciones de este μP se muestra en la tabla 5.2. Realiza el diagrama del circuito, su mapa de memoria con decodificación parcial y un programa que realice lo siguiente: 1) Si los tres interruptores se encuentran en 1 lógico (presionados), prender un LED verde y apagar el LED rojo vía un Latch 74HC373, 2) solo si uno de los tres interruptores está en 1 lógico prender el LED rojo y apagar el LED verde. De otra manera apagar ambos LEDs.
5.26
Indica las ventajas y desventajas de las interfaces de E/S por programa y por interrupciones.
5.27
Describe cuál es el esquema de interrupción por programa o de polling en un sistema basado en un μP.
5.28
Las instrucciones MOV, transferencia de datos interna y MOVX, transferencia de datos externa (véase tabla 5.2), se asocian con los registros acumulador (ACC) y Apuntador de datos (DPTR) de los ciclos de lectura y escritura de un sistema basado en un μP. Usando el software del CD que acompaña el libro, escribe el número 55H en la dirección 80H de la memoria externa. Posteriormente escriba el número 66H y 77H en las dirección 81H y 82H de la RAM externa, respectivamente. Por último, lee el contenido de la dirección 81H de la memoria externa y almacénalo en el registro acumulador.
grupo editorial patria®
397
5 El popular microcontrolador
5.29
Describe la diferencia entre las arquitecturas Von Neumann y Harvard.
5.30
Indica qué son los DSPs y los DSCs.
5.31
Describe los criterios para seleccionar un microcontrolador.
5.35
La familia de microcontroladores MCS-51tiene una CPU de 8 bits. Enumera sus principales registros de 8 bits de acuerdo con su diagrama de bloques.
5.36
Haz una lista de los registros de funciones especiales asociados a los periféricos internos del 8051. Describe la secuencia del ciclo de instrucción (búsqueda-decodificación-ejecución) para el μC 8051.
5.38
Describe los mapas de memoria que constituyen el μC 8051.
5.39
Describe las opciones que corresponden al mapa de memoria de programa del 8051.
5.40
Describe las opciones que corresponden al mapa de memoria de datos interna del 8051, incluyendo sus modos de direccionamiento y el detalle de la parte baja de memoria (00H-7FH).
5.41
La señal de reset del 8051 debe mantenerse en 1 lógico, por lo menos dos ciclos de máquina, y debe permanecer en 0 lógico durante la operación normal del microcontrolador. Calcula el tiempo en 1 lógico del siguiente circuito de reset.
5 V
100 ohms
RST 8.2 K ohms
=`^liX,%)'' 5.42
Describe a bloques el circuito electrónico de los puertos P1 y P0 del μC 8051.
5.43
Explica la diferencia de sistema de procesamiento no multiplexado de direcciones y datos y un sistema multiplexado de direcciones y datos.
5.44
Realiza el diseño de un sistema basado en el μC 80C31BH, con 16 Kbytes de memoria EPROM y 32 Kbytes de memoria RAM, y se cuenta con memorias EPROM 27C64 y RAM 62C64 de 8 Kbytes. Utiliza decodificación parcial.
5.45
Realiza el diseño de un sistema basado en el μC 80C31BH, con 8 Kbytes de memoria EPROM y tres periféricos mapeados a memoria. Un periférico es de entrada y está formado por un interruptor y buffer de tercer estado 74HC125, y dos periféricos de salida: uno para activar un LED vía un flipflop y el otro para activar una bocina vía un transistor NPN.
5.46
De acuerdo con el circuito y mapa de memoria de la figura 5.201, realiza un programa que lea el arre-
+5V
74LS573 D0 - D7
P0 74LS573
8751 +5V NC
EA PSEN
D
RAM A0 - A7
74LS244
P2.0 P2.1
A8 A9
RD WR
OE W CS
P2.6 P2.7
74LS139
g
dp
d
C000H BFFFH
c
LED de 7 segmentos
Arreglo de interruptores 8000H 7FFFH LED de 7 segmentos
IOE
Arreglo de interruptores
4000H 3FFFH Memoria RAM 0000H
=`^liX,%)'(
398
b
f e
P0.0 : P0.3
A0 IY0 IY1 A1 IY2 IY3
FFFFH
a
LE IOE 220 ohms
LE IOE
ALE
a b c d e f g dp
P0.0 : P0.7
(1K bytes) Q
10 ½ F
Reinicio
Aunque existen μC de 8, 16 y 32 bits, menciona algunas de las razones por las cuales los μC de 8 bits siguen siendo los más usados en sistemas embebidos.
5.34
5.37
5 V
ELECTRÓNICA • MIJAREZ
5 El popular microcontrolador
glo de interruptores, si el valor leído es mayor de 9 en hexadecimal (AH-FH), escribir el número cero en el display de 7 segmentos, y si el valor leído es diferente (0H-9H hexadecimal), escribir el número en el display de 7 segmentos y en la primera localidad de la memoria RAM.
5.47
Diseña un sistema basado en el μC 80C31BH que contenga 4 K de memoria EPROM, y mapeados a memoria: un ADC de 8 bits, un LED vía un flipflop, y dos interruptores: SW1 de encendido y SW2 de fin de ciclo que se conectan a través de un buffer de tres estados (74HC244) como lo ilustra el diagrama a bloques de la figura 5.202.
(4 kg-12 kg), se encienda el LED, y se accione un dispositivo de control de potencia del motor escribiendo el dato 01H-03H dependiendo del ciclo de carga, como se muestra arriba en la tabla; c) cuando se termina el ciclo, el dispositivo de potencia activa a nivel BAJO un pin conectado a través de SW2 y el μC debe apagar el LED.
5.48
ADC 8 F-F
80C31BH
EPROM 8
4
Un sistema basado en el μC AT89C2051 se utiliza en un refrigerador para detectar cuando se abre la puerta. Para esto, utiliza el pin P1.2 para monitorear el estado de un interruptor, el cual normalmente se encuentra en 1 lógico cuando la puerta está cerrada y en 0 lógico cuando esta se abre. Si la puerta permanece abierta más de 15 segundos, el μC genera una señal cuadrada de 800 Hz por el pin P1.3 para activar una bocina. Al momento de cerrar la puerta se reinicia el programa. Realiza el programa.
LED
Control potencia
VCC
30 pF XTAL1
M
4 MHz
VCC 1½ F
XTAL2 2
RST
30 pF
244
P1.3
P1.2 SW1
SW2
AT89C2051
1 K
GND Carga
ADC
Control de potencia
SW1/LED
0 kg
0 V (00H)
00H
OFF
4 kg
2.5 V (40H)
01H
ON
8 kg
7.5 V (C0H)
02H
ON
12 kg
10 V (FFH)
03H
ON
=`^liX,%)') El sistema se emplea en una lavadora electrónica. Si la lavadora acepta ciclos del motor dependiendo de la carga en kilogramos, realiza el sistema electrónico y un programa que cumpla con lo siguiente: a) verifica el interruptor de encendido, SW1, el cual es activo ALTO; b) dependiendo de la carga
=`^liX,%)'* 5.49
Un sistema basado en el μC 80C31BH se usa para controlar un horno de microondas. El sistema requiere 8 Kbytes de memoria EPROM, pero se cuenta con memorias de 2 Kbytes; el resto de los periféricos se mapean a memoria (véase figura 5.204). Realiza el diagrama de conexiones del sistema, y un programa que lea los datos de entrada del teclado (2 dígitos 00-59) y los escriba a un latch, el cual se conecta a un par de decodificadores (BCD a 7 segmentos). El carácter para validar los datos de entrada es la estrella “*” el cual equivale al número 2A en hexadecimal. Una vez validado el dato, se escriben estos dígitos al temporizador, y se enciende la luz del horno, se activa el sistema de potencia y se habilita el temporizador (activo
grupo editorial patria®
399
5 El popular microcontrolador
_ _ Q = (U · (V + W)) + (X · Y) + Z Deco 4
U
Deco 4 Latch
Control potencia
8 EPROM
F-F 8
8212 Interfaz teclado
80C31BH
8
8
LUZ
V W Q X Y
EN Temporizador LE B
2 244
LE almacena dato EN inicia timer (activo ALTO)
Z
U.- P1.1 Fotodetector Puerta
V.- P2.2 W.- TF0 (Registro TCON)
=`^liX,%)'+
X.- IE1 (Registro TCON)
ALTO). Si se abre la puerta, activo BAJO, o al terminar la cuenta el temporizador, bit B\ activo BAJO, se debe apagar la luz del horno y el sistema de potencia.
5.50
5.51
Un sistema basado en un μC 87C51 necesita leer, vía un ADC, un sensor de temperatura LM34. El voltaje de referencia del ADC es de 5 volts y la salida del LM34 es 10 mV/C. ¿Cuál es la mínima resolución que requiere el ADC? Un sistema basado en el μC 87C51 requiere implementar la ecuación lógica de la figura 5.205, en un sistema de control de un proceso industrial. Las variables de entrada y de salida se asocian a pines y bits del microcontrolador como se ilustra en la figura. El μC 8051 provee la flexibilidad para realizar la siguiente ecuación lógica usando diferentes tipos
400
Y.- 20.0H Z.- 20.1H Q.- P3.3 TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
=`^liX,%)',
de instrucciones. A manera de ejercicio mental, realiza el programa de las siguientes formas: a) usando únicamente instrucciones de byte (ANLs ORLs, JZ, JNZ, etc); b) usando solo instrucciones de prueba de bit (JB, JNB, CLR y SETB); y c) usando solo instrucciones de Boole, empleando la bandera CY como acumulador de bit.
ELECTRÓNICA • MIJAREZ