# Simulation d'un émetteur / récepteur ADS-B
et décodage temps réel à l'aide : de MATLAB, d'une radio
logicielle et d'une antenne patch

Guillaume Ferré

Romain Tajan

Anthony Ghiotto

## Résumé

Dans cet article, nous présentons une façon ludique d'enseigner les communications numériques et la conception d'antennes en école d'ingénieurs. Par l'intermédiaire de radio-logicielles, nous proposons aux étudiants du département Télécommunications de l'ENSEIRB-MATMECA d'appliquer leurs cours de communications numériques, traitement du signal, codage de canal, etc. sur des signaux réels. Concrètement, nous les guidons par l'intermédiaire d'un manuel de Travaux Pratiques (TP), à décodeur les trajectoires des avions en démodulant des signaux Automatic Dependent Surveillance-Broadcast (ADS-B). Outre le côté ludique de ce projet, traiter des signaux réels permet également de vérifier certaines hypothèses de modélisations comme le caractère blanc et gaussien du bruit ou encore la non-sélectivité en fréquence du canal perturbant les signaux ADS-B. Afin d'améliorer les performances de détection des algorithmes développés par les étudiants du département Télécommunications, un groupe d'étudiants du département Électronique a en charge la modélisation et la conception d'une antenne patch ADS-B.
Acronyms

Remarque : certains acronymes anglophones ne sont pas traduit car la traduction ne se prête pas forcément toujours.

ADS-B Automatic Dependent Surveillance-Broadcast

AWGN Additive White Gaussian Noise

CEA Commissariat de l'Énergie Atomique

CPR Compact Position Reporting

CRC Code à Redondance Cyclique

DF Downlink Format

DSP Densité Spectrale de Puissance

DVB-T Digital Video Broadcasting-Terrestrial

EQM Erreur Quadratique Moyenne

FBMC Filter Bank Multi Carrier

FFT Fast Fourier Transform

FR4 Flame Resistance 4

FTC Format Type Code

GFDM Generalized Frequency Division Multiplexing

GLONASS Global Navigation Satellite System

GPS Global Positioning System

ISNC Ingénierie des Systèmes Numériques de Communications

LDPC Low Density Parity Check Codes

MAC Media Access Control

MIMO Multiple Input Multiple Output

OACI Organisation de l'Aviation Civile Internationale

OFDM Orthogonal Frequency Division Multiplexing

PCB Printed circuit board

PPM Pulse Position Modulation

RF Radio Frequency

RSB Rapport Signal sur Bruit

SMA SubMiniature version A

SRT Systèmes de Radio et Télécommunications

TDS Traitement Du Signal

TEB Taux d'Erreurs Binaire

TIS-B Traffic Information Service-Broadcast

TP Travaux Pratiques

UAT Universal Access Transponder

USRP Universal Software Radio Peripheral

UTC Coordinated Universal Time

WI-FI Wireless Fidelity
# 1 Introduction

L'objectif du projet ADS-B proposer à l'ENSEIRB-MATMECA est d'afficher en temps réel avec MATLAB (avec une latence égale à la durée du buffer d'acquisition) sur une carte (type Google Map) les trajectoires des avions survolant l'école et ses environs à l'instar des trackers <fnref n="1" /> disponibles sur Internet. Pour cela, nous mettons à disposition des étudiants des radio-logicielles <fnref n="2" />, une interface permettant de piloter les radio-logicielles depuis MATLAB et un document technique présentant les couches physique et Media Access Control (MAC) du standard ADS-B.

Ce projet est pluridisciplinaire : il fait intervenir des étudiants de 3ème année du département Électronique et des étudiants en 2ème année du département Télécommunications. En effet, outre le décodage et l'interprétation du flux binaire des signaux captés par les radio-logicielles, les étudiants doivent également concevoir une antenne adaptée à la réception des signaux ADS-B.

L'originalité de ce projet repose donc sur la mise en pratique, sur des signaux réels des notions de traitement du signal, de communications numériques, d'électronique analogique et de conception d'antennes. L'évaluation du projet repose sur une compétition entre les binômes d'étudiants et sur une note de compte rendu.

Ce document est organisé de la façon suivante : dans un premier temps nous présentons l'ENSEIRB-MATMECA et plus précisément les formations en communications numériques et électronique des départements Télécommunications et Électronique respectivement. Dans un deuxième temps nous détaillons l'organisation des différentes étapes de la partie du projet qui concerne le décodage du flux binaire des signaux captés. Finalement, nous terminons par donner des détails quant à la conception de l'antenne ADS-B.

# 2 La formation en communications numériques et électronique analogique à l'ENSEIRB-MATMECA

L'ENSEIRB-MATMECA propose une offre de formation reposant sur cinq disciplines scientifiques : électronique, informatique, télécommunications, mathématique et mécanique. Ces disciplines d'avenir, couvrant le domaine du numérique au sens large, offrent aux ingénieurs diplômés de l'école d'excellentes conditions d'insertion professionnelle et des perspectives de carrières riches et variées. Elle est la première école d'ingénieur d'Aquitaine avec plus de 1200 élèves-ingénieurs et son niveau d'excellence est reconnu dans divers classements (l'Étudiant, Usine nouvelle).

Dotée d'équipements et logiciels de pointe, et d'un bâtiment de plus de 20 000 m<fnref n="2" /> au service de la pédagogie et du transfert de technologie, elle propose une formation axée sur des projets innovants et s'appuie sur la performance de ses laboratoires de recherche, reconnus au niveau national et international.

Toujours au plus proche des entreprises, l'école a su nouer des liens très forts avec des grands groupes, comme Airbus Defence & Space, Zodiac Data Systems, PSA-Citroën, Safran, le Commissariat de l'Énergie Atomique (CEA), les grandes entreprise de services du numérique (Atos, Bull), Thales, mais aussi avec tout un réseau de PME et startups locales innovantes. L'école accueille aujourd'hui dans ses locaux plusieurs entreprises et un FabLab.

<footnote n="1">1. www.flightradar24.com, https://fr.flightaware.com</footnote>

<footnote n="2">2. Dans notre cas nous utilisons des Universal Software Radio Peripheral (USRP). Cependant des solutions bien plus faibles coûts peuvent être mises en œuvre par l'intermédiaire de dongle USB RTL-SDR http://www.rtl-sdr.com</footnote>
## 2.1 Les communications numériques au département Télécommunications

Les enseignements dispensés au sein du département Télécommunications s'articulent autour de 4 axes : l'informatique, les réseaux, Traitement Du Signal (TDS) et les communications numériques. Les 3 premiers semestres de la formation servent à transmettre aux étudiants les connaissances de bases en informatique, réseau, TDS et communications numériques. C'est à partir du 4ème semestre que les étudiants se spécialisent. Cette spécialisation se fait au travers d'une unité d'enseignement et d'un projet de semestre dédiés sur l'un des 4 axes. Pour ce qui est des communications numériques, les étudiants ayant choisis de se spécialiser dans cette thématique poursuivent généralement leur cursus scolaire dans l'option de troisième année Ingénierie des Systèmes Numériques de Communications (ISNC). Comme toutes les options de dernière année à l'ENSEIRB-MATMECA, l'année se décompose en 2 parties, la première à l'école et la seconde en entreprise ou en laboratoire pour une stage de 5 à 6 mois. La liste non exhaustive des notions diffusées aux étudiants en communications numériques est :

- communications numériques de base (critère de Nyquist, récepteur optimal, performances sur canal Additive White Gaussian Noise (AWGN) et à bande limitée, etc.),

- modélisation des canaux sans-fil mobiles,

- codage de canal (code en bloc, turbocodes, Low Density Parity Check Codes (LDPC)),

- égalisation de canal,

- techniques multi-porteuses (Orthogonal Frequency Division Multiplexing (OFDM), Filter Bank Multi Carrier (FBMC), Generalized Frequency Division Multiplexing (GFDM), etc.), et à étalement de spectre,

- techniques de synchronisations temps/fréquences mono et multi-porteuses,

- dirty Radio Frequency (RF),

- systèmes Multiple Input Multiple Output (MIMO), traitements d'antennes et codage spatio-temporel,

- principe des systèmes 2G à 4G, Wireless Fidelity (WI-FI), Digital Video Broadcasting-Terrestrial (DVB-T), ADS-B, etc.

Le sujet de TP présenté dans ce papier nécessite des pré-requis sur les communications numériques, le traitement statistique du signal, l'échantillonnage et la programmation utilisant MATLAB. Le cours sur les techniques de synchronisations temps/fréquences n'arrivant que plus tard dans la formation, les étudiants sont guidés sur ces points.

## 2.2 L'électronique analogique au département Électronique

Une part significative de la formation du département Électronique est consacrée à la mise en pratique des notions fondamentales d'électronique analogique comme l'illustre le projet de conception d'antenne décrit dans cet article. Ce département offre un cursus personnalisé à travers différents parcours dès la deuxième année, avec notamment l'unité d'enseignement optionnelle en électronique analogique radio-fréquence et un projet transversal choisi par les étudiants parmi une très large variété de sujets proposés par les enseignants du département. La deuxième année se conclut par la réalisation d'un stage applicatif de 3 à 4 mois en laboratoire ou en entreprise. En troisième année, les étudiants se spécialisent par le choix d'une option parmi les cinq options offertes, incluant l'option d'électronique analogique : Systèmes de Radio et Télécommunications (SRT). Le premier semestre de cette dernière année comprend des enseignements spécifiques à l'option avec l'intervention de nombreux spécialistes issus du domaine industriel et la réalisation de projets. Le second semestre permet aux étudiants d'effectuer un stage de 5 à 6 mois. L'option SRT comprend un module d'enseignement intitulé "Circuits RF et Millimétriques" qui inclue le
cours d'introduction aux antennes durant lequel les étudiants conçoivent une antenne ADS-B.

## 3 ADS-B : Introduction et fonctionnement

Afin de surveiller l'état du réseau aérien (c'est à dire la localisation des avions, le respect de leur plan de vol, etc.), un système de diffusion appelé ADS-B a été proposé en complément des RADARs classiques. Dans ce système, les appareils estiment leur position (longitude, latitude, altitude) grâce aux techniques de positionnement par satellite - Global Positionning System (GPS), Global Navigation Satellite System (GLONASS) ou encore Galiléo - et diffusent ces informations régulièrement (toutes les secondes environ). Ces informations sont ensuite récupérées :

