Introduction
Recently, I was doing some research on the ADS-B signal, and I’d like to take this opportunity to organize and share my results. ADS-B stands for Automatic Dependent Surveillance - Broadcast, which is self-explanatory. The ADS-B is a type of broadcast signal from many civil aircraft that carries its location, altitude, speed, heading, identification, etc. The purpose is to prevent accidents by exchanging information with other aircraft and ground stations.
The interesting part is that this signal is not encrypted, and can be easily received and demodulated. One can feel great achievement once decode it. As such, building an ASD-B receiver is like the second must-to-do project for software defined radio (SDR) enthusiasts. Of course, the first project is always an FM radio. As to the ADS-B receiver, I will talk about it in the next blog. Let’s first take a look at the signal itself from the wireless communication perspective.
Parameters and the Modulation
Matlab has a nice documentation on the ADS-B signals (Matlab has a lot of nicely written documentation!). So I will copy and paste some here.
Mode-S (consider it as ADS-B) has the following properties:
- Transmit Frequency: 1090 MHz
- Modulation: Pulse Position Modulation
- Data Rate: 1 Mbit/s
- Short Squitter Length: 56 microseconds
- Extended Squitter Length: 112 microseconds
Short squitter messages contain the following information:
- Downlink Format (DF)
- Capability (CA)
- Aircraft ID (Unique 24-bit sequence)
- CRC Checksum
Extended squitter (ADS-B) messages contain all the information in a short squitter and one of these:
- Altitude
- Position
- Heading
- Horizontal and Vertical Velocity
In the physical layer, the ADS-B signal has a center frequency of 1090 MHz and occupies 1 MHz bandwidth. The Pulse Position Modulation (PPM) is not widely used, but it is very simple. As shown in the figure below, each symbol has two chips, where one has a high value and the other has a low value. If the first chip is high followed by low chip, this corresponds to the symbol being a 1. Alternatively, if the first chip is low followed by high chip, then the symbol is 0.
Frame structure
From the figure above, each ADS-B frame is 10 us long. The first 8 us is the preamble that can be used for synchronization. The following is the 122 us long data block which contains 122 bits data. I will briefly give the frame structure, and you can find more details here. BTW, this author also wrote a nice Python decoder for ADS-B signals. Import it, so you don’t need to build your own wheel to decode the ADS-B signals.
Bit No. | bits | Abbreviation | Information |
---|---|---|---|
1-5 | 5 | DF | Downlink Format |
6-8 | 3 | CA | Transponder capability |
9–32 | 24 | ICAO | ICAO aircraft address |
33–88 | 56 | ME | Message, extended squitter |
(33–37) | (56) | (TC)) | (Type code) |
89–112 | 24 | PI | Parity/Interrogator ID |
To be continued in the next post.
Comments powered by Disqus.