2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas...

23
TMS320C6713 Cap_04 MI. Mario Alfredo Ibarra Carrillo Año 2012 2011 Capítulo 04. Primeros programas MI. Mario Alfredo Ibarra Carrillo Facultad de Ingeniería; Telecomunicaciones 16/03/2011 Ver_01_03_01

Transcript of 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas...

Page 1: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

MI. Mario Alfredo Ibarra Carrillo Año 2012

2011

Capítulo 04. Primeros programas

MI. Mario Alfredo Ibarra CarrilloFacultad de Ingeniería; Telecomunicaciones16/03/2011Ver_01_03_01

Page 2: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

MI. Mario Alfredo Ibarra Carrillo Año 2012

Page 3: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Configurando el Simulador del DSK

Ingrese al “Setup CCStudio v3.3”. Inicialmente, la ventana tendrá tes paneles verticales, tal como se ve en la figura 1.

• El panel izquierdo es para visulizar el dispositivo con el cual se va a trabajar.

• El panel central es para elegir desde una lista de dispositvos.

• El panel derecho mostrará un resumen de las características del dispositivo elegido.

En el panel central hay tres “spinners”, para elegir las características del particulares del dispostivo

• Family

• Platform

• Endiannes

Illustration 1: Setup del CCStudio para elegir la plataforma o el dispositivo de trabajo.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Page 4: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Illustration 2: Elección del emulador DSK TMS320C6713.

Para elegir al dispositivo con el cual se va a trabajar se deben seguir tres pasos:

• Paso primero: Elegir la familia. Se elige la familia C67XX, entonces la lista se reduce.

• Paso segundo: Elegir el dispositivo : Se puede elegir fácilemente al dispositivo “C6713 Device Cycle Accurate Simulator”.

• Paso tercero: Elegir el “endiannes” o peso de los bits. : Es el orden en que pesan los bits de un byte. El peso “big endian” implica que, el bit mas significativo está a la derecha del byte. El peso “Litte endian” implica que el bit menos significativo está a la derecha del byte y es el que se elegirá.

Presione el botón “Save & Quit”, entonces el “Code Composer Studio Setup” guardará un registro con la configuración del dispostivo y le preguntará si desea cargar el IDE del “Code Composer Studio” para comenzar a desarrollar: responda “si”.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Page 5: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Iniciando un nuevo proyecto

Inicie el CCStudio, ya sea haciendo click en el icono sobre el escritorio o bien, luego de terminar el “Setup CCStudio”. Entonces verá una ventana como la mostrada en la figura 3.

En la ventana del CCStudio puede notarse

• La barra de menús: File, Edit, View, Project, Debug, GEL, Option, Profile, Tools, Options, Windows, Help.

• 3 renglones de iconos

• Una barra vertical de iconos (margen izquierdo) para control de ejecución de programa

• El panel del proyecto: muestra un árbol con los archivos que integran al proyecto.

• El panel de archivos en gris en donde se ejectuan diversos editores de código.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 3: Vista de la ventana del CCStudio.

Page 6: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Iniciando un nuevo proyecto

En el menú “project” elija “new” para empezar un nuevo proyecto, figura 4.

Entonces se despliega la caja de dialogo “Project Creation”

Como puede notarse, la creación de un nuevo proyecto require que se declaren dos cosas:

• En el cuadro de texto “Project Name” aun no escriba, déjelo en blanco.

• En el cuadro de texto “Location” se especificará la carpeta en la cual se guardará el proyecto. Presione el botón de los tres puntos para la creación de la carpeta del proyecto. En la sección siguiente se guiará al lector para la creación de la carpeta del proyecto.

◦ Por defecto, CCStudio tiene reservada la carpeta MyProjects para la almacenar sus proyectos, figura 6.a. Esta vez, el proyecto será creado en “MisDocumentos”.

◦ En la ventana de diálogo “BuscarCarperta” elija “MisDocumentos”: figura 6.b

◦ Presione el botón “Crear nueva carpeta”, figura 6.c y teclee el nombre “MiPrimerProyecto”

◦ De click en el botón “Aceptar”.

◦ Entonces, ya están completos los dos requisitos para la creación del proyecto, el nombre y la carpeta en la cual se almacenarán, figura 6.d. Presione el botón “finish”.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 4: Elija menú "project" y luego "new" para desplegar la caja de dialogo que le permite crear un nuevo proyecto.

