Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

DSP project problem

Status
Not open for further replies.

strikefreedom

New Member
i need to design a AM-SSB using code composer studio

The AM coding is under the rulph chassing dsp book , problem is how to make it to SSB..

Can Anyone help me ...

please

( if u need the AM coding , i will upload it )
 
In functional notation, you can perform the functions shown in the attached image. The AM signal is input on the left, and the AM-SSB signal is output on the right.


87460013117177426.gif
 
thank...
This is phasing method...
My project need to use the filter method , apply the lowpass filter coding to the AM coding...



This is the AM coding.....I already try to put the lowpass filter coding into it but still have error ...so need some help in here
//AM.c

#include "DSK6713_AIC23.h" //codec-dsk support file
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //set sampling rate
short amp = 1; //index for modulation

void main()
{
short baseband[20]={1000,951,809,587,309,0,-309,-587,-809,-951,
-1000,-951,-809,-587,-309,0,309,587,809,951}; //400-Hz baseband
short carrier[20] ={1000,0,-1000,0,1000,0,-1000,0,1000,0,
-1000,0,1000,0,-1000,0,1000,0,-1000,0}; //2-kHz carrier
short output[20];
short k;

comm_poll(); //init DSK, codec, McBSP
while(1) //infinite loop
{
for (k=0; k<20; k++)
{
output[k]= carrier[k] + ((amp*baseband[k]*carrier[k]/10)>>12);
output_sample(20*output[k]); //scale output
}
}
}
 
See: output[k]= carrier[k] + ((amp*baseband[k]*carrier[k]/10)>>12);

I don't understand why you have the carrier[k] term added in the beginning. To use the filter method you start with a double sideband suppressed carrier signal which is the modulating signal (baseband) multiplied by the carrier signal (carrier) with no DC offset, which is what it looks like you have there on the right side, alone. Then you apply the filter to extract one of the two sidebands.
 
Last edited:
ok.Thank...
then is output[k]=((amp*baseband[k]*carrier[k]/10)>>12);
and apply the filter code ???

Can u guide me to apply the filter code . Please and Thank
Because i apply this filter code and the coef file , but there still have a error

.
.
.
interrupt void c_int11() //ISR
{
short i;

dly[0] = input_sample(); //new input @ beginning of buffer
yn = 0; //initialize filter's output
for (i = 0; i< N; i++)
yn += (h * dly); //y(n) += h(i)* x(n-i)
for (i = N-1; i > 0; i--) //starting @ end of buffer
dly = dly[i-1]; //update delays with data move

output_sample(yn >> 15); //scale output filter
return;
}

void main()
{
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}
 
then is output[k]=((amp*baseband[k]*carrier[k]/10)>>12);
and apply the filter code ???

Yes, though I have to assume you are dividing by 10 for scaling, and I don't know enough about your code language to understand the >>12.


Can u guide me to apply the filter code . Please and Thank
Because i apply this filter code and the coef file , but there still have a error

I don't know enough about your code language to verify your filter code. I can tell you that you need to make the filter to pass either 2400 Hz, or 1600 Hz (given your carrier of 2000 Hz and modulating signal of 400 Hz), depending on which sideband you choose to extract, and bandwidth of the filter should reject the other sideband.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top