Main Content

ADS-B 取得データを使用した飛行機追跡

この例では、HDL コード生成およびハードウェア実行用に Automatic Dependent Surveillance - Broadcast (ADS-B) 受信機を実装する方法を説明します。この例では、飛行機の追跡に使用できる ADS-B 拡張スキッタ メッセージを復号化します。この例の HDL 最適化モデルでは、HDL コード生成をサポートする Simulink® ブロックを使用して ADS-B 受信機を実装しています。このモデル例は、HW/SW Co-Design Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364 (SoC Blockset)でリアルタイム処理に使用されます。これには、SoC Blockset™ Support Package for Xilinx® Devices が必要です。

はじめに

ADS-B は航空交通管理および制御監視システムです。ブロードキャスト メッセージ (1 秒あたり約 1 回) には、位置と速度を含む飛行情報が含まれます。ADS-B 技術と送信のモードの概要については、[1] を参照してください。"HDLRx" サブシステムは HDL コード生成用に最適化されています。取得した受信信号は、受信機 ("HDLRx" サブシステム) のフロント エンドにストリーミングされます。受信機のストリーミング出力がバッファーされて "MapResults" MATLAB® 関数に渡され、出力が表示されます。

例の構造

モデルはノーマルとアクセラレータの両方のモードをサポートします。ADS-B 受信機モデルの最上位構造を次の図に示します。

受信機の入力データは、Zynq® プラットフォームで実行されているHW/SW Co-Design Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364 (SoC Blockset)を使用して取得されます。取得データは、サンプル レート 4 MHz で受信したベースバンド信号を表します。データには、8 フレームの拡張スキッタ メッセージが含まれます。ADS-B 送信機は、2 ビットのパルス位置変調を使用して 112 ビットの拡張スキッタ メッセージを変調し、16 ビットの接頭辞を追加します。その後、4 MHz のデータを生成するために、240 ビットの各メッセージはゼロ パディングされ、2 でアップサンプリングされます。

次の図は、"HDLRx" サブシステムの構造の詳細です。

ここにリストしたサブシステムの詳細については次の各セクションで説明します。

1. Magnitude Calculation - 受信した入力信号の複素絶対値を検出する

2.Threshold Calculation - 受信した入力信号の強度に基づいてしきい値を計算する

3.Correlation with Preamble - 受信した信号と基準信号との相関をとってプリアンブルを検出する

4.Timing Control - 受信機にタイミング同期を指定する

5.Bit Process - PPM 復調を使用してシンボルを復調する

6.Compute CRC and Frame Validation - CRC 誤差のチェックによってフレームを検証する

HDL 最適化 ADS-B 受信機

1. Magnitude Calculation

"Magnitude Calculation" サブシステムへの入力は、同相 (実数) と直交 (虚数) 位相のサンプルです。このサブシステムは複素数の絶対値を出力します。$\sqrt(I^2+Q^2)$ は、[2] の 238 ページで説明されている $|L|+0.4*|S|$ アルゴリズムで近似できます。

$$\sqrt{I^2+Q^2} = |L|+0.4*|S|$$

ここで、

$L$$I$ または $Q$ の大きい方の値です。

また、$S$$I$ または $Q$ の小さい方の値です。

Gain ブロックは、受信した入力を 12 ビットから 16 ビットの語長に変換します。

$|L|+0.4|S|$ アルゴリズムの実装については、次のモデルを参照してください。

2.Threshold Calculation

"Threshold Calculation" サブシステムは、信号エネルギーを計算してスケーリング係数を適用し、プリアンブル検出のしきい値を作成します。移動平均フィルターは、振幅値で操作する 32 の係数をもつシリアル FIR フィルター アーキテクチャです。FIR フィルターの係数を選択して、受信した信号の平均エネルギーを検出します。この例では、5 で信号エネルギーをスケーリングして、有効な ADS-B プリアンブルを検出します。FIR フィルターの詳細については、Discrete FIR Filterを参照してください。

3.Correlation with Preamble

"Correlation with Preamble" サブシステムでは、ピーク検出フィルターを使用して、受信信号と ADS-B リファレンス/プリアンブル シーケンス [1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0] との相関をとります。ピーク検出フィルターは、プリアンブル シーケンスに一致する係数を使用して構成されたシリアル FIR フィルター アーキテクチャです。プリアンブル相関は、可能性のある ADS-B 伝送を特定し、ビット検出アルゴリズムを最初のメッセージのビットと合わせます。プリアンブルは、ピーク振幅がスケーリングされたしきい値を超えると検出されます。プリアンブルが検出されると、相関値は input(SyncCorr) として "Timing Control" ブロックに渡されます。

