You are on page 1of 6

Introduccin al Code Composer Studio y al DSK C6713.

Prctica para configurar el cdec AIC23

Funcionalidad de la tarjeta DSK6713


El DSP se comunica con los perifricos de la tarjeta DSK 6713 a travs del EMIF (Interfaz
de memoria externa) de 32- bit de ancho.
La SDRAM, Flash y CPLD
estn todos conectados al bus. Las seales EMIF tambin se utilizan para las tarjetas externas
(daughter). La DSP se comunica a travs de seales analgicas de audio por medio del cdec
AIC23 y de cuatro conectores de audio de 3,5 mm (entrada de micrfono, entrada de lnea,
salida de lnea, y salida de auriculares). El cdec puede seleccionar el micrfono o la entrada
de lnea como la entrada activa. La salida analgica se enva tanto a la salida de lnea y
auriculares conectores de salida. La salida de lnea tiene una ganancia fija, mientras que la
salida de auriculares permite ajustar la ganancia.
El CPLD (Complex Programmable Logic Dispositivo) se utiliza para implementar la lgica
que une los componentes de la placa juntos. Los DSK incluye 4 indicadores LED y un
interruptor DIP de 4 posiciones que permiten una retroalimentacin interactiva.
En esta prctica de laboratorio, el CCS se utiliza para escribir, compilar y descargar el cdigo
en el DSKC6713. CCS incluye un compilador C, un ensamblador y un enlazador. Tambin

la capacidad de
graficar y admite la depuracin en tiempo real.
El compilador compila un programa fuente en C con extensin .c para producir un archivo
fuente de ensamblador con extensin asm. El ensamblador ensambla un archivo extensin
.asm para producir un archivo de objeto de lenguaje de mquina con la extensin .obj. El
enlazador combina archivos objeto y bibliotecas de objetos para producir un archivo
ejecutable con extensin .out. Este archivo ejecutable representa un archivo Formato (COFF)
de objeto comn relacionado. Este archivo ejecutable puede ser cargado y ejecutado
directamente en el DSK6713.

Configuracin del sistema


Seguir las siguientes instrucciones, asegurando que el CCS y el DSKK6713 ya estn
conectados adecuadamente (previamente haber corrido el diagnstico sin tener abierto el
CCS).
Abrir el CCS.
En el men GEL, seleccionar Check DSK! -- Quick test.
Se desplegar el mensaje:15 Board Revision:1 CPLD Revision: 2.
Esto asume que los cuatro DIP swithes (0,1,2,3) estn en posicin abierta. Presionar
cualquier de los swithes y correr de nuevo el quick test again. Verificar el nmero
equivalente.
Para el siguiente programa se generar una onda senoidal de 1 KHz en el uso de una tabla de
consulta. Este programa utiliza el cdec AIC23 en la Board Support Library 6713 para 6713
generar un tono. El tono se genera en funcin del estado del interruptor DIP 0.
Cuando se presiona el interruptor, se genera el tono y el LED # 0 se enciende. El
programa tambin crea un buffer para almacenar los datos de salida en la memoria. Mientras
DIP # 0 est en la posicin de encendido, el programa emite un tono y un grfico. Este
programa utiliza un bucle infinito para sondear el interruptor DIP.
El bucle principal del cdigo escribe cada punto de datos en la tabla de onda sinusoidal al
codec utilizando el paquete AIC23 codec de la BSL. Cada funcin de escritura enva una
nica muestra de 16 bits para el cdec. En este caso se enva los mismos datos dos veces, una
para el canal izquierdo y una vez para el canal derecho. El cdec es configurado para aceptar
datos a una velocidad de 48.000 muestras estreo por segundo. Ya que la tabla de senos es
de 48 entradas de largo, la onda de salida resultante ser una senoidal de 1KHz
con
la
mismo
salida
para
los
canales
izquierdo
y
derecho.
El puerto serie se usa para transmitir datos al codec a un ritmo mucho ms lento
que el DSP pueda procesar los datos. Acepta los datos de 16 bits a la vez y las desplaza
lentamente uno a la vez. La funcin de escritura devuelve un 1 si se ha completado la escritura
con xito o un 0 si el canal est ocupado en serie. El bucle while () alrededor de las funciones
de escritura (Write) espera mientras que el puerto serie est ocupado para que el programa se
puede sincronizar con la velocidad de datos del codec.

