Background
The direct sequence spread spectrum communication mechanism is that a sender modulates data information to a required frequency band through corresponding processing to be transmitted, and a receiver extracts original data information through corresponding inverse processing. However, for the receiving party, the key to extracting or recovering the valid data information is to solve the uncertainty caused by the human environment, and the process of solving the uncertainty is called synchronization.
The key point of synchronization is that signals at the transmitting and receiving ends of the system are consistent in frequency and phase, so that the information can be correctly demodulated. The effect is to achieve a correspondence in frequency and phase between the locally generated signal and the received signal. The synchronization process generally comprises two phases: and (4) capturing and tracking.
(1) Since the receiving end does not know whether the other side sends a signal, a searching process is needed, that is, a signal is searched in a certain frequency and time range, that is, the phase difference between the signal sent by the sending end and the local signal is to be included in a synchronization maintaining range, that is, in a chip of one code element of the spread spectrum pseudo code, this stage is called coarse synchronization, also called acquisition.
(2) When the acquisition is completed, the pseudo code and frequency error need to be further adjusted. No matter what kind of factors cause the frequency and phase to shift, the synchronization system can be adjusted to keep synchronization, and this stage is called fine synchronization, also called tracking.
The direct spread spectrum system adopts the Code Division Multiple Access (CDMA) technology, uses different pseudo-random sequence codes to carry out spread spectrum demodulation on information data of different transmitting terminals, in order to receive the information data of a certain transmitting terminal, the spread spectrum pseudo code for modulating the information data must be reproduced, the reproduced pseudo code and the input pseudo code carry out related operation on different phase errors, so that the reproduced pseudo code and the input pseudo code are synchronous, and the process is called pseudo code capture; since Doppler shift occurs due to radial movement between the transmitting terminal and the receiving terminal, in order to demodulate information data of a certain transmitting terminal, the value of Doppler shift generated by the corresponding transmitting terminal must be searched, which is called carrier acquisition.
Therefore, the acquisition of the direct sequence spread spectrum signal is a two-dimensional acquisition process. The acquisition results in that the phase difference between the local reference code and the received code is less than one code element width, the clock frequencies of the receiving and transmitting codes are basically consistent, and simultaneously, the carrier phases are aligned, thereby realizing the coarse synchronization of the input signal and the local signal.
After the acquisition of the direct spread signal is completed, the phase difference of the transmitting and receiving spread spectrum pseudo code is within one code element, thereby switching to a tracking state. Since the carrier frequency and the pseudo code phase are not known a priori, a non-coherent code loop must be established to track and receive the pseudo code, i.e. the pseudo code tracking loop is based on the assumption that the code loop structure is based on the unknown carrier frequency. Such a code-loop must be able to withstand and function within a certain range of carrier deviation from the nominal exponent. In view of the above, as for signal tracking of a receiving terminal of a general direct sequence spread spectrum system, a delay locked loop DLL in the form of a non-coherent full time lead-lag structure may be used as a pseudo code tracking loop.
The correlation operation of the pseudo code tracking loop adopts two independent correlators: an early code (early code) correlator and a late code (late code) correlator. The input signal is divided into two paths: one path is correlated with the early local reference code (early code); the other path is correlated with a late local reference code (late code). And the correlation result is subjected to integration or accumulation, square and addition and subtraction operation to complete phase discrimination. A schematic block diagram of a pseudocode tracking loop is shown in fig. 2.
The pseudo code tracking loop is composed of a code correlator, a code loop filter, a code NCO and a code generator 4. The code correlator plays a role in phase discrimination, an input digital intermediate frequency signal is divided into two paths, multiplied by two paths of local carrier waves I, Q and then enters the code correlator, correlated with early and late pseudo codes respectively to obtain 4 paths of correlation results, and added and subtracted to obtain a phase error signal.
The phase error signal is loop filtered and used to correct the frequency control word of the code NCO, so that the output frequency of the code NCO changes dynamically according to the input frequency. The loop filter functions not only to filter out noise but also to track the dynamics of the signal. The loop filter determines the dynamic performance of the pseudo code tracking loop.
For carrier tracking, a phase-locked loop and a costas loop can be adopted for realizing, and the function of the phase-locked loop and the costas loop is to demodulate an output signal of a pseudo code tracking loop to obtain data information, wherein the carrier tracking principle of the costas loop is shown in fig. 3. The carrier NCO phase detector consists of a carrier phase discriminator, a carrier loop filter and a carrier NCO. The input signal enters a carrier tracking loop after being de-spread, is mixed with two paths of local carrier I, Q, and then is multiplied after being low-pass filtered to obtain a phase error signal, and data demodulation is output from an I path.
Costas phase-locked loops are sensitive to dynamic stress, as are conventional phase-locked loops, however they produce the most accurate velocity measurements. The costas phase lock loop also provides data demodulation with minimal error for a given signal power level and is therefore the most desirable steady state tracking mode for the carrier tracking loop.
Disclosure of Invention
Aiming at the defects of the prior art, the invention discloses a synchronization method of non-uniform spread spectrum, which solves the problems of acquisition and tracking of a non-uniform spread spectrum system.
The invention is realized by the following technical scheme:
a non-uniform spread spectrum synchronization method, the synchronization method comprising the steps of:
s1, acquiring the signal by non-uniform spread spectrum codes;
s2, tracking the non-uniform spread spectrum codes of the signals captured by the non-uniform spread spectrum codes;
s3, carrying out rate matching, wherein the proportion of the symbol rate fb and the sampling rate fs is in integral multiple relation;
s4 GARDNER symbol synchronization processing is carried out on the signals after rate matching;
s5 performs carrier synchronization processing on the GARDNER symbol-synchronized signal.
Furthermore, pseudo code capture is carried out by adopting a modified half BIT matched filtering algorithm, PN code capture is realized by using a digital matched filter, and when a signal is in Gaussian white noise, the matched filter can enable the output signal-to-noise ratio to be maximum.
Furthermore, when the half BIT correlation peak value is obtained, the false capture probability and the missed capture probability exist, the threshold of the correlation peak value is proper, and a plurality of spread spectrum codes are added to be correlated at the same time.
Furthermore, when pseudo code capture is carried out, searching is carried out by adopting a data segmentation method, the time for correlation each time is N pseudo code periods, M bits are contained in the pseudo code periods, each segment of data is searched for K chips, after one segment of data is searched, a waiting state is entered, and after the next segment of data is fully received, searching is restarted until the correlation peak value exceeds a threshold and capture is completed.
Further, each segment of data is searched for a time of K chips, each chip having TcThe correlation is carried out at a time interval of 4, and each section of data needs to calculate KTc÷T c4, 4K time point correlation values; because of the existence of frequency deviation, when correlation is carried out at each time point, calculation is required to be carried out at each frequency deviation point, and the interval of each frequency deviation point is taken as fd=fb,fb=1/TbFor bit rate, a total calculation of M-2 f is required for each code phase pointmax/fdCorrelation value of frequency deviation point, fmaxIs the maximum frequency deviation value, and the frequency deviation estimation precision is fb/2。
Furthermore, after the initial spread spectrum code synchronization, tracking is carried out in the demodulation process, the code phase is adjusted according to the current optimal sampling point and the magnitude of the correlation value calculated by the front point and the rear point, coherent accumulation is carried out in half bit during tracking, and then noncoherent accumulation of N bit periods is carried out.
Furthermore, when calculating the correlation values, 3 correlation values are calculated each time, and if the current correlation value is the maximum, the optimal sampling point is kept unchanged; if the correlation value of the previous point is maximum, the optimal sampling point moves forward by one point; if the correlation value of the subsequent point is maximum, the optimal sampling point is moved backward by one point.
Furthermore, after pseudo code synchronization is obtained, a GARDNE symbol synchronization algorithm is adopted, and rate matching is completed by using a DDS algorithm, so that GARDNERGARDNE symbol synchronization algorithm can input symbol width in integral multiple relation with sampling points during synchronization, and further symbol synchronization is performed.
The invention has the beneficial effects that:
the invention solves the problems of acquisition and tracking of a non-uniform spread spectrum system, reduces the complexity of algorithm processing and has stronger algorithm adaptability.
Detailed Description
In order to make the objects, technical solutions and advantages of the embodiments of the present invention clearer, the technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the drawings in the embodiments of the present invention, and it is obvious that the described embodiments are some, but not all, embodiments of the present invention. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present invention.
The embodiment discloses a synchronization method of non-uniform spread spectrum as shown in fig. 1, which comprises the following steps:
s1, acquiring the signal by non-uniform spread spectrum codes;
s2, tracking the non-uniform spread spectrum codes of the signals captured by the non-uniform spread spectrum codes;
s3, carrying out rate matching, wherein the proportion of the symbol rate fb and the sampling rate fs is in integral multiple relation;
s4 GARDNER symbol synchronization processing is carried out on the signals after rate matching;
s5 performs carrier synchronization processing on the GARDNER symbol-synchronized signal.
The first step in despreading is spread spectrum pseudocode acquisition, i.e., acquisition of a phase state in the received signal that is consistent with the local PN code. The phase acquisition in the spreading sequence is generally implemented by using a matched filter or a phase search circuit, and the receiver slides relative to the PN code phase and the local PN code phase in the received signal in the correlator during the search synchronization process.
In the sliding process, when the correlation peak value exceeds a capture threshold, the mark completes synchronous capture, and the phase error of the PN codes of the transmitting party and the receiving party is smaller than a chip code width; then, the tracking state is entered, the local code rate is adjusted to change along with the code rate of the received signal so as to keep the alignment state of the two codes, the phase difference is further reduced, the correlation is increased, a high de-spread signal-to-noise ratio is obtained, and the requirement of the demodulation threshold in the future is met.
The most basic method for realizing the pseudo code tracking is to adopt a Delay Locked Loop (DLL), the common DLL is similar to a common DLL, the tracking of a pseudo code signal is realized through negative feedback, an error signal is formed by utilizing the autocorrelation characteristic of the pseudo code, and the signal is used for controlling the addition and subtraction of a local code clock to track the change of the phase of an external code sequence. In the tracking process of the spread spectrum pseudo code, the despread result output is obtained at the same time, and the despread output is actually the process of multiplying the local pseudo code by the received signal.
The matched filter method is a common pseudo code capturing method and is realized by a digital matched filter. The PN code capture is realized by using a matched filtering method, the capture time can be greatly shortened, and when the signal is in Gaussian white noise, the output signal-to-noise ratio can be maximized by using a matched filter.
For the present system, non-uniform spreading is used, the length of the pseudo code is 1023 or 2047, and the spreading ratio is related to the information rate, possibly even not an integer. In the pseudo code capture by the matched filter method, a method of combining non-coherent accumulation and coherent accumulation is adopted, wherein coherent accumulation time is half bit time, non-coherent accumulation time is N sections of coherent accumulation data (N half bits), and if the pseudo code length is 1023, the chip length accumulated each time is integral multiple of 1023.
The acquisition of the spread spectrum code is a process of utilizing the spread spectrum code to carry out sliding correlation while sweeping frequency, and once a correlation peak exceeds a threshold, the initial code phase time of the spread spectrum code word of the received signal can be accurately obtained. Fig. 4 shows a schematic diagram of acquisition of a spreading code, where the spreading code period is 1023, and acquisition requires 1023 pseudo code phase times at most, and the search is performed by a data segmentation method, where each correlation time is N pseudo code periods, and the time includes M bits. And searching K chips for each segment of data, entering a waiting state after the search of one segment of data is completed, and restarting the search after the next segment of data is fully received until the correlation peak value exceeds a threshold and the acquisition is completed.
Searching for K chips of time per segment of data, with T in each chipcThe/4 time interval is correlated, so that each section of data needs to calculate KTc÷TcAnd 4K time points are correlated.
Because the non-uniform spread spectrum mode is adopted, the spread spectrum code phase and the information bit are not aligned, in order to successfully realize coherent accumulation in one bit, a half-bit coherent accumulation method is adopted, namely coherent data is divided into two groups, the length of each group of coherent accumulation is half bit, and the two groups of data of the coherent accumulation are staggered by half bit. Thus, there must be a set of coherently accumulated data that falls within one complete bit. As illustrated in fig. 5, the data stream moves from left to right, each time 1/4 chips, if there is a certain slip, the difference between the received PN code and the local PN code is 1/4 cycles.
Fig. 6 shows that after T slips in the above graph 54, the spreading code boundary of the received signal corresponds to the local spreading code boundary, and half of the samples in each BIT can be coherently accumulated. Since the boundary of BIT is not known at this time, only half BIT superposition can be performed.
The integration time during correlation is M bit periods, and the values of adjacent bits may jump, so coherent accumulation cannot be adopted.
Because of the existence of frequency deviation, when correlation is carried out at each time point, calculation is required to be carried out at each frequency deviation point, and the interval of each frequency deviation point is taken as fd=fb,fb=1/TbIs the bit rate. Therefore, each code phase point needs to calculate M-2 fmax/fdCorrelation value of frequency deviation point, fmaxIs the maximum frequency offset value. At this time, the frequency offset estimation precision is fb/2。
As long as the phase offset caused by the half BIT frequency offset is less than PI.
Half the BIT length is
There are three rates:
a sampling rate fs; 81.84MHZ
Chip rate: fc-10.23 MHZ
BIT rate fb ═ 32KHZ
Interpolation multiple IPOINT ═ fs/fc ═ 8
The chip length CL of the PN sequence is 1023, and the corresponding number of sampling points is CLp 8184.
One complete spread spectrum code rate fallc ═ fc/CL ═ 10.23KHZ
At this time, the number sig2point corresponding to half information symbol (BIT) is equal to 1279
bfcw ═ (fb × 2)/fs; % information control word
sig2point ═ 1/bfcw; %%%% a signal/sample point corresponding to BIT
Then there are N half BIT information symbols within a period of one spreading sequence
M=fix(fb*2/fallc)=6
The next input signal phy _ rcv _ signal is sliding according to 1/4 CHIP memory, and then a despreading process is performed once for each shift 1/8CHIP, with N half BIT inter scalar superpositions, N half BIT intra vector superpositions,
bp_index1=[1279 1279 1279 1279 1278 1279]
in fact, the number of sampling points of the bp _ index1 which are superposed is close to the number of sampling points of a PN code, and certainly is not necessarily in the relationship of integral multiple, so that the method is convenient and flexible, and the spread spectrum code sequence and the bit rate sequence are relatively independent and independent from each other.
Description of the drawings: gold _ local is the local PN spreading sequence, the number of chips of the original spreading sequence is 1023, and 8 times oversampling is the length of 8184
The statement is vector overlay xcorrbit (sum _ index) inside BIT
This line of statements is the scalar superposition between BITs one _ sig ═ abs (xcorrbito) + one _ sig;
finally, the xcorrsig _ halfsum records half BIT superposition, the sequences recorded by the xcorrsig _ sum1 are directly superposed after being correlated, and simulation proves that the position of a correlated peak point can be well estimated by half BIT superposition, and the initial position of the PN code can be accurately found, namely the comparison of two correlated peaks is shown in FIG. 7.
After the initial spreading code synchronization is completed, tracking is needed in the demodulation process, and the spreading code tracking is actually tracking the phase of the spreading code. The code phase tracking of the spread spectrum code adjusts the code phase according to the current optimal sampling point and the magnitude of the correlation value calculated by the previous point and the next point, and the correlation method is the same as that of the spread spectrum code capturing. A diagram of correlation value calculation in the spreading code tracking process is shown in fig. 8.
Similar to the acquisition, coherent accumulation is performed within half a bit and then non-coherent accumulation is performed for N bit periods during tracking.
Calculating 3 correlation values each time, and if the current correlation value is maximum, keeping the optimal sampling point unchanged; if the correlation value of the previous point is maximum, the optimal sampling point moves forward by one point; if the correlation value of the subsequent point is maximum, the optimal sampling point is moved backward by one point. Fig. 9 is a diagram of code loop processing performed by half BIT superposition for a code loop tracking apparatus.
Fig. 10 illustrates the advance and lag of spreading code tracking after half BIT amplitude calculation, and the BIT synchronization and carrier synchronization after completing the acquisition and tracking of spreading codes and after removing the spreading code information, which can be realized serially, thus reducing the complexity of algorithm processing.
Since a separate symbol timing module is not required in a typical direct sequence spread spectrum system, there is little specific algorithm to discuss the timing recovery problem of spread spectrum signals. Because a pseudo code period in a conventional direct sequence spread spectrum system corresponds to one or more fixed symbol periods, symbol timing synchronization is obtained after pseudo code synchronization is obtained. In the non-uniform spread spectrum system, the starting position of the spreading pseudo code has no one-to-one correspondence with the starting position of a certain symbol, so symbol synchronization is also needed.
The symbol synchronization process for the low-pass filtered signal is substantially the same as for a normal non-spread spectrum signal. The software adopts a Gardner symbol synchronization algorithm, and because the GARDNER algorithm synchronization needs the input symbol width to be the integral multiple relation of sampling points, the rate matching is also needed to be completed through the DDS algorithm as follows. For example, if the sampling rate fs _ down of the signal after the DDS is required to be 60 times the OSR of the fb rate, the bit control word bfcw in the DDS can be obtained as fs _ down/fs to adjust the rate of the signal
OSR=60;
fs_down=fb*OSR;
bfcw=fs_down/fs;
The above known sampling rate fs; 81.84MHZ
Chip rate: fc-10.23 MHZ
BIT rate fb ═ 32KHZ
In the above algorithm, xBITin is the input signal and xBITout is the output signal, and the implementation process is schematically shown in FIG. 11.
FIG. 12 is a device for synchronization procedure of non-uniform spreading codes; fig. 13 is a constellation diagram after Gardner symbol (BIT) synchronization; fig. 14 is a constellation diagram after Gardner symbol (BIT) synchronization and carrier synchronization.
The performance of the spread spectrum code synchronization algorithm is mainly the missed acquisition probability and the false acquisition probability in the acquisition stage, and the smaller the two probabilities, the better.
The probability of missed and false catches depends on the selection of the threshold value, and is determined by the normalized signal-to-noise ratio E of the information bitb/N0The normalized signal-to-noise ratio E of each chip can be obtainedc/N0Is composed of
Ec/N0=(Eb/N0)×(Rb/Rc)
In the above formula: rbFor useful information rate, RcIs the Chip (Chip) rate. The analog AGC is arranged at the front end of the ADC, so that the power of an analog signal reaching the ADC is a fixed value, and under the condition of low signal-to-noise ratio, the power of a useful signal is far less than that of noise, so that the power of the analog signal reaching the ADC is basically the power of the noise. After ADC sampling, digital down-conversion and matched filtering of input analog signals, the power of the obtained complex digital signals is recorded as 2 sigma2This is in fact mostly the power of the noise. The power of the complex useful signal can be obtained by the method
S=(Ec/N0)×(Rc/Bc)×2σ2
In the above formula: b iscTo match the equivalent noise bandwidth after filtering, for systems employing rectangular pulse shaping, there is Bc=Rc。
According to the correlation method, coherent accumulation is performed within half a bit, and then M groups of coherent accumulation values are subjected to non-coherent accumulation. If the code phase is exactly at the best sampling point and the searching frequency offset is completely consistent with the actual frequency offset during searching, the optimal correlation effect is achieved, the useful signal amplitude is linearly superposed during coherent accumulation, the noise power is linearly superposed (the noise is Gaussian white noise), and the noise energy is changed into P sigma after accumulation
2T
cThe useful signal energy is changed into P
2ST
cP is the number of spreading chips in a bit, i.e. the spreading ratio. After M times of incoherent accumulation, the obtained correlation value is R
iAs can be seen from the theory of random signals,
probability density function f
S(x) Obey non-central x
2() Distribution, i.e. distribution parameter nc χ
2(2M,MPS/2σ
2). Random variables obtained after non-coherent accumulation if there is no useful signal
Probability density function f
N(x) Obey center chi
2() Distribution, i.e. distribution parameter, of χ
2(2M). If the threshold for judging whether the capture is carried out is R
thThen the probability of missed capture when a useful signal is present is
With non-centre x inside Matlab2() The probability accumulation function (ncx2cdf) of the distribution can be conveniently calculated to obtain the miss probability. After M search cycles, the probability of missed capture is further reduced, becoming
PL=Pl M
When there is no useful signal, the probability of false capture in a certain search calculation is
Also inside the Matlab there is a center x2() The probability cumulative function of distribution (chi2cdf) can also be conveniently calculated to obtain the probability of missed capture. In one code phase searching process, 1023 code phases need to be searched, and f needs to be calculated for each code phase pointmax/fbThere are uncorrelated frequency points, so that L ═ 1023 × f is among correlation values calculated in one search periodmax/fbThe group values are irrelevant, so the probability of false capture in one search period by the pseudo code capture module is
Pf=1-(1-Pf1)L
The probability of the virtual capture increases along with the increase of time, and after M search periods, the probability of the virtual capture is
PF=1-(1-Pf)M=1-(1-Pf1)LM
When the code phase is not at the optimal sampling point during the search, on one hand, the useful signal power is reduced, and on the other hand, intersymbol interference is also brought, which is equivalent to introducing a noise. Wave shapingThe function is h (T) when there is a timing deviation ε TcWhen the epsilon is more than or equal to minus 0.5 and less than 0.5, the sampling value is obtained
In the above formula: a is
kIs the sent Chip sequence value; first item a
jh(εT
c) Is the jth Chip pulse at the sampling time t ═ jT
c+εT
cA value of (d); second item
Is that all chips except the jth Chip are at t ═ jT
c+εT
cAnd the sum of the values of the time is the intersymbol interference value. For the present system, since rectangular shaping is adopted, h (t) has the characteristic of triangle, when Chip sequences are randomly distributed, fig. 15 shows the influence of timing deviation on signals.
In the present system, the sampling rate is about 8 times the Chip rate, so there is εmaxAt 1/16, the signal is attenuated by about 0.56dB, and the equivalent signal-to-noise ratio is about 23dB, much greater than the signal-to-interference ratio (-40 dB). In practice, the timing deviation can be considered to be in the range of 0 to εmaxThe uniform distribution is adopted, the average signal attenuation is 0.25dB, the average equivalent signal-to-noise ratio is 35.9dB, and therefore the influence of the timing error on the system is basically negligible.
When the search frequency offset is inconsistent with the actual frequency offset, the power of the useful signal after coherent accumulation is reduced. If the difference value between the search frequency offset and the actual frequency offset is f
rThe factor for decreasing the useful signal power after coherent accumulation is sinc
2(πf
rPT
c/2), known by the algorithm of the system, f
rMaximum is
Can be regarded as f
rIn that
The intervals are uniformly distributed.
The performance analysis of the spread spectrum code synchronization algorithm shows thatThe distribution parameter of the spread spectrum correlation peak is ncchi
2(2M,MPS/2σ
2)=ncχ
2(2M,ME
b/N
0) Setting the decision threshold as
Then there is R
th=r
thPT
cσ
2/2. Correlation procedure according to the present algorithm: half bits (P/2 chips) are coherently accumulated first, M half bits are non-coherently accumulated second, at lower signal-to-noise ratios (e.g. E)
b/N
03) and the spreading ratio P is more than or equal to 8, the signal power is submerged in the noise, the received power is basically the power of the noise, and the energy of the noise after correlation is
Thus having R
th=r
thE
N2M, if AGC control is applied to the signal before acquisition, σ
2Is controlled to a certain value, E
NCan be calculated according to parameters, R
thAnd r
thA simple known relationship is formed between the two, and r is determined
thThen R is determined
th。
From the above, in Eb/N0Under certain conditions, the probability of false capture and missed capture is only equal to the decision threshold rthAnd M is related to. The false capture probability and the miss capture probability are a pair of contradiction, and proper r needs to be selectedthMeanwhile, the virtual catching probability and the missing catching probability are considered. In practice, the probability of one-time trapping can be selected to be slightly larger, for example, 0.1, and after multiple times of trapping, the probability of trapping can be reduced; the probability of one-time virtual capture needs to be selected as small as possible, because the probability of virtual capture is increased after multiple captures. At rthWhen the number of the false capturing is 210, the probability of the false capturing and the probability of the false capturing are both small, the larger the M is, the lower the probability of the false capturing and the probability of the false capturing are, the better the capturing performance is, but the time required for capturing is also increased, and in practice, a compromise needs to be made between the capturing time and the capturing probability. When M is 64, the probability of one missed capture and the probability of one virtual capture are both very small.
The above examples are only intended to illustrate the technical solution of the present invention, but not to limit it; although the present invention has been described in detail with reference to the foregoing embodiments, it will be understood by those of ordinary skill in the art that: the technical solutions described in the foregoing embodiments may still be modified, or some technical features may be equivalently replaced; and such modifications or substitutions do not depart from the spirit and scope of the corresponding technical solutions of the embodiments of the present invention.