PE03257A.gif (4096 bytes)

Microcontroladores
Principal ] Arriba ] Diagram de Bloques ]

 

Principal
Diagram de Bloques

ARQUITECTURA INTERNA

El PIC 16C84 al igual que los demás miembros de su familia, se caracterizan por que :

  • Su procesador es segmentado, "pipe-line".
  • Su procesador es tipo RISC
  • Tiene una arquitectura HARVARD
  • El formato de las instrucciones es ortogonal
  • Todas las instrucciones tienen la misma longitud (14 bits)
  • La arquitectura está basada en banco de registros

 ¿Pero que significa todo esto? . Pues vamos a intentar aclarar estos conceptos:

  • Procesador segmentado "pipe-line": quiere decir que aplica la técnica de segmentación que permite al procesador realizar simultáneamente la ejecución de una instrucción y la búsqueda de código de la siguiente. De esta manera, se puede ejecutar una instrucción en un ciclo. (Cada ciclo de instrucción son cuatro ciclos de reloj).

 

  

Ejemplo:

Búsqueda 1

Ejecuta 1

1. MOVLW 55h

Búsqueda 2

Ejecuta2

2 .MOVWF PORTB

Búsqueda 3

Ejecuta 3

3. CALL SUB_1

Busqueda 4

Salir

4. BSF PORTA,BIT3

Busqueda SUB_1

Ejecuta SUB_1

 Procesador Segmentado pipeline

 

Procesador tipo RISC: Las CPU´s atendiendo al tipo de instrucciones que utilizan pueden clasificarse en:

  • CISC: (Complex Instruction Set Computer) Computadores de juego de instrucciones complejo, que disponen de un repertorio de instrucciones elevado (unas 80), algunas de ellas muy sofisticadas y potentes, pero que como contrapartida requieren muchos ciclos de máquina para ejecutar las instrucciones complejas.
  • RISC: (Reduced Instruction Set Computer) Computadores de juego de instrucciones reducido, en los que el repertorio de instrucciones es muy reducido (en nuestro caso 35), las instrucciones son muy simples y suelen ejecutarse en un ciclo máquina. Además los RISC deben tener una estructura pipeline y ejecutar todas las instrucciones a la misma velocidad.
  • SISC.(Specific Instriction Set Computer) Computadores de juego de instrucciones específico.

 

Arquitectura Harvard: Tradicionalmente los microprocesadores se basan en la estructura de Von Neumann, como la de la figura siguiente, que se caracteriza por disponer de una única memoria principal en la que se almacenan los datos y las instrucciones. A esta memoria se accede a través de un sistema de buses único:

  • Bus de datos
  • Bus de direcciones
  • Bus de control

Arquitectura según el modelo de Von Neumann

El modelo Harvard , representado en la figura siguiente, dispone de dos memorias:

  • Memoria de datos
  • Memoria de Programa

Además cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda acceder de forma independiente y simultánea a la memoria de datos y a la de instrucciones. Como los buses son independientes éstos pueden tener distintos contenidos en la misma dirección .

 

Arquitectura según el modelo HARVARD

Arquitectura OrtogonalArquitectura Ortogonal: Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino.

Arquitectura basada en banco de registrosArquitectura basada en banco de registros: Implica que todos los elementos del sistema, es decir, temporizadores, puertos de entrada/salida, posiciones de memoria, etc, están implementados físicamente como registros.

En los PIC el manejo del banco de registros, que participan activamente en la ejecución de las instrucciones, es muy interesante al ser ortogonales. En la figura siguiente se muestra como la ALU (Unidad Aritmético-Lógica) efectúa sus operaciones con dos operandos, uno que proviene del registro W (Work), que en otras CPUs recibe el nombre de Acumulador, y el otro que se encuentra en cualquier otro registro o del propio código de instrucción.

wpe10.jpg (20413 bytes)

Registros que pueden enviar datos a la ALU. El resultado puede ir a cualquier registro o al registro W

 

En la Figura siguiente se representa el diagrama de bloques del PIC 16C84 del que podemos resaltar las siguientes características:

  • Memoria de programa EEPROM de 1Kx14 bits
  • Memoria de datos dividida en 2 áreas:
    • Área RAM formada por 22 registros de propósito específico (SFR) y 36 de propósito general (GPR).
    • Área EEPROM formada por 64 bytes.
  • ALU de 8 bits y registro de trabajo W del que normalmente recibe un operando que puede ser cualquier registro, memoria, puerto de Entrada/Salida o el propio código de instrucción.
  • Recursos conectados al bus de datos: PortA de 5 bits <RA0:RA4> , PortB de 8 bits <RB0:RB7>, Temporizador con Preescaler TMR0, etc.
  • Contador de programa de 13 bit (lo que en teoría permitiría direccionar 4 KB de memoria, aunque el 16C84 solo dispone de 1KB de memoria implementada).
  • Pila de 8 niveles.

 

WB01337_.GIF (904 bytes)Pulsar aquí para ver el diagrama de bloques de la Arquitectura interna del PIC16C84

