SISTEMAS ELECTRÓNICOS DIGITALES

Tamaño: px
Comenzar la demostración a partir de la página:

Download "SISTEMAS ELECTRÓNICOS DIGITALES"

Transcripción

1 SISTEMAS ELECTRÓNICOS DIGITALES Autores: Fernández Martínez Cesáreo Sánchez Miralles Álvaro

2 Capítulo 1 Filosofía del libro 5 Capítulo 2 Arquitectura de un micro 6 1 Introducción 6 2 Objetivos y conceptos a entender en este capítulo 6 3 Modelo del programador de un micro La CPU La memoria Codificación de las instrucciones Ciclos de ejecución de una instrucción Ejemplo de funcionamiento de la ejecución de un programa Distintos niveles de abstracción de un sistema electrónico digital Organización de un micro a nivel de bloques y buses 15 4 Cuestiones de comprensión 17 Capítulo 3 Arquitectura y Mapa de memoria del C Objetivos y conceptos a entender en este capítulo 18 2 Arquitectura del C Modelo del programador del C Ensamblador de C Resumen de instrucciones en ensamblador Modos de direccionamiento Números con signo y sin signo Ejemplos básicos de codificación en ensamblador Mapa de memoria del C Los registros de propósito general GPRs Principales SFRs de la CPU 29 3 Cuestiones de comprensión 33 4 Ejercicios propuestos 33 5 Práctica 1: Introducción al Siemens C Capítulo 4 Puertos 48 1 Objetivos y conceptos a entender en este capítulo 48 2 Puertos paralelo 48 3 Ejercicios propuestos 52 4 Práctica 2: entradas y salidas digitales 53 5 Práctica 3: ensamblar y depurar 55 Capítulo 5 Periféricos 60 1 Objetivos y conceptos a entender en este capítulo 60 2 Periféricos del C El Timer 61 1

3 3.1 Registro de control T01CON Registros de datos Registro de control de interrupciones T0IC Resumen de funcionamiento Ajuste del pre-escalado Ejemplo de programación: LEDs a ritmo de reloj 63 4 Cuestiones de comprensión 65 5 Ejercicios propuestos PWM sencillo (30 min) 66 6 Práctica 4: timers 68 Capítulo 6 Ensamblador 71 1 Objetivos y conceptos a entender en este capítulo 71 2 Introducción Codificación de instrucciones 71 3 Operaciones de transferencia de datos MOV y MOVB MOVBZ y MOVBS PUSH y POP 73 4 Instrucciones para realizar operaciones aritméticas ADD y ADDB SUB y SUBB NEG MUL y MULU DIV y DIVU 76 5 Instrucciones para realizar operaciones lógicas AND OR XOR CPL 79 6 Instrucciones para realizar desplazamientos de bits 79 7 Saltos 81 8 Ejemplos de equivalencias de C y ensamblador Condición if Bucle for Bucle while 84 9 Instrucciones a nivel de bit Saltos Otras Directivas de ensamblador Cuestiones de comprensión Ejemplo de discusión: medida de ancho de pulso, sin/con filtrado de rebotes Ejercicios 100 2

4 13.1 Acceso a memoria (15 min) Encendido apagado de LED (10 min) Volcado de memoria (20 min) Cuenta de pulsos (30 min) Calculadora (40 min) Ejercicios resueltos LEDs e interruptores Medida de ancho de pulso con rebotes (20 min) Medida de ancho de pulso (20 min) Práctica 5: ejercicios en ensamblador, control de un servo 112 Capítulo 7 Drivers. El convertidor AD Objetivos y conceptos a entender en este capítulo Concepto de driver Ejemplos de driver Driver sencillo del puerto P Driver del Timer Driver del convertidor AD El convertidor analógico digital (AD) Registro de control ADCON Registro de datos ADDAT Registro de control de interrupciones ADCIC Ejemplo de programación 119 Capítulo 8 Programación en C para micros Objetivos y conceptos a entender en este capítulo Tipos de datos para el C Números enteros Números reales Variables lógicas Operadores bit a bit Instrucciones de control Bucles Vectores Punteros El operador & El operador * Operaciones con punteros Funciones Variables globales y locales Paso de parámetros por "referencia" Paso de vectores como parámetros Cuestiones de comprensión Ejercicios propuestos 145 3

5 10.1 Timer y puertos (40 min) Acceso a memoria (40 min) Ejercicios resueltos La calculadora (30 min) El coche fantástico (20 min) El autobus (30min) Práctica 6: ejercicios en lenguaje C 155 Capítulo 9 Interrupciones Objetivos y conceptos a entender en este capítulo Nociones básicas de interrupciones Recursos utilizados en una interrupción Ejemplos Práctica 7: interrupciones en C 162 Capítulo 10 Sistemas digitales complejos Objetivos y conceptos a entender en este capítulo Sistemas muestreados Fechado Programación basada en estados 170 Referencias 172 4

6 Capítulo 1 FILOSOFÍA DEL LIBRO El objetivo de este libro es optimizar el aprendizaje del lector, presentándole un material autocontenido que incluye información teórica, ejemplos, cuestiones de comprensión, ejercicios propuestos y resueltos, problemas propuestos y resueltos, y finalmente las prácticas de laboratorio. Adicionalmente, cada capítulo tiene una sección que informa de los conceptos prioritarios que deben quedar claros en el mismo. La organización se ha hecho para conseguir una sincronización perfecta entre los contenidos teóricos y de laboratorio, de forma que el lector pueda conocer qué es lo que tiene que saber para hacer una práctica. Además todo el libro sigue un orden que se corresponde con el orden cronológico de las clases presenciales. Para optimizar el aprovechamiento del libro se recomienda seguir los siguientes pasos: Ir leyendo capítulo a capítulo, en orden secuencial según el ritmo de las clases presenciales y del laboratorio. En cada capítulo prestar especial atención a la sección de "Objetivos y conceptos a entender", de forma que se debe tener claro cuando se considera que se han cumplido esos objetivos. Una vez que se tenga claro el punto anterior se puede proceder a leer las siguientes secciones descriptivas y los ejemplos. El lector puede cerciorarse del entendimiento de los conceptos, haciendo las cuestiones de comprensión que hay en cada capítulo. Comprobada la comprensión del capítulo, el lector debe hacer los ejercicios que se propongan. Finalmente existen problemas al final de cada capítulo que sirven de material complementario para adquirir habilidad y destreza en el planteamiento y solución de problemas de sistemas digitales. Por último, cabe reseñar que es importante reflexionar y pararse a pensar sobre los conceptos que aparecen en negrita en el texto, ya que aunque no tienen por qué ser conceptos más importantes que otros, si es cierto que suelen olvidarse con mayor facilidad y son claves para entender otros conceptos. 5

7 Capítulo 2 ARQUITECTURA DE UN MICRO 1 Introducción Para poder utilizar un microcontrolador es necesario conocer su arquitectura; es decir en qué consiste por dentro desde el punto de vista de un programador, enfocándose en conocer cuáles son sus recursos, como son qué instrucciones y modos de direccionamiento soporta, cuáles son los registros y su tamaño, cómo es el mapa de memoria y cuánto tarda una instrucción en ejecutarse. Cosa muy distinta a lo que es la organización de un computador, que consiste en conocer las tripas del mismo, el hardware, cuantos módulos tiene y cómo están conectados (punto de vista del diseñador); nada más lejos de los objetivos de esta asignatura. 2 Objetivos y conceptos a entender en este capítulo Entender por qué es importante conocer el modelo del programador de un micro. Entender el modelo del programador, conociendo las unidades de las que consta y cómo se comunican entre sí. para qué sirve el PC? Entender cómo la CPU ejecuta una instrucción Entender qué almacena físicamente una memoria y los niveles de abstracción que permiten interpretar esa información. 3 Modelo del programador de un micro Desde el punto de vista del programador, según el modelo Von Neumann, un micro se ve como una máquina con los bloques mostrados en la Figura 1: La unidad de control y la unidad aritmético lógica (ALU) que junto con los registros forman la CPU. La ALU es la encargada de realizar las operaciones aritméticas que requieran cada una de las instrucciones, los registros son celdas de memoria de acceso rápido y la unidad de control reparte trabajo y coordina el resto de bloques. La memoria principal, que es la encargada de almacenar datos, programas y resultados intermedios (más grande pero más lenta que el banco de registros). La unidad de entrada y salida de datos (I/O). Elemento imprescindible para que el microcontrolador se pueda comunicar con el exterior, de otra forma sería inútil. Gracias a esta unidad se pueden conectar sensores y actuadores al micro, además de poderse comunicar con otros micros y sistemas digitales. 6

8 Unidad de Memoria Unidad de Entrada Unidad Aritmética y lógica (ALU) Unidad de salida Unidad de Control CPU Figura 1: Modelo Von Neumann de un microcontrolador A continuación se pasa a explicar cada una de estas unidades más en detalle. 3.1 La CPU La CPU además de incluir la unidad de control y de la unidad aritmético lógica, contiene los registros, que es un banco de memoria acceso de acceso rápido para el almacenamiento de datos. Se dice que un micro es de 8 bits si estos registros son de 8 bits, es de 16 bits si estos registros son de 16 bits, etc. De todos los registros que tiene una CPU, desde el punto de vista de un programador interesa conocer los siguientes: Rx o registros de proposito general: registros que se usan como lugar de almacenamiento temporal de un dato. Son básicos para operaciones en la ALU, ya que sirven como punto de entrada y salida de la misma, sirven de apoyo para transferir información entre dos posiciones de memoria, etc. En el C167 estos registros son 15 y se notan por Rx (siendo x un número del 0 al 15). PC o program counter: contiene la dirección de la próxima instrucción a ejecutar. En el C167 esté registro está formado por dos el IP y el CSP. IR o instruction register: (único registro que almacena instrucciones en lugar de datos) registro que contiene la instrucción que se está procesando. Este registro no se puede usar por un programador, simplemente es parte del hardware necesario para que la CPU procese instrucciones. SR o state register: contiene el estado del micro después de haber ejecutado una instrucción. Por ejemplo, contiene información de si una operación ha dado un resultado negativo, si en una suma ha generado un acarreo, etc. En el C167 este registro se denomina PSW. 3.2 La memoria La memoria es la encargada de almacenar las instrucciones a ejecutar o programa y los datos que usa ese programa. 7