- au sol : par des stations intermédiaires ou des tours de contrôle,

- dans les autres appareils : qui peuvent utiliser ces signaux pour leurs systèmes anti-collision.

Le principal avantage du système ADS-B par rapport au RADAR classique est son faible coût d'infrastructure. En effet, la station réceptrice possède seulement une antenne permettant de recevoir les signaux ADS-B, le reste des traitements étant faits à bord des appareils. Le récepteur est donc entièrement passif et n'a pas besoin d'interroger l'appareil pour qu'il émette sa position. Cette liaison est une liaison descendante, elle est représentée en Figure 1.

<figure><img src="image_1.png" /><figcaption>FIGURE 1 – Chaîne de traitement pour la réception de données ADSB</figcaption></figure>

Il existe plusieurs liaisons pour la transmission des signaux ADS-B. Les deux principales sont :

- le 1090 Extended Squitter (1090 ES),

- l'Universal Access Transponder (UAT).

Dans le projet, nous nous concentrons sur le 1090 ES car c'est le mode privilégié en Europe. Dans l'appellation 1090 ES, 1090 signifie que la fréquence porteuse des signaux ADS-B (pour ce mode de transmission) est 1090 MHz. ES signifie Extended Squitter, ce qui pourrait être traduit par message étendu. En effet, les messages transmis en utilisant ce mode avaient une durée de 56 bits (hors préambule de synchronisation). Dans le nouveau standard, les messages peuvent contenir 112 bits, d'où la notion de "message étendu".
# 4 Décodage et interprétation du flux binaire

Cette partie du projet est traitée par les étudiants du département Télécommunications. L'objectif est de mettre en pratique dans un cas concret, les cours et les travaux pratiques de communications numériques, codage de canal et traitement du signal. Les séances durent 4h et sont au nombre de 5. Outre les radio-logicielles que nous mettons à disposition, nous distribuons un sujet de projet aux étudiants quelques jours avant le premier créneau encadré. Le travail des étudiants consiste alors à préparer l'ensemble des questions théoriques avant la première séance. Le document fourni aux étudiants permet d'aborder le décodage des signaux ADS-B réels de manière graduelle en 3 parties différentes :

- Partie 1 : La première partie du projet est consacrée à la simulation de la couche physique de l'ADS-B. Les élèves mettent en place une chaîne de simulation permettant d'émuler le fonctionnement d'un émetteur/récepteur ADS-B. Après une analyse théorique des signaux émis, ils simulent avec MATLAB la couche physique ADS-B. Cette dernière est notamment composée : d'un codeur de canal, du filtre de mise en forme, d'un canal AWGN, d'un bloc de synchronisation, d'un filtre adapté, d'un bloc de décision. Le canal est considéré comme non-sélectif en fréquence, hypothèse qui se vérifie par la pratique. À partir de la chaîne de communication nous demandons aux étudiants d'analyser les signaux temporels et fréquentiels ainsi que les performances du système en terme de Taux d'Erreurs Binaire (TEB) et de diagramme de l'œil.

- Partie 2 : La seconde partie du projet est dédiée à l'étude de la couche MAC. Pour cela les étudiants analysent la structure des messages envoyés pour l'ADS-B et réalisent sous MATLAB les algorithmes permettant de décoder : l'altitude, la vitesse, la position, le nom ou encore l'adresse des avions. Afin de valider leurs codes, nous leur fournissons des paquets de données (sous forme de fichiers .mat) que nous avons préalablement démodulés.

- Partie 3 : La troisième partie est la concatenation des résultats obtenus en première et deuxième partie. Il s'agit alors de décoder des signaux réels de bout-en-bout, d'en extraire les informations et d'afficher sur une carte les trajectoires. C'est à ce stade que nous leur fournissons les radio-logicielles.

## 4.1 Partie 1 – Couche physique ADS-B

Les signaux transmis par ADS-B sont modulés par déplacement d'impulsion du type Pulse Position Modulation (PPM). La modulation PPM considérée ici est binaire avec une période symbole $T_s = 1\mu s$. Cette modulation PPM encode les informations binaires 0 et 1 avec les impulsions $p_0(t)$ et $p_1(t)$ représentées respectivement en Figure 2(a) et Figure 2(b).

L'enveloppe complexe du signal envoyé s'écrit :

$$s_t(t) = \sum_{k \in \mathbb{Z}} p_{b_k}(t - kT_s) \qquad (1)$$

sachant que $T_s$ représente ici le temps de l'impulsion élémentaire ($p_0(t)$ ou $p_1(t)$) et que

$$p_{b_k}(t) = \begin{cases} p_0(t), & \text{si } b_k = 0 \\ p_1(t), & \text{si } b_k = 1 \end{cases}$$

### 4.1.1 Etude théorique

À partir des hypothèses suivantes :

- les $b_k$ sont indépendants et distribués uniformément,
<figure><img src="image_2.png" /><figcaption>FIGURE 2 – Impulsions de base pour la modulation par position</figcaption></figure>

— le bruit bande de base $n_l(t) \sim \mathcal{N}(0, \sigma_{n_l}^2)$ de Densité Spectrale de Puissance (DSP) bilatérale $\Gamma_{n_l}(f) = \frac{N_0}{2}$,

— le modèle en bande de base de l'architecture de communication considérée est présenté sur la figure 3.

<figure><img src="image_3.png" /><figcaption>FIGURE 3 – Chaîne de communication complète</figcaption></figure>

Nous demandons aux étudiants de répondre à plusieurs questions théoriques comme :

— est-ce que les couples de filtres $(p_0(t), p_0^*(-t))$ et $(p_1(t), p_1^*(-t))$ vérifient le critère de Nyquist ?

— calculer le moment d'ordre 1 du signal $s_l(t)$, $m_{s_l}(t) = E[s_l(t)]$ et montrer qu'il ne dépend pas de $t$ (i.e. $m_{s_l}(t) = m_{s_l}$),

— montrer que $s_l(t)$ est cyclo-stationnaire et donner la période de cyclo-stationnarité,

— calculer la DSP de $s_l(t) : \Gamma_{s_l}(f)$

— calculer la probabilité d'erreur binaire $P_b$ pour la modulation PPM. Exprimer $P_b$ en fonction du rapport $\frac{E_b}{N_0}$ et de la fonction $erfc(\cdot)$.

Une partie de ces résultats théoriques est ensuite vérifiée par simulation.
4.1.2 Analyse pratique

La simulation est faite en utilisant MATLAB et les paramètres de simulations que nous fixons
aux étudiants sont les suivants :

— la fréquence d'échantillonnage : $f_e = \frac{1}{T_e} = 20$ MHz,

— le débit symbole : $D_s = \frac{1}{T_s} = 1$ MHz,

— le facteur de sur-échantillonnage : $F_{se} = \frac{T_s}{T_e} = 20$,

— la séquence binaire est générée aléatoirement avec une loi de probabilité uniforme
$P(b_k = 0) = P(b_k = 1) = 1/2$,

— les Fast Fourier Transform (FFT) sont obtenues à partir $N_{fft} = 512$ points,

