Objetivos
- Entender la diferencia entre microprocesador, microcomputador y microcontrolador.
- Examinar la arquitectura del nucleo AVR
- Examinar el diagrama de bloques del microcontrolador ATmega16.
El microprocesador
Un microprocesador es un circuito integrado (IC) que acepta y ejecuta instrucciones codificadas (código de máquina o lenguaje de máquina) con el propósito de manipular los datos y controlar los circuitos asociados (RAM, ROM, and I/O ICs) en un sistema digital a continuación se muestran los bloques básicos de un microprocesador.

Bloques Básicos del Microprocesador [1]
Unidad Aritmético Lógica (ALU)
La ALU es el elemento de procesamiento mas importante del microprocesador. Dirigida por la unidad de control, realiza operaciones aritméticas (suma, resta, multiplicación y división) y operaciones lógicas (NOT, AD, OR y OR-exclusiva), entre otras. Los datos con los que trabaja la ALU se obtienen de la Unidad de registro.
Unidad de control.
La unidad de control se encarga del procesamiento de las instrucciones una vez que se han decodificado. Proporciona las señales de temporización y de control para introducir y extraer datos en el microprocesador y para sincronizar la ejecución de las instrucciones.
Unidad de Registro.
La unidad de registro es una colección de registros contenida en el microprocesador. Durante la ejecución de un programa, los datos y las direcciones de memoria se almacenan temporalmente en los registros que forman esta matriz. La ALU puede acceder a esos registros muy rápidamente, lo que permite que el programa se ejecute de forma más eficiente. Algunos registros se consideran de propósito general, lo que quiere decir que pueden ser empleados para cualquier propósito dictado por el programa. Otros registros tienen funciones y capacidades específicas y no pueden emplearse como registros de propósito general.
Existen, por último, otros registros denominados registros invisibles para el programa, que sólo el microprocesador emplea y que no están disponibles para el programador.
Microcontrolador
La diferencia entre un microcontrolador y un microprocesador es que el microcontrolador también contiene RAM, ROM, y módulos periféricos en un mismo integrado. Esto permite la miniaturización de aplicaciones controlador con microprocesadores, es posible decir entonces que un microcontrolador es una computadora en un circuito integrado.
Su construcción e integración los hace los hace ideales para funciones específicas en una amplia gama de aplicaciones (Sistemas Embebidos).
Sistemas Embebidos
Es un sistema computacional diseñado para realizar una o algunas funciones específicas al contrario que las computadoras de escritorio que son diseñadas para cubrir un amplio rango de necesidades, en un sistema embebido normalmente todos los componentes se encuentran en una sola placa y generalmente son de tamaño muy reducido. A continuación se presentan algunas de las aplicaciones en donde podemos encontrar sistemas embebidos y por lo tanto microprocesadores y microcontroladores.
Ejemplos de sistemas embebidos
|
|
Arquitecturas
Arquitectura Von Neumman
También conocida como modelo de Von Neumann o arquitectura Princeton, es una arquitectura basada en la descrita en 1945 por el matemático y físico John von Neumann en un informe de la computadora EDVAC.
|
![]() Diagrama de bloques Arquitectura Von Neumman[2]. |
Arquitectura Harvard
La arquitectura Harvard es una arquitectura de computadora con pistas de almacenamiento y de señal físicamente separadas para las instrucciones y para los datos. El término proviene de la computadora Harvard Mark I basada en relés, que almacenaba las instrucciones sobre cintas perforadas (de 24 bits de ancho) y los datos en interruptores electromecánicos. Estas primeras máquinas tenían almacenamiento de datos totalmente contenido dentro la unidad central de proceso, y no proporcionaban acceso al almacenamiento de instrucciones como datos. Los programas necesitaban ser cargados por un operador; el procesador no podría arrancar por sí mismo[3].
|
![]() Diagrama de bloques Arquitectura Harvard. |
Arquitectura del nucleo AVR
Note que:
|
![]() Diagrama de bloques Arquitectura Nucleo AVR. |
Los bloques mostrados en azul son típicos de un microprocesador. Los otros bloques, por ejemplo, memorias y unidades de propósito especial son lo que define la diferencia entre un microprocesador y un microcontrolador. La función principal del núcleo de la CPU es asegurar la ejecución correcta del programa. Por consiguiente, la CPU debe ser capaz de acceder a las memorias, realizar cálculos, controlar los periféricos y manejar las interrupciones. |
![]() Diagrama de bloques Arquitectura Nucleo AVR. |
Función de los registrosEl archivo de Registro de acceso rápido contiene 32 x 8 bits registros de trabajo de propósito general con tiempo de acceso de un único ciclo de reloj. Esto permite que un solo ciclo la Unidad Aritmético Lógica (ALU) realice una operación. En una operación típica ALU, dos operandos son emitidos desde el archivo de Registro, se ejecuta la operación, y el resultado se almacena en el archivo de Registro - en un solo ciclo de reloj. Seis de los 32 registros pueden ser utilizados como tres registros apuntadores de dirección indirecta de 16 bits para el direccionamiento del espacio de datos - que permiten cálculos de dirección eficientes. Uno de estos apuntadores de dirección de también se puede utilizar como un indicador de dirección de tablas de consulta en la memoria flash de programa. Estos registros de funciones añadidas son el registro X, el registro Y y el registro Z de 16 bits. |
![]() Diagrama de bloques Arquitectura Nucleo AVR. |
Unidad Aritmético Lógica (ALU)La ALU soporta operaciones aritméticas y lógicas entre registros o entre una constante y un registro. Las operaciones entre registros también se pueden ejecutar en la ALU. Después de una operación aritmética, el registro de estado se actualiza para reflejar la información sobre el resultado de la operación. |
![]() Diagrama de bloques Arquitectura Nucleo AVR. |
Instrucciones AVR y Memoria de ProgramaEl flujo del programa es proporcionado por saltos condicionales e incondicionales e instrucciones de llamado, capaces de abordar directamente todo el espacio de direcciones. La mayoría de las instrucciones AVR tienen un único formato de palabra de 16 bits. Cada dirección de memoria de programa contiene una instrucción de 16 o 32 bits El espacio de memoria Flash de programa se divide en dos secciones, la sección del programa de arranque y la sección del programa de aplicación. Ambas secciones tienen bits de bloqueo dedicados para la protección de escritura y lectura/escritura. |
![]() Diagrama de bloques Arquitectura Nucleo AVR. |
Status Register (SREG)El registro de estado contiene información sobre el resultado de la instrucción aritmética ejecutada más recientemente. Esta información se puede utilizar para alterar el flujo del programa con el fin de realizar operaciones condicionales. El registro de estado se actualiza después de todas las operaciones de la ALU, como se especifica en la referencia del conjunto de instrucciones. Esto, en muchos casos eliminará la necesidad de utilizar instrucciones dedicadas para comparar, resultando en un código más rápido y más compacto. El registro de estado no se guarda automáticamente al entrar en una rutina de interrupción ni restaurado al volver de una interrupción. Esto debe ser manejado por software ![]() Registro de Estado del Nucleo AVR (SREG - Status Register).
|
Banco de RegistrosEl banco de registros está optimizado para el conjunto de instrucciones RISC AVR mejorado. Con el fin de lograr el rendimiento y la flexibilidad requerida, los siguientes esquemas de entrada / salida están soportados por el banco de registros:
Los registros R26..R31 tienen algunas funciones añadidas a su uso de propósito general. Estos son apuntadores de direcciones de 16 bits para direccionamiento indirecto del espacio de datos. Los tres registros de direccionamiento X, Y, y Z se definen como se describe en la figura |
![]() Registros de propósito general AVR. ![]() Registros X, Y, Z. |
La Pila y el Apuntador de la Pila (The Stack and Stack Pointer)![]() Stack Pointer (SPH y SPL)
|
Microcontrolador ATMEGA16
|
![]() Diagrama de Bloques ATMega16. |
Referencias
[1] Thomas L. Floyd, Fundamentos de Sistemas Digitales, 7ma Edición, Prentice Hall
[2] Introduccion a “The First Draft Report on the EDVAC” by John von Neumann, Michael D. Godfrey, disponible en linea: https://web.archive.org/web/20130314123032/http://qss.stanford.edu/~godfrey/vonNeumann/vnedvac.pdf
[3] https://es.wikipedia.org/wiki/Arquitectura_Harvard