A FPGA Based ADS-B Receiver and Decoder

(C) Günter Köllner, DL4MEA 07/2011

The Mode-S Beast is available at Jetvision's web shop:

Scope / Überblick:

On this page you will get an overview over the final project "Mode-S Beast", as I can provide it to you in order to build up a passive radar ground station. I did describe the development on its own page here.

Basically this is a high performance Mode-S receiver and decoder. Internally it supports one antenna and so the basic unit as shown on the left will give you an overview of the air traffic by just connecting an antenna and a PC via USB.

Optinally either 1 or up to 3 external miniADSB receivers with their own antennas can be connected. This for example allows you to connect an omnidirectional antenna to the internal receiver and in parallel a high gain antenna like a yagi towards an area of special interest that you would not see on the omni, for example the next local airport. Such examples are shown later.
A second usage of this feature  is splitting the 360° circle into 2, 3 or 4 segements. FRUIT, that means overlapping signals due to the uncoordinated transmission of the signal by the aircrafts, will then just come from those within the area that the antenna sees. Such a system has been built by F5ANN using 2 antennas.

Necessary software on the PC: The output protocol is the so called "AVR-Format", an open format just like hexdump. Currently COAA PlanePlotter supports this format nicely, a evaluation version of Jetvision's Globe-S also worked together with the Mode-S Beast.

Note: If you click on the pictures of this page, you will mostly get the high resolution version.

The Mode-S Beast equipped for 2 channels: one internal receiver plus connector for one external miniADSB.
Size is 100mm wide x 53mm deep. It perfectly fits into the 100mm euro card boxes.
(Picture of preliminary product version V1.0beta, still manually soldered)

Major Features:

A list of features of the Mode-S Beast:

The Mode-S Beast supports configuration through miniature DIP switches and solder jumpers:

Why this crazy name "Beast"?

