Microprocesador. El microprocesador (o simplemente procesador), es el circuito integrado central más complejo de un sistema informático, es el encargado de ejecutar los programas desde el sistema operativo hasta las aplicaciones de usuario; solo ejecuta instrucciones programadas en lenguaje de bajo nivel, realizando operaciones aritméticas y lógicas simples. Esta unidad central de procesamiento (CPU) esta constituida, esencialmente, por registros, una unidad de control, una unidad aritmético lógica (ALU) y una unidad de cálculo en coma flotante (conocida antiguamente como coprocesador matemático). Un microprocesador es un dispositivo electrónico que necesita de todos los periféricos para poder funcionar correctamente, es decir, tener una motherboard como sopor te (con todos los buses que necesite nece site el microprocesador: bus de dirección, dirección , de datos, de control, etc.), tener también el banco de memoria tanto RAM como ROM y más. Este microprocesador puede hacer cualquier función que se le ordene dependiendo del software que lo gobierne. En un microcontrolador, internamente, ya están implementados todos los buses, el banco de memoria, clock, temporizadores, etc, y también está el software que lo gobierna, pero este software es único y tiene una sola función la cual es para el cual fue diseñado. Es un sistema cerrado mientras que un microprocesador es un sistema abierto desde este punto de vista, puede realizar muchísimas más funciones ahora y cambiar dentro de 3 segundos si se lo desea. Microcontrolador. Un microcontrolador es una máquina electrónica basada en un ordenador; con base en entradas realiza operaciones lógicas y aritméticas que puede almacenar (datos), para generar salidas; estas operaciones se implementan mediante instrucciones en orden secuencialmente lógico (programa). Un microcontrolador es un circuito integrado que en su interior contiene una unidad central de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de entrada y de salida y periféricos, estas partes están interconectadas dentro del microcontrolador y en conjunto forman lo que se conoce como microcomputadora. Es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Partes Básicas. Un MCU consta de tres partes básicas: 1. ALU: Unidad Lógica Aritmética. La ALU es la unidad encargada de realizar operaciones con los datos, realiza operaciones: Aritméticas: tales como sumar, restar.
Lógicas: como AND, OR, EXOR, negación, complemento, rotación. Toma de desiciones: como bifurcación por prueba de verdadero o falso, por valor 0 o 1, por prueba de valor 0 en contadores. Manejo de Datos: direccionamientos directos o indirectos, lectura y escritura.
2. I/O: Dispositivos de entrada y salida. Estas son las unidades básicas que tiene un MCU para comunicarse con el m undo exterior; por ellas entran y salen los datos. Como unidades básicas, están los puertos digitales que son agrupaciones de pines bajo un mismo nombre (PORTA, PORTB); la denominación de los pines contiene el nombre del puerto correspondiente (RA1, RA2, o RB5, RB7). Estos pines comparten el funcionamiento con otros módulos especializados, como A/D (Análogo a Digital), comparator (comparadores), timers (temporizadores), PWM, SCI (Serial Communication Interface), SPI (Serial Peripheral Interface), entre otros. La forma como están distribuidos los pines es llamada pinout. 3. Memoria: Almacenamiento de datos y programa. La memoria es aquella unidad que maneja los datos y puede ser: de datos (RAM: Random Acces Memory) y de programa (ROM: Read Only Memory). Los datos en RAM permanece mientras haya suministro de energía, y los datos en ROM permanece aunque no haya suministro de energía. Estos bloques de memoria son accedidos por diferentes periféricos mediante buses de datos y direcciones, y sus correspondientes latch y buffer para el adecuado transporte de los datos. La distribución de estas áreas de memoria es conocida como mapa de memoria. En la RAM se encuentran los registros especiales propios del MCU para su funcionamiento y registros de propósito general o de usuario. También encontraremos una memoria especial de datos, EEPROM, la cual guarda datos de una manera especial cuando falta la alimentación de energía. Igualmente, en la ROM encontramos áreas o bloques propios del MCU para su funcionamiento, y áreas de programa de usuario. Sistema Embebido. Un sistema embebido o empotrado es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real, al contrario de lo que ocurre con los ordenadores de propósito general (como por ejemplo una computadora personal). Por lo general los sistemas embebidos se pueden programar directamente en el lenguaje ensamblador (lenguaje de programación de bajo nivel), del microcontrolador o microprocesador incorporado sobre el mismo, o también, utilizando los compiladores específicos pueden utilizarse lenguajes como C o C++, cuando el tiempo de respuesta de la aplicación no es un factor crítico, también pueden utilizarse lenguajes interpretados como JAVA.
Mnemónico: En informática un mnemónico o nemónico es una palabra que
sustituye a un código de operación (lenguaje de la máquina), con lo cual resulta más fácil la programación. Un ejemplo común es la instrucción MOV (mover), que le indica al microprocesador que debe asignar datos de un lugar a otro. Arquitectura Neuman. Tradicionalmente los sistemas con microprocesadores se basan en esta arquitectura, en la cual la unidad central de proceso (CPU), está conectada a una memoria principal única (casi siempre solo RAM), donde se guardan las instrucciones del programa y los datos. A dicha memoria se accede a través de un sistema de buses ú nico (control, direcciones y datos). En un sistema con arquitectura Von Neuman el tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus que comunica la memoria con la CPU. Así un microprocesador de 8 bits (bytes) de longitud, si tiene que acceder a una instrucción o dato de más de un byte de longitud, tendrá que rea lizar más de un acceso a la memoria. El tener un único bus hace que el microprocesador sea más lento en su respuesta, ya que no puede buscar en memoria una nueva instrucción mientras no finalicen las transferencias de datos de la instrucción anterior. Las principales limitaciones que nos encontramos en la arquitectura Von Neuman son:
La limitación de la longitud de las instrucciones por el bus de datos, que hace que el microprocesador tenga que realizar varios accesos a memoria para buscar instrucciones complejas. La limitación de la velocidad de operación a causa del bus único para datos e instrucciones que no deja acceder simultáneamente a unos y otras, lo cual impide superponer ambos tiempos de acceso.
La arquitectura Neuman realiza o emula los siguientes pasos secuencialmente: 1. Obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador del programa y la guarda en el registro de instrucción. 2. Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente. 3. Descodifica la instrucción mediante la unidad de control. Esta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada. 4. Se ejecita la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. 5. Regresa al paso N°1
Arquitectura Harvard. Este modelo, que utilizan los microcontroladores PIC, tiene la unidad central de proceso (CPU) conectada a dos memorias {una de instrucciones (instrucciones de programa, memoria de programa) (ROM) y una de datos (RAM)}, por medio de dos buses diferentes. Ambos buses son totalmente independientes, lo que permite que la CPU pueda acceder de forma independiente y simultánea a la memoria de datos y a la de instrucciones. Como los buses son independientes estos pueden tener distintos contenidos en la misma dirección y también distinta longitud. También la longitud de los datos y las instrucciones pueden ser distinta, lo que optimiza el uso de la memoria en general. Para un procesador de Set de Instrucciones Reducidos, o RISC (Reduced Instruction Set Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones tengan una sola posición de memoria de programa de longitud. Además, al ser los buses independientes, la CPU puede acceder a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la siguiente instrucción a ejecutar. Ventajas de la Arquitectura Harvard:
El tamaño de las instrucciones no está relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa. El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación.
Instrucciones.
RISC. (Propia de la arquitectura Harvard).
Del inglés Reduced Instruction Set Computer, en español Computador con Conjunto de Instrucciones Reducidas. Es un tipo de diseño de CPU que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo en ejecutarse. Instrucciones < 100.
CISC. (Propia de la arquitectura Neuman).
Del inglés Complex Instruction Set Computer, en español Computador con Conjunto de Instrucciones Complejas. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC.
El tipo de procesador más comúnmente utilizado en equipos de escritorio (el x86) está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución. Instrucciones > 100. Capacidad de Memoria. = 2
Bytes. = Líneas de Direcciones.
CM= Cantidad de Memoria (Bytes).
Esta ecuación solo se aplica cuando las líneas de datos son 8 bits = ∗ 2 Bits. m= Líneas de Datos.
CM= Cantidad de Memoria (Bits).
log = .
Microcontroladores PIC. El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface Controller), conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la compañía General Instruments. Este chip denominado PIC1650 fue diseñado para propósitos completamente diferentes. Diez años más tarde, al añadir una memoria EEPROM, este circuito se convirtió en un verdadero microcontrolador PIC. Hace unos pocos años la compañía Microchip Technology fabricó la 5 billonésima muestra.
Todos los microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere decir que su memoria de programa está conectada a la CPU por más de 8 líneas. Hay microcontroladores de 12, 14 y 16 bits, dependiendo de la anchura del bus. La tabla anterior muestra las características principales de estas tres categorías. Como se puede ver en la tabla de la página anter ior, salvo “los monstruos de 16 bits” PIC 24FXXX y PIC 24HXXX – todos los microcontroladores tienen la arquitectura Harvard de
8 bits y pertenecen a una de las tres grandes grupos. Por eso, dependiendo del tamaño de palabra de programa existen la primera, la segunda y la tercera categoría de microcontroladores, es decir microcontroladores de 12, 14 o 16 bits. Puesto que disponen del núcleo similar de 8 bits, todos uti lizan el mismo juego de instrucciones y el “esqueleto” básico de hardware conectado a más o menos unidades periféricas. Los microcontroladores PIC con palabras de programa de 14 bits parecen ser la mejor opción para los principiantes. Algunas ventajas de los microcontroladores PIC de Microchip:
Eficiencia del código: permiten una gran compactación de los programas. Rapidez de ejecución: a frecuencia de 20MHz->5 millones de instr./seg. Seguridad en acceso por la separación de memoria de datos y de programa. Juego reducido de instrucciones y de fácil aprendizaje. Compatibilidad de pines y código entre dispositivos de la misma familia o sin reducción de las prestaciones internas (muy versátiles). Gran variedad de versiones en distintos encapsulados (desde 8 hasta 84 pines) sin reducción de las prestaciones internas (muy versátiles). Posibilidad de protección del código muy fiable. Herramientas de desarrollo software y hardware abundantes y de bajo coste.
Familia PIC16CXXX/16FXXX + PIC 14000:
Encapsulados desde 18 hasta 68 pines (DIP, SSOP, PLCC, QFP). Instrucciones de 14 bits en Memoria de Programa. Juego de 35 instrucciones. Gran variedad de módulos integrados. PIC32 (Nueva gama de PIC de 32 bits).
Programación del PIC:
Para transferir el código de un ordenador al PIC normalmente se usa un dispositivo llamado programador. La mayoría de PICs que Microchip distribuye hoy en día incorporan ICSP (In Circuit Serial Programming, programación serie incorporada) o LVP (Low Voltage Programming, programación a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 como reloj y datos y el MCLR para activar el modo programación aplicando un voltaje de 13 voltios.
Existen muchos programadores de PICs, desde los más simples que dejan al software los detalles de comunicaciones, a los más complejos, que pueden verificar el dispositivo a diversas tensiones de alimentación e implementan en hardware casi todas las funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs preprogramados como interfaz para enviar las órdenes al PIC que se desea programar. Uno de los programadores más simples es el TE20, que utiliza la línea TX del puerto RS232 como alimentación y las líneas DTR y CTS para mandar o recibir datos cuando el microcontrolador está en modo programación. El sofware de programación puede ser el ICprog, muy común entre la gente que utiliza este tipo de microcontroladores. Programadores:
PICStart Plus (puerto serie y USB). Promate II (puerto serie). MPLAB PM3 (puerto serie y USB). ICD2 (puerto serie y USB). PICKit 1 (USB) IC-Prog 1.06B. PICAT 1.25 (puerto USB2.0 para PICs y Atmel). WinPic 800 (puerto paralelo, serie y USB). Terusb1.0.
Depuradores integrados :
ICD (Serie). ICD2 (USB).
Emuladores : Proteus – ISIS.
ICE2000 (puerto paralelo, convertidor a USB disponible). ICE4000 (USB). PIC EMU. PIC CDlite.
Juego de Instrucciones:
El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones en total. La razón para un número tan reducido de instrucciones yace en la arquietectura RISC. Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto de la velocidad operativa, la sencillez de la arquitectura y la compacidad del código. Lo malo de la arquitectura RISC es que se espera del programador que haga frente a estas instrucciones. Por supuesto, esto es relevante sólo si se utiliza el lenguaje ensamblador para la programación. Tiempo de ejecucion de instrucciones:
Todas las instrucciones se ejecutan en un ciclo. La únicas excepciones pueden ser las instrucciones de ramificación condicional o las instrucciones que cambian el contenido del contador de programa. En ambos casos, dos ciclos de reloj son necesarios para la ejecución de la instrucción, mientras que el segundo ciclo se ejecuta como un NOP (No operation). Las instrucciones de un ciclo consisten en cuatro ciclos de reloj. Si se utiliza
un oscilador de 4 MHz, el tiempo nominal para la ejecución de la instrucción es 1μS. En
cuanto a las instrucciones de ramificación, el tiempo de ejecución de la instrucción es 2μS Juego de instrucciones de los microco ntroladores PIC de 14 bits:
1. Si un registro de E/S está modificado, el valor utilizado será el valor presentado en los pines del microcontrolador.
2. Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado. 3. Si la instrucción se ejecuta en el registro TMR y si d=1, el pre-escalador será borrado.
Arquitectura de los microcontroladores PIC de 8 bits:
IDE. Un entorno de desarrollo integrado1 2 o entorno de desarrollo interactivo, en inglés Integrated Development Environment (IDE), es una aplicación informática que proporciona servicios integrales para facilitarle al desarrollador o programador el desarrollo de software.
Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDE tienen auto-completado inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. El límite entre un IDE y otras partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica de usuario (GUI, por sus siglas en inglés) se integran un sistema controlador de versión y varias herramientas. Muchos IDE modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos. Los IDE están diseñados para maximizar la productividad del programador proporcionando componentes muy unidos con interfaces de usuario similares. Los IDE presentan un único programa en el que se lleva a cabo todo el desarrollo. Generalmente, este programa suele ofrecer muchas características para la creación, modificación, compilación, implementación y depuración de software. Esto contrasta con el desarrollo de software utilizando herramientas no relacionadas, como Vi, GNU Compiler Collection (GCC) oMake. Uno de los propósitos de los IDE es reducir la configuración necesaria para reconstruir múltiples utilidades de desarrollo, en vez de proveer el m ismo set de servicios como una unidad cohesiva. Reduciendo ese tiempo de ajustes, se puede incrementar la productividad de desarrollo, en casos donde aprender a usar un IDE es más rápido que integrar manualmente todas las herramientas por separado. Una mejor integración de todos los procesos de desarrollo hace posible mejorar la productividad en general, más que únicamente ayudando con los ajustes de configuración. Por ejemplo, el código puede ser continuamente armado, mientras es editado, previendo retroalimentación instantánea, como cuando hay errores de sintaxis. Esto puede ayudar a aprender un nuevo lenguaje de programación de una manera más rápida, así como sus librerías asociadas. Algunos IDE están dedicados específicamente a un lenguaje de programación, permitiendo que las características sean lo más cercanas al paradigma de programación de dicho lenguaje. Por otro lado, existen muchos IDE de múltiples lenguajes tales como Eclipse, ActiveState Komodo, IntelliJ IDEA, MyEclipse, Oracle JDeveloper, NetBeans, Codenvy y Microsoft Visual Studio. Xcode, Xojo y Delphi están dedicados a un lenguaje cerrado o a un tipo de ajustes de tipos de lenguajes de programación. Mientras la mayoría de los IDE modernos son gráficos, los editores de textos (como Turbo Pascal) eran populares antes de que los sistemas de ventanas se hicieran disponibles, tales como Microsoft Windows y X Window System (X11). Estos usan funciones por medio de teclas rápidas para ejecutar comandos o macros frecuentemente usados.
Memorias. 1. RAM.
DRAM, SDRAM. Memoria estática, constituida por registros, es decir, el
conjunto de flip flops son mas costosas.
SRAM. Memoria Dinámica, constituidas por capacidores.
2. ROM.
Enmascarable. OTP. Una sola vez programmable. PROM. Una vez programada no se puede borrar. EPROM. Se puede borrar usando luz ultravioleta. EEPROM. Borrable Electricamente FLASH. Es una EEPROM con un ciclo de escritura mas rápido