UNIVERSIDAD DIEGO PORTALES DEPARTAMENTO DE INGENIERIA INDUSTRIAL INTRODUCCION A LA ROBOTICA Arquitecturas RISC versus CISC El PIC 16F84 pertenece a una clase de microcontroladores de 8 bits, con una arquitectura RISC. La estructura genérica nos muestra bloques básicos. Memoria de programa (FLASH) - para almacenar el programa. Una memoria fabricada con tecnología FLASH puede ser programada y borrada varias veces. EEPROM - memoria de datos que deben ser salvados cuando se corta la energía. RAM - memoria de datos usada por un programa, durante a su ejecución. PUERTO A y PUERTO B son los vínculos físicos entre el controlador y el mundo externo. CONTADOR/TEMPORIZADOR registro de 8 bits que trabaja independientemente del programa, hasta llegar al valor máximo (255), y recomienza de cero. UNIDAD DE PROCESAMIENTO CENTRAL coordina el trabajo de todos los otros bloques y ejecuta el programa del usuario. Esquema do microcontrolador PIC16F84 Arquitecturas Harvard versus von Neumann CISC, RISC La arquitectura Harvard o RISC se desarrollo por la necesidad de trabajar más rápidamente. En esta arquitectura la memoria de datos esta SEPARADA de la memoria del programa. Así se logra un flujo de datos mas elevado por la CPU. El PIC 16F84 usa palabras de 14 bits para cada instrucción, y las instrucciones ocupan sólo una palabra. Es típico de la arquitectura RISC tener un repertorio de menos instrucciones que el CISC y esas instrucciones se ejecutan (generalmente) en un ciclo de reloj. RISC = REDUCED INSTRUCTION SET COMPUTER CISC = COMPLEX INSTRUCTION SET COMPUTER = HARVARD = VON NEUMANN El microcontrolador PIC16F84 posee 35 instrucciones que se ejecutan en un unico ciclo, excepto en las instrucciones de salto y ramificación. Reloj / ciclo de instrucción El reloj da la señal de partida para el microcontrolador y se obtiene del oscilador (externo). La señal de entrada (OSC1) es dividida en 4 fases Q1, Q2, Q3 e Q4 no sobrepuestas. Estos cuatro pulsos constituyen un ciclo de instrucción (Tb. llamado de máquina), durante el cual se ejecuta una instrucción. La ejecución de una instrucción sigue una secuencia muy precisa de eventos, incluyendo lectura de la instrucción de la memoria (para saber de donde extraer la instrucción se usa el PC, que contiene la dirección de la siguiente instrucción a ser ejecutada) La decodificación y ejecución de la instrucción se realiza dentro del período Q1 a Q4 siguiente a la lectura. Pipelining La extracción del código de una instrucción de la memoria de programa se realiza en un ciclo de instrucción y su decodificación y ejecución se realiza en el ciclo de instrucción siguiente. Debido a la superposición, ya que el microcontrolador al tiempo que extrae el código de la instrucción siguiente ejecuta la instrucción extraída previamente, es que se puede considerar que cada instrucción demora un ciclo de instrucción en ser ejecutada. Este pipeline se rompe para el caso de las instrucciones que involucren saltos en la secuencia (incluyendo loas llamadas a subrutinas), las cuales se deben considerar como de dos ciclos de duración. Flujograma de las instrucciones del Pipeline TCY0: se lee de memoria el código de la instrucción MOVLW 55h (no nos interesa la instrucción que está siendo ejecutada). TCY1: se ejecuta MOVLW 55h y se lee de memoria la instrucción MOVWF PORTB. TCY2: se ejecuta MOVWF PORTB y se lee la instrucción CALL SUB_1. TCY3: se ejecuta la llamada (call) CALL SUB_1 y se lee la instrucción BSF PORTA,BIT3. Como no es esta la instrucción que nos interesa en este momento, porque no es la primera instrucción de la subrutina, la lectura de una instrucción debe efectuarse de nuevo. TCY4: este ciclo de instrucción es ocupado totalmente para leer la primera instrucción del subprograma (en la dirección asociada a SUB_1). TCY5: se ejecuta la primera instrucción de la subrutina SUB_1 y se lee la instrucción siguiente.