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.
Ver más18 páginas
Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
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
Los objetivos que se pretenden alcanzar en este recurso son los siguientes:
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.
A continuación, se muestra una serie de ejemplos de estándares, con su respectiva codificación:
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:
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
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.
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:
Los registros del R26 a R31 pueden ser utilizados en pares para formar tres registros de 16 bits:
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).
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:
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