Arquitectura

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.

basic_arq.png
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

Anti-lock brakes. Auto-focus cameras. Automatic teller machines.
Automatic toll systems. Automatic transmission. Avionic systems.
Battery chargers. Camcorders. Cell phones.
Cell-phone base stations. Cordless phones. Cruise control.
Curbside check-in systems. Digital cameras. Disk drives.
Electronic card readers. Electronic instruments. Electronic games
Electronic toys. Factory control. Fax machines.
Fingerprint identifiers. Home security systems. Life-support systems.
Medical testing systems. Modems. MPEG decoders.
Network cards. Network switches/routers. On-board navigation Pagers.
Photocopiers. Point-of-sale systems. Portable video games.
Printers. Satellite phones. Scanners.
Smart ovens/dishwashers. Speech recognizers. Stereo systems.
Teleconferencing systems. Televisions. Temperature controllers.
Theft tracking systems. TV set-top boxes. VCR’s, DVD players.
Video game consoles. Washers and dryers La lista continua y continua…….
sis_emb1.png
sis_emb2.png
sis_emb3.png
sis_emb4.png
sis_emb5.png
sis_emb6.png

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.

  • Una memoria almacena datos e instrucciones
  • Se comparten un bus de datos y uno de direcciones entre la memoria y la CPU.
  • No se pueden leer datos e instruccione de manera concurrente lo cual se conoce como cuello de botella y afecta directamente el rendimiento general del sistema.
von_neumman.png

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].

  • Memorias separadas para datos e instrucciones.
  • Dos buses para datos y para direcciones entre las memorias y la CPU.
  • Esta arquitectura permite tomar información de las memorias de datos e instrucciones de manera simultanea.
harvard_arq.png

Diagrama de bloques Arquitectura Harvard.

Arquitectura del nucleo AVR

Note que:

  • Arquitectura Harvard
  • Tiene memorias dedicadas
  • Registros de propósito especial
  • Registros de propósito general
  • "Unidades" de proposito especial
  • ALU
avr_arq.png

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.

avr_arq1.png

Diagrama de bloques Arquitectura Nucleo AVR.

Función de los registros

El 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.

avr_arq2.png

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.

avr_arq3.png

Diagrama de bloques Arquitectura Nucleo AVR.

Instrucciones AVR y Memoria de Programa

El 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.

avr_arq4.png

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

avr_arq5.png

Registro de Estado del Nucleo AVR (SREG - Status Register).

Bit 7 - I: Habilitación de Interrupción Global (Global Interrupt Enable)

El bit de habilitación de interrupción global se debe establecer para las interrupciones que se activen. Si el registro de activacion global de interrupciones se borra, ninguna de las interrupciones estará habilitada independientemente de la configuración individual. El I-bit se borra por hardware después de haberse producido una interrupción, y se establece por la instrucción RETI con el fin de habilitar las interrupciones posteriores. El bit I también se puede establecer y borrar por software con las instrucciones de SEI y CLI, como se describe en la referencia del conjunto de instrucciones(instruction set).i

Bit 6 - T: Bit Copy Storage

Las instrucciones de copia de bits BLD (Bit LoaD) y BST (Bit STore) utilizan el T-bit como origen o destino para el bit operado. Un bit de un registro en el archivo de Registro se puede copiar en T por la instrucción BST, y un bit en T se puede copiar en un bit en un registro en el archivo de registro con la instrucción BLD.

Bit 5 - H: Bandera de medio acarreo (Half Carry Flag)

La bandera de medio acarreo H indica un medio acarreo en algunas operaciones aritméticas. El medio acarreo es útil en aritmética BCD. Ver la sección "Instruction set Description" para obtener información detallada.(ver datasheet)

Bit 4 - S: Bit de Signo, S = N XOR V

El bit-S es siempre una o exclusiva entre la bandera negativa N y la bandera V - desbordamiento en complemento a 2. Ver la sección "Instruction set Description" para obtener información detallada.(ver datasheet)

Bit 3 - V: Bandera de desborde en complemento a 2.

Utilizada en aritmética en complemento a 2.

