Saltar al contenido principal
LibreTexts Español

16.2: Núcleo AVR Atmel

  • Page ID
    82010
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    El núcleo del procesador Atmel AVR utiliza la arquitectura Harvard con canalización simple. A continuación se muestra un diagrama de bloques del núcleo de la serie AVR.

    Diagrama de bloques AVR (Atmel 2014).
    Figura\(\PageIndex{1}\): Diagrama de bloques AVR (Atmel 2014).

    Lo primero que hay que notar es que la mayoría de los bloques están interconectados a través de un bus de datos de ocho bits (es decir, una colección de conexiones paralelas, en este caso, ocho de ellas). El bus de datos es bidireccional, lo que significa que los datos pueden ser colocados en él (escritos) por un bloque y extraídos (leídos) por otro. Obviamente, se necesita aplicar alguna forma de “control de tráfico” y que generalmente se maneja mediante señales de temporización apropiadas y búferes de tres estados 1.

    La ALU, o Unidad Lógica Aritmética, es responsable de funciones computacionales básicas como suma y resta de enteros, operaciones de bits, comparaciones y similares. En asociación con esto hay 32 registros de propósito general de ocho bits. La ALU realiza operaciones sobre los valores en los registros, no directamente sobre los valores en la memoria general. Por ejemplo, supongamos que desea agregar dos variables y colocar el resultado en una tercera variable. La ALU tiene que transferir valores de la memoria a los registros donde se realiza el cálculo y luego transferir el resultado a la ubicación final. Una gran cantidad de registros es una característica común de los procesadores RISC. Los primeros procesadores CISC tenían muy pocos registros (de hecho, muchos tenían un solo “acumulador” para este tipo de operaciones). También hay muchos registros especializados que no se muestran aquí ya que están asociados con módulos IO, temporizadores, etc. (más sobre esto en un momento). Tres registros especializados importantes son el registro de estado, el contador de programas y el puntero de pila. El contador de programas (PC) realiza un seguimiento de la instrucción actualmente en ejecución (es decir, la ubicación actual del flujo de código). El puntero de pila (SP) registra la dirección de memoria actual de la parte superior de la pila (es decir, la ubicación en la memoria utilizada para variables temporales y similares). El registro de estado (SR) contiene una serie de bits que reflejan los resultados más recientes de una operación ALU y el estado general del procesador. El registro de estado AVR contiene ocho bits, todos los cuales son de lectura/escritura e inicializados en 0:

    Tabla (\ PageIndex {1}\): Registro de estado AVR (Atmel 2014).
    Bit 7 6 5 4 3 2 1 0
    Función I T H S V N Z C

    Los bits son los siguientes de la documentación de Atmel:

    Figura\(\PageIndex{2}\): AVR status register bits (Atmel 2014)

    Bit 7 — I: Habilitación de interrupción global

    El bit Global Interrupt Enable debe establecerse para que las interrupciones estén habilitadas. El control de habilitación de interrupción individual se realiza entonces en registros de control separados. Si se borra el Registro de activación de interrupción global, ninguna de las interrupciones se habilita independientemente de la configuración de activación de interrupción individual. El bit I es borrado por el hardware después de que se haya producido una interrupción, y es establecido por la instrucción RETI para habilitar interrupciones posteriores. El bit I también puede ser establecido y borrado por la aplicación con las instrucciones SEI y CLI, como se describe en la referencia del conjunto de instrucciones.

    Bit 6 — T: Almacenamiento de copia de bits

    Las instrucciones Bit Copy BLD (Bit Load) y BST (Bit Store) utilizan el bit T como origen o destino para el bit operado. Un poco 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 por la instrucción BLD.

    Bit 5 — H: Bandera de Medio Transporte

    La Bandera de Medio Carry H indica un Medio Carry en algunas operaciones aritméticas. Half Carry Es útil en aritmética BCD.

    Bit 4 — S: Bit de signo,\ (S = N\ oplus\ oplus V)\
    El bit S siempre es exclusivo o entre el Indicador Negativo N y el Indicador de Desbordamiento del Complemento Dos V.

    Bit 3 — V: Indicador de desbordamiento de complemento de dos

    El indicador V de desbordamiento de complemento de dos admite aritmética de complemento de dos.

    Bit 2 — N: Indicador negativo

    El Indicador Negativo N indica un resultado negativo en una operación aritmética o lógica.

    Bit 1 — Z: Indicador de cero

    El Indicador de Cero Z indica un resultado cero en una operación aritmética o lógica.

    Bit 0 — C: Bandera de transporte

    El indicador de acarreo C indica un acarreo en una operación aritmética o lógica.

    Es importante recordar que el estado del registro de estado no se guarda al ingresar a una rutina de interrupción o se restablece al regresar de una interrupción. Esto debe manejarse en software. Veremos cómo se maneja esto en futuros capítulos.


    1. Un búfer de tres estados simplemente repite su señal de entrada en su salida como un búfer ordinario pero también ofrece un tercer estado “Z alto”. Cuando se habilita el estado Z alto, no hay señal de salida presente y la impedancia de salida del búfer pasa a un valor muy alto, desconectando efectivamente el búfer del bus.

    This page titled 16.2: Núcleo AVR Atmel is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by James M. Fiore via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.