The following relates to methods and circuitry in a receiver.
When a signal is processed at a receiver, the signal may be adjusted by an offset. As an example, an adaptive decision feedback equalizer may include at least one circuit branch in which the signal in the branch is adjusted by an offset and then sliced. As another example, a 4-PAM detector may include a circuit branch for each decision threshold. The signal in each circuit branch may be adjusted by an offset having a value corresponding to the decision threshold. In these two examples, the offset may be a DC value that is added to or subtracted from the signal.
However, in some cases the offset values used in the receiver may deviate from their optimal values, and this may affect the performance of the receiver.
Embodiments are described in which a circuit in a receiver has a plurality of branches, with each branch including an adjustor to adjust the branch signal by an offset value. Selection circuitry takes one of the branches offline by selecting the output of that branch as an offline value, and by selecting the output of one or more of the other branches as a data decision value. The selection circuitry changes which branch is taken offline during the operation of the circuit. When a branch is taken offline, an offset value associated with that branch may be updated.
In one embodiment, there is provided a circuit for use in a receiver. The circuit comprises a plurality of branches. Each one of the branches is to receive the same input signal, and each one of the branches includes: an adjustor to adjust an input of the adjustor by an offset, and decision circuitry downstream from the adjustor to convert an input of the decision circuitry to one of two possible output values. The offset associated with at least one of the branches is selectable from a finite number of values, and the offset selected is to change during operation of the circuit. The circuit further comprises selection circuitry coupled to an output of each of the branches. The selection circuitry is to select the output of one the branches as an offline value and to select the output of one or more other of the branches as a data decision value. The selection circuitry is further to change which output of the branches is selected as the offline value during the operation of the circuit such that each one of the branches has its output selected as the offline value at a respective different point in time during the operation of the circuit.
In another embodiment, there is provided a method of operating a circuit in a receiver. The method comprises receiving the same signal at an input of each one of a plurality of branches. Each one of the branches includes an adjustor and decision circuitry downstream from the adjustor. In each one of the branches, the following is performed: adjusting an input of the adjustor by an offset, and converting an input of the decision circuitry to one of two possible output values. The method further comprises selecting an output of one of the branches as an offline value, and selecting an output of one or more other of the branches as a data decision value. The following is also performed during operation of the circuit: (i) changing a value of the offset associated with at least one of the branches, the value of the offset being changed from one of a finite number of values to another of the finite number of values; and (ii) changing which output of the branches is selected as the offline value such that each one of the branches has its output selected as the offline value at a respective different point in time during the operation of the circuit.
Other aspects and features will become apparent to those of ordinarily skill in the art upon review of the following description.
Embodiments will be described, by way of example only, with reference to the accompanying figures wherein:
For illustrative purposes, specific example embodiments will now be explained in greater detail below in conjunction with the figures.
The embodiments set forth herein represent information sufficient to practice the claimed subject matter. Upon reading the following description in light of the accompanying figures, those of sufficient skill will understand the concepts of the claimed subject matter and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
Moreover, it will be appreciated that any module, component, or device exemplified herein that executes instructions may include or otherwise have access to a non-transitory computer/processor readable storage medium or media for storage of information, such as computer/processor readable instructions, data structures, program modules, and/or other data. A non-exhaustive list of examples of non-transitory computer/processor readable storage media includes magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, optical disks such as compact disc read-only memory (CD-ROM), digital video discs or digital versatile disc (i.e. DVDs), Blu-ray Disc™, or other optical storage, volatile and non-volatile, removable and non-removable media implemented in any method or technology, random-access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technology. Any such non-transitory computer/processor storage media may be part of a device or accessible or connectable thereto. Any application or module herein described may be implemented using computer/processor readable/executable instructions that may be stored or otherwise held by such non-transitory computer/processor readable storage media.
With reference to
During operation, a stream of binary digits 109 (“bits”) is to be sent from the transmit side 104 to the receive side 106. The channel 108 cannot support the literal propagation of the stream of bits directly (i.e. the channel medium cannot literally carry l's and 0's). Instead, the bits 109 need to be mapped or modulated onto corresponding waveforms that can propagate through the channel 108. This is achieved using the modulator 112.
In this example the modulator 112 performs binary pulse amplitude modulation (binary-PAM) or non-return-to-zero (NRZ), such that it outputs a waveform s(t) in which the information bit 1 is represented by a rectangular pulse of amplitude A (a positive voltage) and the information bit 0 is represented by a rectangular pulse of amplitude −A (a negative voltage). This is shown by reference character 115 in
The transmitted waveform s(t) propagates through the channel 108 and is corrupted by noise. The channel 108 is bandlimited and disperses and/or spreads the waveform s(t) passing through it. This degradation of the waveform s(t) is referred to as intersymbol interference (ISI), and it is desired to mitigate the effect of the ISI at the receive side 106 via equalization. The received signal r(t) is therefore subject to equalization and detection in the equalizer and detector 114. The output of the equalizer and detector 114 is a detected digital bit stream 113.
The digital communications system 102 has been simplified for ease of explanation. In actual implementation, the transmit side 104 and the receive side 106 may include other components, which may be related to the transmission of the data, depending upon the specific implementation. Examples of such components include (but are not limited to): pre-equalization/pre-emphasis, scrambling/descrambling, encoding/decoding (such as 8B/10B or 64B/66B), and forward error correction (FEC) encoding and decoding to improve bit error rate. As one specific example, it is common to perform pre-equalization in the transmitter, which is also referred to as pre-emphasis.
In any case, the signal y(t) is adjusted by the output x(t) of the feedback filter 206 to produce an equalized signal z(t). For example, the output x(t) of the feedback filter 206 may be subtracted from the signal y(t) to obtain z(t), as illustrated. The feedback filter 206 feeds back a weighted version of previous decisions, such that x(t) helps mitigate the ISI introduced by previously transmitted data.
The equalized signal z(t) optionally passes through an amplifier (not shown in the illustrated embodiments), and then to the decision circuitry, which in this illustrated embodiment is a symbol detector in the form of a slicer 210, since binary PAM or NRZ is being used. The slicer 210 performs the symbol detection by outputting a “1” if the equalized signal z(t) at the sample point is greater than zero (this represents a decision of bit ‘1’), and by outputting a “−1” if the equalized signal z(t) at the sample point is less than zero (this represents a decision of bit ‘0’). The slicing occurs once every symbol period T so that a decision representing the symbol transmitted during each symbol period T is output each symbol period T. Thus, the output of the slicer is:
where T is the symbol period. The slicer 210 may be implemented using a flip-flop or clocked comparator, for example.
x(t)=b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T)+b3{circumflex over (m)}(k−3T)+b4{circumflex over (m)}(k−4T),
where {circumflex over (m)}(k−T) is the previous decision, {circumflex over (m)}(k−2T) is the decision two symbol periods ago, {circumflex over (m)}(k−3T) is the decision three symbol periods ago, etc. That is, the output of the feedback filter 206 x(t) is a linear combination of previous decisions each weighted by a value bi referred to as a “tap”. Four taps (bi, b2, b3, and b4) are used as an example in this illustrated embodiment. More or fewer taps are possible. Also, the exact way in which the taps are combined with the previous decision values
is only one example.
An offline error circuit 312 is also illustrated in the embodiment in
b
i
n+1
=b
i
n
+μê(k){circumflex over (m)}(k−iT)
where μ is a correlation coefficient scaling factor, ê(k) represents the sliced error value, and {circumflex over (m)}(k−iT) is the ith previous decision. The value n represents the iteration of the update. That is, the (n+1)th value of the tap bi is updated by adding the nth value of the tap bi to μê(k){circumflex over (m)}(k−iT)
In this SS-LMS method, each tap bi is updated each iteration by an amount μ. When the sliced error value ê(k) is not correlated with the decision {circumflex over (m)}(k−iT), the term ê(k){circumflex over (m)}(k−iT) will average out to zero over time (i.e. it will average out to zero over multiple symbols). On the other hand, when the sliced error value ê(k) is correlated with the decision {circumflex over (m)}(k−iT), the term ê(k){circumflex over (m)}(k−iT) will be biased in one direction, which will cause the change in the value of the tap to be biased in one direction, and in this way the tap will adapt over time to its optimal value.
The SS-LMS method is only one possible way of updating the taps using the error signal. Other ways may instead be used. By way of example, other methods for updating the taps are: least-mean square (LMS), sign-data LMS (sign of the data, quantized error), and sign-error LMS (sign of error, quantized data, but not applicable to NRZ data). Sign-data LMS, Sign-error LMS, and SS-LMS are simplifications of the general LMS method.
The DFE illustrated in
In some implementations, it is difficult to compute the error signal e(t) in the manner discussed above and illustrated in
In view of the above, there is illustrated in
The comparator 404 is an example of comparison circuitry. The comparator 404 operates as follows: the input values are compared to see if the condition to be compared is satisfied. If so, one value is output (e.g. a “1”), and if not another value is output (e.g. a “0”). Specifically, for comparator 404, one value (e.g. a “1”) can be output if the decision {circumflex over (m)}(k) and the selected error offset value are the same, indicating that the error value is not erroneous. Another value (e.g. a “0”) can be output if the decision and the selected error offset value are not the same, indicating that the error value is erroneous.
A possible benefit of this adaptive DFE illustrated in
In an alternative embodiment, not illustrated, it is possible to modify the
For optimal tap adaptation, the offline branch 312 used to generate ê(k), comprising slicer 310 (and possibly other components not illustrated, such as optional amplification prior to slicing), should be the same as the circuit used to generate the decision {circumflex over (m)}(k), comprising slicer 210. To assist in trying to achieve this, the error signal circuitry 312 can be a replica of the circuit used to generate the decision {circumflex over (m)}(k) (to the extent they include the same components). However, even if the error circuit 312 is a replica of the circuit used to generate the decision {circumflex over (m)}(k), the error circuit 312 will still have bandwidth and/or offset mismatch compared to the circuit used to generate the decision {circumflex over (m)}(k) due to the tolerance of the manufacturing process. This mismatch will be called “random” mismatch herein, and it can result in sub-optimal equalizer performance because a separate (mismatched) offline error circuit branch 312 is being used to compute the error value used to update the taps, rather than the actual online circuit branch (with slicer 210) that is used to generate the decision. This random mismatch causes the taps to possibly not be updated to their optimum value.
To help mitigate this drawback, another embodiment of an adaptive DFE is illustrated in
With reference to
During operation, when Path 0 is selected as the offline error computation path, the Path 0 Offset Select selects the offset 504 as either “1” or “−1”, and the Path 1 Offset Select selects the offset 506 as “0”. When Path 1 is selected as the offline error computation path, the Path 1 Offset Select selects the offset as either “1” or “−1”, and the Path 0 Offset Select selects the offset 504 as “0”. Over time, the following four possible selections are repeated:
The four options outlined in Table 1 are cycled through during operation of the adaptive DFE, with ê(k) being used to update the taps b1, b2, b3, and b4 only when the selected offset for the error path matches the decision {circumflex over (m)}(k). Comparison circuitry (not illustrated) is used to determine whether the selected offset for the error path matches the decision {circumflex over (m)}(k). An example of suitable comparison circuitry is a comparator, which outputs one value if the selected offset for the error path equals the decision {circumflex over (m)}(k) (indicating that the error value is not erroneous), and which outputs another value if the selected offset for the error path does not equal the decision {circumflex over (m)}(k) (indicating that the error value is erroneous).
The rate at which the selections are cycled through is implementation specific. However, as one example, the selection may change every 20,000 symbols.
The circuit of
The embodiments illustrated above assume that the output x(t) of the feedback filter 206 can be computed without too much lag so that x(t) contributes the correct value to produce equalized output z(t). However, this might not be the case, such that a “look-ahead” implementation may be used in which parallel equalized solutions are generated with the correct one selected based on the value of one or more previous decisions. This is explained below.
Please return to
x(t)=b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T)+b3{circumflex over (m)}(k−3T)+b4{circumflex over (m)}(k−4T).
As discussed above, there is a delay Ds associated with the time required for the output of the slicer 210 to settle. Then, the decision {circumflex over (m)}(k) is to be multiplied by tap b1 so that it can be used as b1{circumflex over (m)}(k−T) in the next symbol period T and summed with the other terms in x(t) to produce x(t). If the time that elapses between (i) the start of a symbol period and (ii) the point when x(t) has been updated based on that symbol period, is greater than (or close to) the duration of a symbol period, then timing constraint problems can occur, as x(t) will lag too much, therefore resulting in an incorrect equalized output z(t). This timing constraint is due to the lag in computing the first few terms of x(t) (e.g. b1{circumflex over (m)}(k−T) and b2{circumflex over (m)}(k−2T)). There is usually no critical timing issue with the portion of x(t) that depends on decisions several symbols back in time (e.g. b4{circumflex over (m)}(k−4T)), as the lag of x(t) is usually not as great as this many symbol durations in the past.
To address this timing constraint, a look-ahead implementation can be used in which the first tap value (or first few tap values) of the feedback filter 206 are pre-computed in advance, with selection circuitry (such as a multiplexer) used to choose the correct pre-computed contribution once the actual previous decision value is available.
(1) an offline path 602 to compute the error value;
(2) a first data path 604 in which it is assumed in advance that the previous decision is 1, such that the b1{circumflex over (m)}(k−T) component of x(t) is b1{circumflex over (m)}(k−T)=1b1=b1, which is the offset subtracted from z(t) at adjustor 606; and
(3) a second data path 608 in which it is assumed in advance that the previous decision is −1, such that the b1{circumflex over (m)}(k−T) component of x(t) is b1{circumflex over (m)}(k−T)=−1b1=−b1, which is the offset subtracted from z(t) at adjustor 610.
A multiplexer 612 is included to select between the output of the two data paths 604 and 608. The selection is made based on the value of the actual previous decision value {circumflex over (m)}(k−T).
The look-ahead implementation illustrated in
The offline path 602 is modified compared to
−b1−1 (which assumes in advance that b1{circumflex over (m)}(k−T)=−b1 and {circumflex over (m)}(k)=−1),
−b+1 (which assumes in advance that b1{circumflex over (m)}(k−T)=−b1 and {circumflex over (m)}(k)=1),
b1−1 (which assumes in advance that b1{circumflex over (m)}(k−T)=b1 and {circumflex over (m)}(k)=−1), and
b1+1 (which assumes in advance that b1{circumflex over (m)}(k−T)=b1 and {circumflex over (m)}(k)=1).
The sliced error value ê(k) generated by the error path 602 is erroneous unless it turns out that the b1{circumflex over (m)}(k−T) component and error offset value selected in advance (offset value 614) respectively matches the actual b1{circumflex over (m)}(k−T) component and actual output decision {circumflex over (m)}(k). Such a comparison is done via comparison circuitry, which in this embodiment is a comparator 616. When these values do match, the sliced error value ê(k) is used to update the taps.
For completeness, operation of the comparison circuitry (implemented via comparator 616) is as follows: the b1{circumflex over (m)}(k−T) component of the offset 614 is compared to see if it is equal to the actual b1{circumflex over (m)}(k−T) component. This may be implemented by simply comparing the two values to see if they are equal, and if so outputting a first value indicating that there is a match. The error offset value selected in advance (offset value 614) is also compared to the actual output decision {circumflex over (m)}(k) to see if they are the equal, and if so a second value is output indicating that there is a match. If both conditions are satisfied (i.e. both the first and second values indicate that there is a match), then a third value is output indicating that the condition is satisfied and the error value is not erroneous. Otherwise, the third value indicates that the condition is not satisfied and the error value is erroneous. Thus, although comparator 616 is shown for simplicity, it might actually be implemented using two 2-input comparators (one for generating the first value and the other for generating the second value) followed by an AND gate that has as its input the first value and the second value, and produces the third value as its output.
The selected offset value 614 can be periodically cycled between the four possible values over time (i.e. between −b1−1, −b+1, b1−1, and b1+1).
In the embodiment shown in
To address this drawback,
The adaptive DFE of
During operation, the paths used to generate the decision and the offline path used to generate the error value switches, such that the taps are being updated in instances when illustrated Path 0 is used to generate the decision, in instances when illustrated Path 1 is used to generate the decision, and in instances when illustrated Path 2 is used to generate the decision.
More specifically, Path 0 includes a Path 0 Offset Select that allows for the selection of 3 possible offset values 902:
(1) b1, in the situation in which Path 0 is selected as a data path, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1, such that b1{circumflex over (m)}(k−T)=b1.
(2) b1+1, in the situation in which Path 0 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1).
(3) b1−1, in the situation in which Path 0 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=−1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1).
In this embodiment, when Path 0 is used as the offline error path, it is never assumed that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1). In these instances, when it turns out that the previous decision {circumflex over (m)}(k−T) is −1, the error value ê(k) is erroneous and is not used to update the taps. As discussed below, the error value ê(k) is also erroneous and is not used to update the taps when the actual decision {circumflex over (m)}(k) is different from the polarity of the +/−1 added offset.
It will be appreciated that the adaptive DFE in
Path 1 includes a Path 1 Offset Select that allows for the selection of 6 possible offset values 904:
(1) b1, in the situation in which Path 1 is selected as a data path, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1, such that b1{circumflex over (m)}(k−T)=b.
(2) −b1, in the situation in which Path 1 is selected as a data path, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1, such that b1{circumflex over (m)}(k−T)=−b1.
(3) b1+1, in the situation in which Path 1 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1).
(4) b1−1, in the situation in which Path 1 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=−1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1).
(5) −b1+1, in the situation in which Path 1 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1).
(6) −b1−1, in the situation in which Path 1 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=−1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1).
The situations in which the error value ê(k) is erroneous and is not used are discussed below.
Path 2 includes a Path 2 Offset Select that allows for the selection of 3 possible offset values 906:
(1) −b1, in the situation in which Path 2 is selected as a data path, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1, such that b1{circumflex over (m)}(k−T)=−b1.
(2) −b1+1, in the situation in which Path 2 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1).
(3) −b1−1, in the situation in which Path 2 is selected as the offline error path, and it is assumed in advance that the decision {circumflex over (m)}(k)=−1, and it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1).
When Path 2 is used as the offline error path, it is never assumed that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1). In these instances, when it turns out that the previous decision {circumflex over (m)}(k−T) is 1, the error value ê(k) is erroneous and is not used. As discussed below, the error value ê(k) is also erroneous and is not used when the actual decision {circumflex over (m)}(k) is different from the polarity of the +/−1 added offset.
It will be appreciated that the adaptive DFE in
The output of each of Paths 0, 1, and 2 is fed to the multiplexer 908, which selects which one of the three paths will be used as the offline path to output sliced error value ê(k), which is an offline value. The multiplexers 910 and 912 are data path select multiplexers that select the two remaining paths as the data paths.
When Path 0 is selected as the offline error path, then the data path select multiplexers 910 and 912 are configured to select Paths 1 and 2 as the data paths (specifically Path 1 being the data path in which it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1), and Path 2 being the data path in which it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1)).
When Path 1 is selected as the offline error path, then the data path select multiplexers 910 and 912 are configured to select Paths 0 and 2 as the data paths (specifically Path 0 being the data path in which it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1), and Path 2 being the data path in which it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1)).
When Path 2 is selected as the offline error path, then the data path select multiplexers 910 and 912 are configured to select Paths 0 and 1 as the data paths (specifically Path 0 being the data path in which it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is 1 (such that b1{circumflex over (m)}(k−T)=b1), and Path 1 being the data path in which it is assumed in advance that the previous decision {circumflex over (m)}(k−T) is −1 (such that b1{circumflex over (m)}(k−T)=−b1)).
The outputs of the data path select multiplexers 910 and 912 are sent to multiplexer 914, which chooses the correct decision {circumflex over (m)}(k) based on the actual previous decision {circumflex over (m)}(k−T), once the actual previous decision {circumflex over (m)}(k−T) is available.
In the adaptive DFE of
The eight options outlined in Table 2 are cycled through during operation of the adaptive DFE, with ê(k) being used to update the taps only in the instances shown in the right-most column in Table 2. Otherwise, the error value ê(k) is erroneous and is ignored. Comparison circuitry (not shown) is used to perform the comparison in the right-most column in Table 2 to determine whether the error value is erroneous. An explanation of how comparison circuitry may be implemented is provided above.
The rate at which the selections are cycled through is implementation specific. As one example, the selection may change every 20,000 symbols.
Selections 1 to 8 in Table 2 may be cycled through in any desired order. However, a benefit may be achieved if the order chosen is such that:
(1) immediately before the offline path is about to be switched back to being a data path, the polarity of the tap of the offline offset value is the same as the polarity of the tap of the data path about to be taken offline, and
(2) when the offline path switches, the polarity of the taps on the new data paths are not changed from their previous polarities.
By choosing this order, the circuit may operate in a more glitchless fashion. Note that by cycling through the eight options outlined in Table 2 in the exact order they are shown in the table (i.e. begin at selection 1, and then move down the table in sequential order, wrapping back up to selection 1 after selection 8 and repeating), then (1) and (2) above are satisfied. For example, selection 2 is immediately before Path 0 is about to be switched back to a data path. The tap polarity of Path 0 Offset Value 902 is positive (+b1). This is the same as the tap polarity of Path 1 (which is about to be taken offline in selection 3). When moving from selection 2 to selection 3, the polarity of the taps on the new data paths (Path 0 and Path 2 in selection 3) are not changed relative to selection 2. The same properties (1) and (2) above hold for the other transitions in the order outlined in Table 2.
When it is the case that the sliced error value ê(k) is not erroneous, then it is used to update the taps. In particular, in this embodiment, whenever the sliced error value ê(k) is not erroneous, then taps b2, b3, and b4 are updated, along with only the tap offset value b1 of the error path. For example, assume that Path 0 is the selected error path, and therefore the Path 0 offset 902 is either b1+1 or b1−1. Then only the Path 0 tap offset value b1 (along with taps b2, b3, and b4) are updated using ê(k) (when ê(k) is not erroneous). The offset values for Path 1 and Path 2 (i.e. the b1 value used in selected value 904 and the b1 value used in selected value 906) are not updated. In this way, whenever the error value ê(k) is not erroneous, the taps b2, b3, and b4 are updated, and the b1 tap offset component is updated only for the offline error path (not for the data paths), which results in the b1 tap offset component being adapted independently for each path, resulting in a b1 tap offset component optimal for the particular path (i.e. it will account for the specific characteristic of the particular path). Note that for Path 1, it is preferred that both the b1 tap offset component and −b1 tap offset component be adapted independently, although this is not necessary.
If the SS-LMS method is used to update the taps, then one such way of updating the taps is as follows:
(1) For taps b2, b3, and b4: bi=bi+μê(k){circumflex over (m)}(k−iT).
(2) When Path 0 is selected as the error path:
(a) for the b1 value used in the offset of Path 0: b1=b1+μê(k){circumflex over (m)}(k−T).
(b) no update to the offsets used in Paths 1 and 2.
(3) When Path 2 is selected as the error path:
(a) for the −b1 value used in the offset of Path 2: −b1=−b1=μê(k){circumflex over (m)}(k−T).
(b) no update to the offsets used in Paths 0 and 1.
(4) When Path 1 is selected as the error path and the Path 1 offset 904 includes the value b1:
(a) for the b1 value used in the offsets of Path 1: b1=b1+μê(k){circumflex over (m)}(k−T).
(b) no update to the offsets used in Paths 0 and 2.
(5) When Path 1 is selected as the error path and the Path 1 offset 904 includes the value −b1:
(a) for the −b1 value used in the offsets of Path 1: −b1=−b1−μê(k) {circumflex over (m)}(k−T).
(b) no update to the offsets used in Paths 0 and 2.
Of course, there is only a tap update if the error value is not erroneous. Otherwise, there is no tap update.
A possible drawback of the adaptive DFE of
In an alternative embodiment, the value b1 used in each offset 902, 904, and 906 could instead be updated each time the error value is not erroneous (rather than just updating the b1 component for the offline path). However, this would not result in the benefit of having a b1 tap offset component independently customized for each particular path.
(1) One data path generates the decision assuming in advance that the previous decision {circumflex over (m)}(k−T)=1 and the decision two symbol periods ago is {circumflex over (m)}(k−2T)=1, such that the component of the feedback filter representing terms b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T) is b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T)=b1+b2. This offset is added in the path prior to the slicer.
(2) Another data path generates the decision assuming in advance that the previous decision {circumflex over (m)}(k−T)=1 and the decision two symbol periods ago is {circumflex over (m)}(k−2T)=−1, such that the component of the feedback filter representing terms b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T) is b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T)=b1−b2. This offset is added in the path prior to the slicer.
(3) Another data path generates the decision assuming in advance that the previous decision {circumflex over (m)}(k−T)=−1 and the decision two symbol periods ago is {circumflex over (m)}(k−2T)=1, such that the component of the feedback filter representing terms b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T) is b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T)=−b1+b2. This offset is added in the path prior to the slicer.
(4) Another data path generates the decision assuming in advance that the previous decision {circumflex over (m)}(k−T)=−1 and the decision two symbol periods ago is {circumflex over (m)}(k−2T)=−1, such that the component of the feedback filter representing terms b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T) is b1{circumflex over (m)}(k−T)+b2{circumflex over (m)}(k−2T)=−b1−b2. This offset is added in the path prior to the slicer.
The four data paths each generate a possible correct decision. The actual correct decision is selected using multiplexers 1022, 1024, and 1026 once the actual values of {circumflex over (m)}(k−T) and {circumflex over (m)}(k−2T) are available.
Path offset selectors respectively corresponding to offsets 1012, 1014, 1016, 1018, and 1020 each select the appropriate offset for a given selection of offline path (via multiplexer 1002), for a given selection of data paths (via multiplexers 1004, 1006, 1008, and 1010), and for a given selection of possible error offset values (+1 or −1). In particular, sixteen possible configurations are cycled through, as shown in the table in
The sixteen options outlined in the table of
The rate at which the selections are cycled through is implementation specific. As one example, the selection may change every 20,000 symbols.
Selections 1 to 16 in the table in
(1) immediately before the offline path is about to be switched back to being a data path, the polarity of the taps of the offline offset value is the same as the polarity of the taps of the data path about to be taken offline, and
(2) when the offline path switches, the polarity of the taps on the new data paths are not changed from their previous polarities.
By choosing this order, the circuit may operate in a more glitchless fashion. Note that by cycling through the sixteen options outlined in the table of
When it is the case that the sliced error value ê(k) is not erroneous, then it is used to update the taps. In particular, in this embodiment, whenever the sliced error value ê(k) is not erroneous, then taps b3, and b4 are updated, along with only the selected tap offset values b1 and b2 of the offline error path. For example, assume that Path 0 is the selected offline error path, and therefore the Path 0 offset 1012 is either −b1−b2−1 or −b1−b2+1. Only the −b1 and −b2 values used in offset 1012 (along with taps b3, and b4) are updated using ê(k) (when ê(k) is not erroneous). The offsets in Paths 1 to 4 (i.e. the tap component values used in each of selected offset values 1014, 1016, 1018, and 1020) are not updated. In this way, whenever the error value ê(k) is not erroneous, the taps b3, and b4 are updated, and the b1 and b2 tap offset components are updated only for the selected offline error path (not for the selected data paths), which results in the b1 and b2 values being adapted independently for each path, thereby resulting in b1 and b2 tap offset components optimal for the particular path (i.e. they will account for the specific characteristic of the particular path). It is preferred that for each path each b1 and b2 tap component is adapted independently, although this is not necessary.
If the SS-LMS method of updating the taps is used, then one such way of updating the taps is as follows:
bin+1=bin+μê(k){circumflex over (m)}(k−iT), for taps b3, and b4;
offset−1,−1n+1=offset−1,−1n+μê(k)(({circumflex over (m)}(k−T)==−1)&&({circumflex over (m)}(k−2T)==−1)), valid for Paths 0 and 1, when the error path being adapted corresponds to {circumflex over (m)}(k−T)=−1 and {circumflex over (m)}(k−2T)=−1;
offset+1,−1n+1=offset+1,−n+μê(k)(({circumflex over (m)}(k−T)==+1)&&({circumflex over (m)}(k−2T)==−1)), valid for Paths 2 and 3, when the error path being adapted corresponds to {circumflex over (m)}(k−T)=+1 and {circumflex over (m)}(k−2T)=−1;
offset−1,+1n+1=offset−1,−1n+μê(k)(({circumflex over (m)}(k−T)==−1)&&({circumflex over (m)}(k−2T)==+1)),
valid for Paths 1 and 2, when the error path being adapted corresponds to {circumflex over (m)}(k−T)=−1 and {circumflex over (m)}(k−2T)=+1; and
offset+1,+n+1=offset−1,−1nμê(k)(({circumflex over (m)}(k−T)==+1)&&({circumflex over (m)}(k−2T)==+1)), valid for Paths 3 and 4, when the error path being adapted corresponds to {circumflex over (m)}(k−T)=+1 and {circumflex over (m)}(k−2T)=+1.
The term offset in the equations above corresponds to a linear combination of b1 and b2 (i.e. offset+1,+1=b1+b2, offset−1,+1=−b1+b2, offset+1,−1=b1−b2, and offset−1,−1=−b1−b2). In this embodiment, 8 different offset values are adapted independently.
In an alternative embodiment, one could instead update the values b1 and b2 used in each offset 1012, 1014, 1016, 1018, and 1020 each time the error value is not erroneous (rather than just updating the b1 and b2 values of the selected offline error path). However, this would not result in the potential benefit of having a b1 tap offset component and a b2 tap offset component independently customized for each particular path.
This is only one possible method of updating the taps. Other methods may be used. Moreover, as mentioned above, the tap updating method outlined above is only valid when the error value is not erroneous (as defined in the right-most column in the table of
It will be appreciated that the adaptive DFE in
Adaptive DFE with M-PAM
The embodiments discussed above assume binary-PAM or NRZ modulation, in which case a single slicer (e.g. slicer 210) can be used as a detector. If a different modulation scheme is used, then an appropriate corresponding detector is used. For example, in an alternative embodiment M-PAM may be used as the modulation scheme, where M is greater or equal to 2. For example, assume M=4, i.e. 4-PAM modulation. A few example embodiments with 4-PAM modulation are discussed below.
It will be appreciated that the embodiment in
Another embodiment of an adaptive DFE with a 4-PAM modulation scheme is illustrated in
The symbols −3, −1, +1, +3 respectively correspond to one of the 4-PAM bit outputs. Specifically, in this embodiment, “−3” corresponds to “00”, “−1” corresponds to “01”, “+1” corresponds to “11”, and “+3” corresponds to “10”. In the embodiment of
In the embodiments above, examples of receiver circuitry are disclosed that incorporate an adaptive DFE. The adaptive DFE includes a plurality of branches, with each one of the branches including an adjustor to adjust a branch signal by an offset, and decision circuitry downstream from the adjustor to convert the branch signal to one of two possible output values. The offset of at least one of the plurality of branches is selectable from a finite number of values, and the offset selected is changed during operation of the DFE. The DFE further includes selection circuitry coupled to an output of each of the plurality of branches. The selection circuitry selects the output of one of the plurality of branches as an offline error value and selects the output of one or more other of the plurality of branches as a data decision value. The selection circuitry further changes which output of the plurality of branches is selected as the offline error value during the operation of the circuit such that each one of the plurality of branches is taken offline by having its output selected as the offline error value at a respective different point in time during the operation of the circuit. However, more generally this circuit structure does not need to be tied to a DFE, but can also (or instead) be part of a detector that does not include a DFE. This is discussed below in relation to
The detector 1302 includes three branches 1304, 1306, and 1308, each receiving the same input signal y(t). An adjustor 1310 adjusts the signal in branch 1304 by an offset VH. Specifically, in this embodiment, the adjustor 1310 adjusts the signal y(t) in branch 1304 by subtracting offset VH from y(t). The adjustor 1310 is implemented by circuitry that performs a subtraction of two signals. A slicer 1312 is downstream from the adjustor 1310 and slices the adjusted signal y(t)−VH.
Similarly, branch 1306 includes an adjustor 1314 that subtracts an offset VZ from the input signal y(t), as well as a slicer 1316 for slicing the adjusted signal, and branch 1308 includes an adjustor 1318 that subtracts an offset VL from the input signal y(t), as well as a slicer 1320.
Logic circuitry 1322 receives the output of each slicer 1312, 1316, and 1320, and converts this to a corresponding value of {circumflex over (m)}(k).
During operation of the detector 1302, the input signal y(t) enters each of the three branches 1304, 1306, and 1308. In branch 1304, the offset VH is subtracted from y(t) at 1310 to create y(t)−VH, and that signal is then fed to slicer 1312, which outputs “1” if y(t)−VH>0 (i.e. y(t)>VH), and otherwise outputs “−1”. Similarly, in branch 1306, the offset VZ is subtracted from y(t) at 1314 to create y(t)−VZ, and that signal is then fed to slicer 1316, which outputs “1” if y(t)−VZ>0 (i.e. y(t)>VZ), and otherwise outputs “−1”. Similarly, in branch 1308, the offset VL is subtracted from y(t) at 1318 to create y(t)−VL, and that signal is then fed to slicer 1320, which outputs “1” if y(t)−VL>0 (i.e. y(t)>VL), and otherwise outputs “−1”. The logic circuitry 1322 then converts the output of the slicers to one of the values of {circumflex over (m)}(k) according to a truth table such as the following (where “d” represents “don't care”—i.e. it does not matter what the value is):
It will be appreciated that the truth table above, which implements Gray mapping/coding, is only one possible mapping of slicer outputs/4-PAM symbols to values of {circumflex over (m)}(k). For example, binary mapping may instead be used.
To help mitigate incorrect decisions, it is beneficial if the decision offsets VH, VZ, and VL correspond to the middle of their respective 4-PAM sub-eyes, as is the case in
Specifically,
The detector 1502 includes four circuit branches, or branch paths, which are respectively labelled “Path 0”, “Path 1”, “Path 2”, and “Path 3”. Each branch path receives the input signal y(t), adjusts it by an offset, and then the resulting signal is fed to a slicer. Specifically, in “PATH 0” an adjustor 1504 subtracts an “Offset 0” from y(t), and the result is sliced by slicer 1506. Similarly, in “Path 1” an adjustor 1508 subtracts an “Offset 1” from y(t), and the result is sliced by slicer 1510, in “Path 2” an adjustor 1512 subtracts an “Offset 2” from y(t), and the result is sliced by slicer 1514, and in “Path 3” an adjustor 1516 subtracts an “Offset 3” from y(t), and the result is sliced by slicer 1518.
The detector 1502 further includes multiplexers 1520, 1522, 1524, and 1526. Multiplexer 1520 receives at its input the output of each of “Path 0” to “Path 3”. Multiplexer 1520 selects one of the branch paths as the offline path. Multiplexer 1522 receives at its input the output of “Path 0” and “Path 1”, and selects one of these branches as a first data path. Similarly, multiplexer 1524 receives at its input the output of “Path 1” and “Path 2” and selects one of these branches as the second data path, and multiplexer 1526 receives at its input the output of “Path 2” and “Path 3” and selects one of these branches as the third data path. Logic circuitry 1528 receives the output of each of multiplexers 1522, 1524, and 1526 (i.e. the output of each of the selected data paths) and converts this to decision {circumflex over (m)}(k), e.g. using the Table 4 truth table.
During operation of the detector 1502, the input signal y(t) travels through each of the branch paths “Path 0” to “Path 3”. In each branch path, the offset is subtracted from the branch signal y(t), and then that value is sliced. For example, in “Path 0”, “Offset 0” is subtracted from y(t) at 1504, and the resulting signal is sliced by slicer 1506. The multiplexer 1520 selects one of the paths as the offline path, and the multiplexers 1522, 1524, and 1526 select the other three paths as the data paths, with the path selected as the offline path being periodically changed during operation so that over time each of “Path 0” to “Path 3” is sequentially selected as the offline path in a round-robin fashion. In particular, over time the following selections are made by the multiplexers 1520, 1522, 1524, and 1526, and the following offsets are assigned to each of the selected data branches:
Different sequences are also possible. However the one described in Table 5 has the following potential advantage: after the adaptation of an offline path the two inputs to the multiplexers should be identical since they originate from slicers which theoretically have the same slicing thresholds. This may remove the need to synchronize the signal controlling the multiplexer selection. It may also reduce complexity and power dissipation.
The six options outlined in the table above are cycled through during operation. The rate at which the selections are cycled through is implementation specific. However, as one example, the selection may change every 20,000 symbols. When a branch path is taken offline, its output is not used to generate the decision {circumflex over (m)}(k), rather the other three branches are used, as per Table 5 above. When a branch path is offline its slicing threshold is adapted for the 4-PAM sub-eye it is going to slice when it is placed back online.
As can be seen from Table 5 above, Offset 0 will always have the value VH, and Offset 3 will always have the value VL. However, Offset 1 will sometimes be set as VH and other times be set as VZ depending upon which branch is selected as the offline path. Similarly, Offset 2 will sometimes be set as VZ and other times be set as VL depending upon which branch is selected as the offline path.
When a given branch path is selected as the offline path (i.e. taken offline), its Offset value is adjusted to try to correct for gain and/or DC offset variation caused by temperature and/or supply voltage drift. One example way to adjust the Offset values is as follows:
(1) Assume that “Path 0” is first designated as the offline path. The Offset 0 value is VH.
(2) The Offset 0 value is moved a pre-determined amount C above its current threshold VH. That is, VH+C is computed. Then, for a pre-determined number of symbols N where the received signal has a value greater than VH (i.e. for a pre-determined number of symbols N where the decision {circumflex over (m)}(k) is “10”, assuming the same mapping as in the Table 4 above), the number of times A0 the signal input into the slicer 1506 is less than VH+C at the time of slicing is counted. Then, the offset is moved a pre-determined amount C below the threshold VH. That is, VH−C is computed. Then, for the same pre-determined number of symbols N where the received signal has a value greater than VZ but less than VH (i.e. for a pre-determined number of symbols N where the decision {circumflex over (m)}(k) is in adjacent decision region “11”, assuming the same mapping as in Table 4 above), the number of times A1 the signal input into the slicer 1506 is greater than VH−C at the time of slicing is counted. If A0>A1, slicing threshold VH is decreased. If A0<A1, slicing threshold VH is increased.
(3) The process in step (2) above is then respectively repeated for “Path 1”, “Path 2”, and “Path 3” as per the sequence listed in Table 5. That is, “Path 1” is next taken offline (selected as the offline path) and its offset VZ separately adjusted via the same method as described for “Path 0” in step (2) above. Then “Path 2” is taken offline (selected as the offline path) and its offset VL separately adjusted via the same method. Then “Path 3” is taken offline (selected as the offline path) and its offset VL separately adjusted via the same method. Then “Path 2” is taken offline (selected as the offline path) and its offset VZ separately adjusted via the same method. Then “Path 1” is taken offline (selected as the offline path) and its offset VH separately adjusted via the same method.
(4) Steps (2) and (3) may be repeated on a periodic basis with each path being taken offline in a round-robin fashion as per the sequence described in Table 5.
Another example way to update a given offset value of a branch path is to use a least-mean-square (LMS) approach, as follows.
Each row in Table 5 has a slicing threshold Vx in the offline path (where x is either H, Z, or L), as shown in the first (left-most) column of Table 5. Each slicing threshold also has an associated target 4-PAM sub-eye cursor level Hx (where x is either H, Z, or L). The associated target 4-PAM sub-eye cursor level is specific to each slicing threshold to account for signal compression, and it is also adapted. There are six thresholds Vx and corresponding associated target 4-PAM sub-eye cursor levels Hx: VH/HH of Path 0, VH/HH of Path 1, VZ/HZ of Path 1, VZ/HZ of Path 2, VL/HL of Path 2, and VL/HL of Path 3. Therefore, there are a total of 6 sets of Vx/Hx to be adapted independently. While one set is adapted the other ones are unchanged. The updating is via an LMS adaptation scheme.
An example of VL/HL adaptation is as follows. The LMS update equations are computed as:
V
L(n+1)=VL(n)+μ{tilde over (e)}(n), and (a)
H
L(n+1)=HL(n)+μ{tilde over (e)}(n)·dL(n), (b)
where dL(n) is the output of the slicer slicing at VL and where “n” is the iteration of the update. The error value {tilde over (e)}(n) is the sliced output of the offline branch, i.e. the sliced error e(n)=y(t)−offset, where y(t) is the detector input and offset can be set to either offset=VL−HL(which is valid when {circumflex over (m)}(k)=00 and invalid otherwise) or offset=VL+HL (which is valid when {circumflex over (m)}(k)=01 and invalid otherwise). μ is a correlation coefficient scaling factor. The updated values of VL and HL are computed using equations (a) and (b) with the slicing threshold alternating between VL+HL and VL−HL. That is, the LMS equation iterations are computed with slicing threshold set to VL+HL for a pre-defined number of valid symbols, and then the LMS equation iterations are computed with slicing threshold set to VL−HL for a pre-defined number of valid symbols, and so on. When the slicing threshold is set to VL−HL, the error {tilde over (e)}(k) is only valid when {circumflex over (m)}(k)=00 (i.e −3 4-PAM level). Otherwise it is invalid and the LMS equations (a) and (b) are not updated. When the slicing threshold is set to VL+HL, the error {tilde over (e)}(k) is only valid when {circumflex over (m)}(k)=01 (i.e −1 4-PAM level). Otherwise it is invalid and the LMS equations (a) and (b) are not updated.
VZ/HZ adaptation is similar. Specifically, the LMS update equations are computed as:
V
Z(n+1)=VZ(n)+μ{tilde over (e)}(n), and (a)
H
Z(n+1)=HZ(n)+{tilde over (e)}(n)·dZ(n), (b)
where dZ(n) is the output of the slicer slicing at VZ and where “n” is the iteration of the update. The error value {tilde over (e)}(n) is the sliced output of the offline branch, i.e. the sliced error e(n)=y(t)−offset, where y(t) is the detector input and offset can be set to either offset=VZ−HZ (which is valid when {circumflex over (m)}(k)=01 and invalid otherwise) or offset=VZ+HZ (which is valid when {circumflex over (m)}(k)=11 and invalid otherwise). The updated values of VZ and HZ are computed using equations (a) and (b) with the slicing threshold alternating between VZ+HZ and VZ−HZ. That is, the LMS equation iterations are computed with slicing threshold set to VZ+HZ for a pre-defined number of valid symbols, and then the LMS equation iterations are computed with slicing threshold set to VZ−HZ for a pre-defined number of valid symbols, and so on. When the slicing threshold is set to VZ−HZ, the error {tilde over (e)}(k) is only valid when {circumflex over (m)}(k)=01 (i.e −1 4-PAM level). Otherwise it is invalid and the LMS equations (a) and (b) are not updated. When the slicing threshold is set to VZ+HZ, the error {tilde over (e)}(k) is only valid when {circumflex over (m)}(k)=11 (i.e +1 4-PAM level). Otherwise it is invalid and the LMS equations (a) and (b) are not updated.
VH/HH adaptation is similar. Specifically, the LMS update equations are computed as:
V
H(n+1)=VH(n)+μ{tilde over (e)}(n), and (a)
H
H(n+1)=HH(n)+μ{tilde over (e)}(n)·dH(n), (b)
where dH(n) is the output of the slicer slicing at VH and where “n” is the iteration of the update. The error value {tilde over (e)}(n) is the sliced output of the offline branch, i.e. the sliced error e(n)=y(t)−offset, where y(t) is the detector input and where offset can be set to either offset=VH−HH (which is valid when {circumflex over (m)}(k)=11 and invalid otherwise) or offset=VH+HH (which is valid when {circumflex over (m)}(k)=10 and invalid otherwise). The updated values of VH and HH are computed using equations (a) and (b) with the slicing threshold alternating between VH+HH and VH−HH. That is, the LMS equation iterations are computed with slicing threshold set to VH+HH for a pre-defined number of valid symbols, and then the LMS equation iterations are computed with slicing threshold set to VH−HH for a pre-defined number of valid symbols, and so on. When the slicing threshold is set to VH−HH, the error {tilde over (e)}(k) is only valid when {circumflex over (m)}(k)=11 (i.e +1 4-PAM level). Otherwise it is invalid and the LMS equations (a) and (b) are not updated. When the slicing threshold is set to VH+HH, the error {tilde over (e)}(k) is only valid when {circumflex over (m)}(k)=10 (i.e +3 4-PAM level). Otherwise it is invalid and the LMS equations (a) and (b) are not updated.
The embodiment in
Many variations have already been discussed above, as is clear from the multiple embodiments described. Some further variations will be explicitly mentioned.
In the example DFE architectures described above with respect to
Also, the specific selection circuitry used is implementation specific. For example,
Also, the specific way in which signals are adjusted via the adjustors is implementation specific. For example, embodiments described above have a signal in a circuit branch adjusted by an offset prior to slicing (e.g. the signal in Path 0 in
Also, as discussed above, circuitry such as the feedforward filter and the AGC are optional, and there may be other optional processing circuitry (not illustrated), such as an amplifier before the decision circuitry (e.g. before each slicer). This is implementation specific. If an AGC is used, then it may also be updated using the error value (when the error value is not erroneous).
Also, as is clear from above, the provision of a circuit that has more branches than the minimum number of data paths and bringing one branch offline to update an offset is applicable in different receiver implementations, such as adaptive DFEs and/or M-PAM detectors.
Each branch may be taken offline in a round-robin fashion, as is the case in some of the specific examples described above. For example, each one of the paths may be taken offline one at a time in a particular order, with that order being repeated. However, more generally, this need not be the case. For example, some branches may be taken offline several times before one or more other branches are taken offline. For a detector with a DFE, one example order in which to take the branches offline is as follows: choose the order such that (1) immediately before the offline path is about to be switched back to being a data path, the polarity of the tap(s) of the offline offset value is the same as the polarity of the tap(s) of the data path about to be taken offline, and (2) when the offline path switches, the polarity of the taps on the new data paths are not changed from their previous polarities. By choosing this order, the circuit may operate in a more glitchless fashion.
In some embodiments, at least one offset value associated with the branch taken offline may be adapted (updated) when the branch is offline. For example, in the case of the DFE implementations described earlier, adaption may occur if the offline value is not erroneous. In the case of the 4-PAM detector implementations described earlier, adaption of the offset associated with the offline branch (VH, VZ, or VL) may be performed.
Although the
In some embodiments, the input signal i(t) is an equalized signal (e.g. i(t)=z(t) in
In some embodiments, the branch having its output selected as the offline value is called the offline branch. This is because the output of the branch is an offline value, rather than a data decision value. In the case of a DFE, the offline branch may be called the “offline error computation branch” or the “offline error branch”.
The circuit 1602 may further comprise comparison circuitry (not illustrated in
In some embodiments, the offline value may be used to update at least one offset value of the offline branch when the offline value is not erroneous.
In some embodiments, the offset that can be selected for each branch of the plurality of branches incorporates at least a DFE filter tap.
In some embodiments, the offset of the offline branch includes at least: a first component corresponding to a possible data decision value and a second component corresponding to a DFE filter tap multiplied by a previous data decision value, and the offline value is considered erroneous when: (i) the first component does not match an actual data decision value, or (ii) the second component does not match the DFE filter tap multiplied by an actual previous data decision value.
In some embodiments, the offset selected for each branch is different from the offset selected for each other branch.
In some embodiments, the circuit 1602 further comprises adjustment circuitry (not illustrated in
In some embodiments, the circuit 1602 comprises a 4-PAM detector, and there are four branches. During operation one of the four branches is selected as the offline branch, and the output of the other three branches form the data decision value. The offline branch selected is to change during operation such that each one of the four branches is the offline branch at a respective different point in time during the operation of the circuit, and the remaining three branches form the data decision value. In some of such embodiments, the offset of a first branch of the four branches is a DC value that is to be adjusted during operation of the circuit when the first branch is selected as the offline branch. The offset of a second branch of the four branches takes one of two possible DC values depending upon which branch of the plurality of branches is selected as the offline branch, and at least one of the two possible DC values of the offset of the second branch are to be adjusted during operation of the circuit when the second branch is selected as the offline branch. The offset of a third branch of the four branches takes one of two possible DC values depending upon which branch of the plurality of branches is selected as the offline branch, and at least one of the two possible DC values of the offset of the third branch are to be adjusted during operation of the circuit when the third branch is selected as the offline branch. The offset of a fourth branch of the four branches is a DC value that is to be adjusted during operation of the circuit when the fourth branch is selected as the offline branch.
In some embodiments, the adjustment circuitry is to adjust the value of the offset of the offline branch by: adjusting the value of the offset by a pre-determined amount C above a current offset value V to obtain V+C; for a pre-determined number of symbols N for which a received signal (the input signal into the branches) has a value greater than V, counting a number of times a signal input into decision circuitry associated with the offline branch is less than V+C to obtain A0; adjusting the value of the offset by the pre-determined amount C below the current offset value V to obtain V−C; for a same pre-determined number of symbols N during which the received signal has a value less than V but greater than an adjacent decision threshold, counting a number of times a signal input into decision circuitry associated with the offline branch is greater than V−C to obtain A1; decreasing the current offset value if A0>A1, and increasing the current offset value if A0<A1.
In some embodiments, the circuit 1602 cycles through the plurality of branches, ensuring that each one of the plurality of branches, at some point during the cycle, is used to generate the offline value (e.g. the error value in the case of the DFE implementations). The cycle may be periodic. During the cycle, it may be the case in some embodiments that each branch has its output selected as the offline value more than once at different points in the cycle.
In some embodiments, the offline value is not used to update offsets of any branches except the offline branch.
In some embodiments, the circuit 1602 comprises an adaptive DFE including: a feedback filter having an input, an output, and at least one filter tap. Optionally, in such embodiments, the decision value is fed to the input of the feedback filter, and the output of the feedback filter is combined with an input of the plurality of branches. Optionally, in some embodiments, when the offline (error) value is not erroneous, it is used to update the at least one filter tap of the feedback filter.
In some embodiments, each offset is a DC value. That being said, as mentioned earlier, the selected offset changes during operation. Therefore, in this sense, the DC offset value would vary over time (i.e. change as each selected offset changes). That is, the selected offset can be considered to vary slowly over time, although each offset selected itself would be a DC value.
In some embodiments, the number of branches equals 1+2n, where n represents a number of filter taps incorporated into each offset value.
With reference to
In some embodiments, in step (i), changing a value of the offset associated with at least one of the plurality of branches may comprise changing a value of the offset associated with each one of the plurality of branches. In such a case, the offset changed for each branch may be selected from a finite number of values.
Although the foregoing has been described with reference to certain specific embodiments, various modifications thereof will be apparent to those skilled in the art without departing from the scope of the claims appended hereto.
This application claims priority to U.S. Provisional Patent Application Ser. No. 62/027,520, filed on Jul. 22, 2014, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62027520 | Jul 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14806346 | Jul 2015 | US |
Child | 15260692 | US |