Bit 2 - N: Bandera Negativo.

Indica si el resultado de una operación aritmética o lógica es negativo.

Bit 1 - Z: Bandera Cero

Indica si el resultado de una operación aritmética o lógica es cero.

Bit 0 - C: Bandera de Acarreo

Indica que hay acarreo en una operación lógica o aritmética.

Banco de Registros

El 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:

  • Un operando de salida de 8 bits y una entrada de número 8 bits
  • Dos operandos de salida de 8 bits y una entrada de resultado de 8 bits
  • Dos operandos de salida de 8 bits y una entrada de resultado 16 bits
  • Un operando de salida de 16 bits y una entrada número 16 bits

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

avr_arq6.png

Registros de propósito general AVR.

avr_arq7.png

Registros X, Y, Z.

La Pila y el Apuntador de la Pila (The Stack and Stack Pointer)

avr_arq8.png

Stack Pointer (SPH y SPL)

La pila se utiliza principalmente para el almacenamiento de datos temporales, para el almacenamiento de variables locales y para almacenar direcciones de retorno después de interrupciones y llamadas a subrutinas. El puntero de pila Registro siempre apunta a la parte superior de la pila. La pila se implementa de manera que se llena desde posiciones de memoria superiores a posiciones inferiores de memoria. Esto implica que un comando Pila PUSH disminuye el puntero de pila.

El puntero de pila es implementado como dos registros de 8 bits en el espacio de E/S. El número de bits utilizados realmente depende de la implementación. El espacio de datos en algunas implementaciones de la arquitectura AVR es tan pequeña que sólo se necesita SPL. En este caso, el Registro SPH no estará presente.

El apuntador de la pila, apunta a la zona de la SRAM de datos, donde se encuentran las pilas de subrutina e interrupción. Este espacio de pila en la SRAM de datos debe ser definido por el programa antes de que se ejecuten todas las llamadas a subrutinas o sean habilitadas las interrupciones .

Microcontrolador ATMEGA16

  • Microcontrolador AVR de 8 bit de alto rendimiento y bajo consumo.
  • Arquitectura RISC avanzada.
    • 131 instrucciones. La mayoría de un simple ciclo de clock de ejecución.
    • 32 x 8 registros de trabajo de propósito general.
    • Capacidad de procesamiento de unos 16 MIPS a 16 MHz.
    • Funcionamiento estático total.
    • Multiplicador On-Chip de 2 ciclos
  • Memorias de programa y de datos no volátiles.
    • 16K bytes de FLASH autoprogramable en sistema.
    • EEPROM 512 Bytes
    • SRAM interna 1Kbyte
  • Interfaz JTAG.
    • Capacidades de Boundary Scan de acuerdo con el Estandar (norma) JTAG.
  • Características de los periféricos.
    • Dos Timer/Contadores de 8 bits con prescaler separado y modo comparación.
    • Un Timer/Contador de 16 bits con prescaler separado, modo comparación y modo de captura.
    • Comparador analógico On-Chip.
    • Timer watchdog programable con oscilador separado On-Chip.
    • Interface serie SPI maestro/esclavo.
    • USART serie programable.
    • ADC de 10 bit y 8 canales.
    • 4 canales de PWM.
    • Interface serie de dos hilos orientada a byte.
  • Características especiales del microcontrolador.
    • Reset de Power-on y detección de Brown-out programable.
    • Oscilador RC interno calibrado.
    • Fuentes de interrupción externas e internas.
    • 6 modos de descanso: Idle, reducción de ruido ADC, Power-save, Power-down, Standby y Standby extendido.
  • I/O y encapsulados
    • 32 líneas de I/O programables.
    • PDIP de 40 pines, TQFP y MLF de 44 pines.
  • Tensiones de funcionamiento.
    • 2.7 - 5.5V (ATmega16L).
    • 4.5 - 5.5V (ATmega16).
  • Niveles de velocidad.
    • 0 - 8 MHz (ATmega16L).
    • 0 - 16 MHz (ATmega16).
atmega16_arq.png

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

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License