Está en la página 1de 12

Laboratorio 1

7
Introducción al DSP56002/303EVM

Se tienen dos versiones para el ambiente de programación del módu-


lo de evaluación DSP56KEVM. Ambas vienen incluidas en el módulo de
evaluación del procesador de señales DSP56002. Una de éstas corre bajo el
ambiente MS-DOS y la otra bajo el ambiente Windows 3.1, o Windows 95 en
adelante. En esta práctica se presenta la versión para windows EVM56KW
de Domain Technologies, Inc.
Para realizar la práctica siga las siguientes instrucciones, si son aplica-
bles.

1. Seleccione el directorio de trabajo C:\EVM56KW.

2. Encienda el módulo de evaluación antes de lanzar el programa


EVM56KW.EXE

3. Lance el programa EVM56KW.EXE.

Note que esta misma práctica puede realizarse para el DSP56303EVM


haciendo los cambios apropiados en la selección de los directorios y de los
programas ejecutables, es decir, desde el menu de inicio deberá seleccionar
Evm563xx seguido de Evm30xw como el programa a ejecutar en lugar de
evm56kw.
Después de haber lanzado el programa de aplicación, aparece en la pan-
talla una ventana subdividida en cuatro subventanas (esto sucede principal-
mente en la versión para DOS):

Ventana de registros (Registers).

171
172 7.1. DESCRIPCIÓN DEL CONTENIDO EN LAS VENTANAS

Ventana de datos (Data).

Ventana de desensamblado (Unassembly).

Ventanas de mandos (Command).

c
En la versión para Windows se puede tener una o más ventanas al
comenzar la sesión de trabajo. Tenemos la opción View en la barra de
menú principal, la cual se muestra en la figura 7.1, que nos permite abrir
otras ventanas importantes. Si no se ha abierto la ventana de registros, se-
leccione View seguido de Regs para hacerlo.

Figura 7.1: Menú principal bajo el ambiente de Domain Technologies.

Abra las siguientes ventanas localizando la orden adecuada desde el


menú principal: Data, Unassembly, Command, I/O.

7.1. Descripción del contenido en las ventanas


7.1.1. Ventana de registros
: La ventana de registros despliega los registros internos del DSP. La base
numérica (radix) aparece en la parte superior de la ventana. Los registros
de la Unidad Aritmética y Lógica (ALU) se muestran unidos como A, B, X
y Y, o separados como a2 a1 a0, b2 b1 b0, x1 x0, y1 y0. El contenido
de los registros A, B, X y Y se puede mostrar en base hexadecimal, deci-
mal, o fraccionaria. La figura 7.2 corresponde a la ventana de registros y su
contenido.

7.1.2. Ventana de Datos


: La ventana de datos tiene tres elementos

1. El nombre de la ventana (Data).

2. La base numérica (HEX).

3. La etiqueta o dirección del primer elemento dentro de la ventana.

Dentro de la ventana, la columna izquierda es la dirección en el espacio


de memoria X, Y, P, o L, seguida por la dirección (en HEX), a la derecha
aparecen los datos, como se muestra en la figura 7.3.

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


7.1. DESCRIPCIÓN DEL CONTENIDO EN LAS VENTANAS 173

Figura 7.2: Ventana Registers bajo el ambiente de Domain Technologies.

Figura 7.3: Ventana Data bajo el ambiente de Domain Technologies.

7.1.3. Ventana de desensamblado


: Esta ventana presenta el programa del DSP. Tiene tres elementos:

1. El nombre de la ventana.

2. El modo de presentación, ASM (ensamblador) o ensamblado inverso.

3. El nombre del archivo fuente que aparece cuando la ventana se selec-


ciona en modo fuente o en modo mixto.

7.1.4. Ventana de Mandos


: Esta ventana se emplea para indicar órdenes. Radix HEX significa que
los números serán tratados como números en base hexadecimal.

7.1.5. Ventana de entrada/salida (I/O)


: Esta ventana muestra los registros de control y de estado de los pe-
riféricos incluidos en el DSP. En la figura fig:IOWind, por ejemplo, el primer

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


174 7.2. CAMBIANDO DEL CONTENIDO DE MEMORIA

