![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
VISIÓN DE CONJUNTO DE LA ARQUITECTURA |
El concepto de acceso rápido al archivo de registro contiene 32 x 8-bit registros de trabajo de propósito general con un tiempo de acceso de un solo ciclo de clock. Esto significa que durante un solo ciclo de clock, se ejecuta una operación de ALU (Unidad Aritmético-Lógica). Dos operandos son la salida del archivo de registro, la operación se ejecuta y el resultado se guarda en el archivo de registro en un ciclo de clock. Pueden usarse seis de los 32 registros como tres punteros de registro de dirección indirectos para el direccionamiento del espacio de datos, habilitando cálculos de dirección eficaces. También se usa uno de los tres punteros de dirección para observar la tabla de constantes. Estos registros de funciones agregados son los registros de 16-bit X, Y y Z. La ALU soporta funciones aritméticas y lógicas entre los registros o entre una constante y un registro. También se ejecutan operaciones de un único registro en la ALU. Además del funcionamiento del registro, los modos de direccionamiento de memoria convencionales pueden usarse también en el archivo de registro. Esto es habilitado por el hecho que al archivo de registro se le asignan las 32 direcciones de la parte baja del espacio de datos ($00 - &1F), permitiéndoles ser accedidos como si ellos fueran posiciones de memoria ordinarias. El espacio de memoria de I/O contiene 64 direcciones para las funciones periféricas de la CPU como los registros de control, Timer/Contadores, convertidores A/D y otras funciones de I/O. La memoria de I/O puede ser accedida directamente o con las direcciones de espacio de datos de esos archivos de registro , $20 - $5F. El AVR utiliza el concepto de arquitectura Harvard, con memorias separadas y buses para programa y datos. La memoria de programa se ejecuta con un sistema de dos fases. Mientras una instrucción está ejecutándose, la siguiente instrucción se pre-extrae de la memoria de programa. Este concepto permite varias instrucciones en cada ciclo de clock. La memoria de programa es la memoria FLASH programable en el sistema. Con las instrucciones de salto relativo (relative jump) y llamada (call), se acceden directamente los 4K de espacio de direcciones. La mayoría de las instrucciones de los AVR tiene el formato simple de palabra (word) de 16-bit. Cada dirección de memoria de programa contiene una instrucción de 16 o 32 bit. Durante las interrupciones y las llamadas a subrutinas, la dirección de retorno del contador de programa (PC) se guarda en la pila. La pila está de forma acertada situada en la SRAM de datos general y por consiguiente, el tamaño de la pila está sólo limitado por el tamaño total de la SRAM y por el uso de la SRAM. Todos los programas del usuario deben inicializar el SP en la rutina de Reset (antes de la ejecución de subrutinas o interrupciones). El puntero de pila (SP) de 16 bit es accesible para lectura y escritura en el espacio de I/O. Los 512 byte de la SRAM de datos pueden ser accedidos fácilmente a través de los cinco modos de direccionamiento diferentes soportados en la arquitectura AVR. Los espacios de memoria en la arquitectura AVR son todos mapas de memoria lineales y regulares. |
Figura. Arquitectura del AVR RISC AT90S8515 |
Un módulo de interrupción flexible tiene sus registros de control en el espacio de I/O con un bit de interrupción global adicional de habilitación en el registro de estado. Todas las diferentes interrupciones tienen un vector de interrupción separado en la tabla de vectores de interrupción al principio de la memoria de programa. Las diferentes interrupciones tienen prioridad de acuerdo con la posición de vector de interrupción. El más bajo tiene la dirección del vector de interrupción y el más alto la prioridad. |
|
Figura. Mapas de Memoria |