dsPIC arquitectura

37
dsPIC. Arquitectura Dispositivos Lógicos Programables Ingeniero de Telecomunicación

Transcript of dsPIC arquitectura

Page 1: dsPIC arquitectura

dsPIC. Arquitectura

Dispositivos Lógicos ProgramablesIngeniero de Telecomunicación

Page 2: dsPIC arquitectura

Arquitectura

� Arquitectura Harvard� Datos de 16 bits� Instrucciones de 24 bits� PC de 24 bits� Capacidad para ejecutar instrucciones

de 3 operandos en un ciclo: ej. A+B=C� Instrucciones de dos tipos: MCU y DSP

Page 3: dsPIC arquitectura

Arquitectura

� Dos bancos X e Y� Memoria programa� Memoria EEPROM� Motor DSP� 16 Registros W� Periféricos� Watchdog ….

Page 4: dsPIC arquitectura

Registros básicos

Page 5: dsPIC arquitectura

Registros W

� Mapeados en memoria� W15, puntero de pila. RESET = 0x0800� W0…W3 tienen shadow (PUSH.S y

POP.S)� W14 permite definir un “stack frame

pointer”

Page 6: dsPIC arquitectura

Memoria de programa

Page 7: dsPIC arquitectura

Memoria de programa

� Se puede leer/escribir en la memoria de programa:� TBLRDL: Leer parte baja� TBLRDH: Leer parte alta� TBLWTL: Escribir parte baja� TBLTH: Escribir parte alta

Page 8: dsPIC arquitectura

Memoria de datos

Page 9: dsPIC arquitectura

Memoria de datos

� SFR: Special Function Registers� Útil a partir de 0x800� La parte inferior puede mapearse como

memoria de programa� Las instrucciones tipo DSP “ven” un

mapeo diferente

Page 10: dsPIC arquitectura

Memoria datos. Instrucciones DSC-MAC

Page 11: dsPIC arquitectura

Memoria de datos: SFR básicos

Page 12: dsPIC arquitectura

Memoria de datos: SFR básicos

Page 13: dsPIC arquitectura

Memoria datos: modos de direccionamiento

� Directo a memoria� Directo a registro� Indirecto sobre registro

� Con pre-incremento o pre-decremento� Con post-incremento o post-decremento� Con offset de registro (sólo en algunas instr.)

MOV [W1 + W2], [W3++]� Con offset de literal (sólo en algunas instr.)

