393 lines
19 KiB
Plaintext
393 lines
19 KiB
Plaintext
Documentaion for SBDSP - SoundBlaster APT Demodulation Program
|
||
|
||
This program and documentation are the property of the Dallas Remote Imaging
|
||
Group (BBS 214 394 7438). If it is used on other systems, this copyright
|
||
notice must be kept in this documentation. This program may NOT be sold or
|
||
marketed in any form. All rights are reserved by the Dallas Remote Imaging
|
||
Group (1992).
|
||
Dallas Remote Imaging Group
|
||
PO BOX 117088
|
||
Carrollton, Texas 75011-7088
|
||
BBS 214-394-7438
|
||
FAX 214-492-7747
|
||
Rev DRG5193Beta
|
||
|
||
----------------------------
|
||
|
||
Introduction:
|
||
|
||
The SoundBlaster and SoundBlaster Pro audio I/O cards from Creative
|
||
Labs, Inc. are very popular accessories found in many IBM PC compatible
|
||
computer systems. Although the boards are usually used only to provide
|
||
music and sound output for computer games, they also support audio input
|
||
into the computer. The standard SoundBlaster supports mono audio I/O
|
||
and is available in the $100 price range. The Pro model supports stereo
|
||
and adds a CD/ROM (SCSI) interface. It costs around $250 dollars.
|
||
|
||
The boards can digitize sound at high speed and, using one of the
|
||
computer's DMA (direct memory access) channels, transfer the sound
|
||
samples directly into computer memory. Once in memory the sound samples
|
||
are written to disk. It is this ability to digitize and record sound
|
||
that enables the SoundBlasters to be used for the reception and decoding
|
||
of APT satellite signals.
|
||
|
||
The output of a radio receiver tuned to an APT signal is just a 2400 Hz
|
||
audio tone. As the satellite scans the earth and clouds, it varies the
|
||
amplitude of the tone in proportion the the brightness of the area that
|
||
it is currently observing.
|
||
|
||
-------
|
||
What it does:
|
||
|
||
|
||
If you viewed the contents of the .VOC sample file produced by the
|
||
SoundBlaster VREC program with your favorite image processing program,
|
||
it would not look at all like a weather satellite photo. The .VOC file
|
||
is like an exposed roll of film. Its contents must first be "developed"
|
||
before you can view the image. The process of "devloping" the .VOC
|
||
file contents into a weather satellite image is called DEMODULATION.
|
||
|
||
Demodulation converts the recorded values of the samples of the 2400 Hz
|
||
APT sine wave into their corresponding pixel values. The desired image
|
||
pixel values actually represent the amplitude of each peak in the
|
||
APT sine wave signal.
|
||
|
||
Signal sampling theory states that if you are to do anything meaningful
|
||
with a digitally sampled signal then you must sample the signal at least
|
||
twice as fast as the highest frequency component of the signal. The
|
||
2400 Hz APT signal needs to be sampled at least 4800 times a second.
|
||
Because the APT signal is not a constant tone, it has freqency
|
||
components much beyind 2400 Hz. Also the laws of thermodynamics (and
|
||
life) say that nothing is perfect as theory predicts and you really need
|
||
to sample at a higher rate.
|
||
|
||
If we sample the APT signal at exactly 4 times its 2400 Hz
|
||
carrier frequency (i.e at 9600 samples per second), each input sample
|
||
will be eactly 90 degrees (360/4) in phase apart from its adjacent
|
||
samples. Using the following trigonometry identities it turns out to be
|
||
particularly easy to accurately demodulate the APT samples:
|
||
|
||
cos(x) = sin(90-x)
|
||
sin(x)*sin(x) + cos(x)*cos(x) = 1
|
||
|
||
By substituting the first equation into the last equation we get:
|
||
|
||
sin(x)*sin(x) + sin(90-x)*sin(90-x) = 1
|
||
|
||
Because each recorded sample of the 2400 Hz APT sine wave is 90
|
||
degrees apart from the next sample we can calculate the pixel value as:
|
||
|
||
pixel = sqrt((sample[t]*sample[t]) + (sample[t-1]*sample[t-1]))
|
||
|
||
The demodulation program just needs to read the .VOC sample file, throw
|
||
away the file header information, adjust the samples for clock/DMA
|
||
rate errors and DC offsets, calculate the pixel values from adjacent
|
||
pairs of sample values, scale the results to values from 0 to 255, and
|
||
finally write the resulting pixel values to the image file.
|
||
|
||
This could be a very time consuming process when you consider that a
|
||
typical 14 minute capture has about 8 million input samples and that
|
||
multiples, adds, and square roots are all operations that take lots
|
||
of CPU time. This is particularly true if floating point arithmetic is
|
||
used.
|
||
|
||
To make the demodulation program run very quickly a table of all 65536
|
||
possible combinations of adjacent 8-bit sample values is pre-computed
|
||
according to the above formula. All the demodulation software then has
|
||
to do in order to convert the recorded APT samples into their pixel
|
||
values is look up the proper table entry. No time consuming floating
|
||
point arithmetic need be used once the demodulator table has been built.
|
||
|
||
Reading and writing 8 megabyte files is always a time consuming process.
|
||
By always reading and writing the sample and image files in multiples of
|
||
512 bytes, the demodulation software takes full advantage of the
|
||
behavior of the DOS file system.
|
||
|
||
|
||
-------
|
||
Problems, problems, problems:
|
||
|
||
|
||
Although the SoundBlaster is quite good at adding a little zip to the
|
||
odd computer game, it is far from being a precision signal processing
|
||
system. Using the SoundBlaster card for APT reception presents many
|
||
problems. Fortunately software techniques may be used to overcome
|
||
the problems and yield APT images that rival the best commercial
|
||
systems.
|
||
|
||
Using the SoundBlaster for APT demodulation presents two main types
|
||
of problems:
|
||
1) Sample inaccuacies and offsets
|
||
2) Clock rate and missing sample errors
|
||
|
||
|
||
|
||
Sampling a perfect sine wave with a perfect board in a perfect world
|
||
should yield a series of samples with an average sample value of zero.
|
||
Unfortunately the SoundBlaster circuitry usually adds a small DC offset
|
||
to the recorded sample values. This DC offset can cause noise and
|
||
"beat" patterns to appear in the demodulated image file.
|
||
|
||
To remove the effects of any DC offset in the sample values, the
|
||
demodulation software calculates the average sample value in each block
|
||
of input samples. This sample bias is then subtracted from each input
|
||
sample.
|
||
|
||
The demodulation program is currently a bit paranoid about things and
|
||
re-calculates the sample bias for each input block. It would be a
|
||
bit faster to calculate the value for only the first block. If the
|
||
input level to the SoundBlaster board is properly adjusted, the sample
|
||
value offset does not seem to change between blocks.
|
||
|
||
|
||
|
||
For easy demodulation of the APT signal we need to sample at 9600
|
||
samples per second. If the resulting image is to be properly
|
||
synchronized to the satellite data this needs to be EXACTLY 9600 samples
|
||
per second. PRECISELY EXACTLY 9600 samples per second. How exact?
|
||
A typical fourteen minute satellite pass requires an accuracy of around
|
||
one part per 10 million... 9600.0000 samples per second.
|
||
|
||
Typically a satellite scans one line of pixels every 1/2 second (120
|
||
lines per minute). At a sample rate of 9600 samples per second, a 14
|
||
minute satellite pass generates about 8 megabytes of data. If the
|
||
sample clock rate is only accurate to a mere one part per million, the
|
||
resulting image will be skewed 8 pixels from top to bottom. Although 8
|
||
pixels of skew across of screen of 4800 pixel lines is only about a .1
|
||
percent skew, it is noticeable if you are looking for it or are wanting
|
||
to do some quantitative analysis of the satellite orbit from the doppler
|
||
bow.
|
||
|
||
How accurate is the SoundBlaster clock you ask? It turns out the
|
||
closest that you can set the sample rate is around 9620 samples per
|
||
second... an accuracy of around one part in a few hundred... not even
|
||
close. To make matters worse the clocks on any two SoundBlaster boards
|
||
can easily differ by parts per thousand. Clock errors of this magnitude
|
||
cause the image to appear like a TV set that has lost sync. The image
|
||
is an unreadable mess of slanted bars.
|
||
|
||
The DMA circuitry on the SoundBlaster boards can automatically transfer
|
||
blocks of up to 32768 signal samples into the computer's memory without
|
||
using any CPU time. Once a block of samples has been DMAed into memory,
|
||
the recording software starts DMAing the next block of samples into
|
||
another memory area. While the second block of samples is being
|
||
received, the recording software writes the first block to the
|
||
computer's hard disk. The process alternates in a ping-pong fashion
|
||
between reading samples into one buffer while writing the other buffer's
|
||
data to disk.
|
||
|
||
Unfortunately a few signal samples are lost in the time between the end
|
||
of one DMA block and the startup of the next DMA block. To make matters
|
||
worse the number of samples lost depends on the computer system's CPU
|
||
type and clock rate. Faster systems loose fewer pixels between blocks.
|
||
Also number of pixels lost seems to depend upon whether the block is an
|
||
ODD or EVEN numbered block.
|
||
|
||
Fortunately it is possible to compensate for the errors in the clock
|
||
rate and the samples lost between DMA blocks. The demodulation program
|
||
compensates for the pixels lost betwwen DMA blocks by duplicating the
|
||
last few samples of each DMA block. The user can independently specify
|
||
the number of samples to add to (or even remove from) the odd and even
|
||
numbered DMA blocks with the /O and /E command line parameters.
|
||
|
||
The sample clock rate error is compensated for in two stages. The first
|
||
stage is the coarse adjustment factor. This factor causes every n'th
|
||
input sample to be removed (or duplicated). By throwing away
|
||
every 601'st sample, the 9620 samples per second that the SoundBlaster
|
||
produces is cut down to ABOUT 9600 samples per second. The coarse
|
||
adjustment factor can be changed by using the /C command line parameter.
|
||
|
||
The second clock rate adjustment factor is the fine tuning factor. It
|
||
is used to zero in the exact timing value. It adjusts out any
|
||
residual skew in the image caused by variations in individual
|
||
SoundBlaster board clock generators. The fine adjustment factor
|
||
works just like the coarse adjustment factor. It causes every n'th
|
||
input sample to be removed (or duplicated). It may be specified with
|
||
the /F command line parameter.
|
||
|
||
|
||
-----------------------------
|
||
Doing it:
|
||
|
||
|
||
The first step is to connect your satellite receiver to the microphone
|
||
input of the SoundBlaster. You must be very careful to set the
|
||
amplitude of the receiver output low enough so that it does not
|
||
overdrive the SoundBlaster. If you overdrive the card its automatic
|
||
gain control (AGC) circuitry will attempt to compensate. This will
|
||
cause streaking in the resulting images.
|
||
|
||
To properly set the receiver level use the VEDIT2 program supplied with
|
||
the SoundBlaster card. Select the SCAN INPUT item from the RECORD menu.
|
||
This will show a graphical representation of the input signal. While
|
||
monitoring a good satellite pass adjust the receiver level until none of
|
||
the signal peaks touch the top or bottom margins of the graph. Leave a
|
||
little safety margin (1/8 inch) just to be safe.
|
||
|
||
|
||
Once the receiver level has been set, the next step is to record a
|
||
satellite pass to disk. This is done with the VREC program supplied
|
||
with the SoundBlaster card.
|
||
|
||
For the SoundBlaster Pro use the command:
|
||
vrec c:cap /a:mic /m:mono /f:low /s:9620 /l:15 /t:840
|
||
|
||
where:
|
||
c:cap - is the name of the file that you want to write the samples.
|
||
Remember the sample file will be quite large. Around 600 Kb
|
||
per minute of recording. In this case the samples will be
|
||
written to the file C:\CAP.VOC
|
||
|
||
/a:mic - selects the MICROPHONE input.
|
||
|
||
/m:mono - selects MONO recording.
|
||
|
||
/f:low - sets the LOWPASS recording filter.
|
||
|
||
/s:9620 - sets the recording sample rate to 9620 samples per second.
|
||
Note the if you ask for values less that /S:9619 the VREC
|
||
program rounds the value down to around 9500 samples per
|
||
second. /S:9620 is the smallest value that actually
|
||
selects a sample clock greater than 9600 Hz.
|
||
|
||
/l:15 - sets the microphone level to full open. Use the receiver
|
||
output level control to adjust the recording level.
|
||
(I don't think this is what this does or is necessary
|
||
any more. It is left over from early attempts to get
|
||
rid of hum in the image caused by a bad cable)
|
||
|
||
/t:840 - says to record for 840 seconds (14 minutes). This value
|
||
can be adjusted to whatever length is desired.
|
||
|
||
|
||
After a satellite pass has been recorded and written to disk as a .VOC
|
||
sound sample file, the next step is to demodulate the .VOC sample file
|
||
into an image file. Use the command:
|
||
|
||
sbdsp c:cap.voc c:cap.img
|
||
|
||
This will read the recorded sample file C:CAP.VOC and write the
|
||
resulting image to the file C:CAP.IMG (remember that these files will
|
||
be about 8 Megabytes EACH). If you do not specify the output file name,
|
||
the demodulation program will ask if it is OK to write the output image
|
||
over the data in the .VOC file. This is a VERY time consuming process,
|
||
but can be useful if you are short on disk space. Note that if you
|
||
choose to overwrite the input data file, you cannot experiment with the
|
||
various timing adjustments or interrupt the demodulation program.
|
||
|
||
|
||
Once the input file has been demodulated you can use your favorite
|
||
image processing program (such as IMDISP, APTCAP, or SATVIEW) to view
|
||
the resulting image. The file written by the demodulation program is
|
||
raw binary 8-bit gray scale image. Each line is 4800 pixels wide. A 14
|
||
minute pass has 1680 scan lines. (Because of the timing adjustments, etc
|
||
the output image may be short a few lines).
|
||
|
||
---
|
||
Tweaking in the timing:
|
||
|
||
What you should see is the APT image complete with the normal "doppler
|
||
bow" curve. The curve in the image is due the speed of light. Since
|
||
light travels at 186,000 miles per second, each pixel of image shift in
|
||
the doppler bow (1/9600 of a second) represents about 19.4 miles of
|
||
satellite movement relative to the receiver.
|
||
|
||
As the satellite approaches the receiver the radio signal has to travel
|
||
less and less distance to reach the receiver. As the satellite moves
|
||
away the radio signal takes longer and longer to reach the receiver.
|
||
The point in the doppler bow where the curve changes slope
|
||
is the closest point of approach of the satellite pass.
|
||
|
||
In a properly adjusted image, the shape of the doppler bow curve
|
||
should appear symmetrical about the closest point of satellite approach.
|
||
If the image is slanted more towards the left or right, or appears like
|
||
a TV image that has lost sync then you will need to adjust one or
|
||
more of the timing adjustment factors.
|
||
|
||
(For further information, contact the software developers at:
|
||
Dallas Remote Imaging Group BBS - 214-394-7438 FAX 214 492 7747
|
||
Usually only the fine timing adjustment (/F) needs to be set. To get an
|
||
idea of the magnitude of the adjustment needed, count or estimate the
|
||
number of pixels that the image slants. (Hint: use the pan and zoom
|
||
features of your image display program. If your display program
|
||
re-sizes the image to fit the screen, remember to count pixels in the
|
||
FILE, not those on the screen). Divide the total file size by the
|
||
number of pixels that the image slants from top to bottom.
|
||
|
||
adjustment factor = (file size / pixels of image slant)
|
||
|
||
The more the severe image slant is, the SMALLER the timing adjustment
|
||
factor value. Subtle image slants are typically corrected with large
|
||
valued adjustment factors (say 50,000 - 500,000). Adjustment factors in
|
||
the thousands would be used for images that slant a good portion of the
|
||
width of the screen. Even more severe slants first should be corrected
|
||
by tweaking the /C (coarse) timing adjustment.
|
||
|
||
Images that slant to the left use a positive adjustment count.
|
||
Images that slant to the right use a negative adjustment count.
|
||
|
||
->| |<- estimate the number of pixels of image slant
|
||
| |
|
||
| ---------- ----------
|
||
| / / \ \
|
||
| / image / \ image \
|
||
| / / \ \
|
||
| ---------- -----------
|
||
Use /F+value Use /F-value
|
||
|
||
|
||
The loss of pixels between DMA sample blocks shows up as small
|
||
periodic jags in the image of a pixel or so every 6-8 scan lines.
|
||
Experiment with the /O and /E command line options may be to minimize
|
||
these remaining jaggies. For these options, larger values produce
|
||
greater effect. The maximum DMA adjustment factor possible is +/- 255.
|
||
Only + values should be needed here. The software supports - values
|
||
just in case...
|
||
|
||
|
||
The image may look OK except for one or more large and sudden shifts or
|
||
discontinuities. These shifts usually occur on systems with slower hard
|
||
drives or CPU's. The cause is usually the excessive time it takes DOS
|
||
to extend or otherwise allocate disk space as it writes the .VOC file.
|
||
If this occurs in your images, it can usually be fixed by recording the
|
||
sample file to a freshly "defragmented" disk. Use a disk optimizer
|
||
program like Norton Utilities or PC Tools to pack the sample file hard
|
||
disk drive before running the VREC recording program.
|
||
|
||
|
||
Once the proper timing adjustment factors have been determined for a
|
||
particular computer, they should not need to be changed (except possibly
|
||
for a drift in the SoundBlaster sample clock rate with temperature).
|
||
A batch file can be created that will automatically use the appropriate
|
||
timing factors.
|
||
|
||
--------
|
||
Development team at:
|
||
Dallas Remote Imaging Group
|
||
PO BOX 117088
|
||
Carrollton, Texas 75011-7088
|
||
FAX 214 492 7747
|
||
================================================================================
|
||
============================================================================
|
||
|
||
DALLAS REMOTE IMAGING GROUP BBS =====>> 214-394-7438
|
||
FAX 214-492-7747
|
||
VOICE 214-394-7325
|
||
|
||
DEDICATED TO SATELLITE IMAGERY, SATELLITE TRACKING, NASA,
|
||
DIGITAL SIGNAL PROCESSING, IMAGE PROCESSING,
|
||
AMATEUR RADIO, AND ELECTRONIC INTELLIGENCE
|
||
|
||
PCBoard SUPPORTS 6 Lines (USR Dual Standard V.32bis V.42 24 hrs. Daily)
|
||
|
||
E-MAIL FOR Weather Satellite Report and InterNet UUCP News Groups
|
||
|
||
ON-LINE HAMCALL APPLICATION - LOOKUP HAM CALLSIGNS
|
||
On-Line SATTRAK Satellite Tracking Routines
|
||
On-Line SHOP Satellite Resource Center - On-line Ordering
|
||
On-Line BALLTRAK Balloon Launch and Tracking Program
|
||
|
||
THOUSANDS OF IMAGE FILES OF SATELLITE IMAGE AND NASA VOYAGER IMAGES
|
||
SATELLITE TRACKING PROGRAMS, IMAGE PROCESSING, DSP, ATV, SSTV, FAX
|
||
============================================================================
|
||
|