このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ADS-B 取得データを使用した飛行機追跡
この例では、HDL コード生成およびハードウェア実行用に Automatic Dependent Surveillance - Broadcast (ADS-B) 送受信機を実装する方法を説明します。この例では、飛行機の追跡に使用できる ADS-B 拡張スキッタ メッセージを復号化します。この例の HDL 最適化モデルでは、HDL コード生成をサポートする Simulink® ブロックを使用して ADS-B 受信機を実装しています。このモデル例は、でリアルタイム処理に使用されます。これには、Communications Toolbox™ Support Package for Xilinx® Zynq®-Based Radio が必要です。
はじめに
ADS-B は航空交通管理および制御監視システムです。ブロードキャスト メッセージ (1 秒あたり約 1 回) には、位置と速度を含む飛行情報が含まれます。ADS-B 技術と送信のモードの概要については、[1] を参照してください。HDLRx サブシステムは HDL コードの生成用に最適化されます。取得した受信信号は、受信機 (HDLRx サブシステム) のフロント エンドにストリーミングされます。受信機のストリーミング出力がバッファーされて関数 MapResults MATLAB® に渡され、出力が表示されます。
例の構造
モデルはノーマルとアクセラレータの両方のモードをサポートします。ADS-B 受信機モデルの最上位構造を次の図に示します。
受信機の入力データは、Zynq® プラットフォームで実行するを使用して取得されます。取得データは、サンプリング レート 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_ | のうち小さい方の値です。
ゲイン ブロックは、受信した入力を 12 ビットから 16 ビットの語長に変換します。
"|L|+0.4|S| アルゴリズム" の実装については、以下のモデルを参照してください。
2.Threshold Calculation
Threshold Calculation サブシステムは、信号エネルギーを計算してスケーリング係数を適用し、プリアンブル検出のしきい値を作成します。移動平均フィルターは、振幅値で操作する 32 の係数をもつシリアル FIR フィルター アーキテクチャです。FIR フィルターの係数を選択して、受信した信号の平均エネルギーを検出します。この例では、5 で信号エネルギーをスケーリングして、有効な ADS-B プリアンブルを検出します。FIR フィルターの詳細については、Discrete FIR Filter (Simulink)を参照してください。
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 つのビットの合計を検出します。次に、その合計を比較して、元のビット値を決定します。出力の有効な信号は、4 番目のサイクルごとにアサートされ、1 MHz のビット シーケンスに一致させます。
6.Compute CRC and Frame Validation
このサブシステムは、各 88 ビットのメッセージの 24 ビット チェックサム内の不一致をチェックします。CRC ブロックには、どのビットがチェックサムであるかを決定するフレーム境界の指標が必要です。Timing Control ブロックから生成された ActivateBP 信号の立ち上がりエッジは、フレームの先頭を示し、立ち下がりエッジはフレームの末尾を示します。開始信号は復調レイテンシと一致させるために遅延されます。ブロック出力の err 信号がゼロの場合、フレームは有効な ADS-B メッセージです。サブシステムは、メッセージに CRC 誤差がないことを確認するまでメッセージ ビットをバッファーします。
マップの起動とデータのログ記録
マップを起動し、2 つのスライダー スイッチ (マップの起動とデータのログ記録) を使用してテキスト ファイルのログ記録を開始することができます。
Launch Map - 追跡している航空便を表示できるマップを起動します。メモ: この機能を使用するには Mapping Toolbox™ ライセンスが必要です。
Data Logging - 取得したデータを TXT ファイルに保存します。保存されたデータは、以降に後処理で使用できます。
結果と表示
HDLRx サブシステムは、ADS-B データを復調して復号化し、出力は Deserializer1D ブロックと MapResults MATLAB 関数を経由してストリーミングされます。これによって、航空機についての 16 進数の出力情報が作成されます。各拡張スキッタ モード S パケットには、飛行機に関する部分的な情報 (飛行機 ID、フライト ID、高度、速度および位置のいずれか) が含まれ、テーブルは複数のメッセージから設定されます。出力は、以下のダイアグラムに示されるように取得されます。パケットの統計には、検出されたパケット数、正しく復号化されたパケット数、およびパケット エラー レート (PER) が含まれます。これらの飛行機の詳細については、の例から送信された値と一致します。
HDL コード生成と合成結果
パイプライン レジスタがモデルに追加されており、HDLRx サブシステムに長いクリティカル パスがないことを確認できます。HDLRx サブシステムから生成された HDL コードは、デバイス 7z045ffg900-2 を搭載した Zynq FPGA 上で Xilinx® Vivado® を使用して合成されており、その設計は 264.2 MHz クロック周波数になります。これは、リアルタイムの ADS-B 信号を復調するのに十分です。生成された HDL コードは、リアルタイムの例 でテストおよび検証されます。この例で参照する HDL コードのチェックと生成を行うには、HDL Coder™ ライセンスが必要です。以下の表に、この例の合成結果を示します。
makehdl および makehdltb コマンドを使用して HDL コードと HDLRx のサブシステム用テスト ベンチを生成できます。HDL コードを生成するには、次のコマンドを使用します。
makehdl('commadsbrxhdl/HDLRx')
テスト ベンチを生成するには、次のコマンドを使用します。
makehdltb('commadsbrxhdl/HDLRx')
参考文献
International Civil Aviation Organization, Annex 10, Volume 4. Surveillance and Collision Avoidance Systems.
Marvin E. Frerking, Digital Signal Processing in Communication Systems, Springer Science Business Media, New York,1994.