programacion del dsp tms320f280049...

38
PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES: - Ensamblador - Punto fijo: 16 y 32b - Punto Flotante IEEE 754 - Lenguaje C - Funciones inline - Librerias - Mixto: C y ensamblador

Upload: others

Post on 10-Jan-2020

34 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

PROGRAMACION del DSPTMS320F280049

L. Escobar

LENGUAJES:

- Ensamblador - Punto fijo: 16 y 32b - Punto Flotante IEEE 754- Lenguaje C - Funciones inline - Librerias- Mixto: C y ensamblador

Page 2: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Algoritmo Básico del PDS: La convolución

** En Lenguaje Ensamblador

ZAPA ; ACC = 0, P = 0

RPT #N-1 ; Repite N veces la ; siguiente instrucción || MAC P,*XAR1++,*AR7++ ; multiplica ; y acumula ADDL ACC,P ; Suma último producto

/* En lenguaje C */

y=0

for (i = 1; i < N-1; i++){ y += h[i] * x[i] }

x(n)x(n)

x(n-1)x(n-2)x(n-3)x(n-4)

n-1 nn-2n-3n-4

y (n )=∑i=0

N−1

h ( i)x ( n−i )

y(n)y(n)

y(n-1)y(n-2)y(n-3)y(n-4)

n-1 nn-2n-3n-4

Salida

Entrada

L. Escobar

Page 3: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Comparación: Lenguaje ensamblador y CProducto punto entre vectores

#include <archivo.h>

int x[N]={1,2,3,4,5}; int h[N]={1,2,3,2,1}; int y, i; int *apx, *apy ; #define N 4

Main() { apx = &x; apy = &h; y = 0; for(i=0;i < N, i++) y = y + *apx++ * *aph++

}

.mmregs .global _c_int00

.datax .word 1,2,3,4,5 h .word 1,2,3,2,1y .word 0

N .set 5

.text MOVL XAR1,#x MOVL XAR2,#h MOVL ACC, #0 RPT #N-1|| MAC P,*XAR1++,*AR7++ ADDL ACC,P MOVL DP,#y MOVL @y, ACC .end

Generalidades

Programa Principal

Page 4: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

LENGUAJE ENSAMBLADOR

DIRECTIVAS de Ensamblador

INSTRUCCIONES de Ensamblador

SINTAXIS

Etiqueta Comando Op,Op,Op,.. ; Comentarios

Comando

.mmregs ; reconoce abreviaturas de registros map.N .set 99 ; declara N = constante = 99 dx .word 0ABh ; Reserva y escribe una loc. Para x

MOV AL, #0 ; AL = 0 MOV AL,@datA ; Carga a AL el dato datA ADD AL,@datB ; AL = AL + datB MOV @datC,AL ; Almacena AL en localización de datC

Page 5: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

DIRECTIVAS DE ENSAMBLADOR[ TMS320C28x Assembly Language Tools User’s Guide (SPRU513) ]

Page 6: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

DIRECTIVAS DE ENSAMBLADOR[ TMS320C28x Assembly Language Tools User’s Guide (SPRU513) ]

Page 7: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

DIRECTIVAS DE ENSAMBLADOR

Page 8: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

DIRECTIVAS DE ENSAMBLADOR[ TMS320C28x Assembly Language Tools User’s Guide (SPRU513) ]

Page 9: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

DIRECTIVAS DE ENSAMBLADOR

[ TMS320C28x Assembly Language Tools User’s Guide (SPRU513) ]

Page 10: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Desarrollo de un Proyecto Archivos

Ensamblador Lenguaje C Librerías Comandos de ligado

Generar un Proyecto Abrir un proyecto nuevo Agregar archivos Opciones de: compilado, ensamblado y ligado Compliar / ensamlar Ligar Bajar el código a la tarjeta

L. Escobar

Page 11: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Generación de un proyecto

Archivos.asm

SIM

Archivo.c

DSK EVM

Librerias

Archivo.out

Ensamblar

XDS DSP

Archivo.obj

Archivo.cmd

Compilar

Ligar

Archivo.obj

L. Escobar

Page 12: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

MEMORYMEMORY

{{

PAGE 0:PAGE 0:

VECS: org=0080h, len=007fh /*vect. int*/VECS: org=0080h, len=007fh /*vect. int*/

PROG: org=0100h, len=2B00h /* programa*/PROG: org=0100h, len=2B00h /* programa*/

PAGE 1:PAGE 1:

DATOS: org=2C00h, len=13ffh /* dato*/DATOS: org=2C00h, len=13ffh /* dato*/

}}