— les messages comportent 1000 bits.

Afin de faciliter l'analyse des codes dans le cadre de l'évaluation du projet, nous imposons un certains nombre de règles comme le nom des codes MATLAB. Pour le cas présent, nous demandons aux étudiants de le nommer ADSB_part1_1.m. Parmi les vérifications, nous demandons aux étudiants de comparer les DSP théoriques et expérimentales <fnref n="3" /> ainsi que le TEB et la probabilité d'erreur binaire. Les résultats sont présentés sur les figures 4 et 5 :

<figure><img src="image_4.png" /><figcaption>FIGURE 4 – Comparaison du TEB et de la probabilité d'erreur binaire de la modulation PPM</figcaption></figure>

Généralement, lorsqu'on simule des chaînes de communications numériques avec MATLAB,
deux défauts ne sont pas pris en compte :

— la synchronisation temporelle : le signal subit un délai de propagation,

— la synchronisation fréquentielle : l'effet Doppler introduit par le mouvement de l'avion ainsi que les défauts d'oscillateurs locaux introduisent un décalage en fréquence.

<footnote n="3">3. La DSP étant estimée par la méthode de Welch.</footnote>
<figure><img src="image_5.png" /><figcaption>FIGURE 5 – DSP théorique et expérimentale</figcaption></figure>

Or dans le cadre de ce projet, il est indispensable d'ajouter ces pré-traitements pour être en mesure de démoduler les signaux enregistrés. Pour cela, il convient de formaliser ces défauts sur le modèle de l'enveloppe complexe du signal reçu, ainsi nous avons :

$$y_l(t) = s_l(t - \delta_t)e^{-j2\pi\delta_f t} + n_l(t).$$

où $\delta_t$ et $\delta_f$ représentent respectivement les désynchronisations temporelle et fréquentielle du signal.

La synchronisation est réalisée à la réception en utilisant un signal $s_p(t)$ de durée $T_p = 8 \ \mu s$ appelé préambule et envoyé en entête des trames ADS-B. Le préambule est le signal donné en Figure 6.

<figure><img src="image_6.png" /><figcaption>FIGURE 6 – Préambule $s_p(t)$ de $T_p = 8 \ \mu s$ débutant les trames ADS-B</figcaption></figure>
Désormais, pour $t \in [0, T_p]$ $s_l(t) = s_p(t)$ est déterministe,

$$y_l(t) = s_p(t - \delta_t)e^{-j2\pi\delta_f t} + n_l(t), \text{ pour } t \in [\delta_t, \delta_t + T_p]$$

où $s_p(t)$ est le signal de préambule connu de l'émetteur et du récepteur. On effectue la synchronisation en cherchant le maximum de la corrélation suivante :

$$\rho(\delta'_t, \delta'_f) = \frac{\int_{\delta'_t}^{\delta'_t+T_p} y_l(t)s_p^*(t-\delta'_t)e^{j2\pi\delta'_f t} dt}{\sqrt{\int_0^{T_p} |s_p(t)|^2 dt} \cdot \sqrt{\int_{\delta'_t}^{\delta'_t+T_p} |y_l(t)|^2 dt}}$$

L'estimation est alors réalisée en prenant le couple $(\hat{\delta}_t, \hat{\delta}_f)$ tel que

$$(\hat{\delta}_t, \hat{\delta}_f) = \arg \max_{(\delta'_t, \delta'_f)} |\rho(\delta'_t, \delta'_f)| \quad (2)$$

Effectuer la synchronisation en utilisant (2) n'a de sens que si on a l'information *a priori* que le signal à synchroniser est présent dans $y_l(t)$. Cette information est accessible lorsque l'on travaille à partir de signaux synthétiques. Sur des signaux réels, cette connaissance *a priori* n'étant pas systématique, nous faisons remarquer aux étudiants que $|\rho(\delta'_t, \delta'_f)| \le 1$ pour tout couple $(\delta'_t, \delta'_f)$. À partir de ce constat, nous leur proposons d'ajuster leur algorithme de synchronisation, en fixant plutôt un seuil de détection 4. Afin de maximiser la recherche sur la grille (temps, fréquence), nous faisons également évaluer aux élèves le décalage de fréquence Doppler maximal en considérant une vitesse maximale de 900 km/h. La validation de leur algorithme se fait en observant l'évolution de l'Érreur Quadratique Moyenne (EQM) des estimées $(\hat{\delta}_t, \hat{\delta}_f)$ en fonction du Rapport Signal sur Bruit (RSB). Nous leur demandons également d'observer la perte de sensibilité du récepteur en présence des ces défauts de synchronisation. Cela passe par la comparaison des courbes de TEB avec synchronisation estimée et parfaite (voir figure 7). Cette courbe est obtenue en moyennant chaque RSB sur 10000 réalisations et en considérant que :

- le délai de propagation $\delta_t$ est aléatoirement et uniformément réparti entre 0 et $100T_e$,

- le décalage en fréquence $\delta_f$ est aléatoirement et uniformément réparti entre $-1kHz$ et $1kHz$.

Cette dernière partie sur la couche physique permet de sensibiliser les étudiants aux problèmes liés à la synchronisation en communications numériques 5.

## 4.2 Partie 2 – Couche MAC ADS-B et décodage de signaux réels

Le but de cette partie est de se familiariser avec la structure des signaux ADS-B réels afin de pouvoir tester le décodeur implémenté dans la section précédente sur des signaux réels.

### 4.2.1 Structure des trames ADS-B

Les signaux émis par les appareils pour l'ADS-B ont une durée de 120 µs. Ils sont constitués des parties suivantes :

- le préambule (identique à celui de la section précédente),

<footnote n="4">4. Le seuil ici est fixé empiriquement. Dans le cadre du décodage des signaux ADS-B avec les radio-logicielles, 0.8 s'est avéré un bon compromis entre le nombre de bonnes détections et de fausses alarmes. Une façon plus formelle consisterait à poser le problème sous la forme d'un test d'hypothèse binaire, de fixer une probabilité de fausse alarme et de calculer le seuil correspondant sous l'hypothèse du bruit.</footnote>

<footnote n="5">5. Un enseignement spécifique à ses problématiques est dispensé au semestre 8 du département Télécommunications</footnote>
<figure><img src="image_7.png" /><figcaption>FIGURE 7 – Perte de sensibilité du récepteur lorsque les signaux reçus désynchronisés sont synchronisés par double inter-corrélation</figcaption></figure>

— le format de la voie descendante,

— la capacité,

— l'adresse Organisation de l'Aviation Civile Internationale (OACI) de l'appareil,

— les données ADS-B,

— les bits de contrôle de parité.

La durée de chacune des parties ainsi que leur position dans une trame ADS-B sont représentées en Figure 8. Nous détaillons maintenant la fonction des différentes parties de la trame.

<figure><img src="image_8.png" /><figcaption>FIGURE 8 – Format d'une trame ADS-B</figcaption></figure>

## Le préambule

Il sert pour la synchronisation temporelle et fréquentielle des signaux. Le préambule est identique quelque soit les types de signaux ADS-B transmis, il dure 8µs et est identique à celui utilisé dans la section précédente.

## Le format de la voie descendante

Le format de la voie descendante est codé sur 5 bits et indique le type de la trame envoyée. Les valeurs particulières de ce format sont les suivantes :
— 11 : message d'acquittement,

— 17 : message de type ADS-B,

— 18 : message de type Traffic Information Service-Broadcast (TIS-B),

— 19 : message de type ADS-B militaire (crypté),

Dans ce projet, nous nous intéresserons seulement aux trames avec Downlink Format (DF) = 17.

## La capacité

La capacité est notée CA (pour CApacity). Elle est codée sur 3 bits et représente un sous-type de trame envoyée. Nous ne nous préoccuperons pas de sa signification.

## L'adresse OACI de l'appareil

L'OACI définit entre autre une immatriculation pour les aéroports, aérodromes et appareils volants. Dans les trames ADS-B, l'adresse OACI de l'appareil (parfois notée AA pour Aircraft Address) est codée sur 24 bits. Chaque appareil possède une adresse unique tout au long de sa vie, quelle que soit sa compagnie ou son plan de vol.

