Sei sulla pagina 1di 54

Microcontroladores y DSPs

Introducción a los Controladores


Digitales de señales dsPIC30F
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 enlos bloques X, Y
para instrucciones DSP
• Los primeros 8 KB de datos (2k SFR+ 6k
RAM), son conocidos como RAM cercana,
accesible
La memoria del espacio de
datos se divide en dos
bloques, X y Y espacio de
datos. Un elemento clave
de esta arquitectura es que
El espacio Y es un
subconjunto del espacio X,
y está totalmente
contenido Dentro del
espacio X.
Con el fin de proporcionar
una aparente Espacio de
direccionamiento, los
espacios X e Y tienen
Direcciones.
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

M.C. Ricardo Alvarez


Es una herramienta de depuración efectiva en costo, que permite
que se pueda probar el código en la tarjeta de circuito.
M.C. Ricardo Alvarez
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:
*/
.title "parpadeo de led"
.equ 30F4013,1
.include "p30F4013.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

Potrebbero piacerti anche