Method and apparatus to recover data from pulses

Methods and corresponding apparatus to recover data from a signal comprising groups of pulses generated in response to analog waveforms are described. Data recovery in accordance with the invention is based on parameters characterizing the groups of pulses. These parameters are the basis for mapping the groups of pulses to information symbols which collectively constitute the data to be recovered.

BACKGROUND OF THE INVENTION

In any conventional digital communication systems, a carrier signal is received and processed by circuitry which will output generally an analogue waveform which represents the recovered “value” of the information carried in phase, frequency or amplitude of the carrier signal. There is a decision device which outputs the binary symbols (some can be very sophisticated such as soft decision) based on the information contained in the carrier signal itself. A binary symbol is defined as a symbol that consists of a binary digit or a sequence of binary digits.

With the development of electronic technologies, it has now been determined that transmission of radio frequency signals at the frequency of modulation is both possible and practical over a broad spectrum of frequencies. For example, U.S. application Ser. No. 09/429,527, entitled “Method and Apparatus for Generating Pulses from Analog Waveforms,” filed Oct. 28, 1999 teaches that it is possible to decode a symbol that is embedded in each cycle of frequency of modulation. Therefore, novel methods for extracting information out of such signals are needed.

SUMMARY OF THE INVENTION

In accordance with the present invention, data is recovered from a signal comprising plural groups of pulses. Each group of pulses is characterized by one or more parameters. A group of pulses is identified. In the process, one or more of the parameters which characterize the group is measured. Based on the measurements, an information symbol is determined. This is repeated to recover the data contained in the signal.

In one embodiment of the invention, the signal is fed into two or more pipelines. Each pipeline processes two or more groups of pulses. Input delays are provided so that the groups of pulses being processed in each pipeline are offset by one or more groups. Additional delays are provided to the outputs of each pipeline in a manner that the processed groups of pulses are synchronized and delivered to a decision component. The decision component makes a determination of the information symbol based on the processed groups of pulses.

DESCRIPTION OF THE SPECIFIC EMBODIMENTS

FIG. 1shows a block diagram of a receiver12and a decision device14as disclosed in U.S. application Ser. No. 09/429,519. A carrier signal y(t) is received and processed through receiver12to produce a signal15, comprising a plurality of pulses (spikes). U.S. application Ser. No. 09/429,527 discloses circuitry that can be used for receiver12in the present invention. The pulses in the signal are organized into groups of pulses. As will become clear, these groups of pulses contain information which can be extracted in accordance with the present invention.

FIG. 2shows signal15comprising a plurality of groups of pulses21a-21c, produced at the output of receiver12. The decision device14maps these groups of pulses onto an information character set so that each group of pulses represents an information character of the set. The binary set is the simplest and most common character set used in modern digital communication systems, comprising the information characters (i.e., binary symbols) “0” and “1”.

Each group of pulses21a-21cis characterized by various parameters. One such parameter is referred to as the “group period” T1, shown in FIG.2. The group period T1, is the period of time between the rising edge22aof the first pulse in one group of pulses21aand the rising edge22bof the first pulse in the subsequent group of pulses21b.

Another parameter which characterizes the groups of pulses is referred to as the “pulse width”.FIG. 2shows that the pulse width is the width T2of each of the pulses (e.g.,23b) comprising a group of pulses.

A “pulse separation” is a parameter which represents the separation between the rising edge of one pulse in a group of pulses and the rising edge of the next pulse in that group of pulses. This is shown as time period T3in FIG.2.

Each group of pulses is further characterized by a parameter called a “silent period.”FIG. 2shows this as time period T4. This parameter represents the separation between groups of pulses. More specifically, it is the quiet period in the signal between the falling edge (e.g.,24b) of the last pulse in one group and the rising edge (e.g.,22c) of the first pulse in the subsequent group of pulses.

Another parameter is the number of pulses Npcomprising a particular group of pulses.