Dans ce projet, il est primordial de pouvoir décode correctement cette adresse car elle servira à connaître de quel appareil proviennent les données décodées. Cette adresse sert aussi pour trouver un avion dans les bases de données des tours de contrôles, ou des RADARs virtuel (tels que http://planefinder.net ou http://www.flightradar24.com). On pourra donc se servir des RADARs virtuels afin d'avoir plus d'informations sur les appareils ayant transmis les signaux reçus.

## Les données ADS-B

Dans le cadre de données envoyée pour ADS-B (DF = 17), les messages sont composés de 56 bits et durent 56µs. Les messages pouvant être transmis sont répertoriés dans des registres. Le contenu de ces messages dépend du type de registre. On trouve des registres pour les informations de position au sol, de position en vol, de signes d'identification, d'information météo, d'information de trafic. Ceux qui vont nous intéresser dans ce projet sont ceux listés dans la Table 1, ceux écrits en gras étant ceux à traiter en premier, les derniers étant des bonus.

<table><caption>TABLE 1 – Table des registres utilisés par ADS-B</caption><thead><tr><td>Adresse</td><td>Contenu</td></tr></thead><tbody><tr><td>05<sub>hex</sub></td><td>message de position en vol</td></tr><tr><td>06<sub>hex</sub></td><td>message de position au sol</td></tr><tr><td>08<sub>hex</sub></td><td>message d'identification</td></tr><tr><td>09<sub>hex</sub></td><td>message de vitesse en vol</td></tr></tbody></table>

Dans tous les cas, les registres sont constitués de 56 bits. Les 5 premiers bits du message constituent le code du format des données : Format Type Code (FTC) en anglais. Ces bits indiquent si le message correspond à un message de position au sol, un message de position en vol ou un message d'identification. Les tables de correspondances entre les 5 bits et le type de message sont données dans les Tables 4 à 6 en Annexe A.

La structure des trames de position en vol est donnée dans la Table 2 ci-dessous. Dans le cadre du projet, nous ne considérons ni les 2 bits de surveillance ni le bit de type d'antenne ni le bit indicateur de temps Coordinated Universal Time (UTC). L'encodage de l'altitude ainsi que ceux des latitude et longitude sont donnés en Annexe C.
<table><caption>TABLE 2 – Composition du message de position en vol</caption><thead><tr><th>Index binaire</th><th>Champs</th></tr></thead><tbody><tr><td>1</td><td>MSB</td></tr><tr><td>...</td><td>Format Type Code</td></tr><tr><td>5</td><td>LSB</td></tr><tr><td>6</td><td>MSB</td></tr><tr><td>...</td><td>Surveillance Status</td></tr><tr><td>7</td><td>LSB</td></tr><tr><td>8</td><td>Indicateur de type d'antenne</td></tr><tr><td>9</td><td>MSB</td></tr><tr><td>...</td><td>Altitude</td></tr><tr><td>20</td><td>LSB</td></tr><tr><td>21</td><td>Indicateur de temps UTC</td></tr><tr><td>22</td><td>Indicateur de format CPR</td></tr><tr><td>23</td><td>MSB</td></tr><tr><td>...</td><td>Latitude encodée avec CPR</td></tr><tr><td>39</td><td>LSB</td></tr><tr><td>40</td><td>MSB</td></tr><tr><td>...</td><td>Longitude encodée avec CPR</td></tr><tr><td>56</td><td>LSB</td></tr></tbody></table>

La structure des trames d'identification est donnée Table 3. L'identification de l'appareil est composée de 8 caractères, chacun étant encodé sur 6 bits. La table de correspondance entre les 6 bits et les caractères est donnée en Table 8 dans l'Annexe D.

## Les bits de parités

Les bits de parités sont issus d'un Code à Redondance Cyclique (CRC) de 24 bits dont le polynôme générateur est donné ci-dessous

$$p(x) = x^{24} + x^{23} + x^{22} + x^{21} + x^{20} + x^{19} + x^{18} + x^{17} + x^{16} + x^{15} + x^{14} + x^{13} + x^{12} + x^{10} + x^{3} + 1.$$

Le codage CRC rajoute 24 bits au message initial, ces bits servant à détecter d'éventuelles erreurs lors du décodage des messages. Le but principal de ce projet n'étant pas de programmer un détecteur d'erreur basé sur les CRC, les étudiants utilisent les fonctions MATLAB dédiées à cet effet :

- `crc-detector` qui sert à construire un détecteur CRC à partir du polynôme générateur,

- `detect` méthode d'un objet de type `crc-detector` afin de détecter la présence d'erreurs.

### 4.2.2 Travail à réaliser

Le travail que nous demandons aux étudiants dans cette partie, consiste à développer une fonction MATLAB qui convertit un message binaire en registre afin de pouvoir en extraire les données sur les appareils concernés. Afin de rendre synthétique leur code MATLAB, nous leur demandons de représenter un registre par une structure possédant les champs `format` (contenant `DF`), `adresse` (contenant `AA`), `type` (contenant le Format Type Code-FTC), `nom` (contenant le nom de l'appareil), `altitude` (contenant l'altitude), `timeFlag` (contenant l'indicateur de temps UTC), `cprFlag` (contenant l'indicateur Compact Position Reporting (CPR)), `latitude` (contenant la latitude) et `longitude` (contenant la longitude). La façon la plus simple d'initialiser cette structure est de l'écrire sous la forme suivante
<table><caption>TABLE 3 – Composition du message d'identification</caption><thead><tr><th>Index binaire</th><th>Champs</th></tr></thead><tbody><tr><td>1</td><td>MSB</td></tr><tr><td>...</td><td>Format Type Code</td></tr><tr><td>5</td><td>LSB</td></tr><tr><td>6</td><td>MSB</td></tr><tr><td>...</td><td>Catégorie de l'appareil</td></tr><tr><td>8</td><td>LSB</td></tr><tr><td>9</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 1 de l'identifiant</td></tr><tr><td>14</td><td>LSB</td></tr><tr><td>15</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 2 de l'identifiant</td></tr><tr><td>20</td><td>LSB</td></tr><tr><td>21</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 3 de l'identifiant</td></tr><tr><td>26</td><td>LSB</td></tr><tr><td>27</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 4 de l'identifiant</td></tr><tr><td>32</td><td>LSB</td></tr><tr><td>33</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 5 de l'identifiant</td></tr><tr><td>38</td><td>LSB</td></tr><tr><td>39</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 6 de l'identifiant</td></tr><tr><td>44</td><td>LSB</td></tr><tr><td>45</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 7 de l'identifiant</td></tr><tr><td>50</td><td>LSB</td></tr><tr><td>51</td><td>MSB</td></tr><tr><td>...</td><td>Caractère 8 de l'identifiant</td></tr><tr><td>56</td><td>LSB</td></tr></tbody></table>
```
registre = struct('adresse', [], 'format', [], 'type', [], 'nom', [],
                 'altitude', [], 'timeFlag', [], 'cprFlag', [],
                 'latitude', [], 'longitude', [], 'trajectoire', []);
```

Pour initialiser un des champs de cette structure, nous précisons aux étudiants d'utiliser la syntaxe suivante :

```
registre.nom = 'AF1234';
registre.altitude = 34000;
```

Tous les messages envoyés pour l'ADS-B ne comportent pas systématiquement toutes les informations. En effet, les informations transmises dépendent du type de registre en train d'être envoyé et donc de la partie "message" d'une trame ADS-B. La structure de cette partie "message" est donnée en Annexe B pour des messages de position en vol, position au sol et d'identification de l'appareil.

A l'instar de ce qui a été fait pour la couche physique, nous imposons le nom du code principal MATLAB. Il s'agit ici de `ADSB_part2.m`. Ce code MATLAB permet aux étudiants de répondre aux questions suivantes :

- Écrire la fonction MATLAB `bit2registre` qui prend en argument un vecteur de 112 bits et un registre à mettre à jour, qui extrait les informations du vecteur binaire et qui renvoie le registre mis à jour seulement si le CRC ne détecte pas d'erreur.

- Afin de tester votre code, téléchargez l'archive `projet_adsb.zip`<fnref n="6" />. Cette archive contient le fichier `trames_20141120.mat`. Ce fichier contient les 112 bits suivant le préambule de 21 trames issues d'un même appareil (ces trames sont rangées en colonnes). Extrayez toutes les informations de ces trames et affichez la trajectoire de l'avion considéré.

Pour effectuer l'affichage, vous pourrez vous servir de la commande `plot GoogleMap`. Afin de vous aider à comprendre le fonctionnement de `plot GoogleMap`, un code exemple vous est fourni dans le fichier `affiche_pos_avion.m`.

- A quelle compagnie appartient cet avion, quel était son modèle et quelle était sa route ?

## 4.3 Partie 3 – Affichage temps réel des trajectoires et mise en compétition des étudiants

Pour cette dernière partie, nous fournisons à chaque binôme d'étudiants une radio-logicielle (voir figure 9), ainsi qu'une archive contenant :

- l'interface permettant de contrôler la radio-logicielle USRP avec MATLAB,

- un code MATLAB permettant d'afficher les trajectoires décodées sur une carte extraite depuis "Google maps" (ce code est issu de [3]).

Ainsi, à partir des codes fournis les étudiants doivent adapter leurs précédents algorithmes afin de décoder en temps réel les trajectoires des avions captés par la radio-logicielle. Afin de valider les trajectoires qu'ils décodent, ils doivent les comparer avec celles affichées sur les "trackers" disponible sur Internet (par exemple : www.flightradar24.com/).

En plus de juger les élèves ingénieurs sur leur capacité à adapter leurs codes pour décodeer les trajectoires, nous les mettons en compétitions sur la rapidité d'exécution de leurs algorithmes et sur la portée maximale de détection.

Dans notre cas, nous disposions de suffisamment de radio-logicielles pour équiper la totalité des binômes. Cependant, la fin du projet peut également être menée avec une seule radio-logicielle. Pour cela, nous avons développé un programme MATLAB qui permet d'exécuter les codes des

<footnote n="6">6. Disponible ici : http://rtajan.vvv.enseirb-matmeca.fr/Cours/Telecom/T2/Projet ADSB/projet_adsb.zip</footnote>
<figure><img src="image_9.png" /><figcaption>FIGURE 9 – Environnement de travail des étudiants</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>FIGURE 10 – Exemple d’un suivi au dessus de l’ENSEIRB-MATMECA de 30 minutes le 20/11/2014</figcaption></figure>
étudiants à tour de rôle et en boucle. Ce programme permet d'afficher une carte "Google maps" contenant les trajectoires décodées par les étudiants et le temps passé pour décodeur une trame.

Les étudiants interagissent avec ce programme en lui fournissant des codes à exécuter dans un dossier spécifique; ce dossier est partagé avec l'enseignant sur un espace de stockage type Dropbox. Au début du tour d'un étudiant, le programme principal lit le code présent dans le dossier et l'exécute. L'exécution des codes des étudiants est effectuée au sein d'un bloc try ... catch, permettant de ne pas arrêter le code principal lorsque le code des étudiants comporte une erreur. À la fin du tour d'un étudiant, un fichier html est créé contenant : une carte "Google maps" et les trajectoires décodées par l'étudiant, le temps d'exécution pour le décodage d'une trame ainsi qu'un message indiquant si le code s'est exécuté normalement ou un message d'erreur. Ce fichier html permet aux étudiants de développer et d'améliorer leurs codes pendant que le code des autres est en cours d'exécution.

Le professeur interagit avec le programme par l'intermédiaire d'un tableau Excel. Ce tableau permet au professeur d'administrer le programme principal; il permet d'ajouter des étudiants dans la boucle, de sortir des étudiants de la boucle, et de régler le temps d'exécution dédié à chaque étudiant.

Afin d'améliorer la portée de détection des algorithmes développés par les étudiants du département Télécommunications, nous faisons réaliser une antenne patch aux étudiants du département Électronique. La modélisation et la conception de cette antenne sont décrites dans la section suivante.

# 5 Modélisation et conception de l'antenne ADS-B

Les étudiants de 3ème année de l'option SRT, comprenant environ 15 élèves, suivent un cours d'introduction aux antennes. La réalisation de l'antenne ADS-B a été proposée dans le cadre des projets de conception d'antenne s'intégrant dans ce cours.

## 5.1 Organisation du cours d'introduction aux antennes

Le cours d'introduction aux antennes est constitué de 10 heures d'enseignements intégrant cours magistraux et travaux dirigés. Il comprend ensuite une première séance de travail pratique de 3 heures d'introduction à la conception d'antennes. Durant cette séance, la méthodologie de conception est introduite (voir figure 11).

Cette première séance de travail pratique met en application la conception de deux antennes : une antenne dipôle et une antenne Yagi-Uda, toutes deux pour application WI-FI. La première antenne est réalisée étape par étape avec l'enseignant. Ce dernier introduit lors de la phase de simulation et d'optimisation le logiciel de simulation électromagnétique CST Microwave Studio. Le second exemple est réalisé en autonomie par chaque étudiant à l'aide des instructions d'un sujet de TP. Lors de cette phase, une évaluation du niveau de chaque étudiant est faite par l'enseignant.

À la fin de cette séance, on propose aux étudiants plusieurs projets de conception d'antenne présentant des niveaux de difficulté plus ou moins importants. Chaque étudiant, en fonction de ses intérêts et motivations, se positionne sur trois projets avec un ordre de préférence. L'enseignant affecte ensuite chaque étudiant par groupe de 2 ou 3, en fonction de ses vœux, du niveau de difficulté du projet et de leur niveau préalablement évalué. Par expérience, les étudiants sont relativement conscients de leur niveau et se positionnent sur des projets à leur portée. Cette façon de procéder est tout à fait adaptée pour des groupes d'étudiants présentant des niveaux et des intérêts relativement in-homogènes. Il permet également d'engager individuellement chaque étudiant par le choix de son projet.
<figure><img src="image_11.png" /><figcaption>FIGURE 11 – Méthodologies de conception d'antenne</figcaption></figure>
Les étudiants bénéficient ensuite de deux séances de 3 heures avec l'enseignant pour travailler sur le projet. Les outils de simulations sont également mis à disposition en dehors des heures dédiées.

Ensuite, les étudiants bénéficient de deux semaines pour fabriquer leur prototype avant une séance de mesure dans la chambre anéchoïque de l'ENSEIRB-MATMECA.

Finalement, chaque projet est présenté devant la classe afin de partager l'expérience acquise par chacun.

## 5.2 Le projet de conception de l'antenne ADS-B

Parmi les projets proposés, figure la conception d'une antenne pour la réception des signaux ADS-B. Ce projet est l'un des plus difficiles proposés avec un niveau de difficulté évalué à 8/10. Des étudiants évalués dans le premier tiers de la classe ayant montré un fort intérêt sont affectés sur ce projet. Ils suivent la méthodologie de conception illustrée en figure 11.

### 5.2.1 Analyse de l'application

Les étudiants ont commencé par faire l'analyse de l'application à partir de l'expression du besoin consistant à concevoir une antenne pour la réception des signaux ADS-B des avions de ligne dans une zone la plus grande possible en couvrant la verticale (l'ENSEIRB-MATMECA se trouvant juste en dessous d'un couloir aérien). Lors de cette phase, les étudiants se sont également renseignés sur les signaux ADS-B, afin d'en déterminer la bande de fréquence et la polarisation.

### 5.2.2 Définitions des performances de l'antenne

Suite à la première étape, les étudiants ont défini les propriétés de l'antenne qui permettent de répondre au mieux au besoin :

- Une antenne rayonnant sur une demi-sphère et ayant une polarisation circulaire afin de pouvoir recevoir le signal de polarisation linéaire, quelle que soit l'orientation relative de l'avion par rapport à l'antenne.

Les étudiants se sont également fixé comme objectif d'obtenir une antenne la plus efficace possible afin de minimiser le facteur de bruit global du récepteur et donc d'obtenir une large zone de détection pour le système final.

### 5.2.3 Choix du type d'antenne

À partir des performances attendues et des acquis du cours magistral, les étudiants se sont orientés sur un type spécifique d'antenne présentant les caractéristiques attendues :

- Une antenne patch avec coin tronqué permettant l'excitation des modes TM01 et TM10 générant la polarisation circulaire. Également, inspiré par un prototype d'antenne patch à polarisation linéaire basée sur deux Printed circuit board (PCB) Flame Resistance 4 (FR4) espacés par de l'air. Afin d'augmenter la bande passante et l'efficacité de l'antenne, les étudiants se sont orientés sur la structure multicouche illustrée en figure 12 (b).

### 5.2.4 Etude analytique

Afin de pré-dimensionner leur antenne, les étudiants se sont référés à [1] leur permettant de dimensionner le patch et à [2] pour déterminer les propriétés équivalentes de la structure multi-couches.
<figure><img src="image_12.png" /><figcaption>FIGURE 12 – (a) Géométrie du patch tronqué vue de dessus et (b) structure multi-couches de l'antenne vue de côté</figcaption></figure>

### 5.2.5 Simulation électromagnétique

Les étudiants ont ensuite dessiné leur structure en la paramétrant avec les valeurs théoriquement établies dans le logiciel CST Microwave Studio. Ils se sont aperçus que leur antenne été légèrement décalée en fréquence et que la polarisation obtenue été elliptique.

### 5.2.6 Optimisation

Les étudiants sont ensuite entrés dans une phase d'optimisation consistant à confirmer les paramètres influant pré-identifié en théorie et sur lesquels intervenir afin d'atteindre les performances désirées. Une étude paramétrique suivie d'une optimisation est ensuite menée par les étudiants afin d'obtenir les performances désirées.

### 5.2.7 Fabrication

La réalisation du prototype a été entièrement faite par les étudiants à partir d'un connecteur SubMiniature version A (SMA), de vis en nylon et de deux circuits FR4 de 0.8mm d'épaisseur. Les circuits ont été gravés et découpés à l'aide d'une machine de prototypage rapide Protomat S63 de LPKF. Le prototype final est illustré sur les figures 13 et 14.

<figure><img src="image_13.png" /><figcaption>FIGURE 13 – Antenne patch fabriquée vue de côté</figcaption></figure>

### 5.2.8 Mesure et test applicatif

L'antenne a été mesurée dans un premier temps à l'aide d'un analyseur de réseaux vectoriel afin de vérifier sa bonne adaptation. Ensuite, les propriétés radiatives ont été mesurées dans la chambre anéchoïque de l'ENSEIRB-MATMECA par les étudiants suite à une formation préalable. Les résultats de mesure obtenus avec l'antenne ADS-B sont comparés aux résultats de simulation sur la figure 15. On peut voir que les diagrammes de rayonnement dans les plans xz et yz correspondent bien aux diagrammes simulés et permettent de couvrir une très large zone
<figure><img src="image_14.png" /><figcaption>FIGURE 14 – Antenne patch fabriquée vue de dessus dans la chambre anéchoïque</figcaption></figure>

au-dessus de l'antenne. Un gain de 8 dBi est obtenu. La polarisation circulaire est également confirmée par la mesure telle que représentée sur la figure 16. Un décalage en fréquence peut être observé sur cette dernière. Les étudiants n'ayant pas réussi à centrer le rapport axial sur la fréquence ADS-B dans le temps impartis. Un rapport axial de 4 dB est obtenu en mesure à 1,09 GHz.

<figure><img src="image_15.png" /><figcaption>FIGURE 15 – Propriétés radiatives mesurée et simulée de l'antenne : gain en polarisation circulaire main droite (a) dans le plan xz et (b) dans le plan yz</figcaption></figure>

Les étudiants ont alors mis à disposition leur prototype afin de réaliser une mesure applicative avec les enseignants responsable du projet ADS-B au niveau du département de Télécommunication. Une très large zone de couverture a été obtenue.

### 5.2.9 Tenue du cahier des charges

Suite à la mesure de leur antenne, les étudiants ont fait une présentation de leur projet en comparant leur résultat de mesure et simulation avec leur cahier des charges.
<figure><img src="image_16.png" /><figcaption>FIGURE 16 – Rapport axial sur l’axe z en fonction de la fréquence</figcaption></figure>

### 5.2.10 Production

Le prototype ayant des performances satisfaisantes, une dizaine de copies de l'antenne ont été réalisées par l'équipe technique de l'ENSEIRB-MATMECA sous la supervision des étudiants. Ainsi, chaque groupe d'étudiants du département Télécommunication a disposé d'une antenne ADS-B.

## 6 Conclusion

Permettre aux étudiants de travailler sur de réelles applications a comme intérêt de les sensibiliser à une problématique, qui ne s'enseigne pas mais qui s'apprend par l'expérience, qui est celle consistant à s'apercevoir que les concepts théoriques qui s'appliquent très bien en simulations ne le sont pas systématiquement dans la pratique. Manipuler des signaux réels, permet également de montrer aux étudiants que les hypothèses théoriques de bruit blanc gaussien ou de canal non-sélectif en fréquence sont valides en pratique.

Enfin, ce projet comporte un certains nombres d'axes d'améliorations, comme par exemple :

- implémenter le codeur et le décodeur de canal pour se passer des fonctions prédéfinies par MATLAB,

- implémenter notre propre fonction permettant de faire l'affichage sur une carte, car le nombre d'appel par jour à la fonction "Google maps" est limitée par adresse IP,

- implémenter le décodage de toutes les fonctionnalités du standard ADS-B.

Nous travaillons sur ces différents points afin de faire évoluer le projet et de le différencier d'année en année.

## 7 Références

[1] Constantine A. Balanis, "Antenna theory – analysis and design", Third Edition, 2005, pp. 859-865.

[2] D. Kraszewski, V. Subramanian, W. Keusgen and G. Boeck, "Prediction of the dielectric properties of two phases mixtures", Journal of Microwave Power, vol.12, 1977. pp. 57-59.

[3] www.mathworks.com/matlabcentral/fileexchange/27627-zoharby-plot-google-map
## 8 Quelques témoignages d'étudiants

B. FOVET, C. HUYNH (T2, année 2014-2015) Ce projet nous a beaucoup appris tant sur les communications numériques que sur l'implémentation du code sur MATLAB, sans oublier l'optimisation du code pour améliorer la rapidité du décodage des trames – ce qui nous prenait approximativement 10 secondes lors de notre décodage initial ne nous prend désormais environ 0.7 seconde. Nous nous sommes également intéressés à d'autres problèmes annexes, comme le décodage de toutes les informations d'identification des avions, grâce à une fonction effectuant des requêtes dans la base de données que nous avons créée, à partir des quatre types de trames possibles qui sont les messages de position en vol et au sol, d'identification et de vitesse. Néanmoins, bien que nous ayons gagné une dizaine de secondes en temps d'exécution en modifiant certaines parties du code, nous n'avons implémenté le décodage que de façon sous-optimale, en ne considérant que le décalage temporel.

O. PLAZZI, M. TAHAR (T2, année 2014-2015) Nous avons réalisé sous MATLAB un émetteur / récepteur de trames ADS-B fonctionnel, permettant de décodeur des messages envoyés par les avions survolant une zone de rayon d'environ 200km autour de l'aéroport de Mérignac. Pour réaliser un décodage fonctionnel en temps réel sur l'antenne, nous avons dû faire des choix, des compromis, afin de réduire le temps de calcul. En effet, si l'on avait tenté de faire l'estimation du décalage fréquentiel, notre code aurait été beaucoup trop lent et donc pas utilisable en pratique. Finalement, ce projet nous aura permis de réunir toutes les techniques de Traitement du Signal dans l'implémentation MATLAB de la chaîne de communication : de la simulation de l'émetteur jusqu'au décodage de trames réelles.

J. NICOT, T. PETIT, M. GIRARD (E3, année 2014-2015) Ce projet a été un des plus passionnants de notre cursus d'ingénieur. Il nous a menés à faire la réalisation de A à Z d'une antenne en appliquant de façon très concrète la procédure de conception préalablement introduite par l'enseignant. Nous avons beaucoup apprécié la diversité des projets proposés et avons été très motivés de nous investir sur le projet de réception des signaux ADS-B. Nous avons dû dans un premier temps étudier les systèmes ADS-B et l'application visée. Cela nous a permis de définir un cahier des charges définissant les performances de l'antenne. Nous avons ensuite identifié dans la littérature une structure d'antenne que nous avons pré-dimensionnée par la théorie, puis optimisée à l'aide d'un logiciel de simulation électromagnétique préalablement introduit par l'enseignant. Enfin, nous avons pu fabriquer et caractériser par la mesure notre antenne. Nous sommes très satisfaits par les performances de notre conception et surtout par le fait que notre réalisation soit mise en valeur dans le cadre des travaux pratiques du département de Télécommunication.

## 9 Biographie des auteurs

Guillaume Ferré a obtenu le diplôme en électronique et télécommunications de l'ENSIL en 2003, le DEA de télécommunications, hautes fréquences et optoélectronique de l'Université de Limoges en 2003 et le Doctorat en électronique des hautes fréquences et optoélectronique de l'Université de Limoges en 2006. Il a effectué sa thèse au laboratoire Xlim de Limoges sur le codage de canal et les techniques de décodage itératives pour les systèmes sans fil multi-antennes. Après une année en tant qu'ATER à l'ENSIL, une année de post-doctorat au laboratoire IMS de Bordeaux, il rejoint en 2008 l'ENSEIRB-MATMECA en tant que Maître de Conférences. Ses activités de recherches en communications numériques, au sein de l'équipe SPECTRAL du groupe Signal du laboratoire IMS, consistent en la proposition d'algorithmes de traitement statistique du signal pour l'augmentation de l'efficacité spectrale et/ou la réduction de la consommation énergétique des systèmes sans-fil. Le champ applicatif de ces activités est la 5G.
**Romain Tajan** a obtenu le diplôme d'ingénieur de l'ENSEA en spécialité Signaux, Temps-réel et Communications (STC) en 2010, le Master Systèmes Intelligents et Communicants (SIC) de l'Université de Cergy-Pontoise en 2010 et le Doctorat en Sciences et Technologies de l'Information et de la Communication (STIC) de l'Université de Cergy-Pontoise en 2013. Il a effectué son doctorat sur les mécanismes de retransmissions HARQ pour la radio-cognitive au sein du laboratoire ETIS à Cergy-Pontoise. Il a ensuite effectué un post-doctorat au sein du CNES durant l'année 2014; pendant lequel il a étudié les nouvelles formes d'ondes à forte efficacité spectrale pour les nouveaux standards de communications par satellites. Depuis septembre 2014, il occupe le poste de Maître de conférences au département de Télécommunications de l'ENSEIRB-MATMECA de l'Institut Polytechnique de Bordeaux. Il effectue ses activités de recherche au sein de l'équipe SPECTRAL du groupe Signal du laboratoire IMS. Ses activités de recherche portent sur l'étude et le design des formes d'ondes pour les récepteurs à fortes efficacités spectrales des standards de futures générations. Il s'intéresse aussi à l'optimisation inter-couche des systèmes de communications tel que et l'optimisation des mécanismes de retransmissions.

**Anthony Ghiotto** a reçu le diplôme d'ingénieur et de Master en 2005 et le diplôme de Docteur en 2008, tous en électronique, de l'Institut Polytechnique de Grenoble. Durant son doctorat, il a bénéficié du programme de monitorat à l'enseignement supérieur. Il a ensuite effectué un post-doctorat entre 2009 et 2011 et a été associé de recherche de 2011 à 2012 au sein du centre de recherche PolyGrames de l'école Polytechnique de Montréal, QC, Canada. À l'école Polytechnique de Montréal, il a eu la responsabilité de chargé de cours et réalisé des enseignements d'électromagnétisme et d'électronique au niveau licence et maîtrise sous forme de cours magistraux, travaux dirigés et travaux pratiques. Depuis septembre 2012, le Dr. Ghiotto occupe le poste de Maître de Conférences à l'école d'ingénieur ENSEIRB-MATMECA de l'Institut Polytechnique de Bordeaux et effectue ses travaux de recherche au sein du laboratoire IMS. Ses travaux de recherche se consacre à l'analyse, le design et l'intégration de circuits passifs et actifs pour les systèmes opérants aux fréquences micro-ondes et millimétriques.
# Annexe A Tableaux de Format Type Codes

<table><caption>TABLE 4 – Tableaux des valeurs du FTC pour FTC ∈ [0, 8]</caption><thead><tr><th>TYPE Code</th><th>Format</th><th>Horizontal protection limit (HPL)</th><th>95% Containment radius, μ and v, on horizontal and vertical position error</th><th>Altitude type (see §A.2.3.2.4)</th><th>NUC<sub>p</sub></th></tr></thead><tbody><tr><td>0</td><td>No position information</td><td></td><td></td><td>Barometric altitude or no altitude information</td><td>0</td></tr><tr><td>1</td><td>Identification (Category Set D)</td><td></td><td></td><td>Not applicable</td><td></td></tr><tr><td>2</td><td>Identification (Category Set C)</td><td></td><td></td><td>Not applicable</td><td></td></tr><tr><td>3</td><td>Identification (Category Set B)</td><td></td><td></td><td>Not applicable</td><td></td></tr><tr><td>4</td><td>Identification (Category Set A)</td><td></td><td></td><td>Not applicable</td><td></td></tr><tr><td>5</td><td>Surface position</td><td>HPL &lt; 7.5 m</td><td>μ &lt; 3 m</td><td>No altitude information</td><td>9</td></tr><tr><td>6</td><td>Surface position</td><td>HPL &lt; 25 m</td><td>3 m ≤ μ &lt; 10 m</td><td>No altitude information</td><td>8</td></tr><tr><td>7</td><td>Surface position</td><td>HPL &lt; 185.2 m (0.1 NM)</td><td>10 m ≤ μ &lt; 92.6 m (0.05 NM)</td><td>No altitude information</td><td>7</td></tr><tr><td>8</td><td>Surface position</td><td>HPL &gt; 185.2 m (0.1 NM)</td><td>(0.05 NM) 92.6 m ≤ μ</td><td>No altitude information</td><td>6</td></tr></tbody></table>

<table><caption>TABLE 5 – Tableaux des valeurs du FTC pour FTC ∈ [9, 18]</caption><tr><td>9</td><td>Airborne position</td><td>HPL &lt; 7.5 m</td><td>μ &lt; 3 m</td><td>Barometric altitude</td><td>9</td></tr><tr><td>10</td><td>Airborne position</td><td>7.5 m ≤ HPL &lt; 25 m</td><td>3 m ≤ μ &lt; 10 m</td><td>Barometric altitude</td><td>8</td></tr><tr><td>11</td><td>Airborne position</td><td>25 m ≤ HPL &lt; 185.2 m (0.1 NM)</td><td>10 m ≤ μ &lt; 92.6 m (0.05 NM)</td><td>Barometric altitude</td><td>7</td></tr><tr><td>12</td><td>Airborne position</td><td>185.2 m (0.1 NM) ≤ HPL &lt; 370.4 m (0.2 NM)</td><td>92.6 m (0.05 NM) ≤ μ &lt; 185.2 m (0.1 NM)</td><td>Barometric altitude</td><td>6</td></tr><tr><td>13</td><td>Airborne position</td><td>370.4 m (0.2 NM) ≤ HPL &lt; 926 m (0.5 NM)</td><td>185.2 m (0.1 NM) ≤ μ &lt; 463 m (0.25 NM)</td><td>Barometric altitude</td><td>5</td></tr><tr><td>14</td><td>Airborne position</td><td>926 m (0.5 NM) ≤ HPL &lt; 1 852 m (1.0 NM)</td><td>463 m (0.25 NM) ≤ μ &lt; 926 m (0.5 NM)</td><td>Barometric altitude</td><td>4</td></tr><tr><td>15</td><td>Airborne position</td><td>1 852 m (1.0 NM) ≤ HPL &lt; 3 704 m (2.0 NM)</td><td>926 m (0.5 NM) ≤ μ &lt; 1 852 m (1.0 NM)</td><td>Barometric altitude</td><td>3</td></tr><tr><td>16</td><td>Airborne position</td><td>3.704 km (2.0 NM) ≤ HPL &lt; 18.52 km (10 NM)</td><td>1.852 km (1.0 NM) ≤ μ &lt; 9.26 km (5.0 NM)</td><td>Barometric altitude</td><td>2</td></tr><tr><td>17</td><td>Airborne position</td><td>18.52 km (10 NM) ≤ HPL &lt; 37.04 km (20 NM)</td><td>9.26 km (5.0 NM) ≤ μ &lt; 18.52 km (10.0 NM)</td><td>Barometric altitude</td><td>1</td></tr><tr><td>18</td><td>Airborne position</td><td>HPL ≥ 37.04 km (20 NM)</td><td>18.52 km (10.0 NM) ≤ μ</td><td>Barometric altitude</td><td>0</td></tr></table>
<table><caption>TABLE 6 – Tableaux des valeurs du FTC pour FTC ∈ [19, 31]</caption><thead><tr><th></th><th>Airborne velocity</th><th>Not applicable</th><th>Not applicable</th><th>Difference between "Barometric altitude" and "GNSS height (HAE) or GNSS altitude (MSL)" (2.3.5.7)</th><th>N/A</th></tr></thead><tbody><tr><td>19</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>20</td><td>Airborne position</td><td>HPL &lt; 7.5 m</td><td>μ &lt; 3 m and ν &lt; 4 m</td><td>GNSS height (HAE)</td><td>9</td></tr><tr><td>21</td><td>Airborne position</td><td>HPL &lt; 25 m</td><td>μ &lt; 10 m and ν &lt; 15 m</td><td>GNSS height (HAE)</td><td>8</td></tr><tr><td>22</td><td>Airborne position</td><td>HPL ≥ 25 m</td><td>μ &gt; 10 m or ν ≥ 15 m</td><td>GNSS height (HAE)</td><td>0</td></tr><tr><td>23</td><td>Reserved for test purposes</td><td></td><td></td><td></td><td></td></tr><tr><td>24</td><td>Reserved for surface system status</td><td></td><td></td><td></td><td></td></tr><tr><td>25 – 27</td><td>Reserved</td><td></td><td></td><td></td><td></td></tr><tr><td>28</td><td>Extended squitter aircraft emergency priority status</td><td></td><td></td><td></td><td></td></tr><tr><td>29</td><td>Reserved</td><td></td><td></td><td></td><td></td></tr><tr><td>30</td><td>Reserved</td><td></td><td></td><td></td><td></td></tr><tr><td>31</td><td>Aircraft operational status</td><td></td><td></td><td></td><td></td></tr></tbody></table>
# Annexe B Tableaux de structure des messages

<table><caption>TABLE 7 – Composition du message de position au sol</caption><thead><tr><th>Index binaire</th><th>Champs</th></tr></thead><tbody><tr><td>1</td><td>MSB</td></tr><tr><td>...</td><td>Format Type Code</td></tr><tr><td>5</td><td>LSB</td></tr><tr><td>6</td><td>MSB</td></tr><tr><td>12</td><td>Indicateur de mouvement</td></tr><tr><td>13</td><td>Statut</td></tr><tr><td>14</td><td>MSB</td></tr><tr><td>...</td><td>Latitude encodée avec CPR</td></tr><tr><td>20</td><td>LSB</td></tr><tr><td>21</td><td>Indicateur de temps UTC</td></tr><tr><td>22</td><td>Indicateur de format CPR</td></tr><tr><td>23</td><td>MSB</td></tr><tr><td>...</td><td>Latitude encodée avec CPR</td></tr><tr><td>39</td><td>LSB</td></tr><tr><td>40</td><td>MSB</td></tr><tr><td>...</td><td>Longitude encodée avec CPR</td></tr><tr><td>56</td><td>LSB</td></tr></tbody></table>
# Annexe C Encodage et décodage des altitudes, latitudes et longitudes

## Décodage de l'altitude

L'altitude est encodée dans un mot $b_a$ de 12 bits. Le 8ème bit de $b_a$ étant inutile dans notre cas, il ne doit pas être considéré. Le registre obtenu finalement est le suivant

$$ \mathbf{r}_a = [b_a^1, b_a^2, b_a^3, b_a^4, b_a^5, b_a^6, b_a^7, b_a^9, b_a^{10}, b_a^{11}, b_a^{12}]. $$

On notera $r_a$ la valeur entière non signée contenue de ce registre en considérant $b_a^1$ comme bit de poids fort. La valeur de l'altitude alt exprimée en pieds est obtenue comme

$$ \text{alt} = 25r_a - 1000. \qquad (3) $$

## Décodage de la longitude et de la latitude

L'encodage des latitudes et longitudes dans les trames ADS-B est effectué suivant un format appelé CPR. Ce format permet d'encoder des positions précises sur peu de bits (34 bits seulement par trames de position en vol). L'encodage CPR admet intrinsèquement une imprécision de 180 nœuds nautiques par trames. Afin de décoder avec une plus grande précision les longitudes et longitudes, il est nécessaire d'avoir

— soit deux trames consécutives ayant des bits indicateurs de format CPR différents,

— soit une position de référence de l'appareil à moins de 180 nœuds nautiques.

Nous ne considérerons dans un premier temps que le second cas. Ce cas est justifié si on fait l'hypothèse que l'appareil détecté était proche de la position de l'antenne de réception.

Dans les messages de position en vol, la latitude et la longitude de l'appareil sont encodées sur des mots de 17 bits. Ces registres sont notés $\mathbf{r}_{lon} = [r_{lon}^1, \dots, r_{lon}^{17}]$ et $\mathbf{r}_{lat} = [r_{lat}^1, \dots, r_{lat}^{17}]$. Aussi, nous noterons LAT et LON les valeurs entières contenues respectivement dans $\mathbf{r}_{lon}$ et $\mathbf{r}_{lat}$ avec $r_{lon}^1$ et $r_{lat}^1$ comme bits de poids fort.

Nous commencerons par le calcul de la **latitude**. Ce calcul comporte trois étapes.

1) calcul de la grandeur $D_{lat_i}$ :