Well, my Mode-S experience started with PIC decoder, and then I proceeded step-by-step into the FPGA world, and also into the high performance decoding. While with the PIC the received frames just appeared like a drop-by-drop, with the Beast the screen just races. Also, we had several problems how to handle the message load (I've seen a maximum of 1100 verfied messages per second) in Planeplotter. Finally I saw problems on the USB interface together with my slow Mode-S laptop (600MHz Pentium) and so even had to contact FTDI support how the FT232R is best able to handle that.
All together, this piece is a little beast and bothers all components involved.

But be sure, all the issues are solved and the Mode-S Beast will safely work for you.

What are the advantages of a FPGA against a microcontroller like PIC and ATMEL?

The Mode-S data signal has 1MBit/sec, so it is pretty fast. It does not have a standard data format that would allow reception with a microcontroller's internal hardware interface like RS232, I²C or SPI, so it must be sampled using the CPU and standard processor commands step-by-step. Therewith and and even then just by using a couple of tricks, all these µC are just able to look at the signal once per each signal information, mostly in the middle. Even worse, the µC just gets a 0 or a 1 information from the comparator, so it either has a 01 or a 10 in order to decide each data bit's value.

Next, the µC has just one CPU and it cannot do several tasks at the same time. So while calculating the checksum, handling the serial interface or while serving the USB port, it cannot handle frames at the input. There is always a gap in the reception when performing these other, also important tasks.

With the FPGA one actually constructs a dedicated hardwarecircuit for the given task, same as many years ago one took TTL or CMOS gates, flipflops, shiftregisters from the shelf. The "code" is not a sequence that is executed by a pre-given hardware, instead hardware pieces are connected in order to work as needed for the task.
With such a circuit it is easily possible to sample the incoming signal much more often. The Mode-S Beast samples 16 times more often, and then does averaging over each 8 samples per half bit information. So if just one sample was correct and 7 wrong, still a valid result can be concluded. But, even better: Since there is a AD converter on the board, the FPGA gets level information within each sample, ranging from 0 to 255. So each half bit generates a value from 0 to 2040. While a µC has just a decision resolution between 0 and 1, the FPGA has a decision resolution between 2040 different values. It can resolve the signal much better, and so it can read much better from noise.
Second, in the FPGA there is no CPU that can do just one task at a time, instead everything functionality is built up by dedicated hardware gates. The receiver is always working, and in parallel there is a RS232 frame builder working all the time. All units do not interfer with each other because they all do have their own hardware and don't share any ressources. So there is no loss of information while other tasks are performed.

I'll make this visilible with some drawings soon, but now just a little text:


The Mode-S Beast is available as a SMD pre-equipped PCB for completion through the user. The board will come tested and with all parts that are needed for getting it into work.

At this early point I want to put a warning!!!

This project needs the user to have some minimum, basic PC knowledge:
  • Connecting a USB device to the PC
  • Downloading and installing the FTDI FT232R driver from the web
  • Identifiying which COM port became created by the new device in Device Manager
  • Downloading Planeplotter from the web and doing some minor configuration steps in in it (here described in detail)
Some more knowledge is needed for the purpose of:
  • Adding of the Lantronix Xport Ethernet or the BTM-222 bluetooth interfaces
This is not a plug-and-play set-up like for example the Kinetics SBS-1 family.
I would comapre it to be a little bit more difficulty than installing a printer.
You've been warned!
The ready unit that you get when applying the kit into the the foreseen box

This is a 2CH Mode-S Beast with the additional miniADSB
receiver installed (the ready made ones that come with the Beast
are equipped with a right angle flange connector,
back wall comes predrilled)

The Mode-S Beast with Lantronix Xport Ethernet Extension

Pictures below show the Mode-S Beast with 2 antenna possiblity and Lantronix Xport Ethernet interface (very high resolution when clicking on the pictures):

Front Panel

From left to right:

  • SMA connector for internal receiver
  • green and red LED of internal receiver channel
  • green and red LED of 2nd receiver channel
  • blue LED for overall frame reception
  • yellow LED showing USB RS232 transfer
  • green LED for power on
  • USB connector
Rear View

From left to right:

  • BNC connector of extra miniADSB receiver
  • Ethernet connector
  • +5V external power supply for USB less operation
Inside View

The Mode-S Beast as a 4CH option with Lantronix Xport Ethernet

For a very, very special application I made a 4 channel receiver. It requires soldering the 2nd AD converter manually, also Mode-A/C cannot be supported with this unit. 4CH will become a common option only with hardware version V2.0, roughly available about end of 2011.

Front Panel

From left to right:

  • SMA connector for internal receiver
  • +5V external power supply
  • red activity LED for each channel
  • blue LED for overall frame reception
  • yellow LED showing USB RS232 transfer
  • green LED for power on
  • USB connector
Rear View

From left to right:

  • 3 miniADSB receivers in straight version
  • Lantronix Xport ethernet interface with cable to
    the Mode-S Beast main PCB

Recommended Antennas:

I was looking for an antenna manufacturer, too, but unfortunately the one I had in mind does not have a capability to handle that fine material as it is used for 1090MHz. Look on the development page in order to see what I've used for that, and also F5ANN describes some antennas for Mode-S receptions, they all have been rebuilt several times with success. Maybe there is another one who could provide the community with good and reasonably priced Mode-S antennas and not just myrical promising ones for a horrible price.

From the current knowledge, the Mode-S Beast works with any kind of antenna that is designed for 1090MHz.

Important Notes:

Using a preamplifier:

The Mode-S Beast when using its integrated receiver (and not an external miniADSB) is a very sensitive device since its receiver concept is different than the one from other comparable units. Also, the internal design is made for maximum sensitivity. If you are using a mast mounted preamplifier that has significantly more gain than your cable loss, you may need an additional attenuator in order to lower down the signal level. Remember that the preamplfiier then still makes sense because it does what it should do: improving the noise figure of the total system.
My own system - and you know the screenshots - consists of the G7RGQ antenna, 3dB cable loss through 25m 1/2" foam cable (LDF or HCF 1/2") and the Mode-S Beast. Nothing else.

High Frame Rate:

I want to be a fair player and note already here that the high number of frames partly comes from the fact that the Mode-S Beast transparently decodes ALL Mode-S frame types and provides them on the interface to the PC. Planeplotter uses all of them for updating the currently observed aircrafts, and so it counts them as useful frames. If you compare the frame rate with other available receiver/decoders, you have to use a tool that pre-filters the frames to a common set, such as ModeSCompare from Jetvision.de, such as I also show it on the performance page.

Delivering performance data and screenshots:

Quite often users of the Mode-S beast make screenshots of Planeplotter's results. Please, when doing so, be aware that there is a long term integration done in Planeplotter, which is by default 5 minutes. This is a little bit unfair, the Mode-S beast does not need such. Instead, lower down the integration to 1 min. Go into the menu "Chart Settings", and enter 1.00 into "Omit aircraft after..." and "Delete Aircraft after...". Maybe you even switch of the prediction completly by unchecking the box at "Predict positions over...". A screenshot of the suggested chart settings is shown on the Planeplotter configuration page.