In accordance with the invention, the foregoing described parameters are relevant for recovering data from a signal comprising groups of pulses. The groups of pulses which constitute the signal exhibit the property that one or more of the parameters which characterize each group of pulses can vary from one group to the next. Thus, let the set S={T1, T2, T3, T4, Np} characterize a group of pulses. If S1characterizes a first group of pulses and S2characterizes a second group of pulses, then the first group is different from the second group if at least one of T1, T2, T3, T4, and Npin the first group pulses is different from the corresponding parameter in the second group of pulses. For example, one group of pulses21amay differ from another group of pulses21bwith respect only to their respective “group period” parameter T1. However, the invention contemplates that groups of pulses may differ from one another with respect to two or more parameters. Thus, the group period T1, and the number of pulses NPof one group of pulses may be different from the group period and the number of pulses of another group of pulses.

Communication is achieved by detecting the signal and the groups of pulses in the signal. First, the parameter(s) characterizing a group are determined. Then, on the basis of one or more of the parameters, an information symbol representing the information contained in the signal is identified. This is repeated to produce a stream of information from the signal.

In the case of symbols representing binary data, for example, suppose four different groups of pulses are used to represent four symbols, each corresponding to binary symbols: 00, 01, 10, and 11. In accordance with the invention, it can be decided a priori to use the “number of pulses” parameter Npto identify the information symbols. Thus, for example, Np=2 might map an information symbol for ‘00’, Np=5 might map an information symbol for ‘01’, Np=7 might map an information symbol for ‘10’, and Np=9 might map an information symbol for ‘11’. The particular values for Npof course depend on the nature of the signal, the hardware, performance criteria, signal to noise performance, and other such considerations.

The most general case in accordance with the invention is to allow any combination of parameters S to represent the information symbols. Thus, for example, communication may occur in accordance with the following a priori convention: the Npparameter is used to identify ‘00’, so that groups of pulses which contain, for example, Np=6 pulses will map to an information symbol representing ‘00’; the parameter T1is used to identify ‘01’, so that groups of pulses whose group period, for example, is T1=t01will map to an information symbol representing ‘01’; the Npparameter is used to identify ‘10’, so that groups of pulses which contain, for example, Np=10 pulses will map to an information symbol representing ‘10’; and the parameter T2(pulse width) is used to identify ‘11’, so that groups of pulses whose pulse width, for example, is T1=t11will map to an information symbol representing ‘11’.

Observe that in the general case, prioritization may be needed. In the foregoing example, a group of pulses may have an Np=6 and a T1=t01. This results in an ambiguous situation: does the group of pulses represent ‘00’ or ‘01’? It can be decided a priori that the T1parameter has precedence, so that the group of pulses would map to ‘01’. A ‘00’ group would have to have Np=6 and a T1≠t01. Similar rules of precedence must be developed to avoid such ambiguity among the information symbols.

Following are illustrative embodiments of the invention, showing by example how these parameters can be utilized to recover data. Based on the teachings which follow, one of ordinary skill will be able realize additional embodiments that fall within the scope of the invention as claimed without undue experimentation.

Pulse Counting Method

FIGS. 1,3, and9show an example of a data recovery circuit900(FIG. 9) according to an illustrative embodiment of the invention. Detection is based primarily on the number of pulses within a group period. To illustrate the decoding process, assume there are, but not limited to, four binary symbols, 00, 01, 10, 11, used to transmit data.FIG. 3shows how to recognize and recover the different symbols sent. The receiver12(FIG. 1) provides groups of pulses (spikes)15at the receiver's output. The groups of pulses feed into a reset control902, which serves to trigger the reset input of a counter904that is driven by a reference clock.

The rising edge of the first pulse of each group of pulses will trigger the counter904, and thus open a counting window33for a period of time TW. The window TWis set to be equal to the smallest T1expected to occur among the groups of pulses in the signal; with the restriction that the group of pulses comprising the most pulses spans a period of time <TW. The counting window33feeds into a delay circuit906to shift the window forward in time by an amount TDto produce a delayed counting window.

The groups of pulses15feed into a counter/decoder908. The output of the delay circuit906, which is the delayed counting window33, is coupled to a trigger input of the counter/decoder. Consequently, counting by the counter/decoder is delayed by an amount TDafter detecting the first pulse of a group of pulses. The delay is introduced to prevent any delay produced by the logic gate from causing error in the decoding.

The counter908is incremented by the rising edge of each pulse encountered during the counting period TW. At the end of the counting window, the number of counts is mapped to an information symbol to produce the data. For example, if three pulses are counted, then a binary symbol “11” will be generated, etc. This mapping of pulses to binary data constitutes the “decoder” part of the counter/decoder circuit. The counter/decoder resets at the falling edge of the counting window33and is re-activated when the next delayed counting window is opened.

