Estructura de Computadores: Registros y Memoria en Atmel ATmega328p

Diapositivas de la Universidad Europea sobre Estructura de Computadores. El Pdf explora la arquitectura de computadores, centrándose en registros y memoria del microcontrolador Atmel ATmega328p. Este material de Informática, apto para Universidad, detalla instrucciones de movimiento de datos y gestión de memoria.

Mostra di più

18 pagine

Estructura de
computadores
Tema 7. Registros y memoria
en Atmel
Estructura de computadores
Tema 7. Registros y memoria en Atmel
2
© Copyright Universidad Europea. Todos los derechos reservados.
Índice
Objetivos de aprendizaje ............................................................... 3
1. Presentación ........................................................................... 3
2. Ejemplos de codificación estándar ................................................. 3
3. Atmega328 arquitectura de CPU .................................................... 5
4. Registros ................................................................................ 6
4.1. Registros de 16 bits ....................................................................... 7
5. Registros de entrada/salida del ATmega328p .................................... 7
6. Instrucciones de movimiento de datos. LDI ....................................... 9
7. Otras instrucciones de movimiento de datos ................................... 10
7.1. Instrucción MOV (y MOVW) ............................................................. 10
7.2. Instrucción: OUT / IN .................................................................... 11
8. La memoria del ATmega328p ..................................................... 12
9. Las variables del programa y vectores (array) ................................. 13
9.1. Tipos de variables ....................................................................... 13
10. Instrucciones para la lectura/escritura de memoria. LDS ................... 14
10.1. Leyendo una posición de memoria SRAM: LDS (LoaD Sram) ..................... 14
10.2. Escribiendo una posición de memoria: STS (STore Sram) ........................ 14
11. Lectura/escritura en memoria, direccionamiento indirecto ................ 15
12. Resumen ............................................................................ 17
Referencias bibliográficas ............................................................. 17

Visualizza gratis il Pdf completo

Registrati per accedere all’intero documento e trasformarlo con l’AI.

Anteprima

Registros y memoria en Atmel

Índice

Objetivos de aprendizaje 3 1. Presentación 3 2. Ejemplos de codificación estándar 3 3. Atmega328 arquitectura de CPU 5 4. Registros 6 4.1. Registros de 16 bits 7 5. Registros de entrada/salida del ATmega328p 7 6. Instrucciones de movimiento de datos. LDI 9 7. Otras instrucciones de movimiento de datos 10 7.1. Instrucción MOV (y MOVW) 10 7.2. Instrucción: OUT / IN. 11 8. La memoria del ATmega328p 12 9. Las variables del programa y vectores (array) 13 9.1. Tipos de variables 13 10. Instrucciones para la lectura/escritura de memoria. LDS 14 10.1. Leyendo una posición de memoria SRAM: LDS (LoaD Sram) 14 10.2. Escribiendo una posición de memoria: STS (STore Sram) 14 11. Lectura/escritura en memoria, direccionamiento indirecto 15 12. Resumen 17 Referencias bibliográficas. 17 ue Universidad Europea @ Copyright Universidad Europea. Todos los derechos reservados. 2Estructura de computadores

Objetivos de aprendizaje

Los objetivos que se pretenden alcanzar en este recurso son los siguientes:

  • Analizar el almacenamiento de datos en ensamblador.
  • Identificar los estándares para la codificación utilizando bits.

1. Presentación

