FSK Modulation/ demodulation

Started by May 30, 2005
Hi

I have to communicate with telephone which is sending us data that is
in voice band and FSK
modulated. I dont have an fsk modem so i am trying to do FSK
demodulation in software. I'll record that data in a wave file and then
analyise it. i dont have any signal processing background and i am

according to the standard:
Mark is represented by 1300Hz, space is represented by 2100Hz and baud
rate is 1200.

using tapi I are sampling the signal at 8000 samples per second, PCM
format.

It means that we have 8000/1200 = 6.66 samples to check for mark or
space

now 1300/1200 = 1.08 and 2100/1200 = 1.72

means that I have to check those 6.66 samples for 1.08 cycles or 1.72
cycles.
if the number of cycles is 1.08 it means it was a mark and if 1.72 it
means it was a space

how to do this ?
it wont be quite much of a problem if it were 6 samples to check for 1
cycle or 6 samples to check for 2 cycles. The decimal values create the
actual confusion.

For Generating Signal:
I can generate samples for signal with 1300Hz frequency with 8000
samples per second like this

F1 = 1300
For  I = 0 to 1, step 1/8000
s(i) = cos (2 * pi * F1 * I );

this generates 8000 samples for 1300Hz frequency, i.e tone 1
Samples for tone 0 can also be generated in the similar manner.
Now I want to generate signal with both tones. Let say alternating 1s
and 0s. and still I have to keep sample rate 8000. Means that I'll be
having 6.66 samples to represent one bit.

How could this be done ?

Somia.

Just off the top of my head....I would slid a six sample data window along
the length of your .wav file. In one arm find the magnitude of the
sine/cosine of (2*pi*1300*(N*1/8000)) and in the other arm the magnitude of
the sine/cosine of (2*pi*2100*(N*1/8000)). Then the arctan of both arms will
point to a mark or space.

Cheers,
Thomas

"Somia" <somia_iqbal@yahoo.com> wrote in message