miércoles, 10 de febrero de 2016

La familia de microcontroladores PIC24




La familia de microcontroladores de 16 bits PIC24 es fabricada por Microchip Technology Inc.,

Microchip ha desarrollado dos familias PIC24, segun el costo y las prestaciones que se necesiten:


  • PIC24F, de bajo costo y una perfomance media, pudiendo trabajar a 16 MIPS 
  • PIC24H, de un costo mas alto, pero una perfomance muy superior, lo cual le permite operar a 40 MIPS

La familia PIC24H son la rama de alta velocidad, con una tensión de alimentación externa de 3,0 V a 3,6 V y una máxima velocidad de ejecución de 40 millones de instrucciones por segundo (MIPS).

La familia PIC24F es una variante de baja velocidad que utiliza un voltaje de alimentación externo en el intervalo de 2,0 V a 3,6 V y tiene una máxima velocidad de ejecución de 16 MIPS.

Hay muchas versiones de microcontroladores PIC24H/PIC24F disponibles que difieren en tamaño en el chip de memoria, número de pines de E/S, y cuenta con periféricos en chip.

Sin embargo, todos los miembros de la familia PIC24 utilizan la misma arquitectura del conjunto de instrucciones (ISA). De hecho, la arquitectura del conjunto de instrucciones PIC24 es un subconjunto de la ISA dsPIC33/dsPIC30, otra familia de microcontroladores de 16 bits de Microchip.

En los capítulos de hardware de este curso, el microcontrolador PIC24 particular utilizado con fines de ejemplo es el PIC24FJ32GA002. La introducción del lector a la familia PIC24 comienza con la arquitectura del conjunto de instrucciones, y un buen lugar para comenzar es con un diagrama de bloques simplificado del núcleo del procesador.

El tamaño de las rutas de datos internos de los PIC24 es de 16 bits, por lo que se refiere como un μC de 16 bits. Esto significa que el tamaño natural para los cálculos es de 16 bits; operaciones aritméticas tales como adiciones y sustracciones que operan sobre datos de 16 bits o datos de 8 bits se pueden especificar con una instrucción.

Operaciones sobre datos más grandes que 16 bits se pueden realizar, pero requieren ejecutar múltiples instrucciones. El conjunto de instrucciones de los PIC24 define 71 instrucciones distintas, de las cuales la mayoría requieren 24 bits (3 bytes) para codificar.

El término palabra (WORD) de instrucción se utiliza para referirse a un valor de código de máquina de 24 bits. Existen dos tipos de instrucciones que requieren dos palabras de instrucción (6 bytes) para codificar. El registro de instrucción contiene la palabra de instrucción que se está ejecutando actualmente. La unidad aritmética/lógica (ALU) es la lógica combinacional que realiza operaciones tales como suma, resta, operaciones logicas bit a bit tales como AND/OR/XOR, y así sucesivamente.

La entrada de la ALU a la izquierda es de un banco de registros de 16 registros de trabajo llamado W0-W15, cada uno de los cuales es de 16 bits de ancho. La entrada de la ALU de la derecha está conectado al bus de datos-X, lo que significa que este operando puede ser de muchas fuentes diferentes, con las fuentes más comunes a ser la memoria de datos o un registro de trabajo. La salida ALU está vinculada al bus de datos-X, con el destino más común puede ser la memoria de datos  o un registro de trabajo.




Organización de la memoria de Programa

La figura anterior muestra como los PIC24 tienen memorias separadas para instrucciones de programas y datos. Este tipo de disposición se conoce como arquitectura Harvard. La mayoría de las instrucciones PIC24 sólo pueden dar acceso a la memoria de datos; unos mecanismos especiales se proporcionan permitiendo a las instrucciones acceder a la memoria de programa. El contador de programa (PC) es un registro de 23 bits que proporciona la dirección de acceso a la memoria de programa donde se encuentra la siguiente instrucción. 

La siguiente figura muestra cómo se utiliza el valor PC para acceder a una palabra de instrucción en la memoria del programa. 



A pesar de que una palabra de instrucción es de 24 bits (3 bytes), en realidad es más conveniente pensar en una palabra de instrucción como de 32 bits, que consiste en una palabra menos significativa (LSW) y otra palabra más significativa (MSW), cada uno de 16 bits de ancho.

La parte superior de 8 bits de la palabra más significativa son sin aplicarse y leer como ceros; este es el byte fantasma que se muestra en la Figura. En este modelo, la memoria del programa es direccionable en palabras de 16 bits, y el PC siempre apunta al inicio de una palabra de instrucción, o la menos significativa. Esto significa que el bit menos significativo del PC es siempre 0, y que los 22 bits superiores del PC contienen la dirección de una palabra de instrucción de un máximo de 222 ubicaciones = 4 millones de  instrucción. En el momento de la redacción de este texto, los micros PIC24 no han implementado físicamente el espacio de instrucciones completo de 4 millones de instrucciones soportados por la definición de la arquitectura. Alrededor de 2008, nuevos micros de la familia PIC24 ofrecen una amplia gama de tamaños de memoria físicos que van desde los 6kb de memoria de programa hasta aproximadamente 85,5kb de memoria de programa, con nuevas variantes que se están introduciendo con regularidad.

