Becerril López Sergio Andŕes Microcomputadoras Grupo 4 dsPIC30F/dsPIC30F4013 Familia de Microcontroladores dsPIC30F La familia de dispositivos dsPIC30F emplea una arquitectura de 16-bit que integra de forma transparente las habilidades de un microprocesador (MCU) con las habilidades computacionales de un procesador de señales digitales (DSP). La funcionalidad resultante es ideal para las aplicaciones que dependen de cálculos repetitivos y de alta velocidad así como de control. Arquitectura dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 Figura 1: Arquitectura de la familia dsPIC30F Se aprecia el arreglo de ALU, Arreglo de registros 16x16 y bus de datos dual de 16-bit. En cuanto al CPU, se trata de un módulo de 16 bit (datos) con arquitectura Harvard modificada y un juego de instrucciones modificado, incluyendo soporte significativo para procesamiento digital de señales. El CPU tiene un tamaño de palabra de 24-bit para instrucciones, con un campo de opción de longitud variable. El contador de programa (PC) es de 23 bit de ancho y direcciona hasta 4M x 24 bits de espacio de memoria de programas de usuario. La cantidad real de memoria de programa implementada varía de un modelo a otro. Un mecanismo de obtención de instrucciones de un solo ciclo se utiliza para ayudar a mantener el desempeño y proporciona ejecución predecible. Todas las instrucciones se ejecutan en un solo ciclo, con la excepción de las instrucciones que cambian el flujo del programa , el MOV de doble palabra y las instrucciones de tabla. Constructos de ciclo se soportan utilizan las instrucciones DO y REPEAT, y ambas son interrumpibles en cualquier punto. dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 Los dispositivos dsPIC30F tienen 16 registro de 16-bit utilizables en el modelo del programador. Cada uno de los registros pueden servir como datos, direcciones o offset para las direcciones. El 16vo registro (W15) opera como el apuntador de pila de software para las interrupciones y las llamadas. El juego de instrucciones de la familia dsPIC30F tiene dos clases de instrucciones: la clase de instrucciones MCU y la calse de instrucciones dSP. Estas dos clases son integradas de manera transparente en la arquitectura y se ejcutan desde una única unidad de ejecución. El juego de instrucciones incluye muchos modos de direccionamiento y está diseñado para máxima eficiencia con los compiladores de C. Motor DSP El motor DSP consiste de un multiplicador de alta velocidad, único ciclo, de 17-bit por 17-bit, un desplazador y un sumador/restador de 40-bit con dos acumuladores, lógicas de redondeo y saturación, todo lo cual habilita la ejecución eficiente de algoritmos DSP computacionalmente intensivos. El multiplicador de 17-bit x 17-bit se utiliza también para instrucciones de multiplicación basadas en MCU. El motor DSP también tiene la capacidad de realizar operaciones inherentes de acumuladores, que no requieren datos adicionales. Estas instrucciones son ADD, SUB y NEG. Esta característica simplifica de manera importante las operaciones básicas importantes en datos de 32-bit o 40-bit. dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 Figura 2: Arquitectura del motor DSP Mo dos de dire ccio nam ient o El espaci o de datos puede ser direcc ionad o como 32 Kpala bras o 64 Kbytes y está dividido en dos bloques, referidos como memoria de datos X e Y. Cada bloque de memoria tiene su propia Unidad de Generación de Direcciones (AGU) independiente. La clase de instrucciones MCU opera únicamente a lo largo de la AGU de la memoria X, que accesa el mapa de memoria completo como si fuera un espacio de datos lineal. Algunas instrucciones DSP operan a través dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 de las AGUs de X y Y para soportar lecturas duales de operandos, que dividen el espacio de direcciones de datos en dos partes. El límite del espacio de direcciones X e Y es específico del dispositivo. Los 32 Kbytes superiores del mapa de memoria del espacio de datos pueden opcionalmente ser mapeados en el espacio del programa en cualquier frontera de 16K palabras de programa definidas por el registro de 8-bit de Pagina de Visibilidad del Espacio de Programa (PSVPAG). Esta característica de mapeo de espacio de programa a espacio de datos permite a cualquier instrucción accesar el espacio de programa como si fuera espacio de datos. Los buffers circulares libres (direccionamiento por módulo) se soportan en ambos espacios, X e Y. Este direccionamiento elimina la necesidad de verificar sobrecarga para los algoritmos DSP. Más aún, el direccionamiento circular del AGU X puede ser usado con cualquiera de las instrucciones de clase MCU. La AGU X también soporta direccionamiento de bit reverso, para simplificar de forma importante reordenamiento de datos de entrada o salida para algoritmos de transformada rápida de Fourier. El CPU soporta modos de direccionamiento Inherente (sin operando), Literal, Relativo, Directo a Memoria, Directo a Registro e Indirecto a Registro. Cada instrucción es asociada a un grupo de modo de modos de direccionamiento predefinido dependiendo de sus requerimientos funcionales. Hasta 6 modos de direccionamiento se soportan por instrucción. Para la mayoría de las instrucciones, la familia de dsPIC30F es capaz de ejecutar una lectura de memoria de datos o de programa, un registro activo (datos), una escritura en memoria de datos y una lectura de programa (instrucción) por ciclo de instrucción. Como resultado, instrucciones de tres parámetros son soportadas, permitiendo operaciones de tipo A + B = C ejecutadas en un solo ciclo. dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 Espacio de Direccion es El espacio de datos X es utilizado por todas las instruccio nes y soporta todos los modos de direccion amiento. Existen buses separados de lectura y escritura de datos Figura 3: Modelo de memoria del programador para el espacio de datos X. El bus de lectura de datos X es la ruta de lectura para todas las instrucciones que ven el espacio de datos como el combinado de los espacios X e Y. Es también la ruta de preobtención de datos para las operaciones de operando dual de clase DSP. dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 El espacio de datos Y se utiliza en conjunto con el espacio de datos X por la clase de instrucciones MAC (CLR, ED, EDAC, MAC, MOVSAC, MPY, MPY.N y MSC) para proveer dos rutas de lectura de datos concurrentes. Tanto los espacios de datos X e Y soportan direccionamiento por módulo para todas las instrucciones, sujeto a las restricciones del modo de direccionamiento. El direccionamiento de bit reverso solo se soporta para escrituras en el espacio de datos X. Todas las operaciones de escritura, incluyendo en las instrucciones DSP, ven el espacio de datos como la combinación de los espacios X e Y. La frontera entre los espacios de datos X e Y es dependiente del dispositivo, y no es programable por el usuario. Todas las direcciones efectivas son de 16-bit de longitud y apuntan a bytes dentro del espacio de direcciones. Por lo tanto, el rango de direcciones del espacio de datos es de 64 Kbytes o 32 Kpalabras, aunque las localidades implementadas de memoria varían de un dispositivo a otro. Set de Instrucciones El set de instrucciones de la familia dsPIC30F provee una amplia paquetería de isntrucciones, que soportan las aplicaciones tradicionales de microcontroladores, así como una clase de instrucciones, que soportan aplicaciones matemáticas intensivas. Ya que casi toda la funcionalidad del set de instrucciones PICmicro ha sido mantenida, este juego de instrucciones híbrido permite una migración sencilla hacia DSP a usuarios previamente familiarizados con el microcontrolador PICmicro. El juego de instrucciones de la familia dsPIC30F contienen 84 instrucciones, que pueden ser agrupadas en diez categorías funcionales como se aprecia en la Tabla 1. Las tablas de la 2 a la 11 describen cada tipo aquí mencionado. dsPIC30Fxxxx/dsPIC30F4013 Becerril López Sergio Andŕes Microcomputadoras Tabla 1: Grupos de Instrucciones de la Familia dsPIC30F Tabla 2: Instrucciones de movimiento dsPIC30Fxxxx/dsPIC30F4013 Tabla Instrucciones lógicas Tabla 3: 4: Instrucciones matemáticas Grupo 4 Becerril López Sergio Andŕes Microcomputadoras Grupo 4 Tabla 6: Instrucciones de bit Tabla 5: Operaciones de shift y rotación El Tabla 6: Instrucciones de bit dsP Tabla 9: Instrucciones de control IC Tabla 8: Instrucciones de pila 30 dsPIC30Fxxxx/dsPIC30F4013 Tabla7:10: Instrucciones Tabla Instrucciones deDSP flujo Becerril López Sergio Andŕes Microcomputadoras F4013 Arquitectura El dsPIC30F4013 dsPIC30Fxxxx/dsPIC30F4013 Grupo 4