Illustration 5: Caja de diálogo para la creación de un proyecto. Se requiere de especificar el nombre del proyecto y donde será guardado.

Page 7: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

• Ahora si, escriba el nombre del prjecto en la caja de texto “Project Name”. Para este caso particular telcee el nombre “primero”

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 6: Pasos para crear un proyecto.

Page 8: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Finalmente, la figura 7 ilustra la ventana del CCStudio y el contenido de la carpeta “MisDocumentos”. Esta carpeta contiene la recién creada carpeta del proyecto “MiPrimerProyecto”. Esta carpeta contiene dos archvidos: “Primero.pjt” y “Primero.sbl”.

El Archivo de Comandos de Enlace (cmd)

Ya abierto el CCStudio, debemos crear el “Archivo de Comandos de Enalce”. En este archivo se define el mapa de memoria del DSK, así como en cual dirección de memoria de guardará el proyecto.

Creación del “Archivo de Comandos de Enlace”

Entonces, en el menú “File” elija “New” y luego “Source file” para el CCStudio abra un editor de textos y pueda comenzar a capturarse la configuración de memoria.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 7: Vista de "MiPrimerProyecto".

Illustration 8: Pasos para abrir un editor de textos.

Page 9: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

El “Archivo de Comandos de Enlace” tiene dos partes o bloques:

• MEMORY: Bloque de memoria

• SECTIONS: Definición de secciones de memoria de programa

Bloque “MEMORY”

En este bloque se declaran las secciones de memoria instaladas en el DSK así como la dirección de memoria en la cual se localizan los vectores de interrupción. Las secciones de memoria son:

• IRAM o Internal RAM. Esta memoria se localiza en el encapsulado del DSP y corresponde con la memoria “cache” de nivel 2.

• SDRAM o Synchronous Dynamic RAM: Es un chip de RAM externo al encapsulado del DSP.

• FLASH: Es un chip de memoria externo al encapsulado del DSP.

En la figura 9 se iliustra la definición del bloque MEMORY.

Bloque SECTIONS

Todo programa se almacena en memoria dividiéndolo en secciones, por ejemplo, la sección de constantes, la sección de variables (datos), la sección de pila, la sección de código, etc. En el bloque SECTIONS define en cual de los tres tipos de memoria se van a almecenar las secciones. Los tipos de memoria quedaron definidos como IRAM, SDRAM y FLASH. En este bloque tanbién se declaran los vectores de interrupción.

Un ejemplo en el que se declaran la ubicaciones de estas secciones se ilustra en la figura 10:

MI. Mario Alfredo Ibarra Carrillo Año 2012

/*C6713dsk.cmd Linker command file*/

MEMORY { IVECS: org=0h, len=0x220 IRAM: org=0x00000220, len=0x0002FDE0 /*internal memory*/ SDRAM: org=0x80000000, len=0x00100000 /*external memory*/ FLASH: org=0x90000000, len=0x00020000 /*flash memory*/ }

Illustration 9: Código para el bloque "MEMORY".

Page 10: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

A continuación se ilustra un ejemplo de un archivo de comandos de enlace que declara que el programa se almacenará en la memoria interna.

MI. Mario Alfredo Ibarra Carrillo Año 2012

/*C6713dsk.cmd Linker command file*/

MEMORY { IVECS: org=0h, len=0x220 IRAM: org=0x00000220, len=0x0002FDE0 /*internal memory*/ SDRAM: org=0x80000000, len=0x00100000 /*external memory*/ FLASH: org=0x90000000, len=0x00020000 /*flash memory*/ }

SECTIONS { .EXT_RAM :> SDRAM .vectors :> IVECS /*Sección de los vectores de interrupción*/ .text :> IRAM /*Sección de código fuenteo. Creada por e programador o por el compilador C*/ .bss :> IRAM /*Memoria de montón o de variables no definidas*/ .data :> IRAM /*Variables del programa*/ .cinit :> IRAM .stack :> IRAM /*Memoria de pila */ .sysmem :> IRAM .const :> IRAM .switch :> IRAM .far :> IRAM .cio :> IRAM .csldata :> IRAM }

Illustration 11: Archivo de Comandos de Enlace completo.

