dspic arquitectura
TRANSCRIPT
![Page 1: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/1.jpg)
dsPIC. Arquitectura
Dispositivos Lógicos ProgramablesIngeniero de Telecomunicación
![Page 2: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/3.jpg)
Arquitectura
� Dos bancos X e Y� Memoria programa� Memoria EEPROM� Motor DSP� 16 Registros W� Periféricos� Watchdog ….
![Page 4: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/4.jpg)
Registros básicos
![Page 5: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/6.jpg)
Memoria de programa
![Page 7: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/8.jpg)
Memoria de datos
![Page 9: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/10.jpg)
Memoria datos. Instrucciones DSC-MAC
![Page 11: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/11.jpg)
Memoria de datos: SFR básicos
![Page 12: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/12.jpg)
Memoria de datos: SFR básicos
![Page 13: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/14.jpg)
Modos direccionamiento. Ejemplo
![Page 15: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/15.jpg)
Direccionamiento de datos en memoria de programa
� A través del registro PSV� A través de la instrucciones TABLE
![Page 16: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/18.jpg)
Direccionamiento con inversión de bit
![Page 19: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/21.jpg)
Oscilador
XT, HS EC
![Page 22: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/22.jpg)
Oscilador (registros)FSOC OSCON
![Page 23: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/23.jpg)
Oscilador
Ciclo de instrucción
![Page 24: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/28.jpg)
Temporizadores (tipo A, TxCON)
![Page 29: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/29.jpg)
Interrupciones
� 8 interrupciones tipo trap no enmascarables
� 54 vectores de interrupción
� Tabla alternativa (AIVT) se selecciona en registro ALTIVT
![Page 30: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/30.jpg)
Interrupciones
� Cada interrupción salta a una posición
� Registros asociados� INTCON1,
INTCON2� IFSx� IECx� IPCx� SR� CORCON
![Page 31: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/31.jpg)
Interrupciones: INTCON1
� NSTDIS: 1 deshabiltadas las anidadas0 habilitadas (por defecto)
� El resto asociadas con los conflictos TRAP
![Page 32: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/34.jpg)
Interrupciones: IECx, habilitar int.
![Page 35: dsPIC arquitectura](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052205/54f74c544a7959430c8b4f74/html5/thumbnails/37.jpg)
Interrupciones
1. Poner a 1 NSTDIS si no anidadas2. Seleccionar la prioridad en IPCx3. Borrar el flag en IFSx4. Habilitar la interrupciones en IECx