A estos niveles ya no es necesario decir que un ordenador y, por consiguiente, una CPU, solo pueden manejar dos valores (1/0, H/L, T/F, etc.) y que esta unidad de información mínima se llama bits. Históricamente, por razones constructivas, es fácil de manejar grupos de 8 bits, a lo que se le llama byte. Pero, ¿y la palabra? ¿ Qué es una palabra en términos de almacenamiento de información? Una palabra es una unidad de tamaño lógica (no está completamente definida) de ahí que cada fabricante la especifique. Para Intel actualmente palabra son 64 bits, es decir, 8 bytes. Hasta no hace mucho, palabra era 32 bits, cuatro bytes (para máquinas 32 bits), es una unidad ficticia, que cada fabricante establece su tamaño de palabra. La decisión de establecer uno u otro tamaño viene definida para lograr la máxima efectividad y rendimiento en un microprocesador. La palabra es el tamaño de datos donde el microprocesador es óptimo en su funcionamiento, ya que todo el hardware del ordenador está diseñado para trabajar con ese conjunto de datos, de manera que la velocidad de procesamiento de información sea máxima. Otros tamaños, ya sean mayores o menores, provocan una pérdida de efectividad. Para los microprocesadores ATmega (los que incorporan muchas de las placas Arduino), la palabra se define en 16 bits, es decir, dos bytes. Siguiendo con obviedades, está claro que todo en un ordenador está representado, almacenado y manipulado utilizando solo bits (números enteros, números en punto flotante, caracteres, documentos, programas, archivos, carpetas, imágenes, sonidos, vídeos, etc., los cuales se codifican mediante números). Esto lleva a la necesidad de definir estándares para la codificación utilizando los bits.

2. Ejemplos de codificación estándar

A continuación, se muestra una serie de ejemplos de estándares, con su respectiva codificación:

  • Número entero sin signo: binario natural: 17d = 000100012.
  • Número entero con signo en complemento a 2: - 17d = 111011112.
  • Número real en punto flotante. ue Universidad Europea @ Copyright Universidad Europea. Todos los derechos reservados. 3Estructura de computadores
  • Carácter: en codificación ASCII: 'a' = 97d = 11000012.
  • Imagen: matriz de píxeles (se dispone como una matriz solo en la pantalla).
  • El color de cada píxel se debe especificar (utilizando los números de colores, ex RGB). o Una imagen de 1600x900 píxeles (resolución de mi escritorio) en color verdadero usa 46080000bits (5MiB).
  • Documento: conjunto de caracteres, imágenes, posiciones y formatos, también codificada como números.
  • Sonido: una matriz de números (se interpreta como sonido de los altavoces).
  • Vídeo: una matriz con una secuencia de imágenes y sonidos intercalados (AVI).
  • ASCII. American Standard Code for Information Interchange (ASCII) 000 (nul) 016 (dle) 032 sp 048 0 064 @ 080 P 096 * 112 p 001 (soh) 017 (dc1) 033 ! 049 1 065 A 081 Q 097 a 113 q 002 (stx) 018 (dc2) 034 " 050 2 066 B 082 R 098 b 114 r 003 (etx) 019 (dc3) 035 # 051 3 067 C 083 S 099 c 115 s 004 (eot) 020 (dc4) 036 $ 052 4 068 D 084 T 100 d 116 t 005 (eng) 021 (nak) 037 % 053 5 069 E 085 U 101 e 117 u 006 (ack) 022 (syn) 038 & 054 6 070 F 086 V 102 f 118 v 007 (bel) 023 (etb) 039 ' 055 7 071 G 087 W 103 g 119 w 008 (bs) 024 (can) 040 ( 056 8 072 H 088 X 104 h 120 x 009 (tab) 025 (em) 041 ) 057 9 073 I 089 Y 105 i 121 y 010 (If) 026 (eof) 042 * 058 : 074 J 090 Z 106 j 122 z 011 (vt) 027 (esc) 043 + 059 ; 075 K 091 [ 107 k 123 { 012 (np) 028 (fs) 044, 060 < 076 L 092 \ 108 1 124 | 013 (cr) 029 (gs) 045 - 061 = 077 M 093 ] 109 m 125 } 014 (so) 030 (rs) 046 . 062 > 078 N 094 110 n 126~ 015 (si) 031 (us) 047 / 063 ? 079 O 095 111 0 127 Control codes Printable characters (punctuation, numbers, upper and lower-case letters Figura 1. ASCII.