Group Period Detection Method

FIGS. 1,4, and10show an example of a data recovery circuit1000and its operation according to further teachings of the invention. Parameters T1, T2, and T3are utilized, along with a reference clock whose period is much smaller than the smallest parameter T2or T3in any group period. An example is shown inFIG. 4to illustrate how this method is applied to recover data comprising two binary symbols, 0 and 1, from a signal comprising groups of pulses.

Groups of pulses41are typical pulses observed at the output of receiver12, after the signal y(t) is processed through a Gaussian white noise channel. These groups41are passed through a comparator1002to yield digitized groups of pulses43. Pulses45are additional pulses generated due to the influence of noise. Using the reference clock activated by the rising edge of each pulse, measurements for parameters T2and T3are obtained. Determination logic1004,1006measure the T2and T3parameters from the signal43and compare the measured T2and T3parameters to the expected T2and T3parameters for each group period. The extraneous pulses45can be removed because the pulses are either too thin (much smaller than expected T2) or T3is too large but is still within T1. Removing these false pulses45, produces new groups of pulses47. The pulses47feed into an edge detector1008to produce a trigger signal1009which in turn feeds into a measurement circuit1010. Using the reference clock activated by the rising edge of the first pulse to measure the group period T1, the binary symbols 0 and 1 can be recovered from decision circuit1012. For example, if T1is approximately equal to P0, then binary symbol 1 will be generated. If T1is approximately equal to P1, then binary symbol 0 will be generated.

Width of Group of Pulses Detection Method

FIGS. 1,5, and11show an example of a data recovery circuit1100and its operation for recovering data from a signal comprising plural groups of pulses according to another illustrative embodiment of the invention. Parameters T3and T4are used in conjunction with a reference clock whose period is much smaller than the smallest T3parameter expected to occur in any group of pulses. Usually, T4is much larger than T3. ThoughFIG. 5illustrates recovery for four binary symbols, this embodiment of course is not limited to four symbols.

The reference clock feeds into a counter1104. The counter is triggered by a signal from an edge detector1102. The edge detector receives the signal53, and is configured to produce a reset signal upon detecting the rising edge of each pulse in the signal. The reset signal feeds into the counter to reset the counter.

The output of counter1104feeds into a circuit1108which measures the time between pulses to produce a measurement for the T3parameter. Detection circuit1106determines the end of one group of pulses and the beginning of the next group of pulses based on the T3measurement provided by the circuit1108and the parameter T4. In accordance with this embodiment of the invention, the smallest T4expected to occur in the signal53will be used as a threshold to decide whether the next rising edge belongs to the next group of pulses. This threshold is set a priori. When the measured T3exceeds T4, then detection circuit1106produces a trigger signal that feeds into a decision block1112and a reset signal that feeds into a counter1110.

When the rising edge of the first pulse of a group of pulses in the signal53is detected, the counters1104and1110will start running. The circuit1108measures the time length T3to the rising edge of the next pulse, based on the output of the counter1104. The counter1110continues to run so long as the measured T3remains less than T4, as determined by detection circuit1106. The effect of this action is to add successive T3's together.

