Sequence detection
09991990 · 2018-06-05
Assignee
Inventors
- Giovanni Cherubini (Rueschlikon, CH)
- Roy Cideciyan (Rueschlikon, CH)
- Simeon Furrer (Altdorf, CH)
- Marcel Kossel (Reichenburg, CH)
- Hazar Yüksel (Kilchberg, CH)
Cpc classification
H03M13/6577
ELECTRICITY
H03M13/3961
ELECTRICITY
H04L1/0052
ELECTRICITY
H04L1/0054
ELECTRICITY
International classification
H04L25/03
ELECTRICITY
Abstract
Calculating path metrics, associated with respective states of an n-state trellis, by accumulating branch metrics in a sequence detector. Each path metric is represented by N bits plus a wrap-around bit for indicating wrap-around of the N-bit value of that path metric.
Claims
1. A path metric unit for calculating path metrics, associated with respective states of an n-state trellis, by accumulating branch metrics in a sequence detector, each path metric being represented by N bits plus a wrap-around bit for indicating wrap-around of the N-bit value of that path metric, the path metric unit comprising: a set of pipeline stages for receiving said branch metrics and adapted to select, for each state of the trellis, a pair of candidate path metrics from a set of partial path metrics, produced using said branch metrics, for that state; and an output pipeline stage connected to receive said pair of candidate path metrics for each state and adapted to produce for that state a select signal, for selecting an optimum one of the pair as the path metric for that state, by comparing each of the N-bit values and the wrap-around bits of the pair; wherein said candidate path metrics and select signal for each state are fed back from the output pipeline stage to said set of pipeline stages which is further adapted to produce pairs of speculative partial path metrics for each state by adding corresponding branch metrics to the pairs of candidate path metrics, and to select a said partial path metric from each pair of speculative partial path metrics in dependence on the select signal for the candidate path metrics from which that pair was produced.
2. A path metric unit as claimed in claim 1 wherein said set of pipeline stages is further adapted to select said pair of candidate path metrics for each state from the partial path metrics for that state by comparing each of the N-bit values and the wrap-around bits of pairs of the partial path metrics and selecting an optimum one of each pair until one pair remains as the pair of candidate path metrics for that state.
3. A path metric unit as claimed in claim 2 wherein said set of pipeline stages includes, for each of said pairs of partial path metrics, a selection circuit for selecting said optimum one of the pair, the selection circuit comprising: a comparator and an inverting comparator connected for parallel comparison of the N-bit values of the pair; an XOR gate, connected in parallel with the comparators, for comparing the wrap-around bits of the pair; and a multiplexer circuit adapted to select said optimum one of the pair in dependence on outputs of said comparators and XOR gate.
4. A path metric unit as claimed in claim 3 wherein the output stage comprises, for each state of the trellis, a select-signal circuit comprising: a comparator for comparing the N-bit values of the candidate path metrics for that state; an XOR gate, connected in parallel with the comparator, for comparing the wrap-around bits of the candidate path metrics for that state; and a multiplexer circuit adapted to produce said select signal in dependence on outputs of the comparator and XOR gate of the select-signal circuit.
5. A path metric unit as claimed in claim 1 wherein said set of pipeline stages consists of a single pipeline stage.
6. A path metric unit as claimed in claim 4 wherein said set of pipeline stages consists of a single pipeline stage adapted, for each state of the trellis, to produce four partial path metrics by selection thereof from respective pairs of speculative partial path metrics, said single pipeline stage having two said selection circuits, connected in parallel, to select said candidate path metrics from respective pairs of the partial path metrics.
7. A path metric unit as claimed in claim 1 wherein the output pipeline stage is further adapted to select said optimum one of the pair of candidate path metrics for each state, in dependence on said select signal, as the path metric for that state, and to output the path metric for each state.
8. A sequence detector for detecting symbol values corresponding to a sequence of input samples produced from an analog signal transmitted over a channel and sampled at the channel output, the sequence detector comprising: a branch metric unit for receiving the input samples and adapted to calculate, for each input sample and each state of an n-state trellis, branch metrics for respective possible transitions to that state corresponding to the input sample; a path memory unit as claimed in claim 1 arranged to receive said branch metrics from the branch metric unit, the path metric unit being further adapted to select, for each state of the trellis, a latest symbol value in a survivor path to that state in dependence on said select signal for that state; and a survivor memory unit arranged to receive said latest symbol value in the survivor path to each state from the path metric unit and adapted to select, at the end of said sequence of input samples, a survivor path corresponding to said sequence.
9. A sequence detector as claimed in claim 8, wherein said set of pipeline stages of the path metric unit is further adapted to select said pair of candidate path metrics for each state from the partial path metrics for that state by comparing each of the N-bit values and the wrap-around bits of pairs of the partial path metrics and selecting an optimum one of each pair until one pair remains as the pair of candidate path metrics for that state.
10. A sequence detector as claimed in claim 9 wherein said set of pipeline stages of the path metric unit includes, for each of said pairs of partial path metrics, a selection circuit for selecting said optimum one of the pair, the selection circuit comprising: a comparator and an inverting comparator connected for parallel comparison of the N-bit values of the pair; an XOR gate, connected in parallel with the comparators, for comparing the wrap-around bits of the pair; and a multiplexer circuit adapted to select said optimum one of the pair in dependence on outputs of said comparators and XOR gate.
11. A sequence detector as claimed in claim 10 wherein said output stage of the path metric unit comprises, for each state of the trellis, a select-signal circuit comprising: a comparator for comparing the N-bit values of the candidate path metrics for that state; an XOR gate, connected in parallel with the comparator, for comparing the wrap-around bits of the candidate path metrics for that state; and a multiplexer circuit adapted to produce said select signal in dependence on outputs of the comparator and XOR gate of the select-signal circuit.
12. A sequence detector as claimed in claim 11 wherein said set of pipeline stages of the path metric unit consists of a single pipeline stage.
13. A sequence detector as claimed in claim 8 wherein said input samples are represented in the detector by unsigned binary values.
14. A method for calculating path metrics, associated with respective states of an n-state trellis, by accumulating branch metrics in a sequence detector, each path metric being represented by N bits plus a wrap-around bit for indicating wrap-around of the N-bit value of that path metric, the method comprising: receiving said branch metrics and, in a set of pipeline stages, selecting for each state of the trellis a pair of candidate path metrics from a set of partial path metrics, produced using said branch metrics, for that state; in an output pipeline stage, receiving said pair of candidate path metrics for each state and producing for that state a select signal, for selecting an optimum one of the pair as the path metric for that state, by comparing each of the N-bit values and the wrap-around bits of the pair; and feeding back said candidate path metrics and select signal for each state from the output pipeline stage to said set of pipeline stages and therein producing pairs of speculative partial path metrics for each state by adding corresponding branch metrics to the pairs of candidate path metrics, and selecting a said partial path metric from each pair of speculative partial path metrics in dependence on the select signal for the candidate path metrics from which that pair was produced.
15. A method as claimed in claim 14 including, in said set of pipeline stages, selecting said pair of candidate path metrics for each state from the partial path metrics for that state by comparing each of the N-bit values and the wrap-around bits of pairs of the partial path metrics and selecting an optimum one of each pair until one pair remains as the pair of candidate path metrics for that state.
16. A method as claimed in claim 15 wherein said set of pipeline stages consists of a single pipeline stage.
17. A method as claimed in claim 15 wherein said set of pipeline stages consists of a single pipeline stage, the method including in said single pipeline stage: producing, for each state of the trellis, four partial path metrics by selection thereof from respective pairs of speculative partial path metrics; and selecting said candidate path metrics in parallel from respective pairs of the partial path metrics.
18. A method as claimed in claim 14 including, in said output pipeline stage, selecting said optimum one of the pair of candidate path metrics for each state, in dependence on said select signal, as the path metric for that state, and outputting the path metric for each state.
Description
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
DETAILED DESCRIPTION
(7) The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
(8) The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
(9) Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
(10) Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the C programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
(11) Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
(12) These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
(13) The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
(14) The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
(15) The block diagram
(16) The sequence detector 3 implements a recursive algorithm for detecting the most-probable input symbol sequence to the channel. The Viterbi algorithm is commonly used as the recursive method here. In the embodiment described below, sequence detector 3 uses the Viterbi algorithm to implement a Viterbi detector.
(17)
(18) The component units 5, 6 and 7 of sequence detector 3 are implemented as a series of pipeline stages which process input samples in a succession of time-steps k=0, 1, . . . (K1) corresponding to a sequence of K input samples z.sub.k. The BMU 5 can be implemented in known manner to generate branch metrics .sub.k corresponding to each input sample z.sub.k for each state of the trellis. A brief description of BMU operation is given below to assist understanding of the PMU operation described later.
(19) An ISI channel has a discrete-time impulse response with L+1 channel coefficients where L>0. In particular, the channel is modelled by its discrete-time impulse-response sequence h=(h.sub.0, h.sub.1, . . . , h.sub.L) where L is the number of interfering channel coefficients (channel memory). For a symbol u.sub.k input to the channel at time k, the corresponding channel output y.sub.k can be expressed as y.sub.k=.sub.i=0.sup.Lh.sub.iu.sub.ki and is thus a function of u.sub.k and the L previous symbols u.sub.ki to u.sub.kL. This output is corrupted by additive white Gaussian noise (AWGN) w.sub.k, whereby the resulting input sample at sequence detector 1 is given by z.sub.k=y.sub.k+w.sub.k. The BMU 5 receives each input sample z.sub.k and also receives the channel coefficient vector h=(h.sub.0, h.sub.1, . . . , h.sub.L) described above. For each input sample z.sub.k, the coefficient vector h is used to produce hypothesized input values in a hypothesized value generator (hereinafter HVG) of the BMU. For example, with two post-cursor per-survivor decision-feedback taps {h.sub.1, h.sub.2}, i.e. L=2, the HVG constructs hypothesized input values, denoted by z.sub.k.sup.h, by taking the inner product of the symbols .sub.k1, .sub.k2 in each survivor path with the post-cursor discrete-time channel impulse-response sequence {h.sub.1, h.sub.2} and adding h.sub.0u.sub.k to the result, i.e. z.sub.k.sup.h=u.sub.k+h.sub.1.sub.k1+h.sub.2.sub.k2u.sub.k (where
is the symbol constellation of the transmission scheme and we assume here, without loss of generality, that the main-cursor tap h.sub.0=1). The hypothesized input values z.sub.k.sup.h are what the input sample z.sub.k would be for a certain permutation of transmitted input symbols {u.sub.k, u.sub.k1, u.sub.k2} in the absence of noise.
(20) The BMU 5 compares each input sample z.sub.k with the hypothesized input values z.sub.k.sup.h and selects, using the outcomes of such comparisons for each state .sub.k+1 of the trellis, an optimum (e.g. smallest) branch metric .sub.k for each possible transition to that state from the preceding state .sub.k. The branch metrics may be calculated, for example, as:
.sub.k(.sub.k,.sub.k+1)=(z.sub.kz.sub.k.sup.h).sup.2,
for z.sub.k.sup.h consistent with previous state and symbol decisions in the survivor paths. In general, however, a branch metric .sub.k always represents distance between an input sample and a hypothesized value, and is thus by definition a positive value. Hence, a branch metric can be conveniently represented in unsigned binary format.
(21) The branch metrics .sub.k calculated for each state of the trellis are supplied by BMU 5 to PMU 6. Operation of PMU 6 will be described below for an exemplary trellis with n=8 states shown in
(22) The PMU 6 of this embodiment is implemented as a set of eight sub-units (sub-PMU's) as illustrated schematically in
.sub.k(.sub.k,.sub.k+1)=.sub.k(.sub.k)+.sub.k(.sub.k,.sub.k+1)
where .sub.k(.sub.k) is the path metric for state .sub.k. The sub-PMU then selects the optimum (here smallest) partial path metric as the path metric .sub.k+1(.sub.k+1) for its state .sub.k+1 after the current time step:
(23)
For example, .sub.k+1(0) computed in the sub-PMU for =0 is given by:
.sub.k+1(0)=min(.sub.k(0,0),.sub.k(2,0),.sub.k(4,0),.sub.k(6,0).
(24) In each sub-PMU, the selected path metric determines which transition .sub.k.fwdarw..sub.k+1 in the
(25) Like the branch metrics, the path metrics are always positive by definition. The path metric values can thus be conveniently represented in unsigned binary format. However, the path metrics as defined are unbounded, and would therefore require infinite resolution in the binary domain. It is therefore necessary to normalize the path metrics. Suppose that it is sufficient to represent the values of path metrics () by N bits. In PMU 6, each path metric () (and hence each partial path metric .sub.k(.sub.k, .sub.k+1)) is represented by N bits (b.sub.1, b.sub.2, . . . b.sub.N) plus an extra, wrap-around bit (denoted here by b.sub.0) for indicating wrap-around of the N-bit value of that path metric. A path metric can thus be represented in PMU 6 by ()=(b.sub.0, b.sub.1, . . . , b.sub.N). All path metrics are set to the same value, conveniently zero, at time k=0, i.e. (.sub.0)=(0, 0, . . . , 0). In this case, regardless of whether two's complement or unsigned binary representation is used, the extra wrap-around bit b.sub.0 is set to zero at time k=0.
(26) The PMU 6 (and hence each of the parallel sub-PMU's in
(27) In step 10 of
(28) The above PMU operation can be fully understood by considering operation of the sub-PMU for state =0. The structure of this sub-PMU is shown in detail in
(29) In the
.sub.k1(0,0),.sub.k1(2,0),.sub.k1(4,0) and .sub.k1(6,0),
and, from these, selects two candidate PM's .sub.k.sup.0(0) and .sub.k.sup.1(0) for state =0. The pair of candidate PM's .sub.k.sup.0(0) and .sub.k.sup.1(0) are then stored by the second bank of pipeline registers. The sub-PMU circuit has an output pipeline stage 32 connected to the second bank of registers, for receiving the candidate PM's output in each time step. As the pair of candidate PM's .sub.k.sup.0(0) and .sub.k.sup.1(0) are calculated in the central stage, the output stage thus receives the candidate PM's .sub.k1.sup.0(0) and .sub.k1.sup.1(0) for time-step k2. Output stage 32 selects the optimum one of the candidate PM's .sub.k1.sup.0(0) and .sub.k1.sup.1(0) as the path metric .sub.k1.sup.0(0) and .sub.k1(0) for state .sub.k1=0.
(30) The output stage 32 of the sub-PMU is implemented here as a select-signal circuit. The select-signal circuit comprises a comparator, an XOR gate, and a multiplexer circuit, comprising two multiplexers (mux) 33, 34 and an inverter 35, all connected as shown. In particular, the comparator receives the amplitude bits (b.sub.1, . . . , b.sub.N) of the candidate PM's .sub.k1.sup.0(0) and .sub.k1.sup.1(0) and thus compares the N-bit values of the two candidate path metrics. The comparator outputs a 1-bit signal c.sub.k2,amp whose value depends on the result of the comparison. The signal c.sub.k2,amp is supplied to a first input of multiplexer 33. Inverter 35 also inverts c.sub.k2,amp and supplies the inverted signal to a second input of multiplexer 33. The XOR gate of this circuit is connected in parallel with the comparator and receives the wrap-around bits b.sub.0 of the candidate PM's .sub.k1.sup.0(0) and .sub.k1.sup.1(0). The XOR gate thus compares the wrap-around bits b.sub.0 and outputs a 1-bit signal c.sub.k2,wrap whose value depends on the result of the comparison. The signal c.sub.k2,wrap is supplied to multiplexer 33 for determining which of its two inputs is supplied to the multiplexer output. This output of multiplexer 33 constitutes the select signal described above, denoted by c.sub.k2,sel, for selecting between the candidate PM's .sub.k1.sup.0(0) and .sub.k1.sup.1(0). In particular, these candidate PM's .sub.k1.sup.0(0) and .sub.k1.sup.1(0) provide respective inputs to the second multiplexer 34. The select signal c.sub.k2,sel supplied to this multiplexer 34 determines which of its two inputs is supplied to the multiplexer output 36. The selected candidate .sub.k1.sup.0(0) and .sub.k1.sup.1(0) constitutes the optimum path metric .sub.k1(0) for state .sub.k1=0.
(31) Feedback connections, indicated schematically by arrows in
.sub.k1.sup.0(0,0)=.sub.k1.sup.0(0)+.sub.k1(s.sub.0) and
.sub.k1.sup.1(0,0)=.sub.k1.sup.1(0)+.sub.k1(s.sub.0)
(32) The four multiplexers following the adder pairs receive the pairs of speculative PPM's at their inputs as shown. Each multiplexer also receives the corresponding select signal c.sub.k2,sel, produced by and fed back from output stage 32 of the PMU in the current time step, for selecting between the two speculative PPM's. In particular, each multiplexer selects one of its input pair of speculative PPM's to be supplied to the multiplexer output in dependence on the select signal c.sub.k2,sel for the candidate PMs from which that pair was produced. The speculative PPM selected in each case provides one of the four PPM's .sub.k1(0,0), .sub.k1(2,0), .sub.k1(4,0), .sub.k1(4,0) for time-step k1. For instance, the PPM .sub.k1(0,0) is selected from .sub.k1.sup.0(0,0) and .sub.k1.sup.1(0,0) in dependence on the select signal c.sub.k2,sel produced in output stage 32 of the illustrated sub-PMU for state =0.
(33) The subsequent circuitry in central pipeline stage 30 selects the candidate PM's from the resulting PPM's .sub.k1(0,0), .sub.k1(2,0), .sub.k1(4,0), .sub.k1(4,0). This is again done by comparing each of the N-bit values and the wrap-around bits of pairs of the partial path metrics, and selecting an optimum one of each pair, until one pair remains as the pair of candidate path metrics for state =0. In the present example with four PPM's per state, there are only two pairs of PPM's to be processed. For each pair, the central pipeline stage 30 includes a selection circuit for selecting the optimum one of the pair. The two selection circuits, indicated generally at 38 and 39, are connected in parallel as shown. Selection circuit 38 receives the pair of PPMs .sub.k1(0,0), .sub.k1(2,0), and selection circuit 39 receives the pair of PPMs .sub.k1(4,0), .sub.k1(6,0). Each selection circuit 38, 39 comprises a comparator and an inverting comparator which are connected in parallel, an XOR gate connected in parallel with the comparators, and a multiplexer circuit comprising two multiplexers, all connected as shown. In each selection circuit 38 and 39, the comparator and inverting comparator receive the amplitude bits (b.sub.1, . . . b.sub.N) of the input PPM's and thus compare the N-bit values of the PPM's. The comparator in each circuit outputs a 1-bit signal c.sub.k1,amp.sup.0 (circuit 38) or c.sub.k1,amp (circuit 39) whose value depends on the result of the comparison. The inverting comparator outputs the inverse of this 1-bit signal, i.e.
(34) The operation of the selection circuits 38, 39 and the select-signal generation circuit of output stage 32 in each sub-PMU is functionally equivalent (the slight difference in circuit design for the output stage is explained below). The rules determining the bit values of the signals output by the comparators, XOR gates and multiplexers of these circuits can be generalized as follows.
(35) With the trellis of
.sub.k+1(0)=min(.sub.k(0,0),.sub.k(2,0),.sub.k(4,0),.sub.k(6,0)
We define:
.sub.k,0i(.sub.k,.sub.k+1)=(b.sub.0, . . . ,b.sub.i)0iN
(36) For a state .sub.k+1 in the trellis, the comparison function for the wrap-around bits (implemented by the XOR gates) is defined by:
(37)
(38) where both .sub.k and .sub.k represent a PPM .sub.k(.sub.k, .sub.k+1) corresponding to an allowed transition from state .sub.k to state .sub.k+1, or a candidate PM {.sub.k+1.sup.0(.sub.k), .sub.k+1.sup.1(.sub.k)}.
(39) The comparison function for the N amplitude bits (implemented by the comparators) is defined by:
(40)
(41) The function for generating the select signals (implemented by the inverting comparators and first multiplexer of circuits 38 and 39, and by the inverter 35 and first multiplexer 33 of output stage 32) is defined by:
(42)
where
(43) In each sub-PMU, a candidate PM is chosen in the second multiplexer of circuit 38 as:
(44)
The other candidate PM .sub.k+1.sup.1(.sub.k+1) chosen in parallel in the second multiplexer of circuit 39. The path metric .sub.k+1(.sub.k+1) is chosen in the output stage by applying the candidate PM's .sub.k+1.sup.0(.sub.k+1) and .sub.k+1.sup.1(.sub.k+1) as inputs .sub.k and .sub.k to the rules procedure described above. The complete procedure for the PM calculation is expressed in the following algorithm.
Path Metric Update for
.sub.k(.sub.k,.sub.k+1);Input:
.sub.k+1(.sub.k+1);Output:
(45) Initialization 1. 0;
(46) Calculate Candidate Path Metrics 2. for k=0 to K1 do 3. for .sub.k+1=0 to 7 do 4. 0; 5. for .sub.k{.sub.k+1/4, .sub.k+1/4+4} do 6. .sub.k.sub.k(.sub.k, .sub.k+1); 7. .sub.k.sub.k(.sub.k+2, .sub.k+1); 8. .sub.k+1.sup.(.sub.k+1)pathMetricComparison(.sub.k, .sup.k); 9. +1; 10. end for 11. end for
(47) Path Metric Update after Pipelining (in PMU Output Stage) 12. For .sub.k=0 to 7 do 13. .sub.k.sub.k.sup.0(.sub.k); 14. .sub.k.sub.k.sup.1(.sup.k); 15. .sub.k(.sub.k)pathMetricComparison(.sub.k, .sub.k); 16. end for 17. end for
(48) Comparison of Two Partial or Candidate Path Metrics 18. function pathMetricComparison(.sub.k, .sub.k) 19. if (.sub.k,1N.sub.k,1N) then 20. c.sub.k,amp(.sub.k, .sub.k)1; 21. else 22. c.sub.k,amp(.sub.k, .sub.k)0; 23. end if 24. if (.sub.k, .sub.k,00) then 25. c.sub.k,sel(.sub.k, .sub.k)c.sub.k,amp(.sub.k, .sub.k); 26. else 27. c.sub.k,sel(.sub.k, .sub.k)
(49) Returning to
(50) The state and symbol decisions from all sub-PMU's in each time step are supplied to SMU 7 for updating the n survivor paths accordingly. SMU 7 can be implemented in known manner, e.g. as a register exchange unit or a traceback unit, to store the survivor paths. At the end of the input sample sequence, the SMU then outputs the detected symbol sequence corresponding to the optimum (most likely) survivor path. As described earlier, the symbol decisions from PMU 6 are also fed back to timing recovery circuit 4 of receiver 1 for timing error detection.
(51) As indicated by dashed output 36 in
(52) The use of N amplitude bits (b.sub.1, b.sub.2, . . . b.sub.N) plus the wrap-around bit b.sub.0 in the PMU operation above provides inherent normalization of the path metrics. For example, when an N-bit value exceeds 2.sup.N1, this is indicated by a bit-flip of wrap-around bit b.sub.0 and thus accommodated in the comparison rules above. This allows the path metrics to be normalized without external intervention to the operation of the path metric unit. The comparison operations can be readily performed by simple, functionally equivalent circuits throughout. Most importantly, it will be seen that the addition operation required to compute the speculative PPM's is performed, using the candidate PM's fed back from the output pipeline stage, at the same time as the select signal for choosing between those candidates is generated in the output stage. The correct PPM's can thus be immediately selected from the speculative PPM's using the corresponding select signals computed in, and fed back from, the output stage for the candidates. This significantly reduces the propagation delay of the longest path, which determines the highest achievable data rates, in the PMU. (The longest path is the path containing the addition operations, and thus corresponds to central pipeline stage 30 above). In particular, the propagation delay of the longest path is reduced by that of the output stage circuitry. In addition, the use of an inverting comparator in parallel with the comparator in circuits 38, 39 of the central PMU stage avoids the need for an inverter at the output of the comparator. This further reduces the propagation delay of the longest path by that of an inverter. The inverter 35 is used in the output stage, which does not contribute to the longest path, to simplify the output stage circuitry.
(53) The PMU of this embodiment provides a high-speed PMU with embedded normalization, allowing the sequence detector to accommodate higher data rates. This is achieved with simple circuitry using repeated, functionally-equivalent circuits in the PMU stages. These features are especially advantageous when a transmission scheme with many encoder and/or channel states is adopted. The PMU does not require state pinning and does not otherwise require a specific transmission scheme for its operation. The PMU can operate with or without a coded or coded-modulation scheme, such as the TCM (Trellis-Coded Modulation), and the principles described can be applied with any number of encoder and/or channel states. A specific modulation scheme, such as two-level pulse-amplitude modulation (2-PAM) is not required, i.e., multi-level signaling can be exploited with the PMU. In addition, the use of two's complement representation for input samples is not required for detector operation. While two's complement representation may be used if desired, in general signed or unsigned binary values may be used in the detector. Using unsigned binary representation for the input samples (and hence the branch and path metrics in the detector) allows the additional receiver circuitry needed to convert samples from ADC 2 into two's complement format to be avoided, further simplifying the receiver circuitry.
(54) Various changes and modifications can of course be made to the exemplary embodiments described. For example, while an optimum metric is selected as the smallest metric above, embodiments where an optimum metric is the largest can be envisaged. The functionality described can be readily adapted to accommodate any number of detector states. The set of pipeline stages which calculates the PPM's and candidate PM's may in general comprise one or more pipeline stages. The candidate PM's may be selected over more parallel/serial selection circuits in the sub-PMU's and/or over more parallel sub-PMUs as desired to accommodate more detector states.
(55) Embodiments can also implement sequence detectors other than Viterbi detectors. For example, the principles described can be readily applied to trellis-coded-modulation decoders.
(56) The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.