La CPU trabaja con los bits, pero, ¿qué es en realidad un bit? ¿ Qué aspecto físico tiene un bit? Un bit puede tener una serie de cualidades dependiendo de cómo se almacena o se manipula:

  • Cuando se almacena: o Es un potencial eléctrico (voltios) bajo o alto (L/H), por ejemplo, en un condensador o de transistores (memorias).
  • Es una región magnetizada (disco duro, cintas, disquetes). ue Universidad Europea @ Copyright Universidad Europea. Todos los derechos reservados. 4Estructura de computadores
  • Es una región brillante/opaca (CD/DVD/Blu-ray).
  • Cuando es manipulado en la CPU: o Es un potencial eléctrico bajo o alto (H/L) almacenado en un registro y/o en un bus de comunicación: - Un bus transmite un bit de un circuito a otro. De forma instantánea y sin modificarlo.

3. Arquitectura de CPU Atmega328

En el siguiente gráfico se muestra el diagrama en bloques de la arquitectura de un microcontrolador Atmega328:

< V 7 (128K positions) Flash Program Memory Program Counter Status and Control 16 Interrupt Unit Instruction Register 32 × 8 General Purpose Register SPI Unit 16 x, y, z ! Instruction Decoder W Watchdog Timer Unidad de Control Direct Addressing Indirect Addressing ALU Analog Comparator Control Lines I/O Module 1 Data SPAM I/O Module 2 16 bit address bus (64K positions) Module n EEPROM I/O Lines < > V Figura 2. Arquitectura de un microcontrolador Atmega328. Fuente: cortesia de Atmel. ue Universidad Europea @ Copyright Universidad Europea. Todos los derechos reservados. 5 8 - bit data bus 17 - 1Estructura de computadores

4. Registros

Un registro es un componente electrónico básico cuya función es almacenar temporalmente un valor. · Funciona como una pequeña (pero extremadamente rápida) memoria para uno o más bits (típicamente una palabra). 8 REG Trigger 10101011 Figura 3. Registro.

  • Solo se actualiza el valor almacenado cuando se activa. o La señal de disparo para modificar su valor almacenado proviene de la unidad de control. . En caso de que no sea disparada, mantiene el valor almacenado indefinidamente, no necesitando procesos de refresco de la información.
  • El registro más utilizado en microprocesadores es el registro paralelo-paralelo:
  • Los datos se almacenan o leen todos a la vez (paralelo). RO 0x00 R 0x01 R2 0x02 ... R13 0xOD R14 Ox0E R15 0xOF R16 0x10 R17 0x11 ... R26 0x1A X-register Low Byte X register R27 0x1B X-register High Byte R28 0x1C Y-register Low Byte Y register R29 0x1D Y-register High Byte R30 0x1E Z-register Low Byte Z register R31 0x1F Z-register High Byte Figura 4. Banco de registros de propósito general del Atmega2560.

Atmega328 tiene 32 registros de propósito general de ocho bits cada uno. Los registros ocupan las primeras posiciones de la memoria de datos SRAM. Aunque son registros de carácter general, y todos son accesibles desde programa, algunos de ellos presentan características especiales, que modifican ligeramente sus posibles usos:

  • Del registro RO a R15 no se puede almacenar un valor constante directamente, solo acepta datos de otros registros. Por lo que pueden ser solo utilizables como fuente y destino de operaciones aritméticas.
  • Del registro R16 a R31 permiten escritura de constantes, así como la utilización en operaciones. Estos son los más fáciles de usar. . Los registros del R26 a R31 también se pueden utilizan para formar registros dobles de 16 bits (para datos de 16 bits y direcciones).

4.1. Registros de 16 bits

Los registros del R26 a R31 pueden ser utilizados en pares para formar tres registros de 16 bits:

  • R27:R26 forman el registro "X".
  • R29:R28 forman el registro "Y".
  • R31:R30 forman el registro "Z".

