WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Soft decision viterbi decoder for M-ary convolutional codes    
United States Patent5390198   
Link to this pagehttp://www.wikipatents.com/5390198.html
Inventor(s)Higgins; Robert P. (Seattle, WA)
AbstractAn error control decoder (44) for use in decoding signals encoded with an M-ary convolutional code and a method for decoding such a code. The error control decoder includes a branch metrics module (46) that determines differences between the correlation values of each of eight possible symbols used to represent data encoded and the largest of these correlation values. An add-compare-select module (50) determines path metric values for each of 64 states by adding selected branch metric values to prior state metrics for the two possible paths that lead to a current state metric. The minimum path metric of the two is then assigned as a new state metric, and a logic level identifying the selected path metric is stored in a path history module (62). This procedure is repeated for each of the 64 states. A minimum state metric from the prior symbol period is determined and used to normalize the current state metrics to avoid overflow. After processing data for 36 symbol periods to form the initial path history, the data are decoded by tracing back through the path history to identify a state that most likely represents the binary data originally encoded. The error control decoder is disclosed in use in a spread spectrum communication system (20).
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5390198
Soft decision viterbi decoder for M-ary convolutional codes - US Patent 5390198 Drawing
Soft decision viterbi decoder for M-ary convolutional codes
Inventor     Higgins; Robert P. (Seattle, WA)
Owner/Assignee     The Boeing Company (Seattle, WA)
Patent assignment
All assignments
Publication Date     February 14, 1995
Application Number     08/067,669
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     May 26, 1993
US Classification     714/796
Int'l Classification     G06F 011/10
Examiner     Gordon; Paul
Assistant Examiner    
Attorney/Law Firm     Christensen, O'Connor, Johnson & Kindness
Address
Parent Case    
Priority Data    
USPTO Field of Search     371/43 371/37.1
Patent Tags     soft decision viterbi decoder m-ary convolutional codes
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5128967
Durkin
375/329
Jul,1992

[0 after 0 votes]
5095484
Karabed
714/746
Mar,1992

[0 after 0 votes]
4922507
Simon
375/254
May,1990

[0 after 0 votes]
4901307
Gilhousen
370/320
Feb,1990

[0 after 0 votes]
4868830
Pollara-Bozzola
714/794
Sep,1989

[0 after 0 votes]
4837766
Yoshida

Jun,1989

[0 after 0 votes]
4536878
Rattlingourd
714/795
Aug,1985

[0 after 0 votes]
4404674
Rhodes
714/793
Sep,1983

[0 after 0 votes]
4346473
Davis
714/786
Aug,1982

[0 after 0 votes]
4240156
Doland
714/791
Dec,1980

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:

1. A method for decoding an encoded signal that represents information bearing data comprising a plurality of bits, said information bearing data having been encoded with an orthogonal convolutional M-ary error correction code, each bit of the information bearing data being represented by one of M different symbols, where M is greater than two, said method comprising the steps of:

(a) for each bit of the information bearing data that was encoded:

(i) determining a correlation value for each of the M symbols;

(ii) determining a maximum correlation value of the M correlation values of step (a) (i);

(iii) determining M branch metrics, each branch metric comprising a difference between the maximum correlation value and one of the M correlation values;

(iv) for each of N current states, determining a most likely path to that state as a function of the branch metrics, said branch metrics being used in connection with a state metric for a prior state to determine a new state metric for each current state; and

(v) storing a value indicative of the most likely path from a prior state to each of the N current states, to produce a path history;

(b) reiterating steps (a)(i) through (a)(v) for each bit of the information bearing data that was encoded; and

(c) as a function of the path history, determining decoded data corresponding to the information bearing data that was encoded, said decoded data comprising a plurality of bits, each of which is determined by tracing back through the path history to identify a state metric value that most likely corresponds to a bit of the information bearing data.

2. A method for decoding a received signal that represents information bearing data comprising a plurality of bits, said information bearing data having been encoded with an orthogonal convolutional M-ary error correction code prior to transmission, each bit of the information bearing data being represented by one of M possible symbols, where each of the M symbols is different from the others and M is greater than two, said method comprising the steps of:

