GUIA DE MICROS En 1969 Intel Corporation lanzo el primer microprocesador, el 4004, microprocesador de 4 bits. Solo direccionaba 4096 localidades de 4 bits. Contenía un conjunto de 45 instrucciones. Se empleó en los primero juegos de video. Pequeños controaldores En 1971 intridujero el 8008 de 8 bits Clasificación CISC (Complex Instructions Set Computer) Gran número de instrucciones Control microprogramado (instrucciones en memoria) Menor velocidad. Menor consumo de espacio Pocos registros RISC (Reduce Instructions Set Computer) Reducido número de instrucciones. Control alambrado. (instrucciones en hardware) Mayor velocidad. Mayor consumo de espacio. Muchos registros. Motorola, Apple, National MICROPROCESADOR Propósito General Los elementos auxiliares (memoria, puertos, reloj, etc.) son externos al CPU Fabricación más costosa Arquitectura potente y flexible EL MICROPROCESADOR: Es el dispositivo encargado de realizar cálculos aritméticos y lógicos, temporizar y controlar las operaciones de los demás elementos de un sistema 1)Unidad de control. 2)Unidad Aritmético-lógica (ALU). 3)Registros. 4)Contador programa. 5)Registros generales. 6)Registro de estado. Stack. TRES BLOUES CPU. Memoria. Los tres se encuentran conectados mediante buses. Puertos Las entradas y salidas se conectan por puertos Un puerto es una interfaz física de una computadora a través del la cual pasan los datos hacía y desde los periféricos. Los programas conjunto instrucciones que se ejecutan para resolver un problema específico. El programa se almacena en memoria BUSSES BUS DE DIRECCIONES Unidireccional ( Salida). Determina la capacidad de acceso de un procesador BUS DE DATOS Bidireccional. Influye en la velocidad de acceso de un procesador BUS DE CONTROL Señales de control del procesador. - Ejemplos: Lectura ( Rd), Escritura ( Wr), Memoria ( MEM), Puertos ( IOR) Unidad central de procesamiento (CPU) Tiene la función de realizar las operaciones lógicas y aritméticas para controlar la transferencia de información entre los dispositivos La CPU interpreta, y ejecuta secuencialmente las instrucciones del programa Las instrucciones vienen acompañadas de datos o direcciones. Las instrucciones son leídas por la CPU a través del bus de datos cuando ésta las solicita. La CPU genera señales de control para coordinar las transacciones. 4 PARTES Registros. Son localizaciones físicas que sirven para almacenar temporalmente datos, pueden ser de 8 o 16 bits. Estos están conformados por: Acumulador (W) Almacena temporalmente el resultado de las operaciones a ritméticas lógicas Registro de Instrucciones (IR) Almacena la instrucción que esta ejecutando el CPU. Contador de Programa (PC) Contiene la dirección de la siguiente instrucción del programa. Registro de memoria (MAR) Contiene la dirección de memoria a la cual se tendrá acceso. Registro de operación (ROP) Contiene el código de la operación que ejecutara la unidad a ritmética lógica Unidad Aritmética Lógica. ALU Red combinacional que se encarga de realizar operaciones entre 2 o más operandos. Características: Requiere dos palabras de datos y una de control que especifica el tipo de operación. La ALU realiza la operación especificada y genera un apalabra de salida que representa el resultado. El resultado se puede dirigir a cualquier registro en el CPU. La dirección del resultado lo determina el circuito de control. Las señales de estado se dirigen al registro de condición. Trabaja en conjunto con el registro del acumulador (W) Circuito de temporización y control. Es la encargada de generar las señales para realizar las operaciones indicadas por el usuario. Estas señales de control incluyen el control de lectura, escritura y direccionamiento de memoria a través del bus de control. Otras señales de control se conectan a la ALU y los registros del procesador para regular el flujo de información Unidad de tiempo Se encarga de generar señales de sincronización de acuerdo a una señal de reloj y es la responsable de la velocidad del microprocesador. Unidad de decodificación. Tiene a cargo el proceso de trasladar un patrón binario en una operación o secuencia de operaciones. Se encarga de generar las señales necesarias a todas las partes que integran el microprocesador para que esta instrucción se ejecute. Registro de códigos de condición. Almacena la información que describe la condición de operaciones anteriores. Contiene 8 bits y cada uno representa condiciones como: Acarreo, Desbordamiento, Cero, Medio acarreo entre otros. Las operaciones del microprocesador son sincronizadas por un oscilador, ya que se requiere un cierto numero de pulsos para ejecutar las operaciones que se especifican en las instrucciones. Un ciclo de instrucción consiste en uno o más ciclos de máquina. Durante un ciclo de máquina se realizan los siguientes ciclos: Ciclo de búsqueda (fetch cycle) El μP proporciona la dirección de una instrucción en memoria. La unidad de memoria decodifica la dirección y el contenido de é sta se transfiere (se lee el contenido de la dirección Ciclo de ejecución (execution cycle) La instrucción se decodifica y posteriormente se ejecuta Durante un ciclo de máquina se realizan las siguientes operaciones: El contenido del PC se coloca en el MAR. El contenido del MAR se transfiere a la memoria. La memoria decodifica la dirección enviada. Se lee la instrucción desde la memoria. La instrucción se coloca en el registro IR. La instrucción es decodificada. Ejecución de la instrucción. El PC se incrementa o desactiva de acuerdo a la instrucción que se está ejecutando Durante un ciclo de instrucción se procesan dos tipos de palabras: Palabras de instrucción Palabras de datos Todos los μP disponen de un conjunto básico de instrucciones que se pueden agrupar según su funcionalidad. Transferencia de datos. Cadenas de caracteres. Aritmética. Subrutinas e interrupciones. Manipulación de bits. Control del procesador. Bucles y saltos. A las instrucciones en código binario se denomina lenguaje máquina. Con objeto de no escribir los programas en lenguaje máquina se utilizan Nemónicos que constituyen lo que se conoce como lenguaje ensamblador Los programas ensambladores se encargan de traducir los nemónicos en código máquina. Incluyen pseudo-instrucciones necesarias para facilitar la programación. Un compilador traduce las instrucciones de un lenguaje de alto nivel a lenguaje de máquina MICROCONTROLADOR Es un circuito integrado programable que contiene elementos periféricos de comunicación. Un microcontrolador es un circuito de alta escala de integración que incorpora la mayor parte de los elementos que conforman un controlador. El microcontrolador es un dispositivo dedicado. En su memoria sólo reside un programa destinado a gobernar una aplicación determinada, una vez programado y configurado el microcontrolador solamente sirve para gobernar dicha tarea. Propósito Específico Fabricación económica. Los elementos auxiliares son internos al CPU (Microcomputer Single Chip) Arquitectura específica. ESTRUCTURAS Estructura Harvard Estructura Von New Man PIC DE MICROCHIP En la actualidad se emplean cada vez más debido a: Velocidad Información y herramientas de apoyo. Precio Gamas Facilidad de uso PIC12C5X ➔ Gama baja o clásica ( palabra de programa de 12 bits). PIC16CXXX ➔ Gama media (palabra de programa de 14 bits). PIC17CXXX, PIC18XXX ➔ Gama alta (palabra de programa de 16 bits). PIC. “Periphera Interface Controller” Los fabrica ARIZONA MICROCHIP TECHNOLOGY Características Arquitectura siguiendo el modelo Harvard Distinción entre Memoria de Programa y Memoria de datos.Distinción entre bus de datos y bus de instrucciones. Distinción entre palabra de datos y palabra de instrucciones. Ejecución Dos etapas de ejecución. Cada instrucción se ejecuta en un ciclo de reloj, salvo los saltos que se resuelven en 2 Arquitectura del repertorio de instrucciones siguiendo el modelo RISC Un único tamaño de instrucción. Banco de Registros Características Generales (PIC16F870) Consta de una ALU, decodificador de instrucciones, y una matriz de registros. Incluye un módulo de memoria para programa y una memoria auxiliar para datos del tipo EEPROM. Arquitectura Harvard. Bus de datos= 8 bits, Bus de instrucciones=14 bits. RISC (35 instrucciones). Las instrucciones se ejecutan en 1 ciclo, excepto los saltos. Dispone de 4 puertos de entrada y salida. Entradas multiplexadas para interrupciones y contador. Tipo Flash integrada en el propio chip. En la posición 000h está el Vector de Reset. Desbordamiento del temporizador TMR0 En la posición 04h está el Vector de Interrupción. Cambio de estado en pines RB4 - RB7. Activación del pin INT Velocidad máxima de 20MHz. Organización de Memoria. 4 bancos o páginas de 128 registros de 8 bits. Página ‘0’ ⇒ 80 registros: 12 especiales (SFR) y 68 generales (GPR). Página ‘1’ ⇒ 12 registros de funciones específicas (SFR). 64 registros de 8 bits. BANCOS La memoria interna de datos, también llamada archivo de registros (register file), esta dividida en dos grupos: Los registros especiales (11 pos 00 al 0B) Los registros de propósito generales (08 al 4F) Los registros especiales contienen la palabra de estado (STATUS). Los registros de datos de los tres puertos de entrada salida los 8 bits menos significativos del program counter (PC). Se puede operar con un solo banco a la vez, 5 y 6 bits (FSR). Tres bloques de memoria RAM: Dividida en dos bloques: • • GPR. Registros de propósito general SFR Registros de propósito especial EEPROM: Grabable dinámicamente desde programa. • • Sólo puede contener datos. Sólo permite acceso indirecto. FLASH: Memoria de programa • • Dado que el PC tiene un tamaño de 13 bits: máximo 8Kx14 En PIC16F84: 1K disponible: 0000h..03FFh Reset vector: 0000h Interrupt vector: 0004h (Una única entrada de interrupción. A continuación se ha de verificar cual de las líneas la ha generado) Se organiza en bancos. En PIC16F8x: 2 bancos.. En PIC16F8x: 79 bytes (Cada banco admite hasta 128 bytes) Registros: SFR Banco 0: RP0=0 0x00 -> 0x0B Banco 1: RP0=1 0x00 -> 0x0B GPR Banco 0: 0x0C -> 0x4F (68 bytes) Banco 1: Mapeado completamente en el banco 0 STATUS OPTION INTCON Se dispone de un total de 13 líneas. Cada una programable individualmente como entrada o como salida Se distribuyen en 4 puertos: PORT A, PORT B, PORTC Y PORTD Se accede a cada puerto leyendo o escribiendo en su registro (5h y 6h en RAM) Para configurar cada línea como entrada o salida se modifica su bit correspondiente en el registro TRIS del puerto asociado: TRIS A, TRIS B, TRISC, TRISD (85h y 86h en RAM) ‘1’ línea configurada como entrada ‘0’ línea configurada como salida PUERTO RA0-RA4 Puerto bidireccional de Entrada/Salida. RA4/T0CKL puede comportarse como una Entrada/Salida normal, o bien como una entrada de reloj del contador/temporizador TMR0. PUERTO RB0-RB7 Puerto bidireccional de Entrada/Salida. RB0/INT puede ser utilizado como una entrada de interrupciones. RB4/RB7 pueden ser utilizados para generar interrupciones ante un cambio de nivel. RB6/RB7 pueden ser utilizados para programa el PIC. OSCILADOR Mediante los condensadores y el oscilador se puede seleccionar la frecuencia del reloj: 455KHz, 2 MHz, 4MHz, 8MHz y 10 MHz. Ciclo de instrucción = 4 · Periodo de reloj Ejemplo: Frecuencia de reloj = 4MHz ⇒ Periodo de reloj = 250ns. Ciclo de instrucción = 1/Fosc x 4 = 250 ns x 4 = 1 μs. Temporizador/Contador Consiste en un contador cíclico de 00h a FFh. Cuando se llega a FF se produce un desbordamiento. Dos modos de trabajo: Temporizador: determinar intervalos concretos de tiempo. Se incrementa con cada ciclo de instrucción o divisor. Contador: contar impulsos producidos en el exterior del sistema. PIC consiste en un pequeño conjunto de 32 a 35 instrucciones de 12 bits, que pueden ser agrupadas para su estudio en tres o cinco grupos. Instrucciones que operan con bytes y que involucran algún registro de la memoria interna. Instrucciones que operan solo sobre el registro W y que permiten cargarle una constante implícita. Instrucciones que operan sobre bits individuales de los registros de la memoria interna. Instrucciones de control de flujo del programa. Instrucciones especiales, cuyas funciones o tipos de operandos son muy específicos Estas instrucciones pueden ser de simple o doble operando. El primer operando es el registro seleccionado. El segundo, en caso de existir, será el registro W. El destino donde se guardara el resultado, será el registro seleccionado o el W. Las instrucciones siguientes son las tres operaciones lógicas de doble operando : ANDWF f,d ;operación AND lógica, destino = W f IORWF f,d ;operación OR lógica, destino = W f XORWF f,d ;operación XOR lógica, destino = W f Las que siguen son las cuatro operaciones aritméticas y lógicas sencillas de simple operando : MOVF f,d ;movimiento de datos, destino = f COMF f,d ;complemento lógico, destino = f INCF f,d ;incremento aritmético, destino = f + 1 DECF f,d ;decremento aritmético, destino = f – 1 Instrucciones de rotación de bits a través del CARRY : RLF f,d ;rotación a la izquierda, destino = f ROT RRF f,d ;rotación a la derecha, destino = f ROT En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de cada posición a la siguiente, en sentido derecho o izquierdo. El desplazamiento es cerrado, formando un anillo, con el bit C (CARRY) de la palabra de estado. En estas dos instrucciones, el único bit afectado de la palabra de estado del procesador es el bit C, que tomará el valor que tenia el bit 7 o el bit 0, según sea el sentido del desplazamiento. Estas instrucciones son muy útiles para la manipulación de bits, y además para realizar operaciones aritméticas, ya que en numeración binaria, desplazar un número a la izquierda es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2. La instrucción que realizan el intercambio de posiciones entre los cuatro bits menos significativos y los cuatro más significativos (nibble bajo y nibble alto). SWAPF f,d ;intercambia nibbles,destino = SWAP f Las dos operaciones que siguen son la suma y la resta aritméticas : ADDWF f,d ;suma aritmética, destino = f + W SUBWF f,d ;resta aritmética, destino = f - W Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C, DC y Z. El bit Z se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. Las instrucciones que siguen son de simple operando, pero son casos especiales ya que el destino es siempre el registro seleccionado : CLRF f ;borrado de contenido, MOVWF f f=0 ;copia contenido W f, f=W La instrucción CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0. La instrucción MOVWF (MOVe W a F) no afecta ningún bit de la palabra de estado. Operaciones lógicas tradicionales, similares a las que ya vimos anteriormente, pero realizadas entre una constante de programa y el registro W : IORLW k ; operación OR lógica, W=W k ANDLW k ; operación AND lógica, W = W k XORLW k ; operación XOR lógica, W=W k La instrucción que sigue sirve para cargar una constante de programa en el registro W: MOVLW k ;carga constante en W, W = K Esta instrucción no afecta ninguno de los bits de estado del procesador. La instrucción que sigue (CLeaR W). CLRW ;borra el contenido de W, W = 0 Al igual que en la instrucción CLRF, el único bit de estado afectado es el Z que resulta 1. Instrucciones que operan solamente sobre el bit especificado, el resto de los bits del registro no son alterados. BCF f,b ;borra el bit b de f ; bit f(b) = 0 BSF f,b ;coloca en uno el bit b de f ; bit f(b) = 1 Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de estado del procesador. BIT Instrucciones de Control GOTO k ;salto a la posición k (9 bits) del programa Esta instrucción simplemente carga la constante k en el registro PC (contador de programa). CALL k ;salto a la subrutina en la posición k (8 bits) Su comportamiento es muy similar al de la instrucción GOTO, salvo que además de saltar guarda en el stack la dirección de retorno de la subrutina (para la instrucción RETLW). Esto lo hace simplemente guardando en el stack una copia del PC incrementado, antes de que el mismo sea cargado con la nueva dirección k. RETLW k ;retorno de subrutina con constante k, W = k Esta instrucción produce el retorno de subrutina con una constante literal k en el registro W. BTFSC f,b ;salteo si bit = 0, bit = f(0) saltea BTFSS f,b ;salteo si bit = 1, bit = f(1) saltea BTFSC salta a la próxima instrucción si el bit b del registro f es cero. La instrucción BTFSS salta si el bit es 1. Estas instrucciones pueden usarse para realizar o no una acción según sea el estado de un bit, o en combinación con GOTO, para realizar una bifurcación condicional. DECFSZ f,d ; decrementa y salta sí 0, destino= f - 1 INCFSZ f,d ; incrementa y saltea sí 0, destino= f + 1 Estas dos instrucciones se comportan de manera similar a DECF e INCF, salvo que no afectan a ningún bit de la palabra de estado. Estas instrucciones se utilizan generalmente en combinación con una instrucción de salto (GOTO), para el diseño de ciclos o lazos (loops) de instrucciones que deben repetirse una cantidad determinada de veces. NOP ;no hace nada, consume tiempo Dispositivos encargados de realizar cálculos operaciones y controlar módulos periféricos: MICROCONTROLADOR Módulo que interpreta y ejecuta secuencialmente las instrucciones del programa: CPU Cuáles son los componentes que constituyen el microprocesador: ALU, PC, CPU, Registro Nombre del conjunto de pulsos necesarios para ejecutar las operaciones de una instrucción: Ciclo de Máquina Principales registros que componen la cpu: W IR PC MAR ROP