When a measured T3is greater than T4, the reset signal from the detection circuit1106stops the counter1110. The total time measured by the counter1110(i.e. the running sum of successive T3's) constitutes the temporal width of the group of pulses. This width information feeds into the decision block1112, which is triggered by the trigger signal from the detection circuit1106. The width of the group of pulses is compared to predefined time periods Tt1, Tt2, Tt3, and Tt4contained in the decision block. The decision block maps to information symbols ‘00’, ‘01’, ‘10’, and ‘11’, respectively, on the basis of the result of the comparison to the predefined time periods. For example, if the total clock time is approximately equal to Tt2, then information symbol ‘01’ will be generated.

Differential Group Period Detection Method

Referring toFIGS. 1,6and12, an example of a data recovery circuit1200its operation are described in accordance with yet another illustrative embodiment of the invention. The technique of this embodiment utilizes parameters T1and T3, and a reference clock. The reference clock feeds into a counter1204to measure the time between two rising edges of the pulses. This is accomplished by feeding the signal62into an edge detection block1202which detects the rising edge of the first pulse in a group of pulses, and produces a reset signal in response thereto.

By using the parameter T3, this method will be able to differentiate whether a pulse belongs to the same group of pulses or the next group of pulses. After knowing the time between two adjacent pulses in each group of pulses62, the subsequent pulses after the first pulse of each group of pulse are removed and only the rising edges64of the first pulse of each group of pulses remain.

The group period T1is then determined by triggering the counter1204on the rising edge of the first pulse from each group of pulses and feeding the output of the counter1204to a measurement block1206. The counter continues counting until it is triggered again by the first pulse in the next group of pulses. The measurement block determines the length of time between each trigger event of the counter.

The output of the measurement block feeds into a calculation block1208. The calculation block is triggered by the reset signal from the edge detection block1202. Consequently, a calculation occurs upon detecting the occurrence of the beginning of each group of pulses. The calculation that is performed is the difference between successive T1measurements, thus producing a sequence of times between successive groups of pulses, namely ΔT1's.

The output of the calculation block1208feeds into a decision block1210. The decision block maps the ΔT1's to predefined binary values, thus providing for recovery of the data from the signal62. In this example shown, when the parameter T1changes from P0to P1and from P1to P0, binary symbol 1 and 0 are generated, respectively. If there is no change in the parameter T1, the same binary symbol as the previous one is generated.

Conceptually, this idea can be extended to include any decoding method where the changes of parameters or the number of pulses from the first group to the second group of pulses are utilized.

Simultaneous Pipeline Decoding Method

FIGS. 1,7, and13A show yet another illustrative embodiment of the invention, utilizing parameters T1, T3, and Np. This embodiment of the invention requires a reference clock whose period is much smaller than the smallest T3parameter expected to occur in any group of pulses.

The signal72feeds into a series of pipeline stages1302-1308, wherein several of the groups of pulses comprising the signal are simultaneously decoded in pipeline fashion. The reference clock feeds into each of the pipelines1302-1308.

At time1. the first pipeline1302receives the signal72without delay and is shown processing groups of pulses74, G1-GN. The values for one or more of the parameters for each of the groups G1-GNare determined (measured) in the first pipeline at time1. Based on the measurements, each group of pulses G1-GNis decoded to produce a corresponding symbol; e.g. a binary symbol. The symbols are delayed by delay unit1303, after which each symbol is delivered to a soft decision component1320, one symbol at a time. For reasons explained below, delay unit1303provides a delay of three groups of pulses.

The delay unit1303provides a variable delay capability. Since the group period T1can vary from one group of pulses to the next group of pulses, the delay unit must be able to delay the symbols on the basis of each symbol's corresponding group of pulses. Thus, as the symbols from the first pipeline1302feed into the delay unit, a delay corresponding to the symbol is provided, using the reference clock as a time base.

Continuing, the signal72also feeds into the second pipeline1304. As will be explained below, the second pipeline provides an internal delay of one group, so that the second pipeline processes groups of pulses75, G2-GN+1. A set of measured parameters for groups of pulses G2-GN+1is produced in the second pipeline at time2(FIG.7). Based on the measurements, each group of pulses G2-GN+1is decoded to produce a corresponding symbol. The symbols are delayed by delay unit1305on their way to the soft decision component1320. The delay unit1305is configured to operate in the same manner as the delay unit1303. For reasons that will be explained below, delay unit1305provides a delay of two groups of pulses.

Continuing, the signal72also feeds into the third pipeline1306. As will be explained below, the third pipeline provides an internal delay of two groups, so that at time3(FIG. 7) the third pipeline processes groups of pulses76, G3-GN+2to produce a third set of measured parameters. Based on the measurements, each group of pulses G3-GN+2is decoded to produce a corresponding symbol. The symbols are delayed by delay unit1307, after which each symbol is delivered to the soft decision component1320, one symbol at a time. The delay unit1307is configured to operate in the same manner as the delay units1303and1305. For reasons to be explained the delay unit1307provides a delay of one group of pulses.

Continuing, the signal72also feeds into the fourth pipeline1308. As will be explained below, the fourth pipeline provides an internal delay of three groups, so that at time4(FIG. 7) the fourth pipeline processes groups of pulses77, G4-GN+3to produce a fourth set of measured parameters. Based on the measurements, each group of pulses G4-GN+3is decoded to produce a corresponding symbol. The symbols are delivered to the soft decision component1320one symbol at a time, without delay.

Referring now toFIG. 13B, an illustrative embodiment of the first pipeline1302is shown. It is understood that the remaining pipelines1304-1308are similarly configured, with the noted differences. The incoming signal72feeds into a group separation unit1332which identifies the groups of pulses in the signal. The group separation unit produces a trigger signal to trigger a group period measurement component1338to produce a measurement of the group period T1of each detected group. A group period summer1346keeps a running total for a number of group periods. In accordance with the processing shown in the illustrative embodiment ofFIG. 7, each pipeline1302-1308processes five groups of pulses. Consequently, the group period summer totals the group periods for five groups. The output of the group period summer is delivered to summers1352and1354.

The group separation unit1332also provides a signal to a first decoding unit1334and to a second decoding unit1336. The decoder units each receives five groups of pulses to produce five symbols. In the illustrative embodiment, the decoding unit1334is a number-of-pulses decoder and the decoding unit1336is a period decoder. These decoders have been discussed previously. Other decoding techniques can be used for the decoder units. Additional decoder units can be provided as well.

Each decoder unit1334and1336feeds into a period determining component1342and1344, respectively. Since a different decoding technique is used, each period determining component1342,1344may produce a different total group period value (TP). The period determining components1342and1344feed the period values to the summers1352and1354, respectively. The summers produce delta values Δ1, Δ2which feed into a decision component1348. The decoded symbols (e.g., binary symbols comprising a bit stream) of the decoding unit (1334or1336) having the smallest associated delta value Δ1, Δ2will be selected by the decision component and produced at its output1301. Referring back toFIG. 13A, the output feeds into the first of the delay units1303. In the case where the decoded symbols represent binary data, the pipelines1302-1306feed streams of bits into their respective delay units1303-1307.

Recall that pipelines1304-1308each provide internal delays so that the groups of pulses being processed are offset by one group of pulses in each pipeline. This is achieved by configuring the group separation unit1332accordingly. Thus, in the second pipeline1304, the group separation unit does not begin operation until one group of pulses has been detected. This occurs, for example, when the system is powered up, initialized, booted, or otherwise reset. Likewise, the third pipeline1306does not begin operation until two groups of pulses have been detected. Similarly, the fourth pipeline1308does not begin operation until three groups of pulses have been detected. In this way, processing in the second pipeline will always be one group of pulses behind the first pipeline1302. Processing in the third pipeline will always be two groups of pulses behind the first pipeline, and processing in the fourth pipeline will always be three groups of pulses behind the first pipeline.

Returning toFIG. 13A, the combined actions of the delay units1303-1307have the effect of ensuring that a decoded symbol from the same group of pulses from each of the pipelines1302-1308is delivered to the soft decision component1320. For example, referring toFIG. 7, during window W0, it can be seen that the decoded symbol ‘A’ is decoded from the same group of pulses in each pipeline, and is delivered to the soft decision component from each of the pipelines. Likewise with window W1.

FIG. 13Cillustrates an embodiment of the delay unit1303. The delay units1305and1307are similarly configured. The delay unit1303receives the output1301of the pipeline1302, which comprises a stream of decoded symbols, e.g., a bitstream. The clock signal feeds into the delay unit also. A data sampling component1362samples the incoming data and feeds the data to a set of shift registers which constitute a buffer1364. A data bit timer1366produces a control signal. The control signal feeds into a delay control component1368to enable outputting of a clocking signal1369that clocks the registers in the buffer1364. The data bit timer delays operation of the delay unit by a certain amount, from the onset of operation of the system. As indicated above, the delay bit timer in the delay unit1303is configured to provide a delay of three groups of pulses at system startup. The delay bit timer in the delay unit1305is configured to provide a delay of two groups of pulses at system startup. The delay bit timer in the delay unit1307is configured to provide a delay of one group of pulses at system startup.

Returning toFIG. 13A, the presence of the soft decision component1320is motivated by the fact that noise in the signal may cause the same group of pulses in each pipeline to decode (map) to a different symbol. The reason for this phenomenon is fact that the parameters of a group of pulses are determined with respect to the set of groups in any one pipeline. Thus, parameters for each of groups74, G1-GNare determined relative to the groups of pulses in the first pipeline1302at time1(FIG.7). Likewise, the parameters for each of groups75, G2-GN+1are determined relative to the set of groups in the second pipeline1304at time2. The parameters for each of groups76, G3-GN+2are determined relative to the set of groups in the second pipeline1306at time3, and the parameters for each of groups G4-GN+3are determined relative to the set of groups in the second pipeline1308at time4. There is usually dependency among groups of pulses, so that the parameters measured for any one group of pulses will depend on the groups of pulses which participate in the measurement. The parameters measured for group G3in the first pipeline1302, for example, may differ from the parameters measured for group G3in the third pipeline1306. The cause of the discrepancy is due to noise and other factors, e.g., channel interference. Consequently, the symbol that is produced from group G3in the first pipeline may be different from the symbol that is produced from G3in the third pipeline.

Referring back toFIG. 7, then, it is possible that the symbols delivered to soft decision component1320from the four pipelines1302-1308during window W0may not all be the symbol ‘A’. In accordance with the illustrative example of this embodiment of the invention, the soft decision component1320produces a final symbol by selecting the candidate symbol that occurs with the highest frequency. Thus, as can be seen inFIG. 7, each of the four pipelines1302-1308is shown delivering the symbol ‘A’ to the soft decision component, and so the data produced is ‘A’. Likewise for window W1.

In the illustrative embodiment, the soft decision component simply uses a highest-frequency-of-occurrence test, which offers the advantage of straightforward implementation. However, many variations of the foregoing illustrative embodiment of the present invention are possible. For example, the foregoing teaches processing each group of pulses in the pipelines1302-1308to the point of mapping the group to an information symbol (e.g., a binary symbol), and then feeding the candidate symbols to the soft decision component1320which algorithmically decides on the final symbol based on the candidate symbols.

Alternatively, processing within each pipeline1302-1308can stop after producing the measured parameters, without mapping to an information symbol. Rather than delivering candidate symbols to the soft decision component1320, the parameters themselves can be presented to the soft decision component. The soft decision component can produce a final symbol algorithmically based on the parameters themselves, or by a mathematical treatment of the parameters. For example, the T1parameter from each of the four pipelines can be averaged to produce an average value for T1. The computed average value can then be the basis for mapping to the final symbol. Clearly, alternate similar processing by the soft decision component is within the capability of one of ordinary skill in view of the above teachings.

The foregoing illustrative example of the invention discloses an embodiment in which each of the pipelines1304-1308is delayed relative to the previous pipeline by one group of pulses. Alternatively, each successive pipeline can be configured to provide an effective delay of more than one group of pulses, along with appropriately configured delay units1303-1307. Additional pipelines can be provided, and so on. The foregoing teachings place within the reach of one of ordinary skill other variations that fall within the scope of the invention without the need for undue experimentation and without departing from the scope of the claims defining the present invention.

Matched Window Method

Referring toFIGS. 1,8, and14, data detection according to still further teachings of the invention uses parameters T1, T2, and T3and requires the usage of a reference clock. Basically, two or more non-overlapping windows, each with a certain width at a fixed time away from a reference point, is generated based on these parameters. The decoding decision is based on the window having the highest number of pulses contained in that window. This method is useful in recovering data from pulses generated in response to noisy analog waveforms. Alternatively, a digital integration operation is performed in each window. The window with the highest count (energy) will be deemed to be the window that contains the desired information. Windows with lower counts (less energy) are presumably due to signal noise.

FIG. 8is provided merely as an example to further illustrate this aspect of the invention. In this example, two binary symbols, 0 and 1, are to be recovered. Let binary symbol 0 be represented by a group of pulses comprising one pulse. Let binary symbol 1 be represented by a group of pulses comprising two pulses. In general, the T1parameter of a group of pulses depends on the next binary symbol. Thus, the T1parameter for a current group of pulses whose next group of pulses represents binary symbol 1 will be different from the T1parameter of a current group of pulses whose next group of pulses represents binary symbol 0. Consequently, the separation between a first group of pulses and a second group of pulses depends on the information symbol (in this case, binary symbol 0 or1) that the second group of pulses represents. The foregoing factors form the basis for decoding in accordance with this embodiment of the present invention.

Trace81inFIG. 8shows a typical noisy analog waveform after passing through a noisy channel, such as would occur during transmission of the signal. Trace82illustrates typical groups of pulses generated in response to the analog waveforms81. Passing them through a comparator reshapes the groups of pulses in82. The result is shown in trace83.

In the following illustrative example of this embodiment of the invention, a first group of pulses B1(consider for example, group88) will establish a reference point relative to which plural non-overlapping windows will be launched. The windows will look for a third group of pulses B3(in this example, group84). A second group of pulses B2(in this example, group87) will establish a reference point relative to which plural windows will be launched to look for a fourth group of pulses B4(in this example, group89). The third group of pulses B3will establish the reference point relative to which plural windows will be launched to look for a fifth group of pulses B5, and so on. Detecting two or more groups of pulses beyond the reference point reduces the effect of noise in the detection process. It is also useful to enhance accuracy especially when a lower speed clock is used.

Recall that the group period T1varies depending on the following group of pulses. If the reference point is set relative to the first group of pulses, then the binary symbol combination corresponding to the second and third groups of pulses must be considered. For example, the location of the second group of pulses relative to the reference point will depend on whether the second group of pulses represents a 0 or a 1. Similarly, the location of the third group of pulses relative to the second group of pulses will depend on whether the third group of pulses represents a0 or a 1. Thus, for one binary symbols, four two-bit combinations are possible. The second and third groups of pulses together may represent: 00, 01, 10, or 11. The position of the third group relative to the reference point, therefore, can be one of four positions.

However, it will be known what binary symbol the second group of pulses maps to once the processing is underway. Thus, consider that processing has proceeded to the point where the reference point has advanced to a group of pulses Bn(e.g., B1shown in FIG.8). In accordance with this embodiment of the invention, group of pulses Bn+2(e.g., B3inFIG. 8) will be decoded; Bn+2is two groups downstream of Bn. However, group of pulses Bn+(e.g., B2inFIG. 8) will have been decoded by the time the reference point is set to group Bn, because when the reference point was set at group Bn−1group Bn+1would have been decoded. Thus, position of group Bn+2can be determined by two pairs of windows, one pair of windows used for the case where group Bn+1decodes to binary symbol0and another pair of windows for the case where group Bn+1decodes to binary symbol 1.

As mentioned, once processing is underway group Bn+1will always be known. However, the very first group of pulses necessarily must be decoded without reference to a previous group of pulses, since by definition there is no such group. This boundary condition can be accounted for in any of a number of ways; for example, sending a known sequence at the beginning of the transmission.

The foregoing processing is provided by circuit1400illustrated in FIG.14. The signal83feeds into an edge detector1402. The reference clock feeds into a group period measurement unit1430which measures the symbol group period. A symbol tracking unit1432is provided to ensure correct placement of the reference point. The symbol tracking unit issues a trigger signal to the edge detector1402, to determine the next reference point. The symbol tracking unit and the edge detector effectively cooperate to signal a reference point at the rising edge of the first pulse in a group of pulses. This establishes a reference point85from which the appropriate pair of nonoverlapping windows will be launched. Generally, the reference point is chosen carefully by taking into account the parameters T1, T2, and T3.

There are two decoding branches, identified as the “odd” branch and the “even” branch. The naming is arbitrary and the “odd” and “even” terminology is related to the “every other group” processing behavior of this embodiment of the invention. The so-called “odd” branch comprises odd group detector1404, windows generator1412, detection unit1414, decoder1434, and decision block1401. Similarly, the “even” branch comprises even group detector1406, windows generator1416, detection unit1418, decoder1436, and decision block1403.

The odd and even branches are cross-coupled via data lines1435and1437. The data line1435feeds a decoded symbol to the windows generator1416, and the data line1437feeds a decoded symbol to the windows generator1416. Each windows generator can generate one of two pairs of detection windows, depending on the symbol received on its corresponding data line.

Assume, for explanation purposes, that edge detector1402has detected the beginning of the first pulse in the group of pulses88, shown in FIG.8. At this time, as discussed above, the group of pulses87will have already been decoded relative to the group of pulses just preceding group88. Also for purposes of explanation, it can be assumed without loss of generality that the group of pulses87was decoded along the even branch, and so the binary symbol B2corresponding to the group of pulses87is known. The decoded binary symbol is delivered from the decoder1436via the data line1437to the windows generator1412.

The windows generator1412is triggered by the edge detector1402, indicating the beginning of a group of pulses. Then, depending on the binary symbol received over the data line1437, the windows generator opens (launches) one pair out of two possible pairs of detection windows. For example, if the binary symbol B2is a ‘0’, then windows W1, W2would be generated, an launched relative to the reference point85at times. If the binary symbol B2is a ‘1’, then two other detection windows, say for example, W3and W4(not shown) would be launched relative to the reference point85at times different from TW1, TW2, say for example, TW3and TW4(also not shown).

FIG. 8shows that binary symbol B2is assumed to be ‘0’, and so the pair of detection windows W1, W2will be launched at times TW1, TW2. The windows are launched one at a time, though not necessarily. Thus, the signal from the edge detector1402feeds into window generator1412, indicating the beginning of group84. Thus, the windows generator launches the first of the two windows, say detection window W1at time TW1from the reference point85, by signaling the detection unit1414. The pulse count (amount of energy, etc.) during that window is determined (measured) by the detection unit. This information is fed to the decoder1434. If this is the first detection window then the decision box1401signals the detection unit to continue processing. The windows generator signals the detection unit to detect for pulses in the signal83using the detection window W2at time TW2. The pulse count (amount of energy, etc.) is fed to the decoder. The decoder is able to determine whether detection window pairs W1, W2or W3, W4were received. The decoder then maps to a binary symbol based on which of the two window measurements contained the most pulse counts or pulse energy.

The decision box then issues a “YES” signal to the windows generators1412and1416. This disables processing in the odd branch and enables processing in the even branch. The decoder1434delivers the binary symbol decoded from group84to the windows generator1416. The reference point is moved to group87, and the process repeats.

Each decoder1434and1436receives every other symbol from the incoming signal83. These streams feed into a combiner1444where the two streams are merged into a single bit stream as the output data stream. A signal1450is sent to the symbol tracking unit1432to determine the next reference point.

In one variation of the foregoing described illustrative embodiment of the invention, the detection windows can be launched simultaneously to make the pulse count measurements. This and other variations are readily realizable by one of ordinary skill expending a modicum of design effort.

The foregoing described illustrative embodiments of the invention are preferably provided on special purpose digital signal processing circuitry using either FPGAs (field programmable gate arrays) or ASICs (application specific integrated circuits), and the like. A circuit implemented in an FPGA is designed by specifying interconnection of macrocells which may be formed from the gates on the gate array. A design implemented in an FPGA does not need to be specially fabricated, but may be simply programmed into the FPGA at power up using a serial programmable read only memory (PROM) or using a control interface such as that specified by the joint test action group (JTAG). The circuitry in an ASIC, on the other hand, is a combination of interconnected macrocells. Each macrocell represents a circuit element which may include multiple electronic components (e.g. transistors, resistors, capacitors). Such implementations offer opportunity for higher levels of integration to realize increased performance such as speed of operation, allowing for high data rates.

The designs can be provided using discrete logic and components, though lower performance may result. However, some applications may not require high data speeds, preferring lower cost devices instead. The block diagrams of the foregoing figures represent functional blocks that can be used to guide a design engineer(s) in the construction of devices according to the present invention, independent of the implementation strategy.

Although specific embodiments of the invention have been described, various modifications, alterations, alternative constructions, and equivalents are also encompassed within the scope of the invention. The described invention is not restricted to operation within certain specific data processing environments, but is free to operate within a plurality of data processing environments. Although the present invention has been described in terms of specific embodiments, it should be apparent to those skilled in the art that the scope of the present invention is not limited to the described specific embodiments.

Further, while the present invention has been described using a particular combination of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of the present invention. The present invention may be implemented only in hardware or only in software or using combinations thereof, depending on performance goals and other criteria not relevant to the invention.

The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that additions, subtractions, substitutions, and other modifications may be made without departing from the broader spirit and scope of the invention as set forth in the claims.