(a) correlating the received signal to determine M correlation values, each correlation value corresponding to one of the M possible symbols;

(b) determining a plurality of branch metrics, including a branch metric for each of the M possible symbols, the branch metric for a symbol being equal to a difference between a maximum one of the M correlation values and the correlation value corresponding to that symbol;

(c) determining path metrics for paths entering each of N different states, by adding the branch metric corresponding to a path from a previous state to a state metric of said previous state, for each of the N different states;

(d) comparing the path metrics entering each of the N states and selecting a minimum path metric for each state as a new state metric for that state;

(e) identifying a data bit corresponding to the path metric selected in step (d);

(f) updating a path history as a function of the path metric selected in step (d);

(g) reiterating steps (a) through (f), storing the data bit for each of the N states, during each of a predetermined number of iterations, to develop a path history;

(h) identifying a minimum state metric of the state metrics for a current iteration, to determine a most likely path through all of said iterations; and

(i) determining a decoded output bit as a function of an earlier state by following the most likely path back through the path history for the predetermined number of iterations, said output bit corresponding to a bit of the information bearing data that was most likely encoded.

3. The method of claim 2, further comprising the step of repeating steps (a) through (i), for each successive bit of the information bearing data that were encoded, until all bits of the information bearing data that were encoded are decoded.

4. The method of claim 2, further comprising the step of identifying a symbol likely representing a bit of the information bearing data that was encoded, said symbol having the maximum correlation value of the M possible symbols.

5. The method of claim 2, wherein M has a value of eight, and wherein there are 64 possible correlation values.

6. The method of claim 2, wherein the step of selecting a minimum path metric further comprises the step of normalizing the state metrics to reduce their magnitude.

7. Apparatus for decoding an input signal encoded to represent information bearing data comprising a plurality of bits, said plurality of bits having been encoded with an orthogonal convolutional M-ary error correction code, each bit of the information bearing data being represented by one of M possible symbols, where each of the M symbols is different from the others and M is greater than two, said apparatus comprising:

(a) branch metric means for determining a branch metric for each of the M possible symbols as a function of correlation values determined from the input signal, the branch metric for a symbol being equal to a difference between a maximum one of the M correlation values and the correlation value for that symbol;

(b) adding means, coupled to the branch metric means, for determining path metrics for all paths entering a state, by adding the branch metric to a previous state metric of each path to a state, for each of N possible states;

(c) comparing means, coupled to the adding means, for comparing path metrics entering each state and including means for selecting a minimum path metric as a new state metric;

(d) updating means, coupled to the comparing means, for updating a state metric as a function of the path metric selected in (c);

(e) memory means, coupled to the updating means, for storing a path history for a predefined number of iterations of determining the branch metrics, state metrics, and path metrics, said path history identifying the path metric selected in (c) for each iteration; and

(f) control means, coupled to the memory means, for identifying a minimum state metric for each iteration, to determine a most likely path through the path history and for decoding an output bit as a function of an earlier state reached by following the most likely path, said output bit most likely corresponding to a bit of the information bearing data that was encoded.

8. The apparatus of claim 7, wherein the branch metric means, adding means, comparing means, updating means, memory means, and control means comprise a single, monolithic integrated circuit.

9. The apparatus of claim 7, wherein the control means include a microcontroller.

10. The apparatus of claim 7, wherein the adding means comprise a plurality of buffers for temporarily storing a plurality of sums produced by adding state metric and selected branch metric values.

11. The apparatus of claim 7, wherein the branch metric means comprise a plurality of registers and a memory for temporarily storing the correlation values and differences between a maximum one of the M correlation values and other of the M correlation values, for each of the possible symbols.

12. The apparatus of claim 7, wherein the memory means comprise a path memory module, said path memory module including:

(a) a path memory controller;

(b) an output decode module coupled to and controlled by the path memory controller; and