9 Los datos están almacenados en formato binario en celdas de 8 bits. Por ejemplo el número 5 está codificado de la siguiente forma: x05 Números más grandes, por ejemplo el 127: x7F Para manejar números binarios con comodidad se utiliza la base hexadecimal. Los números binarios agrupados de 4 en 4 bits forman las cifras en hexadecimal. La memoria está organizada en celdas de 8 bits. A cada celda se asigna una dirección de memoria, de forma que el micro puede acceder al dato almacenado en dicha celda indicándole a la memoria (en el bus de direcciones) la dirección de la celda a la que desea acceder, ver Figura 2. Dirección Dato 05 7F FFFF A0 Figura 2: Organización de la memoria El micro sabe qué direcciones de memoria contienen instrucciones y qué direcciones de memoria contienen datos: Toda dirección de memoria que se acceda a través del registro PC, el micro interpreta su contenido como una instrucción de programa. Toda dirección de memoria que se acceda de otra manera se considera como que contiene un dato; por ejemplo cuando el micro acceda para coger un dato y guardarlo en un registro de proposito general. 8

10 3.3 Codificación de las instrucciones Las instrucciones también están almacenadas en memoria en formato binario. Por ejemplo, la siguiente instrucción: add R1,R0 Significa: Suma el dato almacenado en el registro R0 con el dato almacenado en el registro R1 y deja el resultado en el registro R1. Esta instrucción podría estar codificada de la siguiente forma x1010 Los 16 bits del código de instrucción indican: Los 4 bits más significativos almacenan el código de la instrucción (0001 para la instrucción ADD) Los 12 bits menos significativos indican cuáles son los operandos o parámetros de la instrucción. Para el caso de la instrucción anterior, los 4 bits menos significativos codifican el número de registro que se usa como sumando primero (0000 significa R0), los 4 siguientes bits codifican el número de registro que se usa como sumando segundo (0001 significa R1) y por último los siguientes bits no se usan NA Rs2 Rs1 Utilizando esta codificación el microprocesador en cuestión podría hacer operaciones de suma de: Un máximo de 16 registros de propósito general (dado que sólo se utilizan cuatro bits para codificar el número de registros. Un máximo de 16 instrucciones (cuatro bits para el código de instrucción). Los micros reales, en particular el C167, tienen más registros y soportan en amplio conjunto de operaciones aritmético/lógicas. Otro ejemplo posible de codificación siguiendo este esquema es el siguiente: move R0,0x10 9

11 Pone lo que hay en la dirección de memoria 0x10 en el registro R0. La codificación podría ser: x Rs mem Los 4 bits más significativos almacenan el código de la instrucción (0002 para la instrucción MOV Rx, mem) Los 8 bits menos significativos codifican la dirección de la memoria de donde se coge el dato (0x10), los 4 siguientes bits codifican el número de registro que se usa como destino (0000 significa R0). Estos ejemplos de codificación indican que: El número de bits necesarios para codificar una instrucción depende del tamaño del microprocesador. Un micro más grande (con más registros) necesitará más bits para codificar una instrucción dada. Las instrucciones en memoria necesitarán por tanto más o menos celdas de memoria para ser almacenadas. 3.4 Ciclos de ejecución de una instrucción La CPU es la encargada de ejecutar las instrucciones que están en la memoria a partir de la posición de la misma que indique el PC. La ejecución de una instrucción supone la ejecución de dos ciclos, ver Figura 3: 1. Ciclo de Fetch: en este ciclo se busca la instrucción que se tiene que ejecutar y se interpreta para saber qué se tiene que ejecutar. Además incrementa PC para que apunte a la siguiente instrucción. Los pasos de este ciclo son: a. El Contador de Programa (PC) contiene la dirección de la próxima instrucción a ejecutar b. El procesador captura la instrucción de memoria c. La instrucción se carga en el Registro de Instrucciones (IR) d. El PC se incrementa (salvo en las instrucciones de salto, que el PC será el valor de la dirección de salto). e. Se interpreta la instrucción y se generan las señales de control (decodificación instrucción) 2. Ciclo de ejecución: en este ciclo se ejecuta propiamente lo que indica la instrucción. La CPU puede ejecutar diferentes instrucciones: a. Transferencia de procesador a memoria 10

12 b. Transferencia de procesador a I/O c. Procesado de datos. La ALU efectúa una operación sobre los datos d. Instrucciones de control. Alteran la secuencia de programa; p.e. Jump e. Combinación de las anteriores Figura 3: ciclos de ejecución de una instrucción 3.5 Ejemplo de funcionamiento de la ejecución de un programa A continuación se presenta un ejemplo muy importante desde el punto de vista conceptual, que ilustra cómo un micro ejecuta un conjunto de instrucciones, poniendo de manifiesto los conceptos explicados en anteriores secciones. En lenguaje de alto nivel, el ejercicio consiste en sumar los dos números que se encuentran las direcciones de memoria 0x80 y 0x82, para posteriormente guardar el resultado en la dirección 0x84. Algo similar a la instrucción: (0x84) = (0x80) + (0x82) los paréntesis indican "lo que hay en la dirección de memoria". En lenguaje simbólico código máquina, que es el que entiende el micro, esta operación requiere de tres instrucciones que se apoyan en los registros de proposito general para realizar la operación anterior: move R0,0x80 que en código máquina se representa por 2080(H) move R1,0x82 que en código máquina se representa por 2182(H) add R1,R0 que en código máquina se representa por 1010(H) move 0x84,R1 que en código máquina se representa por 3841(H) Si se analiza con detalle la codificación máquina, cada una de las instrucciones (codificadas en ensamblador, que es el lenguaje más cercano al código máquina que un programador conoce) consiste de cuatro dígitos, el primero de ellos representa la operación a realizar según el tipo de parámetros que usa, y los últimos tres dígitos representan los operandos de la misma. Es necesario hacer notar que las tres instrucciones son las más sencillas en las que se puede descomponer el ejemplo, desde el punto de vista de una máquina, ya cada una de ellas sólo realiza una acción, o bien una transferencia de información o bien una operación con la ALU. 11

13 Una vez cargado el programa en la posición 0, la memoria queda como se indica en la Instrucción Instrucción Instrucción Instrucción Dato Dato FFFF A0 Figura 4: Memoria después de cargar el programa ejemplo Una vez que se manda ejecutar el programa, poniendo PC = 0x0000, se empieza a ejecutar la primera instrucción, como se muestra en la Figura 5. En la fase de Fetch se coge la instrucción de la memoria a la que apunta PC y se guarda en IR, quedando IR = 0x2080, para posteriormente incrementar PC para que apunte a la siguiente instrucción. En la fase de Execute se ejecuta la instrucción que hay en IR; es decir, se coge el valor que hay en la dirección de la memoria 0x80 y se pone en R0, quedando R0 = 7. Y así sucesivamente para las tres siguientes instrucciones, como se puede ver en la Figura 6, Figura 7 y Figura 8. Fetch Execute PC IR R R1 Figura 5: ejecución de la instrucción mov R0, 0x80 12

14 PC IR R R1 Figura 6: ejecución de la instrucción mov R1, 0x82 ALU: R1 <- R0+R PC R IR A R R2 Figura 7: ejecución de la instrucción add R1,R PC R IR A R A 0000 R2 Figura 8: ejecución de la instrucción move 0x84, R1 Es importante entender este ejemplo, para entender cómo ejecuta las instrucciones un micro y por lo tanto comprender mejor los detalles del lenguaje ensamblador para programar un micro. Este lenguaje es el de más bajo nivel que se puede programar, el cual tiene una correspondencia biunívoca entre código máquina e instrucción de ensamblador. 3.6 Distintos niveles de abstracción de un sistema electrónico digital Según al nivel que se trabaje, se puede ver un sistema electrónico de muchas maneras, como se puede ver en la Figura 9. El nivel más bajo o nivel físico, se corresponde con la interpretación eléctrica y es común a todo tipo de sistema electrónico. En este nivel sólo hay medidas eléctricas de tensión; es el nivel al que se trabaja cuando se usa el osciloscopio y con las leyes de Kirchhoff. El segundo nivel o nivel lógico, se corresponde con la interpretación lógica de las medidas eléctricas del primer nivel. Las medidas de tensión se traducen a ceros y unos, de forma que por ejemplo un nivel de tensión por debajo de 0.7 Voltios se considera un 0 lógico y un valor por encima se considera un 1 lógico. Se pueden realizar operaciones en este nivel usando el álgebra de Bool. A este nivel se sitúa el código máquina. 13

15 El tercer nivel o nivel de codificación, se corresponde con la codificación de esos ceros y unos en palabras que puedan ser entendidas mejor por una persona. Este nivel sí que depende del sistema electrónico que se use; es decir, del código que se use, ya que existen códigos que interpretan los ceros y unos de distinta manera dependiendo para qué se apliquen. Si se quiere realizar un programa para un micro, la codificación se llama ensamblador. En caso de que se quiera trabajar con números, la codificación puede ser binaria o hexadecimal, interpretando los números con signo y sin signo. Por último, si lo que se quiere es programar FPGA o EPLD (lógica programable), la codificación que se usa es VHDL. Estas codificaciones dependen dentro de cada aplicación del dispositivo que se quiera programar; por ejemplo, existen distintos códigos ensamblador para diferentes micros. Finalmente el cuarto nivel, o nivel más alto de abstracción, consiste en realizar una codificación más entendible por una persona, que además sea independiente del dispositivo que se quiere programar. En caso de que se quieran programar micros, el lenguaje que se usa es C, que independiente del micro que se quiere programar; es decir, sólo existe un lenguaje C. En caso de que se quiera trabajar con datos, existen varias codificaciones como son la ASCII, UNICODE, etc, que son iguales para todos sistemas; es decir, sólo existe un código ASCII. PROGRAMAS uc DATOS PROGRAMAS FPGA Lenguaje C Códigos de alto nivel ASCII Interpretación 0's y 1's Ensamblador Interpretación 0's y 1's Números con y sin signo Lenguaje VHDL Nivel lógico 0's y 1's Nivel físico Hardware +5V, 0V ABSTRACCIÓN Figura 9: Niveles de abstracción de un sistema electrónico digital Existen niveles de abstracción superiores, pero que no se usan en la programación de sistemas electrónicos digitales. 14

16 3.7 Organización de un micro a nivel de bloques y buses Aunque la organización de un micro no es el objetivo de la asignatura, es entender qué es un Sistema Electrónico Digital (SED) es necesario introducir algunos aspectos de organización, como es la composición a nivel de bloques físicos y la conexión entre bloques mediante buses. En la Figura 10 se muestra el modelo Von Neumann a nivel de bloques y de buses. Un bus no es más que un conjunto de líneas común a varios bloques que permite la comunicación entre ellos. En un SED típico tenemos tres buses: Bus de direcciones. Bus de datos. Bus de control. CPU (ALU, Registros y Control) Memoria Entrada/Salida Bus del sistema Bus de datos Bus de direcciones Bus de control Figura 10: Modelo Von Neumann a nivel de hardware Desde la CPU el exterior se ve como direcciones. Cuando se quiere acceder a un dato en la memoria, la CPU pone en el bus de direcciones la dirección de la memoria donde se encuentra el dato y la memoria le da el dato en el bus de datos. El bus de control sirve para organizar la transferencia del dato entre memoria y CPU (o entre I/O y CPU). Por ejemplo, para leer el dato de la posición 0x82: 0x82 (CPU) Bus dir -> RD (CPU) Bus control -> 0003 (MEM) Bus datos Esto significa: la CPU pone en el bus de direcciones la dirección del dato a leer (0x82), a continuación activa una línea del bus de control que indica operación de lectura (RD: Read), la memoria suministra el dato almacenado en dicha posición de memoria (3) en el bus de datos. Por último la CPU recoge el dato del bus de datos y lo almacena en un registro de proposito general. 15

17 El ciclo de escritura es similar. En este caso la CPU suministra tanto la dirección como el dato a escribir en memoria (en el bus de direcciones y en el bus de datos respectivamente) y activa la línea WR (Write) del bus de control. Los microcontroladores tienen periféricos y memoria integrados en el chip de CPU, mientras que los microprocesadores no. Los periféricos sirven para comunicar la CPU con el exterior y para realizar ciertas tareas sin consumir tiempo de CPU del micro; por ejemplo hay periféricos que sirven para controlar motores, otros digitalizan señales analógicas, etc. Al igual que la CPU los periféricos tienen registros que le permiten funcionar. Se dice que un periférico está mapeado en memoria si la CPU ve a los registros del periférico como una dirección más de memoria; es decir, el micro accede a los registros del periférico de la misma manera que lo hace para acceder a cualquier otra dirección de memoria. El mapa de memoria describe de forma gráfica qué hay en cada rango de direcciones: memoria RAM, ROM o Periféricos. Cuando la CPU manda hacer algo a un periférico se puede quedar a la espera a que éste termine su labor, preguntándole continuamente si ha terminado, o bien puede configurar al periférico de que le avise y le interrumpa cuando termine. En el primer modo de funcionamiento se dice que la CPU usa polling (es la CPU la que pregunta si ha terminado), mientras que el segundo modo de funcionamiento se dice que la CPU usa interrupciones (es el periférico el que indica a la CPU que ha terminado, interrumpiendo lo que esté haciendo en ese momento). La CPU realiza polling consultado un bit de un registro del periférico; es decir, de la misma manera que consulta una dirección de memoria. En cambio las interrupciones utilizan líneas específicas de comunicación entre el periférico y la CPU, las cuales se encuentran en el bus de control. 16

18 4 Cuestiones de comprensión A continuación se enumeran un conjunto de preguntas que ayudan a comprender lo que se ha descrito en el capítulo. 0) Qué significa modelo del programador? 1) De qué partes consta un microprocesador según el modelo del programador? 2) Qué significa que un microprocesador sea de 16 bits? 3) Qué diferencia un microprocesador de un microcontrolador? 4) Qué es el PC? Para qué sirve? 5) De qué diferentes formas se te ocurren que se pueden interpretar los bits que se almacenan en la memoria de un micro? 17

