BeiDou-2 (COMPASS) preliminary results

January 28, 2013

On 27th of december 2012 China published full version of interface control document (ICD) for their GNSS system BeiDou-2 (COMPASS). This step opened way to building receivers that are capable of working with this GNSS.
Many commercial manufactures have already released firmware updates that allow to work with BeiDou. Among them are: ublox, NovAtel, Septentrio, javad and others.
In this note preliminary results of BeiDou signal processing are described. On the figure 1 acquisition process output is shown. Up to 5 non-geostationary satellites can be seen from my location.

BeiDou acquisition
Figure 1 Acquisition output for non-geostationary satellites

I would like to mention that BeiDou-2 signals are similar to GPS L1 C/A with one significant difference. Each navigation symbol that lasts 20 ms is additionally modulated by 20-symbol Neimann-Hoffman code (0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0) (details are on the figure 2 taken from ICD).

BeiDou secondary code
Figure 2 Secondary code details

This means that during acquisition of relatively weak signals we can not use directly coherent integration for more than 1 ms (up to 10 ms) like we can do for GPS L1 C/A signals. Straightforward attitude to overcoming this problem can be the following. (At first I want to mention that more than 10 ms of integration is not used as it requires too much time.)
One well-known method of acquisition signals which can change sign every ranging code period is zero-padding. The idea of this method is very well described in "Development and Testing of an L1 Combined GPS-Galileo Software Receiver" doctor philosophy thesis by Florence Macchi (PLAN, Calgary, 2010). If we take one period of ranging code and padd it with zeros (of the same length as ranging code) and make fast correlation with 2 periods of incomming signal then we'll have at least one peak that correspond to what we are looking for. This method fits well for GALILEO E1 BOC(1,1) signal or for GLONASS L3 data-channel, but for BeiDou-2 we have problem: this way we can integrate only 1 ms or 20 ms (or N*20ms). 1ms is usually not enough to acquire all satellites visible in open sky and 20ms is too long and requires too much time.
What can be done in order to use integration periods between 1ms and 20 ms? One of the easiest solutions is to repeat several times acquisition process for different parts of incomming signal to cover all 20 symbols of NH code. For example, if we want to use 5ms integration time then we have to take 25ms of incomming signals, divide them into 4 parts (0..10ms, 5..15ms, 10..20ms, 15..25ms) and correlate each part with the first part of NH-code (0,0,0,0,0 in our case) padded with 5ms zeros in the end. And in the end to find peak of correlations. This is what realized in my current version of SciLab software post-processing receiver available as usual on googlecode. In initSettings.sci file three options are available for acquisition (1ms/3ms/5ms integration time).
Tracking functions also were changed. I prefer to use combined FLL/PLL carrier tracking loop. And during experiments with COMPASS signals one bug was revealed which had not been seen before. Frequency discriminator used in carrier tracking loop worked incorrectly when change of sign in incomming signal occured. For signals like GPS C/A or GLONASS ST this bug was not visible because change of sign occures relatively infrequently. But for signals like GLONASS L3 CDMA or BeiDou-2 which have additional modulation of ranging code this bug can be frequently seen. The results of wrong tracking are shown on figure 3.

BeiDou wrong tracking
Figure 3 Wrong tracking with incorrect frequency discriminator

After correcting frequency discriminator tracking works fine. The results can be seen on figure 4 for the same satellite.

BeiDou correct tracking
Figure 4 Correct results of COMPASS signal tracking

I also tried to get PVT solution but the results are not so good (figure 5). Still looking for the bugs.

BeiDou pvt wrong
Figure 5 PVT solution for COMPASS signals
« Prev itemNext item »


Posted by jingbinliu on July 02, 2013  •  16:22:07


Thanks for the post. Because Beidou has a QPSK modulation, it seems I/Q constellation in Fig.3 is more reasonable than that in Fig.4. Could you explain this? Thanks!

Posted by admin on July 07, 2013  •  21:22:03

No, I wouldn't say so... The published signal is B1I only and we have no knowledge about B1Q. Beidou B1I and B1Q is like GPS C/A and P codes or GLONASS CT and VT codes. So the correct figure is figure 4.

Posted by vicpic on July 31, 2013  •  13:12:44

Can you tell me how to correct the frequency discriminator?I am trying to make a Beidou-SDR,the same thing happened on me ,too. I can't find the subframe in some satellite singnal. My

Posted by vkishore on January 11, 2017  •  12:01:12

Please send me the Compass IF signal recording to obtain position fix.

Leave comment