SISTEMAS MICROPROCESAD MICROPROCESADOS OS
Grupo: GR3 Profesor: Ing. Jorge Rosero
Fecha de entrega: 2013-01-27
Semestre 01-2013
HISTORIA DE LA COMPUTACIÓN Inicialmente los primeros computadores fueron destinados a realizar simples operaciones aritméticas mediante el uso de técnicas mecánicas y diseños bastante simples que no requerían de energía eléctrica. Las ideas para la fabricación de calculadoras que realizan cierto tipo de operación eran bastante creativas e interesantes, sin embargo su poca versatilidad y el gran espacio q estas usaban no era de gran comodidad para el usuario. Estas ideas incluían desde la utilización de engranajes hasta la implementación de tarjetas perforadas (tal como la q usa las cajas musicales para reproducir su armonía almacenada), dispuestas de cierta forma, tal que podían realizar las operaciones requeridas. El primer elemento de memoria propiamente electrónico fue inventado en el año 1919 gracias a los inventores WH Eccles y FW Jordan. Se le denominó flip-flop, circuito multivibrador o biestable debido a que puede presentar 2 estados binarios diferentes (1,0) dependiendo del anterior estado que haya tenido. Posteriormente, debido a la necesidad del ejército alemán de tener una maquina automática que calcule las orientaciones predeterminadas que los aviones de combate deberían tomar, además de que requerían que estas sean almacenadas, el ingeniero Konrad Zuse diseñó el prototipo lla mado Z1 en honor a su apellido. La Z1 contenía casi todas las partes de una computadora moderna, es decir: unidad de control, memoria, lógica micro-programada, unidad aritmética en punto flotante (la unidad de lógica booleana no se realizó) y dispositivos de entrada-salida. Era programable parcialmente mediante un programa en cinta perforada y un lector de cinta perforada. Tenía una memoria de 64 palabras en punto flotante, en la que cada palabra de la memoria se podía leer y escribir por la unidad de control. La máquina era sólo capaz de ejecutar instrucciones que leía del lector de cinta perforada, por lo que el programa en sí no se ha cargado en su totalidad en la memoria interna de antemano. Lastimosamente, esta computadora automática nunca llego a servir correctamente debido a la falta de perfeccionamiento en sus componentes mecánicos. Sin embargo, Zuse decidió mantenerse en pie firme y logró inventar la primera máquina electrónica programable y completamente automática, la llamaron Z3. Utilizó para su diseño alrededor de 2300 relés y tenía las mismas funciones para las cuales se habría tratado de diseñar su predecesora la Z1. Lamentablemente, sus planos y mayoría de copias fueron destruidos durante la Segunda Mundial. Sin embargo, su sucesora, la Z4, que realizaba las mismas y otras más complicadas operaciones matemáticas fue un éxito comercial situándose como la primera computadora que llegaría a venderse a escala mundial. A partir de ese momento se multiplicaron los esfuerzos por crear computadores más eficientes y duraderos, empezando con la ENIAC en 1946, la cual es considerada la primera computadora programable de propósito general llegando a ejecutar más de 5000 operaciones aritméticas por segundo. Aun así, todavía usaba elementos mecánicos, tal como relés y tubos de vacío que hacían que esta ocupe un espacio tan grande como una habitación entera. Los tubos de vacío servían como memoria, debido a su núcleo magnético que permite guardar una carga y por ende información que puede cambiar de acuerdo al circuito que se implemente. En 1947, se dio la invención del transistor, producto del trabajo de los laboratoristas de la empresa Bell: John Bardeen, Walter H. Brattain y William Shockley. Esta fue la segunda generación de computadores que se caracterizó por la invención del primer lenguaje de programación de alto nivel llamado FORTRAN, de lo c ual la empresa IBM sacaría una enorme ventaja sobre sus competidoras. En esta época es cuando se descubren las propiedades de almacenamiento de información de los elementos semiconductores, lo cual significaría un cambio de total de la tecnología de tubos de vacío y los núcleos magnéticos a una más confiable proporcionada por los transistores. Sin embargo el reinado de esta generación de computadores no duraría mucho, ya que gracias a la invención del circuito integrado o microchip por parte de Jack S. Kilby, empezaría en 1964 la tercera generación de computadores que usarían estos dispositivos únicamente. El nivel de integración de los circuitos utilizados por las diferentes empresas que tuvieron éxito en esta generación era mediano y permitió que se construyan computadores mucho más pequeños a los q solo usaban transistores y más aún que los que usaban tubos de vacío. El 15 de noviembre de 1971, el mundo informático daría un salto gigantesco que perduraría hasta el día de hoy, gracias a la invención del microprocesador 4004 por parte de la empresa Intel. Dentro de este dispositivo se colocaron todas las unidades necesarias para la estructuración de un CPU, entre ellas: el ALU (Arithmetical Logic Unit), el control Unit, el Register Bank, etc. Este microprocesador se caracterizaba por su memoria de 16 registros con 4 bits de almacenamiento cada uno, lo cual permitía guardar una cantidad grandísima de información instantánea pudiendo ejecutar millones de instrucciones por segundo. De ahí que posteriormente se crearon modelos de procesadores mucho más pequeños y más avanzados hasta llegar a los microprocesadores utilizados hoy en día en computadores personales que llegan a los 256 bits de operación, que logran ejecutar miles de millones de instrucciones por segundo. Por su parte las memorias han sufrido también cambios importantes, que van desde la utilización de tarjetas perforadas, cintas magnéticas y tubos de vacío hasta la utilización de microchips y memorias de núcleo magnético muy comunes en estos días. La RAM o memoria de acceso aleatorio, es clave en el funcionamiento de cualquier computador, ya que ahí es donde se cargan todas las instrucciones que el procesador ejecuta sin necesidad de obtener tal información mediante un orden predeterminado haciéndola de fácil y rápido acceso. El diseño de esta memoria ha evolucionado desde la utilización de núcleos magnéticos que requerían que cada bit estuviera almacenado en un toroide de material ferromagnético de algunos milímetros de diámetro (lo que resultaba en dispositivos con
una capacidad de memoria muy pequeña) hasta la utilización de microchips semiconductores cuyo funcionamiento es más eficiente, rápido y de fácil miniaturización. Este desarrollo también se puede aplicar a las memorias ROM que se encargan de las operaciones de control de arranque y funcionamiento correcto de los c ircuitos electrónicos. Para las memorias de almacenamiento de información que no tienen que ver con el sistema operativo se han creado múltiples opciones. La más usada para el almacenamiento masivo de soporte es el disco duro magnético que todavía sigue siendo instalado en los computadores modernos. Para la extracción y portabilidad de información existen diferentes dispositivos que van desde las memorias de disco óptico, cinta magnética y flash, de los cuales el ultimo es el sistema de almacenamiento de información que más ha sobresalido en el tiempo moderno.
MEMORIAS Son elementos que permiten el almacenamiento de información para un posterior procesamiento mediante el uso de un computador. Las unidades de memoria como sistema están diseñadas a partir de celdas de memoria que a su vez solo pueden almacenar máximo un bit (0,1). Ejemplo: flip-flop, capacitor cargado, un canal de cinta o disco magnético. Las instrucciones que se forman a partir de la información almacenada en las memorias se denominan palabras de memoria, el número de instrucciones o palabras depende de la capacidad de almacenamiento instantáneo del computador dado en bits. Existen varios tipos de clasificar a las memorias, entre ellas:
1) Según su localización y conexión al computador Memoria interna: es la que guarda la información de las diferentes instrucciones y procesos que el computador debe realizar para su c orrecto funcionamiento, esta se comunica directamente con el CPU mediante los buses de dirección y control.
Memoria externa o auxiliar: también denominada de almacenamiento masivo porque es usada para almacenar grandes cantidades de información sin necesidad de corriente eléctrica. La información que estos dispositivos almacenan se transmite a través del bus de datos externo para posteriormente ser procesada dependiendo de que si el usuario la requiera o no.
Proceso de escritura de información - La CPU proporciona la dirección binaria de la localidad de memoria donde va a almacenarse el dato mediante el bus de dirección. - La CPU genera las señales de comando apropiadas para la operación de escritura. - Los circuitos integrados decodifican la dirección para determinar la localidad seleccionada para la escritura. - El dato se almacena en la localidad seleccionada.
Proceso de lectura de información - La CPU proporciona la localidad de memoria donde se encuentra el dato que se va a leer a t ravés del bus de dirección. - La CPU activa las señales de comando adecuadas para la operación de lectura. - Los circuitos integrados que forman la memoria decodifican la dirección para determinar la localidad seleccionada para efectuar la lectura. - Los circuitos integrados que forman la memoria colocan el contenido de la localidad seleccionada en el bus de datos de donde se transfiere al CPU.
2) Según su funcionamiento
Memorias volátiles: requieren alimentación de energía constantemente para mantener la información almacenada. Suele ser usada en memorias primarias o internas para el correcto funcionamiento del ordenador. Al ser semiconductoras pierden la información al apagar el equipo.
Memorias no volátiles: retiene la información aun cuando haya sido desconectada la luz eléctrica. Su uso es para almacenamiento a largo plazo y se usa en memorias secundarias, terciarias y fuera de línea o externas.
3) Según su propósito Memorias de acceso secuencial (SAM) En este tipo de memorias el tiempo que se demora en acceder a la información almacenada no es constante sino depende de la localidad y dirección que posea el dato, ya que estas memorias están dispuestas de tal forma que las palabras se escriben y se leen de forma secuencial es decir una tras de otra. Ejemplos: disco magnético, cinta magnética, disco compacto.
Memoria de Lectura y Escritura (RWM) Este tipo de memoria permite leer y escribir información con mucha facilidad y sin ningún tipo de restricción estructural.
Memoria Caché Es la memoria de visitas que contiene las páginas de internet recientemente visitadas por el usuario. De esta forma si es que el usuario requiere entrar a estas páginas sin utilizar la conexión de Internet lo podrá hacer a través de la compartición de disco duro que esta memoria posee y con una velocidad más rápida ya que la página no se cargará mediante la conexión a Internet sino a partir del bus de datos del disco duro.
Memoria de sólo lectura (ROM) Esta memoria solo puede ser escrita una vez y eso sucede en el momento que se realiza su fabricación. Por lo tanto la información solo puede leerse de la memoria. Es una memoria no volátil, lo cual quiere decir que mantiene sus datos aun cuando el ordenador se encuentra apagado. Su diagrama de bloques es el siguiente: Esta ROM almacena 16 palabras de 8 bits cada una, ya que tiene 2^4=16 direcciones de entrada posibles, por lo que se denomina una ROM DE 16x8. CS habilita o deshabilita las salidas de la ROM. Para leer la información de la ROM se debe aplicar las entradas de dirección adecuada y luego activar CS. Las ROMS se caracterizan por presentar un retraso entre la aplicación de las entradas y la aparición de las salidas de datos durante la operación de lectura, a esto se le llama tiempo de acceso que es una medida de la velocidad de operación de la ROM. Este factor esta dado desde el momento en que se ha dado la especificación de cambiar una dirección por otra hasta que se hayan decodificado completamente y se haya seleccionado el registro que llevara los datos a los búferes de salida. Depende de la circuitería interna de la ROM y va desde los 30 a los 90 nanosegundos. Existen varios tipos de memorias ROM, entre ellas las siguientes:
- ROM programadas por mascarilla (MROM) Tiene sus localidades de almacenamiento escritas o programadas por el fabricante según lo que el cliente requiera. La mascarilla es un negativo fotográfico que sirve para controlar las conexiones eléctricas en el circuito. Al ser mascarillas costosas se usan más cuando se necesita una cantidad considerable de ROMs idénticamente programadas. Dependiendo que la capacidad de memoria y las aplicación que se requiera, las estructuras de las diferentes ROMS pueden utilizar tanto BJTs como FETS. Estos se encuentran conectados en configuración colector abierto y se predisponen de manera que forman registros. Generalmente las ROMS creadas a partir de MOSFETS son más rápidas y disipan por lo tanto menor potencia.
- ROM programables (PROM)
Es una ROM utilizada para aplicaciones de bajo volumen. Utiliza conexiones fusibles, que pueden funcionar como cortocircuitos o circuitos abiertos según como se requiera activar o desactivar un registro de memoria o celda. La programación se realiza mediante un aparato que aplica grandes voltajes a los terminales del fusible que se quiera quemar y poner en cero, analizando en primera instancia cuales son las direcciones que se desea ma ntener en uno. Los datos no cambiaran ya que nada causara que el fusible a bierto y fundido se cierre de nuevo, esto implica que la memoria solo puede ser programada una primera y única vez.
-ROM programable y borrable (EPROM) Es una ROM que puede ser programada y borrada por el usuario tantas veces como se requiera. Es una memoria no volátil que mantiene sus datos de forma indefinida. El proceso de programación se realiza mediante un aparato que aplica niveles de voltaje especiales a las entradas adecuadas del circuito según la dirección que se especifique durante un tiempo determinado. Los voltajes son aplicados de forma que cierran o abren los MOSFET que funcionan como celdas de almacenamiento que tienen una compuerta flotante y normalmente se encuentra apagado y el transistor guarda un 1 lógico. Al aplicar el voltaje se enciende el transistor de manera permanente haciendo que la celda de memoria guarde un cero lógico. Para el borrado de la información presente en la EPROM se debe exponer la ventana presente sobre el encapsulado del circuito a los rayos ultravioleta del sol durante 15 a 20 minutos. La luz UV produce una fotocorriente que va desde la compuerta flotante hacia el sustrato de silicio apagando el MOSFET. Un tipo de memoria EPROM es conocido como memoria FLASH.
-ROM eléctricamente borrable (EEPROM) Esta ROM mantiene la misma estructura de compuerta flotante que la EPROM posee, pero incluye una región muy delgada encima del electrodo de drenaje del MOSFET, con lo cual al aplicar un alto voltaje (21 V) entre la compuerta y el drenaje del MOSFET se puede inducir una carga en la compuerta flotante donde permanecerá aun cuando se interrumpa la corriente. Para el borrado de las cargas se deben invertir algunos voltajes con lo cual se borra la celda de memoria. Debido a que estas corrientes son bajas, el borrado y programación se puede hacer en el propio circuito sin necesidad de soportes externos. Sus ventajas son: la rapidez (5 ms comparado con los 50 ms de las EPROM), los datos se borran por completo automáticamente antes de empezar la escritura, tienen integrado un soporte para amplificar el voltaje de alimentación (5V) hasta llegar al voltaje de programación (21V). La única desventaja es el costo, debido al diseño complejo de sus celdas de memoria que causa que se requiera utilizar más Silicio en busca del aumento de la capacidad para llegar a generar lo mismo que una EPROM tendría con la mit ad de Silicio. -Memorias instantáneas Tiene la misma estructura que la EPROM, con la diferencia de que sus transistores son un poco más grandes. Tiene una capa más delgada de óxido en la compuerta que permite borrar por electricidad, por lo cual se puede construir con densidades más grandes que las EEPROMS. Se llama también de ráfaga porque tienen muy cortos tiempos para borrar y escribir llegando a alcanzar tiempos de milisegundos en comparación con los 20 minutos de la EPROM, también poseen una opción de borrado por sectores a selección del usuario.
Aplicaciones de la ROM -Firmware: almacenamiento de datos y códigos que deben estar disponibles al conectar la corriente eléctrica para alimentar al microprocesador. Estos códigos no permiten cambios durante el funcionamiento del sistema. La mayoría de PC de escritorio almacenan la los programas del sistema operativo y los interpretes de lenguaje.
-Memoria de arranque: guarda las instrucciones de arranque y acoplamiento de circuitería del hardware que se ejecuta al momento de encender el operador.
- Tablas de datos: tal como conversiones numéricas y tablas trigonométricas. - Convertidor de datos: toma datos expresados en un código en ci erto tipo de código y produce una salida en otro tipo de código. -Generador de funciones: produce formas de onda tales como ondas seno, dientes de sierra triangulares y cuadradas. - Almacenamiento auxiliar: se puede utilizar una ROM en vez de un disco magnético para almacenar datos que requieran bajas capacidades.
Memorias de acceso aleatorio (RAM) Estas memorias son de acceso aleatorio, lo cual quiere decir que se puede tener acceso fácilmente a cualquier localidad de dirección de memoria. Se emplea en computadores como almacenamiento temporal para programas y datos, lo cual requiere que la RAM tenga ciclos de lectura y escritura rápidos. La desventaja de estas memorias es que son volátiles, por lo cual se pierde toda la información cada vez que se apaga la alimentación. La ventaja principal es que se puede leer y escribir en ella con gran facilidad y rapi dez. Existen 2 tipos de memorias RAM:
-RAM estática (SRAM) Las celdas de memoria RAM estática son esencialmente flip-flops que permanecerán en un estado determinado indefinidamente, siempre y cuando no se corte el suministro de energía. Están disponibles en tecnologías bipolares (alta velocidad) y MOS (capacidad mayor).
-RAM dinámica (DRAM) Estas se fabrican con tecnología MOS y se caracteriza por su gran capacidad de almacenamiento, bajos requerimientos de consumo de potencia y velocidad de operación media. Estas guardan los unos y ceros como cargas sobre pequeños capacitores MOS. Dada la tendencia que tienen estas cargas a fugarse, estas memorias requieren de la recarga de las celdas de memoria (refresco) mediante un dispositivo externo. Al tener una estructura de celda más sencilla las DRAM tienen 4 veces la densidad de las SRAM, lo cual permite colocar hasta 4 veces más capacidad de memoria en circuito impreso.
MICROPROCESADORES Introducción Los microprocesadores se encuentran en la cima del diseño de sistemas digitales ya que sus escalas de integración son las más grandes, así como sus aplicaciones que pueden ser infinitas de acuerdo a la programación de estos. Específicamente se encuentran en los siguientes sistemas de integración:
VLSI (Very Large Scale Integration): sobrepasan el equivalente de los 10000 a 100000 compuertas básicas. Se debe tomar en cuenta el número de instrucciones y el número de c ircuitos de soporte controlado por un programa externo.
ULSI (Ultra Large Scale Integration): sobrepasan el equivalente de los 10000 a 1000000 compuertas básicas. Se debe tomar en cuenta el número de instrucciones y el número de circuitos de soporte c ontrolado por un programa externo.
GLSI (Giga Large Scale Integration): sobrepasan el equivalente de las 1000000 compuertas básicas. Viene incluida la memoria de programa (Flash), memorias de datos (SRAM), puertos de salida y entrada (I/O), convertidores A/D. Existen varios tipos de m icro-controladores, entre ellos:
ASIC: es un circuito integrado para Aplicaciones específicas está hecho a la medida para un solo uso en particular. A través de los años ha pasado de contener desde 5000 compuertas lógicas a más de 100 millones. Ejemplos de este son los microprocesadores de 32 bits, bloques de memoria RAM, ROM, EEPROM y Flash.
FPGA: es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada “in situ” mediante un lengua je de programación especializado. Se utilizan en aplicaciones en aplicaciones similares a los ASICS sin embargo son más lentas, consumen más potencia y no pueden abarcar sistemas tan complejos. Sin embargo tienen la ventaja de ser reprogramables y sus costos de desarrollo y a dquisición son menores.
El micro-controlador: posee todos los componentes que se requieren para un sistema de proceso en un solo circuito integrado, incluyendo: CPU, RAM (memoria de datos), ROM /PROM /EEPROM /FLASH (memoria de programa). Puertos I/O, Comunicación serial y paralela, Temporizadores /Contadores, Sistema de Interrupciones, Convertidores A /D y más funciones útiles para la Ingeniera en general.
Ventajas del uso de procesadores - Reducción del costo de implementación del sistema debido al menor número de circuitos integrados, del tiempo de implementación gracias a la facilidad de evaluación y desarrollo del sistema. - Incremento en la flexibilidad del diseño, pues las modificaciones del sistema pueden realizarse con solo reemplazar el programa almacenado; incremento de la confiabilidad en virtud de la reducción de número de puntos de conexión entre integrados.
Aplicaciones de los procesadores: pueden ser muchas y variadas, entre ellas: -Robótica: sin importar de su aplicación, todo robot puede ser diseñado para ser controlado a partir de microprocesadores, cada uno de los cuales tiene un diferente sector de acción, ejemplo: movilidad, sensibilidad, sonido, etc.
-Periféricos de computadores: tales como los que controlan el flujo de papel y otras opciones en una impresora. -Cromatografía: para detectar gases u otro tipos de sustancias en una mezcla, compuesto entre otras. -Seguridad laboral: para controlar las estaciones de trabajo que puedan presentar un riesgo potencial para el trabajador. -Aeronáutica: para controlar la velocidad, puntos de aterrizaje, coordenadas, peso, etc. en un avión o nave espacial. -Automóviles: para controlar el sistema de frenado (ABS), velocidad, parqueo, flujo de combustible o sustancias elementales para el correcto funcionamiento del auto, entretenimiento y confort (reproductor de música, aire acondicionado, etc.)
-PC: para controlar las unidades de procesamiento y periféricos, dependiendo del uso que se le quiera dar al computador -Electrodomésticos: para controlar la temperatura de un refrigerador, canales de TV, tiempo de cocción en un microondas, reproducción de un DVD, volumen de un reproductor musical, conexión a Internet, etc.
Historia del microprocesador - El primer microprocesador fue el Intel 4004, producido en 1971. Se desarrolló originalmente para una calculadora y resultó revolucionario para su época. Contenía 2.300 transistores, era un microprocesador de arquitectura de 4 bits que podía realizar hasta 60.000 operaciones por segundo trabajando a una frecuencia de reloj de alrededor de 700KHz. - El primer microprocesador de 8 bits fue el Intel 8008, desarrollado a mediados de 1972 para su uso en terminales informáticos. El Intel 8008 integraba 3300 transistores y podía procesar a frecuencias máximas de 800Khz. - El primer microprocesador de 16 bits fue el 8086. Fue el inicio y el primer miembro de la popular arquitectura x86, actualmente usada en la mayoría de los computadores. El chip 8086 fue introducido al mercado en el verano de 1978, pero debido a que no había aplicaciones en el mercado que funcionaran con 16 bits, Intel sacó al mercado el 8088, que fue lanzado en 1979. Llegaron a operar a frecuencias mayores de 4Mhz. - Uno de los primeros procesadores de arquitectura de 32 bits fue el 80386 de Intel, fabricado a mediados y fines de la década de 1980; en sus diferentes versiones llegó a trabajar a frecuencias del orden de los 40Mhz. - El microprocesador DEC Alpha se lanzó al mercado en 1992, corriendo a 200 MHz en su primera versión, en tanto que el Intel Pentium surgió en 1993 con una frecuencia de trabajo de 66Mhz. El procesador Alpha, de tecnología RISC y arquitectura de 64 bits, marcó un hito, declarándose como el más rápido del mundo, en su época. Llegó a 1Ghz de frecuencia hacia el año 2001. Irónicamente, a mediados del 2003, cuando se pensaba quitarlo de circulación, el Alpha aun encabezaba la lista de los microprocesadores más rápidos de Estados Unidos. - Los microprocesadores modernos tienen una capacidad y velocidad mucho mayores, trabajan en arquitecturas de 64 bits, integran más de 700 millones de transistores, como es en el caso de las serie Core i7, y pueden operar a frecuencias normales algo superiores a los 3GHz (3000MHz).
Marcas de microprocesadores Ya que existe una gran variedad de compañías, aquí se nombran solo algunas: AMD, INTEL, FACHON, POWERPC, CYRIX, FAIRCHILD, TEXAS, IBM, NEXGEN, MOTOROLA, ATMEL. Hoy en día los que más se conocen son los AMD e INTEL ya que son los que más pelean dan en el mercado en cuanto a calidad y rendimiento.
Arquitectura del microprocesador El microprocesador es como la computadora digital porque ambos realizan cálculos bajo un programa de control. El microprocesador utiliza el mismo tipo de lógica que es usado en la unidad procesadora central (CPU) de una computadora digital. El microprocesador es algunas veces llamado unidad microprocesadora (MPU). En un microprocesador se puede diferenciar diversas partes:
- Encapsulado: es lo que rodea a la oblea de silicio en sí, para darle consistencia, impedir su deterioro (por ejemplo, por oxidación por el aire) y permitir el enlace con los conectores externos que lo acoplaran a su zócalo a su placa base.
- Memoria caché: es una memoria ultrarrápida que emplea el procesador para tener alcance directo a ciertos datos que predeciblemente serán utilizados en las siguientes operaciones, sin tener que acudir a la memoria RAM, reduciendo así el tiempo de espera para adquisición de datos. Coprocesador matemático: unidad de coma flotante. Es la parte del micro especializada en esa clase de cálculos matemáticos, antiguamente estaba en el exterior del procesador en otro chip. Esta parte está considerada como una parte lógica junto con los registros, la unidad de control, memoria y bus de datos.
Registros: son básicamente un tipo de memoria pequeña con fines especiales que el micro tiene disponible para algunos usos particulares. Hay varios grupos de registros en cada procesador. Un grupo de registros est á diseñado para control del programador y hay otros que no son diseñados para ser controlados por el procesador pero que la CPU los utiliza en algunas operaciones, en total son treinta y dos registros. Memoria: es el lugar donde el procesador encuentra las instrucciones de los programas y sus datos. Tanto los datos como las instrucciones están almacenados en memoria, y el procesador las accede desde allí. La memoria es una parte interna de la computadora y su función esencial es proporcionar un espacio de almacenamiento para el trabajo en curso.
Puertos: es la manera en que el procesador se comunica con el mundo externo. Un puerto es análogo a una línea de teléfono. Cualquier parte de la circuitería de la computadora con la cual el procesador necesi ta comunicarse, t iene asignado un número de puerto que el procesador utiliza como si fuera un número de teléfono para llamar circuitos o a partes especiales. Tipos de diseño de microprocesadores CISC (Complex Instruction Set Computer-Computador con Set de Instrucciones Complejo) Es el diseño más usado para microprocesadores, cuyo conjunto de instrucciones es de más de 80, las cuales son muy oponentes y de múltiples aplicaciones mientras otras realizan una tarea concreta. Algunas instrucciones acceden a ciertos espacios de dirección y otras no. La ventaja principal es que algunas instrucciones son cuasi-marcos ya que son tan potentes que equivalen a muchas instrucciones simples.
RISC (Reduced Instruction Set Computer-Computador con Set de Instrucciones Reducido) Es el diseño que ha estado marcando la tendencia de diseño los últimos años y viene con la necesidad de reducir el tamaño del juego de instrucciones y el tamaño del chip. Dado a que las conexiones internas dentro del chip son más simples la compilación es más sencilla y rápida, lo cual también permite aumentar la frecuencia del reloj. Además consume una potencia menor. El juego de instrucciones es ortogonal o simétrico, lo cual simplifica el proceso de programación, puesto que cada instrucción puede operar con cualquier registro y usar cualquier modo de dirección, las instrucciones no tienen combinaciones especiales, excepciones ni restricciones.
FUNCIONAMIENTO DE UN MICROPROCESADOR Básicamente puede ser considerado un CPU como el de la figura. Tiene un diseño Von Neumann (un solo bus de instrucciones y datos, instrucciones y memoria común). Sus partes esenciales son:
ALU: realiza las operaciones aritméticas o lógicas. Tiene 2 entradas: Acumulador (Rd) y Registro de datos (Rr)
Registro de dirección: guarda la dirección de la localidad de la memoria o dispositivo que se ejecuta en ese instante.
Contador de programa (PC): controla la secuencia en la que se ejecutan las instrucciones del programa.
Decodificador de instrucción: después de que se obtiene el código de una instrucción y se lo pone en el registro de instrucción, el decodificador lo examina y decide la operación a ejecutarse.
Controlador secuenciador: genera una gran variedad de señales de control para ejecutar una instrucción, además de las señales de control y sincronismo requeridos por los otros componentes del sistema.
Registro de banderas: su función es considerar las situaciones excepcionales que se producen en el interior del CPU. Las instrucciones condicionales pueden generar saltos en la ejecución del programa en función del valor de alguno de estos bits.
CARGA Y EJECUCION DE UNA INSTRUCCIÓN La operación está dividida en 3 fases:
1) Se realiza la fase de carga donde el procesador toma una instrucción desde la memoria de programa
2) Se decodifica la instrucción 3) Se pasa a la fase de ejecución donde el procesador realiza la operación indicada por la instrucción Hay que indicar que para resolver cualquier tipo de problema se debe indicar las instrucciones con el más mínimo detalle, tener listos los conjuntos de instrucciones que se van a utilizar (presentes en las especificaciones de cada procesador) y memorizar su abreviación o mnemónico. En ciertos microcomputadores básicos no se permite el uso mnemónicos y por lo tanto toca usar el código opcode o binario de cada instrucción, a este proceso se lo denomina ensamblaje manual.
Ejecución de un programa Antes de ejecutar el programa se debe verificar que esté almacenado en la memoria. Una vez comprobado esto se procede a iniciar el PC con la dirección de la primera instrucción. Para cargar la 1ra instrucción, primero se debe transferir el contenido del PC al registro de dirección. Una vez que se haya hecho esto el contador del programa se incrementa en 1 (no altera el contenido). Luego el contenido del registro de dirección pasa al bus de dirección, el circuito de memoria decodifica la dirección y selecciona la localidad de memoria, esta memoria almacenara el opcode que será decodificado e informará al controlador-secuenciador sobre el código ingresado lo cual hará que se generen los pulsos de control necesarios para llevar a cabo la instrucción. Posteriormente para el ingreso del segundo código se transfiere la dirección del siguiente byte desde el PC al registro de dirección incrementando el registro de dirección en un bit. Por último se carga y se ejecuta la instrucción HALT, que interrumpe completamente la CPU, utilizando el mismo procedimiento descrito anteriormente
Todo este proceso es realizado gracias a la utilización de un programa monitor que es el que se encarga de comandar estas operaciones y aun otras más complejas como el ingreso de datos desde el teclado. El programa monitor es un conjunto de subprogramas que permite efectuar las comunicaciones básicas entre el usuario y el computador.
Ensambladores y lenguajes de ensamblaje Los programas más usados para programar microprocesadores son los siguientes: ProgISP, AVRStudio, Bascom, Flat assembler-A86-A386 (Intel), Microsoft Macro Assembler, RosASM, Turbo Assembler (IBM), GNU Assembler. Los lenguajes de programación más usados son los siguientes: Lenguaje C, Lenguaje Visual Basic, Lenguaje Assembler (ensamblador). A continuación se nombran algunas ventajas y desventajas de cada uno de estos 3 lenguajes de programación:
Ventajas
BASIC
C
ASSEMBLER
Es un lenguaje muy simple y con instrucciones fácilmente legibles, incluso por no expertos.
Es un lenguaje de alto nivel más cercano a la máquina.
Es el lenguaje de bajo nivel natural de la línea PIC tanto para gama baja, media o alta.
Puedes construir fácilmente.
rutinas
matemáticas
Puede ser de ayuda al combinarlo con Ensamblador sobre todo en la gama alta. Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes desarrollos. Es aceptado por la empresa fabricante Microchip, incluso ellos tienen algunos compiladores C.
Con él se tiene un aprovechamiento eficiente de los recursos del PIC. Se pueden crear macros con este lenguaje, para después simplificar el código en diferentes desarrollos. Con él se pueden controlar los tiempos y los registros bit a bit. Excelente para manejar interrupciones simultáneas. Cuando se genera el archivo .hex éste es completamente optimizado.
Desventajas
Nunca se tiene el control del programa en cuanto a tiempos de ejecución y control de registros bit a bit. Es muy complicado el manejo de interrupciones simultáneas en este lenguaje. Tiene limitaciones cuando genera el archivo .hex, es decir no optimiza el tamaño de memoria de programa del PIC.
Los programas al compilarlos pueden resultar un poco extensos y pesados por ello debe tenerse en cuenta la capacidad de memoria de programa del PIC a utilizar. Con este lenguaje tampoco se puede controlar del todo los tiempos y los registros bit a bit.
En realidad desde mi punto de vista no existe ninguna, excepto cuando no se tiene experiencia en programación puede tardarse el desarrollo de alguna rutina en comparación con los otros lenguajes. El compilador para este lenguaje es el MPLAB IDE el cual se consigue totalmente gratuito en la página de Microchip y constantemente están sacando nuevas versiones, debe aclararse que este solo funciona bajo ambiente Windows. Para Linux existe un versión alternativa llamada PIKLAB la cual presenta simuladores, editores, ensambladores y soporta una gran cantidad de compiladores C para PIC.
Ejemplo de programa en Assembler que utiliza interrupción de TIMER para hacer parpadear un LED conectado al pin A0 del PIC16F84. El LED se prende por 0.5 segundos y se apaga por 0.5 segundos, repitiéndose el ciclo infinitamente. Debe usarse con un cristal de 4 MHz. list p=16f84 include
; Además, en cada interrupción de TIMER decrementaremos la variable CONTTMR en uno. Como inicialmente la variable CONTTMR vale 8 (decimal), tendremos que decrementarla 8 veces para que llegue a valer 0. Por lo tanto, en 8 interrupciones de TIMER la variable CONTTMR valdrá cero y en ese momento prenderemos o apagaremos el LED. En otras palabras, cada 8 interrupciones * 64 ms/interrupción = 0.512 segs prenderemos o apagaremos el LED. BSF INTCON, GIE; HABILITA TODAS LAS INTERRUPCIONES
; Definición de variables CONTL EQU H’0C’; variables CONTH EQU H’0D’; contadores en rutinas de retardo CONTTMR EQU H'20' FLAGS EQU H'11' AUX EQU H'33' W_AUX EQU H'34' ; Definición de constantes LED EQU 0 MEDIOSEGUNDO EQU 0 ORG H'00' GOTO PARTIDA ORG H'04' GOTO INTERR PARTIDA BCF STATUS, RP1 BSF STATUS, RP0; BANK 1 MOVLW H'00' MOVWF TRISA ; PORTA OUTPUTS MOVLW H'FF' MOVWF TRISB ; PORTB ES INPUT MOVLW B’10000111’; CONFIGURA OPTION REG. (prescaler 1:256) MOVWF OPTION_REG MOVLW B’00100000’; CONFIGURA INTCON (ENABLE INT TMR0, ; DISABLE RB0/INT, ; DISABLE GLOBAL INT.) MOVWF INTCON BCF STATUS, RP0; BANK 0 CLRF FLAGS CLRF PORTA
LOOP BTFSC FLAGS, MEDIOSEGUNDO; revisa el flag que indica que ha transcurrido medio segundo. CALL CAMBIA_LED; si ha transcurrido medio segundo cambia el valor del LED. GOTO LOOP ;****** Rutina de interrupción ******** INTERR MOVWF W_AUX ; respaldo de w (por si acaso) BTFSC INTCON, T0IF; pregunta si interrupción fue por timer GOTO TIEMPO ; va a subrutina tiempo, si interrupción fue de timer MOVF W_AUX, W ; recupera w RETFIE TIEMPO DECFSZ CONTTMR, F GOTO RECUPERA_INT ; si al decrementar el resultado no fue 0 se va a recupera_int BSF FLAGS, MEDIOSEGUNDO; se decremento y dio 0, por lo tanto ha pasado medio segundo (flag MEDIOSEGUNDO=1) MOVLW .8 MOVWF CONTTMR RECUPERA_INT MOVLW .6 MOVWF TMR0 ; INTERRUPCIONES C/64 ms BCF INTCON, T0IF; flag de int.de TMR0 se borra para permitir nuevas interrupciones de timer MOVF W_AUX, W RETFIE ;****** Fin rutina de interrupción ****
; Al configurar el prescaler en 1:256, cada 256 ciclos de instrucción (1 useg/ciclo para cristal de 4 Mhz) se incrementa en 1 el registro TMR0. Es decir, cada 256 useg TMR0 aumenta en 1. Recuerden que el TIMER hace overflow cuando el TMR0 pasa de FF a 00. MOVLW .6 ; 256-250=6 MOVWF TMR0 ; INTERRUPCIONES C/64 ms ; Al cargar un 6 (decimal) en el TMRO, entonces se necesitarán 250 incrementos de TMR0 para que haga overflow. En otras palabras, en 250 * 256 useg = 64000 useg = 64 mseg se producirá el próximo overflow y, por lo tanto, la próxima interrupción de TIMER. MOVLW .8 MOVWF CONTTMR ; 64 ms * 8 =0.512 segs.
CAMBIA_LED; si LED=0 se hace LED=1 y viceversa BTFSS PORTA, LED GOTO PRENDE_LED BCF PORTA, LED BCF FLAGS, MEDIOSEGUNDO RETURN PRENDE_LED BSF PORTA, LED BCF FLAGS, MEDIOSEGUNDO RETURN END
BIBLIOGRAFÍA - “Sistemas Digitales, Principios y aplicaciones”, Ronald J. Tocci, 6ta edición. - “Sistemas Digitales”, Ing. Carlos Novillo. - “Sistemas Micro procesados”, Ing. Carlos Novillo. - http://electronicadesarrollo.blogspot.com/2007/12/programacin-de-pics.html - http://www.jlking.cl/ejemplos/pic/timer84.html - http://es.wikipedia.org/wiki/Microprocesador - http://es.wikipedia.org/wiki/Memoria_(inform%C3%A1tica)