Forums

FSK Modulation/ demodulation

Started by Somia 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
stuck in this problem. please help

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 ?
 
Thanks in advance.
 
Somia.

Somia wrote:
> 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 > stuck in this problem. please help > > 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 ? > > Thanks in advance. > > Somia.
If you can get hold of a ROM listing for a TRS-80 (8080) or AIM-65 (6502) or even a very early IBM PC (8085), the code you want will be in the tape interface section. In all cases, frequency was detected by timing zero crossings. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������