Secure channel sounding
10673555 ยท 2020-06-02
Assignee
Inventors
- Ciaran McElroy (Dublin, IE)
- Jaroslaw Niewczas (Jozefow, PL)
- Michael McLaughlin (Dublin, IE)
- Igor Dotlic (Dublin, IE)
- Marcas O'Duinn (Dublin, IE)
- Dries Neirynck (Chelmsford, GB)
Cpc classification
International classification
A61M25/01
HUMAN NECESSITIES
Abstract
In an ultra-wideband (UWB) communication system comprising a pair of UWB transceivers, methods for securely performing channel sounding. In a first GCP Sync method, a pre-determined set of Golay Complementary Pairs is added to an 802.15.4a frame. In a second CLASS method, a cyphered low auto-correlation sum set is added to frame. In a third LCSSS method, a low cross-correlation sidelobe sum set is added to the frame. In general, these methods are adapted to transmit a pseudo-randomly generated codeset which may have inherent sidelobe distortions, and then, in the receiver, to compensate for this, and any channel-induced, distortion by selectively modifing the cross-correlation codeset.
Claims
1. A method for use in a wireless communication system comprising a transmitter, T, and a receiver, R, the method comprising: [1.1] a first process comprising the step of: [1.1.1] in a selected one of T and R: [1.1.1.1] pseudo-randomly generating, as a function of a seed, a first code set of m codes, where m is an integer greater than 1; and [1.2] a second process comprising the steps of: [1.2.1] in T: [1.2.1.1] receiving from the first process a transmitter code set comprising the first code set; [1.2.1.2] transmitting the transmitter code set; and [1.2.2] in R: [1.2.2.1] receiving from the first process a receiver code set comprising the first code set; [1.2.2.2] receiving a channel-distorted form of the transmitter code set; [1.2.2.3] developing a set of m channel correlations by correlating each code of the receiver code set with the corresponding code of the channel-distorted form of the transmitter code set; and [1.2.2.4] developing a channel estimate by accumulating the set of m channel correlations.
2. The method of claim 1, further comprising the step of: [1.1.0] receiving the seed via a seed delivery facility.
3. The method of claim 1, wherein step [1.1.1] is further characterized as: [1.1.1] pseudo-randomly generating, as a function of a seed, a first code set of m codes, wherein the first code set is substantially group complementary.
4. The method of claim 1, wherein step [1.1.1] is further characterized as: [1.1.1] pseudo-randomly generating, as a function of a seed, a first code set of m codes, wherein m comprises n pairs of codes, each pair comprising a Golay pair.
5. The method of claim 1, wherein step [1.1.1] is further characterized as: [1.1.1] pseudo-randomly generating, as a function of a seed, a first code set of m codes, wherein the first code set has sufficiently low magnitude autocorrelation sidelobes.
6. The method of claim 1, wherein step [1.1] further comprises: [1.1.2] developing a set of m metric correlations by auto-correlating each of them codes comprising the first code set; [1.1.3] developing a metric by accumulating at least a selected portion of them metric correlations, the metric being selected to measure the degree to which the first code set is group complementary; [1.1.4] if the metric indicates that the first code set is not substantially group complementary, selectively modifying the first code set; and [1.1.5] repeating steps [1.1.2] through [1.1.4].
7. The method of claim 6, wherein, in step [1.1.4], the first code set is selectively modified by replacing at least one of the m codes with a new pseudo-randomly generated code.
8. The method of claim 6, wherein, in step [1.1.4], the first code set is selectively modified by selectively inverting at least a selected one of the bits comprising at least a selected one of the m codes.
9. The method of claim 1, further comprising: [1.3] a third process comprising the steps of: [1.3.1] in a selected one of T and R: [1.3.1.1] developing a second code set comprising each of the m codes comprising the first code set; [1.3.1.2] developing a set of m metric correlations by correlating each of them codes comprising the first code set with a respective one of the codes comprising the second code set; [1.3.1.3] developing a metric by accumulating at least a selected portion of the m metric correlations, the metric being selected to measure the degree to which the first code set and the second code set are group complementary; [1.3.1.4] if the metric indicates that the first code set and the second code set are not substantially group complementary, selectively modifying the second code set; and [1.3.1.5] repeating steps [1.3.2] through [1.3.4]; wherein step [1.2.1.1] is further characterized as: [1.2.1.1] receiving from a selected one of the first and third processes a transmitter code set comprising a respective one of the first code set and the second code set; and wherein step [1.2.2.1] is further characterized as: [1.2.2.1] receiving from a selected one of the first and third processes a receiver code set comprising a respective one of the first code set and the second code set.
10. The method of claim 1, further comprising: [1.3] a third process comprising the steps of: [1.3.1] in a selected one of T and R: [1.3.1.1] developing a second code set comprising each of the m codes comprising the first code set; [1.3.1.2] developing a set of m metric correlations, each correlation obtained by correlating a first vector consisting of all the bits from one of the m codes, comprising the first code set, concatenated with a selected number of bits from the code transmitted immediately before this code, with a second vector consisting of the respective one of the codes comprising the second code set; [1.3.1.3] developing a metric by accumulating at least a selected portion of the m metric correlations, the metric being selected to measure the degree to which the first code set and the second code set are group complementary; [1.3.1.4] if the metric indicates that the first code set and the second code set are not substantially group complementary, selectively modifying the second code set; and [1.3.1.5] repeating steps [1.3.2] through [1.3.4]; wherein step [1.2.1.1] is further characterized as: [1.2.1.1] receiving from a selected one of the first and third processes a transmitter code set comprising a respective one of the first code set and the second code set; and wherein step [1.2.2.1] is further characterized as: [1.2.2.1] receiving from a selected one of the first and third processes a receiver code set comprising a respective one of the first code set and the second code set.
11. The method of claim 9, wherein, in step [1.3.4], the second code set is selectively modified by replacing at least one of the m codes with a new pseudo-randomly generated code.
12. The method of claim 9, wherein, in step [1.3.4], the second code set is selectively modified by selectively inverting at least a selected one of the bits comprising at least one of the m codes.
13. The method of claim 1, wherein step [1.2.1.2] is further characterized as: [1.2.1.2] transmitting the transmitter code set, wherein at least one of the transmitted codes is followed by a selected period of silence.
14. The method of claim 1, wherein step [1.1.1] is further characterized as: [1.1.1] pseudo-randomly generating, as a function of a seed, a first code set comprising m codes and k dummy codes; and wherein step [1.2.2.3] is further characterized as: [1.2.2.3] developing a set of m channel correlations by correlating each of the m codes of the receiver code set with the corresponding m code of the channel-distorted form of the transmitter code set.
15. A wireless communication system configured to perform the method of claim 1.
16. A non-transitory computer readable medium including executable instructions which, when executed in a processing system, causes the processing system to perform the steps of a method according to claim 1.
Description
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
(1) Our invention may be more fully understood by a description of certain preferred embodiments in conjunction with the attached drawings in which:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17) In the drawings, similar elements will be similarly numbered whenever possible. However, this practice is simply for convenience of reference and to avoid unnecessary proliferation of numbers, and is not intended to imply or suggest that our invention requires identity in either function or structure in the several embodiments.
DETAILED DESCRIPTION OF THE INVENTION
(18) As is known, a GCP comprises a pair of GCSs. By way of example, consider the following zero-padded GCS (see,
(19) [GCS.sub.1]1 1 1 1 1 1 +1 +1 1 +1 1 +1 11 +1
(20) and its complement (not shown):
(21) []1 1 ++1 1 1 1 1 1 +1 +1 1 +1 1 +1 1
(22) In . As can clearly be seen, the sidelobes of the auto-correlation of GCS.sub.1 are exactly opposite the sidelobes of the auto-correlation of
.
GCP Sync
(23) In a first embodiment of our invention, we perform channel estimation using what we refer to as a CCP Synchronization (GCP Sync) method. In accordance with this method, we transmit through the channel a pre-determined set, GCP Sync, of GCPs following the end of the normal 802.15.4a UWB PHY frame:
(24) TABLE-US-00002 Ipatov 802.15.4a Sync SFD PHR DATA GCP Sync
In general, the GCP Sync consists of multiple pairs of GCSs. We note, however, that the two GCSs in each GCP do not necessarily have to follow each other directly. As long as both GCSs of each GCP are sent, and the receiver adds the correlation of the incoming signal with the code it expects to see at that time into its channel estimate, then the order doesn't matter. By way of example, the particular pairs that are sent may be chosen in a pseudo-random way from a large set of possible codes. Of course, to maintain synchronization, the methodology employed to develop each GCP Sync code-set must be known to both the transmitter and the receiver. Various known means may be implemented to accomplish this synchronization function in particular instantiations.
(25) In accordance with this embodiment, we develop the identical GCP Sync code-set in both the transmitter and receiver using the synchronized methodology. Now, for purposes of explanation, let us assume that the pre-arranged synchronization function has determined that, for the first GCR.sub.L, the GCS.sub.1, will be transmitted first, followed some time later by the . In the receiver, we: 1. auto-correlate the response to the received GCS.sub.1 with the internally-developed GCS.sub.1; 2. auto-correlate the response to the received
, with the internally-developed
; and 3. sum these two correlations.
As has been demonstrated, above, this approach substantially guarantees that the auto-correlation sidelobes in our channel estimate have automatically cancelled each other out. Because of this perfect sidelobe cancellation property, the number of symbols and the length of the GCP Sync can be much shorter than if we had used either random codes or Ipatov codes.
(26) As is known, the channel will tend to lengthen the delay spread of each transmitted code. For example, if the code was 1 microsecond long and the channel had a delay spread of 100 ns, then the energy arriving at the receiver due to one code would last for 1.1 microseconds. For this reason, a gap, i.e., a period of transmitter silence, selected to be at least equal to the expected delay spread in the channel could be inserted between one or more, and, perhaps all, of the transmitted symbols. In this way, the energy from each code symbol will arrive separately at the receiver. Of course, this will be a noisy estimate due to noise in the channel and quantisation noise in our receiver, but if we repeat this process with many different pairs of codes, we will still tend to develop a good channel estimate.
(27) We could, of course, send the GCP Sync anywhere during the frame, including after the DATA portion, but the advantage of sending it after the SFD is that the SED acts as a timestamp which allows the receiver to know when the GCP Sync is coming, which in turn will allow the receiver to know with which code it needs to correlate the incoming signal at any one time.
(28) For extra security we could insert pseudo-random pulses between sequences to disguise the actual codes we are using. The code length used for each symbol could vary also pseudo-randomly so that the attacker doesn't know symbol boundaries, and thus when to try to predict what code is being sent.
(29) We note that it is possible to use much shorter symbol lengths for the GCP Sync part of the channel sounding than for the initial SYNC sequence (which uses Ipatov codes in this case). For example, consider a length 32 code with one +vc or vc pulse every 2 ns chip. This code is only 64 ns long, but that is more than enough to accurately characterize the first path if the receiver has previously determined the path position from the Ipatov Sync. In this embodiment, path position tells the correlator which code is due at this time. Paths outside the correlator window don't correlate and are thus invisible to the receiver.
(30) We further note that Golay originally proposed binary complementary sequences (BCPs). Since then other types of complementary sequences have been proposed. TCPs would work just as well. Multilevel complementary sequences have been found and would also work. Complex QAM complementary sequences have also been discovered and any of these could also be used.
CLASS
(31) In a second embodiment, we perform channel estimation using what we refer to as a cyphered low auto-correlation sum set (CLASS). As in our GCP Sync approach, we append a CLASS to the end of the standard 802.15.4a frame:
(32) TABLE-US-00003 Ipatov 802.15.4a Sync SFD PHR DATA CLASS
In accordance with this embodiment, we develop the CLASS by performing the following steps (see,
(33) in both the transmitter and the receiver: CLASS_1. Generate a base code-set, C.sub.n.sup.m, of m pseudo-random binary codes each having a predetermined length, n, with exactly one code for each symbol in the transmitted sequence: CLASS_2. For each code, C.sup.m, in the base code-set, determine a respective auto-correlation fiction, A.sup.m; CLASS_3. Determine the sum, SA.sup.m, of the set of A.sup.m; CLASS_4. Determine the sum of the squares, SSSA.sub.base, of the SA.sup.m; CLASS_5. Let x=[0, m1]: CLASS_5.1. Let y=[0, n1]: CLASS_5.1.1. Create a trial code-set, , by reversing the sign of bit C.sub.y.sup.x; CLASS_5.1.2. Determine a SSSA.sub.trial of
; and CLASS_5.1.3. If SSSA.sub.trial is smaller than SSSA.sub.base, then replace the base code-set C.sub.n.sup.m with the trial code-set
;
(34) then, in the transmitter: CLASS_6. Transmit as the CLASS the final code-set, C.sub.n.sup.m;
(35) and, finally, in the receiver: CLASS_7. Receive the transmitted code ; and CLASS_8. Develop a channel estimate by correlating the final code-set C.sub.n.sup.m with
.
The final code-set, C.sub.n.sup.m, comprises the CLASS code-set that the transmitter will transmit to the receiver. Since both our transmitter and our receiver perform exactly the same process, using the same pseudo-random seed, each generates exactly the same final code-set, C.sub.n.sup.m. Thus, when the receiver correlates the received CLASS sequence with the internally-generated CLASS code-set, the resulting channel estimate exhibits relatively low sidelobe distortion. Indeed, by minimizing SSSA, our method ensures that the power in the sum of the sidelobes of the auto-correlation functions of the generated code-set is low, thereby tending to minimize sidelobe distortion.
(36) We recognize that various modifications may be made in our CLASS method. By way of example, consider the following variations: 1. The more bits in each code that are examined, the greater the number of computations that are required. We have found that if only a subset of the bits are examined in Step 5.1 the resultant set of codes can have sufficiently low auto-correlation sidelobes, i.e., a sufficiently low SSSA. If not all bits are being examined, the bits at the starts and ends of the code have the most impact on the size of the sidelobes. This is because modification of central bits in the code does not affect the entire auto-correlation function, but only the central part of it, whereas the end bits affect the whole auto-correlation function. When we use the term sufficiently here, we mean to a low enough level so that a real path can be distinguished from the sidelobes. For example, you can see in
LCSSS
(37) In a third embodiment, we perform channel estimation using what we refer to as a low cross-correlation sidelobe sum set (LCSSS). As in our GCP Sync and CLASS approaches, we append a LCSSS to the end of the standard 802.15.4a frame:
(38) TABLE-US-00004 Ipatov 802.15.4a Sync SFD PHR DATA LCSSS
In accordance with this embodiment, we develop the LCSSS by performing the following steps (see,
(39) in both the transmitter and the receiver: LCSSS_1. Generate a base code-set, C.sub.n.sup.m, of m pseudo-random binary codes each having a predetermined length, n, with exactly one code for each symbol in the transmitted sequence;
(40) then, in the transmitter: LCSSS_2. Transmit as the LCSSS the base code-set, C.sub.n.sup.m;
(41) and, finally, in the receiver: LCSSS_3. Receive the transmitted code-set, ; LCSSS_4. For each code in
, develop the cross-correlation function, X.sup.m, with the corresponding code in C.sub.n.sup.m; LCSSS_5. Determine the sum SX.sup.m, of the set of Z.sup.m that comprise pre-cursors*;
(*Note: pre-cursors comprise the cross-correlation values that precede the center of the cross-correlation function.) LCSSS_6. Determine the sum of the squares, SSPSC.sub.base, of the SX.sup.m; LCSSS_7. Let x[0, m1]: LCSSS_7.1.1. Let y=[0, n1]: LCSSS_7.1.1.1. Create a trial code-set, , by reversing the sign of bit C.sub.y.sup.x; LCSSS_7.1.1.2. Determine a SSPSC.sub.trial of
; and LCSSS_7.1.1.3. If SSPSC.sub.trial is smaller than SSPSC.sub.base, then replace the base code-set C.sub.n.sup.m with the trial code-set
. LCSSS_8. Develop a channel estimate by correlating the final code-set C.sub.n.sup.m with
.
As with our CLASS method, the resulting channel estimate exhibits relatively low sidelobe distortion. Indeed, by minimizing SSPSC, our method ensures that the power in the sum of the pre-cursors of the cross-correlation functions of the generated code-set is low, thereby tending to minimize sidelobe distortion. Using our LCSSS approach, the first path of the channel estimate can be found without the usual sidelobe distortion.
(42) We recognize that various modifications may be made in our LCSSS method. By way of example, consider the following variations: 1. The more bits in each code that are examined, the greater the number of computations that are required. We have found that if only a subset of the bits are examined in Step 3.5.1 the resultant set of codes can have sufficiently low auto-correlation sidelobes, i.e., a sufficiently low SSSA. If not all bits are being examined, the bits at the starts and ends of the code have the most impact on the size of the sidelobes. This is because modification of central bits in the code does not affect the entire auto-correlation function, but only the central part of it, whereas the end bits affect the whole auto-correlation function. 2. If a second pass through the codes is done, i.e., Step 5 is repeated, then we have found that fewer bits need to be examined. 3. Step 3.5.1.1, above, does not need to be repeated in brute force every time. There are shortcuts: for example, the auto-correlation function of each code can be stored and subtracted before adding in the auto-correlation of the changed code. Also the auto-correlation of the changed code can be developed by calculating the effect of reversing just one hit on the auto-correlation rather than re-calculating the entire auto-correlation again. We believe that this particular approach will prove particularly suitable for optimal hardware implementation. 4. When a code is being examined in Step 3.5.1, the SSPSC of all the previous codes, up to and including this one, could be used instead of the SSPSC of all of the codes. This generally results in worse overall performance for the same number of bit reversal operations. However, lost performance can be recovered if more (2 to 4x) bit reversals were used. This approach also has some advantages because the auto-correlation accumulator can use fewer bits of precision, and because the algorithm can be executed without initial latency. 5. The number of tested bit-inversions can be variable. For example, initial codes could be optimized with fewer test inversions, and only the final few codes could be executed with much higher bit inversion count. This is because intermediate sidelobe metrics generated after several codes is irrelevant. Only the final sidelobe metric, i.e., after all the codes have been processed, determines final performance. The intent here is no save processing power/time while making sure that final metric is as low as possible. 6. As with the GCP sync, the LCSSS code-set does not need to be sent after the DATA, it can be sent any time after the SFD. 7. One theoretically possible attack approach could involve the attacker trying to predict how the receiver would change the transmitted random bits for correlation in its receiver, and then transmitting those predicted bits earlier. Such prediction attempts could be based on the analysis of sidelobes, knowing that the receiver's LCSSS algorithm would try to minimize those. Therefore, to further enhance security, the transmitter could add a number of dummy symbols to the transmission. Such dummy symbols (which could be just random bit sequences) would not be processed by the receiver LCSSS algorithm (which is complementing sidelobes of the valid symbols); instead they would be ignored. However, these dummy symbols would add additional sidelobes to the set of transmitted symbols. Since the attacker would not be able to distinguish between true and dummy symbols, the sidelobe metrics of the attacker's transmission would be contaminated, thus preventing or diminishing the possibility that the receiver's correlator will predict the correct LCSSS bits. There can be multiple variants of scheduling transmissions of valid and dummy symbols, for example, they could be all pseudo-randomly interleaved.
(43) One advantage of the LCSSS process over the CLASS process is that the transmitted sequence is completely random with no modifications. Like the CLASS sequence, the LCSSS sequence has very low precursor sidelobes and so gives an almost distortion free first path estimate; but the CLASS sequence has the disadvantage that some or all of the transmitted codes have been modified from their original random states to make codes with low auto-correlation sidelobe sums. An attacker might be able to exploit this property of the modified code-set to guess some of the bits, and thus successfully pretend he is nearer than he actually is by transmitting these guessed bits so that they arrive earlier than the real bits.
(44) As noted above, bit-inversion is one technique that may be effectively employed for seeking better code sequences. However, this technique will be numerically it efficient if it requires recalculation of all auto-correlations for every candidate bit-inversion. We have discovered, however, that it is possible to compute only the difference that a single bit-inversion would make to the cross-correlation. We have determined that the following exemplary pseudo-code algorithm may be implemented efficiently in hardware:
(45) TABLE-US-00005 txCodes - generated random codes (using seed and secure cypher) rxCodes=txCodes; groupSize=64; % split preamble into N groups, each 64-symbols xcSum = zeros(1,63); % sum of cross-correlations for m=1: groupSize % sum all auto-correlations (of all initial codes) xcSum = xcSum+xcorr(txCodes(m), rxCodes(m)); end for m=1: groupSize % loop for all codes in a group TXC=txCodes(m,:); RXC=rxCodes(m,:); for b=1:64 % try to invert all 64 bits diff=[zeros(1,64b) sign(RXC(b))*TXC]; % diff vector if (2*sum(diff *xcSum)) > (b1) % if metric is decreased, accept inversion xcSum = xcSum(1:63)+diff(1:63); % new sum of all autocorrelations RXC(b) = RXC(b); % invert bit #b end end rxCodes(m) = RXC; end
In the case of CLASS, where bit inversion is done in both the transmitter and the receiver, a similar approach may be employed, but the diff variable is formed as a sum of two vectors.
(46) Let us now compare the channel estimate performance of the following alternative methods: Method 1. A purely random set of codes, each comprising 64 symbols, correlated with itself, as shown in
As can be seen by comparing
Integrated CLASS and LCSSS
(47) In a fourth embodiment we perform channel estimation using a single flow that selectively generates either CLASS and LCSSS. As in our CLASS and LCSSS approaches, we append the selected result to the end of the standard 802.15.4a frame. In accordance with this embodiment, we develop a selected one of the CLASS or the LCSSS by performing the following steps (see,
(48) in both transmitter and receiver: LCSSS_1. Generate a base codeset, C.sup.z of z pseudo-random binary codes each having a predetermined length, n, with exactly one code for each symbol in the transmitted sequence; let the jth hit of the ith code of C.sup.z be denoted C.sub.j.sup.iz; LCSSS_2. For each code, C.sup.iz, in the set, C.sup.z, calculate its auto-correlation function of length 2n1; let the set of these auto-correlation functions be A(C.sup.z), and let the jth value of the ith code of A(C.sup.z) be denoted A; (C.sup.iz); LCSSS_3. From the larger set C.sup.z of z codes, select a subset E.sup.m of m codes; calculate a new function, SA(E.sup.m), whose elements are the sums of the corresponding values of the precursors in the set of auto-correlation functions, i.e., SA.sub.j(E.sup.m)=.sub.i=1.sup.mA.sub.j(E.sup.im);
(*Note: precursors comprise the first n1 values of the auto/cross-correlation function.) LCSSS_4. From many possible E.sup.m sets, select one, called C.sup.m, which has a sufficiently low sum of squares of SA(C.sup.m) and call this SSSA.sub.base, i.e., SSSA.sub.base=.sub.j=1.sup.n1SA.sub.j.sup.2(C.sup.m);
(Note: Minimizing the sum of squares minimizes the power. Another approximation to the sum of squares, e.g., sum of absolute values, could be used here. Also another metric could be minimized or maximized, e.g., peak power, sum of cubes, etc.) (LCASS_5 comprises optional steps covering CLASS method) LCASS_5. Let x=[1, m]: LCASS_5.1. Let y=[1, n]: LCASS_5.1.1 Create a trial code-set, , by reversing the sign of bit y of C.sub.y.sup.xm; LCASS_5.1.2. Determine a SSSA.sub.trial of
and LCASS_5.1.3. If SSSA.sub.trial is smaller than SSSA.sub.base, then replace the base code-set C.sup.m, with the trial code-set
; update SSSA.sub.base; LCSS_6. (optional) The total number of transmitted codes will be (m+d), where d are a predetermined number of additional codes, ignored by the receiver; create a vector specifying order of (m+d) codes transmission, T.sup.m+d, where T.sup.m+d may be either consecutive order 1, 2, . . . , (m+d) or random permutation of the integers from 1 to (m+d);
(49) then, in the transmitter: LCSSS_7. (optional) Generate a set of additional codes, D.sup.d, of d pseud; random binary codes, each having a predetermined length, n, with exactly one code for each symbol in the transmitted sequence; LCSSS_8. (optional) Using additional code-sets, D.sup.d, form an updated base code-set C.sup.m+d comprising m previously generated codes and the d new random codes; LCSSS_9. Transmit the base code-set, C.sup.m+d in specific order using T.sup.m+d as indexes to select the code transmission order;
(50) and, finally, in the receiver: LCSSS_10. Having already determined the sum SSSA.sub.base (in LCSSS_4), rename it to SSSX.sub.base, and rename C.sup.m to CX.sup.m; LCSSS_11 (optional). Let x=[1, m]: LCSSS_11.1. Let y=[n/2+1, n]; LCSSS_11.1.1. Create a trial code-set, , by reversing the sign of bit y of CX.sub.y.sup.xm; LCSSS_11.1.2. Determine a SSSX.sub.trial of
; and LCSSS_11.1.3. If SSSX.sub.trial is smaller than SSSX.sub.base, then replace the base code-set CX.sup.m with the trial code-set
; and replace SSSZ.sub.base with SSSX.sub.trial; LCSSS_12, Receive an estimate of the transmitted code-set,
; knowing transmission code order T.sup.m+d, identify which code is currently going to be received. If it's going to be one of the valid m codes, then program the receiver correlator with appropriate CX.sup.m code, otherwise ignore one of the d random codes belonging to the D.sup.d code-set; and LCSSS_13. Develop a channel estimate by correlating the code-set CX.sup.m with
.
(51) In a fifth embodiment, we perform channel estimation using a parallel flow comprising a code generation process and a channel sounding process. In accordance with our code generation process, we selectively instantiate an identical pattern generation facility in both the transmitter and receiver. Each of these facilities is selectively adapted to receive a seed; and to generate, as a function of the seed, a base codeset, C.sup.z, of z pseudo-random codes, each of length ii bits, wherein C.sub.j.sup.iz comprises the jth bit of the ith code of C.sup.z. In the field, a mechanism is provided to coordinate the transmitter and the receiver so that an identical seed is provided to the respective code generation facility, thus assuring that the identical sequence of codes is generated in both the transmitter and the receiver. For example, the transmitter may be adapted to develop the seed and thereafter to transmit that seed to the receiver using a conventional packet transaction. Alternatively, a central control facility (not shown) may be adapted to transfer the seed to both the transmitter and the receiver using know transfer mechanisms.
(52) In accordance with the channel sounding process in this fifth embodiment:
(53) in both transmitter and receiver: selectively provide the seed to the respective code generation facility, each seed having the same selected value, and receive from the code generation facility the generated base codeset, C.sup.z; for each of the C.sup.iz in the received base codeset C.sup.z, calculate a respective auto-correlation function, A, of length 2n1, wherein X(C.sup.z, C.sup.z) comprises the set of cross-correlation functions, and X.sub.j(C.sup.iz, C.sup.iz) comprises the jth value of the ith code of A(C.sup.z); from the set C.sup.z of z codes, select a subset E.sup.m of m codes, and calculate a function SX(E.sup.m, E.sup.m), each element of which comprises the sums of the corresponding values of a selected set of precursors in the set of cross-correlation functions as determined in accordance with a function:
SX.sub.j(E.sup.m)=.sub.i=1.sup.mA.sub.j(E.sup.im,E.sup.im) from a selected plurality of E.sup.m, sets, select a base code set, C.sup.m, which has a sufficiently tow sum of squares of SX(C.sup.m, C.sup.m) as determined in accordance with a function:
SSSX.sub.base=.sub.j=1.sup.n1SX.sub.j.sup.2(C.sup.m,C.sup.m);
(54) in only the transmitter: transmit the base code-set; and
(55) in only the receiver: copy C.sup.m to CX.sup.m; let x=[1, m]: let y[n/21, n]: create a trial code-set, , by reversing a sign of bit y of CX.sub.y.sup.xm; determine a SSSX.sub.trial of
in accordance with a function:
SSSX.sub.trial=.sub.j=1.sup.n1SX.sub.j.sup.2(C.sup.m,; and if SSSX.sub.trial is smaller than SSSX.sub.base, then replace the base code-set CX.sup.m with the trial code-set
and replace SSSX.sub.base with SSSX.sub.trial; and receive an estimate of the transmitted code-set.
; develop a channel estimate by correlating the code-set CX.sup.m with
.
(56) In a sixth embodiment, we again perform channel estimation using a parallel flow comprising a code generation process and a channel sounding process. In this embodiment we provide a code generation process substantially the same as in our fifth embodiment.
(57) In accordance with the channel sounding process in this sixth embodiment:
(58) in both transmitter and receiver: selectively provide the seed to the respective code generation facility, each seed having the same selected value, and receive from the code generation facility the generated base codeset, C.sup.z; for each of the C.sup.iz in the received base codeset C.sup.z, calculate a respective auto-correlation function, A, of length 2n1, wherein A(C.sup.z) comprises the set of auto-correlation functions, and A.sub.i(C.sup.iz) comprises the jth value of the ith code of A (C.sup.z); from the set C.sup.z of z codes, select a subset E.sup.m of m codes, and calculate a function, SA(E.sup.m), each element of which comprises the sums of the corresponding values of a selected set of precursors in the set of auto-correlation functions as determined in accordance with a function:
SA.sub.j(E.sup.m)=.sub.i=1.sup.mA.sub.j(E.sub.im); from a selected plurality of E.sup.m sets, select a base code set, C.sup.m, which has a sufficiently low sum of squares of SA(C.sup.m) as determined in accordance with a function:
SSSSA.sub.base=.sub.=1.sup.n1SA.sub.j.sup.2(C.sup.m); rename SSSA.sub.base as SSSX.sub.base, and renaming C.sup.m to CX.sup.m; let x=[1, m]: let y=[n/2+1, n]: create a trial code-set, by reversing a sign of bit y of CX.sub.y.sup.x,m; determine a SSSX.sub.trial of
; and if SSSX.sub.trial is smaller than SSSX.sub.base, then replace the base code-set CX.sup.m with the trial code-set
, and replace SSSX.sub.base with SSSX.sub.trial;
(59) in only the transmitter: transmit the code-set, CX.sup.m; and
(60) in only the receiver: receive an estimate of the transmitted code-set, and develop a channel estimate by correlating the code-set CX.sup.m with
.
Generic Channel Sounding Flow
(61) As will be recognized by those skilled in this art, several of the flows set forth above comprise respective species of the more generic flow illustrated in
(62) In accordance with the channel sounding processes described above, the transmitter is adapted to transmit the transmitter codeset received from the code generation facility. In some of our channel sounding processes, the transmitter is optionally adapted selectively to modify the transmitter codeset before transmission.
(63) In accordance with the channel sounding processes described above, the receiver is adapted selectively to modify the receiver codeset received from the code generation facility. Then, the respective receiver receives a channel-distorted form of the transmitter codeset, which, for convenience, we shall hereinafter refer to as an estimate. Finally, the receiver develops a channel estimate by correlating the received estimate with the receiver-modified base codeset. In those embodiments in which the transmitter transmits a transmitter-modified base codeset, the receiver develops the channel estimate by correlating the received estimate of the transmitter-modified base codeset with the receiver-modified base codeset.
(64) Rather than minimizing sidelobes interference using transmitter/receiver correlator sequence changes, we have discovered that it is possible to use only post-processing in the receiver. In this approach, both the transmitter and the receiver would receive identical, pseudo-random sequences from the code generator. Typically, this will result in significant sidelobes. However, we note that the receiver can directly calculate these sidelobes by accumulating auto-correlations of all of the transmitted code symbols. As is known, each energy (for example coming from a strong path) will not only cause a peak in the accumulator, but also produce mini-peaks, exactly in the locations predicted by sidelobes. Therefore, it is possible to select and process the channel response samples, starting with the largest, and then iteratively subtract the sidelobe interference caused by each sample. As will be recognized, proper scaling and spreading in time needs to be taken into account in this process. In general, as more samples are processed, the sidelobes gradually decrease. Usually, with more multi-path present, it will be necessary to process more samples. However, mutual cross-interference could reduce final quality because even large samples will have their amplitudes affected by interference from other samples and paths. It would be possible, however, to perform multiple processing passes, each time also subtracting estimated interference components.
(65) In one other interesting embodiment, let us first assume that a sequence A of m codes comprises the concatenation of two code sub-sequences: A.sub.1 of n codes; and A.sub.2 of (m-n) codes; i.e., A=[A.sub.1::A.sub.1] where the symbol :: represents the concatenation operation. Let us also assume that we are interested in the correlation between the sequence A and a different, selected sequence B. To determine this correlation, we first calculate a first correlation between B and [A.sub.1::0], where the zero indicates masking the sub-sequence A.sub.2. We then calculate a second correlation between B and [0::A.sub.2], where the zero now indicates masking the sub-sequence A.sub.1. If we now accumulate the two correlations, the spurious sidelobes of the first correlation will be cancelled out by the sidelobes of the second correlation. Thus, if a selected code sequence is partitioned into two or more sub-sequences, each of which is transmitted separately, we believe this approach will be effective to prevent an attacker or eavesdropper from guessing which code sequence is being used.
Binary Codes vs. Ternary Codes
(66) In some embodiments, if a binary code is received in the receiver and then a much stronger echo of that binary code is received on top of it a few nanoseconds later, the receiver only sees the second binary code. In effect, the strong echo floods/overloads the receiver, and you cannot detect the small perturbations caused by the earlier, weaker signal. One possible solution is to use a ternary code. So, for example, instead of transmitting this binary code:
(67) ++++++++++++++++++++++++++++++++++++
(68) you send, for example, this tertiary code:
(69) +00+0+00+0000+00+00+0+0+0+000+00+000+00++000++0
(70) This allows the smaller signal to be detected in the gaps of the powerful signal.
(71) We have found that for a length 64 code, using a ternary code with only 16 positive or negative pulses and with zeros in the other positions works very well.
(72) Further, the ternary code can then be sent with twice the amplitude (i.e., with 4 times the instantaneous power) as the length 64 code so that we don't lose any signal-to-noise ratio.
(73) We have found that some code pulse grids are better than others for avoiding pulse collisions between the first path and its echo. By code pulse grid, we mean a template that defines where pulses should be present and where they should be absent.
(74) Although we have described our invention in the context of particular embodiments, one of ordinary skill in this art will readily realize that many modifications may be made in such embodiments to adapt either to specific implementations. By way of example, it will take but little effort to adapt our invention for use with different communication schemes. Further, the several elements described above may be implemented using any of the various known semiconductor manufacturing methodologies, and, in general, be adapted so as to be operable under either hardware or software control or some combination thereof, as is known in this art. Alternatively the several methods of our invention as disclosed herein in the context of special purpose receiver apparatus may be embodied in computer readable code on a suitable non-transitory computer readable medium such that when a general or special purpose computer processor executes the computer readable code, the processor executes the respective method.
(75) Thus it is apparent that we have provided several improved methods and apparatus for use in the transceiver of a wireless communication system to perform channel sounding. Although we have so far disclosed our invention only in the context of a packet-based UWB communication system, we appreciate that our invention is broadly applicable to other types of wireless communication systems, whether packed-based or otherwise, that perform channel sounding. Further, we submit that our invention provides performance generally comparable to the best prior art techniques but more efficiently than known implementations of such prior art techniques.