$$ D_{lat_i} = \frac{360^{\circ}}{4N_Z - i} \qquad (4) $$

où $N_Z = 15$ est le nombre de latitudes géographiques considérées entre l'équateur et un pôle et $i$ est le bit **indicateur de format CPR**.

2) Calcul de $j$ :

$$ j = \left\lfloor \frac{\text{lat}_{\text{ref}}}{D_{\text{lat}_i}} \right\rfloor + \left\lfloor \frac{1}{2} + \frac{\text{MOD}(\text{lat}_{\text{ref}}, D_{\text{lat}_i})}{D_{\text{lat}_i}} - \frac{\text{LAT}}{2^{N_b}} \right\rfloor \qquad (5) $$

où $N_b = 17$ est le nombre de bits constituant le registre de latitude $\lfloor x \rfloor$ est la fonction renvoyant le plus petit entier $k$ tel que $k \le x$ et $\text{MOD}(x, y) = x - y \lfloor \frac{x}{y} \rfloor$.

3) Calcul de la latitude $\text{lat}$ :

$$ \text{lat} = D_{\text{lat}_i} \left( j + \frac{\text{LAT}}{2^{N_b}} \right) \qquad (6) $$
Nous finissons par le calcul de la **longitude**. Ce calcul comporte aussi trois étapes.