4.Timing Control

"Timing Control" ブロックは、プリアンブルを検出し、"Bit Process" ブロックと "Compute CRC and Frame Validation" ブロックにフレームの先頭と末尾、およびリセットのステータスを示す制御信号 ActivateBP と Reset を生成するステート マシンです。

5.Bit Process

"Bit Process" サブシステムは、復調して 4 MHz の受信信号を 1 MHz のビット シーケンスにダウン コンバートします。各データ ビットは 4 つの PPM ビットで表現されます。復調するために、ブロックは、各 4 つの組の最初の 2 つのビットと最後の 2 つのビットの合計を検出します。次に、その合計を比較して、元のビット値を決定します。出力の Valid 信号は、4 番目のサイクルごとにアサートされ、1 MHz のビット シーケンスに一致させます。

6.Compute CRC and Frame Validation

このサブシステムは、各 88 ビットのメッセージの 24 ビット チェックサム内の不一致をチェックします。CRC ブロックには、どのビットがチェックサムであるかを決定するフレーム境界の指標が必要です。"Timing Control" ブロックから生成された ActivateBP 信号の立ち上がりエッジはフレームの先頭を示し、立ち下がりエッジはフレームの末尾を示します。開始信号は復調レイテンシと一致させるために遅延されます。ブロック出力の err 信号がゼロの場合、フレームは有効な ADS-B メッセージです。サブシステムは、メッセージに CRC 誤差がないことを確認するまでメッセージ ビットをバッファーします。

マップの起動とデータのログ記録

マップを起動し、2 つのスライダー スイッチ (Launch Map と Data Logging) を使用してテキスト ファイルのログ記録を開始できます。

Launch Map - 追跡している航空便を表示できるマップを起動します。メモ: この機能を使用するには Mapping Toolbox™ ライセンスが必要です。

Data Logging - 取得したデータを TXT ファイルに保存します。保存されたデータは、以降に後処理で使用できます。

結果と表示

"HDLRx" サブシステムは、ADS-B データを復調して復号化し、出力は "Deserializer1D" ブロックと MATLAB 関数 "MapResults" を使用してストリーミングされます。これによって、航空機についての 16 進数の出力情報が作成されます。各拡張スキッタ モード S パケットには、飛行機に関する部分的な情報 (飛行機 ID、フライト ID、高度、速度および位置のいずれか) が含まれ、テーブルは複数のメッセージから設定されます。出力は、次の図に示されるように取得されます。パケットの統計には、検出されたパケット数、正しく復号化されたパケット数、およびパケット エラー レート (PER) が含まれます。これらの飛行機の詳細は、HW/SW Co-Design Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364 (SoC Blockset)の例から送信された値と一致します。

HDL コード生成と合成結果

"HDLRx" サブシステムに長いクリティカル パスがないように、パイプライン レジスタがモデルに追加されています。"HDLRx" サブシステムから生成された HDL コードは、デバイス 7z045ffg900-2 を搭載した "Zynq" FPGA 上で Xilinx® Vivado® を使用して合成されており、その設計は "264.2 MHz" クロック周波数になります。これは、リアルタイムの ADS-B 信号を復調するのに十分です。生成された HDL コードは、リアルタイムのHW/SW Co-Design Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364 (SoC Blockset)の例でテストおよび検証されます。この例で参照している HDL コードをチェックして生成するには、HDL Coder™ のライセンスが必要です。次の表に、この例の合成結果を示します。

makehdl および makehdltb コマンドを使用して HDL コードと HDLRx サブシステム用テスト ベンチを生成できます。HDL コードを生成するには、次のコマンドを使用します。

makehdl('commadsbrxhdl/HDLRx')

テスト ベンチを生成するには、次のコマンドを使用します。

makehdltb('commadsbrxhdl/HDLRx')

参照

  1. International Civil Aviation Organization, Annex 10, Volume 4.Surveillance and Collision Avoidance Systems.

  2. Marvin E. Frerking, Digital Signal Processing in Communication Systems, Springer Science Business Media, New York,1994.