Estos pares de registros, X, Y y Z, se pueden utilizar para almacenar datos de 16 bits, lo que permite a una CPU de 8 bits como los ATmega operar rápidamente con datos de 16 bits. También tienen la función de aumentar y facilitar el manejo de punteros. Ya que están conectados a circuitos específicos que permiten autoincremento y autodecremento en las instrucciones de movimiento de datos (lo que permite manejarse rápidamente y fácilmente con arrays y matrices).

5. Registros de entrada/salida del ATmega328p

El Atmega328 tiene tres puertos de E/S de ocho bits cada uno, para comunicarse con "el mundo". Estos puertos tienen su correspondiente terminal en la placa Arduino, tal y como se puede ver en la siguiente imagen:

Atmel ATmega328P (PCINT14/RESET) PC6 1 [A5] 28 PC5 (ADC5/SCL/PCINT13) (PCINT16/RXD) PD0 12 [0]rx [A4] 27 PC4 (ADC4/SDA/PCINT12) (PCINT17/TXD) PD1 3 [1]tx [A3] 26 PC3 (ADC3/PCINT11) (PCINT18/INTO) PD2 4 [2] [A2] 25 PC2 (ADC2/PCINT10) (PCINT19/OC2B/INT1) PD3 5 [3]~ [A1] 24 PC1 (ADC1/PCINT9) (PCINT20/XCK/T0) PD4 6 [4] [A0] 23 PC0 (ADC0/PCINT8) VCC 7 22 GND GND 8 21 AREF (PCINT6/XTAL1/TOSC1) PB6 9 20 AVCC (PCINT7/XTAL2/TOSC2) PB7 10 [13] 19 PB5 (SCK/PCINT5) (PCINT21/OCOB/T1) PD5 11 [5]~ [12] 18 PB4 (MISO/PCINT4) (PCINT22/OCOA/AINO) PD6 12[6]~ ~[11] 17 PB3 (MOSI/OC2A/PCINT3) (PCINT23/AIN1) PD7 13[7] ~[10] 16 PB2 (SS/OC1B/PCINT2) (PCINTO/CLKO/ICP1) PBO 14[8] ~[9] 15 PB1 (OC1A/PCINT1) Figura 5. Puertos del ATmega328. Fuente: cortesia de Atmel.

Todos los puertos tienen pines I/O bidireccionales que pueden actuar como entradas o salidas digitales (cada bit/pin se puede configurar de forma independiente como entrada o como salida). Estos puertos, además de servir como comunicación con el exterior y de ser utilizables desde programa, tienen funciones alternativas:

  1. Puerto B (bits PB7, ... , PB1, PBO). Cuenta con una mejor capacidad de carga eléctrica (se puede manejar más corriente) que los otros puertos. También proporciona salidas PWM (Pulse-Width Modulation), comunicación SPI e I2C.
  2. Puerto D (bits PD7, ... , PD1, PDO). También actúa como byte de direcciones para el control de una memoria externa, la comunicación a la USART1 (Universal Synchronous and Asynchronous serial Receiver and Transmitter) y alguna PWM (Pulse-Width Modulation). Puede leer interrupciones externas.
  3. Puerto C (bits PC7, ... , PC1, PCO). También entradas analógicas o como conversos ADC (Analog to Digital Conversor).

Algunas placas Arduino integran microprocesadores más grandes, con más puertos de entrada salida, proporcionando mayores posibilidades de comunicación. Por ejemplo, el ATmega, que integra el Arduino mega, tiene 11 puertos de comunicación, nombrados del PORTA al PORTL. ue Universidad Europea @ Copyright Universidad Europea. Todos los derechos reservados. 8

Non hai trovato quello che cercavi?

Esplora altri argomenti nella Algor library o crea direttamente i tuoi materiali con l’AI.