19 Capítulo 3 ARQUITECTURA Y MAPA DE MEMORIA DEL C167 1 Objetivos y conceptos a entender en este capítulo Por orden de importancia: Entender cómo se almacenan los datos y los programas, así como la ejecución de los mismos que permite relacionar ambos. Entender los modos de direccionamiento Entender la arquitectura y, sumamente importante, ver la equivalencia entre el modelo del programador presentado en este capítulo y el presentado de forma general en el capítulo anterior. Empezar a familiarizarse con el ensamblador y la equivalencia que tiene con el C. Por ello en este capítulo se recomienda empezar un esquema, que se seguirá completando en sucesivos capítulos, con las equivalencias entre el ensamblador y el C. Entender cómo se organiza la memoria del C167 Hacerse con la terminología "direccionar", "modo de direccionamiento", "puntero", etc. 2 Arquitectura del C167 Es un microcontrolador de 16 bits, lo que implica que la ALU, el bus de datos y los registros son de 16 bits. Es un micro muy robusto, diseñado para tareas de control industrial. Es capaz de direccionar (pedir direcciones) 16 Mbytes de memoria, es decir, su bus de direcciones es de 24 bits. Como microcontrolador que es lleva incorporados muchos periféricos integrados en el chip: Controladores de comunicaciones serie: para comunicarse con el exterior en serie; por ejemplo un PC. Puertos paralelo: para comunicarse con el exterior; por ejemplo para conectar LEDs, interruptores, un PC, etc. Temporizadores (timers): para contar eventos, para llevar un computo del tiempo transcurrido, etc. Convertidor analógico/digital (A/D): sirve para pasar una señal del dominio analógico al digital, formato que puede ya procesar el micro. Moduladores PWM: muy usados en electrónica de potencia para controlar motores, etc 18

20 2.1 Modelo del programador del C167 El modelo del programador del C167 se muestra en la Figura 11. Tiene una CPU con registros clasificados en dos tipos: registros de propósito específico (SFR, tienen una función muy concreta) y registros de propósito general (GPR, se pueden usar para cualquier cosa). Los GPR son equivalentes a los registros de proposito general que se presentaron en la arquitectura general de un micro en la sección 3.1, y se usan como posiciones de memoria de acceso rápido. Como registros de propósito específico tenemos, entre otros, el PC (contador de programa), el PSW (registro de estado) y el SP (Stack Pointer). Por otro lado, tenemos el modelo de memoria. La memoria está organizada en "celdas" de 1 Byte (8bits). Cada byte tiene una dirección asociada. Las direcciones van desde al 0 hasta la 0xFFFFFF; es decir, se puede direccionar con 24 bits. Para acceder a una celda de memoria se usa su dirección: Para la lectura: la CPU pone la dirección en el bus de direcciones de la cual quiere el dato, mientras indica por el bus de control que la operación es de lectura. La memoria devuelve el dato almacenado en la celda en el bus de datos; dato = READ (dirección). Para la escritura: la CPU pone el dato en el bus de datos, mientras indica por el bus de control que la operación es escritura, y la dirección en el bus de direcciones. La memoria escribe en la celda direccionada el dato suministrado por la CPU. WRITE(dato, dirección). La unidad de entrada y salida se controla a través de sus SFRs. El acceso a estos es similar al acceso a memoria; es decir, los SFRs están mapeados en memoria. 19

21 Memoria CPU FF FFFF Registros R7 R15 PC R6 R14 PSW R5 R13 SP R4 R3 R12 R11 (SFR s) R2 R R1 R0 (GPR s) R9 R8 00 FE00 00 FE02 I/O (SFR s) 00 FE0X Figura 11: modelo del programador del C Ensamblador de C167 Como se comentó en el capítulo 2 sección 3.6, el lenguaje ensamblador es el lenguaje de más bajo nivel que entienden las personas, ya que cada instrucción ensamblador se corresponde con una instrucción código máquina que entiende el micro, es decir, hay una correspondencia biunívoca entre el ensamblador y el código máquina, entre lo que entienden las personas y lo que entienden las máquinas. El programa sencillo presentado en el capítulo anterior para una máquina de propósito general (esta vez en la dirección 0x100, ya que en el C167 no se pueden usar las 0x100 primeras direcciones) (0x104) = (0x100) + (0x102) En lenguaje ensamblador de C167 queda de la siguiente forma: MOV MOV ADD MOV R0,0x100 R1,0x102 R1,R0 0x104,R0 20

