Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Sistemas Electrónicos Basados en Microprocesadores y Microcontroladores (6800 y 68HC11) Bonifacio Martín del Brío Area de Tecnología Electrónica Depto. de Ingeniería Electrónica y Comunicaciones Universidad de Zaragoza Revisión de Abril de 1999 Editorial Prensas Universitarias de Zaragoza (España) ISBN 84-7733-516-8. Puede adquirirse en papel: http://puz.unizar.es/colecciones/21/62-Textos+Docentes%3A+Tecnol%F3gicas.html Prólogo Este texto constituye un curso de introducción al desarrollo de sistemas electrónicos basados en microprocesadores y microcontroladores, tal y como podría impartirse en una asignatura relacionada con la electrónica industrial dentro de una carrera universitaria de tipo técnico. La construcción de sistemas basados en microprocesador involucra tanto el desarrollo del hardware (sistema electrónico) como del software (programa), por lo que un curso donde se estudie este tipo de sistemas debe tratar con suficiente profundidad ambos aspectos. Por ello, y sin dejar de lado los importantes temas de arquitectura y programación, que son tratados en los primeros capítulos (y que suelen ser objeto de asignaturas específicas de mayor contenido informático, como «Arquitectura/Organización de Computadores»), se incidirá aquí de forma muy especial en el empleo del microprocesador como herramienta útil para desempeñar tareas de instrumentación y control, es decir, en las cuestiones relativas al diseño y realización de sistemas microprocesadores, y a su interacción con el exterior (interfacing). Este texto se ha tratado de orientar de manera que se estudien conceptos generales, que puedan aplicarse en la mayor parte de los sistemas microprocesadores existentes en el mercado. No obstante, se requiere seleccionar uno o más microprocesadores reales que ilustren la implementación y manejo práctico de dichos conceptos generales. En este sentido, no nos hemos decantado por microprocesadores típicos de 16 o 32 bits, como el 68000, muy pedagógico, o algún miembro de la omnipresente familia 80x86, sino por microprocesadores mucho más sencillos, de 8 bits, que son los que se siguen empleando en la mayoría de las aplicaciones industriales (en la era de los microprocesadores de 32 y 64 bits, prácticamente la mitad de las unidades vendidas en el mundo siguen siendo de 8 bits). Por otro lado, dentro de la electrónica industrial el tipo de microprocesador más empleado es el microcontrolador, que integra en una única pastilla CPU, memoria, puertos y algunos periféricos, por lo que podríamos estar tentados a limitar nuestro estudio a él; sin embargo, pensamos que de esta manera un alumno sin conocimientos previos (generales) de microprocesadores podría adquirir una perspectiva un tanto sesgada. Creemos necesario en una asignatura de corte generalista que el alumno asimile primero los conceptos fundamentales de los sistemas microprocesadores, para luego presentar y estudiar en profundidad el microcontrolador como un tipo especial de microprocesador que integra en la VIII Microprocesadores y microcontroladores pastilla la mayor parte del sistema, y que está especialmente orientado a tareas de instrumentación y control específicos. Conjugando estas ideas hemos seleccionado un microprocesador y un microcontrolador de la familia 68XX de 8 bits de Motorola. Esta familia, además de ser la líder indiscutible del mercado mundial de los 8 bits, se ha distinguido siempre por su pedagogía, gracias a su arquitectura sencilla y «lineal». Así, emplearemos el clásico M6800 (antecesor del M68000) para ilustrar los conceptos generales relativos al desarrollo de sistemas electrónicos basados en microprocesadores. El 6800 (de la misma época que el 6502, Z80 o 8085), nos permitirá estudiar todos los conceptos fundamentales relativos a la programación, sistema de buses, conexión con periféricos, interrupciones, etc.; gracias a la sencillez de su arquitectura, un alumno sin conocimientos previos de microprocesadores podrá asimilarlo sin dificultad en el muy limitado espacio de tiempo asignado a las actuales asignaturas universitarias cuatrimestrales. Aunque el 6800 nos resultará de utilidad para aprender los conceptos generales sobre microprocesadores, en la práctica el actual profesional de la electrónica en la mayor parte de las ocasiones no construye sistemas basados en el 6800 (ni en el 8085 o el Z80), sino, más bien, en microcontroladores. Por ello, introducidos los conceptos genéricos sobre sistemas microprocesadores, nos centraremos en los microcontroladores. En este caso, emplearemos como ilustración el M68HC11 de Motorola, un potente y bien conocido microcontrolador de 8 bits, utilizado en infinidad de universidades de todo el mundo para la enseñanza y desarrollo de proyectos. El núcleo interno del 68HC11 es un 6800 mejorado, por lo que todo lo aprendido para el 6800 se aplica de forma directa al 68HC11 (en particular, el juego de instrucciones del HC11 es una ampliación del del 6800), con lo que al alumno no le cuesta un esfuerzo adicional su aprendizaje. Por lo tanto, el tándem 6800-68HC11 resulta pedagógico y perfectamente representativo de los sistemas microprocesadores y microcontroladores reales. Además, el 68HC11 no sólo es un potente microcontrolador (de entre los más empleados en el mundo); asimismo resulta una excelente herramienta educativa que permite enseñar una enorme variedad de conceptos, gracias a los numerosos periféricos que integra. Por otro lado, resulta extremadamente sencillo construir un sistema mínimo basado en un 68HC11, y la grabación de un programa de aplicación en su EEPROM interna desde un PC convencional resulta muy simple y no requiere hardware adicional. Como su precio es relativamente asequible, el alumno interesado puede experimentar con él con tan sólo un pequeño desembolso económico (veáse el Apéndice C dedicado al «Kit del 68HC11»). Prólogo IX En definitiva, este libro no es un manual de empleo del microprocesador 6800 o del microcontrolador 68HC11, sino que hace uso de los citados dispositivos para ilustrar los conceptos generales sobre el desarrollo de este tipo de sistemas electrónicos. Por este motivo, no estudiaremos a fondo todos los bloques internos del 68HC11, lo que merecería un libro aparte (de hecho, el manual de referencia del 68HC11 de Motorola [Motorola 91] requiere para ello más de 500 páginas de apretada información). A dicho manual y a libros como [Driscoll 94, Huang 96, Lipovski 88, Miller 93, Spasov 96], que tratan el 68HC11 de forma exclusiva y en profundidad, remitimos al lector interesado. Para concluir, y sin olvidar nuestro objetivo de disponer de un texto para una asignatura generalista sobre microprocesadores, consideramos que resulta también importante no perder de vista los grandes microprocesadores incorporados en los actuales computadores. Por ello, incluimos un capítulo final dedicado al panorama actual del campo de los microprocesadores, centrado en los de altas prestaciones. En él se introducen ideas como las relativas a las arquitecturas CISC y RISC, las unidades segmentadas (pipeline), los sistemas multiprocesador, e incluso dos temas «de moda», como las redes neuronales y los sistemas borrosos. También dedicaremos una sección a los procesadores digitales de señal (DSP), que, aunque inicialmente centrados más en los campos de telecomunicaciones y multimedia, empiezan también a aplicarse en tareas de electrónica industrial (como en el control de máquinas eléctricas). Este último tema no tiene como pretensión que el alumno asimile en su totalidad todos estos conceptos «avanzados»; su intención es meramente informativa, de modo que el interesado podrá profundizar en ellos siguiendo las referencias que se indican. Conocimientos previos Para poder seguir sin problemas este texto se requiere que el lector se desenvuelva con soltura en el campo de la electrónica digital, resultando además de utilidadconocimientos básicos de electrónica analógica. No es necesario disponer de experiencia previa en programación. Este libro representaría la continuación natural de un curso de electrónica digital básica (como sucede en nuestra Escuela). En este sentido, nuestra obra podría considerarse la segunda parte del libro de Tomás Pollán Santamaría titulado Electrónica Digital [Pollán 94], al que en numerosas ocasiones haremos referencia. En [Pollán 94] se introduce al alumno tanto en el diseño lógico como en aspectos más electrónicos, tratándose al final las arquitecturas orientadas a bus, memorias y conversión A/D y D/A; estos conocimientos se darán aquí por Capítulo 1 Introducción y conceptos previos 1.1. Introducción: el ubicuo microprocesador A mediados del presente siglo, tras el desarrollo de la bomba atómica y las centrales nucleares, imperaba la idea de que la humanidad se adentraba en la denominada «Era atómica»; algo más adelante, cuando el hombre pisó por primera vez la Luna, se hablaba de la «Era espacial». Sin embargo, y sin ningún género de duda, nuestra época está resultando ser la Era de la información, debido fundamentalmente a la expansión de la informática y las telecomunicaciones, sustentadas por el enorme desarrollo de las tecnologías electrónicas (a las que se van sumando las ópticas). Para ratificarlo, solamente tenemos que pensar en la radio, la televisión, el teletexto, el vídeo, los satélites de comunicaciones, teléfonos convencionales y móviles, el fax, y, sobre todo, el omnipresente computador, del que cada vez más depende nuestra sociedad (automatización de plantas industriales, control del tráfico por tierra, mar y aire, gestión de las empresas y bancos, Internet, diseño en ingeniería, cálculos científicos, etc.). La electrónica ha sido (y es) el causante y soporte de esta verdadera revolución de nuestra sociedad, pero dentro del campo de la electrónica el microprocesador es con frecuencia el gran protagonista. A este hecho no es ajeno el ciudadano medio, que habla sin problemas de su nuevo flamante Pentium II, o de su MacIntosh con procesador PowerPC. No obstante, la mayor parte de los microprocesadores no residen en los computadores, sino ocultos en cualquier dispositivo electrónico, que el usuario utiliza sin ser consciente de ello. El desarrollo de los microprocesadores (un relativamente reciente invento introducido comercialmente en 1971) ha revolucionado las áreas más importantes de la electrónica. La mayor parte de los instrumentos electrónicos incorporan en la actualidad por lo menos un microprocesador (µP), aunque es habitual que hagan uso de varios de ellos. La electrónica de consumo (audio y vídeo, electrodomésticos) y las telecomunicaciones hacen un insistente uso de microprocesadores; también éstos han permitido que los computadores personales sean económicamente viables. Su impacto está siendo tan importante como lo fueron hace unos años el de las válvulas de vacío, el transistor o el circuito integrado. 2 Microprocesadores y microcontroladores Como vamos a ir viendo poco a poco, el µP es un producto que surge del «matrimonio» de las tecnologías microelectrónicas y de la arquitectura de computadores, y conforme progresa la tecnología de integración se van incorporando a él más y más rasgos, antes solamente incluidos en la estructura de los grandes ordenadores. Los primeros circuitos integrados (CI o chips) comerciales fueron introducidos hacia 1960. Con tan sólo unos cuantos transistores por CI, resultó fácil construir circuitos digitales de propósito general (puertas lógicas, biestables, registros...). En los años siguientes, el número de transistores que podían integrarse en un CI se incrementó rápidamente. Recordemos que los CI suelen clasificarse atendiendo al número de transistores por chip de la siguiente manera: • Integración a pequeña escala o SSI (small-scale integration): hasta 100 transistores por chip. • Integración a media escala o MSI (medium-scale integration): de 100 a 1.000. • Integración a gran escala o LSI (large-scale integration): de 1.000 a 10.000. • Integración a muy alta escala o VLSI (very large-scale integration): 10.000 o más. Mientras que los circuitos integrados SSI (como los correspondientes a biestables) incluyen del orden de 10 o 12 puertas lógicas, la integración MSI hizo posible integrar bloques más complejos, como contadores, registros de desplazamiento, multiplexores, etc. Con la integración LSI se comenzaron a realizar circuitos a medida (custom), específicos para ciertas aplicaciones, como controladores de pantallas de vídeo. Sin embargo, el coste de su desarrollo era muy alto, de modo que su uso se limitaba a aplicaciones de alto volumen de ventas. A finales de los sesenta no estaba claro qué CI estándar LSI compuesto por cientos o miles de puertas podría ser de utilidad tan general que poseyera un mercado amplio (aparte de los chip de memoria). Por la época (1969) la compañía japonesa Busicom (fabricante de calculadoras) encargó a Intel (una nueva compañía del valle del Silicio especializada en la fabricación de memorias) la realización del circuito de control de un nuevo modelo de calculadora de sobremesa. El primer diseño resultó tan complejo que Ted Hoff, ingeniero de Intel, pensó que las minicomputadoras de la época poseían una complejidad similar, pero haciendo uso de una arquitectura mucho más simple. A raíz de ello, Hoff rediseñó completamente el sistema basándose en la estructura de los computadores: existiría un chip que integraría una CPU (Central Processing Unit) sencilla, que ejecutaría un programa de control que se guardaría en una pastilla de memoria ROM, emplearía una RAM Introducción y conceptos previos 3 para almacenamiento de datos y un registro como puerto de entrada/salida. Por lo tanto, el nuevo diseño era un conjunto de cuatro chips, que implementaban al completo la estructura de un computador, de modo que cambiando el programa podría dedicarse a realizar tareas muy diferentes. La realización práctica del sistema de cuatro circuitos integrados fue en gran parte obra de Federico Faggin, en aquella época recién incorporado a Intel. Desde que se contrató a Intel hasta que el diseño resultó operativo pasaron muchos meses, durante los cuales los precios habían caído y el valor del contrato inicial resultaba desorbitado para los parámetros de principios de los setenta, por lo que Busicom pidió a Intel una rebaja en el precio. Intel aceptó a cambio de quedarse con los derechos del conjunto de circuitos integrados construidos, la familia 4000, para poderlos comercializar por su cuenta, a lo cual Busicom accedió sin demasiados problemas. Finalmente, Intel introdujo el chip programable desarrollado, el 4004, en sus catálogos en noviembre de 1971 y comenzó a desarrollar una gran labor de marketing para dar a conocer el nuevo «invento», bautizado como microprocesador, que ellos pensaban les ayudaría a vender memorias, su principal área de negocio entonces. En este punto, es importante hacer notar que aunque realmente implementaba la unidad de procesamiento central o CPU de un computador, Intel no pensó en el 4004 como un bloque para construir computadores (resultaba aún demasiado lento), sino más bien para reemplazar lógica cableada convencional (aquella cuyas conexiones determinan la función). En lógica programada, basada en sistemas microprocesadores, se hace uso de bloques estándar e interconexiones (hardware), pero el programa (software) es el que determina la función. El 4004 y el resto de los primeros microprocesadores, construidos con tecnologías LSI (PMOS), eran tan primitivos y lentos que, aunque resultaban útiles para tareas de control, no podían competir con la potencia de los computadores de la época. No obstante, el avance de las nuevas tecnologías de integración VLSI (NMOS y, algo más adelante, CMOS) y las nuevas arquitecturas lograron prontoconstruir potentes dispositivos de cálculo basados en microprocesadores, los microordenadores y estaciones de trabajo, que poco a poco han ido sustituyendo a muchas de las computadoras tradicionales. 4 Microprocesadores y microcontroladores 1.1.1. El desarrollo de los microprocesadores Antes de proseguir, propondremos la siguiente definición: Definición de microprocesador: componente electrónico que realiza en una única pastilla el procesador (CPU) de una máquina programable de tratamiento de la información. Es decir, el µP es un componente electrónico complejo que incorpora las funciones típicas de todo un computador. La clave del éxito de los microprocesadores como componente electrónico reside en que modificando el programa almacenado en memoria pueden adaptarse a numerosas y diferentes aplicaciones, de manera que en la actualidad, debido a su creciente potencia de cálculo y variedad de funciones integradas, se han convertido en el estándar para la implementación de tareas, tanto de cálculo como de control. De este modo, los microprocesadores no sólo se utilizan para construir potentes computadoras, quizás su aplicación más espectacular y conocida, sino también para la realización de tareas de control en sistemas de aplicación específica (por ejemplo, el control de un horno microondas, un teléfono móvil o unos frenos ABS), sustituyendo circuitería convencional. El espectacular desarrollo de las prestaciones de los µP durante los últimos veinticinco años se ha producido por dos circunstancias, que denominaremos «leyes» de los microprocesadores: a) Ley de Moore: «El número de transistores que pueden integrarse económicamente dentro de un chip se duplica aproximadamente cada 18 meses». Gordon Moore, cofundador de Intel, realizó esta observación ya en los años sesenta cuando trabajaba para Fairchild, y 30 años después todavía se sigue cumpliendo (y parece que continuará por lo menos hasta comienzos del siglo XXI). En este sentido, es interesante hacer notar que el i4004 original (1971) incluía 2300 transistores, mientras que el 80486 (1990) contiene más de un millón y el Pentium (1993) más de tres millones; el reciente Pentium II (1997) incluye ya siete millones. Esta ley se debe a dos circunstancias: por una parte, al aumento de la densidad de integración, causado por la constante disminución en el tamaño del transistor (se suele dar como cifra la anchura de canal, que en la actualidad se sitúa muy por debajo de la media micra); por otra, el constante aumento del tamaño de la propia pastilla. Introducción y conceptos previos 5 4004 8008 8080 8085 8086 80286 386 486 Pentium 100 1000 10000 100000 1000000 10000000 100000000 1970 1975 1980 1985 1990 1995 año transistores FIGURA 1.1. Ilustración de la ley de Moore mediante la familia 80x86 de Intel. El eje de ordenadas se representa en escala logarítmica, por lo que la recta que aparece como tendencia seguida indica en realidad un crecimiento exponencial del número de transistores por chip. b) Ley de los microprocesadores: «Cada buena idea que se ha mostrado eficaz en los ordenadores centrales o miniordenadores se traslada al µP». Lo cual viene a decir que muchos de los logros arquitecturales introducidos para construir grandes computadores, años más tarde, y cuando la tecnología permite integrar más bloques y mayores velocidades de operación, se incorporan en el diseño de microprocesadores de nueva generación. 1.1.2. Aplicaciones de los microprocesadores Los microprocesadores cuentan con múltiples aplicaciones, pertenecientes a dos ámbitos diferentes: por un lado, la construcción de computadoras; por otro, la realización de tareas de control e instrumentación, sustituyendo lógica convencional. En el primer caso (el más conocido para los profanos en la materia) se emplean microprocesadores actuales de nueva generación, optimizados para la realización de tratamiento de datos. Por ejemplo, los µP de las series Alpha de Digital, o PowerPC de Motorola e IBM, se emplean en la realización de poderosos computadores denominados estaciones de trabajo, que están orientadas al cálculo científico y diseño en ingeniería. Otros, como el Pentium de Intel, se orientan más bien al desarrollo de ordenadores personales, cuyas prestaciones, no obstante, son comparables a las de los grandes ordenadores de hace unos pocos 6 Microprocesadores y microcontroladores años, pero a un precio asequible al ciudadano medio (aunque Intel fabrica ya microprocesadores muy potentes destinados también al nicho de mercado de los servidores y estaciones de trabajo, como el Pentium II Xeon o el futuro Merced). FIGURA 1.2. Algunos campos de aplicación de los microprocesadores. En el segundo caso suelen emplearse microcontroladores, microprocesadores especiales, generalmente de menores prestaciones de cálculo, pues están optimizados para tareas de control (entendido en un sentido amplio), con numerosos dispositivos integrados en una única pastilla, como memoria, puertos de entrada/salida o diversos periféricos. Éstos se emplean en el desarrollo de sistemas industriales (por ejemplo, robótica, autómatas programables o tarjetas de control industrial), aplicaciones de consumo (como lavadoras, hornos microondas, audio y vídeo, cámaras fotográficas o videojuegos), telecomunicaciones (como teléfonos móviles), automoción (frenos ABS, inyección electrónica, ordenador de a bordo, etc.). La sustitución de lógica convencional por microcontroladores permite reducir el tamaño de los diseños, disminuir el tiempo de desarrollo y también el coste final del producto. La consecuencia es que estos microprocesadores especiales se aplican a ámbitos considerados no rentables con Introducción y conceptos previos 7 anterioridad, e impensables hasta hace poco tiempo. Por ejemplo, en un automóvil moderno pueden encontrarse del orden de quince microprocesadores realizando distintas tareas. Como dato curioso podemos decir que las impresoras láser actuales, al incluir potentes microprocesadores RISC de 32 bits, encierran una potencia de cálculo superior a la de los PC de hace unos pocos años. En resumen, el ciudadano medio puede emplear, sin él mismo saberlo, del orden de una docena de µP al día (lo que se suele denominar computación oculta). 1.1.3. Ventajas del uso de microprocesadores Las ventajas del uso de microprocesadores en el diseño de sistemas digitales, sustituyendo lógica convencional, son las siguientes: a) Reducción del número de componentes, lo que conlleva la miniaturización del sistema, reducción de consumo y aumento de fiabilidad. b) Programabilidad, que permite la simplificación del diseño y reducción del tiempo de desarrollo. c) Disminución de costes, causado por los aspectos descritos en los puntos a) y b), y por la fabricación de series de muchas unidades de un mismo µP, pues podrá aplicarse a muchos diferentes problemas sin más que reprogramarlo. FIGURA 1.3. Algunas aplicaciones de los microprocesadores en el automóvil. 8 Microprocesadores y microcontroladores 1.2. Sistemas electrónicos industriales Introducida la figura del microprocesador, centraremos a continuación las principales ideas que guiarán el presente texto. Observemos la fig. 1.4: en ella se muestra el esquema genérico de un sistema electrónico industrial, cuyo objetivo es la monitorización y control por procedimientos electrónicos de un determinado sistema exterior, como pueda ser una máquina, proceso o incluso toda una planta industrial. Supongamos a modo de ejemplo que se trata de supervisar y controlar una máquina industrial. El sistema electrónico que se requiere puede ser dividido en tres módulos. El primero es el subsistema de adquisición de datos, esencialmente de tipo analógico, compuesto por: un conjunto de sensores, que detectan el estado de la máquina; circuitería de acondicionamiento de señal, que amplifica y adapta la señal para su posteriortratamiento; por último, etapa de conversión A/D, encargada de transformar las señales analógicas en valores digitales. El segundo módulo es el sistema digital de procesamiento, que se ocupa de tomar los valores digitalizados de las señales (así como las señales puramente digitales que pueden existir), procesarlas, presentarlas al exterior o registrarlas y, posteriormente, enviar las órdenes de las acciones a realizar sobre la máquina controlada. Finalmente, el tercero bloque es el subsistema de actuación, encargado de convertir las señales digitales de control en valores analógicos y actuar sobre la máquina. En este esquema pueden contemplarse distintas disciplinas electrónicas del campo de la electrónica industrial: electrónica analógica e instrumentación electrónica, especialmente en las etapas más directamente conectadas con el exterior; electrónica de potencia, esencialmente en la etapa de actuación sobre el exterior, y en las fuentes de alimentación; electrónica digital, especialmente en el sistema microprocesador. Además, también pueden considerarse las siguientes disciplinas relacionadas con la electrónica industrial: regulación de máquinas eléctricas, regulación automática (control), informática y computadores. El esquema propuesto para lo que hemos denominado sistema electrónico industrial en realidad representa un sistema electrónico genérico, que puede ser aplicado a numerosas situaciones diferentes, como un pequeño termostato electrónico, un sistema de frenado ABS, una máquina expendedora de refrescos, una lavadora, el automatismo de control de una granja o incluso el control de toda una planta industrial. En estos casos, el control digital se realiza con microprocesador, aunque, en ocasiones, éste puede estar incluido dentro de un autómata programable (PLC) o de un ordenador. Por ejemplo, en el caso de la planta industrial, una serie de autómatas programables (PLC) recogen señales y Introducción y conceptos previos 9 controlan maquinaria, siendo todos ellos monitorizados por un ordenador PC a través de líneas de transmisión de datos en serie. Otro ejemplo es el de la fig. 1.5, en el que se muestra de forma detallada el esquema de una tarjeta de adquisición de datos típica, que puede emplearse en la industria, en un laboratorio de medida y test, o en un laboratorio científico. Este esquema es en realidad una versión detallada del subsistema de adquisición de datos de la fig. 1.4, en el que se especifican algunos de los módulos incluidos en el bloque de acondicionamiento: amplificador, filtro pasa baja y etapa de muestreo y mantenimiento (sample and hold, S&H). Acondicionador Procesamiento Digital (mP) Acondicionador Procesamiento Digital (mP)C. A/D Acondicionador Procesamiento Digital (µC, DSP) Proceso Transmisión de datos Acondicionador Procesamiento Digital (mP)C. D/A Acondicionador/ Potencia Procesamiento Digital (µC, DSP) Actuador/ Carga Acondicionador Transmisión de datos Procesamiento Digital (µP, µC, DSP, computador) Sensor Información Actuación Fuente de energía Subsistema de Actuación Subsistema de Adquisición de Datos FIGURA 1.4. Diagrama de bloques de un sistema electrónico industrial o genérico. 10 Microprocesadores y microcontroladores FIGURA 1.5. Diagrama de bloques de un sistema de adquisición de datos. La lógica de control a menudo se implementa mediante algún tipo de microprocesador. 1.3. Sistemas programables: la arquitectura von Neumann De lo expuesto podemos deducir que el microprocesador, además de ser el componente central de los computadores actuales, también constituye el elemento básico empleado en la realización de sistemas electrónicos industriales, aparatos de consumo, telecomunicaciones, etc., desempeñando tareas que podemos denominar de instrumentación y control. Va a ser precisamente el punto de vista del microprocesador como elemento que sustituye lógica convencional el que a nosotros más nos va a interesar en adelante. 1.3.1. Sistemas electrónicos complejos. Diseño descendente De los subsistemas incluidos en un sistema electrónico industrial (fig. 1.4), nos centraremos en el bloque de procesamiento. Se trata de un sistema digital de alta complejidad, cuyo papel principal es llevar a cabo el tratamiento del conjunto de datos procedentes del exterior (sistema bajo control). Es decir, podemos considerar este gran bloque digital como un procesador, que deberá incluir cierta cantidad de memoria (conjunto de registros) para el almacenamiento de datos. Introducción y conceptos previos 11 Supongamos que debemos realizar el sistema digital que constituye dicho procesador, el cual se tratará de un sistema electrónico de elevada complejidad. Para abordar un diseño de este tipo, se hace necesario emplear una metodología que ayude a manejar dicha complejidad (debe tenerse en cuenta que las tecnologías microelectrónicas permiten en la actualidad construir sistemas compuestos por millones de transistores). La metodología que permite manejar dicha complejidad se denomina diseño descendente (top-down), consistente en dividir el diseño de alto nivel en partes más pequeñas («divide y vencerás»), para posteriormente abordar por separado el diseño interno de cada una de ellas. En el caso que nos ocupa, el procesador queda dividido en una parte operativa y una parte de control (fig. 1.6). La parte operativa, o unidad de procesamiento, contiene el conjunto de recursos operativos que el procesador requiere. Así, suele incluir un conjunto de registros para almacenamiento de datos y resultados, biestables que indican ciertas condiciones que pueden darse, contadores, y multiplexores que permiten seleccionar entre diferentes rutas de datos o registros. La unidad de procesamiento con frecuencia incluirá además una unidad lógico-aritmética (ALU) de propósito más o menos general, dependiendo de la aplicación. FIGURA 1.6. Esquema de los grandes bloques que componen un procesador digital genérico. 12 Microprocesadores y microcontroladores FIGURA 1.7. Componentes esenciales de la unidad de procesamiento. Por otro lado, la parte de control (o unidad de control) establecerá la secuencia de pasos que el procesador debe llevar a cabo en cada momento, controlando, entre otros, los elementos de la parte operativa. La unidad de control puede sintetizarse a partir de la máquina de estados del sistema, haciendo uso para ello de los métodos generales de los sistemas secuenciales (ver, p.e., [Pollán 94]); no obstante, debe tenerse en cuenta que este procedimiento puede en ocasiones resultar difícil de llevar a la práctica a causa de la complejidad del sistema a diseñar. Debido a que esta máquina de estados representa la transcripción directa del algoritmo de control de la máquina, que suele consistir en una serie de estados sucesivos y saltos condicionales, recibe el nombre de máquina algorítmica. Una ampliación de los conceptos aquí expuestos, junto al proceso de diseño de un sistema digital complejo, puede encontrarse en el capítulo XIV del libro Electrónica Digital, de Tomás Pollán [Pollán 94] (allí se presenta como ilustración el ejemplo de un multiplicador de números binarios de 64 bits). 1.3.2. Máquinas gobernadas por programa (programables). Arquitectura von Neumann Por lo tanto, denominaremos máquinas algorítmicas o de tratamiento de información a aquellas máquinas que implementan un algoritmo. En ellas, además de la parte operativa o unidad de procesamiento (UP), y de la de control o unidad de control (UC), se considera un tercer subsistema adicional, el de entradas y salidas (E/S), encargado de recibir y enviar datos desde y hacia el exterior. Introducción y conceptos previos 13 FIGURA 1.8. Estructura básica de una máquina de tratamiento de la información (tanto específica como programable). En este punto es importante distinguir entre máquinas específicas y máquinas de propósito general. Lasmáquinas específicas se diseñan expresamente para resolver un problema determinado y concreto (por ejemplo, un sistema que multiplique dos números binarios de 64 bits). Por otra parte, las máquinas de propósito general se diseñan para que puedan resolver muchos tipos diferentes de problemas, sin más que adaptarlas a cada caso particular. Tanto unas como otras responden al mismo esquema genérico descrito: UP + UC + E/S. La que se considera primera computadora electrónica de la historia, Colossus, desarrollada por el gobierno británico para descifrar las órdenes enviadas por radio a los submarinos alemanes durante la segunda guerra mundial, es un ejemplo de máquina específica. Por otra parte, el famoso ENIAC, empleado por los americanos en el desarrollo de la bomba atómica y en el cálculo de trayectorias balísticas, es un ejemplo de máquina de propósito general (véase el apéndice al final del capítulo). Efectivamente, algunas de las primeras computadoras electrónicas de propósito general de los años cuarenta, como ENIAC, podían realizar diferentes tareas organizando miles de interruptores de posición múltiple y conectando una enorme cantidad de enchufes con una maraña de cables (como en las antiguas centralitas telefónicas). Estas máquinas eran «programables», en el sentido de que podían cambiar su funcionalidad, pero ello requería cambios en el propio hardware de la máquina (conexiones físicas reales) que resultaban complejos, tediosos y lentos. Con posterioridad se propuso un procedimiento que permitiese cambiar la funcionalidad de la máquina y que resultase más eficiente (sencilla y rápida) que tener que modificar una maraña de conexiones: establecer la operación de la máquina (los pasos y operaciones que debía llevar a cabo) mediante unos 14 Microprocesadores y microcontroladores contenidos almacenados en una determinada zona de su memoria, los cuales representan la secuencia de instrucciones que deberá ejecutar, lo que constituye el programa. Este tipo de máquina de propósito general que ejecuta un programa almacenado en memoria se denomina máquina controlada por programa o programable. De esta manera puede disponerse de una máquina de propósito general, cuya función puede ser cambiada sin más que modificar los contenidos de una zona de memoria (programación), lo cual resulta mucho más sencillo que modificar su propia estructura de conexiones. Así, en una máquina gobernada por programa la UP (compuesta por una unidad lógico-aritmética, o ALU, y por registros de almacenamiento de datos) es de propósito general, mientras que la UC es un órgano encargado de leer el programa que se guarda en memoria, interpretarlo y ejecutarlo. Las instrucciones que componen el programa se codifican en binario, de manera que cada instrucción (por ejemplo, «Sumar A y B») viene definida por un conjunto de bits denominado código de operación o, abreviadamente, opcode (operation code). El programa, es decir, la secuencia de códigos de operación binarios, se almacena en la memoria. Si, dado el esquema de máquina programable anterior, compuesta por UP, UC y E/S, consideramos el conjunto de la memoria como un elemento adicional diferenciado, la memoria central o principal (dentro de la cual almacenamos el programa y los datos), obtendremos la denominada arquitectura von Neumann. Por otra parte, el conjunto de UP y UC constituye el procesador o CPU (Central Processing Unit, unidad de procesamiento central). El nombre de arquitectura von Neumann procede del matemático de origen húngaro John von Neumann, que ya había participado activamente en el desarrollo de diversas computadoras electrónicas. A von Neumann se le ocurrió la idea de representar el programa en forma digital en la memoria de la computadora (como ya se hacía con los datos), y además propuso sustituir la aritmética decimal empleada en el ENIAC (con cada dígito representado por diez válvulas, una encendida y nueve apagadas) por la aritmética binaria paralela, más eficaz. Estas ideas sentaron las bases de las máquinas de cómputo modernas: desde las máquinas EDSAC e IAS (finales de los años cuarenta y principios de los cincuenta, véase el apéndice), la mayoría de los computadores siguen este esquema (o alguna variante). Introducción y conceptos previos 15 FIGURA 1.9. Máquina de von Neumann En resumen, se considera la arquitectura von Neumann compuesta por los siguientes cinco elementos básicos: a) Dispositivos de entrada, como el teclado. Sirven para introducir en memoria instrucciones y datos. b) Memoria. Almacena tanto el programa como los datos. c) Unidad de control. Decodifica las instrucciones y genera las señales necesarias para que la unidad de procesamiento y el resto de los elementos del sistema cumplan las tareas encomendadas. d) Unidad de procesamiento. Realiza las operaciones lógicas y aritméticas. Incluye una ALU y registros. e) Dispositivos de salida, como la pantalla o la impresora. Presentan los resultados. En el proceso de ejecución de instrucciones la máquina debe realizar dos fases fundamentales: la de búsqueda y decodificación, en la que la unidad de control toma una instrucción de memoria y la decodifica, y la de ejecución, en la que la unidad de control ejecuta la instrucción, enviando las señales pertinentes a la UP y al sistema de E/S. En resumen, la importancia conceptual de la arquitectura von Neumann reside en que puede disponerse de una máquina de procesamiento completamente general, la cual, sin más que cambiar el programa que almacena en su memoria, 16 Microprocesadores y microcontroladores puede desempeñar distintas funciones (desde realizar declaraciones de la renta a editar textos, controlar una lavadora o implementar un juego de marcianos). 1.4. Microprocesadores y microcontroladores Una vez estudiado el concepto de máquina programable y de arquitectura von Neumann, recordemos la definición de microprocesador propuesta con anterioridad: Microprocesador: componente electrónico que realiza en una única pastilla el procesador (CPU) de una máquina programable de tratamiento de la información. Por lo tanto, el microprocesador no es otra cosa que la integración electrónica (normalmente VLSI) en una única pastilla de toda la CPU de una máquina programable. Es decir, el µP incluye en un solo chip dos de las partes constituyentes de la arquitectura von Neumann, la UC y la UP (ver fig. 1.10a). Más aún, gracias al aumento en la capacidad de integración se han podido introducir más elementos de la estructura von Neumann dentro de un único circuito. Así, algunos microprocesadores convencionales incluyen también en el mismo chip cierta cantidad de memoria (por ejemplo, la memoria caché), controladores de DMA (que forma parte del subsistema de E/S) y otros elementos Por otra parte, un tipo de microprocesador denominado microcontrolador (µC) o microcomputador en una única pastilla (single-chip computer), incorpora la totalidad de la estructura von Neumann en su interior (fig. 1.10b), pues, además de la CPU (UC más UP), integra en el mismo chip cierta cantidad de memoria (ROM, RAM, EPROM...) y diversos elementos del subsistema de E/S, como puertos y dispositivos periféricos (contadores, temporizadores, conversores A/D, etc.). De este modo, los microcontroladores permiten incorporar la práctica totalidad de un sistema computador en un espacio muy reducido, por lo que se emplean en la construcción de sistemas específicos, en los que el espacio ocupado, consumo y precio deben ser mínimos. Por su importancia en los campos relacionados con la electrónica industrial y de consumo, el microcontrolador será uno de los objetos de estudio centrales en este curso (por ejemplo, para construir el control de una lavadora automática se recurre a un microcontrolador, en vez de a un microprocesador convencional). Introducción y conceptos previos 17 FIGURA 1.10. Microprocesador y microcontrolador.1.4.1. Clasificación de los microprocesadores Según su propósito, podemos distinguir: 1) µP de propósito general. Válidos para múltiples tareas diferentes de tratamiento de la información. Son los que se emplean fundamentalmente para construir computadores o máquinas de propósito general (editar, realizar cálculos, diseñar, etc.). 2) µP de propósito específico. Son los que se programan para llevar a cabo una tarea o aplicación específica, es decir, se programan una sola vez y después siempre ejecutan el mismo programa, que se guarda en ROM. Un caso ya conocido es el microcontrolador, cuyo diseño está orientado al control de dispositivos, como su nombre indica (por ejemplo, los frenos ABS de un automóvil están controlados por un µC, que siempre ejecuta el mismo programa). Otro ejemplo es el de los procesadores digitales de señal (DSP), diseñados para multimedia y telecomunicaciones. En resumen, los µP de propósito general se utilizan esencialmente para construir computadores, y los de propósito específico para llevar a cabo siempre una misma tarea repetitiva, que de otro modo tendría que realizarse mediante un sistema electrónico cableado, en general mucho más complejo y caro. Por otra parte, podemos clasificar los µP atendiendo a una característica que describiremos como número de bits, con la que denotaremos el tamaño (en bits) de los datos que un microprocesador es capaz de procesar en paralelo (a la vez), número que suele coincidir con la anchura del bus de datos y con el tamaño de los 18 Microprocesadores y microcontroladores datos con los que opera su ALU. Así, se habla de µP de 4, 8, 16, 32 o 64 bits. Generalmente, un mayor número de bits indica un µP más potente, pues es capaz de procesar más cantidad de información a la vez, pero también resultará más complejo y caro. Por ello, para cada aplicación particular debe elegirse el mP que mejor se adapte a ella, es decir, con mejor relación prestaciones/precio. Los µP también pueden clasificarse por el número de instrucciones que incorporan en su repertorio. Así, se distingue entre microprocesadores CISC y RISC: a) CISC (Complex Instruction Set Computer). Computadores de extenso (amplio) conjunto de instrucciones, es decir, aquellos µP que incluyen muchas instrucciones diferentes (del orden de cien). El ejemplo clásico es la familia Intel 80x86. b) RISC (Reduced Instruction Set Computer). Son las máquinas de conjunto de instrucciones reducido, es decir, incluyen relativamente pocas instrucciones en su repertorio (del orden de treinta). Ejemplos de ello son las familias Alpha, SPARC y PowerPC. La distinción únicamente en cuanto al número de instrucciones que un µP incorpora no permite apreciar a primera vista la gran trascendencia que conlleva, que ha sido causa de una dura batalla en el estilo de diseño de µP en los últimos años. Aunque uno pueda pensar que un microprocesador será más potente si incorpora muchas más instrucciones, la tendencia actual parece mostrar lo contrario. Profundizaremos en esta cuestión mucho más adelante en el curso. 1.4.2. Importancia e interés de los microprocesadores ¿Por qué, pese a la complejidad de diseño e implementación de un µP (que puede integrar millones de transistores), su coste resulta relativamente reducido? Debido al carácter general del µP, en muchos casos no es necesario diseñar hardware especial para cada aplicación, sino que puede utilizarse un µP estándar, que será programado para la aplicación específica. Por esta razón muchísimos sistemas diferentes pueden utilizar un mismo tipo de circuito, lo que permite su fabricación en grandes cantidades, de lo que se deriva un coste por unidad muy reducido (existen µP cuyo coste es inferior a las cien pesetas si se compran miles de ejemplares). De este modo, la utilización de un µP puede suponer una alta reducción en el coste del sistema, además de una importante disminución de tiempo de diseño. Introducción y conceptos previos 19 Por otro lado, la funcionalidad del circuito cambia al modificar el programa, por lo que pueden introducirse cambios en la actuación del sistema con relativa facilidad, reprogramando el microprocesador, lo cual implica que el µP permite introducir cierta flexibilidad en los sistemas. En el curso estudiaremos el µP desde dos puntos de vista: a) Como componente electrónico. Se trata de un componente algo peculiar, pues posee un aspecto hardware y otro software o de programación. b) Como ladrillo básico en la construcción de sistemas de procesamiento de datos (computadores), o de control (sistemas específicos), que sustituye a sistemas cableados. 1.5. Apéndice. Breve historia de las máquinas de cálculo En este apéndice vamos a exponer brevemente los hitos fundamentales en el desarrollo de máquinas de cálculo (o, en general, de procesamiento), que llevaron finalmente a la introducción del microprocesador a comienzos de los años setenta. Para realizar este apéndice hemos seguido en buena parte el conocido texto de [Tanenbaum 92], aunque el de [Stallings 87] es también muy recomendable. Por otro lado, el libro de [Malone 96] resulta una interesante y amena historia de los microprocesadores. Como es habitual, dividiremos la historia del desarrollo de máquinas de cálculo en generaciones, cada una de las cuales se caracteriza por la tecnología empleada (elementos mecánicos, electromecánicos, válvulas, transistores o circuitos integrados). 1.5.1. Generación 0. Computadoras mecánicas y electromecánicas (1642-1945) El ser humano ha sentido la necesidad de realizar cálculos desde los mismos albores de la civilización. Uno de los primeros instrumentos de los que se valió fue el ábaco (un marco rectangular de madera con cuentas insertadas en ejes colocados transversalmente), probablemente inventado en Babilonia hace unos cinco mil años. Durante muchos siglos el ábaco ha sido el calculador más empleado, siendo desbancado tan sólo en las últimas décadas con la introducción masiva en el mercado de las calculadoras electrónicas de bolsillo. Aunque este tipo de instrumento de cálculo puede considerarse parte de la prehistoria de la computación, todavía se emplea en algunos lugares del mundo, como Rusia y China (en un documental recientemente emitido en la televisión se observaba 20 Microprocesadores y microcontroladores cómo en una estación del ferrocarril en China el expendedor de billetes empleaba un ábaco para calcular los importes y cambios). Precursores más directos de las actuales computadoras son las calculadoras mecánicas realizadas mediante ejes y engranajes realizadas a partir del siglo XVII La primera de ellas fue la calculadora del filósofo y matemático francés Blaise Pascal, que era capaz de realizar sumas y restas. Pascal (en cuyo honor se bautizó el conocido lenguaje de programación) la construyó en 1642, cuando contaba con tan sólo 19 años, para ayudar a su padre, recaudador de impuestos. Se trataba de un aparato construido con engranajes y accionado con una manivela. Unos treinta años más tarde, el alemán Gottfried Leibnitz (1671) construyó otra calculadora, esta vez con capacidad de multiplicar y dividir. El siguiente gran hito sucede a finales del siglo XVIII, pero en este caso dentro del muy incipiente campo del «control industrial». Por esta época, la confección de tejidos con dibujos era un proceso manual, tedioso y sujeto a errores. Hacia 1750 se extiende la costumbre de perforar códigos en tarjetas, que especificaban los patrones a representar en el tejido, y que el obrero (con frecuencia un niño) debía interpretar. La lentitud del proceso y los errores de interpretación hicieron que no mucho más tarde el proceso fuese automatizado, de modo que las tarjetas perforadas eran introducidas en la propia máquina de tejer, que ella misma interpretaba y ejecutaba. El último paso lo da Joseph Jacquard (1801), al construir un telar completamente automático, enteramente controladopor estas tarjetas perforadas, y cuya energía era suministrada por una máquina de vapor. La presencia o ausencia de agujero en determinado lugar de la tarjeta implicaba el movimiento o no de determinadas partes de la máquina, para así crear el patrón deseado. Es decir, el telar de Jacquard era una máquina controlada por programa, el cual era suministrado en la forma de una pila de tarjetas perforadas, lo que inspiró una manera de introducir datos y programas a las máquinas que sería ampliamente empleada hasta épocas recientes. Ya a mitad del siglo XIX Charles Babbage (1793-1871), profesor de matemáticas en la Universidad de Cambridge, proyecta una serie de computadoras mecánicas. Por aquella época se disponía de tablas numéricas para cálculo matemático (funciones trigonométricas, logarítmicas, etc.), tablas para la navegación, etc., cuyos valores numéricos eran calculados por seres humanos y transcritos a papel. En ellas, lógicamente, aparecían muchos errores, cuyas consecuencias podían resultar graves, por lo que Babbage decidió construir una máquina capaz de generar e imprimir dichas tablas automáticamente. Introducción y conceptos previos 21 FIGURA 1.11. Calculadora de Pascal. Grabado y fotografía. La primera de ellas, la denominada máquina diferencial (proyectada hacia 1833), realizaba un algoritmo denominado método de las diferencias finitas, capaz de calcular valores de polinomios simplemente mediante el empleo de sumas y restas, y cuyos resultados eran ofrecidos perforando con un troquel de acero sobre un plato de cobre. Se trataba, por lo tanto, de una máquina de propósito específico. Esta máquina solamente pudo realizarse en parte, debido a diversos problemas, más económicos y de gestión que tecnológicos (Babbage invirtió buena parte de su tiempo y fortuna familiar en sus proyectos, que, dada su gran magnitud, precisaron también de la financiación de la corona británica, la cual fue años después retirada debido a lo dilatado del proyecto). Más adelante, Babbage proyectó una segunda máquina diferencial, versión mejorada y de menores dimensiones que la primera, que no llegó a construir. Esta máquina fue realizada en 1991 por el Museo de Ciencias de Londres, en la conmemoración del bicentenario del nacimiento de Babbage, haciendo uso de elementos mecánicos construidos con la misma precisión que Babbage pudo disponer en su época. Para que la máquina funcionase perfectamente solamente fueron precisas mínimas correcciones sobre el proyecto original de Babbage. El ingenio construido mide dos metros de altura y tres de longitud, consta de 4.000 22 Microprocesadores y microcontroladores piezas y pesa tres toneladas; para su confección se invirtieron nada menos que 600.000 dólares. Cabe señalar que, si la primera máquina de diferencias se hubiese construido al completo, habría ocupado la superficie de un campo de fútbol y debería haber sido impulsada mediante una máquina de vapor. FIGURA 1.12. Charles Babbage y proyecto de máquina de diferencias. Babbage también proyectó una computadora de propósito general, que denominó máquina analítica. Ésta se dividía en cuatro partes: el almacén (memoria), el taller (unidad de cálculo, capaz de realizar las cuatro operaciones básicas), la sección de entrada (una lectora de tarjetas perforadas) y la de salida (perforadas e impresas). La máquina leería las instrucciones perforadas en tarjetas y luego las ejecutaría; todo este esquema recuerda poderosamente a los modernos computadores electrónicos. Ada Lovelace, hija de Lord Byron y consejera de Babbage en este proyecto, sugirió que las instrucciones escritas en un rudimentario lenguaje ensamblador podrían enviarse a la máquina mediante tarjetas perforadas, por lo que algunos la consideran la precursora de los actuales programadores (en su honor se ha bautizado el moderno lenguaje Ada). Babbage es considerado, con todo merecimiento, el «abuelo» de la moderna computación; Introducción y conceptos previos 23 por otra parte, la figura de Ada está envuelta en un halo de misterio (quizás fruto de la época romántica en la que vivió). Al parecer, buena parte de las descripciones de la máquina analítica no proceden de Babbage sino de Ada, quien pudo transcribir sus ideas. FIGURA 1.13. Máquina de diferencias construida en 1991 por el Museo de Ciencias de Londres, en la conmemoración del bicentenario del nacimiento de Babbage. Ya en los años treinta del presente siglo el alemán Konrad Zuse, estudiante de ingeniería, y al parecer sin disponer de conocimiento previo sobre los trabajos de Babbage, construyó las primeras máquinas electromecánicas de cálculo (haciendo amplio uso de relés). Buena parte de ellas fueron destruidas por el bombardeo aliado sobre Berlín en 1944, y, aunque con posterioridad algunas fueron instaladas en Europa, su trabajo no tuvo repercusión en el futuro, siendo éste reconocido en sus justos términos muchos años después. J. Astanasoff y C. Berry, físicos de la Universidad de Iowa, construyeron también en los años treinta una máquina sorprendentemente avanzada para su época, el ABC (Astanasoff-Berry Computer, 1939), en la que introdujeron técnicas que serían implementadas en las computadoras posteriores, como el empleo de aritmética binaria o un tipo de memoria basada en un tambor de condensadores que debían ser refrescados periódicamente, precursores de las actuales memorias dinámicas. El ABC permaneció en el olvido durante mucho 24 Microprocesadores y microcontroladores tiempo, saliendo a la luz en los últimos años por un problema sobre la propiedad de la patente original del computador. A raíz de ello, una sentencia judicial en Estados Unidos estableció en los años setenta que el primer computador de las historia con derecho a patente no es ENIAC (del que hablaremos más adelante), como hasta entonces se daba por sentado, sino precisamente la máquina de Astanasoff, de la que John Mauchley (uno de los autores de ENIAC) se comprobó que tomó muchas ideas. La última computadora mecánica a la que haremos referencia es el Mark I, construida por Howard Aitken, la cual se concluyó en Harvard en 1944, siendo la primera computadora de propósito general desarrollada en Estados Unidos. Aitken construyó con relés lo que Babbage proyectó con ruedas dentadas, alcanzando su máquina unas dimensiones finales de 17 metros de largo y 2,5 de altura. Más adelante Aitken construyó la Mark II, pero cuando la concluyó las computadoras electromecánicas eran ya obsoletas, pues había comenzado la era de la electrónica. 1.5.2. Generación 1. Válvulas electrónicas (1945-1955) La segunda guerra mundial supuso un enorme impulso en el desarrollo de las computadoras electrónicas, basadas en válvulas electrónicas, como el triodo (inventado en 1906). Las válvulas tenían como ventaja frente a los relés y engranajes la ausencia de partes móviles (cuya inercia limitaba la velocidad de proceso), así como un menor tamaño y mayor fiabilidad. Los dispositivos construidos con válvulas resultaban así más rápidos, fiables y baratos. La primera computadora electrónica (aunque de propósito específico) fue Colossus, desarrollada por el ejército británico. Durante la segunda guerra Mundial los submarinos alemanes representaban una gran amenaza para los barcos británicos; las órdenes del almirantazgo alemán eran enviadas por radio desde Berlín, pero codificadas por medio de una máquina denominada Enigma. La inteligencia polaca consiguió robar una máquina Enigma a los alemanes, y de ellos pasó a los británicos, con lo que éstos descubrieron la manera como los alemanes codificaban los mensajes. El problema era que para descifrar el código se necesitaba realizar una enorme cantidad de cálculos en muy corto espacio de tiempo, para lo que se construyó Colossus (1943), en cuyo diseño participó el matemático Alan Turing, que ya hacia 1937 había sentado las bases teóricas de la computación.Por su parte, el ejército americano necesitaba calcular tablas de tiro para apuntar su artillería pesada (¡solamente el 20% de las bombas caían en un rango de 300 metros del objetivo!). John Mauchley, profesor de física de la Universidad Introducción y conceptos previos 25 de Pensilvania, y conocedor del trabajo de Astanasoff, propuso al ejército el desarrollo de una computadora electrónica, la cual fue aceptada en 1943. Así, Mauchley, junto con su alumno P. Eckert, construyeron la primera computadora electrónica de propósito general del mundo, ENIAC (Electrical Numerical Integrator And Computer). ENIAC constaba de 18.000 válvulas, 1.500 relés, pesaba 30 toneladas, consumía 140 kW y ocupaba 1.400 metros cuadrados. Su construcción se concluyó completamente en 1946, aunque ya antes fue empleada en la realización de cálculos que llevaron al desarrollo de la bomba atómica. ENIAC operaba con aritmética decimal y su programación se realizaba mediante interruptores y conectando y desconectando cables (como en las antiguas centralitas telefónicas), lo cual resultaba extremadamente tedioso e incómodo. En 1945 John von Neumann, consciente de los problemas de la programación del ENIAC, publica la idea de controlar los procesos a ejecutar por la computadora mediante un programa almacenado en memoria (idea, al parecer, desarrollada más o menos a la vez por Turing), en una propuesta para el proyecto de una nueva máquina, EDVAC (Electronic Discrete Variable Computer). Mauchley y Eckert comienzan su desarrollo, pero éste queda finalmente truncado. En 1949 Maurice Wilkes concluye el EDSAC, construido tomando como base la misma idea, por lo que resultó ser la primera máquina operativa que funcionaba controlada por programa almacenado. En 1946 von Neumann y sus colegas comenzaron en el Instituto de Estudios Avanzados de Princeton el desarrollo de otra máquina controlada por programa almacenado, la IAS, su propia versión del EDVAC. Aunque no fue completado hasta 1952, IAS representa el prototipo de todos los ordenadores de propósito general posteriores. Por su parte, Eckert y Mauchley emprenden una actividad empresarial construyendo la primera de una serie de computadoras, el UNIVAC I (1951), el primer ordenador electrónico de gran éxito comercial, inaugurando así la era comercial de las computadoras. Mientras tanto, la International Business Machines Corporation, más conocida por sus siglas, IBM (por entonces pequeña empresa dedicada a la fabricación de máquinas lectoras de tarjetas perforadas y clasificadoras, y que ya aportó parte de la financiación de las máquinas de Aitken), construye sus primeras computadoras, las IBM 701 (1953) y 704. La 709 (1958) fue su última máquina de válvulas, y además una de las primeras máquinas pensadas para trabajar con sistemas operativos. 26 Microprocesadores y microcontroladores FIGURA 1.14. Programando el ENIAC. Figura 1.15. John Von Neumann. 1.5.3. Generación 2. Transistores (1955-1965) En 1948, J. Bardeen, W. Brattain y W. Shockley, de los laboratorios Bell, inventan un dispositivo que causará una verdadera revolución, el transistor (por ello fueron galardonados con el Premio Nobel de Física en 1956). El transistor es más pequeño que una válvula de vacío, disipa menos potencia y es más barato, por lo que en 10 años desbancaron a las válvulas en la confección de computadores (y en muchas otras tareas). Introducción y conceptos previos 27 Uno de los hechos más destacados de esta segunda generación es la irrupción en escena en 1957 de Digital Equipment Corporation, DEC, que poco tiempo más tarde comercializaron la primera minicomputadora, la PDP-1 (1961). Aunque contaba con menores prestaciones que las máquinas de IBM, costaba tan sólo 120.000 dólares (frente al millón de una IBM 7090), por lo que DEC vendió docenas de PDP-1 (algo más tarde introdujeron la PDP-8, por tan sólo 16.000 dólares, de la que vendieron más de 50.000 unidades). Mientras tanto, IBM se convertía en una de las más importantes compañías, gracias a la 7094, que dominó la computación científica a principio de los sesenta, y a la 1401, una pequeña computadora orientada a gestión. De ambas se vendieron numerosas unidades. De entre las muchas otras máquinas de la época destacaremos la B5000 de Burroughs. Mientras que otras compañías se centraban en el hardware, esforzándose en la construcción de máquinas baratas (DEC), o rápidas (IBM), los diseñadores de la B5000 pensaron que el software también era importante, por lo que la idearon de forma que pudiera ser programada en Algol 60, el primer lenguaje de alto nivel. No obstante, esta tendencia tuvo que esperar unos años antes de que fuera explotada al máximo. 1.5.4. Generación 3. Circuitos integrados SSI y MSI (1965-1971) Algunas computadoras de la segunda generación podían incluir hasta 10.000 transistores, los cuales se agrupaban en tarjetas de circuito impreso, de decímetros de tamaño. El siguiente paso importante consistió en integrar diversos transistores en un único fragmento de silicio, realizando así un circuito integrado (CI o chip): Jack Kilby (Texas instruments) y Robert Noyce (Fairchild, y luego, junto con Gordon Moore, cofundador de Intel) son los responsables del invento. Pronto todas las computadoras se construyeron mediante CI, que eran más pequeños, más rápidos, más baratos y de menor consumo que las tarjetas. Los primeros CI se denominaban de pequeña escala de integración o SSI, al incluir menos de 100 transistores. Los siguientes eran ya de media escala o MSI, pudiendo incluir hasta mil transistores. Empleando ya circuitos integrados, IBM introduce la serie 360, como una sola línea de productos destinada a sustituir las máquinas 7094 y 1401, orientada tanto hacia el cálculo científico como a gestión. La idea de comercializar una familia, en la que cada miembro contaba con distintas características particulares sobre un núcleo común, siendo el software compatible hacia arriba (un programa escrito para una máquina de gama baja podría ejecutarse en otra de gama más alta), se volvió popular de inmediato. Otra novedad de la 360 era la posibilidad 28 Microprocesadores y microcontroladores de trabajo multitarea y su operación con números de 32 bits. La 360 fue el gran éxito comercial de la década, cimentando el aplastante liderazgo de IBM en el campo de las computadoras (llegó a dominar en aquella época el 70% del mercado). La arquitectura 360 es el origen de las grandes computadoras o mainframes de IBM. DEC introduce en 1965 la minicomputadora ya citada PDP-8, de la que se vendieron más de 50.000 unidades; de esa época arranca la fortuna de DEC. La PDP-8 contaba con la gran innovación de su estructuración alrededor de un bus (el denominado omnibus), frente a las basadas en la IAS, como las IBM, de estructura centralizada; esta estructura en buses ha sido desde entonces universalmente adoptada por todos los mini y micro ordenadores. Posteriormente apareció la PDP-11, sustituto de 16 bits de la PDP-8. La PDP-11 puede considerarse por sus características la hermana menor de la 360, teniendo un gran éxito comercial, sobre todo en las universidades, lo que sostuvo el liderazgo de DEC en el mercado de las minicomputadoras. 1.5.5. Generación 4. Alta escala de integración (LSI) (1971-1977) A partir de la tercera no existe un acuerdo general sobre la denominación y delimitación temporal de las siguientes generaciones. Nosotros consideraremos que una cuarta generación comienza con el desarrollo de la alta escala de integración o LSI (más de 1.000 transistores en un CI) a principios de los setenta, y que una quinta generación comienza con el advenimiento de la muy alta escala de integración o VLSI (más de 10.000 transistores), a finales de los setenta. A finales de los años sesenta y comienzos de los setenta el gran desarrollo de la integración microelectrónica permite la realización de chipsde memoria (memoria de semiconductores). Recordemos que hasta entonces la memoria central se construía mediante pequeños anillos de ferritas, que almacenaban un ‘0’ o un ‘1’ dependiendo de su estado de magnetización. También se empleaban tarjetas perforadas, cintas de papel y magnéticas. La integración LSI permite ya a principios de los setenta integrar toda una unidad de procesamiento central, o CPU, en una única pastilla de silicio, es decir, la confección de microprocesadores. Así, en 1971 Intel comercializa el primer microprocesador de la historia, el 4004, de 4 bits y tecnología PMOS, y poco tiempo después los primeros de 8 bits, el 8008 (1972) y, sobre todo, el 8080 (1974), el cual es considerado el verdadero primer microprocesador de propósito general. Motorola realiza el 6800 en 1974 (NMOS), y otras muchas compañías, como Zilog, Texas Instruments, Fairchild, etc., comienzan también a desarrollar sus propios microprocesadores. Aunque en origen éstos se idearon para Introducción y conceptos previos 29 desempeñar tareas de control, sustituyendo electrónica convencional, poco más adelante se empezaron a construir los primeros microordenadores basados en ellos, que, a un precio reducidísimo, poco a poco fueron adquiriendo mayor popularidad. A la par que los primeros sistemas basados en microprocesadores, por esta época se siguen desarrollando minicomputadores (como los de DEC) y grandes computadoras, como las de IBM. Por su relativamente reducido precio y su orientación a tiempo real, los minicomputadores se emplean en tareas de control industrial (entre otras). 1.5.6. Generación 5. Muy alta escala de integración (VLSI) (1977-) Con la llegada de la integración a muy alta escala, o VLSI, los microprocesadores que pueden fabricarse a finales de los setenta y principios de los ochenta resultan cada vez más potentes. De entre ellos cabe destacar el 8086/88 de Intel (1978) y el 68000 de Motorola (1979), ambos de 16 bits y tecnología CMOS, y que darán lugar a las famosas familias 80x86 y 68K, respectivamente. La adopción del 8088 de Intel como microprocesador de la nueva línea de computadores personales PC de IBM (Personal Computer, 1980), y del MS-DOS de Microsoft como su sistema operativo, resultará decisiva para ambas modestas compañías (en principio, el 68000 de Motorola era mejor y más potente que el 8086/88, pero...). La enorme popularidad con la que contó el PC desde sus comienzos hizo que Intel y Microsoft se convirtiesen en pocos años en los dos gigantes que hoy en día son. Curiosamente, IBM entró sin demasiado convencimiento en el incipiente mercado de pequeños ordenadores, pero el primer año ya vendió 300.000 unidades del PC y el segundo 600.000. Con anterioridad, solamente los grandes centros de cálculo podían abordar la compra de un computador. Con el advenimiento de los ordenadores personales o microcomputadores, basados en microprocesadores, el precio de un ordenador personal resultaba asequible al ciudadano medio, por lo que el PC se ha convertido en un objeto de consumo, estando presente en numerosos hogares. Hay en día un PC posee tanta potencia de cálculo como un mainframe de los años sesenta, a un coste infinitamente inferior. 30 Microprocesadores y microcontroladores Tipo de computador Ejemplos Aplicaciones Ordenadores personales (PC) PC, MacIntosh Edición, hojas de cálculo, etc. Miniordenadores VAX 8600 Control en tiempo real Estaciones de trabajo (workstations) Sun, HP-Apollo, Alpha Diseño y cálculo. Servidores Ordenadores centrales (mainframes) IBM 3090/400 Gestión Supercomputadores Cray XMP Cálculo científico intensivo TABLA 1.1. Tipos de computadores. En la actualidad, la potencia de los microprocesadores es tan grande que eclipsa a muchos de los computadores centrales o minicomputadoras, creándose un nuevo tipo de computador, las estaciones de trabajo (workstations), de muy elevadas prestaciones, orientadas a diseño en ingeniería y cálculo científico. Ejemplos de éstas son las Sparc de Sun Microsystems, las HP-Apollo de Hewlet- Packard, o las Alpha de DEC. Una estación de trabajo permite disponer de un miniordenador de sobremesa a un precio muy reducido. Dichas estaciones se basan en el empleo de microprocesadores de tipo RISC, como el SPARC, PA- RISC o PowerPC, que parecen haber ganado la batalla de las altas prestaciones a los CISC, como los clásicos 68000 u 8086. La era actual se distingue por la convivencia de diversos tipos de computadores. Así, ordenadores personales y estaciones de trabajo coexisten con minicomputadoras, super-mini-computadoras (como el clásico VAX de DEC, sucesor de los PDP), supercomputadores (como los Cray, de la compañía Cray Research, orientados al cálculo científico), y con los grandes sistemas o mainframes (gestión). No obstante, la distinción entre los distintos tipos de computadores disponibles es cada día más difusa; por ejemplo, el término minicomputador está cayendo en desuso en favor de estación de trabajo, mientras que los PC de altas prestaciones (basados en potentísimos microprocesadores como el Pentium III) rivalizan en potencia con muchas estaciones de trabajo. Otros rasgos que caracterizan nuestra época son la creciente importancia del software, la tendencia en contra de los grandes sistemas y a favor de las redes de ordenadores (arquitectura cliente-servidor), el amplio trabajo en computación paralela, desarrollo de la inteligencia artificial, el PC como equipo de consumo, las tecnologías multimedia y, por supuesto, Internet (que, como verdadera punta de lanza de lo que será el siglo XXI, ha empezado a cambiar ya el mundo). Introducción y conceptos previos 31 Generación 0. Computadoras mecánicas y electromecánicas (1642-1945) 1642 Calculadora Pascal Primera calculadora mecánica 1834 Máq. dif. y analítica Babbage Primeras computadoras mecánicas 1936 Z1 Zuse Primera computadora electromecánica (relés) 1939 ABC Astanasoff-Brerry Introduce técnicas importantes en el futuro 1944 Mark I Aitken Primera computadora electromecánica americana Generación 1. Válvulas electrónicas (1945-1955) 1943 Colossus Turing-Gobierno G.B. Primera computadora electrónica 1946 ENIAC I Mauchley/Eckert Comienzo de la historia de la computación 1949 EDSAC Wilkes Primera computadora por programa almacenado 1952 IAS von Neumann El diseño seguido por la mayoría de las máquinas 1951 UNIVAC 1 Eckert/Mauchley Primera computadora vendida comercialmente 1953- 701, 704, 709 IBM Despegue de IBM. Sistemas operativos (709) Generación 2. Transistores (1955-1965) 1960 PDP-1 DEC Primera minicomputadora 1961 1401 IBM Pequeña máquina de gestión 1961 7094 IBM Dominio de la computación científica 1963 B5000 Burroughs Lenguajes de alto nivel (Algol 60) Generación 3. Circuitos integrados SSI y MSI (1965-1971) 1964 360 IBM Primera línea de productos. Reinado de IBM 1965 PDP-8 DEC Primera minicomputadora vendida masivamente 1970 PDP-11 DEC Dominio de la computación en los setenta Generación 4. Alta escala de integración (LSI) (1971-1977) 1971 4004 Intel El primer microprocesador 1974 8080 Intel Primer microprocesador de propósito general 1974 6800 Motorola Primero de Motorola, padre de la familia 68XX Generación 5. Muy alta escala de integración (VLSI) (1977-) 1978 VAX DEC Primera superminicomputadora de 32 bits 1978 8086 Intel Padre de la familia 80x86 (PC compatibles) 1979 68000 Motorola Padre de la familia 68K (Apple MacIntosh y WS) 1980 PC IBM El microordenador cambiará la historia Supercomputadores Cray Cálculo científico intensivo µP RISC Dominio de los µP RISC frente a los CISC Estaciones de trabajo Sun, HP, DEC, IBM Redes de ordenadores. Arq. cliente-servidor Inteligencia artificial, Internet, multimedia TABLA 1.2. Historia de la computación (adaptado de [Tanenbaum 92]). 32 Microprocesadores y microcontroladores La electricidad (s. XVIII y XIX) XVIII - XIX La electricidadCoulomb, Ohm, Ampère, Gauss Se sientan las bases de la electricidad Siglo XIX La ingeniería eléctrica Faraday, Hertz, Edison, Marconi Ingeniería eléctrica: «paso de partículas cargadas a través de los metales». El electrón (finales siglo S. XIX) 1885 Postulado del electrón H.A. Lorentz Su descubrimiento J.J. Thonsom Descubrimiento experimental Válvulas de vacío (principios S. XX) 1904 Diodo Fleming 1.ª válvula de vacío (det. señales inalámbr.) 1906 Triodo De Forest Como amplificador de señales 1920 KDKA Westinghouse 1.ª emisora de radiodifusión (Pittsburgh). En 1924 hay ya 500 en EE.UU. 1930 TV en blanco y negro Radio y TV, impulsores de la electrónica Transistores 1940 Bell labs. Tras el «amplificador de estado sólido» 1947 Prototipo de transistor Brattain, Bardeen, Shockley Inventan el transistor 1947 Transistor BJT Shockley Perfecciona el prototipo. 1951 Comercialización del BJT El transistor FET Bell, y otras Shockley La Bell no guarda en secreto la tecnología Propuesta (todavía es pronto). 1954 Transistores de silicio Texas Instr. 1956 Premio Nobel de Física Brattain, Bardeen, Shockley 1.er Premio Nobel dispositivo ingeniería Circuitos integrados SSI, MSI y LSI (1965-1977) 1958 El circuito integrado (CI) J. Kilby y R. Noyce Texas Instruments y Fairchild 1958 Primer transistor por difusión moderno Hoerni (Fairchild) Proceso planar y fotolitografía, se abren las puertas a los MOSFET 1960 El primer MOSFET Kahng y Atalla Bell 1961 Comercialización del CI Texas Instruments, Fairchild Integración SSI (<100 transistores) 1964 Ley de Moore. CI lineales 1966 MSI (de 100 a 1.000) 1969 LSI (de 1.000 a 10.000) 1970 RAM Intel, Fairchild Comercialización de pastillas de RAM 1971 Microprocesadores Intel El i4004 Muy alta escala de integración (VLSI) (1977-hoy) 1977 VLSI (>10.000) µP de altas prestaciones, entre otros 1979 El PC Electrónica e Informática Era de la información y comunicaciones TABLA 1.3. Principales hitos en la historia de la electrónica. Capítulo 2 Componentes del sistema microprocesador 2.1. El sistema microprocesador En este capítulo estudiaremos las partes que componen un sistema microprocesador. Describiremos primero de una manera general (sin tener en cuenta ningún µP concreto) los bloques fundamentales del hardware del sistema (CPU, memoria central y entradas y salidas), para realizar después una primera incursión en el campo del software, proporcionando unas cuantas ideas sobre las bases en las que éste se asienta (utilizaremos siempre los términos anglosajones hardware y software, ya que se han impuesto en nuestra lengua). Ofrecida una perspectiva genérica, en el capítulo siguiente profundizaremos ya en los casos concretos del M6800 y del M68HC11, los microprocesadores de Motorola que nos servirán como ilustración a lo largo del texto. Aunque en este capítulo hablaremos en términos generales, sin tener en cuenta ninguna CPU en concreto, queremos advertir que nuestra mayor fuente de inspiración serán los clásicos microprocesadores de 8 bits. Pese a que el computador es el ejemplo de sistema basado en microprocesador más conocido por todos, también son sistemas microprocesadores el circuito de control de una lavadora automática, el sistema de frenado ABS o el control de un aparato de vídeo. A una persona ajena al campo de la electrónica industrial o de consumo los µP de 8 bits pueden parecerle obsoletos, especialmente cuando sus prestaciones se comparan con las de los potentes µP de 32 o 64 bits, base de los actuales computadores; sin embargo, los µP más sencillos siguen siendo los más vendidos en el mercado (alrededor del 80% son de 4 y 8 bits [Bursky 95], aunque el volumen de negocio de los microprocesadores de altas prestaciones es mayor, debido a su muy elevado coste). La razón de que los más sencillos sean los más vendidos radica en que la mayor parte de los sistemas electrónicos incorporan en la actualidad un microprocesador (normalmente, un microcontrolador), y para las aplicaciones sencillas y medias un procesador de 4 u 8 bits es la mejor solución si atendemos a la relación prestaciones/precio. Así, cuando un ingeniero debe desarrollar un sistema electrónico industrial, muy a menudo debe trabajar con un microcontrolador de 8 bits. 34 Microprocesadores y microcontroladores CPU (Microprocesador) Memoria Central Bus de Datos Bus de Direcciones Bus de Control Entradas/ Salidas Unidad de Procesamiento Unidad de Control FIGURA 2.1. Bloques generales de un sistema microprocesador, y estructura de buses. Por otra parte, comprender el funcionamiento de un µP de 8 bits resulta más sencillo que el de un gran µP de 32 o 64 bits, en los cuales los nuevos logros tecnológicos y de arquitectura (unidades en paralelo, ejecución desordenada de las instrucciones, etc.) ocultan la comprensión de los principios más básicos de funcionamiento (por ejemplo, el clásico ciclo carga instrucción y ejecuta). Además, algunas familias de µP de 8 bits, como la 68XX de Motorola, incorporan muchas de las características que luego vuelven a aparecer en los µP más potentes. Finalmente, desarrollar aplicaciones y realizar montajes con µP sencillos, en especial con µC, resultará relativamente sencillo para el estudiante. Por todas estas razones consideramos que los µP de 8 bits son los más idóneos desde el punto de vista pedagógico para el primer contacto de un estudiante de ingeniería con este campo. 2.1.1. Microprocesadores y sistemas microprocesadores Como ya sabemos, el microprocesador es el circuito integrado (chip) que materializa al completo una unidad de procesamiento central (CPU). Pero para que la CPU pueda funcionar se precisa de un conjunto adicional de elementos, los cuales conforman el sistema microprocesador, en el que el µP es la pieza central. Los componentes del sistema microprocesador que estudiaremos en este capítulo son, por este orden, memoria, subsistema de entradas/salidas (E/S) y CPU, los cuales se conectan entre sí por medio de buses. Ésta va a ser nuestra primera perspectiva general sobre el sistema µP; un lector sin conocimientos previos sobre Componentes del sistema microprocesador 35 el tema puede que no llegue a comprender todos los detalles que proporcionaremos a continuación, pero no debe preocuparse por ello, pues la mayor parte de las cuestiones se volverán a abordar más profundidamente a lo largo del texto, de modo que las podrá ir asimilando gradualmente. 2.2. Buses del sistema Recordemos en primer lugar que los sistemas digitales complejos, en los que se debe trabajar con una elevada cantidad de información (como los µP), se estructuran de una manera peculiar que facilita enormemente su diseño y realización. En ellos se considera que la información se organiza en palabras digitales, con frecuencia de 8 bits (byte); cada palabra (byte) se almacena en un registro y a cada registro se le asigna una dirección. El conjunto de los registros constituyen la memoria del sistema. Buena parte de la operación del sistema digital consiste en desplazar datos entre los registros, pero en vez de conectar cada registro con todos los demás, lo que crearía una maraña de conexiones difícilmente manejable, se introducen unos canales o líneas por los que transita la información, los buses, en torno a los cuales se organizan los registros, pudiendo cada uno en un momento dado conectarse o bien permanecer desconectado. De todos los registros acoplados a los buses, en cada instante solamente se conectarán de forma efectiva el registro que desea enviar un dato y el que debe recibirlo [Pollán 94]. Por lo tanto, un bus es un conjunto de líneas de comunicación de señales y datos que es compartido por varios bloques digitales. Cada subsistema digital acoplado al sistema de buses puede en un momento dado estar conectado al bus (habilitado) o desconectado (deshabilitado); en este último caso se dice que
Compartir