MOV [W1 + #0x020], [W3++]� Inmediato

Page 14: dsPIC arquitectura

Modos direccionamiento. Ejemplo

Page 15: dsPIC arquitectura

Direccionamiento de datos en memoria de programa

� A través del registro PSV� A través de la instrucciones TABLE

Page 16: dsPIC arquitectura

Direccionamiento circular

� XMODSRT, YMODSRT� Contienen la dirección de inicio de los buffers

� XMODEND, YMODEND� Contienen la dirección de fin de los buffers

� MODCON� Indica el W (para X e Y) sobre el que se realiza

el direccionamiento circular

Page 17: dsPIC arquitectura

Direccionamiento con inversión de bit

� MODCOM, � BWM para seleccionar el W que se usa como puntero

para el buffer� XBREV:

� BREN, para habilitar el direccionamiento� XB define el tamaño del buffer

Page 18: dsPIC arquitectura

Direccionamiento con inversión de bit

Page 19: dsPIC arquitectura

Oscilador

� Oscilador primario externo

� Oscilador secundario a 32 kHz

� Oscilador interno RC de 8 MHz

� Oscilador interno LPRC de 512 kHz

Page 20: dsPIC arquitectura

Oscilador

� Se configura en el registro FOSC

� En general el EC o el XT

� Input 4-10MHz� Output 120 MHz

máx. con PLL� El PLL permite

multiplicar la frecuencia

Page 21: dsPIC arquitectura

Oscilador

XT, HS EC

Page 22: dsPIC arquitectura

Oscilador (registros)FSOC OSCON

Page 23: dsPIC arquitectura

Oscilador

Ciclo de instrucción

Page 24: dsPIC arquitectura

I/O Ports

� Registros� TRISx:

“1” input, “0” output� PORTx: Lectura o

escrita en el puerto� LATx:

Para escribir=PORTx; Para leer, lee la entrada a los latches

Page 25: dsPIC arquitectura

Reset

� POR: Power on Reset� EXTR: Reset externo por el pin MCLR� SWR: Instrucción de reset� BOR: Brown-out reset� WDTR: Reset por watchdog� TRAPR: Cuando existen múltiples trap

simultáneas� UWR: cuando de utiliza un registro W sin

inicializar como puntero� El registro RCON indica la causa del RESET

Page 26: dsPIC arquitectura

Temporizadores

� Varios temporizadores de 16 bits� Registros asociados:

� TMRx: Contador de 16 bits� PRx: Período de 16 bits� TxCON: Registro de control

� Bits de interrupción asociados:� TxIE: Habilitación de interrupción� TxIF: Flag de interrupción� TxIP <2:0>: Prioridad de la interrupción

� Tres variantes: A, B y C� Algunos se pueden encadenar y formar 32 bits

Page 27: dsPIC arquitectura

Temporizadores

� Tipo A� Puede funcionar con el oscilador de bajo consumo de 32kHz� Puede funcionar de forma asíncrona con un reloj externo� El Timer 1 es de tipo A

� Tipo B� Se puede encadenar con uno de tipo C y formar 32 bits� La sincronización de reloj se produce después del prescalado� El Timer 2 y el 4 suelen ser de tipo B

� Tipo C� Se puede encadenar con uno de tipo B� Al menos un temporizador de tipo C puede disparar una conversión

A/D� El Timer 3 y el 5 suelen ser de tipo C

Page 28: dsPIC arquitectura

Temporizadores (tipo A, TxCON)

Page 29: dsPIC arquitectura

Interrupciones

� 8 interrupciones tipo trap no enmascarables

� 54 vectores de interrupción

� Tabla alternativa (AIVT) se selecciona en registro ALTIVT

Page 30: dsPIC arquitectura

Interrupciones

� Cada interrupción salta a una posición

� Registros asociados� INTCON1,

INTCON2� IFSx� IECx� IPCx� SR� CORCON

Page 31: dsPIC arquitectura

Interrupciones: INTCON1

� NSTDIS: 1 deshabiltadas las anidadas0 habilitadas (por defecto)

� El resto asociadas con los conflictos TRAP

Page 32: dsPIC arquitectura

Interrupciones: INTCON2

� ALTIVT: 1 tabla de vectores alternativa, 0 standard� DISI: permite deshabilitar interrupciones� INTxEP: Interrupciones externas

� 1 en el flanco negativo� 0 en el positivo

Page 33: dsPIC arquitectura

Interrupciones: IFSx (Flags)

� ADIF: Fin conversión A/D

� TxIF: Temporizador x

� INTxIF: Interrupción externa 0

� INTxIF: Inputcapture canal x

� OCxIF: Outpucaputure

Page 34: dsPIC arquitectura

Interrupciones: IECx, habilitar int.

Page 35: dsPIC arquitectura

Interrupciones: prioridad CPU

� La prioridad de la CPU se indica con IPL0..3 (registros SR+CORCON)

� Para deshabilitar las interrupciones usuario IPL2..0=111 (prioridad 7 CPU)

Page 36: dsPIC arquitectura

Interrupciones: prioridad

� Registros IPC0..IPC11� P.e. T1IP, en IPC0 fija la prioridad de Timer 1� Por defecto la prioridad es 4� Prioridad 0 equivale a deshabiltarla

Page 37: dsPIC arquitectura

Interrupciones

1. Poner a 1 NSTDIS si no anidadas2. Seleccionar la prioridad en IPCx3. Borrar el flag en IFSx4. Habilitar la interrupciones en IECx