SECTIONS { .EXT_RAM :> SDRAM .vectors :> IVECS /*Sección de los vectores de interrupción*/ .text :> IRAM /*Sección de código fuente creada por el programador o por el compilador C*/ .bss :> IRAM /*Memoria de montón o de variables no definidas*/ .data :> IRAM /*Variables del programa*/ .cinit :> IRAM .stack :> IRAM /*Memoria de pila .sysmem :> IRAM .const :> IRAM .switch :> IRAM .far :> IRAM .cio :> IRAM .csldata :> IRAM }

Illustration 10: Bloque "SECTIONS" en el cual se declara en que secciones se almacenarán las secciones de un programa. Las secciones sin comentarios aún no han sido desmitificadas.

Page 11: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Anexando el “Archivo de Comandos de Enlace” al proyecto

Salve el archivo con el nombre “C6713dsk.cmd”: puede seguir los pasos indicados a continuación:

1. En el menú “File->Save as”

2. Se abre la venta de diálogo de guardar archivo.

3. Busque la carpeta “MisDocumentos->MiPrimerProyecto”

4. Elija el tipo de archivo “LinkerComandFiles (*.cmd, *.lcf, *lkf)”

5. En la caja de texto “Nombre” teclee el nombre del archivo “C6713dsk”

6. Presione el botón “Guardar”

7. Si revisa la carpeta “MisDocumentos->MiPrimerProyecto” verá el archivo “C6713dsk.cmd”

Ahora anexe el “Archivo de Comandos de Enlace” al proyecto.

1. En el panel del proyecto, haga click derecho sobre el nombre “primero.pjt(Debug)”

2. Del menú emergene elija “Add Files To Project”. Figura 12.a

3. Se abre la caja de diálogo de carga de archivos.

4. Cargue el archivo “C6713dsk.cmd”. Figura 12.b

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 12: Anexando el "Archivo de Comandos de Enlace".

Page 12: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Estructura de un programa en ASM

En la presente sección se explicará como se estructura un archivo de código fuente. Será en la sección siguiente donde se capture y pruebe un ejemplo de tal código.

Todo programa en ensamblador se divide en secciones. Una sección es la unidad más pequeña de un programa escrito en ensamblador. Una sección es un bloque de datos o código que ocupa espacio contiguo en el mapa de memoria. Las secciones de un programa son:

• La sección del contrato. Esta sección está compueta por varias lineas de comentarios y no ocupa espacio de memoria en el DSP. El contrado es para declarar la funcionalidad del programa.

• La directiva .def se usa para declarar el inicio del código fuente de un proyecto en ensamblador.

• La sección de constantas simbólicas no requiere de una directiva ya que pueden declararse en cualquier linea del programa. Es buena idea declarar las constantes inmediatamente antes de inicio de algún código.

• La sección .data se usa para reservar espacio en memoria IRAM o SDRAM para variables que tendrán un valor inicial, mismo que se especifica en el código.

• La sección .bss se usar para reservar espacio en memoria RAM o SDRAM para variables que no tendrán un valor incial.

• La sección .text se usar para guardar una copia de las instrucciones del programa en memoria, FLASH, IRAM O SDRAM.

• La directiva .end. Esta directiva marca el final del código y todo los que se escribe en esta sección es ignorado.

En cual tipo de memoria se almacen código y variables, queda definido en el “Archivo de Comandos de Enlace” o cmd.

La sección del contrato

Un contrado se forma declarando cual es el insumo o información de entrada y cual es el producto o información de salida. Las lineas del contrato se especifican como comentarios en la primera columna y en la cabecera del programa. También es necesario especificar el contrato para cada subrutina. La figura 13 ilustra este concepto.

MI. Mario Alfredo Ibarra Carrillo Año 2012

;Contrato; Insumo;; Señal de audio con ruido; Producto:; Señal de audio filtrada.

Illustration 13: Ejemplo de contrado de un proyecto.

Page 13: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

La directiva .def y el programa principal

El compilador identificará la primer instrucción del programa a ejecutar porque tiene la etiqueta “_c_int00”. Esta etiqueta debe declararse con la directiva “.def” en la primer linea del programa y a partir de la segunda columna. La figura 14 ilustra el uso de la directiva y de la etiqueta.

La sección de constantes simbólicas .set

La directiva .set define la sección de constantes simbólicas. Para definir una constante simbólica se sig

Los nombres de las constantes se anotan en la primer columna. La figura 15 ilustra la definición de constantes simbólicas del tipo entero (int) y del tipo punto flotante (float de 32 bits)

MI. Mario Alfredo Ibarra Carrillo Año 2012

;Contrato:; Insumo:; Señal de audio con ruido; Producto:; Señal filtrada

.def _c_int00

;Otras declaraciones

_c_int00 LD ...

Illustration 14: Uso de la directiva .def para declarar el inicio del código fuente del proyecto.

<constante> .set <valor>

;Contrato:; Insumo:; Señal de audio con ruido; Producto:; Señal filtrada

.def _c_int00

************************************************** ** Sección de constantes************************************************** SizeVector .set 0x0A ;Tamaño de un vector de entrada especificaco en

;hexadecimalcoef .set 3.1416E3 ;Arreglo de coeficientes de filtroptr .set 01234h ;Puntero a memoria en hexadecimal

_c_int00 LD ...

Illustration 15: Ejemplo de definición de variables

Page 14: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

La sección .data

Esta directiva se coloca a partir de la segunda columna e indica al IDE del CCStudio reservar memoria para las varaibles del programa.

Las variables se anotan en la primer columna y pueden ser simples o arreglos de datos. Para especificar una variable simple se sigue el formato:

La tabla 1 indica los tipos de datos válidos

Para definir arreglos de datos, se especifica una lista de valores luego de la declaración de tipo de la variable, es decir:

La figura 15 muestra un ejemplo de definición de datos

MI. Mario Alfredo Ibarra Carrillo Año 2012

.data<variable> .<tipo> <valor>

.<tipo> #bits minimo maximo

.short 16 bits

.int 32 bits

.word 32 bits

.float 32 bits

.double 64 bits

Tabla 1. Formato de definición de variables y tipos de datos

'-215 215-1'-231 231-1'-231 231-1

+-1.175494x10-38 '+-3.40282346x1038

'+-2.22507385x10-308 '+-1.79769313x10308

.data<variable> .<tipo> <valor 1>, <valor 2>, ..., <valor N>

;Contrato:; Insumo:; Señal de audio con ruido; Producto:; Señal filtrada

.def _c_int00

************************************************** ** Sección de datos**************************************************

.data SizeVector .short 128 ;Tamaño de un vector de entradacoefs .float 0.24E3, 1.7E-2 ;Arreglo de coeficientes de filtroptr .word 01234h ;Puntero a memoria

Illustration 16: Ejemplo de definición de variables

Page 15: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

La sección .bss

Esta directiva se anota luego de la directiva .data y a partir de la segunda columna. La directiva .bss siempre debe seguir a la directiva .data. La directiva .bss indica al IDE del CCStudio reservar memoria no inicializada para una única variable. La cantidad de memoria que se reserva para esta variable se especifica en bytes. Para reservar memoria se sigue el formato siguiente

Se pueden declarar cuantas secciones se requieran para el programa y se puede realizar la declaración en cualquier parte del código, aún dentro de la sección .data. La figura 16 ilustra un ejemplo de declaración de variables:

MI. Mario Alfredo Ibarra Carrillo Año 2012

;Contrato:; Insumo:; Señal de audio con ruido; Producto:; Señal filtrada

.def _c_int00

************************************************** ** Assemble an initialized table into .data. **************************************************

.data SizeVector .shor 128 ;Tamaño de un vector de entrada en bytescoefs .float 0.24E3,1.7E-2 ;Arreglo de coeficientes de filtroptr .word 01234h ;Puntero a memoria

.bss AudioData,128 ;128 bytes de RAM para datos de entrada.

Illustration 17: Ejemplo de la inclusión de una variable no inicializada de 128 bytes: “AudioVector”.

.bss <variable>,< # bytes>

Page 16: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

La sección .text

La directiva se anota a partir de la segunda columna e indica el inicio de una secuencia de instrucciones para que el DSP las ejecute.

El formato general de las instrucciones es el siguiente.

• La etiqueta: Se declara en la primer columna y es usada por las instrucciones de salto. La etiqueta _c_int00 es una etiqueta especial ya que es usada por el compilador para localizar la primera instrucción del proyecto. Se recomienda que las etiquetas sean precedidas por un guión bajo como prefijo.

• La condición: Si la condición es diferente de cero, la instrucción se ejecuta, en otro caso, se salta a la siguiente instrucción. El símbolo “!” niega la condición. La condición se forma declarando únicamente uno de los registros del núcleo. ie [A5] ó [!A5]

• mNemónico: palabra que sustituye a un código de operación (lenguaje de máquina), con lo cual resulta más fácil la programación, es de aquí de donde se aplica el concepto de lenguaje ensamblador.

• Unidad de ejecución. Se debe indicar cual de las unidades de ejecución realizará el trabajo indicado por la instrucción. Como se ya se mencionó, el DSP cuenta con dos grupos de 4 unidades operativas cada grupo.

◦ Unidad .L (operaciones lógicas y artiméticas de suma-resta en punto fijo y punto flotante).

◦ Unidad .S (Operaciones de salto, manipulación de bits, generación de constantes, aritmética de suma-rsta en punto fijo y en punto flotante).

◦ Unidad .M (Multiplicación de punto fijo y punto flotante. También puede dividir)

◦ Unidad .D (Carga y lamacenamiento y operaciones aritméticas de putno fijo)

• Operandos. Las instrucciones representan una operación matemática y pueden tener de cero hasta tres operandos. Hay tres tipos de operandos:

◦ Constantes numéricas

◦ Registros del núcleo del procesador: regsitros A y registros B

◦ Direcciones de memoria: “*Ax” y “*Bx” donde x=0,1,..15

Dado que las unidades tienen capacidades arimtéticas redundantes, es posible no declarar la unidad de ejecución y dejar que el compilador realice la mejor asignación posible de las unidades de ejecución. Esta forma automática puede representar un mejor rendimiento del código.

La directiva .end

Se declara a partir de la segunda columna e Indica el final del código y cualquier escrito a partir de esta directiva es ignorado.

MI. Mario Alfredo Ibarra Carrillo Año 2012

[ _label] [condición | ! condición] mNemónico .<Unidad de jecución> Operando 1 , Operando 2 , Operando 3

Page 17: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Ejemplo. Primer programa: Instrucciones de carga y almacenamiento

Ahora se captura un código fuente en ensamblador. Tal código sólo carga un par de constantes enteras y las multiplica. El resultado se guarda en una variable localizada en memoria.

Captura del código fuente

Entonces, en el menú “File” elija “New” y luego “Source file” para el CCStudio abra un editor de textos y pueda comenzar a capturar el código indicado en la figura 17.

Salve el archivo con el nombre “multiplica.asm”: puede seguir los pasos indicados a continuación:

8. En el menú “File->Save as”

9. Se abre la venta de diálogo de guardar archivo.

10.Busque la carpeta “MisDocumentos->MiPrimerProyecto”

11. Elija el tipo de archivo “Asm Source Files (*.a*,*s*)”

12.En la caja de texto “Nombre” teclee el nombre del archivo “multiplica.asm” (no olvide la extensión .asm)

13.Presione el botón “Guardar”

14.Entonces el código tecleado toma color

a) Los comentarios son itálicas en verde

b) Las directivas son en color azul grueso

c) El código es negro

15.Si revisa la carpeta “MisDocumentos->MiPrimerProyecto” verá el archivo “multiplica.asm”

Ahora anexe el “Archivo de Comandos de Enlace” al proyecto.

1. En el panel del proyecto, haga click derecho sobre el nombre “primero.pjt(Debug)”

2. Del menú emergene elija “Add Files To Project”.

3. Se abre la caja de diálogo de carga de archivos.

a) Elija el tipo de archivo “Asm Source Files (*.a*)”

4. Cargue el archivo “multiplica.asm”.

a) El arbol de archivos del proyecto puede verse en la figura 18

MI. Mario Alfredo Ibarra Carrillo Año 2012

Page 18: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

MI. Mario Alfredo Ibarra Carrillo Año 2012

;CONTRATO; ENTRADA: Dos constantes numèricas; SAIDA: El producto de las dos constantes;************************************************

.def _c_int00;;Secciòn de constantes numèricas;************************************************

cte_A .set 0x04cte_B .set 0x02

;Secciòn de variables;************************************************

.datavarA .int 0

;Secciòn de código;************************************************; A0 : Contiene la primer constante; A1 : Contiene la segunda constante; A2 : Contiene el producto de las constantes; A3 : es la dirección de la variabble

.text_c_int00

;Carga de constantes numericasMVKL cte_A,A0 ;16 bits menos significativosMVKH cte_A,A0 ;16 bits mas significativos

MVKL cte_B,A1 ;16 bits menos significativosMVKH cte_B,A1 ;16 bits mas significativos

;Carga la dirección de la variableMVKL varA,A3 ;primeros 16 bits de la direcciónMVKH varA,A3 ;segundos 16 bits de la dirección

;ProductoMPY A0,A1,A2 ;A2 <- A0*A1NOP 2 ;El producto se realiza con dos ciclos muertos

;Almacena el resultado en variableSTH A2,*A3 ;*A3 <- A2

;Ciclo para detener al micro_fin B _fin

NOP 6

.end

Illustration 18: Código fuente para multiplicar dos constantes y guardar el resultado en una variable en memoria. Note que hay algunas líneas con la instrucción “not”. Esta instrucción hace al procesador despediciar ciclos en hacer nada. La razón de esto es para esperar a que el DSP acabe de ejecutar la instrucción anterior.

Page 19: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Depuración o Compilación del código

Para que el texto del código fuente se convierta en un archivo de códigos de operación que puedan cargarse en el DSP, éste debe ser depurado. Busque el icono de “Rebuild All” y presiónelo. La figura 19 indica la ubicación del icono.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 19: Árbol de archivos del proyecto "MiPrimerProyecto". En el árbol pueden verse los dos archivos construidos hasta este momento. El .cmd y el .asm.

Illustration 20: Icono "Rebuild All". este icono depura el proyecto e indica si hay errores o no.

Page 20: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Una vez depurado el código, CCStudio muestra un panel con el estado de la depuración. La figura 20 ilustra la ventana de CCStudio luego de la depuración.

Carga del código en el DSP

Ahora hay que cargar el programa en el DSP, o bien, en este caso, el programa se carga en el simulador del DSP.

• Vaya a menu FILE->LOAD PROGRAM (figura 21.a)

• Se abre la caja de dialogo de cargar programa. (figura 21.b)

• Busque dentro de la carpeta Debug el código “primero.out” (figura 21.c)

• CCstudio cargará el programa.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 21: CCStudio ha terminado la depuración del código y muestra que no hay errores. Entonces se puede proceder a cargar el programa en el DSP. En este caso, en el simulador del DSP.

Page 21: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Ejecutar el código paso a paso.

Antes de ejecutar el código paso a paso, se debe configura el CCStudio para desplegar dos ventanas:

• La ventana de los registros del procesador.

◦ Presione menú VIEW->REGISTERS->CORE_REGISTERS.

• La ventana de memoria del DSK.

◦ Presione menu VIEW->MEMORY

◦ El panel le pedirá la dirección de memoria que se desea examinar

◦ Tecle el nombre de la variable y CCStudio hará el resto

• la figura 22 ilustra el resultado de estos pasos.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 22: Pasos para cargar el archivo con los códigos de operación el DSP.

Page 22: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Ejecución paso a paso

Haciendo click en el icono “Source-single step” o en el icono “Source-step over” se puede realizar la ejecución paso a paso del código. Los resultados de cada operación pueden verse en los regisgtros del DSP y en la memoria.

El código se ejecutará hasta llegar a las dos últimas instrucciones, las cuales forzan al DSP a quedarse varado en un clclo infinito.

MI. Mario Alfredo Ibarra Carrillo Año 2012

Illustration 23: Visualización de los regisgros del DSP y parte de la memoria dle DSK. En el marge izquierdo se ve el panel de iconos de control de ejecución.

Page 23: 2011 Capítulo 04. - maixx.files. · PDF file2011 Capítulo 04. Primeros programas MI. ... Un contrado se forma declarando cual es el insumo o información de entrada y cual es el

TMS320C6713Cap_04

Cuestionario

1. Investigue la arquitectura de una computadora von Newman [Savage]

2. Investigue la arquitectura de una computadora Harvard [Savage]

3. Investigue y reporte el mapa de tiempos para el proceso de lectura de datos en una ROM.

4. Investigue que es segmentación encausada pipeline y como funciona en una computadora Harvard [Savage]

5. Mencione brevemente las características de las arquitecturas SIMD e investigue en qué aplicaciones son utilizadas este tipo de computadoras.

6. Mencione brevemente las características de las arquitecturas MIMD e investigue en qué aplicaciones son utilizadas este tipo de computadoras.

7. Investigue las características de las arquitecturas SISD y MISD. ¿En qué aplicaciones se utilizan o se podrían utilizar este tipo de computadoras?

8. Investigue qué es un DSP.

[Savage]

Diseño de Micro rocesadores ṕ

Dr. Jesús Savage Carmona

Ing. Gabriel Vázquez

MI Norma Elva Chávez Rodríguez

Facultad de Ingeniería

Universidad Nacional Autónoma de México, UNAM

MI. Mario Alfredo Ibarra Carrillo Año 2012