(c) counter means for determining when at least the predetermined number of iterations has been completed, said counter means then producing a data ready signal to indicate when the most likely path can be determined to decode a first output bit, followed by successive output bits.

13. The apparatus of claim 7, wherein the control means determine an appropriate branch metric to add to a previous state metric to reach a current state.

14. The apparatus of claim 7, further comprising means for determining an error rate of the input signal by comparing a teencoded symbol from the decoder data to a symbol determined as a function of the maximum of the correlation values derived from the input signal.

15. The apparatus of claim 7, wherein the adding means comprise normalization means for normalizing the state metrics.

16. In a communication system that encodes binary data to be transmitted using an orthogonal convolutional M-ary error correction code to represent the binary data with M different symbols, M being greater than two, a method for decoding a received signal to recover the binary data that was transmitted, even when the received signal has been affected by noise, said method comprising the steps of:

(a) for each bit of the binary data that was encoded:

(i) processing the received signal to determine one of N possible correlation values for each of the M different symbols;

(ii) determining a maximum of the correlation values determined for each of the M different symbols;

(iii) subtracting the correlation values for each of the M different symbols from the maximum of the correlation values to determine M branch metrics;

(iv) for each of two different paths leading to one of N possible current states from previous states, adding a selected one of the branch metrics to a state metric of one of the previous states to determine a path metric for each such path leading to the current state;

(v) comparing the path metrics for each of the N possible current states to determine a minimum path metric of the two paths leading to each of said current states;

(vi) assigning the minimum path metric for each of the N possible current states as a new state metric for that state; and

(vii) identifying a bit value corresponding to the minimum path metric of step (a) (vi);

(b) reiterating steps (a) (i) through (a) (vii) for each bit of the binary data that was encoded for transmission;

(c) for each iteration of step (b), storing the bit value for all of the possible states, to develop a path history;

(d) identifying a minimum state metric for each iteration, to determine a most likely path through the path history;

(e) by tracing back along the most likely path, identifying an output bit associated with an earlier state metric occurring a predetermined number of iterations ago, said most likely representing a bit of the binary data that was encoded and transmitted; and

(f) repeating steps (a) through (e) for each successive bit of the binary data that was encoded to decode each remaining bit thereof.

17. The method of claim 16, wherein M has a value of eight, and wherein there are 64 possible states for each iteration and 64 possible different correlation values.

18. The method of claim 16, further comprising the step of normalizing the state metric for each possible state to reduce a magnitude of the state metric.

19. The method of claim 16, wherein the step of identifying the output bit comprises the step of backing through the path history, following paths connected to the minimum state metric of the current states, to reach the earlier state metric that occurred the predetermined number of iterations ago.

20. The method of claim 16, wherein the maximum of the correlation values corresponds to one of the eight possible symbols that was likely transmitted if the received signal was not adversely affected by noise.

21. The method of claim 16, further comprising the step of determining an error rate for the received signal.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

The present invention is generally directed to an error correction system used in a communication system employing convolutional codes, and more specifically, relates to an error correction decoder in a receiver of such a communication system.

BACKGROUND OF THE INVENTION

Radio transmissions in communication systems are often subject to noise or jamming that can cause significant errors in the received signal. One of the techniques commonly used to prevent loss of data from a signal transmitted over a noisy or fading channel uses a convolutional encoder to encode the signal input to the transmitter, producing an encoded binary signal. The encoded binary signal provides redundant information that enables correction of erroneous data caused by noise or other sources of signal degradation.

The method used for decoding a received signal has been shown to have a significant impact on the performance of the error correction codes employed in a communication system. It has been determined, for example, that soft decision decoding offers substantially improved performance over hard decision decoding, by reducing the amount of energy required to correctly transmit information. Techniques that implement maximum likelihood decoding provide further improved performance over other decoding techniques, increasing the efficiency of the error correction process.

