DSP Practica05 Uso de Memoria Externa

Embed Size (px)

Citation preview

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    1/13

    INSTITUTO POLITECNICO NACIONAL

    UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERIAY TECNOLGIAS AVANZADAS - IPN

    MATERIA

    Procesadores Digitales de Seales

    ALUMNOS

    Cerda Baos Omar

    PROFESOR

    Juan Manuel Madrigal Bravo.

    TEMAUso de la memoria externa del del DSP

    Grupo 6TV1 Equipo 1 Practica No. 523/02/2011

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    2/13

    Objetivo:

    Hacer uso de la directiva pragma para almacenar datos en la memoria externa del DSP.Para esto se guardar una seal de voz introducida a travs de un micrfono en la tarjetade desarrollo, manipulando ciertos parmetros en el programa principal se guardara ciertolapso de voz, la cual despus reproduciremos.

    Antecedentes

    #Pragma nombre_directivaCon esta directiva se declaran directivas que usa el compilador de C. Si al compilarse elprograma con otro compilador de C, este no reconoce la directiva, se ignora.

    Arquitectura del C6713 DSK

    El C6713DSK es una plataforma de desarrollo independiente de bajo costo, que permiteal usuario, desarrollar y evaluar aplicaciones para la familia de DSP C67XX de TexasInstruments. De forma general se muestra en la fig. 5.1.

    Figura 5.1. Diagrama a bloques del C6713DSK

    El DSK viene con un compendio amplio de dispositivos, adheridos en la tarjeta, quepermite una amplia variedad de ambientes de aplicacin. Algunas de las caractersticasson:

    - Un TMS320C6713 DSP de Texas Instruments trabajando a 225MHz.- El cdec estreo AIC23- 8 Mbytes de memoria DRAM sncrona.- 512 Kbytes de memoria Flash no-voltil es decir, guarda la informacin

    permanentemente,- 4 LEDs y DIP switches para ingresar informacin- Opciones configurables de arranque- Configuracin del software de la tarjeta a travs de de una CPLD implementada- Conectores de expansin para el caso que se desee conectar 2 tarjetas.

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    3/13

    La interaccin del DSP incluido DSK6713 con los perifricos en la tarjeta se realiza atravs de un amplio EMIF (External Memory Interface) de 32-bits. La memoria SDRAM,Flash y la CPLD estn todas conectadas al este bus. A las seales EMIF son tambinconectados los puertos de expansin para alguna tarjeta hija, estos puertos son utilizados

    por terceros para algn complemento.

    Bilbioteca vectors_poll.asm y mtodo de poleo.

    En las practicas anteriores lo que hacamos es hacer que el cdec aceptara datosgenerndole interrupciones. En esta ocasin es diferente, la tarjeta recoger datos portcnica de poleo que consiste en que la tarjeta estar programada (no por nosotros) parapreguntar si cierto perifrico tiene datos que entregar, de ser as lo acepta, de nos ser asise va a otro perifrico, y as sucesivamente. Es algo as como una multiplexacin.

    Los datos que se almacenaras sern de tipo de dato short, el cual requiere 2 bytes.

    Desarrollo

    De igual forma que las prcticas anteriores, necesitaremos archivos de soporteadicionales, para esta prctica requerimos hacer lo mismo.

    1. Creamos el proyecto con el siguiente nombre : record_pr05.pjt.NOTA: Es importante respetar los nombres de archivos mencionados por elprofesor, dado que unos archivos se auxilian de otros para compilar el programaprincipal, y en esta accin se hacen referencia mediante sus nombres.

    2. Modificamos el archivo de comandos C6713DSK.cmd utilizado en prcticas anteriorespara que contuviera las siguientes secciones y lo grabamos como C6713DSK_r.cmd.

    /*C6713dsk.cmd Linker command file*/

    MEMORY{IVECS: org = 0h, len = 0x220IRAM: org = 0x00000220, len = 0x0002FDE0SRAM_EXT: org = 0x80000000, len = 0x01000000FLASH: org = 0x90000000, len = 0x00020000

    }

    SECTIONS{.EXTRAM :> SRAM_EXT.vecs :> IVECS /*Created in vectors file*/.text :> IRAM /*Created by C Compiler*/.bss :> IRAM.cinit :> IRAM

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    4/13

    .stack :> IRAM

    .sysmem :> IRAM

    .const :> IRAM

    .switch :> IRAM

    .far :> IRAM

    .cio :> IRAM

    .csldata :> IRAM}

    En este proyecto utilizaremos un archivo de secuencia de comandos que es elC6713dsk_r.cmd el cual contiene declarada a la memoria Flash, visible en la figura 5.2.

    Figura 5.2. Secuencia de comandos, declarando a la memoria FLASH.

    2. Cargamos el siguiente cdigo principal proporcionado por el professor.

    //record_pr07.c

    #include "C:\CCStudio_v3.1\MyProjects\arch soporte dsk\dsk6713_aic23.h" //Archivode soporte del DSKUint32 fs=DSK6713_AIC23_FREQ_8KHZ; //Frecuencia de muestreo#define N 24000 //Bffer long i; short var;short buffer[N];#pragma DATA_SECTION(buffer,".EXTRAM") //buffer -> memoriaexterna

    void main(){comm_poll(); //DSK, CODEC y McBSPDSK6713_DIP_init();DSK6713_LED_init();while(1) //Bucle infinito{

    if(DSK6713_DIP_get(3) == 0) //Verificar si el switch No.

    3 est presionado{

    DSK6713_LED_on(3); //Encender LED No. 3for (i = 0; i

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    5/13

    }};var=0;while(1){

    if((DSK6713_DIP_get(0)==0)&&(var==0)) //Verificar si SW No. 0 est

    presionado y var=0{

    DSK6713_LED_on(0); //Apagar el LED No. 0for (i = 0; i

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    6/13

    Figura 5.3 Cuadro de archivos de proyecto.

    8. Modificamos el registro 4 del archivo C6713dskinit.h y cambie el registro: 0x0011 por0x0015, para que admita la entrada con micrfono y salida con el audfono. (Estearchivo forma parte de [3]).

    9. Compilamos el programa. Una vez ms tuvimos un error de could not open file quefue causado por no escribir bien la ruta de acceso a un archivo. Pero fcilmente sesolucion.

    10. Cargamos el archivo .out en el DSP.11. Conecte un micrfono y un audfono.

    12. Ejecute el programa.

    13. Presione el switch 3 y hable por el micrfono por algunos segundos. Verifique que elled 3 se encienda para indicar que la voz est siendo grabada y almacenada en un buffer.Desconecte el switch 3 para detener la grabacin.

    NOTA: Nuestra voz ser guardada en tipo de dato short, el cual requiere de 2 bytes. Y lafrecuencia de muestreo es:

    Fs = 8khz, entonces se requerirn : (8Khz)(2bytes) = 16 000 bytes por segundo degrabacin.

    Tomando en cuenta que la memoria externa es de 16 Mbytes es posible guardaraproximadamente:

    16MB/16000muestras = 1000 segundos.

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    7/13

    Para un dato ms riguroso. 1MB tiene 1024 kbytes, y un KB tiene 1024 bytes. Entonces :

    16MB = 16 777 216 bytes

    16777216/ 16000 bytes segundo = 1048 segundos de grabacin.

    14. Presione el switch 0 y verifique que la seal de voz (almacenada en la memoriaexterna) se reproduzca. Verifique que el led 0 se encienda. Desconecte el switch 0 paradetener la reproduccin.

    Resultados

    Efectivamente pudimos escuchar nuestra voz, hablamos de forma natural, fluida y suelta,y el sonido que escuchamos que se grab, era bastante inteligible y entediamos elmensaje que habamos grabado. Fueron nicamente 3 segundos porque la N=24000 y lafrec de muestreo era de 8000 muestras por segundo.

    Cuestionario

    1. Qu libreras se agregaron y porque?

    csl6713.lib Es la biblioteca de soporte del chip, es necesaria para que elcompila genere el archivo ejecutable especializado nicamente para el chip6713.

    dsk6713bsl.lib Es la BSL Board Support Library (biblioteca de soporte detarjeta) se agrego para poder controlar al DSP6713 estando dentro de la tarjeta atravs del CCStudio. Contiene la forma digital de conectarse entre la computadora

    y el DSP atravez de la tarjeta como intermediario.

    rts6700.lib Es una biblioteca con funciones extensivamente usadas poralgoritmos en DSPs de proposito general. Es una biblioteca con soporte de datos yfunciones algebraicas y trigonomtricas.

    2. Capture las ventanas y ajustes realizados en el CCS.

    La figura 5.4 muestra la ventana del CCS con el programa compilado totalmente.

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    8/13

    Figura 5.4 programa compilado correctamente.

    3. De que valor se debe seleccionar N de tal forma que se puedan grabarexactamente 10 segundos de voz?

    Si tenemos 8000 muestras en un segundo, entonces en 80 000 muestraspodremos almacenar 10 segundos.

    4. Qu capacidad de memoria RAM requiere almacenar 10 segundos de voz?

    Sere quieren 80 000 mutestras y (80000 muestras )*(2 bytes muestra) = 160

    kbytes

    5. Qu funcin tiene el archivo: C6713dskinit.h?. Imprima su contenido.

    Es el archivo cabezera con los prototipos de funcin. Configuraciones como seleccionar laentrada de micrfono, la ganancia de entrada etctera, son obtenidas gracias a estearchivo de cabezera.

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    9/13

    /*C6713dskinit.h Include file for C6713DSK.C */

    #include "C:\CCStudio_v3.1\MyProjects\ZSupport\arch soporte dsk\dsk6713.h"#include "C:\CCStudio_v3.1\MyProjects\ZSupport\arch soporte dsk\dsk6713_aic23.h"

    #define LEFT 1 //data structure for union of 32-bit data#define RIGHT 0 //into two 16-bit dataunion {

    Uint32 uint;short channel[2];} AIC_data;

    extern far void vectors(); //external function

    static Uint32 CODECEventId, poll;

    // This is needed to modify the BSL's data channel McBSP configuration

    // See the changes belowMCBSP_Config AIC23CfgData = {MCBSP_FMKS(SPCR, FREE, NO) |MCBSP_FMKS(SPCR, SOFT, NO) |MCBSP_FMKS(SPCR, FRST, YES) |MCBSP_FMKS(SPCR, GRST, YES) |MCBSP_FMKS(SPCR, XINTM, XRDY) |MCBSP_FMKS(SPCR, XSYNCERR, NO) |MCBSP_FMKS(SPCR, XRST, YES) |MCBSP_FMKS(SPCR, DLB, OFF) |MCBSP_FMKS(SPCR, RJUST, RZF) |MCBSP_FMKS(SPCR, CLKSTP, DISABLE) |

    MCBSP_FMKS(SPCR, DXENA, OFF) |MCBSP_FMKS(SPCR, RINTM, RRDY) |MCBSP_FMKS(SPCR, RSYNCERR, NO) |MCBSP_FMKS(SPCR, RRST, YES),

    MCBSP_FMKS(RCR, RPHASE, SINGLE) |MCBSP_FMKS(RCR, RFRLEN2, DEFAULT) |MCBSP_FMKS(RCR, RWDLEN2, DEFAULT) |MCBSP_FMKS(RCR, RCOMPAND, MSB) |MCBSP_FMKS(RCR, RFIG, NO) |MCBSP_FMKS(RCR, RDATDLY, 0BIT) |MCBSP_FMKS(RCR, RFRLEN1, OF(0)) | // This changes to 1 FRAME

    MCBSP_FMKS(RCR, RWDLEN1, 32BIT) | // This changes to 32 bits per frameMCBSP_FMKS(RCR, RWDREVRS, DISABLE),

    MCBSP_FMKS(XCR, XPHASE, SINGLE) |MCBSP_FMKS(XCR, XFRLEN2, DEFAULT) |MCBSP_FMKS(XCR, XWDLEN2, DEFAULT) |MCBSP_FMKS(XCR, XCOMPAND, MSB) |MCBSP_FMKS(XCR, XFIG, NO) |MCBSP_FMKS(XCR, XDATDLY, 0BIT) |

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    10/13

    MCBSP_FMKS(XCR, XFRLEN1, OF(0)) | // This changes to 1 FRAMEMCBSP_FMKS(XCR, XWDLEN1, 32BIT) | // This changes to 32 bits per frameMCBSP_FMKS(XCR, XWDREVRS, DISABLE),

    MCBSP_FMKS(SRGR, GSYNC, DEFAULT) |MCBSP_FMKS(SRGR, CLKSP, DEFAULT) |

    MCBSP_FMKS(SRGR, CLKSM, DEFAULT) |MCBSP_FMKS(SRGR, FSGM, DEFAULT) |MCBSP_FMKS(SRGR, FPER, DEFAULT) |MCBSP_FMKS(SRGR, FWID, DEFAULT) |MCBSP_FMKS(SRGR, CLKGDV, DEFAULT),

    MCBSP_MCR_DEFAULT,MCBSP_RCER_DEFAULT,MCBSP_XCER_DEFAULT,

    MCBSP_FMKS(PCR, XIOEN, SP) |MCBSP_FMKS(PCR, RIOEN, SP) |

    MCBSP_FMKS(PCR, FSXM, EXTERNAL) |MCBSP_FMKS(PCR, FSRM, EXTERNAL) |MCBSP_FMKS(PCR, CLKXM, INPUT) |MCBSP_FMKS(PCR, CLKRM, INPUT) |MCBSP_FMKS(PCR, CLKSSTAT, DEFAULT) |MCBSP_FMKS(PCR, DXSTAT, DEFAULT) |MCBSP_FMKS(PCR, FSXP, ACTIVEHIGH) |MCBSP_FMKS(PCR, FSRP, ACTIVEHIGH) |MCBSP_FMKS(PCR, CLKXP, FALLING) |MCBSP_FMKS(PCR, CLKRP, RISING)

    };

    DSK6713_AIC23_Config config = { \0x0017, /* Set-Up Reg 0 Left line input channel volume control */ \

    /* LRS 0 simultaneous left/right volume: disabled */\/* LIM 0 left line input mute: disabled */ \/* XX 00 reserved */ \/* LIV 10111 left line input volume: 0 dB */ \

    \0x0017, /* Set-Up Reg 1 Right line input channel volume control */ \

    /* RLS 0 simultaneous right/left volume: disabled */\/* RIM 0 right line input mute: disabled */ \/* XX 00 reserved */ \

    /* RIV 10111 right line input volume: 0 dB */ \\0x01f9, /* Set-Up Reg 2 Left channel headphone volume control */ \

    /* LRS 1 simultaneous left/right volume: enabled */ \/* LZC 1 left channel zero-cross detect: enabled */ \/* LHV 1111001 left headphone volume: 0 dB */ \

    \0x01f9, /* Set-Up Reg 3 Right channel headphone volume control */ \

    /* RLS 1 simultaneous right/left volume: enabled */ \

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    11/13

    /* RZC 1 right channel zero-cross detect: enabled */\/* RHV 1111001 right headphone volume: 0 dB */ \

    \0x0015, /* Set-Up Reg 4 Analog audio path control */ \

    /* X 0 reserved */ \/* STA 00 sidetone attenuation: -6 dB */ \

    /* STE 0 sidetone: disabled */ \/* DAC 1 DAC: selected */ \/* BYP 0 bypass: off */ \/* INSEL 0 input select for ADC: line */ \/* MICM 0 microphone mute: disabled */ \/* MICB 1 microphone boost: enabled */ \

    \0x0000, /* Set-Up Reg 5 Digital audio path control */ \

    /* XXXXX 00000 reserved */ \/* DACM 0 DAC soft mute: disabled */ \/* DEEMP 00 deemphasis control: disabled */ \/* ADCHP 0 ADC high-pass filter: disabled */ \

    \0x0000, /* Set-Up Reg 6 Power down control */ \/* X 0 reserved */ \/* OFF 0 device power: on (i.e. not off) */ \/* CLK 0 clock: on */ \/* OSC 0 oscillator: on */ \/* OUT 0 outputs: on */ \/* DAC 0 DAC: on */ \/* ADC 0 ADC: on */ \/* MIC 0 microphone: on */ \/* LINE 0 line input: on */ \

    \

    0x0043, /* Set-Up Reg 7 Digital audio interface format */ \/* XX 00 reserved */ \/* MS 1 master/slave mode: master */ \/* LRSWAP 0 DAC left/right swap: disabled */ \/* LRP 0 DAC lrp: MSB on 1st BCLK */ \/* IWL 00 input bit length: 16 bit */ \/* FOR 11 data format: DSP format */ \

    \0x0081, /* Set-Up Reg 8 Sample rate control */ \

    /* X 0 reserved */ \/* CLKOUT 1 clock output divider: 2 (MCLK/2) */ \/* CLKIN 0 clock input divider: 2 (MCLK/2) */ \

    /* SR,BOSR 00000 sampling rate: ADC 48 kHz DAC 48 kHz */ \/* USB/N 1 clock mode select (USB/normal): USB */ \\

    0x0001 /* Set-Up Reg 9 Digital interface activation */ \/* XX..X 00000000 reserved */ \/* ACT 1 active */ \

    };

    DSK6713_AIC23_CodecHandle hAIC23_handle;

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    12/13

    void c6713_dsk_init();void comm_poll();void comm_intr();void output_sample(int);void output_left_sample(short);

    void output_right_sample(short);Uint32 input_sample();short input_left_sample();short input_right_sample();

  • 8/2/2019 DSP Practica05 Uso de Memoria Externa

    13/13

    Conclusiones

    Bibliografa

    [1] Code Composer Studio IDE Getting Started Guide, User's Guide. SPRU509f.

    [2] Tratamiento digital de seales. Proakis. Manolakis

    FastRTS Library Programmers Reference