#include "dsk6713.h"
#include "dsk6713_aic23.h"
#include "dsk6713_led.h"
#include "dsk6713_dip.h"
// ndice de table
short loop = 0;
// factor de ganancia
short gain = 10 ;
// output b u f f e r
Int16 out_buffer [256];
// tamao del buffer
const short BUFFERLENGTH = 256;
// contador para el buffer
int i = 0 ;
/* Codec configuration settings */
DSK6713_AIC23_Config config = {
0x0017, // 0 DSK6713_AIC23_LEFTINVOL Left line input channel volume
0x0017, // 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume
0x00d8, // 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone volume
0x00d8, // 3 DSK6713_AIC23_RIGHTHPVOL Right channel headphone volume
0x0011, // 4 DSK6713_AIC23_ANAPATH Analog audio path control
0x0000, // 5 DSK6713_AIC23_DIGPATH Digital audio path control
0x0000, // 6 DSK6713_AIC23_POWERDOWN Power down control
0x0043, // 7 DSK6713_AIC23_DIGIF
Digital audio interface format
0x0001, // 8 DSK6713_AIC23_SAMPLERATE Sample rate control
0x0001 // 9 DSK6713_AIC23_DIGACT Digital interface activation
};
/* Pre-generated sine wave data, 16-bit signed samples */
Int16 sine_table[48] = {
0x0000, 0x10b4, 0x2120, 0x30fb, 0x3fff, 0x4dea, 0x5a81, 0x658b,
0x6ed8, 0x763f, 0x7ba1, 0x7ee5, 0x7ffd, 0x7ee5, 0x7ba1, 0x76ef,
0x6ed8, 0x658b, 0x5a81, 0x4dea, 0x3fff, 0x30fb, 0x2120, 0x10b4,
0x0000, 0xef4c, 0xdee0, 0xcf06, 0xc002, 0xb216, 0xa57f, 0x9a75,
0x9128, 0x89c1, 0x845f, 0x811b, 0x8002, 0x811b, 0x845f, 0x89c1,
0x9128, 0x9a76, 0xa57f, 0xb216, 0xc002, 0xcf06, 0xdee0, 0xef4c
};
Uint32 fs = DSK6713_AIC23_FREQ_48KHZ;
// main ( ) Cdigo principal de rutinas, inicializa la BSL y corre la aplicacin de los LEDS

void main ( )
{
DSK6713_AIC23_CodecHandle hCodec;
DSK6713_init();
DSK6713_LED_init();
DSK6713_DIP_init();
//Inicializa el cdec//
hCodec = DSK6713_AIC23_openCodec(0, &config);

while(1)
//DIP Swi tch API
// DSK6713 DIP get (Uint32 dipNum)
// Retorna un valor de 0 si el switch est en o f f
// Retorna un valor de 1 si el switch est en on
// i n f i n i t e loop
{
if (DSK6713_DIP_get ( 0 ) == 0)
{// turn LED#0 on
DSK6713_LED_on ( 0 );
out_buffer [i] = sine_table [loop] ;
// wh i l e ( return value is not z e ro )
// see DSK6713 AIC23 write ( . . . )
// send data to left channel
// output every Ts SW0
while (!DSK6713_AIC23_write (hCodec, sine_table [loop]*gain));
// send data to right channel
while (!DSK6713_AIC23_write (hCodec, sine_table [loop]*gain));
i++;
if (i==BUFFERLENGTH) i=0;
// check for end of table
if (++loop > 47) loop = 0;
}//LED#0 o f f
else DSK6713_LED_off (0);
}
}
Crear un nuevo proyecto en CCS

Escribir el cdigo y guardarlo como codecsin.c


Crear un proyecto en CCS (Project!New). y guardarlo como codecsin.pjt
Indexarlo al proyecto
Agregar las libreras a la carpeta del proyecto, las cuales se ubican en
/c6000/dsk6713/lib/).
Scan file dependencies (Project ! Scan file dependencies).
Configurar las opciones (Project ! Build options) de la siguiente forma:

For the Basic


target version :
gen. debug info :
opt speed vs size:
prog level opt :

category:
C671x
full
speed most critical
none

For Feedback category:


interlisting :
opt/c and ASM(-s)
For Preprocessor category :
Define symbols:
CHIP_6713

Compilar y correr el programa.


Carga del programa con el fin de cargar codecsin.out al DSK.
Debe estar en el sinegraph carpeta \ Debug. Select Debug---Run.
Conectar un altavoz a la salida LINE OUT de la DSK. Pulse el interruptor DIP # 0.
El bfer de salida se actualiza continuamente cada 256 muestras, y el CCS puede desplegar
puede trazar los datos de salida actuales almacenados en la memoria intermedia out_buffer.
1. Seleccione View!Graph!Time/Frequency, y configure el cuadro de dialogo tal como se
muestra en la siguiente imagen.

2. Elija la transformada rpida de Fourier (FFT) para que el tamao del cuadro sea de 2
orden. Pulse Aceptar y compruebe que el grfico de magnitud FFT representa la
componente de 1000 Hz.

You might also like