diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2018-01-21 19:46:42 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2018-01-21 19:46:42 +0000 |
commit | 921fd2865e785c53e3167f4588055c5a84d58b5a (patch) | |
tree | ccb01076119829e069fc1e677f1082e49134d1f1 /lab2 | |
parent | 4a9500af0549cf544c608c1dde7dd92f86f00c5c (diff) | |
download | NoiseSilencer-921fd2865e785c53e3167f4588055c5a84d58b5a.tar.gz NoiseSilencer-921fd2865e785c53e3167f4588055c5a84d58b5a.zip |
Cleaning files
Diffstat (limited to 'lab2')
-rw-r--r-- | lab2/RTDSP/sine.c | 141 |
1 files changed, 67 insertions, 74 deletions
diff --git a/lab2/RTDSP/sine.c b/lab2/RTDSP/sine.c index aa2653e..561ca0c 100644 --- a/lab2/RTDSP/sine.c +++ b/lab2/RTDSP/sine.c @@ -1,33 +1,33 @@ /************************************************************************************* - DEPARTMENT OF ELECTRICAL AND ELECTRONIC ENGINEERING - IMPERIAL COLLEGE LONDON + DEPARTMENT OF ELECTRICAL AND ELECTRONIC ENGINEERING + IMPERIAL COLLEGE LONDON - EE 3.19: Real Time Digital Signal Processing - Dr Paul Mitcheson and Daniel Harvey + EE 3.19: Real Time Digital Signal Processing + Dr Paul Mitcheson and Daniel Harvey - LAB 2: Learning C and Sinewave Generation + LAB 2: Learning C and Sinewave Generation - ********* S I N E . C ********** + ********* S I N E . C ********** - Demonstrates outputing data from the DSK's audio port. - Used for extending knowledge of C and using look up tables. + Demonstrates outputing data from the DSK's audio port. + Used for extending knowledge of C and using look up tables. ************************************************************************************* - Updated for use on 6713 DSK by Danny Harvey: May-Aug 06/Dec 07/Oct 09 - CCS V4 updates Sept 10 + Updated for use on 6713 DSK by Danny Harvey: May-Aug 06/Dec 07/Oct 09 + CCS V4 updates Sept 10 ************************************************************************************/ /* * Initialy this example uses the AIC23 codec module of the 6713 DSK Board Support - * Library to generate a 1KHz sine wave using a simple digital filter. - * You should modify the code to generate a sine of variable frequency. + * Library to generate a 1KHz sine wave using a simple digital filter. + * You should modify the code to generate a sine of variable frequency. */ /**************************** Pre-processor statements ******************************/ -// Included so program can make use of DSP/BIOS configuration tool. +// Included so program can make use of DSP/BIOS configuration tool. #include "dsp_bios_cfg.h" -/* The file dsk6713.h must be included in every program that uses the BSL. This - example also includes dsk6713_aic23.h because it uses the +/* The file dsk6713.h must be included in every program that uses the BSL. This + example also includes dsk6713_aic23.h because it uses the AIC23 codec module (audio interface). */ #include "dsk6713.h" #include "dsk6713_aic23.h" @@ -39,7 +39,7 @@ #include "helper_functions_polling.h" -// PI defined here for use in your code +// PI defined here for use in your code #define PI 3.141592653589793 // Contains the size of the sine table @@ -49,12 +49,12 @@ /******************************* Global declarations ********************************/ -/* Audio port configuration settings: these values set registers in the AIC23 audio +/* Audio port configuration settings: these values set registers in the AIC23 audio interface to configure it. See TI doc SLWS106D 3-3 to 3-10 for more info. */ DSK6713_AIC23_Config Config = { \ - /**********************************************************************/ - /* REGISTER FUNCTION SETTINGS */ - /**********************************************************************/\ + /**********************************************************************/ + /* REGISTER FUNCTION SETTINGS */ + /**********************************************************************/\ 0x0017, /* 0 LEFTINVOL Left line input channel volume 0dB */\ 0x0017, /* 1 RIGHTINVOL Right line input channel volume 0dB */\ 0x01f9, /* 2 LEFTHPVOL Left channel headphone volume 0dB */\ @@ -65,27 +65,27 @@ DSK6713_AIC23_Config Config = { \ 0x004f, /* 7 DIGIF Digital audio interface format 32 bit */\ 0x008d, /* 8 SAMPLERATE Sample rate control 8 KHZ */\ 0x0001 /* 9 DIGACT Digital interface activation On */\ - /**********************************************************************/ + /**********************************************************************/ }; -// Codec handle:- a variable used to identify audio interface +// Codec handle:- a variable used to identify audio interface DSK6713_AIC23_CodecHandle H_Codec; /* Sampling frequency in HZ. Must only be set to 8000, 16000, 24000 -32000, 44100 (CD standard), 48000 or 96000 */ +32000, 44100 (CD standard), 48000 or 96000 */ int sampling_freq = 16000; -// Array of data used by sinegen to generate sine. These are the initial values. +// Array of data used by sinegen to generate sine. These are the initial values. float y[3] = {0,0,0}; float x[1] = {1}; // impulse to start filter float a0 = 1.4142; // coefficients for difference equation float b0 = 0.707; -// Holds the value of the current sample -float sample; +// Holds the value of the current sample +float sample; /* Left and right audio channel gain values, calculated to be less than signed 32 bit maximum value. */ @@ -93,7 +93,7 @@ Int32 L_Gain = 2100000000; Int32 R_Gain = 2100000000; -/* Use this variable in your code to set the frequency of your sine wave +/* Use this variable in your code to set the frequency of your sine wave be carefull that you do not set it above the current nyquist frequency! */ float sine_freq = 1000.0; @@ -103,7 +103,7 @@ float table[SINE_TABLE_SIZE]; // Current index in the table, that can be used to calculate the next index int sine_index = 0; - + /******************************* Function prototypes ********************************/ void init_hardware(void); void sine_init(void); @@ -112,79 +112,72 @@ float sinegen(void); void main() { - // initialize board and the audio port - init_hardware(); - - // Initialize the sine table - sine_init(); - - // Loop endlessley generating a sine wave + // initialize board and the audio port + init_hardware(); + + // Initialize the sine table + sine_init(); + + // Loop endlessley generating a sine wave while(1) { - // Calculate next sample - sample = sinegen(); - - /* Send a sample to the audio port if it is ready to transmit. + // Calculate next sample + sample = sinegen(); + + /* Send a sample to the audio port if it is ready to transmit. Note: DSK6713_AIC23_write() returns false if the port if is not ready */ // send to LEFT channel (poll until ready) while (!DSK6713_AIC23_write(H_Codec, ((Int32)(sample * L_Gain)))) {}; - // send same sample to RIGHT channel (poll until ready) + + // send same sample to RIGHT channel (poll until ready) while (!DSK6713_AIC23_write(H_Codec, ((Int32)(sample * R_Gain)))) {}; - - // Set the sampling frequency. This function updates the frequency only if it - // has changed. Frequency set must be one of the supported sampling freq. - set_samp_freq(&sampling_freq, Config, &H_Codec); - - } + // Set the sampling frequency. This function updates the frequency only if it + // has changed. Frequency set must be one of the supported sampling freq. + set_samp_freq(&sampling_freq, Config, &H_Codec); + } } /******************************* init_hardware() ************************************/ void init_hardware() { - // Initialize the board support library, must be called first + // Initialize the board support library, must be called first DSK6713_init(); - - // Start the codec using the settings defined above in config + + // Start the codec using the settings defined above in config H_Codec = DSK6713_AIC23_openCodec(0, &Config); - /* Defines number of bits in word used by MSBSP for communications with AIC23 - NOTE: this must match the bit resolution set in in the AIC23 */ - MCBSP_FSETS(XCR1, XWDLEN1, 32BIT); - - /* Set the sampling frequency of the audio port. Must only be set to a supported - frequency (8000/16000/24000/32000/44100/48000/96000) */ - - DSK6713_AIC23_setFreq(H_Codec, get_sampling_handle(&sampling_freq)); + /* Defines number of bits in word used by MSBSP for communications with AIC23 + NOTE: this must match the bit resolution set in in the AIC23 */ + MCBSP_FSETS(XCR1, XWDLEN1, 32BIT); + /* Set the sampling frequency of the audio port. Must only be set to a supported + frequency (8000/16000/24000/32000/44100/48000/96000) */ + DSK6713_AIC23_setFreq(H_Codec, get_sampling_handle(&sampling_freq)); } -/******************************* sin_init() ************************************/ +/******************************* sin_init() *****************************************/ void sine_init() { - int i; - for(i = 0; i < SINE_TABLE_SIZE; i++) - { - table[i] = sin(2 * PI * i / SINE_TABLE_SIZE); - } + int i; + for(i = 0; i < SINE_TABLE_SIZE; i++) + { + table[i] = sin(2 * PI * i / SINE_TABLE_SIZE); + } } -/********************************** sinegen() ***************************************/ +/********************************** sinegen() ***************************************/ float sinegen(void) { - // temporary variable used to output values from function - float wave; - - wave = table[(int)((sine_freq / (float)sampling_freq) * (float)SINE_TABLE_SIZE * sine_index) % SINE_TABLE_SIZE]; - - sine_index++; - - return(wave); - -} + // temporary variable used to output values from function + float wave; + wave = table[(int)((sine_freq / (float)sampling_freq) * (float)SINE_TABLE_SIZE * sine_index) % SINE_TABLE_SIZE]; + sine_index++; + return wave; +} |