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
|
|||
|
============================================================================
|
|||
|
|