La arquitectura del PIC16C84 se mantiene para todos los microcontroladores de esta subfamilia, diferenciándose unos de otros por las siguientes características:

  • PIC 16F84PIC 16F84: La memoria de programa es de l K palabras de l4 bits, pero de tipo Flash. La memoria de datos RAM tiene 68 registros de tamaño byte de propósito general, en lugar de 36.
  • PIC16CR84: La memoria de programa es de IK palabras de 14 bits tipo ROM y la de datos tiene iguales características que el PIC16F84.: La memoria de programa es de 1K palabras de 14 bits tipo ROM y la de datos tiene iguales características que el PIC16F84.
  • PIC16F83PIC16F83: La memoria de programa es de 512 palabras de 14 bits y la RAM de datos tiene 36 bytes de registros de propósito general.
  • PIC16CR83PIC16CR83: Igual que el PIC16F83, pero la memoria de instrucciones es de tipo ROM, o sea, sólo grabable durante el proceso de fabricación y utilizada en grandes series.

El elemento diferencial más importante del PIC16C84 respecto al resto de los elementos de la familia media de los PIC, es que la su memoria de programa es del tipo EEPROM y en el caso del PIC16F84 es que su memoria es del tipo Flash, por lo demás, otros dispositivos de esta familia disponen de más memoria, tienen más periféricos, etc..

El Contador de Programas (PC)

Los microcontroladores de la gama media disponen de un Contador de Programa (PC) de 13 bits, cuyos bits de menor peso corresponden a los 8 bits del registro PCL, implementado en la posición de memoria RAM 02h (y duplicado en la posición 82h),y los cinco bit de mayor peso del PC corresponden con los 5 bits de menor peso del registro PCLATCH, implementado en la posición de memoria RAM 0Ah (y duplicado en la posición 8Ah), lo que le permite direccionar hasta 8 K x 14 bits dividido en páginas de 2 K x 14 bits. Sin embargo, el PIC16C84 dispone tan solo de 1Kx14 bits de memoria implementada, desde la posición 0000h hasta la 03FFh, los 3 bit de mayor peso del PC no los tiene en cuenta, así pues la dirección 30h, 430h, 830h, C30h,1430h, 1830 y 1C30h se considera como la misma.

wpe6.jpg (36560 bytes)

 

    En las instrucciones CALL y GOTO los 11 <10:0> bits de menos peso corresponden al código de operación, mientras que los 2 bit de mayor peso<12:11> los suministran respectivamente los bit 4 y 3 del registro PCLATH que realmente apuntan a una de las 4 páginas del mapa de memoria que puede direccionar el PC.

   Un Reset provoca que se pongan a cero todos los bits del los registros PCL y PCLATCH, forzando que la dirección de inicio sea la 0000h.

    Como puede verse en la siguiente figura, el vector de reset se almacena en la dirección 0000h, mientras que el vector de interrupción está en la dirección 0004h. La memoria de programa de usuario propiamente dicha, comienza en la posición 0005h y llega hasta la 03FFh

wpe7.jpg (40322 bytes)

 

La Pila

La pila es una zona de memoria, que se encuentra separada tanto de la memoria de programa como de la de datos. Tiene una estructura LIFO (Last In First Out), por lo que el último valor que se guarda es el primero que sale. Dispone de 8 niveles de profundidad cada uno de ellos con una longitud de 13 bits. Su funcionamiento es como el de un buffer circular, de tal forma que el valor que se obtiene al realizar nueve desplazamientos, es igual al primer desplazamiento.

La única manera de cargar la Pila es a través de la instrucción CALL (llamada a subrutina) o por una interrupción que hacen que con cada una de ellas, se cargue el contenido del PC en el valor superior de la Pila. Para recuperar el contenido de la Pila en el PC hay que ejecutar una instrucción RETURN, RETLW o RETFIE (vuelta del programa de atención a una subrutina o interrupción).

No se dispone de ningún flag (identificador) que indique un desbordamiento de la Pila.

Palabras de Configuración e Identificación

Los PIC de la gama media disponen de una palabra de configuración de 14 bits que se escribe durante el proceso de grabación del dispositivo y que debe hacerse de acuerdo con el sistema en el que se va a insertar. Dichos bits ocupan la posición reservada de memoria de programa 2007h. En la Tabla siguiente  se muestra la estructura de la Palabra de configuración

                  CP PWRTE WDTE FOSC1 FOSC2
bit 13 bit12 bit11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

 

Bit 4: CP, bit de configuración protección de código

1= Protección de código desactivado

0=Protección de código activado

Bit 3: PWRTE, Activación del temporizador "Power-Up"

1= Desactivado

0= Activado

Bit 2: bit de configuración habilitación del Watchdog (WDT)

1: WDT activado

0: WDT desactivado

Bit1 y 2: FOSC<1:0>

11: Oscilador RC

10 Oscilador HS ( 8 - 20 MHz)

01 Oscilador XT ( 100 KHz- 4MHz)

00 Oscilador LP (Bajo consumo 32- 200 Hz)

 

Palabra de Configuración del PIC16C84

Además dispone de cuatro posiciones de memoria de programa ubicadas en las direcciones <2000h:2003h>, reservadas para las Palabras de Identificación ID. Estas palabras que se escriben durante el proceso de grabación, sólo emplean los 4 bits de menos peso y se utilizan por el programador para indicar el código del dispositivo, el número de serie, la versión del programa, etc.