22 El tamaño del registro R0 es de 2 bytes (16 bits). Como cada dirección de memoria almacena únicamente 8 bits (1 byte) son necesarios dos bytes (almacenados en direcciones consecutivas) para llenar el registro. Por este motivo se ha situado el primer dato en la posición 0x100 y el segundo dato dos direcciones más allá (posición 0x102). (El C167 es un little endian; es decir, almacena el byte menos significativo del dato, parte baja de R0, en la dirección par. El byte más significativo va a la dirección impar de memoria). A la hora de presentar ejemplos más complejos usaremos como lenguaje de descripción en alto nivel el lenguaje C, que se da por conocido (a nivel básico). El lenguaje en ensamblador se explicará en detalle en el capítulo 6. En el capítulo 7 se explicará el detalle de las particularidades del lenguaje C en la programación de micros, y lo que es más importante la relación entre el lenguaje C y el ensamblador. Para empezar, se va a presentar el primer código ensamblador equivalente al programa siguiente en C, que no es más que un bucle para incrementar una variable N veces. Es necesario recordar que en C j += 1 es equivalente a j = j +1. for (i=1; i <=N; i++) j += 1; Suponiendo que N=5 y que el dato al que representa j se encuentra en la dirección de memoria 0xfa00, el programa en ensamblador equivalente sería: Dirección inicial del programa 500 E0 10 MOV R0,#1 ; r0 (i) 502 E0 11 MOV R1,#1 ; auxiliar CMP R0,#5 ; if i>n 506 AD 05 JMPR cc_sgt,0x510 ; then goto 512H F1 00 FA ADD 0xfa00,R1 ; j += 1 50C ADD R0,#1 ; i += 1 50E 0D FA JMPR cc_uc,0x504 ; salto sin condición 510 Dirección de memoria Codificación de la instrucción A simple vista se pueden observar varias cosas del programa: En lenguaje ensamblador más largo que en C Una línea de ensamblador se corresponde con una instrucción en código máquina que almacena en una dirección de memoria. Cada instrucción de ensamblador se corresponde con una operación elemental, donde casi siempre están involucrados los GPRs 21

23 Las instrucciones se almacenan en memoria en formato binario (1 s y 0 s), aunque en se hayan mostrado en hexadecimal por simplificar la notación. Las instrucciones ocupan 2 ó 4 bytes. Por ejemplo la instrucción 0x0801 situada en la dirección 0x50C ocupa 2 bytes, muestras que la instrucción 0x04F100FA situada en la dirección 0x508 ocupa 4 bytes. Las instrucciones se almacenan en posiciones de memoria consecutivas. Se ejecutan de forma secuencial, salvo el los saltos. De forma concisa cada una de las instrucciones del programa hace lo siguiente, (para más información y detalles del lenguaje ensamblador ir al capítulo 6): MOV R0,#1. R0 representa la variable i y se inicializa a 1; i = 1. MOV significa en inglés move, mueve 1 a R0. El # significa que el valor que le acompaña se trata como literal y no como una dirección de memoria donde buscar el dato. MOV R1,#1. R1. R1 es una variable temporal que representa la cantidad a sumar a j, que aunque siempre vale 1 se necesita para poder invocar a la instrucción de suma. CMP R0,#5. Compara si R0 es 5. CMP en inglés compare. JMPR cc_sgt,0x510. Si es mayor que 5 salta a la dirección 0x510. La instrucción JMPR, en inglés jump, salta según la condición puesta. En este caso cc_sgt, en inglés signed greater than, está haciendo una comparación con signo de mayor que. con qué? como se verá más adelante, cada instrucción en ensamblador deja una huella en la CPU después de ser ejecutada, en concreto en el registro de estado, y es esa huella como entrada a la comparación. En este caso la instrucción CMP anterior, dejó una huella que indicaba si R0 era mayor, menor o igual que 5, que se usa en JMPR para hacer el salto. Generalmente CMP y JMPR van juntos. ADD 0xfa00,R1. Añade R1 al dato que haya en la dirección de memoria 0xfa00; es decir, j=j+1. Como se comentó con anterioridad la instrucción ADD 0xfa00, #1 no existe, de ahí que fuera necesario guardar en R1 el 1. Esto significa que no todas las operaciones soportan todo tipo de operandos. Se puede apreciar que no se ha puesto #0xfa00, ya que 0xfa00 no es un literal sino una dirección de memoria donde buscar el dato. ADD R0,#1. Añade 1 a R0; es decir, i = i+1. JMPR cc_uc,0x504. Esta instrucción en un salto sin condición cc_uc, en inglés unconditional, a la dirección 0x504, precisamente para que el bucle continúe. Es necesario hacer notar que a lo largo de la ejecución del programa el PC contiene la dirección de la siguiente instrucción a ejecutar, para más detalles ver capítulo 2 sección 3.3. Cada vez que la CPU ejecuta una instrucción, incrementa el PC en dos o cuatro, para que apunte a la dirección de memoria de la siguiente instrucción. En la terminología de programación cuando una variable o registro contiene como dato una dirección de memoria, se dice que la variable o el registro es un puntero que apunta a una determinada dirección de memoria. 22

24 Para el C167 existen dos tipos de ensambladores, uno de muy bajo nivel llamado ensamblador de línea y otro de alto nivel llamado ensamblador de PC. Nada mejor que un ejemplo para entender la diferencia entre ambos, ver Figura 12 Etiquetas (op) En PC MOV R0,#1 ; r0 (i) MOV R1,#1 ; auxiliar bucle: CMP R0,#5 ; if i>n JMPR cc_sgt,fin ; then goto fin ADD 0xfa00H,R1 ; j += 1 ADD R0,#1 ; i += 1 JMPR cc_uc, bucle fin: Instrucción Operandos Comentarios (opcional) En línea 500 MOV R0,#1 ; r0 (i) 502 MOV R1,#1 ; auxiliar 504 CMP R0,#5 ; if i>n 506 JMPR cc_sgt,0x510 ; then goto 512H 508 ADD 0xfa00,R1 ; j += 1 50C ADD R0,#1 ; i += 1 50E JMPR cc_uc,0x504 ; salto sin condición 510 Figura 12: comparación entre ensamblador de línea y de PC El ensamblador de línea es lo más parecido al código máquina ya que cuando se escribe se debe tener muy claro en qué dirección de memoria se encuentra cada instrucción, de forma que cuando se hacen saltos se tiene que poner la dirección de memoria donde se salta. Esto es así porque cuando se escribe ensamblador en línea se está escribiendo código máquina directamente en la memoria, gracias a un programa que está cargado en la pastilla del micro que se llama monitor y que es capaz de comunicarse una consola del PC y escribir en memoria el código ensamblador que se quiera. En cambio el ensamblador de PC admite lo que se llaman etiquetas, que no son más que nombres que representan una dirección de memoria, que no se conoce a priori y por lo tanto se usa la etiqueta en su lugar. Esas direcciones de memoria se resuelven o se conocen cuando el programa se termina y se ensambla. El programa que ensambla se llama ensamblador y se ejecuta en un PC, y lo único que hace es traducir las etiquetas en direcciones de memoria, traducir cada instrucción a código máquina y situar cada instrucción en una dirección de memoria. Como resultado se genera un fichero que se puede cargar en la memoria del micro directamente Resumen de instrucciones en ensamblador Se pueden clasificar las instrucciones de ensamblador en diferentes tipos: 23

25 Transferencia de datos. Son instrucciones que sirven para mover los datos de un lugar a otro. La instrucción más importante es mov. Aritméticas. Son instrucciones que sirven para realizar operaciones aritméticas. Las más importantes son: add (suma), sub (resta), cmp (comparación, resta operandos y compara con 0), neg (hace el complemento a dos), mul (multiplica), div (divide). Lógicas. Realizan operaciones lógicas: and (multiplicación lógica), or (suma lógica), cpl (complemento a 1). Desplazamientos de bits. Desplazan los bits de un registro hacia la derecha o izquierda. shr (shift right -> derecha), shl (shift left -> izquierda). Saltos en la ejecución. Realiza saltos en la ejecución según la condición. jmpr cc_uc (sin condición), cc_eq (igual), cc_ne (no igual), cc_ugt (sin signo mayor que), cc_sgt (con signo mayor que), cc_ule (sin signo menor o igual que,...). Para entender cómo funcionan los saltos ver capítulo 6 sección 7. Los número en ensamblador se suelen usar o bien para literales o para referirse a direcciones de memoria. Por defecto el número que se escribe se considera que está en decimal, si se pone un 0x por delante el número está en hexadecimal. A continuación se muestran ejemplos de utilización de instrucciones para irse familiarizando con el ensamblador y el C: MOV R0, #0x4433. Esto hace R0 = 0x4433 MOV R1, R0. Es equivalente a R1 = R0, por lo tanto R1 = 0x4433 AND R1, #0xFF00. Es equivalente a R1 = R1 & 0xFF00. Un and lógico bit a bit, quedando R1 = 0x4400. MOV R2, R0. Es equivalente a R2 = R0, por lo tanto R2 = 0x4433. AND R2, #0x00FF. Es equivalente a R2 = R2 & 0x00FF. Un and lógico bit a bit, quedando R2 = 0x0033. SHR R1, #8. Es R1 = R1 >> 8. Un desplazamiento de bits a la derecha, quedando R1 = 0x0044. ADD R1, R2. Es una suma aritmética R1 = R1 + R2, quedando R1 = 0x0077. CPL R1. Realiza el complemento a 1, en C sería R1 = ~R1, quedando R1 = 0xFF88. XOR R1,#0xFFFF. Realiza un XOR de R1, en C sería R1 = R1 ^0xFFFF. Este ejemplo es interesante ya que un XOR con 0xFFFF es lo mismo que un complemento a 1, justo como el ejemplo anterior Modos de direccionamiento El 167 dispone de los siguientes modos de direccionamiento para acceder a los operandos: 24