A soft decision Viterbi decoder algorithm thus represents a preferred approach for decoding a convolutional encoded binary signal. The transmitted data are recovered with this type of decoder by applying a maximum likelihood sequence probability analysis to select the bit most likely transmitted. An example of a soft decision Viterbi decoder is disclosed in U.S. Pat. No. 4,536,878, issued on Aug. 20, 1985 to Rattlingourd et al. The decoder in this patent is implemented on a monolithic very large scale integrated (VLSD circuit that includes a branch metric calculator, a metric update circuit, a path update, a majority vote circuit, and a control circuit. The encoded binary data transmitted comprise symbol pairs, each symbol of the pair comprising three bits, including a sign bit, a most significant bit (MSB), and a least significant bit (LSB). The branch metric calculator determines a difference between the symbol pairs and each of the four possible symbol pair combinations (00, 01, 10, and 11), producing metrics H.sub.00 through H.sub.11, respectively. The metrics are supplied to the metric update circuit, which determines errors for each metric and accumulates these errors as measured, at each of 64 nodes. The metric update circuit determines the minimum error for the metric value of the measurement, which establishes a maximum probability path through a state trellis. This path is updated for each symbol pair received and processed, yielding an indication of the transmitted encoded binary signal and thus, an indication of each binary bit that was input for transmission.

Convolutional encoding of a transmitted signal is usable with many types of communication systems and is particularly applicable to a spread spectrum system. A spread spectrum communication system is sometimes used to insure a low probability of interception of transmitted signals by a third party. In this type of system, a transmitted signal is spread over a frequency band that is much wider than the bandwidth of the information being transmitted. This approach reduces the amount of energy required to communicate information to the lowest level possible, thereby increasing the difficulty of intercepting the signal. Because the transmission has insufficient signal energy for a receiver to acquire a phase lock, the communication system must inherently be non-coherent.

Since a spread spectrum communication system uses excess bandwidth to reduce the signal energy density, making interception difficult, some of the excess bandwidth is available for encoding the signal transmitted, thereby further reducing the signal energy per bit. In order to minimize the intercept of the transmission, it is necessary to use an energy efficient modulation and coding scheme. Thus, one of the first steps for processing the signal to be transmitted in such a system is to encode it using an error correction code. However, instead of using a simple binary convolutional encoding scheme, it is preferable to use an M-ary orthogonal convolutional code that encodes each bit of the input data at the transmitter using M different symbols (M>2) to represent the binary input data. The use of more than two redundant symbols in the encoding scheme increases the resilience of the transmitted signal to fading, jamming, and other noise problems.

An appropriate M-ary orthogonal convolutional error correction code is described by Bruce D. Trumpis in his Doctoral dissertation entitled, "Convolutional Coding for M-ary Channels," University of California at Los Angeles, 1975. However, the thesis only suggests that a standard Viterbi decoding technique could be used to decode the M-ary encoded signal. The prior art technique mentioned in this reference cannot accommodate without modification an 8-ary convolutional error correcting code, for example, which is the preferred format for encoding the spread spectrum signal in a low probability of intercept communication system that is being developed by the assignee of the present invention. In fact, a substantially different branch metric algorithm that is not disclosed in this thesis or in other prior art must be applied to decode an M-ary code, for M>2.

Accordingly, the present invention is directed to a decoder that implements a soft decision algorithm using maximum likelihood decoding, yielding excellent performance not only in a Gaussian noise environment, but also in a partial band-noise jammed channel.

SUMMARY OF THE INVENTION

In accordance with the present invention, a method for decoding a received signal that represents information bearing data comprising a plurality of bits is defined. The information bearing data are encoded with an orthogonal convolutional M-ary error correction code so that each bit of the information bearing data is represented by one of M possible symbols. Each of the M symbols is different from the others and M is greater than two. This method starts with the step of correlating the received signal to determine M correlation values, each correlation value corresponding to one of the M possible symbols. A plurality of branch metrics are then determined, where the branch metric for a symbol is equal to a difference between a maximum one of the M correlation values and the correlation value corresponding to that symbol.

Path metrics for all paths entering each of N different states are determined by adding the branch metric corresponding to a path from a previous state to a state metric of the previous state, for each of the N different states. By comparing the path metrics entering each of the N states, a minimum path metric for each state is selected and used as a new state metric for that state. Preferably, the step of selecting a minimum path metric comprises the step of normalizing the state metrics to reduce their magnitude. A data bit corresponding to the path metric selected in the preceding step is identified, and a path history is updated as a function of the path metric selected above. These steps are repeated until a predetermined number of iterations are completed, and the path metric determined in each iteration is stored in the path history. A minimum state metric of the state metrics is identified as a path metric, for each of the predefined number of iterations, to determine a most likely path through the path history. An output bit is then produced, as a function of an oldest state, by following the most likely path through the path history. This output bit represents the most likely value of a corresponding bit of the information signal that was encoded.

The steps outlined above are repeated for each successive bit encoded, until all bits of the information bearing data that were encoded are decoded. In one preferred form of the invention, M has a value of 8 and there are 64 possible states for the eight possible symbols.

A further aspect of the present invention is directed to apparatus for decoding an input signal encoded with an orthogonal convolutional M-ary error correction code, where each bit of information bearing data conveyed by the input signal is represented by one of M possible symbols, each of the M symbols is different from the others, and M is greater than two. The apparatus generally includes means for implementing each of the steps of the method discussed above.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a block diagram of a communication system in which an error control decoder in accordance with the present invention is used to decode an M-ary orthogonal convolutional encoded signal;

FIG. 2A is a more detailed block diagram that more clearly identifies the convolution encoder and an orthogonal encoder used in the communication system of FIG. 1;

FIG. 2B is a schematic block diagram of the convolutional encoder;

FIG. 2C is a more detailed block diagram of the error control decoder of FIG. 1;

FIG. 3 is an overview of the error control decoder in block diagram form;

FIG. 4 is a schematic block diagram of a branch metric module of the error control decoder;

FIG. 5 is a schematic block diagram of one of the two identical state metric modules used in the error control decoder and its associated add-compare-select module;

FIG. 6 is a detailed schematic diagram of one of the select minimum state metric/minimum address modules indicated in FIG. 5;

FIG. 7 is a detailed schematic diagram of a select minimum state metric module indicated in FIG. 5;

FIG. 8 is a block diagram of a path history memory module in the error control decoder;

FIG. 9 is a schematic diagram of one of the two modules "to modify selected bit," as indicated by one of the blocks in FIG. 8;

FIG. 10 is a schematic diagram of an output decode module from FIG. 8;

FIG. 11 is a schematic diagram of a data ready module from FIG. 8;

FIG. 12 is a timing signal chart for signals used by the data ready module of FIG. 11;

FIG. 13A is a schematic block diagram of a path memory controller that comprises one of the blocks shown in FIG. 8; and

FIG. 13B is a timing signal chart for signals in the error control decoder.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Overview of the Communication System

As illustrated in FIG. 1, a communication link in a spread spectrum communication system 20 in which the present invention is used comprises a transmitter 22 that is transmitting radio signals to a receiver 24. Transmitter 22 is supplied with binary input data, comprising information to be conveyed from transmitter 22 to receiver 24. Spread spectrum communication system 20 is used to convey this information bearing data in an encoded form to ensure a low probability of intercept of the transmitted signal by some unauthorized receiver. The present invention has utility in spread spectrum communication system 20 because it facilitates decoding of the encoded data. It should be recognized, however, that the present invention is not limited to use in such a system.

The binary input data supplied to transmitter 22 is encoded by an error control encoder 26 using an 8-ary code. The symbols are determined by the following generator polynomials:

g1=1+X.sup.1 +X.sup.2 +X.sup.3 +X.sup.4 +X.sup.5

g2=1+X.sup.1 +X.sup.3 +X.sup.4 +X.sup.6

g3=1+X.sup.2 +X.sup.4 +X.sup.5 +X.sup.6 (1)

The encoded symbols produced by error control encoder 26 are input to an orthogonal waveform encoder 28, which produces a set of N orthogonal signals, each of which is represented by a sequence of N bits.

Using the polynomial expressions of equations (1), error control encoder 26 encodes the binary input data to form three bit symbols for each bit of the binary input data. The binary input data are applied to a seven bit shift register 26a (shown in FIG. 2B). The shift register is initialized to zero; successive bits of the binary input data are shifted to the right in the shift register, yielding a different symbol for the data with each successive clock cycle as parity adders 27a, 27b, and 27c combine the bits in selected registers of the shift register to produce different three bit symbols. In the preferred embodiment, the convolutional encoding scheme has a constraint length of seven and employs an alphabet of eight symbols, i.e., (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), and (1,1,1). The orthogonal waveform encoder encodes each of these symbol into one of eight possible orthogonal words. Since orthogonal encoders are well known in the art and because it is not directly relevant to the present invention, details of the orthogonal encoder need not be disclosed.

In the spread spectrum communication system, the sequence of N binary bits output from the orthogonal waveform encoder are combined with a pseudorandom number (PN) binary sequence provided by a PN sequence encoder 30, and the resulting signal is modulated by a modulator and transmitter circuit (32) to produce a radio frequency (RF) signal that is transmitted from an antenna 34. The binary sequence provided by the PN sequence encoder has the characteristics of random noise, but it is deterministic and is reproducible in the intended receiver(s) of the signal. This spread spectrum signal comprises a plurality of "chips." Because the chip rate is higher than the data rate of the binary input data, the signal transmitted from antenna 34 produced by modulating the chips has a broader frequency spectrum than the binary input data and is not readily detected or intercepted.

The transmitted signal is received at receiver 24 by a corresponding antenna 36. From this antenna, the signal is input to a receiver and demodulator circuit 38, which down-converts the received signal and demodulates it. The same PN sequence used by transmitter 22 is also generated in receiver 24 by a PN sequence correlator circuit 40 and used to correlate the demodulated signal. Thus, the output of PN sequence correlator circuit 40 generally corresponds to the orthogonal waveform encoded signal that was input to PN sequence encoder circuit 30 in transmitter 22.

An orthogonal decoder circuit 42 then decodes the signal output from PN sequence correlator circuit 40, producing a signal that is applied to an error control decoder circuit 44, which is constructed and operates in accordance with the present invention. Orthogonal decoder circuit 42 correlates the signal supplied from PN sequence correlator circuit 40 with the eight different orthogonal words in the preferred embodiment, producing correlation values for each of the eight possible symbols.

As shown in FIG. 2C, a block 42a applies a soft decision modified Viterbi decoder algorithm. The soft decision Viterbi decoder uses a convolutional decoding approach, employing a branch metric that is unique to the present invention. This decoding scheme traces a sequential probability path history that is developed by processing branch metric values, enabling the soft decision Viterbi decoder to produce a decoded binary bit stream output, which, with a relatively high probability, represents the information originally transmitted.

Error control decoder circuit 44 (FIG. 1) processes the signal input to it, producing a decoded binary bit stream corresponding to the binary input data supplied to transmitter 22. Noise, fading, jamming and other effects that tend to produce errors in the received signal are more readily compensated because the binary input data were encoded as symbols. The soft decision Viterbi decoder technique employed by error control decoder circuit 44 decodes the signal from the orthogonal decoder, recovering data that would otherwise likely have been lost due to the errors introduced in the signal during its propagation from transmitter 22 to receiver 24. Although conventional Viterbi decoders are well known in the art, such devices are typically used for decoding only a binary convolutional code. In contrast, the present invention employs a novel branch metric technique to accommodate an M-ary code (where M is greater than 2 in the general case and equals 8 in the preferred embodiment).

Overview of the Error Control Decoder Circuit

An overall schematic block diagram of error control decoder circuit 44 is shown in FIG. 3. Error control decoder circuit 44 includes a branch metrics module 46, which is controlled by a microcontroller 48 to carry out the soft decision Viterbi decoder technique. Also included in the error control decoder circuit are an add-compare-select module 50 that determines state metrics and path metrics to determine a path history. The add-compare-select module comprises an A module 52 and a corresponding parallel B module 54. A path history memory module 62 stores path history data that are used in decoding the encoded data. Error control decoder 44 also includes state metrics A and state metrics B modules 58 and 60, and symbol error detection module 64.

Microcontroller 48 accepts external control commands, including STARTMC (start microcontroller) and SYSRSTn (system reset-low) commands and responds to these commands to produce other internal commands and control signals necessary to carry out the decoding operation. The SYSRSTn command is generated, for example, after power is reapplied to the receiver, to reset the error control decoder. Although these components are not separately shown, the microcontroller includes a system clock counter and a read only memory (ROM) that produces a plurality of different control signals used by error control circuit 44. STARTMC starts the counter, causing it to count system clock cycles. The count accumulated by the counter is used to select sequential addresses in the ROM, causing a control signal corresponding to the addresses thus selected to be output. After cycling through all of the instructions stored in the ROM, the RESETn line is set low and the counter is reset until the next STARTMC command is applied, starting the operation over again. Control signals supplied through the microcontroller include SYSCLK (system clock), and SYMCLK (symbol clock).

During normal operation of error control decoder 44, a logic level 0 SYSRSTn signal is produced after power up to place the decoder in a known state. (Note that the "n" on the end of "SYSRSTn" and similarly, as used in the identification acronyms for other signals shown in the Figures, indicates that a "NOT" or inverted logic signal initiates the indicated control action.) On application of the SYSRSTn, a RESETn control signal from the microcontroller goes low (logic level 0), which resets most of the registers and other components in the error control decoder. A MRSTn (ram reset) signal is held low during one complete cycle through the ROM, allowing registers and other elements in the decoder to initialize to zero before the error control decoder begins to decode an input signal.

Several different signal lines convey data/addresses into branch metrics module 46. DIDATA lines 66 convey 6-bit correlation values for each of the eight possible orthogonal words that were determined by orthogonal decoder 42. BMADD lines 68 convey a 3-bit branch metric address identifying the specific orthogonal word of the eight possible corresponding to the correlation value that is then being supplied to branch metrics module 46. BMWRn line 70 conveys a branch metric write signal to enable the correlation value currently being supplied to be written into memory in branch metrics module 46. A BMWRAn line 72 conveys a second branch metric write enable signal, but one that is supplied by microcontroller 48.

Microcontroller 48 is also connected to branch metrics module 46 by other signal lines. BMADDA lines 74 convey a branch metric 3-bit address to select a specific orthogonal symbol to be processed by branch metrics module 46. Each such symbol is processed by the error control decoder during an interval of time referred to herein as a "symbol period."

A NORSELn line 76 provides a NOR gate select signal used in branch metrics module 46. BMADDB lines 78 convey a second branch metric address used in the module. An ADDTOG line 80 provides an address toggle signal comprising an MSB of an address and is used to enable a double buffering scheme that permits addressing of different portions of the module with the same LSBs of the address. A RAMRSTn line 82 conveys a RAM reset signal from microcontroller 48 to branch metrics module 46. Similarly, a RESETn line 84 conveys the reset signal to the branch metrics module, add-compare-select module 50, and path history memory module 62. A RECSYM line 86 conveys a "received symbol" signal from branch metrics module 46 to symbol error detection module 64. This signal indicates the symbol having the greatest correlation value.

BMA lines 88 and BMB lines 90 convey a 6-bit branch metric that is output from branch metrics module 46 to add-compare-select A module 52 and add-compare-select B module 54, respectively. EN1n line 92 and EN2n line 94 convey enable signals from microcontroller 48 to each of the add-compare-select modules A and B. Similarly, WR2n and WR1n lines 96 and 98 convey write signals from the microcontroller to the add-compare-select modules to control timing.

Corresponding lines SMADDA and SMADDB are coupled to both state metrics A and B modules 58 and 60, and to add-compare-select A and B modules 52 and 54, conveying state metric addresses to select the specific state metric currently being processed. SMWR1n line 102 and SMWR2n line 104 connect microcontroller 48 to state metrics A and B modules 58 and 60, conveying state metric write signals from the microcontroller. SMA lines 108 and SMB lines 110 interconnect the state metrics A and B modules, and the add-compare-select A and B modules. A DxA line 116 and a DxB line 112 convey binary data from add-compare-select A module 52 and add-compare-select B module 54, to path history memory module 62 to indicate the path followed from one state to a successive state. This signal is used in defining a path history.

DECDATA lines 120 couple path history memory module 62 and symbol error detection module 64, conveying the decoded symbol from path history memory module 62 for comparison to the symbol that had the largest correlation value. A SYMERR line 124 conveys a signal that indicates whether the bit of the decoded data differs from the bit corresponding to the received symbol that had the largest correlation value. Data decoding does not begin until a signal carried by a DATARDY line 126, which is connected to path history memory module 62, indicates that at least a predetermined number of received symbols have been processed to produce a path history sufficiently long to accurately decode the encoded data.

Description of the Branch Metrics Module

Details of branch metrics module 46 are shown in FIG. 4. The branch metrics module includes a tri-port random access memory (RAM) 130, which stores sixteen 6-bit words that are written through ports A and C and read through ports A and B. ADDTOG line 80 is connected to the MSB of an address terminal of port C on tri-port RAM 130 and to an inverter 132, which inverts the address toggle signal and conveys the inverted signal on a line 148 to the MSB of an address terminal of ports A and B. The branch metrics module also includes a 6-bit register 134, a digital subtraction module 136, a 6-bit register 138, a NOR gate 140, a NAND gate 142, and a 3-bit register 144.

A SYSRSTn line 146 conveys the system reset signal to 3-bit register 144. SYSCLK lines 150 are coupled to each of 6-bit registers 134 and 138, and to 3-bit register 144, providing a 20 megahertz system clock (in the preferred embodiment), which toggles the input signals of the registers from their D inputs to their Q outputs (if the registers are enabled by the signal applied to their enable terminals). Output data from port A of tri-port RAM 130 are conveyed on lines 152 to a B input of digital subtraction module 136 and to the D terminals of 6-bit register 134. The enable terminal of 6-bit register 134 is controlled by the signal from the output of NAND gate 142, which is also coupled through a line 154 to the enable terminal of 3-bit register 144. The output terminals of 6-bit register 134 are coupled through lines 156 into the A inputs of digital subtraction module 136. A line 158 conveys a carry out signal from the digital subtraction module to one of the two inverting inputs of NAND gate 142, the non-inverting input being connected to RESETn line 84. This carry out signal is high if the value of the data applied to the B inputs of the digital subtraction module is greater than the value of the data applied to the A inputs. The actual difference between the data supplied to the A and B inputs (A-B) is conveyed on lines 160 to the D inputs of 6-bit register 138. A reset signal is applied through a line 162 to a reset terminal of this 6-bit register from the output of NOR gate 140. The difference between the data applied to the A and B inputs of digital subtraction module 136 is clocked out of the 6-bit register with each system clock 150 on lines 164; these lines are connected to the inputs of port A on tri-port RAM 130.

The operation of branch metrics module 46 is as follows. Each bit of information that is transmitted is represented by one of eight orthogonal words or symbols in the preferred embodiment. Orthogonal decoder 42 determines a correlation value for each of the eight possible symbols; these correlation values can range between 0 and 63, inclusive. BMADD lines 68 identify the specific one of the eight possible orthogonal words or symbols that is currently being input to port C of tri-port RAM 130, and the corresponding correlation value of that symbol is supplied over DIDATA lines 66 from the orthogonal decoder. The correlation value corresponding to the symbol determined by the orthogonal decoder are written into port C of the tri-port RAM in response to the branch metric write signal on BMWRn line 70. The signal on ADDTOG line 80 determines whether the correlation data a