Return to KLUBNL.PL main page

[Top] [All Lists]

LF: Generate MSK .WAV files

To: [email protected]
Subject: LF: Generate MSK .WAV files
From: Bill de Carle <[email protected]>
Date: Sun, 12 Dec 2004 16:33:45 -0500
In-reply-to: <[email protected]>
References: <[email protected]> <[email protected]>
Reply-to: [email protected]
Sender: [email protected]
At 02:02 PM 12/12/2004 +0100, WOLF wrote:
Talking about "digimode" beacons... Do you use a DDS for the frequency generation, and -if so- does the DDS have TWO frequency registers which can be toggled via control pin (some chips have this option) ? If so, it would be great to have a low-symbol-rate MSK test signal on air...
Another way to do this is to use a linear Tx and an audio beacon message
generated by a sound card.

I just put up on my website a simple-minded program which lets you type in
a short message to be sent out as MSK.  The program can generate 16-bit
audio files (preferably at 8200 or 8000 samples per second) in either the
usual format I use around here (.AUD), or the more standard .WAV format.
These files can be looped using COOL EDIT or some other program.  When
played back in loop mode, the resulting MSK waveform is phase-continuous.

I have MSK sorta working now in AFRICAM 5.0 - still need to clean up a few
details.  Although it works with GPS-disciplined bit and frame sync, I have
to add a way to track the bit edges without GPS.  The already existing frame
sync in AFRICAM works well with MSK because I basically use ET1 coding
(16-bit frames) in the non-differential PSKL format.  I'll put AFRICAM 5.0
up on my website after we have finished testing it.  AFRICAM has an output
(RTS) pin which can be used to generate MSK messages if you have one of
those DDS synthesizers with two frequency registers.  You can also use the
AD9851 (only 1 phase increment register but it has a separate input reg)
if you pre-load the next frequency (anticipating that the next frequency
to be generated will be the "other" MSK frequency, not the one that is
currently being transmitted) - then carefully synchronize the loading of
the input register into the phase increment register once RTS toggles.
At low clock rates, you have tons of time to do it cleanly - one way is
to generate the rising edge needed (FQ_UP) on a *falling* edge of SYSCLK,
then clear it on the next rising edge of SYSCLK.

To be compatible with AFRICAM, transmit the higher of the two MSK frequencies
when RTS is asserted (positive), the lower signal otherwise.

The RTS output from AFRICAM is not perfectly synchronized with the clock
on your DDS board, so the MSK signal won't be suitable for coherent
demodulation, but AFRICAM will be able to decode it as FSK.  Performance
not great, but bandwidth much less than BPSK.  I'll see about doing a
coherent demodulation of MSK in a later version.

You can get the MSKGEN program from my website at:

Unzip it and see the READ.MSK file for more info.

Bill VE2IQ

<Prev in Thread] Current Thread [Next in Thread>