SECTIONSSECTIONS

{{

.vectors : load = VECS PAGE 0.vectors : load = VECS PAGE 0

.text > PROG PAGE 0.text > PROG PAGE 0

.data > DATOS PAGE 1.data > DATOS PAGE 1

.bss > DATOS PAGE 1.bss > DATOS PAGE 1

.stack > DATOS PAGE 1.stack > DATOS PAGE 1

}}

Mem_Dato

Mem_ProgPAGE 0PAGE 0

PAGE 1PAGE 1

0080h0080h

0100h0100h

2C00h2C00h

ARCHIVO DE COMANDOS .CMD ARCHIVO DE COMANDOS .CMD

ASOCIAR MEMORIA CON ARCHIVO .CMDASOCIAR MEMORIA CON ARCHIVO .CMD

L. Escobar

Page 13: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

.data ; Datos

D1 .word 1,2,3,4D1 .word 1,2,3,4

total .word 0total .word 0

.text ; Código

DP = #D1DP = #D1

A = #0A = #0

AR0 = #D1AR0 = #D1

repeat(#4) repeat(#4)

A = A + *AR0+A = A + *AR0+

@total = A @total = A

FIN NOPFIN NOP

GOTO FINGOTO FIN

.end.end

..sect " vectors“

.ref _main .ref _main

.ref _c_int00 .ref _c_int00

.ref _inttimer.ref _inttimer

reset: b _c_int00reset: b _c_int00

nopnop

nopnop

.space 72*16 .space 72*16

tint0: b _inttimertint0: b _inttimer

nop nopnop nop

.end.end

MEMORYMEMORY

{{

PAGE 0:PAGE 0:

VECS: org=0080h, len=007fh /*VECS: org=0080h, len=007fh /*vect. int*/*/

PROG: org=0100h, len=2B00h /* PROG: org=0100h, len=2B00h /* programa*/*/

PAGE 1:PAGE 1:

DATOS: org=2C00h, len=13ffh /* DATOS: org=2C00h, len=13ffh /* datos */*/

}}

SECTIONSSECTIONS

{{

.vectors : load = VECS PAGE 0.vectors : load = VECS PAGE 0

.text > PROG PAGE 0.text > PROG PAGE 0

.data > DATOS PAGE 1.data > DATOS PAGE 1

.bss > DATOS PAGE 1.bss > DATOS PAGE 1

.stack > DATOS PAGE 1.stack > DATOS PAGE 1

}}

LIGADO DE ARCHIVOS

L. Escobar

Page 14: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

CREAR UN PROYECTO CON CCS de TEXAS INSTRUMENTS

Page 15: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

LLENAR INFORMACION DEL NUEVO PROYECTO

Page 16: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

CREAR UN PROYECTO CON CCS

Page 17: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Botones de construir y cargar

Page 18: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

PROYECTO: Creado y ensamblado. (Listo para ejecutarse)

Page 19: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Botones de correr un programa

Page 20: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Con los ejemplos del libro LES* (pag. 65):

- Realizar un proyecto

- Construir un proyecto

- Cargar un programa

- Correr un programa

- Visualizar memoria dato

- Graficar memoria

Ejemplos

L. Escobar

[ Arquitecturas de DSP TMS320F28xxx y Aplicaciones ]

Page 21: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

L. Escobar

.global _c_int00 ; Símbolo global para inicio de código .data ; Sección de datos WDCR .set 07029h ; Dirección registro de control WatchDogCTE_WD .set 0068h ; Constante para desactivar el WatchDog D1 .set 1 ; Se define D1 = constante = 1 enteroD2 .set 2 ; Se define D2 = constante = 2D3 .set 3 ; Se define D3 = constante = 3D4 .set 4 ; Se define D4 = constante = 4D5 .set 5 ; Se define D5 = constante = 5total .word 0 ; Aparta una localidad para variable total =0 * SECCION DE CODIGO .text ; Sección de código _c_int00 ; Inicio de código

* Deshabilitación del WatchDog EALLOW ; Habilita escritura a registros protegidos MOVL XAR1, #WDCR ; Registro XAR1 apunta dir, WDCR MOV *XAR1,#0068h ; Desactiva WatchDog, escribe en WDCR EDIS ; Deshabilita escritura a registros protegidos* MOVW DP, #total ; Apuntador de página de datos en página de ; variable total MOV ACC, #D1 ; Mueve D1 a acumulador ADD ACC, #D2 ; Suma D2 a acumulador ADD ACC, #D3 ; Suma D3 a acumulador ADD ACC, #D4 ; Suma D4 a acumulador ADD ACC, #D5 ; Suma D5 a acumulador MOV @total, AL ; Salva la suma AL en localidad totalREGRESA NOP ; Ciclo infinito para fin de programa LB REGRESA .end ; Fin de ensamblado

Suma varias constantes en modo inmediato

Page 22: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

L. Escobar

.global _c_int00 ; Símbolo global para inicio de código .data ; Sección de datos x1 .word 1 ; Aparta una localidad para variable x1 ; y la inicializa con el valor 1 x2 .word 2 ; Aparta una localidad para variable x1 ; y la inicializa con el valor 2x3 .word 3 x4 .word 4 x5 .word 5 total .word 0 ; Aparta una localidad para variable total y la inicializa con 0 .text ; Sección de código _c_int00 MOVW DP, #total ; Apuntador de página de datos en página de total MOV ACC, @x1 ; Mueve dato x1 a acumulador ADD ACC, @x2 ; Suma x2 a acumulador ADD ACC, @x3 ; Suma x3 a acumulador ADD ACC, @x4 ; Suma x4 a acumulador ADD ACC, @x5 ; Suma x5 a acumulador MOV @total, ACC ; Salva la suma AL en localidad totalREGRESA NOP ; Ciclo infinito para fin de programa LB REGRESA .end ; Fin de ensamblado

Suma varios datos en modo directo

Page 23: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

L. Escobar

.global _c_int00 .dataN .set 5D .word 1,2,3,4,5 ; Aparta cinco localidades para el vector ; de datos D y le escribe los valores 1,2,3,4,5 total .word 0 .text_c_int00 MOVL XAR1,#D ; Registro XAR1 apunta al arreglo D MOV ACC, *XAR1++ ; Carga ACC con el dato apuntado por XAR1 ; Postincrementa XAR1: XAR1 = XAR1 + 1 ADD ACC,*XAR1++ ; ACC = ACC + dato apuntado por XAR1 ; XAR1 = XAR1 + 1 ADD ACC,*XAR1++ ; ACC = ACC + dato apuntado por XAR1 ; XAR1 = XAR1 + 1 ADD ACC,*XAR1++ ; ACC = ACC + dato apuntado por XAR1 ; XAR1 = XAR1 + 1 ADD ACC,*XAR1++ ; ACC = ACC + dato apuntado por XAR1 ; XAR1 = XAR1 + 1, apunta a loc. total MOV *XAR1,AL ; Guarda la parte baja del acumulador en totalREGRE NOP LB REGRE .end

Suma varios datos en modo indirecto

total= ∑i=0

N−1

x ( i)

Page 24: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

L. Escobar

.global _c_int00 .dataN .set 5D .word 1,2,3,4,5 ; Aparta cinco localidades para el vector de ; datos D y le escribe los valores 1,2,3,4,5total .word 0 .text_c_int00 MOVL XAR1,#D ; Registro XAR1 apunta al arreglo D MOV ACC, #0 ; Se limpia acumulador RPT #N-1 ; Repite N veces #N la siguiente instrucción || ADD ACC,*XAR1++ ; ACC = ACC + dato apuntado por XAR1 ; XAR1 = XAR1 + 1 MOVW DP,#total ; Ubica al DP donde se encuentra la página total MOV @total,AL ; Guarda la parte baja del acumulador en totalREGRESANOP LB REGRESA .end

Suma varios datos en modo indirecto con instrucción RPT

total= ∑i=0

N−1

x ( i)

Page 25: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

DIRECCIONAMIENTO CIRCULAR

L. Escobar

Page 26: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

L. Escobar

Modo de direccionamiento de buffer circular

* Suma 15 veces los datos x .global _c_int00 .global _main .datax .word 1,2,3,4,5,6,7,8,9,10y .word 0NB .set 10N2 .set 150suma .word 0 .text_main:_c_int00 SETC SXM ; Modo extensión de signo CLRC AMODE ; Bit AMODE = 0 MOV AR1,#NB-1 ; AR1 = longitud del buffer - 1 MOVL XAR6,#x ; XAR6 apunta a dir. inicio de x ZAPA ; Cero a ACC y P RPT #N2-1 ; Repite siguiente instrucción 150 veces || ADD ACC,*XAR6%++ ; ACC = ACC + dato apuntado por XAR6 ; XAR6 = XAR6 + 1 en forma circular MOVW DP,#suma ; DP = página de suma MOV @suma, AL ; Guarda resultado en loc. sumaFIN_S NOP LB FIN_S .end

Page 27: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

L. Escobar

Instrucciones básicas a 16 bits

Page 28: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Instrucciones varias a 16 bits

Page 29: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Instrucciones para máximos y mínimos

Page 30: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Operaciones de multiplicación

Page 31: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Instrucciones de multiplicación a 16 bits

Page 32: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Producto punto entre vectores

.global _c_int00 ; símbolo global para inicio del ; programa .data ; sección de datosx .word 1,2,3,4,5,6,7,8,9,10 ; datos del vector xh .word 1,2,1,2,1,2,1,2,1,2 ; datos del vector htotal .word 0 ; resultado N .set 10 ; define N = 10 = constante WDCR .set 07029h ; dir. de registro de Control WatchDog

.text ; sección de código_c_int00 ; inicia el código SETC SXM ; modo extensión de signo SPM #0 ; sin corrimiento en el multiplicador MOVW DP,#total ; carga a DP página de total MOVL XAR1,#x ; XAR1 apunta a dir_r MOVL XAR7,#h ; XAR7 apunta a dir_h MOV AR0,#N-1 ; AR0 = N, para contador de ciclo ZAPA ; ACC = 0, P =0CICLO_P1 MOV T,*XAR1++ ; T = dato apuntado por XAR1 ; XAR1 = XAR1 + 1 MPY P,T,*XAR2++ ; P = T * dato apuntado por XAR2 ; XAR2 = XAR2 + 1 ADDL ACC,P ; ACC = ACC + P << PM BANZ CICLO_P1,*AR0-- ; Regresa a CICLO_P1 si AR0 != 0 ; AR0 = XAR0 - 1 MOVL @total,ACC ; total = AL

FIN_R NOP ; ciclo infinito LB FIN_R .end

Page 33: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Producto punto entre vectores

** Carga del registro T y acumula, luego multiplica. ZAPA ; ACC = 0, P =0CICLO_P1 MOVA T,*XAR1++ ; T = dato apuntado por XAR1 ; XAR1 = XAR1 + 1 ; ACC = ACC + P << PM MPY P,T,*XAR2++ ; P = T * dato apuntado por XAR2 ; XAR2 = XAR2 + 1 BANZ CICLO_P1,*AR0-- ; Regresa a CICLO_P1 si AR0 != 0 ; AR0 = XAR0 - 1 ADDL ACC,@P ; ACC = ACC + P << PM

************************************************************************** ** Carga registro T, luego multiplica y acumula. ZAPA ; ACC = 0, P =0CICLO_P1 MOV T,*XAR1++ ; T = dato apuntado por XAR1 ; XAR1 = XAR1 + 1 MPYA P,T,*XAR2++ ; ACC = ACC + P << PM ; P = T * dato apuntado por XAR2 ; XAR2 = XAR2 + 1*** ADDL ACC,P ; ACC = ACC + P << PM BANZ CICLO_P1,*AR0-- ; Regresa a CICLO_P1 si AR0 != 0 ; AR0 = XAR0 - 1 ADDL ACC,P ; ACC = ACC + P << PM

Page 34: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Producto punto entre vectores con MAC

.mmregs .global cint00

.datax .word 1,2,3,4,5 h .word 1,2,3,2,1total .word 0

N .set 5

.text MOVL XAR1,#x MOVL XAR7,#h MOVL ACC, #0 RPT #N-1|| MAC P,*XAR1++,*AR7++ ADDL ACC,P MOVL DP,#total MOVL @total, ACC .end

Page 35: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Operaciones a 32 bits

MOVL ACC,@dat32 ; Carga dat32 en ACC MOVL P,@dat32 ; Carga dat32 en P MOVL XT,*XARi++ ; Carga dato apuntado por XARi en XT MOVL XARi,@dat32 ; Carga XARi con dat32 MOVL XARi,#cte22 ; Carga XARi con una constante de 22 bits MOVL ACC,P<<PM ; Carga ACC con P con corrimiento PM MOVL P,ACC ; Carga P con ACC

MOVL @dat32,ACC ; Salva ACC en dat32 MOVL @dat32,P ; Salva P en dat32 MOVL @dat32,XT ; Salva XT en dat32 MOVL @loc32,XARi ; Salva XARi en loc32 MOVL *XAR1++,XAR6 ; Salva XAR6 en loc. puntada por XAR1

Page 36: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Operaciones a 32 bits

ADD ACC,#cte16<<#0-15 ; ACC = ACC + cte*2^(shift 0-15) ADD ACC,@dat16<<#0-15 ; ACC = ACC + dat*2^(shift 0-15) ADD ACC,@dat16<< T ; ACC = ACC + dat*2^(T(3..0)) ADDL ACC,@loc32 ; ACC = ACC + loc32 ADDCL ACC,@loc32 ; ACC = ACC + loc32 + acarreo C ADDL ACC,@dat<<#0-15 ; ACC = ACC + dat*2^(shift 0-15) ADDL ACC,P<<PM ; ACC = ACC + P^(PM) ADDL @loc32,ACC ; loc32 = loc32 + ACC

SUB ACC,#cte16<<#0-15 ; ACC = ACC - cte*2^(shift 0-15) SUB ACC,@dat16<<#0-16 ; ACC = ACC - dat*2^(shift 0-15) SUB ACC,@dat16<<T ; ACC = ACC - dat*2^(T(3..0)) SUBL ACC,@loc32 ; ACC = ACC - loc32 SUBBL ACC,@loc32 ; ACC = ACC - loc32 - ~C SUBL ACC,P<<PM ; ACC = ACC - P^(PM) SUBL @loc32,ACC ; loc32 = loc32 - ACC SUBRL @loc32,ACC ; loc32 = ACC - loc32

Page 37: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Operaciones a 32 bits

IMPYL ACC,XT,@loc32 ; ACC= Bits bajos(sig.XT + sig.loc32) IMPYL P,XT,@loc32 ; P= Bits bajos(sig.XT + sig.loc32)<<PM IMPYAL P,XT,@loc32 ; ACC = ACC + unsig(P) ; P= Bits bajos(sig.XT + sig.loc32)<<PM IMPYAL P,@loc32,*XAR7 ; ACC=ACC + unsig(P) ; P= Bits bajos(sig.loc32 + sig.loc32)<<PM IMPYSL P,XT,@loc32 ; ACC = ACC - unsig(P) ; P= Bits bajos(sig.XT + sig.loc32)<<PM

QMPYAL ACC,XT,@loc32 ; ACC=ACC + P<<PM, P=XT*loc32>>32 QMACL P,@loc32,*XAR7 ; ACC=ACC + P<<PM, P=loc32*loc32>>32 QMPYL ACC,XT,@loc32 ; ACC=XT*loc32>>32 QMPYL P,XT,@loc32 ; P=XT*loc32>>32 QMPYSL ACC,XT,@loc32 ; ACC=ACC - P<<PM, P=XT*loc32>>32

Page 38: PROGRAMACION del DSP TMS320F280049 LENGUAJESodin.fi-b.unam.mx/.../PDSL/2019-1/documentos/PICOL_program_ASM_C28x_18.… · PROGRAMACION del DSP TMS320F280049 L. Escobar LENGUAJES:

Correlación rxy

(l) entre x(n) y y(n) , l > 0

.global _c_int00 .dataN .set 500cont .word 0 ; Contador de desplazamientos lX . space N*16 ; Reserva N localidades para x(n)basx .word 0y .space N*16 ; y(n), Qih=10bash .word 0rxy .space N*16 ; rxy(l), Qiy=5. .text_c_int00 SETC SXM SPM +1 ; Qiy=Qih+Qix=Q20+Q1 =Q21 MOVW DP,#cont ; DP apunta a página de cont MOV AR4,#N-1 ; Control de ciclo CORRELA MOVL XAR5,#rxh ; Salida de datos MOVL XAR2,#h ; XAR2 con Dir. de h MOV AL,#N-1 ; MOV @cont,AL ;

CORRELA: MOVL XAR7,#x ZAPA RPT @cont ; Repite la siguiente instrucción ; cont + 1 vez || MAC P,*XAR2++,*XAR7++ ; ACC = ACC + P << 1 ; P = x(n)*y(n-l), XAR2++ y XAR7++ ; (Q21) ADDL ACC,P <<PM ; Recupera último producto MOV *XAR5++,AH ; Almacena en rxy DEC @cont ; cont = cont -1 MOVL XAR2,#h ; XAR2 con Dir. inicio de h MOV ACC,@XAR2 ADD ACC,#N SUB ACC,@cont ; Dir. XAR2 = Dir. incio + l MOV XAR2,@ACC ; Ajusta retardo ``l'' de h(l)

BANZ CORRELA,AR4--

FIN NOP LB FIN_S .end