1) calcul de la grandeur $D_{lon_i}$ :

$$D_{lon_i} = \begin{cases} \frac{360^\circ}{N_L(\text{lat})-i} & \text{si } N_L(\text{lat}) - i > 0 \\ 360^\circ & \text{si } N_L(\text{lat}) - i = 0 \end{cases} \qquad (7)$$

où $i$ est le bit indicateur de format CPR, lat est la latitude calculée précédemment et $NL(x)$ est la fonction suivante

$$N_L(x) = \left\lfloor 2\pi \left[ \arccos \left( 1 - \frac{1 - \cos\left(\frac{\pi}{2N_z}\right)}{\cos^2\left(\frac{\pi}{180^\circ}|x|\right)} \right) \right]^{-1} \right\rfloor \qquad (8)$$

pour la plupart des $x$ à l'exception des points suivants :

$$N_L(0) = 59$$

$$N_L(87) = 2$$

$$N_L(87) = 2$$

$$N_L(x) = 1 \text{ si } |x| > 87.$$

Afin de garantir une implémentation efficace pour le temps réel, la fonction $N_L(x)$ est en général tabulée. Pour vous permettre de gagner du temps, cette fonction est fournie dans l'archive projet_adsb.zip et se nomme cprNL.

2) Calcul de $m$ :