26 Direccionamiento Símbolo Inmediato #data Directo a GPR Rw, Rb Directo a SFR o GPR reg Directo a memoria mem Indirecto [Rw] Indirecto con pre-decremento [-Rw] Indirecto con post-incremento [Rw+] Indirecto con desplazamiento [Rw+#data16] A continuación se describen diferentes ejemplos de utilización con la instrucción MOV: MOV R0,R1 ; Directo a registro (R1 -> R0) MOV R0,#5 ; Inmediato (5 -> R0) MOVB RL0,#0 ; Inmediato al byte bajo (0 -> R0) MOVB RH0,#3 ; Inmediato al byte alto (3 -> R0) MOV R1,0xFA00h ; Directo desde memoria MOV R1,[R0] ; Indirecto ( (R0) -> R1) MOV [-R0],R1 ; Indirecto con pre-decremento MOV [R0+],R1 ; Indirecto con post incremento MOV R1,[R0+#4] ; Indirecto con desplazamiento La primera instrucción utiliza direccionamiento directo a registro en ambos operandos. La instrucción carga el contenido del registro R1 en el registro R0, a nivel de word (16 bits). La segunda instrucción utiliza direccionamiento inmediato (símbolo #) en el segundo operando. La instrucción carga el número 5 en el byte (8 bits) bajo de R0. La siguiente instrucción carga 0 en el byte alto de R0. La parte baja R0 recibe el nombre de RL0, mientras que la parte alta recibe el nombre de RH0. No olvidar especificar parte alta o baja del registro. De lo contrario el ensamblador da el error 74: "Illegal Operand Type". La instrucción MOV R1,0xFA00h carga el valor almacenado en la posición de memoria 0xFA00h en R1, utilizando direccionamiento a memoria (16 bits para la dirección). En el direccionamiento largo se utilizan los registros DPP's (Data Page Pointers). Nótese que si en la segunda instrucción olvidáramos el símbolo #, en R0 se cargaría el contenido de la posición 5 de memoria, en lugar del número 5. La instrucción MOV R1,[R0] carga el contenido de la posición de memoria apuntada por R0, en R1. El modo de direccionamiento se conoce con el nombre de "indirecto". (Nótense los corchetes en R0 para indicar contenido de la posición de memoria). Si en R0 tenemos almacenado el valor 0x200, se carga en R1 el contenido de la posición de memoria 0x200. En el acceso a memoria se utilizan los DPP's. Las dos instrucciones siguientes utilizan variantes del modo de direccionamiento indirecto. Variantes con pre-decremento y con post-incremento. Estas variantes, a parte de obtener el operando, actualizan el valor del puntero (registro de direcciones). En las instrucciones con pre-decremento el puntero se decrementa antes de obtener el operando. 25

27 Luego si en R0 se tiene el valor 0x200, la instrucción MOV [-R0],R1 decrementa en dos unidades (R0 = 0x1FE). A continuación carga el valor almacenado en R1 (2 bytes) en la posición de memoria apuntada por R0. En las instrucciones con post-incremento, el puntero se incrementa después de obtener el operando. Luego si en R0 tiene el valor 0x200, la instrucción MOV [R0+],R1 carga R1 en la posición de memoria apuntada por R0 (2 bytes), e incrementa (R0 = 0x202) en dos unidades. Las instrucciones con predecremento y con post-incremento actualizan el valor del puntero de acuerdo con el tamaño de operando. Es decir, si el operando es a nivel de byte se suma/resta 1. Si es a nivel de word, se suma/resta 2 (dos bytes). (Esta es una forma rudimentaria de manejo automático de tamaños. Los operadores ++ y - del lenguaje C hacen esto mismo con cualquier tipo de operandos). La última instrucción MOV R1,[R0+#4] utiliza un cierto desplazamiento 4. Estos direccionamientos (indirectos con desplazamiento) no actualizan el valor del puntero. El desplazamiento sirve únicamente para obtener la dirección del operando Números con signo y sin signo Un número negativo es aquel que sumado al mismo positivo da cero. Por ejemplo si se suma en 16 bits el número 0xFFFF y 0x0001 da como resultado 0x10000 que en 16 bits es el 0x0000. Esta aritmética se llama aritmética en como fija complemento a 2 y permite deducir el negativo de un número con la ecuación: número _ negativo = 2 número _ de_ bits número _ positivo Por ejemplo, en 16 bits, el negativo de 2 es 0xFFFE en hexadecimal o en decimal: 16 0xFFFE = 2 0x0002 En definitiva los números que tienen un uno como bit más significativo son negativos y los que no son positivos. Por lo tanto si se mira en una dirección de memoria del micro y se ve que está almacenado el número 0xFFFE, qué significa?. Puede tener muchos significados: Puede representar a una instrucción Puede representar al número Puede representar al número -2 Puede representar cualquier tipo de códificación que se el usuario quiera Esto viene a decir, que la interpretación del contenido de una posición de memoria depende del programador, la cuál se escenifica en el tipo de instrucciones que use para decodificarla. Si pone el PC apuntanto a esa dirección de memoria significa que la está interpretando como una instrucción, si accede a esa dirección de memoria con una instrucción que tiene en cuenta el signo (MUL, DIV, JMPR cc_sgt,...) entonces la está interpretando como un número con signo y si accede con una instrucción que no tiene en cuenta el signo (MULU, DIVU, JMPR cc_ugt,...) entonces la está interpretando como un número sin signo. 26

28 2.2.4 Ejemplos básicos de codificación en ensamblador A continuación se muestran dos ejemplos de programación estructurada en C y su equivalencia en ensamblador Condición if (a == b) a = 0; next: MOV CMP JMPR MOV MOV R0,a R0,b cc_ne,next R0,#0 a,r Bucle i = 0; while (i<10) { a[i] = i; i += 1; Es necesario hacer notar que i += 1 es lo mismo que i = i +1; MOV R0,#0 MOV R1,#1 MOV R2,#0fa00h otro: CMP R0,#10 JMPR cc_sge,next MOV [R2],R0 ADD R0,R1 ADD R2,#2 JMPR cc_uc, otro next: 2.3 Mapa de memoria del C167 El mapa de memoria describe de forma gráfica qué hay en cada rango de direcciones: memoria RAM, ROM o Periféricos. El mapa de memoria del C167 está dividido en segmentos de Bytes, cada uno de los cuales se divide a su vez en 4 páginas de

29 Bytes. Como la memoria puede llegar a ser de 16MBytes, puede haber 256 segmentos y 256*4=1024 páginas, como se puede ver en la Figura 13. En la tarjeta que se utiliza para las prácticas de laboratorio todos los segmentos menos el primero tienen memoria ROM. El primer segmento tiene RAM (externa, esto es, fuera del chip de la CPU). Una pequeña parte del segmento S0 (página 3) tiene RAM interna (dentro del chip de la CPU) y los registros, por ello es el segmento más importante. FF FFFF Página 3 (RAM Interna) FFFF 16 Mb 256 Segmentos de 64 kb Página 2 Página 1 (RAM ext) C S1 64Kb S0 64Kb 16 Kb Página 0 (RAM ext) Figura 13: mapa de memoria del C167 Como se puede ver en la Figura 13, la página 0 y 1 del micro son generalmente RAM externa (ciertas versiones del micro tienen ROM interna). La página 3 contiene la RAM interna y los registros tal como se muestra en la Figura 14: Desde la dirección 0xF600 hasta la 0xFC00 se encuentra el STACK, que es memoria RAM para almacenamiento temporal. Desde la dirección 0xFC00 hasta la 0xFD00 están mapeados los GPRs. Como los GPRs son 15 y caben 256 en esa zona de memoria, significa que los GPRs pueden estar mapeados en distintas direcciones de memoria. Para más información sobre el mapeo de los GPRs ver sección Desde la dirección 0xFD00 hasta la 0xFE00 se encuentra una zona de memoria RAM que se puede acceder a nivel de bit, es decir, se pueden usar como operandos con instrucciones que trabajan a nivel de bit. Desde la dirección 0xFE00 hasta la 0XFFFF se encuentran mapeados los SFRs. 28

30 SFR s RAM SFRs acceso bit a bit SFRs Acceso bit a bit GPRs FFFF FF00 FE00 FD00 FC00 STACK F600 Figura 14: Organización de la página 3 del C Los registros de propósito general GPRs Los registros de propósito general son 16 y se van de R0 hasta R15. Los 8 primeros registros (R0 a R7) se pueden acceder a nivel de byte (8 bits). En este caso reciben los nombres, por ejemplo para R0, de RL0 y RH0, y se pueden usar con instrucciones que manejan datos a nivel de byte. Solamente los 4 primeros registros (R0 a R3) pueden almacenar direcciones (punteros), para ser usados con modos de direccionamiento indirecto. Para más información sobre modos de direccionamiento ver sección de este capítulo. Se encuentran ubicados en la zona de la memoria que comprende 0xFC00 a 0xFD00, en concreto donde indique el registro CP Principales SFRs de la CPU En las siguientes subsecciones se describen los principales registros de propósito específico que tiene la CPU. En posteriores capítulos se tratarán otros SFRs que permiten gestionar los periféricos del C PC (Program Counter) Como la memoria del C167 puede llegar a ser de 16MBytes, significa que podría haber partes de un programa que estuvieran situadas en los últimos segmentos, lo que implica que el PC debería tener la capacidad de direccionar hasta 16MBytes. Por otro lado, dado que el C167 es un micro de 16 bits, sus registros son de a lo sumo 16 bits. Por lo tanto para poder direccionar hasta 16 MBytes (24 bits) es necesario usar dos registros. Precisamente por esa razón el PC del C167 se desdobla en dos registros: CSP (Code Segment Pointer): registro de 8 bits que almacena el Byte más alto de PC; lo que es lo mismo que decir que apunta al segmento en uso por PC. IP (Instruction Pointer): registro de 16 bits que almacena los 2 Bytes más bajos de PC; lo que es lo mismo que decir que apunta a cualquier dirección dentro del segmento seleccionado por CSP. 29

31 Por ejemplo: Si PC = CSP IP Esto mismo se explica de forma ilustrada en la Figura bits FF FFFF CSP indica el segmento en uso de los 255 posibles Segmentos bits S1 64Kb S0 64Kb IP indica la zona del segmento en uso de las 64k posibles Figura PSW (Processor Status Word) El registro de estado PSW, se encarga de almacenar el estado en el que ha quedado el micro después de que se ejecuta una instrucción. Es un registro de 16 bits, del que por ahora sólo se verán los flags de estado, que son los siguientes: C (flag de acarreo). Para números sin signo, se sabe si ha existido rebose al efectuar la suma, comprobando el flag de "carry" (flag C) del registro de estado de µp. (Este bit también sirve para indicar si ha existido acarreo "negativo" (borrow), que se produce cuando el substraendo es mayor que el minuendo en una operación de resta). V (flag de rebose). Cuando se opera con números con signo se debe comprobar el estado del flag de "overflow" (flag V). Este flag se pone a 1 si al sumar dos números positivos se obtiene uno negativo (bit más significativo a 1), y viceversa. Al sumar dos números de distinto signo nunca se tiene rebose. N (flag de número negativo). Indica que una operación ha generado un resultado negativo. En 8 bits significa que el bit 7 es 1 y en 16 bits significa que el bit 15 es 1. Z (flag de cero). Indica si una operación ha obtenido como resultado un cero SP (Stack pointer) 30

Arquitectura y mapa de memoria del 80C167. Cesáreo Fernández Martínez Álvaro Sánchez Miralles

Arquitectura y mapa de memoria del 80C167. Cesáreo Fernández Martínez Álvaro Sánchez Miralles Arquitectura y mapa de memoria del 80C167 Cesáreo Fernández Martínez Álvaro Sánchez Miralles Introducción Microcontrolador (Embedded Processor) de 16 bits ALU y Registros de 16 bits Diseñado para tareas

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes:

Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes: Facultad de Ciencias Exactas y Naturales y Agrimensura Departamento de Ingeniería Cátedra : Proyecto Final Apuntes : Microprocesadores Tema 6-1 : Esquema de un µp. La CPU Lo que definimos como CPU (Central

Más detalles

Entorno de Ejecución del Procesador Intel Pentium

Entorno de Ejecución del Procesador Intel Pentium Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador

Más detalles

UNIDAD 2 Configuración y operación de un sistema de cómputo Representación de datos Conceptos El concepto de bit (abreviatura de binary digit) es fundamental para el almacenamiento de datos Puede representarse

Más detalles

Arquitectura Von Neumann

Arquitectura Von Neumann Arquitectura Von Neumann Arquitectura Von Neumann Establecida en 1945 por Von Neumann Modelo básico de arquitectura utilizado en la mayoría de los computadores Su idea es la de conectar permanentemente

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

6-REGISTROS DEL 8086 Y DEL 80286

6-REGISTROS DEL 8086 Y DEL 80286 ESTRUCTURA DE COMPUTADORES I (Capítulo 6: Los registros del microprocesador 8086) 1/7 6-REGISTROS DEL 8086 Y DEL 80286 6.1 INTRODUCCIÓN: Dentro del procesador existen unos contenedores especiales de 16

Más detalles

SISTEMAS DE NUMERACIÓN. Sistema decimal

SISTEMAS DE NUMERACIÓN. Sistema decimal SISTEMAS DE NUMERACIÓN Sistema decimal Desde antiguo el Hombre ha ideado sistemas para numerar objetos, algunos sistemas primitivos han llegado hasta nuestros días, tal es el caso de los "números romanos",

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

Capítulo 0. Introducción.

Capítulo 0. Introducción. Capítulo 0. Introducción. Bueno, por fin está aquí el esperado (espero!!) Capítulo Cero del Tutorial de Assembler. En él estableceremos algunos conceptos que nos serán de utilidad a lo largo del Tutorial.

Más detalles

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8 Dpto. de ATC, Universidad de Sevilla - Página de Capítulo : INTRODUCCIÓN SISTEMAS DE REPRESENTACIÓN NUMÉRICA Introducción Bases de numeración Sistema decimal Sistema binario Sistema hexadecimal REPRESENTACIÓN

Más detalles

Clase 20: Arquitectura Von Neuman

Clase 20: Arquitectura Von Neuman http://computacion.cs.cinvestav.mx/~efranco @efranco_escom efranco.docencia@gmail.com Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Arquitectura de una computadora Elementos básicos de una

Más detalles

Tema 2. Diseño del repertorio de instrucciones

Tema 2. Diseño del repertorio de instrucciones Soluciones a los problemas impares Tema 2. Diseño del repertorio de instrucciones Arquitectura de Computadores Curso 2009-2010 Tema 2: Hoja: 2 / 16 Tema 2: Hoja: 3 / 16 Base teórica Al diseñar un computador,

Más detalles

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Los sistemas de numeración se clasifican en: posicionales y no posicionales. SISTEMAS NUMERICOS Un sistema numérico es un conjunto de números que se relacionan para expresar la relación existente entre la cantidad y la unidad. Debido a que un número es un símbolo, podemos encontrar

Más detalles

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte) Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte) Unidad de trabajo 2: INFORMÁTICA BÁSICA... 1 1. Representación interna de datos.... 1 1.2. Sistemas de numeración.... 2 1.3. Aritmética binaria...

