Digital signal processing (DSP) hardware and software have become part of the tools of the amateur digital experimenter. This article offers a novel and cost-effective implementation of a DSP modulator/demodulator (modem) for high-frequency (HF) digital using a DSP-based personal computer (PC) sound card.
The objective is to strike a balance between optimal performance, robustness and operational flexibility. The product has excellent performance that will meet the requirements of the discriminating user.
This project uses as a basis, a lowcost DSP sound card that uses the Analog Devices Personal Sound Architecture, also known as the "PSA chip set" (reference 1). An introduction to programming this type of DSP sound card was presented in a previous QEX article (reference 2). The reader is encouraged to obtain and use this material as a reference during development of the DSP modem.
Experience has shown that actual DSP modem component of this application forms a small part of a moderately complex system consisting of various interrelated hardware and software components. Rather than overwhelming the reader with too much detail, the article follows a summarized format where supporting details are presented as appendices:
With this background, the major requirements of the DSP modem may now be presented:
Most of these requirements translate into software specifications for implementation on either the DSP sound card or the PC platform. However, before we look at software details, a brief overview of the hardware components that this software is supposed to run on, is worthwhile.
This project will utilize and integrate the signal processing capabilities of the sound card's DSP processor into the general- purpose PC platform. The DSP on the sound card functions as a co- processor that deals with real-time audio frequency processing and operates independently and concurrently with the PC's processor. The PC's processor handles protocol and other housekeeping functions. Figure 1 shows this relationship.
Figure 1. Major hardware components: HF Radio equipment, DSP- based sound card, and host PC. An RS-232 serial port controls the transmit-receive switch (PTT) and sends digital output data from the computer to the radio. Separate audio paths exist between the sound card's audio input/output and the radio's speaker/mike audio connections. The sound card plugs into the PC's ISA bus. All programming, control, and data between the PC and the sound card's DSP are via the high speed ISA bus.
Four major components make up the body of the system software: The DSP bootstrap/real-time executive, DSP application code, low- level PC interface, and host PC application. Figure 2 shows the functional relationship between these components.
Figure 2. Major software components consist of the DSP real-time executive, DSP application code, low-level PC interface, and the host application code. Communication between the DSP and the PC is via function calls, port I/O, and interrupts. Interrupt service routines for the DSP operates at audio frequency rates and at symbol rates at the PC.
Further details of DSP and PC software follows.
DSP software consists of two parts: the real-time executive (RTE), and the actual DSP modem code.
The DSP RTE software module performs several functions:
Figure 3 shows the relationship of these DSP software components.
Figure 3. DSP software components. Real-time executive, interrupt service routines, startup code, communications interface, and DSP modem code. The ADI-1848 CODEC ISR is a larger module and thus loaded separately from the RTE. A "software hook" in the RTE gives an entry point for the ISR.
However, the RTE code first has to be loaded into the DSP code memory. We call this loading process bootstrapping and it uses the DSP's factory-programmed on-chip ROM. Executing this ROM code, typically after a hardware reset, the DSP starts from a known state and is ready to load code into the DSP's on-chip code memory. Control passes to the instruction at the startup vector after this loading.
The RTE contains only a few essentials: interrupt-vector table, command-interpreter, and other miscellaneous initialization code. "Hooks" to code outside the scope of the bootstrap, enable those modules to be loaded separately.
The loading of DSP application code occurs after the ROM bootstrap has run to completion. Once the DSP is up and running with the bootstrapped code, initially with only the asynchronous command-interpreter executing, it awaiting commands from the host. Subsequently, more extensive application code is loaded into the DSP program and data memory by the host issuing function calls 0x00D0 through 0x00D3 (please see Table 1.)
Upon completion of the transfer of DSP application code, the host is ready to receive interrupts from the DSP. The host initiates processing by issuing function calls 0x00B0 (start timer) and 0x00B4 (start 1848 DMA, i.e., start the A/D convertor). The DSP modem is then fully functional - processing incoming audio and interrupting the host every millisecond with a sample of the demodulated data.
Additional RTE command interpreter functions listed in Table 1 include: Accesses to the timer's interrupt rate control (0x00BA), control over speaker and line-in levels (0x00BB, 0x00BC), 100/200 baud modem select (0x00BE), and modulator tone control (0x00BD).
Table 1. RTE command interpreter functions. Please note that certain functions consists of multiple calls, such as read/write data memory (Dm) that first presents a memory address followed by the actual argument. Other function calls passes its argument in the upper eight bits of the 16-bit function call; these upper bits are set to zero. Note that some function has return values. The user reads the returned arguments as part of the software handshake mechanism.
| Code | Function | Parameters | Return Value |
| 0x00B0 | Start timer | S | - |
| 0x00B1 | Terminate timer | S | - |
| 0x00B4 | Start 1848 DMA | S | - |
| 0x00B5 | End 1848 DMA | S | - |
| 0x00BA | Update timing value | M | - |
| 0x00BB | Update speaker level | M | - |
| 0x00BC | Update line-in level | M | - |
| 0xYYBD | Update databit state | S* | - |
| 0xYYBE | Update Modem select | S* | - |
| 0x00D0 | Read data memory | M | YES |
| 0x00D1 | Write data memory | M | - |
| 0x00D2 | Read pgm memory | M | YES |
| 0x00D3 | Write pgm memory | M | - |
| 0x00D4 | Send back ID string | S | YES |
* - requires the argument in the upper byte.
Appendix 4 shows the architecture and various filter designs that make up the demodulator. This demodulator contains two sets of each of the input bandpass filter, discriminator filters, and data lowpass filter. By grouping these components together for either 100 or 200 baud operation, selection is by the state of the "modem_select" (MS) word. The host protocol analyzer decides which mode is appropriate and controls the status of this word with an 0x00BE function call. Note that MS can be changed on the fly, however, its effect will only be take place on the next 1848 CODEC interrupt.
DSP software interrupts the PC host at one millisecond intervals using the DSP timer. This allows for 10 times oversampling for 100 baud signaling elements and five times oversampling at 200 baud. Protocols like Pactor, require bit clocks with accuracy better than 30 parts per million (ppm). Experience has shown that tolerances exist among the crystal clocks from different sound cards, even from the same manufacturer, demanding the use of different timer constants for different boards. Sometimes, it even becomes necessary to use dithering between two clock values to obtain the required accuracy. Although such drastic measures may appear extreme, it should be kept in mind that the host protocol program only can track small amounts of phase drift. However, during periods when the received signal is weak or corrupted by interference, it becomes critical to maintain good clock accuracy as software tracking of timing is not feasible then. This has become even more critical with newer protocols and their lengthy frames.
The complimentary component of the demodulator is the modulator; It generates an audio signal for application to a transceiver's balanced modulator. For FSK, the modulator is much simpler than the demodulator. The modulator uses a table-lookup algorithm. The lookup-table consists of sine values over one quadrant, i.e., zero - p/2 radians, spaced at p/64 radian increments. The value of the "databit" word, i.e., 0 - muted, 1 - mark tone, 2 - space tone, controls the type of audio tone generation. A "cumulative phase angle" (CPA) word is updated at every A/D tick with the appropriate phase increment. CPA is then used as an index into the sine lookup table. It is of course necessary afterwards to adjust the sign for the appropriate quadrant.
The modem code is a straightforward linear progression initiated by the 1848 CODEC interrupt. Note that the alternate register set uses fast context switching during interrupt handling. The DSP's hardware pipeline further allows for multiple instruction execution during execution of FIR filter code. Reference 8 contains more on this technique.
PC software provides support for both user level and low-level hardware. Figure 4 shows the major PC software components.
Figure 4. Major PC software components. The components on the right, i.e., ISR and DSP COMMUNICATIONS require real-time response (at 1ms level). Components at the left side, i.e., SETUP/INITIALIZE, USER APPLICATION, and TERMINATE/CLEANUP are not timing critical. Note that this application is for a simple non- multitasked operating system such as MS DOS .
Please note that this application contains a real-time component, i.e., the ISR that handles interrupts from the DSP. This piece of low-level code, once started, has to process the steady stream of interrupts from the DSP without ever missing a beat - once every 1.0 millisecond. Besides storing data and communicating with the DSP using function calls, this low level software may also contain the main protocol handler, i.e., that part of the software that decodes bit streams into data frames, extracts and converts codes, does checksum calculations, and handles the data stream to/from the user interface. This part of the code easily accounts for 90% of the total effort, the remainder of the development effort is split equally between the DSP code and the PC user interface.
The software on the PC side requires the following functionality:
The demonstration software provides a fully functional program that loads DSP modem code and provides user control over the DSP's audio and timing. This code provides a basis for further developments. An interesting possibility, for example, is to extend the code to become a pop-up terminate-stay-resident (TSR) program activated by a "hot-key". This then allows the user to control the DSP modem at will. The serial interface further provides a convenient means for integrating the modem into existing TNC's.
A very brief overview of the necessary steps to build a working application is next. The supplied software consists of three modules, i.e., DSP RTE, DSP modem, and user-interface demo. In addition, the software tools from the introductory article on programming the DSP sound card is required to compile and link the C++ modules. Please ensure that the latest support library code, as supplied with the code example, is used. An updated version of the SpAsm assembler is also provided.
The RTE.DSP contains the DSP RTE source code. The code includes interrupt vectors, DSP startup code, and the call and answer command interface. Assemble the source code and convert it to a bootable format:
1). spasm21 rte.dsp 2). cload rte
The SpAsm21 assembler takes RTE.DSP as input and produces RTE.CDE (an intermediate object). Program CLOAD takes the intermediate object code, RTE.CDE, as input and produces RTE.LD.
MODEM.DSP contains the DSP modem source code. This code includes two modems, one each for 100 and 200 baud operation. It also contains code for the modulator and its lookup table. Assemble this module:
3). spasm modem.dsp
DEMO.CPP contains C++ source code for the demonstration user- interface program include several smaller functions to do bootstrap functions, load modem code to the DSP, and other low- level I/O functions. This module need to be compiled using the large model. Also note that the audio source and input gain parameters may require adjustment for different PSA cards. The demo code contains example values for Cardinal and Orchid cards.
4). bcc -c -ml -O2 -Z -G demo.cpp (Borland C++) 5). tlink /x c:\bc4\lib\c0l demo PSA1 PSA2, emu mathl
Upon running the demo program, there will be a brief pause as the DSP boots and the user interface initializes itself. Assuming a signal source connected to the sound card's microphone jack, the sound, as processed by the input bandpass filter plays through the sound card's speaker. The demo program's menu allows for the selection of several commands that the user may wish to experiment with.
The reader is encouraged to obtain the author's PSATOR and PSA- PACTOR programs (please see note 3 for further details) to see how such a modem integrates with a protocol analyzer program. These programs offer full transmit and receive capabilities.
The incentives and objectives for the design of an experimental DSP modem for HF were presented. An intuitive approach to using DSP principles included an overview of FSK modulation and demodulation using matched filters and maximum likelihood theory. Included are design criteria and filter design procedures for building 100 and 200 baud FSK DSP modems.
This design offers a flexible and cost-effective approach with extremely good performance. It also provides sufficient background material to encourage both experts and newcomers to experiment and extend the technology.
The author is grateful for all those that participated in many stimulating discussions on this subject and provided assistance during beta testing and acknowledges that this work was possible only due to the generous contributions of many gifted individuals.
In the most general case, Davies (reference 4) shows that multipath propagation, i.e., simultaneous reception of a high- angle and low-angle ray, generally depends on both operating frequency also the distance between stations. Such multipath propagation is much more noticeable at frequencies much lower than the maximum usable frequency (MUF) and, for example, is quite common on the 40m and 80m amateur bands. The longest of such delays at is typically at 0.43MUF, and may introduce path differences in the order of 3 ms for a 2500 km path and 8 ms for a 1000 km path. For example, consider the case where both high- angle and low-angle signals are received with a 3.05 ms difference in path delay. Such a phase delay equal to approximately 13 halfwaves, or effectively an approximately out of phase version of the mark signal. This results in almost complete cancellation of the mark signal at the receiver (assuming equal amplitudes for the signals). This effect is known as selective fading. Early RTTY used wide, i.e., 850 Hz shift, however, this was changed in favor for the narrower 170 Hz shift, in part due to problems with selective fading. Although not used for amateur radio, diversity reception is one attempt to minimize the effects of fading. The higher frequency bands, i.e., 15m, 10m and 6m exhibit slow deep flat fading characteristics.
Rapid fading of either of the paths introduces some degree of phase jitter in the received signal that may result in intersymbol interference (ISI). This type of distortion describes the overlap (in timing) between adjacent signaling elements and in certain instances, may introduce problems in detecting when one signaling element ends and the adjacent one start. One advantage of non-coherent detection is that it is quite forgiving and will tolerate a fair amount of phase jitter, however, at a small cost in performance.
An additional source for variability in HF propagation is due to electromagnetic polarity rotation as a radio signal passes through the earth's magnetic field - also known as Faraday rotation. For example, a vertically-polarized signal may be received at the distant location with both horizontal and vertical components. Fortunately, this does not introduce such a big problem as most HF amateur stations use lower gain antennas than that being used on VHF/UHF for instance. However, amateurs have used several innovative antenna designs to deal with such polarization diversity.
Noise on HF introduces perhaps the most challenging of problems and may be come from several sources; some originating from distant locations, such as electrical storms; other types of electrical noise may be due to polarized rain drops, or broad band noise as received from extraterrestrial sources such as the sun. These with other manmade noise, makes the noise content in a received HF signal quite different from the type of noise described in text books, i.e., additive white Gaussian noise (AWGN) that has well-known statistical properties. These factors require special consideration in the methods applied in modems for symbol detection in the presence of noise.
The performance of a demodulator depends greatly on using the correct filter characteristic, one that optimizes signal-to-noise (S/N) ratio in particular. Both the bit error rates (BER) as well as the amount of noise energy contained in the recovered signal, are greatly dependant on filter bandwidth (please see reference 7). Filter bandwidth will also become increasingly important in future as the competition for RF spectrum increases.
Transmission protocols also have to cope with data corruption due
to either noise, fading, or adjacent channel interference. This
requires the use of data integrity checksums, interleaving or
burst error detection/correction methods, tailored to the nature
of the characteristic disturbance. These methods form the basis
of block and convolutional coding theory.
A better understanding of the characteristics of FSK modulation allows for optimal demodulation. It is fortunate that many applied DSP principles can be illustrated intuitively. One such concept is the duality of the time and frequency domain. Consider for example an FSK signal at an instant "t" in time - two possible signaling states exist:
where: amplitude term, A, above, represents the energy per signaling element, angular rates w1 and w2 correspond to the mark and space tone frequencies, and F1-F2 are arbitrary phases associated with S1 and S2 respectively. Figure 2.1 shows such waveform pulses. Matlab10 and the Ryerson Polytech Communications Toolbox11 simulated the environment and produced the graphs in this article. Please note that FSK tones are usually generated using a frequency modulated oscillator thus producing a continuous phase signal. The examples shown is for illustrative purposes only. These graphs attempt to illustrate several important properties of an FSK signal:
A square pulse produces significant energy in its sidelobes. One objective in filter design is to find a good compromise for truncating the effects of such sidelobes, though maintain good S/N characteristics.
The width of the pulse, i.e., the duration of a signaling element, determines the bandwidth of the major lobe and also the pattern of the nulls in the frequency spectra. Narrow pulses require additional bandwidth. For 100 baud, the null- to-null bandwidth of the major lobe is 200 Hz, and the nulls in the spectrum are 100 Hz apart.
The bandwidth of such a signal pulse at the 60dB level may well be in the order of 800 Hz. This means that a high- powered signal could effectively occupy a significant amount of additional bandwidth. For narrow bandwidth requirements, special pulse shaping should be considered.
Figure 2.1. Mark (2125) and space (2295) pulses comprising a 100 baud 2-state FSK signal is shown in the upper left and right part of the figure respectively. These tone pulses each are 10 ms long and have an effective repetition rate of 50 pulses per second (assuming a symmetric ...0101... modulation pattern). The lower part of the figure shows the respective frequency responses for these tone pulses. Note that the width of the main lobe, i.e. from null to null, is 2*100 = 200 Hz wide and that the nulls in the sidelobes are at 100 Hz intervals.
When the transmitted phase is unknown or of no concern at the receiver, this is known as non-coherent detection. The minimum tone spacing for a non-coherent FSK signal is 100 Hz theoretically. Figure 2.2 shows that a 170 Hz shift FSK signal has adequate separation between its tones. Although not shown in this figure, the minimum spacing for a coherent FSK signal is only 50 Hz, i.e., half the bandwidth for non- coherent FSK and is called minimum shift keying (MSK).
Figure 2.2 shows the overlapping frequency responses for a 100 baud, 170 Hz shift non-coherent FSK signal.
Figure 2.2. The overlapping frequency responses for a 100 baud, 170 Hz shift FSK signal with 2125 Hz mark, 2295 Hz space tones.
The bandwidth for this FSK signal is given by:
A shape factor of 1.6 is commonly used. The theoretical bandwidth for the FSK signal is then 330 Hz (170+1.6*100), that roughly corresponds to the 16 dB level of Figure 2.2.
Demodulation refers is the inverse process of modulation, i.e., to recover the modulation signal. Detection on the other hand refers to the process of extracting symbols from the demodulated signal. This article applies "passband" demodulation techniques because bandpass filters, tuned to the frequencies of interest, perform demodulation. There also is a popular alternative method for demodulation that uses a heterodyne and lowpass-filter process to effectively shift the passband signal to a baseband form. That is called "baseband" demodulation - the result and performance of these, for this type of application are comparable. The passband method is chosen for reasons of simplicity. Figure 2.3 illustrates this process.
Figure 2.3. Demodulation and detection for a tone pulse. The input (signal with additive noise) (A) applied to a demodulator produces output (B), processed by the detector, produces symbol (C).
The demodulator is a special function, g(t), with the property, that, say for example when it compares its own properties to that of an unknown signal that contains the wanted signal, it will show a high degree of correlation. For example, let g(t) look like a mark pulse as shown in the lower left graph of Figure 2.1. When the unknown signal that contains a mark tone is correlated with g(t), i.e., sliding the unknown over g(t), one sample at a time while computing the correlation, then at the center of the symbol, there would be near-perfect correlation. This shown is at (B) in Figure 2.3. It follows intuitively that a noise pulse or for that matter any pulse containing some other tone, would not show this high degree of correlation, regardless of how it is shifted in time. This principle, is in essence what the theory of matched filters are about: it describes a method by which an unknown signal, embedded in noise, can be detected in a way to optimize signal-to-noise ratio (S/N). Unfortunately, the theory of matched filters also requires a good model of the noise - something that is very difficult to model on HF. It, however, offers a good alternative. Reference 12 contains further details on the theory of matched filters.
It should be evident by now that the required matched filters for 100 baud demodulation are those shown in Figure 2.1. The need for a different set of filters for 200 baud demodulation is also clear - and thus the adaptive requirement for the modem.
The last piece of theory before we can show the DSP modem's architecture is the discriminator, shown in Figure 2.3 as a simple threshold detector. The choice for a threshold, requires knowledge of the character of the wanted signal as well noise. The theory of stochastic statistics, i.e., theory that deals with making decisions under uncertainty may be applied in this situation. Maximum likelihood theory (MLT) in particular, is frequently used in this context.
To detect symbols in a two-state system, a minimal requirement is that when symbol d=0 is sent:
and similarly, when symbol d=1 is sent:
This set of inequalities states a simple dichotomy: when symbol d=0, is sent, the probability of recognizing state S1, given signal s(t), should be larger than the probability of recognizing state S2. The opposite should hold true when symbol d=1 is sent. There are many such functions that will satisfy this dichotomy, however, there is one in particular that will maximize S/N as well. This function is a pair of matched filters (please see reference 12). Figure 2.4 shows a schema describing this logic.
Figure 2.4. A two-state discriminator based on maximum likelihood
theory. A noisy signal is applied to two matched filters (B and
B'), one each for the binary states S1 (mark) and S2 (space). At
time instant, t, the matched filters produce outputs O1(t) and
O2(t) respectively. The discriminator compares the magnitudes of
O1 and O2 - the output of the discriminator is set to the state
corresponding to the largest matched filter output.
"..filter characteristics are easily changed; they are stable against changes in temperature; they process low frequencies more effectively; frequency response characteristics can be made to approximate closely to the ideal; they can be made have no insertion loss; linear phase characteristics are possible; reliable and repeatable; no precision components or component matching; no timing required; superior performance."
A digital filtering operation may be expressed as a process whereby an input signal, say x(t), is transformed by a function H, into a new signal, y(t):
H is called a transfer function and may be represented in a fractional form where both the nominator and denominator are functions of "z" (z is the delay operator of the Z-domain, i.e. z1 means the previous sample, x(t-1), zn means sample x(t-n)).
From the above relationship between x, y, and H, evidently the nominator refers to y(t), the output and its history, while the denominator refers to x(t), the input and its past history. Re- arranging Equation 3.3:
For a causal system, i.e., one that only depends on the past history of x(t), the "a" terms will be zero and we will only have "b" terms:
The set of N coefficients, h(0..N-1), is the impulse response of the transfer function H(z). The sum-product operation defined in Equation 3.6 is known as a "convolution with kernel h". Finite impulse response (FIR) filter design is concerned with finding the appropriate values for these kernel coefficients. Please see reference 15 and 17 for more detail on FIR filter design.
Most DSP designers use causal filters because they are well- behaved, easy to design, and simple to implement. For a FIR filter, the coefficients are arranged symmetrical about the center coefficient. They exhibit linear phase, i.e., each frequency that passes through the filter experiences the same amount of delay in the system. Other filters, such as the infinite impulse response (IIR) exhibits significant non-linear phase response.
Appendix 2 shows that several popular filter design packages are
available for designing different types of filters.
Figure 4.1 shows how applying the principles from Appendix 2, the architecture for the 100/200 baud DSP modem is derived.
Figure 4.1. DSP modem architecture. The input signal (IN) is routed according to the state of the (MS) switch via one of two modems. Each modem consists of a bandpass filter (BPF), a pair of matched filters for mark and space, an envelope detector, signal combiner, and data lowpass filters. The output (OUT) is a signed 16-bit word that corresponds to the magnitude of the detected state. Input signal sampling is at 5512.5 samples per second (SPS), while output rate is at 1000 SPS.
Figures 4.2 through 4.3 shows the input bandpass and discriminator filters. These filters were designed using the Parks-McClellan algorithm (reference 13) using parameters as shown in Table 4.1(a) and (b).
Figure 4.2. Input bandpass filters for 100 and 200 baud. Mark and space tones are 2125 and 2295 Hz respectively. Sample rate is 5512.5 SPS and filter order is 31.
Figure 4.3. Detector bandpass filters for 100 baud. Mark and space tones are 2125 and 2295 Hz respectively. Sample rate is 5512.5 SPS and filter order is 54.
Figure 4.4. Detector bandpass filters for 200 baud. Mark and space tones are 2125 and 2295 Hz respectively. Sample rate is 5512.5 SPS and filter order is 25.
Figure 4.5. Data lowpass filters for 100 and 200 baud as designed by the "FIRMINI" program. Cutoff frequencies are 100 and 200 Hz respectively. Sample rate is 5512.5 SPS and 60 dB rejection was chosen for the stopband.
DSP designers have their favorite filter design tools. As an example, two popular filter design tools are shown, both will produce highly efficient DSP filters. The Parks-McClellan program is based on min-max optimization using the Remez-exchange algorithm. There are however, several other popular methods for generating coefficients for FIR filters. The data lowpass filters for the DSP modem were designed using the window method. For a general treatment of the window method of filter design, please see reference 14. Doblinger's "FIRMINI" program (reference 15) offers a choice of window types for different kinds of filter type. The results for Kaiser-Bessel response lowpass filters with cutoff frequencies set at 100 Hz and 200Hz are shown. These filters are not critical, however, and separate filters are also not really necessary. Figure 4.5 shows the resultant frequency responses for these .
Table 4.1(a). 100 Baud modem parameters for filter design using the Parks-McClellan algorithm (please see reference 13). The first entry is the normalized frequency and the second entry is the actual design frequency in Hertz. Passband bandwidth is 100 Hz, stopband bandwidth, 550 Hz. Mark is 2125 Hz, Space is 2295 Hz (170 Hz shift), and sample rate is 5512.5 SPS.
Table 4.1(b). 200 Baud modem parameters for filter design using the Parks-McClellan algorithm. The first entry is the normalized frequency and the second entry is the actual design frequency in Hertz. Passband bandwidth is 160 Hz, stopband bandwidth 610 Hz. Mark is 2110 Hz, Space is 2310 Hz (200 Hz shift), and sample rate is 5512.5 SPS.
It is evident that the design criteria for the (FIR) filters does
not exactly duplicate matched filter specifications - they have
much wider bandwidth. The specifications shown, have been arrived
by much experimentation and on-the-air testing and strikes a
balance between optimal performance and ease of use. The 100 baud
modem will work at either 170 or 200 Hz shift and will pass
adequate quality 200 baud traffic such that the protocol analyzer
can recognize this state and be able to switch to the 200 baud
modem. The 200 baud modem is optimized for 200 Hz shift, though
uses the same passband center than the 100 baud modem does.
Adequate bandwidth is provided for 200 baud.
For further information on the Analog Devices PSA chip set,
please see the frequently asked questions (FAQ)
obtainable from Analog Devices Signal Computing BBS (617)
461-4258 or via Internet anonymous ftp from: ftp.analog.com
/pub/tools/psa-sdk/
Sound cards and manufacturers that use the PSA chip set include: Echo Personal Sound System - Echo Speech Corp., Cardinal Pro 16 (plus) - Cardinal Technologies, Orchid SoundWave 32 - Orchid Technology, Wearnes Beethoven ADSP16 - Wearnes, Western Digital Paradise 16-DSP - Western Digital, Adaptec AME-1570 - Adaptec.
© Johan Forrer,1998-2003