Forums

implementing sine cos functions in TMS320C32

Started by karthik ramachandran February 7, 2004
hi guys ,
iam karthik . iam currently doing a project of implementing "an angle
calculating algorithm" in TMS320C32.I hv an FPGA interface part which is
complete.Now i find a problem in implementing the trignomentric functions namely
sine and cos functions .Can anyone suggest me a way to make out this cos
function implementation.I hv code composer studio 3X , but iam not able to make
out this . any help will be greatly appreciated.
regards
karthik




Hello Karthik

One of the primary problems with C-transcendentals (and indeed many
functions) is that as an ANSI-C compiler the compiler is not required to
check for C prototypes. Kind of weird, but true.

When no prototype is found, the inputs and outputs are assumed to be of type
'int'. Therefor the expression 'y=cos(x)' would be interpreted as, convert
X to an integer, pass it to the function _cos and expect an integer return
value. If it is any consolation the compiler will let you know if a
function being called does not match a previosuly defined prototype.

As for the specific error numbers -2154, -2140, I dont know these, but the
hotline may know there meaning (I am not the hotline).

Usual suspects in this case will be that you have tried to load the program
to an improper or non-existent memory location in which case you would want
to change the linker command file. Another would be that, if this were a
runtime error, that the stack has overflowed.

Possibly of interest
--------------------
If the cos() function is being used to compute successive values of cosine
like cos(n), cos(2n), cos(3n)... it may be best to compute a rotating phasor.

static float Wr = 1; // signal as R/I phasor
static float Wi = 0;

void set_freq(float W)
{
Wr = cos(W);
Wi = sin(W);
}

float siggen(void)
{
static float Sr = 1; // signal as R/I phasor
static float Si = 0;
float f;
f = (Sr * Wr) - (Si * Wi);
Is = (Si * Wr) + (Sr * Wi);
Rs = f;
f = 1.5 - 0.5*((Sr*Sr)+(Si*Si));
Sr *= f;
Ir *= f;
return Sr;
}

Hope this helps,
Keith Larson
====================================

At 03:28 PM 2/7/04 +0000, you wrote:
hi guys ,
iam karthik . iam currently doing a project of implementing "an angle
calculating algorithm" in TMS320C32.I hv an FPGA interface part which is
complete.Now i find a problem in implementing the trignomentric functions
namely sine and cos functions .Can anyone suggest me a way to make out this
cos function implementation.I hv code composer studio 3X , but iam not able
to make out this . any help will be greatly appreciated.

regards
karthik

+--------------------------+
| Keith Larson |
| Member Group Technical Staff |
| Texas Instruments Incorporated |
| |
| 281-274-3288 |
| |
| www.micro.ti.com/~klarson (TI internal web only) |
|--------------------------+
| TMS320C3x/C4x/VC33 Applications |
| |
| TMS320VC33 |
| The lowest cost and lowest power 500 w/Mflop |
| floating point DSP on the planet! |
| |
| Web: focus.ti.com/docs/toolsw/folders/print/tmdsdsk33.html |
| Code: www-s.ti.com/sc/psheets/sprc147/sprc147.zip |
+--------------------------+