Más detalles

DESCRIPCION DEL SITEMA MASTER.

DESCRIPCION DEL SITEMA MASTER. DESCRIPCION DEL SITEMA MASTER. ESTRUCTURA. El sistema MASTER (Sistema Modular para Control Adaptativo en Tiempo Real) se ha implementado en base a un computador compatible PC-AT, dotado de una tarjeta

Más detalles

TEMA 4. Unidades Funcionales del Computador

TEMA 4. Unidades Funcionales del Computador TEMA 4 Unidades Funcionales del Computador Álvarez, S., Bravo, S., Departamento de Informática y automática Universidad de Salamanca Introducción El elemento físico, electrónico o hardware de un sistema

Más detalles

Curso Completo de Electrónica Digital

Curso Completo de Electrónica Digital CURSO Curso Completo de Electrónica Digital Este curso de larga duración tiene la intención de introducir a los lectores más jovenes o con poca experiencia a la Electrónica Digital, base para otras ramas

Más detalles

Comparadores UNIDAD V

Comparadores UNIDAD V Comparadores UNIDAD V Tecsup Virtu@l Automatización Lógica Programable Índice MÓDULO 2: PROGRAMACIÓN AVANZADA Unidad V: COMPARADORES 1. Comparadores... 1 1.1 Introducción... 1 1.2 Objetivos... 1 1.3 Contenido...

Más detalles

INFORMÁTICA. Matemáticas aplicadas a la Informática

INFORMÁTICA. Matemáticas aplicadas a la Informática ACCESO A CICLO SUPERIOR INFORMÁTICA Matemáticas aplicadas a la Informática http://trasteandoencontre.km6.net/ 1 Acceso a grado Superior. Informática 1. Unidades de medida en informática Como sabemos, el

Más detalles

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo abel@it.uc3m.es. Universidad Carlos III de Madrid

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo abel@it.uc3m.es. Universidad Carlos III de Madrid Arquitectura de Ordenadores Codificación de la Información Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Lógica Binaria COD-1 Internamente el ordenador

Más detalles

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos). Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos). Memoria Típica. Los datos almacenados en memoria tienen que pasar, en un momento

Más detalles

Tema 7: Esquema del Funcionamiento de una Computadora. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Tema 7: Esquema del Funcionamiento de una Computadora. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid Tema 7: Esquema del Funcionamiento de una Computadora Ingeniería Informática Universidad Autónoma de Madrid Esquema del Funcionamiento de una Computadora O B J E T I V O S Adquirir los conceptos básicos

Más detalles

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información TEMA 1: SISTEMAS INFORMÁTICOS Parte 2: representación de la información Qué vamos a ver? Cómo se representa y almacena la información en un ordenador Cómo podemos relacionar la información que entendemos

Más detalles

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES. 1.- a) Explica qué es un bit de información. Qué es el lenguaje binario? Bit es la abreviatura de Binary digit. (Dígito binario). Un bit es un dígito del lenguaje binario que es el lenguaje universal usado

Más detalles

Tema I. Sistemas Numéricos y Códigos Binarios

Tema I. Sistemas Numéricos y Códigos Binarios Tema I. Sistemas Numéricos y Códigos Binarios Números binarios. Aritmética binaria. Números en complemento-2. Códigos binarios (BCD, alfanuméricos, etc) Números binarios El bit. Representación de datos

Más detalles

Matemática de redes Representación binaria de datos Bits y bytes

Matemática de redes Representación binaria de datos Bits y bytes Matemática de redes Representación binaria de datos Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo pueden entender

Más detalles

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO I. SISTEMAS NUMÉRICOS DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO LIC. LEYDY ROXANA ZEPEDA RUIZ SEPTIEMBRE DICIEMBRE 2011 Ocosingo, Chis. 1.1Sistemas numéricos. Los números son los mismos en todos

Más detalles

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software. ARQUITECTURA DE LAS COMPUTADORAS QUE ES UNA COMPUTADORA (UN ORDENADOR)? Existen numerosas definiciones de una computadora, entre ellas las siguientes: 1) Una computadora es un dispositivo capaz de realizar

Más detalles

INTRODUCCIÓN. Definiciones ORDENADOR (RAE 1992): En esta asignatura computador y ordenador tiene el mismo significado

INTRODUCCIÓN. Definiciones ORDENADOR (RAE 1992): En esta asignatura computador y ordenador tiene el mismo significado INTRODUCCIÓN UPCO ICAI Departamento de Electrónica y Automática 1 Definiciones ORDENADOR (RAE 1992): Máquina electrónica dotada de una memoria de gran capacidad y de métodos de tratamiento de la información,

