The drawings accompanying and forming part of this specification are included to depict certain aspects of the invention. The invention may be better understood by reference to one or more of these drawings in combination with the description presented herein. It should be noted that the features illustrated in the drawings are not necessarily drawn to scale.
The following detailed description of the invention refers to the accompanying drawings. The description includes exemplary embodiments, not excluding other embodiments, and changes may be made to the embodiments described without departing from the spirit and scope of the invention. The following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims.
The method disclosed in the present invention describes a fine timing estimation algorithm. The method is easy to implement and can significantly improve the accuracy of timing position estimation. Although a WiMax wireless communications network is used to illustrate the system and method of the present invention, one having skills in the art would recognize that the present invention is applicable to the timing estimation process of any wireless communications network that uses unique preambles to facilitate the acquisition of radio signals. Orthogonal frequency division multiple access (OFDMA) and orthogonal frequency division multiplex (OFDM) are examples of such wireless communications networks.
The method disclosed in the present invention first creates a time-domain timing detection window. Correlations between the sampling points in the time-domain timing detection window and a portion of the sampling points of a known preamble are calculated and a vector of correlations is created. The position of the largest value in the vector of correlations is identified. Based on the position information, the time-domain timing detection window is divided into segments.
Two vectors—a sum_res_sum and a sum_res_max—are created from the sampling points in the time-domain timing detection window. A timing position is identified, based on the position of the largest element of the sum_res_sum vector or the sum_res_max vector.
In step 110, a preamble is detected in a time-domain sampling window Wpreamble
In step 120, a time-domain timing detection window Wtiming
Let a vector R represent the sampling points in the time-domain timing detection window Wtiming
In step 130, the correlations between a subset of the sampling points in the vector R and a subset of the sampling points in the vector Preamble_TD are calculated according to the following equation: s(k)=|R(k:k+NCP+┌L/3┐−1)(Preamble_TD(1:NCP+┌L/3┐))H|. In the above equation, ┌ . . . ┐ is the ceiling operator; ( . . . )H is the Hermitian transpose operator; and | . . . | is the absolute value operator. Let the vector of the correlations with K elements be denoted as S=[s(1), s(2), . . . , s(K)], where K=L+2Ninc
In step 140, an element with the largest value in the vector S is identified and let kmax denote the index of the element. A pivot position k1 is obtained according to the following equation: k1=mod(kmax,┌L/3┐), where mod( . . . ) operator produces the reminder of kmax divided by ┌L/3┐.
In step 150, A series of 2d+1 correlation values are taken from the vector S to form subsets, denoted as Ŝ(u), where 1≦u≦U and U=floor((K−k1−1)/┌L/3┐)+1. The method is based on the following rule: Ŝ(u)=[s(k1+(u−1)┌L/3┐−d), . . . , s(k1+(u−1)┌L/3┐+d)], where d is a predetermined positive integer value. (The vector Ŝ(u) is referred to as the second vector in the Claims section.)
Let ŝmax(u) denote the largest element of Ŝ(u). Let ŝsum(u) be the sum of all elements of Ŝ(u). Two vectors are created: Ŝmax=[ŝmax(1), ŝmax(2), . . . , ŝmax(U)] and Ŝsum=[ŝsum(1), ŝsum(2), . . . , ŝsum(U)]. (The vector Ŝmax and the vector Ŝsum are referred to as the third factor and the fourth vector in the Claims section.)
In step 160, a vector sum_res_max is generated from Ŝmax according to the following equation:
sum—res_max=[ŝmax(1), . . . , ŝmax(U−2)]+[ŝmax(2), . . . , ŝmax(U−1)]+[ŝmax(3), . . . , ŝmax(U)]
In addition, a vector sum_res_sum is generated from Ŝsum according to the following equation:
sum—res_sum=[ŝsum(1), . . . , ŝsum(U−2)]+[ŝsum(2), . . . , ŝsum(U−1)]+[ŝsum(3), . . . , ŝsum(U)]
Step 170 illustrates how to find a timing position. There are two alternative approaches to achieve the goal. In one approach, the index of the largest element of the vector sum_res_sum is denoted as imax. Let tmp1 be the larger of the two values, sum_res_sum(imax−1) and sum_res_sum(imax+1). Two predetermined coefficients are chosen and denoted as f11 and f12. Temp1 is then compared with f11*sum_res_sum(imax). If temp1 is less than or equal to f11*sum_res_sum(imax), then imax is identified as the timing position. However, if temp1 is greater than f11*sum_res_sum(imax), then a new vector is generated according to the following equation: sup er_sum=sum_res_sum+f12*sum_res_max. The index of the largest element of the vector sup er_sum is denoted as jmax, and it is identified as the timing position. (The vector sup er_sum is referred to as the seventh vector in the Claims section.)
According to the other approach, the index of the largest element of the vector sum_res_max is denoted as imax. Let temp2 be the larger of the two values—sum_res_max(imax−1) and sum_res_max(imax+1). Two predetermined coefficients are chosen and denoted as f21 and f22. Temp2 is then compared with f21*sum_res_max(imax). If temp2 is less than or equal to f21*sum_res_max(imax), then imax is identified as the timing position. However, if temp2 is greater than f21*sum_res_max(imax), then a new vector is generated according to the following equation: sup er_sum=sum_res_max+f22*sum_res_sum. The index of the largest element of the vector sup er_sum is denoted as jmax, and it is identified as the timing position.
The preamble detection module 210 detects the position of a preamble and determines a coarse timing position and a sub-carrier frequency offset. The timing detection window module 220 creates a time-domain timing detection window using a time-domain sampling window. The time-domain timing detection window Wtiming
The correlation module 230 generates a correlation vector comprising of correlations between a subset of the time-domain timing detection window and a subset of the sampling points of a known preamble. A correlation vector with K elements is denoted as S=[s(1), s(2), . . . , s(K)], where K=L+2Ninc
The correlation module 230 identifies the largest value in the vector S. Let kmax denote the index of the element. A pivot position k1 is obtained according to the following equation: k1=mod(kmax,┌L/3┐), where mod( . . . ) operator produces the reminder of kmax divided by ┌L/3┐.
Any subset of the vector S is denoted as Ŝ(u), where 1≦u≦U, and U=floor((K−k1−1)/┌L/3┐)+1. Let d be a predetermined integer, and 2d+1 correlation values are taken from the vector S to form a series of subsets Ŝ(u). The method to form subsets Ŝ(u) is based on the following equation: Ŝ(u)=[s(k1+(u−1)┌L/3┐−d), . . . , s(k1+(u−1)┌L/3┐+d)].
The sum_res module 240 creates two vectors, and they are: Ŝmax=[ŝmax(1), ŝmax(2), . . . , ŝmax(U)] and Ŝsum=[ŝsum(1), ŝsum(2), . . . , ŝsum(U)], where ŝmax(u) denotes the largest element of Ŝ(u) and ŝ(u) is the sum of all elements of Ŝ(u). Subsequently, two vectors—sum_res_sum and sum_res_max—are created from Ŝmax(u) and Ŝsum(u), respectively, where sum_res_max=[ŝmax(1), . . . , ŝmax(U−2)]+[ŝmax(2), . . . , ŝmax(U−1)]+[ŝmax(3), . . . , ŝmax(U)] and sum_res_sum=[ŝsum(1), . . . , ŝsum(U−2)]+[ŝsum(2), . . . , ŝsum(U−1)]+[ŝsum(3), . . . , ŝsum(U)]. The sum_res module also creates a vector sup er_sum according to the following equation: sup er_sum=sum_res_sum+f12*sum_res_max, where f12 is a predetermined value.
The timing position module 250 identifies the largest element of the vectors sum_res_sum and sup er_sum. The index of the largest element of the vector sum_res_sum is denoted as imax, and the index of the largest element of the vector sup er_sum is denoted as jmax. The timing position module 250 compares the larger of the two values—sum_res_sum(imax−1) and sum_res_sum(imax+1)—with f11*sum_res_sum(imax), where f11, is a predetermined value. If the larger of the two values—sum_res_sum(imax−1) and sum_res_sum(imax+1)—is greater than f11*sum_res_sum(imax), then jmax is the timing position; otherwise, imax is the timing position.
By adopting the method disclosed in the present invention, the timing error can be narrowed down to a value between −1 and 1 in an additive white Gaussian noise (AWGN) channel or a value between −5 and 5 in an ITU multi-path channel.
The above illustration provides many different embodiments or embodiments for implementing different features of the invention. Specific embodiments of components and processes are described to help clarify the invention. These are, of course, merely embodiments and are not intended to limit the invention from that described in the claims.
Although the invention is illustrated and described herein as embodied in one or more specific examples, it is nevertheless not intended to be limited to the details shown, since various modifications and structural changes may be made therein without departing from the spirit of the invention and within the scope and range of equivalents of the claims. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the invention, as set forth in the following claims.
The present application claims the benefit of U.S. Provisional Application Ser. 60/836,715, which was filed on Aug. 9, 2006.
Number | Date | Country | |
---|---|---|---|
60836715 | Aug 2006 | US |