Figura 7.4: Ventana I/O bajo el ambiente de Domain Technologies.

registro en la parte superior izquierda es el registro BCR (Registro de Control


del puerto B) cuyo contenido es $FFFF.

7.2. Cambiando del contenido de memoria


Existen dos formas de cambiar el contenido de memoria:

a) Seleccione la ventana de mandos, enseguida introduzca la siguiente


lı́nea: CHANGE X:0 $123456. Esto cambia la dirección de memoria 0
en el espacio X, a $123456.

b) Para editar directamente sobre la ventana de datos, coloque el cursor


a la dirección de memoria 0 e introduzca 65000. Esto cambiará la
dirección de memoria 0 a la 65000.

7.3. Carga de un programa ensamblado


Se puede cargar un programa usando la opción File desde el menú prin-
cipal, o usando la orden LOAD en la ventana de mandos. Primero cambie
el contenido del espacio de memoria X dirección 0 a 0, es decir X:$0000 a
0, usando el mando CHANGE en la ventana de mandos. Cargue el programa
DEMO2.cld. Luego abra una ventana de datos para mostrar X:$0 usando
las opciones View y Data desde el menú principal. Seleccione una base en
decimal (radix = dec) y seleccione el modo gráfico de la siguiente manera:

1. Para cambiar la base de la ventana de datos seleccione la ventana


y luego apunte (haciendo click) sobre el botón que muestra una T
mayúscula. También se puede cambiar la base con F2.

2. Para seleccionar el modo gráfico primero seleccione una ventana de


datos, luego apunte sobre el botón que tiene una onda sinusoidal. El
botón para modo gráfico se encuentra en la barra de herramientas
solamente cuando se ha seleccionado una ventana de datos.

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


7.4. ALGUNOS EJEMPLOS 175

3. Arranque el programa apuntando sobre el botón GO (éste tiene una fle-


cha en color verde), o introduzca la orden GO en la ventana de mandos,
o bien, también se puede emplear la tecla con la función F5.

4. Detenga el DSP seleccionando el botón STOP (tiene un signo de ALTO),


Se puede también usar el mando FORCE BREAK desde la ventana de
mandos, o con la combinación de teclas ⇑-F5 (Shift-F5).

7.3.1. Ejecución de un solo paso


Asegúrese de que el DSP está detenido, luego ejecute el programa se-
leccionando el botón de un solo paso (Single step), éste se muestra con una
lente y huellas de pasos. También se puede emplear el mando STEP desde la
ventana de mando, o bien con F8.

7.3.2. Actualización continua


Ejecute pasos continuos seleccionando desde el menú principal RUN y
CONT STEP, lo cual despliega una actualización después de cada instrucción.

7.3.3. Pasos múltiples


Para ejecutar instrucciones múltiples detenga el procesador y ejecute, en
la ventana de mandos, STEP n, donde n es el número de pasos a ejecutar.

7.3.4. Puesta de un punto de ruptura (break-point)


Puede programar un punto de ruptura de tres maneras:
Coloque el cursor, en la ventana de desensamblado, en la instrucción
en la que se desea el punto de ruptura y haga doble click con el botón
izquierdo del ratón.

Use el mando BREAK en la ventana de mandos.

Coloque el cursor sobre la instrucción y presione F9.

7.4. Algunos ejemplos


Trabajando en la ventana de mandos realice los siguientes ejemplos, in-
troduciendo la orden que se muestra en negrillas:
1. BREAK muestra todos los puntos de ruptura tanto por circuiterı́a como
por programa (hardware y software).

2. BREAK OFF remueve todos los puntos de ruptura.

3. BREAK OFF #2 remueve el punto de ruptura número 2.

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


176 7.4. ALGUNOS EJEMPLOS

4. BREAK P:$100 pone un punto de ruptura por programa en la me-


moria P localidad 100 hex. Seleccione BREAKPOINT DISPLAY desde el
menú principal.

5. BREAK START pone un punto de ruptura en la instrucción de la memo-


ria de programa etiquetada como START_PROGRAM.

6. BREAK xa X:100 interrumpe el programa cuando la localidad 100 de


