Introduction
ADS-B Automatic Dependent Surveillance Broadcast (Ref.1) is an avionics system that allows planes to transmit their navigational status on a periodic basis without interrogation. It is an outgrowth of the ATCRBS Air Traffic Control Remote Beacon System – Mode A, Mode C and Mode S (Ref.2). It is a particular case of Mode S (Ref.3). Before Mode A/C/S, the only way to detect aircraft was by using PSR Primary Surveillance Radar. This just gave a slant distance and azimuth. ADS-B “Out” allows planes to transmit GNSS and navigational sensor information, giving accurate information to ground stations and other local aircraft. ADS-B “In” permits an aircraft to receive TIS-B (Traffic Data)/FIS-B (Weather Data) information and direct aircraft communications. Ref.4 is an excellent overview of ADSB.

Figure 1 shows an ADS-B Block Diagram. Older Mode A/C SSR Secondary Surveillance Radars interrogate planes on 1030MHz and receive replies on 1090MHz. Planes equipped with ADS-B periodically send out information on 1090MHz and if equipped, can also receive information on 1090MHz.
Packet Structure

Figure 2 shows a typical ADS-B packet structure. The packet starts with a particular 8usec Preamble with 4 x 0.5usec pulses located at 0, 1, 3.5 and 4.5usecs. The data rate is 1Mbps. Each bit period is 1usec. A “1” is encoded with a pulse in the 1st 0.5usec and no pulse in the second 0.5usec. A “0” is encoded with a no pulse in the 1st 0.5usec and a pulse in second 0.5usec (This is referred to as PPM in this context).
Modulation Method





Figure 3 shows the Scicos model used to simulate ADS-B_1090ES. The baseband packet is first constructed in Scicoslab and read in as a structure V. This directly multiplies the RF Carrier at 1090MHz to generate ASK. Figure 4 shows the baseband packet structure and the ASK modulation. Figure 5 shows a closeup of the Packet Preamble. Figure 6 shows the ASK spectrum. Due to differences in the carrier frequency of 1090MHz and the effective pulse rate of 2Mbps (0.5usec pulses), it is hard to display the data nulls +/- 2MHz from the carrier. Figure 7 is a clearer picture showing ASK modulation with a carrier at 1KHz and data at 100bps. The data nulls at +/- 100Hz from the carrier are clearly shown.
Decoding with RTL-SDR



Figure 8 shows the GNU Radio Companion (Ref.5) RTL-SDR model to decode the ADS-B packets. Since the ADSB effective pulse width is 0.5usec, we need an Fs of at least >= 2 x 2Msps >= 4Msps to cover at least up to the first null. The RTL is setup for a max sample rate of 3.2Msps, so the decoded pulses will not be perfect rectangles. Figure 9 shows a decode of a full 112bit packet. Figure 10 shows an expanded view of the ADSB 8usec preamble.
Please send your comments, questions and suggestions to:
contact:

References
#1. – “ADS-B Automatic Dependent Surveillance Broadcast”
https://en.wikipedia.org/wiki/Automatic_Dependent_Surveillance-Broadcast
#2. “The Story of Mode S”, Emily Chang etal
http://web.mit.edu/6.933/www/Fall2000/mode-s/
#3. – “ADS-B for Dummies 1090MHz Extended Squitter”
https://www.sigidwiki.com/images/1/15/ADS-B_for_Dummies.pdf
#4. “The 1090MHz Riddle”, Junzi Sun
https://mode-s.org/decode/book-the_1090mhz_riddle-junzi_sun.pdf
#5. “GNU Radio Companion”
https://www.gnuradio.org/