[Lowfer] BPSK31

Ed Phillips [email protected]
Sun, 01 Jun 2003 16:56:04 -0700


Stewart Nelson wrote:
> 
> Hi Ed,
> 
> > How do you generate the wave file?
> 
> Sound card programming in Windows is difficult.  One approach
> is to modify an existing open source program.  You keep its
> existing logic and just change the data that it is sending.
> 
> Another way, suitable for a beacon, is to write a disk file
> and use a utility, e.g. Cool Edit or even Media Player,
> to play it repeatedly.  A .wav file has some header information
> followed by the samples.  You can find documentation on the Web,
> or copy the header from another file with the same number of
> channels, sample size, sample rate, and length.  Alternatively,
> you can write a file with just the samples and convert it with
> Cool Edit or similar, or play it with a tool that can handle
> raw PCM data.
> 
> > and how do you arrange the L & R to be in quadrature?
> 
> This is not an easy question.  For Lowfer purposes, it is
> probably adequate to just delay the second channel by 1/4 of
> the nominal carrier period.  This is easy if you arrange the
> carrier period to be an integral multiple of four times the
> sample rate.  E.g. if you generate 1 kHz tone at 8000 samples
> per second, just delay the second channel by two samples.
> 
> For more accurate results, implement the digital equivalent
> of your favorite analog phase shift network.
> 
> For a precise solution, Google for "Hilbert Transformer".
> 
> > Another question.  Is the PC timing accurate enough for the
> > various BPSK modes without trying to use an external clock
> > as well?
> 
> Absolutely.  Even a 1% error in bit rate should not noticeably
> degrade most receive software.  The problem is that a normal
> user program in Windows suffers large variations in timing,
> because the system is running other tasks.  One solution is to
> write an interrupt-based driver.  Another is to use an output
> device (serial port or sound card) that is buffered and
> supplies its own timing.
> 
> > I've gotten as far as writing a program which will generate
> > the varicode for the various characters and output it from
> > the serial port but have never been sure about the timing accuracy.
> 
> Sending the varicode directly will not work, because the UART
> inserts "start" and "stop" bits over which you have no control.
> But sending at a high baud rate, with multiple characters for
> each bit, as described in my earlier message, should be ok.
> The algorithm suggested has an inherent error of about 0.1%;
> there may be another 0.1% error caused by the crystal driving
> the baud rate generator.  This is well within the tolerance of
> any PSK31 receiver.
> 
> > Are you saying that the present sound-card programs can
> > generate that high an audio frequency?
> 
> Sorry, I don't know.  If you find one, consider yourself
> lucky.  However, there are implementations with freely
> available source code.  It should not be hard to modify the
> sample rate and carrier frequency.
> 
> Another possibility (for a beacon) is to record the output
> of your PSK31 program, and use Cool Edit or similar software
> to increase the sample rate and shift the signal up in
> frequency.  Then play that result back repeatedly.
> 
> 73,
> 
> Stewart KK7KA

Stewart:

	You've given me quite a bit to think about.  Will probably get back to
you with more questions.  

Thanks,

Ed