Microcontroladores y DSPs Introducción a los Controladores Digitales de señales dspic30f M.C. Ricardo Álvarez Glez. FCE BUAP
dspic30f Controladores digitales de señales de 16 bits Ofrecen la capacidad de un DSP con las características de control en tiempo real de un microcontrolador. Interrupciones priorizadas Perifericos extensivos incluidos
dspic30f Controladores digitales de señales de 16 bits Características para manejo de potencia Todo esto combinado con una máquina DSP Acumuladores duales de 40 bits. MACS de 16 x 16 de un solo ciclo Barrel Shifter de 40 bits Búsquedas duales de operandos
dspics Familia de controladores digitales de señales de 16 bits Ofrecen la flexibilidad y control de un microcontrolador, con las caracteristicas de cómputo y la eficiencia de un DSP. La familia de controladores digitales de señales de 16 bits dspic30f, es la mas reciente y avanzada familia de procesadores de Microchip.
Arquitectura Harvard Modificada
Arquitectura Harvard Permite palabras de diferente tamaño: Programa 24 bits Datos 16 bits Mejora la eficiencia del conjunto de instrucciones Permite procesamiento mas rápido, el procesador puede buscar anticipadamente la próxima instrucción, mientras ejecuta la instrucción actual que accesa datos en la RAM.
Memoria de programa PC de 24 bits, para direccionar hasta 4M x 24 palabras El espacio de memoria de programa contiene: Localidad de reset Tablas de vectores de interrupción Memoria de programa de usuario EEPROM de datos Memoria de configuración.
Facilidad de instrucciones para realizar ciclos. Se pueden realizar ciclos con las instrucciones do y repeat, ambas pueden interrumpirse en cualquier momento. Estas características hacen los algoritmos repetitivos DSP muy eficientes, mientras mantienen la habilidad de manejar eventos de tiempo real
Memoria de datos Espacio de datos de 64Kbytes, y es tratado como un espacio lineal de datos para muchas instrucciones. Las instrucciones de multiplicación de DSP dividen la memoria en dos bloques X, Y. Estas instrucciones DSP soportan lecturas duales de operandos. Cuando no se usan las instrucciones de DSP, la memoria es tratada como un solo bloque de memoria X
Memoria de datos Primeros 2KB SFRs Después de los SFR hasta 8 KB RAM de datos, se puede dividir en los bloques X, Y para instrucciones DSP Los primeros 8 KB de datos (2k SFR+ 6k RAM), son conocidos como RAM cercana, accesible
Arreglo de registros de trabajo 16 registros de trabajo de 16 bits cada uno W0...W15 W15 apuntador del stack de software (unicamente) Los registros de trabajo restantes pueden funcionar como: Registros de datos Apuntador de direcciones de datos Registro de offset de dirección
Modos de direccionamiento Inherente (sin operandos) Relativo Literal Memoria directa Registro directo Registro indirecto Los seis modos de direccionamiento son soportados por cada instrucción. Los registros de trabajo son usados ampliamente como apuntadores para los modos de direccionamiento indirecto
Visibilidad de espacio de programa Los 32 KB superiores del mapa de memoria de datos pueden mapearse opcionalmente en memoria de programa, usando el registro de 8 bits de visibilidad de página en memoria de programa (PSVPAG)
El mapeo de memoria de programa, como si fuera memoria de datos, permite que cualquier instrucción tenga acceso a la memoria de programa como si fuera memoria de datos. Esta característica es usada para tablas de búsqueda, especialmente para tablas de coeficientes de filtros, para algoritmos DSP.
dspic30f Conjunto de Instrucciones. Instrucciones MCU Instrucciones DSP Estas dos clases de instrucciones están integradas independientemente en la arquitectura y desarrolladas en una sencilla unidad de ejecución.
dspic30f Conjunto de Instrucciones. Casi todas las instrucciones se ejecutan en un solo ciclo. Instrucciones de dos ciclos: Instrucciones que cambian el flujo del programa (bra, call, etc). Movimiento doble de palabras (mov D) Instrucciones de lectura/escritura de memoria de programa
dspic30f Conjunto de Instrucciones. Para muchas instrucciones, el dspic30f, es capaz de ejecutar: Lectura de memoria de datos Lectura de registro de trabajo Escritura a memoria de datos Lectura de memoria de programa (instrucción). Todo esto durante un solo ciclo de máquina! Operaciones del tipo A+B=C en un solo ciclo
Divide Support
Máquina DSP Multiplicador de punto fijo de 17 x17 bits de alta velocidad. ALU de 40 bits. Dos acumuladores saturados de 40 bits Corredor de barril bidireccional de 40 bits (capaz de recorrer hasta 15 bits a la derecha o 16 bits a la izquierda en un solo ciclo)
Interrupciones El dspic30f tiene un sistema priorizado de interrupciones. Cada fuente de interrupción tiene su propio vector, y se le puede asignar dinámicamente uno de siete niveles de prioridad. La tabla de vectores de interrupciones (IVT) reside en la parte baja de la memoria de programa.
Periféricos
Variantes del dispositivo Los dspics se dividen en tres categorías principales: Propósito general Control de motores/conversión de energía Sensores
Familia de propósito general 40-80 pines ideal para una variedad de aplicaciones empotradas de 16 bits
Motor Control and Power Conversion Family 28-80 pines, ideales para soportar aplicaciones de control de motores, UPS, inversores, fuentes de alimentación conmutadas y equipo relacionado. 10-bit, 500-ksps A/D Converter. Motor Control PWM. Quadrature Encoder. Timers, Input Capture, Output Compare. UART, SPI, I2C, CAN Serial Interfaces
Sensor Family 18-28 pines, ideal para soportar aplicaciones incrustadas de bajo costo.. 12-bit, 100-ksps A/D Converter. Timers, Input Capture, Output Compare. UART, SPI, I2C Serial Interfaces
Herramientas de desarrollo El proceso de desarrollo se puede dividir en tres partes principalmente: a. Escribir el código b. Corregir el código c. Programar el dispositivo
Es una herramienta de depuración efectiva en costo, que permite que se pueda probar el código en la tarjeta de circuito.
MPLAB ICE 4000 In-Circuit Emulator, es una herramienta de depuración completa, capaz de emular todos los miembros de la familia 30F a velocidad completa.
Herramientas de programación. MPLAB PM3, puede programar todos los tipos de encapsulado y tiene mas memoria que el ICD2, ideal para programar en producción. MPLAB ICD2, además de ser un programador, es un depurador, ideal para probar y depurar código.
MPLAB PM3 Universal Device Programmer Puede controlarse desde el MPLAB IDE, desde una linea de comandos, o puede funcionar solo.. Built-in support for In-Circuit Serial Programming.. Serialized programming for unique ID numbers.. Safe mode for code security.. High-speed programming and download through USB.. Secure digital and multimedia card slot for convenient program storage.
MPLAB ASM30 Assembler Interpreta instrucciones y directivas en archivos de código fuente, para generar código objeto. Se usa un ligador para convertir el código objeto en un archivo final de salida (.hex) para programar un dispositivo. Las directivas son interpretadas en tiempo de construcción, por el ensamblador, y se usan para definir secciones de memoria, inicializar constantes, declarar y definir símbolos, etc. Un punto. Debe preceder cada directiva.
Formato general para instrucciones y directivas: [label:] instruction[operands] [; comment] [label:] directive[arguments] [; comment]
Directivas comunmente usadas:.equ equates a value to a symbol.include includes another file into the current file.global makes a symbol globally visible.text starts a section of executable code.end ends assembly within a file.section starts a section (of code or data, in program or data memory)
Directivas comunmente usadas:.space allocates space within a section.bss adds variables to the uninitialized data section.data adds variables to the initialized data section.hword declares words of data within a section.palign aligns code within a section.align aligns data within a section
MPLAB LINK30 LINKER OVERVIEW
Función del ligador Esencialmente liga todos los archivos ensamblados y compilados en el proyecto, para formar un solo archivo ejecutable que pueda programarse en un dispositivo, simularse o emularse. El archivo hex y el archivo mapa se genera a partir del archivo coff
Ejemplo 1 /*Programa de ejemplo para realizar el encendido/apagado de dos leds conectados a RD0 y RD1. Autor: Ricardo Alvarez */.title "parpadeo de led".equ 30F2010,1.include "p30f2010.inc".text.equ cont,0x0810.global reset
reset:goto main.org 100 main: mov # SP_init,W15 ;inicializa el SP mov # SPLIM_init,W0 mov W0,SPLIM nop bclr TRISD,#00 ;RD0 salida bclr TRISD,#01 ;RD1 salida nop
bset PORTD,#00 bclr PORTD,#01 loop: btg PORTD,#00 call rtdo btg PORTD,#01 call rtdo bra loop ;************************************************
rtdo: mov #0xFFFF,W0 mov W0,cont resta: dec cont bra NZ,resta return.end