$$m = \left\lfloor \frac{lon_{ref}}{D_{lon_i}} \right\rfloor + \left\lfloor \frac{1}{2} + \frac{\text{MOD}(lon_{ref}, D_{lon_i})}{D_{lon_i}} - \frac{\text{LON}}{2^{N_b}} \right\rfloor \qquad (9)$$

où $N_b = 17$ est le nombre de bits constituant le registre de latitude $\lfloor x \rfloor$ est la fonction renvoyant le plus petit entier $k$ tel que $k \le x$ et $\text{MOD}(x, y) = x - y \lfloor \frac{x}{y} \rfloor$.

3) Calcul de la longitude $lon$ :

$$lon = D_{lon_i} \left( m + \frac{\text{LON}}{2^{N_b}} \right) \qquad (10)$$
# Annexe D Tableaux des caractères

<table><caption>TABLE 8 – Tableaux des caractères</caption><thead><tr><th></th><th>b<sub>6</sub></th><th>0</th><th>0</th><th>1</th><th>1</th></tr><tr><th></th><th>b<sub>5</sub></th><th>0</th><th>1</th><th>0</th><th>1</th></tr></thead><tbody><tr><th>b<sub>4</sub></th><th>b<sub>3</sub></th><th>b<sub>2</sub></th><th>b<sub>1</sub></th><th></th><th></th></tr><tr><td>0</td><td>0</td><td>0</td><td>0</td><td></td><td></td></tr><tr><td>0</td><td>0</td><td>0</td><td>1</td><td>A</td><td>Q</td></tr><tr><td>0</td><td>0</td><td>1</td><td>0</td><td>B</td><td>R</td></tr><tr><td>0</td><td>0</td><td>1</td><td>1</td><td>C</td><td>S</td></tr><tr><td>0</td><td>1</td><td>0</td><td>0</td><td>D</td><td>T</td></tr><tr><td>0</td><td>1</td><td>0</td><td>1</td><td>E</td><td>U</td></tr><tr><td>0</td><td>1</td><td>1</td><td>0</td><td>F</td><td>V</td></tr><tr><td>0</td><td>1</td><td>1</td><td>1</td><td>G</td><td>W</td></tr><tr><td>1</td><td>0</td><td>0</td><td>0</td><td>H</td><td>X</td></tr><tr><td>1</td><td>0</td><td>0</td><td>1</td><td>I</td><td>Y</td></tr><tr><td>1</td><td>0</td><td>1</td><td>0</td><td>J</td><td>Z</td></tr><tr><td>1</td><td>0</td><td>1</td><td>1</td><td>K</td><td></td></tr><tr><td>1</td><td>1</td><td>0</td><td>0</td><td>L</td><td></td></tr><tr><td>1</td><td>1</td><td>0</td><td>1</td><td>M</td><td></td></tr><tr><td>1</td><td>1</td><td>1</td><td>0</td><td>N</td><td></td></tr><tr><td>1</td><td>1</td><td>1</td><td>1</td><td>O</td><td></td></tr></tbody></table>