Más detalles

ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES

ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES ANEXO 2: REPRESENTACION DE LA INFORMACION EN LOS COMPUTADORES SISTEMA DE NUMERACIÓN BASE 2 El sistema de numeración binario es el conjunto de elementos {0, 1} con las operaciones aritméticas (suma, resta,

Más detalles

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5. Representación de la información Contenidos 1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5. Conversiones

Más detalles

Práctica 1. Introducción al SIEMENS 80C167

Práctica 1. Introducción al SIEMENS 80C167 Práctica 1 Introducción al SIEMENS 80C167 1 Objetivos Toma de contacto con los recursos de la tarjeta PHY80C167 basada en el microcontrolador SIEMENS 80C167 Familiarizarse con la herramienta de desarrollo

Más detalles

La Unidad Procesadora.

La Unidad Procesadora. La Unidad Procesadora. En un sistema digital complejo, la capa de hardware de la máquina es el nivel más bajo del modelo de capas de un sistema microcomputarizado. La unidad procesadora es una parte del

Más detalles

INTRODUCCION A LA PROGRAMACION DE PLC

INTRODUCCION A LA PROGRAMACION DE PLC INTRODUCCION A LA PROGRAMACION DE PLC Esta guía se utilizará para estudiar la estructura general de programación de um PLC Instrucciones y Programas Una instrucción u orden de trabajo consta de dos partes

Más detalles

Clase 02: Representación de datos

Clase 02: Representación de datos Arquitectura de Computadores y laboratorio Clase 02: Representación de datos Departamento de Ingeniería de Sistemas Universidad de Antioquia 2015-2 Contenido 1 2 Representación de la Información Y sistemas

Más detalles

Capítulo 1 Introducción a la Computación

Capítulo 1 Introducción a la Computación Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:

Más detalles

Naturaleza binaria. Conversión decimal a binario

Naturaleza binaria. Conversión decimal a binario Naturaleza binaria En los circuitos digitales sólo hay 2 voltajes. Esto significa que al utilizar 2 estados lógicos se puede asociar cada uno con un nivel de tensión, así se puede codificar cualquier número,

Más detalles

Sistemas de Numeración Operaciones - Códigos

Sistemas de Numeración Operaciones - Códigos Sistemas de Numeración Operaciones - Códigos Tema 2 1. Sistema decimal 2. Sistema binario 3. Sistema hexadecimal 4. Sistema octal 5. Conversión decimal binario 6. Aritmética binaria 7. Complemento a la

Más detalles

Sistemas de numeración

Sistemas de numeración Sistemas de numeración Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. Los sistemas de numeración actuales son sistemas posicionales, que se caracterizan

Más detalles

Tema 2. La Información y su representación

Tema 2. La Información y su representación Tema 2. La Información y su representación 2.1 Introducción. Un ordenador es una máquina que procesa información. La ejecución de un programa implica la realización de unos tratamientos, según especifica

Más detalles

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador.

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador. Qué es la informática? La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador. Se llama sistema informático al sistema

Más detalles

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN I. P. N. ESIME Unidad Culhuacan INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA UNIDAD CULHUACAN INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN LABORATORIO

Más detalles

1. SISTEMAS DIGITALES

1. SISTEMAS DIGITALES 1. SISTEMAS DIGITALES DOCENTE: ING. LUIS FELIPE CASTELLANOS CASTELLANOS CORREO ELECTRÓNICO: FELIPECASTELLANOS2@HOTMAIL.COM FELIPECASTELLANOS2@GMAIL.COM PAGINA WEB MAESTROFELIPE.JIMDO.COM 1.1. INTRODUCCIÓN

Más detalles

Actividad 4: Comunicación entre PLC s vía Ethernet

Actividad 4: Comunicación entre PLC s vía Ethernet Actividad 4: Comunicación entre PLC s vía Ethernet 1.- Listado de materiales: PC con Tarjeta de red 3com o similar. 2 PLC Omrom CJ1M CPU11 ETN Estos autómatas llevan integrada la tarjeta de comunicaciones

Más detalles

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: 5 10 2 2 10 1 8 10 0 =528 8 10 3 2 10 2 4 10 1 5 10 0 9 10 1 7 10 2 =8245,97

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: 5 10 2 2 10 1 8 10 0 =528 8 10 3 2 10 2 4 10 1 5 10 0 9 10 1 7 10 2 =8245,97 SISTEMAS DE NUMERACIÓN Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. La norma principal en un sistema de numeración posicional es que un mismo símbolo

Más detalles

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Introducción a la Programación 11 O. Humberto Cervantes Maceda Introducción a la Programación 11 O Humberto Cervantes Maceda Recordando En la sesión anterior vimos que la información almacenada en la memoria, y por lo tanto aquella que procesa la unidad central de

Más detalles

AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas

AUTOMATIZACION. Reconocer la arquitectura y características de un PLC Diferenciar los tipos de entradas y salidas AUTOMATIZACION GUIA DE TRABAJO 2 DOCENTE: VICTOR HUGO BERNAL UNIDAD No. 3 OBJETIVO GENERAL Realizar una introducción a los controladores lógicos programables OBJETIVOS ESPECIFICOS: Reconocer la arquitectura

Más detalles

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL ELECTRÓNICA DIGITAL La electrónica es la rama de la ciencia que se ocupa del estudio de los circuitos y de sus componentes, que permiten modificar la corriente eléctrica amplificándola, atenuándola, rectificándola

Más detalles

CURSO 2010-2011 TECNOLOGÍA TECNOLOGÍA 4º ESO TEMA 5: Lógica binaria. Tecnología 4º ESO Tema 5: Lógica binaria Página 1

CURSO 2010-2011 TECNOLOGÍA TECNOLOGÍA 4º ESO TEMA 5: Lógica binaria. Tecnología 4º ESO Tema 5: Lógica binaria Página 1 Tecnología 4º ESO Tema 5: Lógica binaria Página 1 4º ESO TEMA 5: Lógica binaria Tecnología 4º ESO Tema 5: Lógica binaria Página 2 Índice de contenido 1. Señales analógicas y digitales...3 2. Código binario,

Más detalles

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC Temporizadores y contadores en tiempo real: El módulo Timer0 y el aler del PIC 1. Introducción...1 2. Estructura del Timer0...1 3. Funcionamiento del Timer0...2 3.1. Entrada de reloj del modulo Timer0...

Más detalles

Tema IV. Unidad aritmético lógica

Tema IV. Unidad aritmético lógica Tema IV Unidad aritmético lógica 4.1 Sumadores binarios 4.1.1 Semisumador binario (SSB) 4.1.2 Sumador binario completo (SBC) 4.1.3 Sumador binario serie 4.1.4 Sumador binario paralelo con propagación del

Más detalles

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN

TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN TEMA II: REPRESENTACIÓN DE LA INFORMACIÓN 2.1. Introducción. El computador procesa información. Para que un ordenador ejecute unos datos es necesario darle dos tipos de información: las instrucciones que

Más detalles

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS

PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS PROBLEMAS DE FUNDAMENTOS DE TECNOLOGÍA DE COMPUTADORES T5. MEMORIAS Tema 5 Memorias Hoja: 2 / 14 Base teórica La memoria es el lugar en el que se almacenan las instrucciones y los datos para que se puedan

Más detalles

Fundamentos de Programación. Sabino Miranda-Jiménez

Fundamentos de Programación. Sabino Miranda-Jiménez Fundamentos de Programación Sabino Miranda-Jiménez MÓDULO 1. Introducción a la computación Temas: La computación en el profesional de ingeniería Desarrollo computacional en la sociedad Aplicaciones Software

Más detalles

La memoria principal. Los subsistemas de E/S. Los buses del sistema

La memoria principal. Los subsistemas de E/S. Los buses del sistema GUIA 23: MEMORIA E/S La estructura básica de la mayoría de los ordenadores actuales se representa mediante los siguientes elementos básicos: La Unidad Central de Procesamiento, CPU La memoria principal

Más detalles

Apuntes de Microcontroladores (Repaso de temas previos)

Apuntes de Microcontroladores (Repaso de temas previos) Apuntes de Microcontroladores (Repaso de temas previos) Por M. C. Miguelangel Fraga Aguilar Enero 2015 Representaciones numéricas En estos apuntes se usara el posfijo b para denotar un número escrito en

Más detalles

Qué es un Microcontrolador?

Qué es un Microcontrolador? Curso de Microcontroladores Qué es un Microcontrolador? Al igual que la mayoría de las computadoras, los microcontroladores son simples ejecutores de instrucciones de propósito general. La verdadera estrella

Más detalles

18. Camino de datos y unidad de control

18. Camino de datos y unidad de control Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 18. Camino de datos y unidad de control Un La versatilidad una característica deseable los Los

Más detalles

TEMA 2: Representación de la Información en las computadoras

TEMA 2: Representación de la Información en las computadoras TEMA 2: Representación de la Información en las computadoras Introducción Una computadora es una máquina que procesa información y ejecuta programas. Para que la computadora ejecute un programa, es necesario

Más detalles

TEMA 5. ELECTRÓNICA DIGITAL

TEMA 5. ELECTRÓNICA DIGITAL TEMA 5. ELECTRÓNICA DIGITAL 1. INTRODUCCIÓN Los ordenadores están compuestos de elementos electrónicos cuyas señales, en principio, son analógicas. Pero las señales que entiende el ordenador son digitales.

Más detalles

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION CHIQUINQUIRA (BOYACA) 2015 1 CONTENIDO Pág. QUE ES UN SISTEMA BINARIO. 3 CORTA HISTORIA DE LOS

Más detalles

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS Autores GROSSI, María Delia (mdgrossi@mara.fi.uba.ar) JIMÉNEZ REY, M. Elizabeth (ejimenez@mara.fi.uba.ar)

Más detalles

CIRCUITOS ARITMÉTICOS

CIRCUITOS ARITMÉTICOS LABORATORIO # 6 Realización: 26-05-2011 CIRCUITOS ARITMÉTICOS 1. OBJETIVOS Comprender los circuitos aritméticos dentro de la lógica binaria Utilizar sumadores totales de cuatro bits dentro de un Circuito

Más detalles

Cuestionario: Programación en C y máscaras (II)

Cuestionario: Programación en C y máscaras (II) Este documento es un autotest de ayuda enmarcado en la asignatura Informática Industrial y corresponde al tema Programación en C, pero es abierto y puede servir para entender el funcionamiento básico de

Más detalles

Los Microprocesadores MIA José Rafael Rojano Cáceres Arquitectura de Computadoras I Evolución Histórica de los Microprocesadores Intel Evolución de los microprocesadores Intel de la década de los 70 4004

Más detalles

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 5.1.3 Multiplicación de números enteros. El algoritmo de la multiplicación tal y como se realizaría manualmente con operandos positivos de cuatro bits es el siguiente: 1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0

Más detalles

❷ Aritmética Binaria Entera

❷ Aritmética Binaria Entera ❷ Una de las principales aplicaciones de la electrónica digital es el diseño de dispositivos capaces de efectuar cálculos aritméticos, ya sea como principal objetivo (calculadoras, computadoras, máquinas

Más detalles

Sistemas de numeración, operaciones y códigos.

Sistemas de numeración, operaciones y códigos. Tema : Sistemas de numeración, operaciones y códigos. Para representar ideas, los seres humanos (al menos los occidentales) utilizamos cadenas de símbolos alfanuméricos de un alfabeto definido. En el mundo

Más detalles

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Aritmética binaria

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Aritmética binaria Oliverio J. Santana Jaria 3. Aritmética tica binaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Para Los La en conocer muchos aritmética comprender otros binaria tipos

Más detalles

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente: Departamento de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Antioquia Arquitectura de Computadores y Laboratorio ISI355 (2011 2) Práctica No. 1 Diseño e implementación de una unidad aritmético

Más detalles

Divisibilidad y números primos

Divisibilidad y números primos Divisibilidad y números primos Divisibilidad En muchos problemas es necesario saber si el reparto de varios elementos en diferentes grupos se puede hacer equitativamente, es decir, si el número de elementos

Más detalles

Práctica 4 Diseño de circuitos con puertas lógicas.

Práctica 4 Diseño de circuitos con puertas lógicas. Práctica 4 Diseño de circuitos con puertas lógicas. Descripción de la práctica: -Esta práctica servirá para afianzar los conocimientos adquiridos hasta ahora de simplificación, e implementación de funciones,

Más detalles

Tema 4. Gestión de entrada/salida

Tema 4. Gestión de entrada/salida Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada

Más detalles

Unidad 1. La información

Unidad 1. La información Unidad 1. La información En esta unidad aprenderás: Los conceptos básicos de la informática. Cómo se representa la información dentro del ordenador. Las unidades de información. 1.1 Conceptos básicos Informática.

Más detalles

Capítulo 2 REPRESENTACIÓN DE LOS DATOS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Capítulo 2 REPRESENTACIÓN DE LOS DATOS. Presentación resumen del libro: EMPEZAR DE CERO A PROGRAMAR EN lenguaje C Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 2 REPRESENTACIÓN DE LOS DATOS 1 OBJETIVOS Entender cómo la computadora

Más detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 1. LOS NÚMEROS ENTEROS. UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar

Más detalles

Lección 1. Representación de números

Lección 1. Representación de números Lección 1. Representación de números 1.1 Sistemas de numeración Empecemos comentando cual es el significado de la notación decimal a la que estamos tan acostumbrados. Normalmente se escribe en notación

Más detalles

Informática. Temas 27/03/2014. Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon

Informática. Temas 27/03/2014. Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon Informática Carrera: Bioingeniería Profesora: Lic. S. Vanesa Torres JTP: Ing. Thelma Zanon Temas O Sistema de Numeración O Conversión entre números decimales y binarios. O El tamaño de las cifras binarias

Más detalles

T6. CIRCUITOS ARITMÉTICOS

T6. CIRCUITOS ARITMÉTICOS T6. CIRCUITOS ARITMÉTICOS Circuitos Aritméticos Son dispositivos MSI que pueden realizar operaciones aritméticas (suma, resta, multiplicación y división) con números binarios. De todos los dispositivos,

Más detalles

Arquitectura de Computadores

Arquitectura de Computadores Arquitectura de Computadores Ricardo.Sanz@upm.es Curso 2004-2005 Arquitectura de Computadores Arquitectura de computadores es la disciplina que estudia la organización y funcionamiento de los computadores

Más detalles

Anexo B. Comunicaciones entre mc y PC

Anexo B. Comunicaciones entre mc y PC Anexo B Comunicaciones entre mc y PC En este apartado se hará hincapié en los comandos para el manejo del módulo de comunicaciones desde el PC. Conociendo estos comando se podrá realizar una aplicación

Más detalles

Materia: Informática. Nota de Clases Sistemas de Numeración

Materia: Informática. Nota de Clases Sistemas de Numeración Nota de Clases Sistemas de Numeración Conversión Entre Sistemas de Numeración 1. EL SISTEMA DE NUMERACIÓN 1.1. DEFINICIÓN DE UN SISTEMA DE NUMERACIÓN Un sistema de numeración es un conjunto finito de símbolos

Más detalles

ELECTRÓNICA DIGITAL. Una señal es la variación de una magnitud que permite transmitir información. Las señales pueden ser de dos tipos:

ELECTRÓNICA DIGITAL. Una señal es la variación de una magnitud que permite transmitir información. Las señales pueden ser de dos tipos: ELECTRÓNICA DIGITAL INDICE 1. TIPOS DE SEÑALES... 3 1.1. SEÑALES ANALÓGICAS... 3 1.2. SEÑALES DIGITALES... 3 2. REPRESENTACIÓN DE LAS SEÑALES DIGITALES... 3 2.1. CRONOGRAMAS... 3 2.2. TABLA DE VERDAD...

Más detalles

La arquitectura del 8086/8088

La arquitectura del 8086/8088 Repasamos aquí la arquitectura de un PC. Para más información sobre lo aquí expuesto se puede consultar [PA01] y los capítulos iniciales de [Tej01], [Rod00] y [Nor01]. Anatomía del PC A grandes rasgos,

Más detalles

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones: Ensamblador Interrupciones Definición: Una interrupción es el rompimiento en la secuencia de un programa para ejecutar un programa especial llamando una rutina de servicio cuya característica principal

Más detalles

Primeros conmutadores: diodos de cristal y de tubos de vacío (1906). Transistor (TRT): más pequeño y fiable, de material semiconductor (1950).

Primeros conmutadores: diodos de cristal y de tubos de vacío (1906). Transistor (TRT): más pequeño y fiable, de material semiconductor (1950). Código binario en Sistemas Digitales Historia Primeros conmutadores: diodos de cristal y de tubos de vacío (1906). Transistor (TRT): más pequeño y fiable, de material semiconductor (1950). Circuitos integrados

Más detalles

Introducción a los Sistemas Digitales

Introducción a los Sistemas Digitales Tema Sistema Estructura y comportamiento Señal analógica y señal digital Señal binaria Sistemas de numeración Representación de números enteros Signo-magnitud Complemento a dos Codificación Códigos numéricos

Más detalles

Estructura de Computadores

Estructura de Computadores Estructura de Computadores Tema 4. El procesador Departamento de Informática Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas UNIVERSIDAD CARLOS III DE MADRID Contenido Elementos de un

Más detalles

EJERCICIOS DEL TEMA 1

EJERCICIOS DEL TEMA 1 EJERCICIOS DEL TEMA 1 Introducción a los ordenadores 1) Averigua y escribe el código ASCII correspondiente, tanto en decimal como en binario, a las letras de tu nombre y apellidos. Distinguir entre mayúsculas/minúsculas,

Más detalles

Mod. I, Unid. 1, Obj. 1 Criterio de Dominio 1/1

Mod. I, Unid. 1, Obj. 1 Criterio de Dominio 1/1 M.R. 333 VERSION 1 Prueba Integral 1/5 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERIA MODELO DE RESPUESTA ASIGNATURA: ARQUITECTURA DEL COMPUTADOR CÓDIGO: 333 MOMENTO: PRUEBA INTEGRAL

Más detalles

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León Programa. Introducción. 2. Elementos de almacenamiento. 3. Elementos de proceso. 4. Elementos de interconexión.

Más detalles

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica. 5.2 SISTEMAS DE NUMERACIÓN. DECIMAL El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica. La base de un sistema indica el número de caracteres

Más detalles

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS ESTRUCTURA DE COMPUTADORES Pag. 8.1 LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS 1. Circuitos de multiplicación La operación de multiplicar es mas compleja que la suma y por tanto se

Más detalles

OR (+) AND( ). AND AND

OR (+) AND( ). AND AND Algebra de Boole 2.1.Introducción 2.1. Introducción El Algebra de Boole es un sistema matemático que utiliza variables y operadores lógicos. Las variables pueden valer 0 o 1. Y las operaciones básicas

Más detalles

Entrada/Salida. Polling e Interrupciones. Verano de 2011. Mariano Moscato. Organización del Computador 1

Entrada/Salida. Polling e Interrupciones. Verano de 2011. Mariano Moscato. Organización del Computador 1 Entrada/Salida Polling e Interrupciones Mariano Moscato Organización del Computador 1 Verano de 2011 El GuidoBot Robot docente Basado en tecnología ORGA1 tiene un procesador y una memoria ORGA1 Sus dispositivos

Más detalles

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN PRÁCTICA DE LABORATORIO No I NOMBRE DE LA PRÁCTICA: COMANDOS BÁSICOS DE DEBUG( PARTE I) OBJETIVO: APRENDER LOS COMANDOS

Más detalles