La memoria de programa es no volátil, es decir, el contenido de la memoria se conserva cuando se desconecta la alimentación. Se requiere algún tipo de memoria no volátil para cualquier sistema informático práctico, ya que esto proporciona las instrucciones que se ejecutan cuando se aplica energía. La memoria de programa PIC24 es flash programable, lo que significa que se puede borrar y programar eléctricamente. Otros tipos de memoria no volátil son una vez programable (OTP), lo que significa que no puede ser borrado una vez programado, y la máscara programado con memoria (ROM) de sólo lectura, lo que significa que el contenido de la memoria se determinan en el momento de fabricación de la memoria y no se puede cambiar. Las operaciones de lectura en memoria flash son rápidas, en decenas de nanosegundos, pero escriben operaciones requieren más tiempo con un mínimo de 20 mS necesarios para escribir una palabra de programa.

Organización de la memoria de datos


La figura de arriba muestra que el espacio de direcciones de memoria de datos es de 64 KB total y se organiza como palabras de 16 bits, con los 8 bits más bajos se refiere al byte menos significativo (LSB) y los 8 bits superiores como el byte más significativo (MSB) . Observe que las siglas LSB y MSB se utilizan una B mayúscula en referencia a byte; las siglas LSB y MSB se reservan para el bit menos significativo y el bit más significativo, respectivamente. La memoria de datos es direccionable byte a byte, lo que significa que las partes  MSB y LSB de una palabra de 16 bits pueden modificarse individualmente. Las direcciones  LSB están en ubicaciones pares, mientras que las direcciones MSB en lugares impares. La memoria de datos es volátil, lo que significa que su contenido se pierde si se desconecta la alimentación. 

La memoria de datos se divide en las siguientes secciones:

·         Registros de función especial. Los primeros 2.048 ubicaciones de memoria de datos (0x0000 a 0x07FF) se reservan para los registros de funciones especiales (SFR). Un SFR se asocia con alguna funcionalidad específica implementada en los micros PIC24. Desde un punto de vista del lenguaje ensamblador, los SFRs se tratan de la misma manera que un SFR o ubicación de la memoria de datos, pero su implementación física real es muy diferente y depende de la SFR particular. La mayoría de los registros SFR sirven como datos y registros de control de periféricos on-chip, tales como los temporizadores, los ADC, USART, etc. Los registros de trabajo W0-W15 son SFRs, así como el contador de programa. A pesar de que cada SFR se le asigna una dirección específica, es más común referirse a un SFR por su nombre en lugar de su ubicación.

·         Ram de datos. las posiciones de memoria de datos que no son SFR se conocen por varios nombres, tales como los registros de archivos, memoria RAM de datos, los datos X. RAM se utilizan para el almacenamiento de variables en los programas de usuario, pero también se utiliza como un efecto secundario de ejecución de la instrucción en algunos casos (es decir, el almacenamiento de una dirección de retorno por una llamada a subrutina). Al igual que con la memoria de programa, la cantidad de RAM de datos implementado físicamente depende del micro PIC24 en particular. Sin embargo, todos los μCs PIC24 tienen una cierta cantidad de RAM de datos, y esto comienza en la posición 0x0800.

·         Memoria cercana de datos: Los primeros 8192 ubicaciones en la memoria de datos se conocen como RAM cercana, y ciertas formas de instrucción sólo pueden acceder a posiciones de memoria de datos en RAM cercana. Muchas variantes PIC24 tienen RAM de datos físicos que no excede los límites del espacio de datos cercano, y por lo tanto esta distinción no es importante en esos dispositivos. Los ejemplos de lenguaje ensamblador en este texto generalmente asumen que toda la RAM de datos se encuentra en la RAM cercana. El PIC24FJ32GA002 utilizado en el hardware de este curso implementa 2048? bytes de RAM de datos, y por lo tanto la totalidad de su RAM de datos está en la RAM cercana. Mientras que 2048? bytes de RAM parece pequeño en comparación con los millones (y en muchas implementaciones, miles de millones) de bytes de memoria RAM en un ordenador personal que contiene un microprocesador de propósito general, es un tamaño de memoria de datos típico para microcontroladores.

·         Visibilidad del área de memoria de programa. La parte superior 32 K de memoria de datos también se conoce como la zona de visibilidad de espacio de programa (PSV), que permite a un programa de usuario acceder a los datos no volátiles almacenados en la memoria de programa. El PCV se discutira tal ves mas adelante.

·         Ram de acceso directo (DMA). Algunos μCs PIC24 tienen una parte de RAM de datos implementado como acceso directo a memoria RAM (DMA). La DMA memoria RAM y el bloque periférico DMA correspondientes, permiten algunos periféricos incorporados de serie en el micro como el ADC puede transferir datos via DMA a la RAM sin la intervención del núcleo del CPU (es decir, sin ejecutar instrucciones en lenguaje ensamblador para la realización de este movimiento de datos). Los tamaños de programa, memoria de datos, y las memorias RAM DMA para algunas variantes PIC24H se enumeran en la siguiente tabla:




0 comentarios :