la memoria de datos X es leı́da o escrita una vez (punto de ruptura
por circuito (hardware)).

7. BREAK xa X:100 200, interrumpe el programa cuando la localidad 100


de la memoria de datos X es leı́da o escrita 200 veces (punto de ruptura
por circuito).

8. BREAK w X:100 200 interrumpe el programa cuando la localidad 100


del espacio de memoria X es escrita 200 veces (punto de ruptura por
circuito).

9. BREAK rw X:100 200 interrumpe el programa cuando se ha tenido


acceso a la localidad 100 del espacio de memoria de datos X 200 veces
(punto de ruptura por circuito).

10. BREAK P:$228 T(AM_VALUE>#$1000) pone un punto de ruptura en la


dirección P:$228 y entra en modo de depuración (debug) si el valor de
AM_VALUE es mayor que $1000.

11. BREAK LOOP T(X0!=Y:$1200), pone un punto de ruptura en la direc-


ción del programa etiquetada como LOOP y entra en modo de depura-
ción si el valor del registro x0 no es igual al de la localidad de memoria
Y:$1200.
Puede retirar un punto de ruptura de cuatro formas:
1. Coloque el cursor en la instrucción con el punto de ruptura y haga un
doble click con el botón izquierdo del ratón.

2. Use el mando BREAK en la ventana de mandos.

3. Coloque el cursor en la instrucción que tiene el punto de ruptura y


presione la función F9.

4. Use, desde el menú principal, las opciones BREAKPOINT, DISPLAY, DELETE


o bien BREAKPOINT CLEAR.
Para cambiar el valor de un registro se tienen dos formas:
1. Usar el mando CHANGE.

2. Cambiar el valor directamente en pantalla sobre el registro deseado.

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


7.4. ALGUNOS EJEMPLOS 177

Para mostrar los sı́mbolos empleados en el programa primero detenga


el DSP, seleccione en el menú principal las opciones SYMBOL, y DISPLAY.
También se pueden mostrar los sı́mbolos ejecutando la orden SYMBOL en la
ventana de mandos.

7.4.1. Uso de la ventana de sı́mbolos


Desde la ventana de sı́mbolos se puede seleccionar un sı́mbolo y realizar
alguna función sobre el sı́mbolo seleccionado. Ponga un punto de ruptura
en LOOP seleccionando el sı́mbolo LOOP y luego seleccionando con el ratón el
botón BREAK. Ponga AM_VALUE en la ventana de observación (watch) selec-
cionando el sı́mbolo AM_VALUE y luego el botón WATCH. Seleccione la ventana
de mandos y realice los siguientes ordenes:

CHANGE AM_VALUE $123400

COPY AM_VALUE AM_WAVE

WATCH AM_VALUE

7.4.2. Prueba de la función de evaluación


Seleccione la ventana de mandos y realice los siguientes ordenes:

? AM_VALUE + AM_WAVE

EVALUATE r0=$100+$126

7.4.3. Ajuste de puntos (variables) bajo observación


Seleccione la ventana de mandos y realice los siguientes mandos:

WATCH R0

WATCH AM_VALUE

WATCH X:0

7.4.4. Ayuda
Presione F1 o use la opción HELP en el menú principal

7.4.5. Parámetros en la lı́nea de mandos


Los parámetros en la lı́nea de mandos se emplean para controlar el modo
de operación del depurador. Estos se ejecutan antes de ejecutar el programa
depurador EVM56KW.EXE, por ejemplo: c:\evm56kw\evm56kw -h.
Algunos de estos mandos son:

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


178 7.5. LA BARRA DE HERRAMIENTAS

-h describe todos los parámetros de la lı́nea de mandos.

-q deshabilita el ordenamiento de la tabla de sı́mbolos (normalmente


el depurador ordena automáticamente la tabla de sı́mbolos).

-d ajusta al depurador en modo de demostración (significa que no


está presente la tarjeta EVM). En este modo la memoria del DSP es
simulada en la computadora personal (PC), se puede cargar el código o
programa del DSP en el modo demostración pero puede no ejecutarse.

-I inicializa los ajustes de la pantalla en la configuración por omisión


(default settings).

-pn ajusta la dirección base del puerto de la tarjeta PC. Esto es apli-
cable sólo cuando el DSP se encuentra en una tarjeta que reside dentro
de la PC (la dirección del puerto por omisión es -P240).

-kn ajusta el multiplicador del lazo de amarre de fase (PLL) del DSP
(Sólo para el DSP56002).

-cn ajusta el puerto RS-232 (c1, c2, c3, ...). Si se omite este paráme-
tro el depurador rastrea todos los puertos RS-232 para encontrar el
circuito que ha sido conectado.

-vn especifica el DSP de trabajo. Las opciones disponibles son:

• -v1 para DSP56001 y DSP56002


• -v2 para DSP56004 y DSP56007
• -v3 para DSP56003 y DSP56005, entre otras.

Port ejemplo: c:\evm56kw\evm56kw -d -I\


Arranca al depurador en modo demostración, configuración de pantalla por
omisión.

7.5. La barra de herramientas


La barra de herramientas ofrece una forma rápida y conveniente de in-
troducir muchos de los mandos que se emplean con más frecuencia. La barra
de herramientas tiene los siguientes botones, leı́dos de izquierda a derecha,
que aparecerán según la ventana que haya sido seleccionada:

Ventana de mandos: Go, Stop, Step, Jump, Automatic update, Reset,


Radix.

Ventana de datos: Go, Stop, Step, Jump, Automatic update, Reset,


Radix, Graph.

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


7.6. CARGADO Y EDICIÓN DE UN PROGRAMA DEL DSP 179

Ventana de desensamblado: Go, Stop, Step, Jump, Automatic update,


Reset, Reverse Assembly Mode, Source Mode, Mixed Mode.

Ventana de registros: Go, Stop, Step, Jump, Automatic update, Reset,


Radix.

Pruebe cada uno de estos botones para ver cómo trabajan.

7.5.1. Mandos
Los mandos se introducen en la ventana de mandos (Command Window)
colocando el cursor sobre la lı́nea de entrada.
Para obtener una lista y descripción de cada mando introduzca help o
bien, se puede obtener la ayuda desde el menú en la barra de herramientas:
seleccione COMMANDS, Commands list.
Algunos de estos mandos serán usados durante el estudio de la arquitec-
tura y modos de direccionamiento del DSP56002/DSP56303.

7.6. Cargado y edición de un programa del DSP


Se puede utilizar cualquier editor (que tenga salida en ASCII) para escri-
bir programas para el DSP56002. Usando, por ejemplo, Notepad introduzca
el siguiente programa y llámelo prog2.asm.

; prog2.asm
; Programa para borrar la memoria RAM en X y Y
move #$100,r0 ;apuntador a memoria
clr b ;empleado para borrar la memoria
loop move b,L:-(r0) ;borra una localidad y decrementa r0
move r0,a ;guarda apuntador en acumulador a
tst a ;prueba >es el apuntador cero?
jne loop ;regresa a loop si no ha terminado

7.6.1. Ensamblado de un programa DSP


El ASM56000 es el programa ensamblador para procesar los programas
en código fuente. Éste entregará un archivo con el código objeto y un listado
si lo solicita el usuario.
Ejecute la secuencia de instrucciones necesaria para abrir una ventana (o
consola) de DOS, luego dentro de esa ventana introduzca los mandos necesario
para ir al directorio: c:\evm56kw
Enseguida introduzca:
asm56000.
Después de esto aparecerán las opciones del programa. Se emplearán
las opciones -a -b para operar en modo absoluto y crear un archivo con

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


180 7.7. DEFINICIÓN Y USO DE MACROS

extensión .cld. Enseguida introduzca:


asm56000 -a -b -l prog2.
Ahora se tiene un archivo con el código objeto de nombre prog2.cld
listo para ser cargado en la tarjeta del DSP.
Siga los siguientes pasos para cargar y correr el programa de ejemplo
prog2.asm.

1. Encienda el DSP56002EVM y lance el programa evm56kw.exe. Asegúre-


se de tener abiertas las ventanas Command, Data1, Unassemble y Registers.

2. En la ventana de mandos introduzca


change x:$e0..$ff $20

3. change y:$e0..$ff $20

4. display x:$e0..$ff

5. display y:$e0..$ff

6. introduzca break #1 p:$4


para ajustar un punto de ruptura. La ejecución del programa se detiene
cuando el contador de programa del DSP llega a ser igual a $4.

7. GO para ejecutar el programa.

8. break off para retirar el punto de ruptura.

9. break #1 pcm p:$4 2 para detener el programa cuando se haya te-


nido acceso a la dirección p:$4 dos veces.

10. GO compruebe que el contenido de la memoria X y Y haya cambiado.

11. STEP 4 para ejecutar las siguientes cuatro instrucciones del progra-
ma. Note que la localidad de memoria Y:$fb ha cambiado de $20 a
$0.

12. TRACE 4 para ejecutar las siguientes cuatro instrucciones con actua-
lización en pantalla después de cada instrucción. Note que Y:$fa ha
cambiado de $20 a $0. Lo mismo para X:$fa.

13. QUIT para terminar.

7.7. Definición y uso de macros


Un macro es un grupo de instrucciones. Los macros son un componente
muy importante en la realización de programas en ensamblador. Se usarán
para definir, en una sola ocasión, el núcleo del código para filtros digita-
les. Un macro se define por un encabezado, un cuerpo, un terminador. El

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


7.7. DEFINICIÓN Y USO DE MACROS 181

encabezado define un nombre y los argumentos usando nombres simbólicos


que serán reemplazados por los valores actuales de los argumentos cuan-
do el macro sea llamado. El cuerpo contiene un grupo de instrucciones del
DSP56002/DSP56303. El terminador es la directiva ENDM fin de macro.

7.7.1. Llamado del macro


El llamado del macro tiene tres campos:
Un campo para etiqueta (opcional), un campo de operaciones y un campo
de operandos. Edite el siguiente macro en un archivo llamado MA1.asm:

ma1 macro value ;macro para borrar la memoria RAM en X y Y


move #value,r0 ;apuntador a memoria L
clr b ;carga b con cero para borrar memoria
loop move b,L:-(r0) ;borra una localidad y decrementa r0
move r0,a ;guarda ro en a
tst a ;prueba el apuntador
jne loop ;regresa a loop si no ha terminado
endm

Edite un nuevo programa PROG3.asm con el siguiente contenido:


include ’ma1’
org p:$100

value equ $100


ma1 value
end
El programa PROG3.asm hace un llamado al macro MA1.asm y le pasa el
parámetro value como argumento. Note que el llamado se hace dando el
nombre del macro seguido del parámetro, o parámetros, que utilizará en la
ejecución de las instrucciones contenidas en él.
Nuevamente en una ventana de DOS bajo el directorio c:\evm56kw,
introduzca:
asm56000 -a -bprog3.cld -ic:\evm56kw prog3.asm
La opción -i, que significa include, indica al programa ensamblador
asm56000 que busque el archivo a incluir ma1.asm. Siga los siguientes pasos:

1. Encienda el módulo DSP56002EVM, si no lo está.

2. Cargue el programa PROG3.cld con la opción que prefiera.

3. En la ventana de mandos introduzca disassemble p:0..10 para de-


sensamblar y desplegar el contenido de la memoria P desde la dirección
0-10 ($0-$a). En la pantalla debe aparecer el programa en la ventana
Unassemble.

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio


182 BIBLIOGRAFÍA

4. Ejecute el programa con GO, o por pasos, y observe que se obtiene


el mismo resultado que se obtuvo durante la ejecución del programa
prog2.asm.

Bibliografı́a
[1] Freescale Semiconductor, Inc., DSP56000/56001 Digital Signal Proces-
sor User’s Manual,
DSP56000UM/AD Rev 2. Motorola Inc. 1990.

[2] Freescale Semiconductor Inc., DSP56002 Digital Signal Processor


User’s Manual,
DSP56002UM/AD Rev 1. Motorola Inc. 1993.

[3] Debug-56K User’s Guide, Version 3.00, Domain Technologies Inc., 1700
Alma Dr. Suite 495
Plano, Texas 75075. (1997).

G. Miramontes, ISBN 968-5923-15-9 Prácticas de Laboratorio