8
Analog Dialogue 49-12 1 製造までの4つのステップ: モデル・ベース設計で実現するソフトウェア無線 Part 4Zynq SoC向けSDRキットとSimulinkによる コード生成のワークフローに基づくラピッド・プロトタイピング 著者:Mike Donovan/Andrei Cozma/Di Pu はじめに 本シリーズの Part 1 3 では、まず「 Zynq ® -7000 All Programmable SoC (以下、Zynq SoC )」をベースとし たソフトウェア無線( SDR Software-defined Radio 向けのラピッド・プロトタイピング・プラットフォー ムを紹介しました 1 。それに続いて、「 MATLAB 」と Simulink 」を使用し、 ADS-B Automatic Dependent Surveillance-Broadcast :放送型自動従属監視)信号を正 しく処理してデコード(復号化)するためのアルゴリズム の開発手順を説明しました 2 。さらに、シミュレーション を使用してそのアルゴリズムを検証する方法と、SDR プラ ットフォームから取得したライブ・データを使用して検証 する方法について解説を行いました 3 。このようにして一 連の作業を行ってきたわけですが、最終的な目標は、 C 言語のコードと HDL のコードに変換可能で、 SDR プラッ トフォームのソフトウェア / ハードウェア・インフラにそ のまま統合できる検証済みのモデルを作成することです。 Part 2 (「 MATLAB Simulink によるモード S 信号の検 出とデコード」)で説明した Simulink モデルは、各種 ハードウェアに対する十分な忠実度を備えたシミュレー ション・モデルです。そのような忠実度を備えることか ら、対象となるシステムの設計によって、 ADS-B のメッ セージが正しくデコードされることを保証することが可 能になります。本稿では、この Simulink モデルを出発点 として本シリーズの最後の作業について説明します。そ れを通して、 Zynq SoC をベースとした SDR 向けのラピ ッド・プロトタイピング・プラットフォーム上で動作す るレシーバ回路を構築します。 Part 1 3 と同様に、レ シーバ回路の開発には、MATLAB Simulink を使いこな せるだけのスキル、Zynq SoC ベースの無線用ハードウェ アに関する知識、ソフトウェアとハードウェアを統合す るためのスキルが必要です。 本稿で説明する作業の内容は、以下のようにまとめるこ とができます。 • Simulink モデルを、Zynq SoC FPGA ファブリックとプ ロセッシング・システム(ARM ® Cortex-A9 )のそれぞ れをターゲットとする機能に分割する より高い性能が得られるHDL コードが生成されるように するために、Simulink モデルに設計変更を加える • ADS-B 用レシーバのアルゴリズムに対応するHDL のソー ス・コードとC 言語のソース・コードを生成する 生成されたソース・コードを、 Zynq SoC をベースとす る無線プラットフォームの設計に適用する ターゲットとするハードウェアで航空機からのライブ信 号を取得し、完成した設計のテストを行う これらの作業を終えれば、完全に検証されたSDR システム を構築できたことになります。このシステムには、 Sim- ulink ベースの ADS-B モデルから自動生成されたC 言語と HDL のコードが適用されています。民間航空機からのラ イブ信号をリアルタイムに受信し、デコードを実施する ことができます。 ハードウェア、ソフトウェア向けにモデルを分割 まずは、実装用のコードを生成するための最初の作業を 行います。この作業とは、設計した回路を、 Zynq SoC が備えるプログラマブル・ロジックとプロセッシング・ システムのそれぞれで実行する機能に分割することです。 一般に、分割作業は、回路における各コンポーネントの処 理の要件と、必要な実行レートや実行時間を洗い出すこ とから始めます。演算を多用し、サンプル・レートでリ アルタイムに実行する必要のある処理(データの変復調 アルゴリズムなど)を担うコンポーネントは、プログラ マブル・ロジックに実装すべきです。それよりも処理負 荷の軽いタスク(データのデコードやレンダリング、シ ステムの監視/ 診断など)は、ソフトウェアによる実装が 向いています。その他の検討事項としては、演算で使用 するデータ型や、処理の複雑さ、入出力データの精度な どがあります。プログラマブル・ロジックをターゲットと する演算は、いずれも固定小数点、整数、またはBoolean のデータ型を使用します。三角関数や平方根といったより 複雑な演算には、利用可能なハードウェア・リソースに よって効率的な実装を行うために、近似が適用されます。 このような制約は、いずれも精度の低下につながるほか、 システムの機能に悪影響を及ぼす恐れもあるため、正し い評価を行ったうえで実装に進む必要があります。一方、 プロセッシング・システムをターゲットとするコンポー ネントは浮動小数点を扱うことができます。どのような 複雑な演算でも高い忠実度で実装できますが、一般に、 実行速度は遅くなります。 こうした制約をガイドラインとしてとらえると、ADS-B 信号のデコードに使用するアルゴリズムの分割方法が明 確になります。I/Q サンプル(サンプリングによって得ら れたデータ)のフロント・エンドにおける処理からチェッ クサムの計算まで、すべては ModeS_Simulink_Decode. slx というモデルに含まれています。同モデルのDetector ブロックの機能は、 Zynq SoC のプログラマブル・ロジ ックに実装するのが適切です(図 1 )。一方、 Modified Buffer Decode & Display の両ブロックで実現するメッ セージ・ビットのデコードは、プロセッシング・システ ムに容易に実装できます。

製造までの4つのステップ:モデル・ベース設計で … Analo Dialoue 49-12 当初、ModeS_Simulink_Decode.slx モデルは上記のすべ ての条件を満たしているわけではありませんでした。問

  • Upload
    dokiet

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Analog Dialogue 49-12 1

製造までの4つのステップ

モデルベース設計で実現するソフトウェア無線Part 4Zynq SoC向けSDRキットとSimulinkによる

コード生成のワークフローに基づくラピッドプロトタイピング

著者Mike DonovanAndrei CozmaDi Pu

はじめに

本シリーズの P a r t 1~ 3ではまず「 Z y n q reg- 7 0 0 0 A l l Programmable SoC(以下Zynq SoC)」をベースとしたソフトウェア無線(S D RS o f t w a r e - d e f i n e d R a d i o)向けのラピッドプロトタイピングプラットフォームを紹介しました 1それに続いて「 M AT L A B」と「Simul ink」を使用しADS-B(Automat i c Dependen t Survei l lance-Broadcast放送型自動従属監視)信号を正しく処理してデコード(復号化)するためのアルゴリズムの開発手順を説明しました 2さらにシミュレーションを使用してそのアルゴリズムを検証する方法とSDRプラットフォームから取得したライブデータを使用して検証する方法について解説を行いました 3このようにして一連の作業を行ってきたわけですが最終的な目標はC言語のコードとHDLのコードに変換可能でSDRプラットフォームのソフトウェア ハードウェアインフラにそのまま統合できる検証済みのモデルを作成することです

Pa r t 2(「MATLABとSimul inkによるモードS信号の検出とデコード」)で説明したS i m u l i n kモデルは各種 ハードウェアに対する十分な忠実度を備えたシミュレーションモデルですそのような忠実度を備えることから対象となるシステムの設計によってADS-Bのメッセージが正しくデコードされることを保証することが可能になります本稿ではこのSimul inkモデルを出発点として本シリーズの最後の作業について説明しますそれを通してZ y n q S o CをベースとしたS D R向けのラピッドプロトタイピングプラットフォーム上で動作するレシーバ回路を構築しますP a r t 1~ 3と同様にレ シーバ回路の開発にはMATLABとSimul inkを使いこなせるだけのスキルZynq SoCベースの無線用ハードウェアに関する知識ソフトウェアとハードウェアを統合するためのスキルが必要です

本稿で説明する作業の内容は以下のようにまとめることができます

bull SimulinkモデルをZynq SoCのFPGAファブリックとプロセッシングシステム(ARM reg Cor tex-A9)のそれぞれをターゲットとする機能に分割する

bull より高い性能が得られるHDLコードが生成されるようにするためにSimul inkモデルに設計変更を加える

bull ADS-B用レシーバのアルゴリズムに対応するHDLのソースコードとC言語のソースコードを生成する

bull生成されたソースコードをZynq SoCをベースとする無線プラットフォームの設計に適用する

bull ターゲットとするハードウェアで航空機からのライブ信号を取得し完成した設計のテストを行う

これらの作業を終えれば完全に検証されたSDRシステムを構築できたことになりますこのシステムにはSim-ul inkベースのADS-Bモデルから自動生成されたC言語とHDLのコードが適用されています民間航空機からのライブ信号をリアルタイムに受信しデコードを実施することができます

ハードウェアソフトウェア向けにモデルを分割

まずは実装用のコードを生成するための最初の作業を行いますこの作業とは設計した回路をZynq SoCが備えるプログラマブルロジックとプロセッシングシステムのそれぞれで実行する機能に分割することです

一般に分割作業は回路における各コンポーネントの処理の要件と必要な実行レートや実行時間を洗い出すことから始めます演算を多用しサンプルレートでリアルタイムに実行する必要のある処理(データの変復調アルゴリズムなど)を担うコンポーネントはプログラマブルロジックに実装すべきですそれよりも処理負荷の軽いタスク(データのデコードやレンダリングシステムの監視 診断など)はソフトウェアによる実装が向いていますその他の検討事項としては演算で使用するデータ型や処理の複雑さ入出力データの精度などがありますプログラマブルロジックをターゲットとする演算はいずれも固定小数点整数またはBooleanのデータ型を使用します三角関数や平方根といったより複雑な演算には利用可能なハードウェアリソースによって効率的な実装を行うために近似が適用されますこのような制約はいずれも精度の低下につながるほかシステムの機能に悪影響を及ぼす恐れもあるため正しい評価を行ったうえで実装に進む必要があります一方プロセッシングシステムをターゲットとするコンポーネントは浮動小数点を扱うことができますどのような複雑な演算でも高い忠実度で実装できますが一般に実行速度は遅くなります

こうした制約をガイドラインとしてとらえるとADS-B信号のデコードに使用するアルゴリズムの分割方法が明確になります I Qサンプル(サンプリングによって得られたデータ)のフロントエンドにおける処理からチェックサムの計算まですべてはModeS_S imul ink_Decode s lxというモデルに含まれています同モデルのDetec torブロックの機能はZ y n q S o Cのプログラマブルロジックに実装するのが適切です(図1)一方M o d i f i e d BufferとDecode amp Disp layの両ブロックで実現するメッセージビットのデコードはプロセッシングシステムに容易に実装できます

Analog Dialogue 49-12 2

当初ModeS_Simul ink_Decode s lxモデルは上記のすべての条件を満たしているわけではありませんでした問題があったのはCalcCRCブロックの中で受信したビットデータと算出されたチェックサムとを比較する部分ですそこでこのブロックをDetec to rブロックの外部に移動し最終的にはC言語で実装することにしましたこのような変更を加えたModeS_ADI_CodeGen s lxモデルを使用してH D Lのコードを生成しました(図 3)手作業でコーディングを行うのとは大きく異なりわずか数分で数千行のHDLコードを生成できますHDL Coderによって生成されたソースコードはSimul inkモデルのビット精度とサイクル精度をそのまま引き継いでいますこれはモデルベース設計が生産性に対してもたらす主要なメリットの 1つですつまり生成されたコードはSimul inkモデルを正確に変換したものになるということです

またHDLのコードは読みやすくトレースが可能な状態で生成されるため技術者は設計したモデルと生成されたコードを容易に対応づけることができます以下に示す方法によってこのようなことが実現されています

bullモデルの階層がH D Lコードのファイルでも維持されるこの例ではトップレベルのブロックの名前がD e t e c t o r v h dで次の階層にあるサブシステムの名前がC a l c N F v h dB i t _ P r o c e s s v h dといった具合になっている

bull モデルで使用したブロック名ポート名信号名データ型複雑さが生成後のコードにも踏襲される

モデルとソースコードはリンクしておりSimul inkモデル内のブロック上でクリックすると生成されたHDLコードに自動的に移動できます同様に生成された コード内のハイパーリンクをクリックするとSimul inkモデルが開きコードのその部分に対応するブロックが強調表示されます

図 3 M o d e S _ A D I _ C o d e G e n s l xから 生成されたH D Lのソースコード

クロックの高速化が可能なHDLコードの生成に

向けADS-Bモデルを最適化

S i m u l i n kモデルからは正しく機能するH D Lコードが生成されますが最初の生成結果で満足する設計者はほとんどいません速度や面積の制約を満たせていないことが多いからですそのため望ましい結果を得るためにSimul inkモデルの最適化が行われることになりますモデルの最適化を行ったらシミュレーションを実行し加えた変更によってアルゴリズムに悪影響が及んでいないことを確認しますSimul inkとコードの自動生成がもたらす大きなメリットはこのようにモデルに対する変

図 1 M o d e S _ S i m u l i n k _ D e c o d e s l xにおける F P G AとC o r t e x - A 9への処理の分割

アナログデバイセズ(ADI)は以下に示す内容を実装したSimul inkモデルのファイルをGitHubリポジトリで提供しています 4

SimulinkモデルからHDLコードを生成する

M o d e S D e c o d e r モ デ ル の D e t e c t o r ブ ロ ッ クはC a l c S y n c C o r rC a l c N F S y n c A n d C o n t r o lB i t -ProcessCalcCRCFameDetec tの各サブシステムから構成されています(図2)この回路を基にMathWorks社の「HDL Coder」 5を使用してHDLのソースコードを生成します

図 2 H D Lコードの生成に使用するD e t e c t o rブロック

H D L C o d e rでH D Lコードを正しく生成するにはS i m -ul inkモデルがいくつかの条件を満たしている必要があります最も重要な条件を以下に挙げます

bull H D Lコードの生成をサポートするブロックを使用するH D L C o d e rは約2 0 0のS i m u l i n kブロックに対するコードの生成をサポートしている 6Detec to r回路の場合Sta te f lowダイアグラムやDigi ta l F i l t e rブロックを含むすべてのブロックがH D Lコードの生成をサポートしている

bull 固定小数点のデータ型を使用するDetec tor回路では信号のデータ型として12ビット24ビットBoo leanを使用する 1 2ビットのデータ型は A D Iの R Fアジャイルトランシーバ(R F A g i l e Tr a n s c e i v e r T M)I C「A D 9 3 6 1」が備えるA Dコンバータの分解能と同じである

bull スカラー信号またはベクトル信号を使用するベクトル信号はマルチチャンネルの信号またはリソースの共有に使用できる

bull モデル内で代数ループは使用しないHDL Coderは代数ループの条件を含むモデルについてはHDLコードの生成をサポートしていない

Analog Dialogue 49-12 3

更を行ってH D Lコードを再生成できる点ですこの方法の方がHDLのソースコードを変更するよりもずっと簡単でミスも生じにくくなりますH D Lのソース コードに直接手を加えるとアルゴリズムに悪影響が及ぶ恐れがあります

本稿の回路の場合モデルから生成されたH D Lコードは比較的低いクロックレートで実行するため使用するFPGAファブリックに簡単に適合しましたこういう ケースは初期設計の段階ではよくありますHDL Coderが備えるツールで解析したところこのモデルのクリティカルパスは I Qサンプルの入力からサブシステムであるCalcCRCの最初のレジスタまででしたこのような回路ではパイプラインレジスタを挿入する方法によってクロック速度を高めるということがよく行われます(図4)パイプラインを挿入すると処理全体の遅延が大きくなる代わりに信号処理の間のパスが短くなります多くの場合このトレードオフは許容されるはずですクロックレートを高められるのであれば遅延が多少増加しても大きな代償にはならないからです

図 4 パイプラインレジスタを挿入したD e t e c t o r回路

このようにサブシステム間のパイプラインレジスタによってクロックレートを向上することができましたただDigi ta l F i l t e rブロックにおいて適切なアーキテクチャを選択すればクロックレートをさらに高めることができます多くのSimul inkブロックではアーキテクチャについて選択肢が用意されているためそれにより回路の速度や面積を最適化できるようになっていますノイズフロアとプリアンブルのコリレーションの計算に使用されるデジタルフィルタの場合出力乗算器をパイプライン化することでデジタルフィルタ内のクリティカルパスが短くなり回路のクロック レートを高めることができます(図5)

図 5 D i g i t a l F i l t e rブロックでは H D Lブロックに関する選択が行える

パイプラインに関する2つの簡単な変更を加えることで生成されたHDLコードは140MHzのクロックレートに対応できるものになりましたこれはコード生成ツールを利用する技術者にとっては有益な教訓になるでしょうその教訓とはハードウェアの設計原則に関するちょっとした知識をモデルに適用するだけで生成されるコードに対して大きな改善をもたらすことができるということですこの例の回路をさらに最適化することも可能ですがそこまでは行いませんでしたこの例ではタイミングとリソースに関する目標が比較的シンプルだったためこの時点のHDLコードによって十分にそれらを満たすことができていたからです

従来無線システムの設計では開発時間の大部分をHDLコードのテストとデバッグが占めていました実はここまでに示したモデルベース設計ではシミュレーションとコード生成の対象となるモデルの開発により多くの時間を費やしていますただし開発工程の全体を見れば時間は大幅に短縮されています生成されたソースコードの動作がシミュレーションで検証済みの動作と正確に一致するからです組み込みハードウェア上ではごくわずかのデバッグ作業しか必要ありませんでした

MATLAB CoderでCコードを生成する

H D Lのコードを生成する場合と同様に「 M AT L A B Coder」 7によってこの回路のデコード機能を実現するC言語のコードを生成するにはいくつかの条件を満たす必要があります最も重要な条件は次の2つです

bull M AT L A B C o d e rがサポートしている関数を使用するMATLAB CoderはMATLAB言語のほぼすべてに加えさまざまなツールボックス 8をサポートしているそれでもモデルの開発時にMATLAB Coderがサポートしていない関数を使用してしまうことはあり得るそのためMATLAB Coderがサポートしていない関数を検出するための「MATLAB Code Genera t ion Readiness Too l(コード生成の準備状態ツール)」 9などのツールが提供されている

bull MATLAB変数を宣言した後にそのサイズや型は変更しないこれは生成されたコードの中でメモリが正しく割り当てられるようにするために必須の条件である

MATLABのコードからC言語のコードを生成するための最も簡単な方法は新しいM AT L A B C o d e rプロジェクトを開くことですこれはMATLABツールストリップの 「アプリケーション」タブで行うことができますMAT-LAB Coderプロジェクトの最終的な出力結果を図6に示しました

Analog Dialogue 49-12 4

図 6 D e c o d e B i t s _ A D I mに対応する M AT L A B C o d e rプロジェクト

このプロジェクトにおいてトップレベルのMATLAB関数はDecodeBi t s_ADI mですユーザーはこの関数に必要なデータ型とサイズを入力引数として指定する必要があります図6を見るとこの関数の入力引数は112ビットのBoolean型データと2つの倍精度の値(ユーザーの現在の緯度と経度用)であることがわかりますD e -c o d e B i t s _ A D I mの出力のサイズとデータ型(北方向の速度用の n V東方向の速度用の e V高度用の a l tなど)はM AT L A B C o d e rによって自動的に定められますMATLAB CoderはトップレベルのエントリポイントファイルであるDecodeBits_ADImから呼び出さ

れるその他すべての関数(AltVelCalc_ADImLatLong-C a l c _ A D I mなど)を検索しデコード用のアルゴリズム全体に対応するC言語のソースコードを生成します

MATLAB Coderによって生成されるのはMATLABで記述した機能をそのままC言語に変換したコードですHDLコードを生成する場合と同様にMATLAB Coderによって生成されるソースコードは読みやすくトレースが可能ですそのため技術者は元のMATLABコードと生成されたCコードの間の関係を容易に把握することができますこの例のCコードはMATLABコマンドプロンプトから生成可能ですまた任意のANSI Cコンパイラでコンパイルすることができます

HDLコードをプラットフォームに配備する

ここまでの作業では最初に設計した回路をZynq SoCのプログラマブルロジックとプロセッシングシステムで実行する機能に分割しました続いてHDLC言語のコード生成に向けて回路の最適化を行いました最適化した回路が正しく動作し性能面の条件を満たすことをシミュレーションで確認したらこの設計をSDR向けのハードウェアプラットフォームに配備(デプロイ)しシステムの機能を実際の条件下で検証します

検 証 を 行 う た め に A D I の S D R プ ラ ッ ト フ ォ ー ム「A D - F M C O M M S 3 - E B Z」 1 0を使用しますこのボードにはA D IのL i n u xディストリビューションを搭載するXil inx社のボード「ZC706」 11を接続しています

A D - F M C O M M S 3 - E B ZにはA D Iが提供するオープン ソースのHDLリファレンス設計「Vivado」が付属しています 1 2このリファレンス設計には構成(コンフィギ

図7 HDLリファレンス設計のブロック図

FIFO

AD9361用のIP

プログラマブルロジック

プロセッシングシステム(Cortex-A9)

Linux

Zynq SoC

16ビット

64ビット

64ビットデータのパック

FIFO

FIFO

Rx

LVD

Sインターフェース

Tx

DMA

DMA

HDMI

I2C

データクロック2456 MHz

データのアンパック

ユーザー空間

カーネル

カーネルドライバ

カーネルドライバ

libIIOユーザー空間の

アプリケーション

DDRコントローラEthernet

割り込みコントローラI2CSPI

タイマー

AXI4-Stream

AXI4-Lite

16ビット 16ビット

16ビット

Analog Dialogue 49-12 5

ュレーション)とA D - F M C O M M S 3 - E B Z上のA D 9 3 6 1との間のデータ送受信に必要なすべての IPブロックが含まれています図7にこのH D Lリファレンス設計のブロック図を示しました

AD9361用の I PコアはA D 9361とZynq SoCの間でデータを送受信するためのLV D Sインターフェースと回路のその他の部分のデータインターフェースを実現しますAD9361用 IPとDDRメモリの間の高速データ転送にはDMAブロックが使われますAD9361用 IPブロックに対するデータインターフェースは受信用と送信用にそれぞれ4本のデータラインを備えていますこれらはAD9361の2個の受信チャンネルと2個の送信チャンネルの I Qデータに対応しています各データラインは1 6ビット幅ですシステム内のデータ転送をより効率良く行うために送受信データはDMAブロックによって管理される64ビット幅のバスにパッキングされますパックとアンパックを行うブロックによりAD9361用IPにつながる16ビットの並列データラインがDMAに接続されます

A D S - BモデルのH D LコードをS D RプラットフォームにおいてHDLを適用可能な既存のインフラに配備するにはデータパスに挿入できる IPコアを構築する必要がありますこれによって受信した信号をリアルタイムに処理し得られたデータをソフトウェアのレイヤに転送しますこのような配備の作業は難易度が高く時間がかかることがよくありますHDLで設計した機能を細部にわたって理解するだけでなくHDLのプログラミングについての十分なスキルも必要になるからですこの作業を簡素化するためにMathWorks社はHDL Coderに「HDLワークフロー アドバイザー」というユーティリティを用意しています一方ADIはSDRプラットフォームであるAD-FMCOMMS3-EBZと「AD-FMCOMMS2-EB Z」Xil inx社のZC706を対象としたボードサポートパッケージ(BSP)を提供しています 13

HDLワークフロー アドバイザーはSimul inkモデルからH D Lコードを生成するために必要な作業を正しい手順で進められるようにユーザーを導いてくれますユー ザーは「ASICFPGA」「FPGA-in-the-Loop」「IP Core Genera t ion( IPコアの生成)」といった複数の選択肢の中からターゲットとするワークフローを選択できますターゲットとなるプラットフォームとしてはXilinx社の評価用ボードAltera社の評価用ボードまたはSDRプラットフォームであるFMCOMMS23 C70606を選択できますその後に行うコードの生成とターゲットへの統合の処理はHDLワークフロー アドバイザーによって自動的に実施できます

ADIが提供するBSPはボードの定義とリファレンス設計を集めたものです 14これによって既存のHDLリファレンス設計と同等の IPブロックを生成しそれをHDLリファレンス設計に組み込むために必要な情報とツールがHDLワークフロー アドバイザーに提供されます図8はADS-BモデルのIPコアを生成するようにHDLワークフロー アドバイザーを設定する方法を示したものですワークフローとしては「 IP Core Genera t ion 」を選択しターゲットプラットフォームとしては「AnalogDevices FMCOMMS23 ZC706」を選択する必要があることに注意してください

図 8 H D Lワークフロー アドバイザーの設定

次のステップでは I Pとリファレンス設計の間のイン ターフェースの構成を行いますモデルの入力では未処理の I Qサンプルを受け取りますモデルの入力ポートはAD9 3 6 1のデータポートに直接接続しますモデルの出力信号のうちここで関心があるのはda ta f r ame_va l idb i t_c lkの各信号だけですda taと f r ame_va l idは16ビット幅でbi t_clk信号はクロックとして使用しますこれらの信号はBSPのDUT Data x Outインターフェースに接続可能ですつまりDMAのブロックはこれらの信号に直接アクセスしますその後dataはソフトウェアレイヤからアクセスが可能なDDRに転送されますbi t_c lk信号はBSPのDUT Data Val id Outインターフェースに接続されDMAのサンプリングレートを制御します図9にHDLインターフェースの構成方法を示しました

図 9 H D Lインターフェースの構成

ターゲットとのインターフェースを定義したら次のステップに進みますHDLワークフロー アドバイザーのステップ2とステップ3はデフォルトの設定のままとしステップ41(プロジェクトの作成)を実行することでプロジェクト作成のプロセスを開始しますこのステップの結果としてADS-B用の IPコアがADIのHDLリファレンス設計に組み込まれたVivadoプロジェクトが作成されます図10にADS-B用の IPコアと回路内のその他のブロックとの接続を示しました

FIFO

AD9361用のIP 16ビット 16ビット

16ビット 64

ビットデータのパック

ADS-B用のIPFIFORx DMA

データクロック2456 MHz

クロック分周器[データクロック]4

図 1 0 H D Lリファレンス設計におけるA D S - B用 I Pの接続

Vi v a d oプロジェクトからビットストリームを生成することでH D Lベースの統合作業は完了します次の目標はシステム上で L i n u xを稼働させることですそこでビットストリームを生成した後に「 X i l i n x S D K F S B L ( F i r s t S t a g e B o o t L o a d e r )」と標準的なプロセスに従って L i n u x用のブートファイルを

Analog Dialogue 49-12 6

作成します新たに構築した H D L ベースの回路に対応する L i n u x のデバイスツリーとイメージファイルが A D - F M C O M M S 3 - E B Z 用の B S P と共に配布されていますすべてのファイルは L i n u x用の ブートファイルと共に S Dカードのブートパーティション上にコピーしますここには X i l i n x社のZ C 7 0 6上で A D Iの L i n u xディストリビューションを実行するために必要なすべてのファイルが格納されていることになります

Cコードをプラットフォームに配備する

ここまでにHDLで構築したADS-B用の IPをSDRプラットフォームの回路に適用しLinux用のSDカードを作成しました続いてはADS-Bデータをデコードするためのソフトウェアアプリケーションを実装しますこのアプリケーションは「MATLAB CoderでCコードを生成する」のセクションで生成したC言語のコードを ベースとし以下のタスクを実行します

bull ADS-Bの信号を受信するようにAD9361を構成する

bull ADS-B用の IPコアからデータを読み出す

bull読み出したデータに含まれる有効なA D S - Bフレームを検出する

bullADS-B信号に含まれる情報をデコードして表示する

1つ目と 2つ目のタスクを実装するには l i b i i oのライブラリで提供されている機能を利用すると便利です 15このライブラリはAD9361の構成とデータの送受信を容易に行うためのインターフェース関数を提供していますここではまずシステムに関する以下のパラメータを設定します

bull 局部発振周波数109GHzbull サンプリングレート125MHzbull アナログ帯域幅40MHzbull 自動利得制御 fas t a t tackモード

上記のパラメータ以外にF I R型のデジタルフィルタ(データレートは 1 2 5 M S P S通過帯域周波数は325MHz阻止帯域周波数は4MHz)をAD9361に追加し受信側のデータには対象とする帯域の信号成分のみが含まれるように設定しますこのFIRフィルタのシステムパラメータと設計方法については本シリーズのPar t 3を参照してください 3

ADS-B用 IPの出力データはDMAブロックによってシステムのDDRメモリへと転送されます l ib i ioのライブラリにはADS-B用 IPから取得したデータを指定されたサイズでメモリバッファに配置する関数やバッファが一杯になるのを待つ関数ポインタを介してバッファにアクセスする関数などがありますバッファが一杯になるとADS-Bのデコードアルゴリズムによる データの処理を開始できますA D S - B用の I Pコアには2つの出力チャンネルがあります1つはADS-Bのビットストリームに対応しもう1つはビットストリームに含まれる有効なデータフレームの終了位置を示すために使われます 2つのチャンネルは同じ データレートで動作し互いに同期がとれています後者のチャンネルでサンプルの値が 1であればそれは データチャンネルにおける有効フレームの最終ビットを表します両方のチャンネルをパースしたらソフト

ウェアはADS-Bの有効なデータフレームをビットストリームから抽出しそのデータをM A T L A B C o d e rによって生成されたデコード用の関数に引き渡しますデ コード用の関数はADS-Bのデータフレームと現在の位置の緯度 経度を航空機の座標を計算する際の入力として使用しますなお現在の位置の緯度 経度はアプリケーションのパラメータとして指定されていますデ コードされたADS-BデータはSimul inkモデルを使用した場合と同じように表示されます

A D S - Bデータをデコードするためのアプリケーションは L i n u x環境下で m a k e f i l eを使用してビルドします A D Iはこのアプリケーションのソースコードとmakef i leをGitHubリポジトリで提供しています 16

以上でMathWorks社のHDL CoderとMATLAB Coderを使用してADS-Bモデルから生成したHDLCコードをプラットフォームに配備することができました次に行うべきことはシステムの機能を確認し結果を評価することです

システムの検証

システムの機能を検証するためにまずはAD-FMCOM-M S 3 - E B Zの1つの受信ポートと1つの送信ポートの間を ループバックの形で接続しシミュレーションで使用したのと同じADS-B信号を送信しますそのデータを受信してデコードすればSDRプラットフォームで実行したアルゴリズムの出力がシミュレーション結果と一致することを確認できます図11に示したのはADS-Bデータをデコードするアプリケーションの出力結果ですこれを見るとPar t 3に示した取得済みのデータによるHILシミュレーションの結果と同じであることがわかりますこれによりシステムが期待どおりに動作しており現実のデータを処理する準備が整っているという確証が得られます

図 1 1 ループバックによるテストの結果

実際のフィールドテストではマサチューセッツ州ネイティックにあるMathWorks社本社の屋外にSDRプラットフォームで構築したレシーバを配置しましたそして受信したライブ信号をシステムでデコードすることにより得られたA D S - Bの情報と航空機のリアルタイム追跡ウェブサイト( f l igh t radar24 comなど)で提供される情報とを比較しましたその結果開発したシステムはアンテナの見通し線上にある航空機から受信した信号を正しくデコードしていることが確認できました図12にシステムによって検出した航空機の情報とオンラインで得られる航空機の追跡情報を示しました両者を比較するとデコード用のアルゴリズムによって正しい航空機 ID高度速度緯度 経度が得られていることがわかります

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 2

当初ModeS_Simul ink_Decode s lxモデルは上記のすべての条件を満たしているわけではありませんでした問題があったのはCalcCRCブロックの中で受信したビットデータと算出されたチェックサムとを比較する部分ですそこでこのブロックをDetec to rブロックの外部に移動し最終的にはC言語で実装することにしましたこのような変更を加えたModeS_ADI_CodeGen s lxモデルを使用してH D Lのコードを生成しました(図 3)手作業でコーディングを行うのとは大きく異なりわずか数分で数千行のHDLコードを生成できますHDL Coderによって生成されたソースコードはSimul inkモデルのビット精度とサイクル精度をそのまま引き継いでいますこれはモデルベース設計が生産性に対してもたらす主要なメリットの 1つですつまり生成されたコードはSimul inkモデルを正確に変換したものになるということです

またHDLのコードは読みやすくトレースが可能な状態で生成されるため技術者は設計したモデルと生成されたコードを容易に対応づけることができます以下に示す方法によってこのようなことが実現されています

bullモデルの階層がH D Lコードのファイルでも維持されるこの例ではトップレベルのブロックの名前がD e t e c t o r v h dで次の階層にあるサブシステムの名前がC a l c N F v h dB i t _ P r o c e s s v h dといった具合になっている

bull モデルで使用したブロック名ポート名信号名データ型複雑さが生成後のコードにも踏襲される

モデルとソースコードはリンクしておりSimul inkモデル内のブロック上でクリックすると生成されたHDLコードに自動的に移動できます同様に生成された コード内のハイパーリンクをクリックするとSimul inkモデルが開きコードのその部分に対応するブロックが強調表示されます

図 3 M o d e S _ A D I _ C o d e G e n s l xから 生成されたH D Lのソースコード

クロックの高速化が可能なHDLコードの生成に

向けADS-Bモデルを最適化

S i m u l i n kモデルからは正しく機能するH D Lコードが生成されますが最初の生成結果で満足する設計者はほとんどいません速度や面積の制約を満たせていないことが多いからですそのため望ましい結果を得るためにSimul inkモデルの最適化が行われることになりますモデルの最適化を行ったらシミュレーションを実行し加えた変更によってアルゴリズムに悪影響が及んでいないことを確認しますSimul inkとコードの自動生成がもたらす大きなメリットはこのようにモデルに対する変

図 1 M o d e S _ S i m u l i n k _ D e c o d e s l xにおける F P G AとC o r t e x - A 9への処理の分割

アナログデバイセズ(ADI)は以下に示す内容を実装したSimul inkモデルのファイルをGitHubリポジトリで提供しています 4

SimulinkモデルからHDLコードを生成する

M o d e S D e c o d e r モ デ ル の D e t e c t o r ブ ロ ッ クはC a l c S y n c C o r rC a l c N F S y n c A n d C o n t r o lB i t -ProcessCalcCRCFameDetec tの各サブシステムから構成されています(図2)この回路を基にMathWorks社の「HDL Coder」 5を使用してHDLのソースコードを生成します

図 2 H D Lコードの生成に使用するD e t e c t o rブロック

H D L C o d e rでH D Lコードを正しく生成するにはS i m -ul inkモデルがいくつかの条件を満たしている必要があります最も重要な条件を以下に挙げます

bull H D Lコードの生成をサポートするブロックを使用するH D L C o d e rは約2 0 0のS i m u l i n kブロックに対するコードの生成をサポートしている 6Detec to r回路の場合Sta te f lowダイアグラムやDigi ta l F i l t e rブロックを含むすべてのブロックがH D Lコードの生成をサポートしている

bull 固定小数点のデータ型を使用するDetec tor回路では信号のデータ型として12ビット24ビットBoo leanを使用する 1 2ビットのデータ型は A D Iの R Fアジャイルトランシーバ(R F A g i l e Tr a n s c e i v e r T M)I C「A D 9 3 6 1」が備えるA Dコンバータの分解能と同じである

bull スカラー信号またはベクトル信号を使用するベクトル信号はマルチチャンネルの信号またはリソースの共有に使用できる

bull モデル内で代数ループは使用しないHDL Coderは代数ループの条件を含むモデルについてはHDLコードの生成をサポートしていない

Analog Dialogue 49-12 3

更を行ってH D Lコードを再生成できる点ですこの方法の方がHDLのソースコードを変更するよりもずっと簡単でミスも生じにくくなりますH D Lのソース コードに直接手を加えるとアルゴリズムに悪影響が及ぶ恐れがあります

本稿の回路の場合モデルから生成されたH D Lコードは比較的低いクロックレートで実行するため使用するFPGAファブリックに簡単に適合しましたこういう ケースは初期設計の段階ではよくありますHDL Coderが備えるツールで解析したところこのモデルのクリティカルパスは I Qサンプルの入力からサブシステムであるCalcCRCの最初のレジスタまででしたこのような回路ではパイプラインレジスタを挿入する方法によってクロック速度を高めるということがよく行われます(図4)パイプラインを挿入すると処理全体の遅延が大きくなる代わりに信号処理の間のパスが短くなります多くの場合このトレードオフは許容されるはずですクロックレートを高められるのであれば遅延が多少増加しても大きな代償にはならないからです

図 4 パイプラインレジスタを挿入したD e t e c t o r回路

このようにサブシステム間のパイプラインレジスタによってクロックレートを向上することができましたただDigi ta l F i l t e rブロックにおいて適切なアーキテクチャを選択すればクロックレートをさらに高めることができます多くのSimul inkブロックではアーキテクチャについて選択肢が用意されているためそれにより回路の速度や面積を最適化できるようになっていますノイズフロアとプリアンブルのコリレーションの計算に使用されるデジタルフィルタの場合出力乗算器をパイプライン化することでデジタルフィルタ内のクリティカルパスが短くなり回路のクロック レートを高めることができます(図5)

図 5 D i g i t a l F i l t e rブロックでは H D Lブロックに関する選択が行える

パイプラインに関する2つの簡単な変更を加えることで生成されたHDLコードは140MHzのクロックレートに対応できるものになりましたこれはコード生成ツールを利用する技術者にとっては有益な教訓になるでしょうその教訓とはハードウェアの設計原則に関するちょっとした知識をモデルに適用するだけで生成されるコードに対して大きな改善をもたらすことができるということですこの例の回路をさらに最適化することも可能ですがそこまでは行いませんでしたこの例ではタイミングとリソースに関する目標が比較的シンプルだったためこの時点のHDLコードによって十分にそれらを満たすことができていたからです

従来無線システムの設計では開発時間の大部分をHDLコードのテストとデバッグが占めていました実はここまでに示したモデルベース設計ではシミュレーションとコード生成の対象となるモデルの開発により多くの時間を費やしていますただし開発工程の全体を見れば時間は大幅に短縮されています生成されたソースコードの動作がシミュレーションで検証済みの動作と正確に一致するからです組み込みハードウェア上ではごくわずかのデバッグ作業しか必要ありませんでした

MATLAB CoderでCコードを生成する

H D Lのコードを生成する場合と同様に「 M AT L A B Coder」 7によってこの回路のデコード機能を実現するC言語のコードを生成するにはいくつかの条件を満たす必要があります最も重要な条件は次の2つです

bull M AT L A B C o d e rがサポートしている関数を使用するMATLAB CoderはMATLAB言語のほぼすべてに加えさまざまなツールボックス 8をサポートしているそれでもモデルの開発時にMATLAB Coderがサポートしていない関数を使用してしまうことはあり得るそのためMATLAB Coderがサポートしていない関数を検出するための「MATLAB Code Genera t ion Readiness Too l(コード生成の準備状態ツール)」 9などのツールが提供されている

bull MATLAB変数を宣言した後にそのサイズや型は変更しないこれは生成されたコードの中でメモリが正しく割り当てられるようにするために必須の条件である

MATLABのコードからC言語のコードを生成するための最も簡単な方法は新しいM AT L A B C o d e rプロジェクトを開くことですこれはMATLABツールストリップの 「アプリケーション」タブで行うことができますMAT-LAB Coderプロジェクトの最終的な出力結果を図6に示しました

Analog Dialogue 49-12 4

図 6 D e c o d e B i t s _ A D I mに対応する M AT L A B C o d e rプロジェクト

このプロジェクトにおいてトップレベルのMATLAB関数はDecodeBi t s_ADI mですユーザーはこの関数に必要なデータ型とサイズを入力引数として指定する必要があります図6を見るとこの関数の入力引数は112ビットのBoolean型データと2つの倍精度の値(ユーザーの現在の緯度と経度用)であることがわかりますD e -c o d e B i t s _ A D I mの出力のサイズとデータ型(北方向の速度用の n V東方向の速度用の e V高度用の a l tなど)はM AT L A B C o d e rによって自動的に定められますMATLAB CoderはトップレベルのエントリポイントファイルであるDecodeBits_ADImから呼び出さ

れるその他すべての関数(AltVelCalc_ADImLatLong-C a l c _ A D I mなど)を検索しデコード用のアルゴリズム全体に対応するC言語のソースコードを生成します

MATLAB Coderによって生成されるのはMATLABで記述した機能をそのままC言語に変換したコードですHDLコードを生成する場合と同様にMATLAB Coderによって生成されるソースコードは読みやすくトレースが可能ですそのため技術者は元のMATLABコードと生成されたCコードの間の関係を容易に把握することができますこの例のCコードはMATLABコマンドプロンプトから生成可能ですまた任意のANSI Cコンパイラでコンパイルすることができます

HDLコードをプラットフォームに配備する

ここまでの作業では最初に設計した回路をZynq SoCのプログラマブルロジックとプロセッシングシステムで実行する機能に分割しました続いてHDLC言語のコード生成に向けて回路の最適化を行いました最適化した回路が正しく動作し性能面の条件を満たすことをシミュレーションで確認したらこの設計をSDR向けのハードウェアプラットフォームに配備(デプロイ)しシステムの機能を実際の条件下で検証します

検 証 を 行 う た め に A D I の S D R プ ラ ッ ト フ ォ ー ム「A D - F M C O M M S 3 - E B Z」 1 0を使用しますこのボードにはA D IのL i n u xディストリビューションを搭載するXil inx社のボード「ZC706」 11を接続しています

A D - F M C O M M S 3 - E B ZにはA D Iが提供するオープン ソースのHDLリファレンス設計「Vivado」が付属しています 1 2このリファレンス設計には構成(コンフィギ

図7 HDLリファレンス設計のブロック図

FIFO

AD9361用のIP

プログラマブルロジック

プロセッシングシステム(Cortex-A9)

Linux

Zynq SoC

16ビット

64ビット

64ビットデータのパック

FIFO

FIFO

Rx

LVD

Sインターフェース

Tx

DMA

DMA

HDMI

I2C

データクロック2456 MHz

データのアンパック

ユーザー空間

カーネル

カーネルドライバ

カーネルドライバ

libIIOユーザー空間の

アプリケーション

DDRコントローラEthernet

割り込みコントローラI2CSPI

タイマー

AXI4-Stream

AXI4-Lite

16ビット 16ビット

16ビット

Analog Dialogue 49-12 5

ュレーション)とA D - F M C O M M S 3 - E B Z上のA D 9 3 6 1との間のデータ送受信に必要なすべての IPブロックが含まれています図7にこのH D Lリファレンス設計のブロック図を示しました

AD9361用の I PコアはA D 9361とZynq SoCの間でデータを送受信するためのLV D Sインターフェースと回路のその他の部分のデータインターフェースを実現しますAD9361用 IPとDDRメモリの間の高速データ転送にはDMAブロックが使われますAD9361用 IPブロックに対するデータインターフェースは受信用と送信用にそれぞれ4本のデータラインを備えていますこれらはAD9361の2個の受信チャンネルと2個の送信チャンネルの I Qデータに対応しています各データラインは1 6ビット幅ですシステム内のデータ転送をより効率良く行うために送受信データはDMAブロックによって管理される64ビット幅のバスにパッキングされますパックとアンパックを行うブロックによりAD9361用IPにつながる16ビットの並列データラインがDMAに接続されます

A D S - BモデルのH D LコードをS D RプラットフォームにおいてHDLを適用可能な既存のインフラに配備するにはデータパスに挿入できる IPコアを構築する必要がありますこれによって受信した信号をリアルタイムに処理し得られたデータをソフトウェアのレイヤに転送しますこのような配備の作業は難易度が高く時間がかかることがよくありますHDLで設計した機能を細部にわたって理解するだけでなくHDLのプログラミングについての十分なスキルも必要になるからですこの作業を簡素化するためにMathWorks社はHDL Coderに「HDLワークフロー アドバイザー」というユーティリティを用意しています一方ADIはSDRプラットフォームであるAD-FMCOMMS3-EBZと「AD-FMCOMMS2-EB Z」Xil inx社のZC706を対象としたボードサポートパッケージ(BSP)を提供しています 13

HDLワークフロー アドバイザーはSimul inkモデルからH D Lコードを生成するために必要な作業を正しい手順で進められるようにユーザーを導いてくれますユー ザーは「ASICFPGA」「FPGA-in-the-Loop」「IP Core Genera t ion( IPコアの生成)」といった複数の選択肢の中からターゲットとするワークフローを選択できますターゲットとなるプラットフォームとしてはXilinx社の評価用ボードAltera社の評価用ボードまたはSDRプラットフォームであるFMCOMMS23 C70606を選択できますその後に行うコードの生成とターゲットへの統合の処理はHDLワークフロー アドバイザーによって自動的に実施できます

ADIが提供するBSPはボードの定義とリファレンス設計を集めたものです 14これによって既存のHDLリファレンス設計と同等の IPブロックを生成しそれをHDLリファレンス設計に組み込むために必要な情報とツールがHDLワークフロー アドバイザーに提供されます図8はADS-BモデルのIPコアを生成するようにHDLワークフロー アドバイザーを設定する方法を示したものですワークフローとしては「 IP Core Genera t ion 」を選択しターゲットプラットフォームとしては「AnalogDevices FMCOMMS23 ZC706」を選択する必要があることに注意してください

図 8 H D Lワークフロー アドバイザーの設定

次のステップでは I Pとリファレンス設計の間のイン ターフェースの構成を行いますモデルの入力では未処理の I Qサンプルを受け取りますモデルの入力ポートはAD9 3 6 1のデータポートに直接接続しますモデルの出力信号のうちここで関心があるのはda ta f r ame_va l idb i t_c lkの各信号だけですda taと f r ame_va l idは16ビット幅でbi t_clk信号はクロックとして使用しますこれらの信号はBSPのDUT Data x Outインターフェースに接続可能ですつまりDMAのブロックはこれらの信号に直接アクセスしますその後dataはソフトウェアレイヤからアクセスが可能なDDRに転送されますbi t_c lk信号はBSPのDUT Data Val id Outインターフェースに接続されDMAのサンプリングレートを制御します図9にHDLインターフェースの構成方法を示しました

図 9 H D Lインターフェースの構成

ターゲットとのインターフェースを定義したら次のステップに進みますHDLワークフロー アドバイザーのステップ2とステップ3はデフォルトの設定のままとしステップ41(プロジェクトの作成)を実行することでプロジェクト作成のプロセスを開始しますこのステップの結果としてADS-B用の IPコアがADIのHDLリファレンス設計に組み込まれたVivadoプロジェクトが作成されます図10にADS-B用の IPコアと回路内のその他のブロックとの接続を示しました

FIFO

AD9361用のIP 16ビット 16ビット

16ビット 64

ビットデータのパック

ADS-B用のIPFIFORx DMA

データクロック2456 MHz

クロック分周器[データクロック]4

図 1 0 H D Lリファレンス設計におけるA D S - B用 I Pの接続

Vi v a d oプロジェクトからビットストリームを生成することでH D Lベースの統合作業は完了します次の目標はシステム上で L i n u xを稼働させることですそこでビットストリームを生成した後に「 X i l i n x S D K F S B L ( F i r s t S t a g e B o o t L o a d e r )」と標準的なプロセスに従って L i n u x用のブートファイルを

Analog Dialogue 49-12 6

作成します新たに構築した H D L ベースの回路に対応する L i n u x のデバイスツリーとイメージファイルが A D - F M C O M M S 3 - E B Z 用の B S P と共に配布されていますすべてのファイルは L i n u x用の ブートファイルと共に S Dカードのブートパーティション上にコピーしますここには X i l i n x社のZ C 7 0 6上で A D Iの L i n u xディストリビューションを実行するために必要なすべてのファイルが格納されていることになります

Cコードをプラットフォームに配備する

ここまでにHDLで構築したADS-B用の IPをSDRプラットフォームの回路に適用しLinux用のSDカードを作成しました続いてはADS-Bデータをデコードするためのソフトウェアアプリケーションを実装しますこのアプリケーションは「MATLAB CoderでCコードを生成する」のセクションで生成したC言語のコードを ベースとし以下のタスクを実行します

bull ADS-Bの信号を受信するようにAD9361を構成する

bull ADS-B用の IPコアからデータを読み出す

bull読み出したデータに含まれる有効なA D S - Bフレームを検出する

bullADS-B信号に含まれる情報をデコードして表示する

1つ目と 2つ目のタスクを実装するには l i b i i oのライブラリで提供されている機能を利用すると便利です 15このライブラリはAD9361の構成とデータの送受信を容易に行うためのインターフェース関数を提供していますここではまずシステムに関する以下のパラメータを設定します

bull 局部発振周波数109GHzbull サンプリングレート125MHzbull アナログ帯域幅40MHzbull 自動利得制御 fas t a t tackモード

上記のパラメータ以外にF I R型のデジタルフィルタ(データレートは 1 2 5 M S P S通過帯域周波数は325MHz阻止帯域周波数は4MHz)をAD9361に追加し受信側のデータには対象とする帯域の信号成分のみが含まれるように設定しますこのFIRフィルタのシステムパラメータと設計方法については本シリーズのPar t 3を参照してください 3

ADS-B用 IPの出力データはDMAブロックによってシステムのDDRメモリへと転送されます l ib i ioのライブラリにはADS-B用 IPから取得したデータを指定されたサイズでメモリバッファに配置する関数やバッファが一杯になるのを待つ関数ポインタを介してバッファにアクセスする関数などがありますバッファが一杯になるとADS-Bのデコードアルゴリズムによる データの処理を開始できますA D S - B用の I Pコアには2つの出力チャンネルがあります1つはADS-Bのビットストリームに対応しもう1つはビットストリームに含まれる有効なデータフレームの終了位置を示すために使われます 2つのチャンネルは同じ データレートで動作し互いに同期がとれています後者のチャンネルでサンプルの値が 1であればそれは データチャンネルにおける有効フレームの最終ビットを表します両方のチャンネルをパースしたらソフト

ウェアはADS-Bの有効なデータフレームをビットストリームから抽出しそのデータをM A T L A B C o d e rによって生成されたデコード用の関数に引き渡しますデ コード用の関数はADS-Bのデータフレームと現在の位置の緯度 経度を航空機の座標を計算する際の入力として使用しますなお現在の位置の緯度 経度はアプリケーションのパラメータとして指定されていますデ コードされたADS-BデータはSimul inkモデルを使用した場合と同じように表示されます

A D S - Bデータをデコードするためのアプリケーションは L i n u x環境下で m a k e f i l eを使用してビルドします A D Iはこのアプリケーションのソースコードとmakef i leをGitHubリポジトリで提供しています 16

以上でMathWorks社のHDL CoderとMATLAB Coderを使用してADS-Bモデルから生成したHDLCコードをプラットフォームに配備することができました次に行うべきことはシステムの機能を確認し結果を評価することです

システムの検証

システムの機能を検証するためにまずはAD-FMCOM-M S 3 - E B Zの1つの受信ポートと1つの送信ポートの間を ループバックの形で接続しシミュレーションで使用したのと同じADS-B信号を送信しますそのデータを受信してデコードすればSDRプラットフォームで実行したアルゴリズムの出力がシミュレーション結果と一致することを確認できます図11に示したのはADS-Bデータをデコードするアプリケーションの出力結果ですこれを見るとPar t 3に示した取得済みのデータによるHILシミュレーションの結果と同じであることがわかりますこれによりシステムが期待どおりに動作しており現実のデータを処理する準備が整っているという確証が得られます

図 1 1 ループバックによるテストの結果

実際のフィールドテストではマサチューセッツ州ネイティックにあるMathWorks社本社の屋外にSDRプラットフォームで構築したレシーバを配置しましたそして受信したライブ信号をシステムでデコードすることにより得られたA D S - Bの情報と航空機のリアルタイム追跡ウェブサイト( f l igh t radar24 comなど)で提供される情報とを比較しましたその結果開発したシステムはアンテナの見通し線上にある航空機から受信した信号を正しくデコードしていることが確認できました図12にシステムによって検出した航空機の情報とオンラインで得られる航空機の追跡情報を示しました両者を比較するとデコード用のアルゴリズムによって正しい航空機 ID高度速度緯度 経度が得られていることがわかります

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 3

更を行ってH D Lコードを再生成できる点ですこの方法の方がHDLのソースコードを変更するよりもずっと簡単でミスも生じにくくなりますH D Lのソース コードに直接手を加えるとアルゴリズムに悪影響が及ぶ恐れがあります

本稿の回路の場合モデルから生成されたH D Lコードは比較的低いクロックレートで実行するため使用するFPGAファブリックに簡単に適合しましたこういう ケースは初期設計の段階ではよくありますHDL Coderが備えるツールで解析したところこのモデルのクリティカルパスは I Qサンプルの入力からサブシステムであるCalcCRCの最初のレジスタまででしたこのような回路ではパイプラインレジスタを挿入する方法によってクロック速度を高めるということがよく行われます(図4)パイプラインを挿入すると処理全体の遅延が大きくなる代わりに信号処理の間のパスが短くなります多くの場合このトレードオフは許容されるはずですクロックレートを高められるのであれば遅延が多少増加しても大きな代償にはならないからです

図 4 パイプラインレジスタを挿入したD e t e c t o r回路

このようにサブシステム間のパイプラインレジスタによってクロックレートを向上することができましたただDigi ta l F i l t e rブロックにおいて適切なアーキテクチャを選択すればクロックレートをさらに高めることができます多くのSimul inkブロックではアーキテクチャについて選択肢が用意されているためそれにより回路の速度や面積を最適化できるようになっていますノイズフロアとプリアンブルのコリレーションの計算に使用されるデジタルフィルタの場合出力乗算器をパイプライン化することでデジタルフィルタ内のクリティカルパスが短くなり回路のクロック レートを高めることができます(図5)

図 5 D i g i t a l F i l t e rブロックでは H D Lブロックに関する選択が行える

パイプラインに関する2つの簡単な変更を加えることで生成されたHDLコードは140MHzのクロックレートに対応できるものになりましたこれはコード生成ツールを利用する技術者にとっては有益な教訓になるでしょうその教訓とはハードウェアの設計原則に関するちょっとした知識をモデルに適用するだけで生成されるコードに対して大きな改善をもたらすことができるということですこの例の回路をさらに最適化することも可能ですがそこまでは行いませんでしたこの例ではタイミングとリソースに関する目標が比較的シンプルだったためこの時点のHDLコードによって十分にそれらを満たすことができていたからです

従来無線システムの設計では開発時間の大部分をHDLコードのテストとデバッグが占めていました実はここまでに示したモデルベース設計ではシミュレーションとコード生成の対象となるモデルの開発により多くの時間を費やしていますただし開発工程の全体を見れば時間は大幅に短縮されています生成されたソースコードの動作がシミュレーションで検証済みの動作と正確に一致するからです組み込みハードウェア上ではごくわずかのデバッグ作業しか必要ありませんでした

MATLAB CoderでCコードを生成する

H D Lのコードを生成する場合と同様に「 M AT L A B Coder」 7によってこの回路のデコード機能を実現するC言語のコードを生成するにはいくつかの条件を満たす必要があります最も重要な条件は次の2つです

bull M AT L A B C o d e rがサポートしている関数を使用するMATLAB CoderはMATLAB言語のほぼすべてに加えさまざまなツールボックス 8をサポートしているそれでもモデルの開発時にMATLAB Coderがサポートしていない関数を使用してしまうことはあり得るそのためMATLAB Coderがサポートしていない関数を検出するための「MATLAB Code Genera t ion Readiness Too l(コード生成の準備状態ツール)」 9などのツールが提供されている

bull MATLAB変数を宣言した後にそのサイズや型は変更しないこれは生成されたコードの中でメモリが正しく割り当てられるようにするために必須の条件である

MATLABのコードからC言語のコードを生成するための最も簡単な方法は新しいM AT L A B C o d e rプロジェクトを開くことですこれはMATLABツールストリップの 「アプリケーション」タブで行うことができますMAT-LAB Coderプロジェクトの最終的な出力結果を図6に示しました

Analog Dialogue 49-12 4

図 6 D e c o d e B i t s _ A D I mに対応する M AT L A B C o d e rプロジェクト

このプロジェクトにおいてトップレベルのMATLAB関数はDecodeBi t s_ADI mですユーザーはこの関数に必要なデータ型とサイズを入力引数として指定する必要があります図6を見るとこの関数の入力引数は112ビットのBoolean型データと2つの倍精度の値(ユーザーの現在の緯度と経度用)であることがわかりますD e -c o d e B i t s _ A D I mの出力のサイズとデータ型(北方向の速度用の n V東方向の速度用の e V高度用の a l tなど)はM AT L A B C o d e rによって自動的に定められますMATLAB CoderはトップレベルのエントリポイントファイルであるDecodeBits_ADImから呼び出さ

れるその他すべての関数(AltVelCalc_ADImLatLong-C a l c _ A D I mなど)を検索しデコード用のアルゴリズム全体に対応するC言語のソースコードを生成します

MATLAB Coderによって生成されるのはMATLABで記述した機能をそのままC言語に変換したコードですHDLコードを生成する場合と同様にMATLAB Coderによって生成されるソースコードは読みやすくトレースが可能ですそのため技術者は元のMATLABコードと生成されたCコードの間の関係を容易に把握することができますこの例のCコードはMATLABコマンドプロンプトから生成可能ですまた任意のANSI Cコンパイラでコンパイルすることができます

HDLコードをプラットフォームに配備する

ここまでの作業では最初に設計した回路をZynq SoCのプログラマブルロジックとプロセッシングシステムで実行する機能に分割しました続いてHDLC言語のコード生成に向けて回路の最適化を行いました最適化した回路が正しく動作し性能面の条件を満たすことをシミュレーションで確認したらこの設計をSDR向けのハードウェアプラットフォームに配備(デプロイ)しシステムの機能を実際の条件下で検証します

検 証 を 行 う た め に A D I の S D R プ ラ ッ ト フ ォ ー ム「A D - F M C O M M S 3 - E B Z」 1 0を使用しますこのボードにはA D IのL i n u xディストリビューションを搭載するXil inx社のボード「ZC706」 11を接続しています

A D - F M C O M M S 3 - E B ZにはA D Iが提供するオープン ソースのHDLリファレンス設計「Vivado」が付属しています 1 2このリファレンス設計には構成(コンフィギ

図7 HDLリファレンス設計のブロック図

FIFO

AD9361用のIP

プログラマブルロジック

プロセッシングシステム(Cortex-A9)

Linux

Zynq SoC

16ビット

64ビット

64ビットデータのパック

FIFO

FIFO

Rx

LVD

Sインターフェース

Tx

DMA

DMA

HDMI

I2C

データクロック2456 MHz

データのアンパック

ユーザー空間

カーネル

カーネルドライバ

カーネルドライバ

libIIOユーザー空間の

アプリケーション

DDRコントローラEthernet

割り込みコントローラI2CSPI

タイマー

AXI4-Stream

AXI4-Lite

16ビット 16ビット

16ビット

Analog Dialogue 49-12 5

ュレーション)とA D - F M C O M M S 3 - E B Z上のA D 9 3 6 1との間のデータ送受信に必要なすべての IPブロックが含まれています図7にこのH D Lリファレンス設計のブロック図を示しました

AD9361用の I PコアはA D 9361とZynq SoCの間でデータを送受信するためのLV D Sインターフェースと回路のその他の部分のデータインターフェースを実現しますAD9361用 IPとDDRメモリの間の高速データ転送にはDMAブロックが使われますAD9361用 IPブロックに対するデータインターフェースは受信用と送信用にそれぞれ4本のデータラインを備えていますこれらはAD9361の2個の受信チャンネルと2個の送信チャンネルの I Qデータに対応しています各データラインは1 6ビット幅ですシステム内のデータ転送をより効率良く行うために送受信データはDMAブロックによって管理される64ビット幅のバスにパッキングされますパックとアンパックを行うブロックによりAD9361用IPにつながる16ビットの並列データラインがDMAに接続されます

A D S - BモデルのH D LコードをS D RプラットフォームにおいてHDLを適用可能な既存のインフラに配備するにはデータパスに挿入できる IPコアを構築する必要がありますこれによって受信した信号をリアルタイムに処理し得られたデータをソフトウェアのレイヤに転送しますこのような配備の作業は難易度が高く時間がかかることがよくありますHDLで設計した機能を細部にわたって理解するだけでなくHDLのプログラミングについての十分なスキルも必要になるからですこの作業を簡素化するためにMathWorks社はHDL Coderに「HDLワークフロー アドバイザー」というユーティリティを用意しています一方ADIはSDRプラットフォームであるAD-FMCOMMS3-EBZと「AD-FMCOMMS2-EB Z」Xil inx社のZC706を対象としたボードサポートパッケージ(BSP)を提供しています 13

HDLワークフロー アドバイザーはSimul inkモデルからH D Lコードを生成するために必要な作業を正しい手順で進められるようにユーザーを導いてくれますユー ザーは「ASICFPGA」「FPGA-in-the-Loop」「IP Core Genera t ion( IPコアの生成)」といった複数の選択肢の中からターゲットとするワークフローを選択できますターゲットとなるプラットフォームとしてはXilinx社の評価用ボードAltera社の評価用ボードまたはSDRプラットフォームであるFMCOMMS23 C70606を選択できますその後に行うコードの生成とターゲットへの統合の処理はHDLワークフロー アドバイザーによって自動的に実施できます

ADIが提供するBSPはボードの定義とリファレンス設計を集めたものです 14これによって既存のHDLリファレンス設計と同等の IPブロックを生成しそれをHDLリファレンス設計に組み込むために必要な情報とツールがHDLワークフロー アドバイザーに提供されます図8はADS-BモデルのIPコアを生成するようにHDLワークフロー アドバイザーを設定する方法を示したものですワークフローとしては「 IP Core Genera t ion 」を選択しターゲットプラットフォームとしては「AnalogDevices FMCOMMS23 ZC706」を選択する必要があることに注意してください

図 8 H D Lワークフロー アドバイザーの設定

次のステップでは I Pとリファレンス設計の間のイン ターフェースの構成を行いますモデルの入力では未処理の I Qサンプルを受け取りますモデルの入力ポートはAD9 3 6 1のデータポートに直接接続しますモデルの出力信号のうちここで関心があるのはda ta f r ame_va l idb i t_c lkの各信号だけですda taと f r ame_va l idは16ビット幅でbi t_clk信号はクロックとして使用しますこれらの信号はBSPのDUT Data x Outインターフェースに接続可能ですつまりDMAのブロックはこれらの信号に直接アクセスしますその後dataはソフトウェアレイヤからアクセスが可能なDDRに転送されますbi t_c lk信号はBSPのDUT Data Val id Outインターフェースに接続されDMAのサンプリングレートを制御します図9にHDLインターフェースの構成方法を示しました

図 9 H D Lインターフェースの構成

ターゲットとのインターフェースを定義したら次のステップに進みますHDLワークフロー アドバイザーのステップ2とステップ3はデフォルトの設定のままとしステップ41(プロジェクトの作成)を実行することでプロジェクト作成のプロセスを開始しますこのステップの結果としてADS-B用の IPコアがADIのHDLリファレンス設計に組み込まれたVivadoプロジェクトが作成されます図10にADS-B用の IPコアと回路内のその他のブロックとの接続を示しました

FIFO

AD9361用のIP 16ビット 16ビット

16ビット 64

ビットデータのパック

ADS-B用のIPFIFORx DMA

データクロック2456 MHz

クロック分周器[データクロック]4

図 1 0 H D Lリファレンス設計におけるA D S - B用 I Pの接続

Vi v a d oプロジェクトからビットストリームを生成することでH D Lベースの統合作業は完了します次の目標はシステム上で L i n u xを稼働させることですそこでビットストリームを生成した後に「 X i l i n x S D K F S B L ( F i r s t S t a g e B o o t L o a d e r )」と標準的なプロセスに従って L i n u x用のブートファイルを

Analog Dialogue 49-12 6

作成します新たに構築した H D L ベースの回路に対応する L i n u x のデバイスツリーとイメージファイルが A D - F M C O M M S 3 - E B Z 用の B S P と共に配布されていますすべてのファイルは L i n u x用の ブートファイルと共に S Dカードのブートパーティション上にコピーしますここには X i l i n x社のZ C 7 0 6上で A D Iの L i n u xディストリビューションを実行するために必要なすべてのファイルが格納されていることになります

Cコードをプラットフォームに配備する

ここまでにHDLで構築したADS-B用の IPをSDRプラットフォームの回路に適用しLinux用のSDカードを作成しました続いてはADS-Bデータをデコードするためのソフトウェアアプリケーションを実装しますこのアプリケーションは「MATLAB CoderでCコードを生成する」のセクションで生成したC言語のコードを ベースとし以下のタスクを実行します

bull ADS-Bの信号を受信するようにAD9361を構成する

bull ADS-B用の IPコアからデータを読み出す

bull読み出したデータに含まれる有効なA D S - Bフレームを検出する

bullADS-B信号に含まれる情報をデコードして表示する

1つ目と 2つ目のタスクを実装するには l i b i i oのライブラリで提供されている機能を利用すると便利です 15このライブラリはAD9361の構成とデータの送受信を容易に行うためのインターフェース関数を提供していますここではまずシステムに関する以下のパラメータを設定します

bull 局部発振周波数109GHzbull サンプリングレート125MHzbull アナログ帯域幅40MHzbull 自動利得制御 fas t a t tackモード

上記のパラメータ以外にF I R型のデジタルフィルタ(データレートは 1 2 5 M S P S通過帯域周波数は325MHz阻止帯域周波数は4MHz)をAD9361に追加し受信側のデータには対象とする帯域の信号成分のみが含まれるように設定しますこのFIRフィルタのシステムパラメータと設計方法については本シリーズのPar t 3を参照してください 3

ADS-B用 IPの出力データはDMAブロックによってシステムのDDRメモリへと転送されます l ib i ioのライブラリにはADS-B用 IPから取得したデータを指定されたサイズでメモリバッファに配置する関数やバッファが一杯になるのを待つ関数ポインタを介してバッファにアクセスする関数などがありますバッファが一杯になるとADS-Bのデコードアルゴリズムによる データの処理を開始できますA D S - B用の I Pコアには2つの出力チャンネルがあります1つはADS-Bのビットストリームに対応しもう1つはビットストリームに含まれる有効なデータフレームの終了位置を示すために使われます 2つのチャンネルは同じ データレートで動作し互いに同期がとれています後者のチャンネルでサンプルの値が 1であればそれは データチャンネルにおける有効フレームの最終ビットを表します両方のチャンネルをパースしたらソフト

ウェアはADS-Bの有効なデータフレームをビットストリームから抽出しそのデータをM A T L A B C o d e rによって生成されたデコード用の関数に引き渡しますデ コード用の関数はADS-Bのデータフレームと現在の位置の緯度 経度を航空機の座標を計算する際の入力として使用しますなお現在の位置の緯度 経度はアプリケーションのパラメータとして指定されていますデ コードされたADS-BデータはSimul inkモデルを使用した場合と同じように表示されます

A D S - Bデータをデコードするためのアプリケーションは L i n u x環境下で m a k e f i l eを使用してビルドします A D Iはこのアプリケーションのソースコードとmakef i leをGitHubリポジトリで提供しています 16

以上でMathWorks社のHDL CoderとMATLAB Coderを使用してADS-Bモデルから生成したHDLCコードをプラットフォームに配備することができました次に行うべきことはシステムの機能を確認し結果を評価することです

システムの検証

システムの機能を検証するためにまずはAD-FMCOM-M S 3 - E B Zの1つの受信ポートと1つの送信ポートの間を ループバックの形で接続しシミュレーションで使用したのと同じADS-B信号を送信しますそのデータを受信してデコードすればSDRプラットフォームで実行したアルゴリズムの出力がシミュレーション結果と一致することを確認できます図11に示したのはADS-Bデータをデコードするアプリケーションの出力結果ですこれを見るとPar t 3に示した取得済みのデータによるHILシミュレーションの結果と同じであることがわかりますこれによりシステムが期待どおりに動作しており現実のデータを処理する準備が整っているという確証が得られます

図 1 1 ループバックによるテストの結果

実際のフィールドテストではマサチューセッツ州ネイティックにあるMathWorks社本社の屋外にSDRプラットフォームで構築したレシーバを配置しましたそして受信したライブ信号をシステムでデコードすることにより得られたA D S - Bの情報と航空機のリアルタイム追跡ウェブサイト( f l igh t radar24 comなど)で提供される情報とを比較しましたその結果開発したシステムはアンテナの見通し線上にある航空機から受信した信号を正しくデコードしていることが確認できました図12にシステムによって検出した航空機の情報とオンラインで得られる航空機の追跡情報を示しました両者を比較するとデコード用のアルゴリズムによって正しい航空機 ID高度速度緯度 経度が得られていることがわかります

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 4

図 6 D e c o d e B i t s _ A D I mに対応する M AT L A B C o d e rプロジェクト

このプロジェクトにおいてトップレベルのMATLAB関数はDecodeBi t s_ADI mですユーザーはこの関数に必要なデータ型とサイズを入力引数として指定する必要があります図6を見るとこの関数の入力引数は112ビットのBoolean型データと2つの倍精度の値(ユーザーの現在の緯度と経度用)であることがわかりますD e -c o d e B i t s _ A D I mの出力のサイズとデータ型(北方向の速度用の n V東方向の速度用の e V高度用の a l tなど)はM AT L A B C o d e rによって自動的に定められますMATLAB CoderはトップレベルのエントリポイントファイルであるDecodeBits_ADImから呼び出さ

れるその他すべての関数(AltVelCalc_ADImLatLong-C a l c _ A D I mなど)を検索しデコード用のアルゴリズム全体に対応するC言語のソースコードを生成します

MATLAB Coderによって生成されるのはMATLABで記述した機能をそのままC言語に変換したコードですHDLコードを生成する場合と同様にMATLAB Coderによって生成されるソースコードは読みやすくトレースが可能ですそのため技術者は元のMATLABコードと生成されたCコードの間の関係を容易に把握することができますこの例のCコードはMATLABコマンドプロンプトから生成可能ですまた任意のANSI Cコンパイラでコンパイルすることができます

HDLコードをプラットフォームに配備する

ここまでの作業では最初に設計した回路をZynq SoCのプログラマブルロジックとプロセッシングシステムで実行する機能に分割しました続いてHDLC言語のコード生成に向けて回路の最適化を行いました最適化した回路が正しく動作し性能面の条件を満たすことをシミュレーションで確認したらこの設計をSDR向けのハードウェアプラットフォームに配備(デプロイ)しシステムの機能を実際の条件下で検証します

検 証 を 行 う た め に A D I の S D R プ ラ ッ ト フ ォ ー ム「A D - F M C O M M S 3 - E B Z」 1 0を使用しますこのボードにはA D IのL i n u xディストリビューションを搭載するXil inx社のボード「ZC706」 11を接続しています

A D - F M C O M M S 3 - E B ZにはA D Iが提供するオープン ソースのHDLリファレンス設計「Vivado」が付属しています 1 2このリファレンス設計には構成(コンフィギ

図7 HDLリファレンス設計のブロック図

FIFO

AD9361用のIP

プログラマブルロジック

プロセッシングシステム(Cortex-A9)

Linux

Zynq SoC

16ビット

64ビット

64ビットデータのパック

FIFO

FIFO

Rx

LVD

Sインターフェース

Tx

DMA

DMA

HDMI

I2C

データクロック2456 MHz

データのアンパック

ユーザー空間

カーネル

カーネルドライバ

カーネルドライバ

libIIOユーザー空間の

アプリケーション

DDRコントローラEthernet

割り込みコントローラI2CSPI

タイマー

AXI4-Stream

AXI4-Lite

16ビット 16ビット

16ビット

Analog Dialogue 49-12 5

ュレーション)とA D - F M C O M M S 3 - E B Z上のA D 9 3 6 1との間のデータ送受信に必要なすべての IPブロックが含まれています図7にこのH D Lリファレンス設計のブロック図を示しました

AD9361用の I PコアはA D 9361とZynq SoCの間でデータを送受信するためのLV D Sインターフェースと回路のその他の部分のデータインターフェースを実現しますAD9361用 IPとDDRメモリの間の高速データ転送にはDMAブロックが使われますAD9361用 IPブロックに対するデータインターフェースは受信用と送信用にそれぞれ4本のデータラインを備えていますこれらはAD9361の2個の受信チャンネルと2個の送信チャンネルの I Qデータに対応しています各データラインは1 6ビット幅ですシステム内のデータ転送をより効率良く行うために送受信データはDMAブロックによって管理される64ビット幅のバスにパッキングされますパックとアンパックを行うブロックによりAD9361用IPにつながる16ビットの並列データラインがDMAに接続されます

A D S - BモデルのH D LコードをS D RプラットフォームにおいてHDLを適用可能な既存のインフラに配備するにはデータパスに挿入できる IPコアを構築する必要がありますこれによって受信した信号をリアルタイムに処理し得られたデータをソフトウェアのレイヤに転送しますこのような配備の作業は難易度が高く時間がかかることがよくありますHDLで設計した機能を細部にわたって理解するだけでなくHDLのプログラミングについての十分なスキルも必要になるからですこの作業を簡素化するためにMathWorks社はHDL Coderに「HDLワークフロー アドバイザー」というユーティリティを用意しています一方ADIはSDRプラットフォームであるAD-FMCOMMS3-EBZと「AD-FMCOMMS2-EB Z」Xil inx社のZC706を対象としたボードサポートパッケージ(BSP)を提供しています 13

HDLワークフロー アドバイザーはSimul inkモデルからH D Lコードを生成するために必要な作業を正しい手順で進められるようにユーザーを導いてくれますユー ザーは「ASICFPGA」「FPGA-in-the-Loop」「IP Core Genera t ion( IPコアの生成)」といった複数の選択肢の中からターゲットとするワークフローを選択できますターゲットとなるプラットフォームとしてはXilinx社の評価用ボードAltera社の評価用ボードまたはSDRプラットフォームであるFMCOMMS23 C70606を選択できますその後に行うコードの生成とターゲットへの統合の処理はHDLワークフロー アドバイザーによって自動的に実施できます

ADIが提供するBSPはボードの定義とリファレンス設計を集めたものです 14これによって既存のHDLリファレンス設計と同等の IPブロックを生成しそれをHDLリファレンス設計に組み込むために必要な情報とツールがHDLワークフロー アドバイザーに提供されます図8はADS-BモデルのIPコアを生成するようにHDLワークフロー アドバイザーを設定する方法を示したものですワークフローとしては「 IP Core Genera t ion 」を選択しターゲットプラットフォームとしては「AnalogDevices FMCOMMS23 ZC706」を選択する必要があることに注意してください

図 8 H D Lワークフロー アドバイザーの設定

次のステップでは I Pとリファレンス設計の間のイン ターフェースの構成を行いますモデルの入力では未処理の I Qサンプルを受け取りますモデルの入力ポートはAD9 3 6 1のデータポートに直接接続しますモデルの出力信号のうちここで関心があるのはda ta f r ame_va l idb i t_c lkの各信号だけですda taと f r ame_va l idは16ビット幅でbi t_clk信号はクロックとして使用しますこれらの信号はBSPのDUT Data x Outインターフェースに接続可能ですつまりDMAのブロックはこれらの信号に直接アクセスしますその後dataはソフトウェアレイヤからアクセスが可能なDDRに転送されますbi t_c lk信号はBSPのDUT Data Val id Outインターフェースに接続されDMAのサンプリングレートを制御します図9にHDLインターフェースの構成方法を示しました

図 9 H D Lインターフェースの構成

ターゲットとのインターフェースを定義したら次のステップに進みますHDLワークフロー アドバイザーのステップ2とステップ3はデフォルトの設定のままとしステップ41(プロジェクトの作成)を実行することでプロジェクト作成のプロセスを開始しますこのステップの結果としてADS-B用の IPコアがADIのHDLリファレンス設計に組み込まれたVivadoプロジェクトが作成されます図10にADS-B用の IPコアと回路内のその他のブロックとの接続を示しました

FIFO

AD9361用のIP 16ビット 16ビット

16ビット 64

ビットデータのパック

ADS-B用のIPFIFORx DMA

データクロック2456 MHz

クロック分周器[データクロック]4

図 1 0 H D Lリファレンス設計におけるA D S - B用 I Pの接続

Vi v a d oプロジェクトからビットストリームを生成することでH D Lベースの統合作業は完了します次の目標はシステム上で L i n u xを稼働させることですそこでビットストリームを生成した後に「 X i l i n x S D K F S B L ( F i r s t S t a g e B o o t L o a d e r )」と標準的なプロセスに従って L i n u x用のブートファイルを

Analog Dialogue 49-12 6

作成します新たに構築した H D L ベースの回路に対応する L i n u x のデバイスツリーとイメージファイルが A D - F M C O M M S 3 - E B Z 用の B S P と共に配布されていますすべてのファイルは L i n u x用の ブートファイルと共に S Dカードのブートパーティション上にコピーしますここには X i l i n x社のZ C 7 0 6上で A D Iの L i n u xディストリビューションを実行するために必要なすべてのファイルが格納されていることになります

Cコードをプラットフォームに配備する

ここまでにHDLで構築したADS-B用の IPをSDRプラットフォームの回路に適用しLinux用のSDカードを作成しました続いてはADS-Bデータをデコードするためのソフトウェアアプリケーションを実装しますこのアプリケーションは「MATLAB CoderでCコードを生成する」のセクションで生成したC言語のコードを ベースとし以下のタスクを実行します

bull ADS-Bの信号を受信するようにAD9361を構成する

bull ADS-B用の IPコアからデータを読み出す

bull読み出したデータに含まれる有効なA D S - Bフレームを検出する

bullADS-B信号に含まれる情報をデコードして表示する

1つ目と 2つ目のタスクを実装するには l i b i i oのライブラリで提供されている機能を利用すると便利です 15このライブラリはAD9361の構成とデータの送受信を容易に行うためのインターフェース関数を提供していますここではまずシステムに関する以下のパラメータを設定します

bull 局部発振周波数109GHzbull サンプリングレート125MHzbull アナログ帯域幅40MHzbull 自動利得制御 fas t a t tackモード

上記のパラメータ以外にF I R型のデジタルフィルタ(データレートは 1 2 5 M S P S通過帯域周波数は325MHz阻止帯域周波数は4MHz)をAD9361に追加し受信側のデータには対象とする帯域の信号成分のみが含まれるように設定しますこのFIRフィルタのシステムパラメータと設計方法については本シリーズのPar t 3を参照してください 3

ADS-B用 IPの出力データはDMAブロックによってシステムのDDRメモリへと転送されます l ib i ioのライブラリにはADS-B用 IPから取得したデータを指定されたサイズでメモリバッファに配置する関数やバッファが一杯になるのを待つ関数ポインタを介してバッファにアクセスする関数などがありますバッファが一杯になるとADS-Bのデコードアルゴリズムによる データの処理を開始できますA D S - B用の I Pコアには2つの出力チャンネルがあります1つはADS-Bのビットストリームに対応しもう1つはビットストリームに含まれる有効なデータフレームの終了位置を示すために使われます 2つのチャンネルは同じ データレートで動作し互いに同期がとれています後者のチャンネルでサンプルの値が 1であればそれは データチャンネルにおける有効フレームの最終ビットを表します両方のチャンネルをパースしたらソフト

ウェアはADS-Bの有効なデータフレームをビットストリームから抽出しそのデータをM A T L A B C o d e rによって生成されたデコード用の関数に引き渡しますデ コード用の関数はADS-Bのデータフレームと現在の位置の緯度 経度を航空機の座標を計算する際の入力として使用しますなお現在の位置の緯度 経度はアプリケーションのパラメータとして指定されていますデ コードされたADS-BデータはSimul inkモデルを使用した場合と同じように表示されます

A D S - Bデータをデコードするためのアプリケーションは L i n u x環境下で m a k e f i l eを使用してビルドします A D Iはこのアプリケーションのソースコードとmakef i leをGitHubリポジトリで提供しています 16

以上でMathWorks社のHDL CoderとMATLAB Coderを使用してADS-Bモデルから生成したHDLCコードをプラットフォームに配備することができました次に行うべきことはシステムの機能を確認し結果を評価することです

システムの検証

システムの機能を検証するためにまずはAD-FMCOM-M S 3 - E B Zの1つの受信ポートと1つの送信ポートの間を ループバックの形で接続しシミュレーションで使用したのと同じADS-B信号を送信しますそのデータを受信してデコードすればSDRプラットフォームで実行したアルゴリズムの出力がシミュレーション結果と一致することを確認できます図11に示したのはADS-Bデータをデコードするアプリケーションの出力結果ですこれを見るとPar t 3に示した取得済みのデータによるHILシミュレーションの結果と同じであることがわかりますこれによりシステムが期待どおりに動作しており現実のデータを処理する準備が整っているという確証が得られます

図 1 1 ループバックによるテストの結果

実際のフィールドテストではマサチューセッツ州ネイティックにあるMathWorks社本社の屋外にSDRプラットフォームで構築したレシーバを配置しましたそして受信したライブ信号をシステムでデコードすることにより得られたA D S - Bの情報と航空機のリアルタイム追跡ウェブサイト( f l igh t radar24 comなど)で提供される情報とを比較しましたその結果開発したシステムはアンテナの見通し線上にある航空機から受信した信号を正しくデコードしていることが確認できました図12にシステムによって検出した航空機の情報とオンラインで得られる航空機の追跡情報を示しました両者を比較するとデコード用のアルゴリズムによって正しい航空機 ID高度速度緯度 経度が得られていることがわかります

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 5

ュレーション)とA D - F M C O M M S 3 - E B Z上のA D 9 3 6 1との間のデータ送受信に必要なすべての IPブロックが含まれています図7にこのH D Lリファレンス設計のブロック図を示しました

AD9361用の I PコアはA D 9361とZynq SoCの間でデータを送受信するためのLV D Sインターフェースと回路のその他の部分のデータインターフェースを実現しますAD9361用 IPとDDRメモリの間の高速データ転送にはDMAブロックが使われますAD9361用 IPブロックに対するデータインターフェースは受信用と送信用にそれぞれ4本のデータラインを備えていますこれらはAD9361の2個の受信チャンネルと2個の送信チャンネルの I Qデータに対応しています各データラインは1 6ビット幅ですシステム内のデータ転送をより効率良く行うために送受信データはDMAブロックによって管理される64ビット幅のバスにパッキングされますパックとアンパックを行うブロックによりAD9361用IPにつながる16ビットの並列データラインがDMAに接続されます

A D S - BモデルのH D LコードをS D RプラットフォームにおいてHDLを適用可能な既存のインフラに配備するにはデータパスに挿入できる IPコアを構築する必要がありますこれによって受信した信号をリアルタイムに処理し得られたデータをソフトウェアのレイヤに転送しますこのような配備の作業は難易度が高く時間がかかることがよくありますHDLで設計した機能を細部にわたって理解するだけでなくHDLのプログラミングについての十分なスキルも必要になるからですこの作業を簡素化するためにMathWorks社はHDL Coderに「HDLワークフロー アドバイザー」というユーティリティを用意しています一方ADIはSDRプラットフォームであるAD-FMCOMMS3-EBZと「AD-FMCOMMS2-EB Z」Xil inx社のZC706を対象としたボードサポートパッケージ(BSP)を提供しています 13

HDLワークフロー アドバイザーはSimul inkモデルからH D Lコードを生成するために必要な作業を正しい手順で進められるようにユーザーを導いてくれますユー ザーは「ASICFPGA」「FPGA-in-the-Loop」「IP Core Genera t ion( IPコアの生成)」といった複数の選択肢の中からターゲットとするワークフローを選択できますターゲットとなるプラットフォームとしてはXilinx社の評価用ボードAltera社の評価用ボードまたはSDRプラットフォームであるFMCOMMS23 C70606を選択できますその後に行うコードの生成とターゲットへの統合の処理はHDLワークフロー アドバイザーによって自動的に実施できます

ADIが提供するBSPはボードの定義とリファレンス設計を集めたものです 14これによって既存のHDLリファレンス設計と同等の IPブロックを生成しそれをHDLリファレンス設計に組み込むために必要な情報とツールがHDLワークフロー アドバイザーに提供されます図8はADS-BモデルのIPコアを生成するようにHDLワークフロー アドバイザーを設定する方法を示したものですワークフローとしては「 IP Core Genera t ion 」を選択しターゲットプラットフォームとしては「AnalogDevices FMCOMMS23 ZC706」を選択する必要があることに注意してください

図 8 H D Lワークフロー アドバイザーの設定

次のステップでは I Pとリファレンス設計の間のイン ターフェースの構成を行いますモデルの入力では未処理の I Qサンプルを受け取りますモデルの入力ポートはAD9 3 6 1のデータポートに直接接続しますモデルの出力信号のうちここで関心があるのはda ta f r ame_va l idb i t_c lkの各信号だけですda taと f r ame_va l idは16ビット幅でbi t_clk信号はクロックとして使用しますこれらの信号はBSPのDUT Data x Outインターフェースに接続可能ですつまりDMAのブロックはこれらの信号に直接アクセスしますその後dataはソフトウェアレイヤからアクセスが可能なDDRに転送されますbi t_c lk信号はBSPのDUT Data Val id Outインターフェースに接続されDMAのサンプリングレートを制御します図9にHDLインターフェースの構成方法を示しました

図 9 H D Lインターフェースの構成

ターゲットとのインターフェースを定義したら次のステップに進みますHDLワークフロー アドバイザーのステップ2とステップ3はデフォルトの設定のままとしステップ41(プロジェクトの作成)を実行することでプロジェクト作成のプロセスを開始しますこのステップの結果としてADS-B用の IPコアがADIのHDLリファレンス設計に組み込まれたVivadoプロジェクトが作成されます図10にADS-B用の IPコアと回路内のその他のブロックとの接続を示しました

FIFO

AD9361用のIP 16ビット 16ビット

16ビット 64

ビットデータのパック

ADS-B用のIPFIFORx DMA

データクロック2456 MHz

クロック分周器[データクロック]4

図 1 0 H D Lリファレンス設計におけるA D S - B用 I Pの接続

Vi v a d oプロジェクトからビットストリームを生成することでH D Lベースの統合作業は完了します次の目標はシステム上で L i n u xを稼働させることですそこでビットストリームを生成した後に「 X i l i n x S D K F S B L ( F i r s t S t a g e B o o t L o a d e r )」と標準的なプロセスに従って L i n u x用のブートファイルを

Analog Dialogue 49-12 6

作成します新たに構築した H D L ベースの回路に対応する L i n u x のデバイスツリーとイメージファイルが A D - F M C O M M S 3 - E B Z 用の B S P と共に配布されていますすべてのファイルは L i n u x用の ブートファイルと共に S Dカードのブートパーティション上にコピーしますここには X i l i n x社のZ C 7 0 6上で A D Iの L i n u xディストリビューションを実行するために必要なすべてのファイルが格納されていることになります

Cコードをプラットフォームに配備する

ここまでにHDLで構築したADS-B用の IPをSDRプラットフォームの回路に適用しLinux用のSDカードを作成しました続いてはADS-Bデータをデコードするためのソフトウェアアプリケーションを実装しますこのアプリケーションは「MATLAB CoderでCコードを生成する」のセクションで生成したC言語のコードを ベースとし以下のタスクを実行します

bull ADS-Bの信号を受信するようにAD9361を構成する

bull ADS-B用の IPコアからデータを読み出す

bull読み出したデータに含まれる有効なA D S - Bフレームを検出する

bullADS-B信号に含まれる情報をデコードして表示する

1つ目と 2つ目のタスクを実装するには l i b i i oのライブラリで提供されている機能を利用すると便利です 15このライブラリはAD9361の構成とデータの送受信を容易に行うためのインターフェース関数を提供していますここではまずシステムに関する以下のパラメータを設定します

bull 局部発振周波数109GHzbull サンプリングレート125MHzbull アナログ帯域幅40MHzbull 自動利得制御 fas t a t tackモード

上記のパラメータ以外にF I R型のデジタルフィルタ(データレートは 1 2 5 M S P S通過帯域周波数は325MHz阻止帯域周波数は4MHz)をAD9361に追加し受信側のデータには対象とする帯域の信号成分のみが含まれるように設定しますこのFIRフィルタのシステムパラメータと設計方法については本シリーズのPar t 3を参照してください 3

ADS-B用 IPの出力データはDMAブロックによってシステムのDDRメモリへと転送されます l ib i ioのライブラリにはADS-B用 IPから取得したデータを指定されたサイズでメモリバッファに配置する関数やバッファが一杯になるのを待つ関数ポインタを介してバッファにアクセスする関数などがありますバッファが一杯になるとADS-Bのデコードアルゴリズムによる データの処理を開始できますA D S - B用の I Pコアには2つの出力チャンネルがあります1つはADS-Bのビットストリームに対応しもう1つはビットストリームに含まれる有効なデータフレームの終了位置を示すために使われます 2つのチャンネルは同じ データレートで動作し互いに同期がとれています後者のチャンネルでサンプルの値が 1であればそれは データチャンネルにおける有効フレームの最終ビットを表します両方のチャンネルをパースしたらソフト

ウェアはADS-Bの有効なデータフレームをビットストリームから抽出しそのデータをM A T L A B C o d e rによって生成されたデコード用の関数に引き渡しますデ コード用の関数はADS-Bのデータフレームと現在の位置の緯度 経度を航空機の座標を計算する際の入力として使用しますなお現在の位置の緯度 経度はアプリケーションのパラメータとして指定されていますデ コードされたADS-BデータはSimul inkモデルを使用した場合と同じように表示されます

A D S - Bデータをデコードするためのアプリケーションは L i n u x環境下で m a k e f i l eを使用してビルドします A D Iはこのアプリケーションのソースコードとmakef i leをGitHubリポジトリで提供しています 16

以上でMathWorks社のHDL CoderとMATLAB Coderを使用してADS-Bモデルから生成したHDLCコードをプラットフォームに配備することができました次に行うべきことはシステムの機能を確認し結果を評価することです

システムの検証

システムの機能を検証するためにまずはAD-FMCOM-M S 3 - E B Zの1つの受信ポートと1つの送信ポートの間を ループバックの形で接続しシミュレーションで使用したのと同じADS-B信号を送信しますそのデータを受信してデコードすればSDRプラットフォームで実行したアルゴリズムの出力がシミュレーション結果と一致することを確認できます図11に示したのはADS-Bデータをデコードするアプリケーションの出力結果ですこれを見るとPar t 3に示した取得済みのデータによるHILシミュレーションの結果と同じであることがわかりますこれによりシステムが期待どおりに動作しており現実のデータを処理する準備が整っているという確証が得られます

図 1 1 ループバックによるテストの結果

実際のフィールドテストではマサチューセッツ州ネイティックにあるMathWorks社本社の屋外にSDRプラットフォームで構築したレシーバを配置しましたそして受信したライブ信号をシステムでデコードすることにより得られたA D S - Bの情報と航空機のリアルタイム追跡ウェブサイト( f l igh t radar24 comなど)で提供される情報とを比較しましたその結果開発したシステムはアンテナの見通し線上にある航空機から受信した信号を正しくデコードしていることが確認できました図12にシステムによって検出した航空機の情報とオンラインで得られる航空機の追跡情報を示しました両者を比較するとデコード用のアルゴリズムによって正しい航空機 ID高度速度緯度 経度が得られていることがわかります

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 6

作成します新たに構築した H D L ベースの回路に対応する L i n u x のデバイスツリーとイメージファイルが A D - F M C O M M S 3 - E B Z 用の B S P と共に配布されていますすべてのファイルは L i n u x用の ブートファイルと共に S Dカードのブートパーティション上にコピーしますここには X i l i n x社のZ C 7 0 6上で A D Iの L i n u xディストリビューションを実行するために必要なすべてのファイルが格納されていることになります

Cコードをプラットフォームに配備する

ここまでにHDLで構築したADS-B用の IPをSDRプラットフォームの回路に適用しLinux用のSDカードを作成しました続いてはADS-Bデータをデコードするためのソフトウェアアプリケーションを実装しますこのアプリケーションは「MATLAB CoderでCコードを生成する」のセクションで生成したC言語のコードを ベースとし以下のタスクを実行します

bull ADS-Bの信号を受信するようにAD9361を構成する

bull ADS-B用の IPコアからデータを読み出す

bull読み出したデータに含まれる有効なA D S - Bフレームを検出する

bullADS-B信号に含まれる情報をデコードして表示する

1つ目と 2つ目のタスクを実装するには l i b i i oのライブラリで提供されている機能を利用すると便利です 15このライブラリはAD9361の構成とデータの送受信を容易に行うためのインターフェース関数を提供していますここではまずシステムに関する以下のパラメータを設定します

bull 局部発振周波数109GHzbull サンプリングレート125MHzbull アナログ帯域幅40MHzbull 自動利得制御 fas t a t tackモード

上記のパラメータ以外にF I R型のデジタルフィルタ(データレートは 1 2 5 M S P S通過帯域周波数は325MHz阻止帯域周波数は4MHz)をAD9361に追加し受信側のデータには対象とする帯域の信号成分のみが含まれるように設定しますこのFIRフィルタのシステムパラメータと設計方法については本シリーズのPar t 3を参照してください 3

ADS-B用 IPの出力データはDMAブロックによってシステムのDDRメモリへと転送されます l ib i ioのライブラリにはADS-B用 IPから取得したデータを指定されたサイズでメモリバッファに配置する関数やバッファが一杯になるのを待つ関数ポインタを介してバッファにアクセスする関数などがありますバッファが一杯になるとADS-Bのデコードアルゴリズムによる データの処理を開始できますA D S - B用の I Pコアには2つの出力チャンネルがあります1つはADS-Bのビットストリームに対応しもう1つはビットストリームに含まれる有効なデータフレームの終了位置を示すために使われます 2つのチャンネルは同じ データレートで動作し互いに同期がとれています後者のチャンネルでサンプルの値が 1であればそれは データチャンネルにおける有効フレームの最終ビットを表します両方のチャンネルをパースしたらソフト

ウェアはADS-Bの有効なデータフレームをビットストリームから抽出しそのデータをM A T L A B C o d e rによって生成されたデコード用の関数に引き渡しますデ コード用の関数はADS-Bのデータフレームと現在の位置の緯度 経度を航空機の座標を計算する際の入力として使用しますなお現在の位置の緯度 経度はアプリケーションのパラメータとして指定されていますデ コードされたADS-BデータはSimul inkモデルを使用した場合と同じように表示されます

A D S - Bデータをデコードするためのアプリケーションは L i n u x環境下で m a k e f i l eを使用してビルドします A D Iはこのアプリケーションのソースコードとmakef i leをGitHubリポジトリで提供しています 16

以上でMathWorks社のHDL CoderとMATLAB Coderを使用してADS-Bモデルから生成したHDLCコードをプラットフォームに配備することができました次に行うべきことはシステムの機能を確認し結果を評価することです

システムの検証

システムの機能を検証するためにまずはAD-FMCOM-M S 3 - E B Zの1つの受信ポートと1つの送信ポートの間を ループバックの形で接続しシミュレーションで使用したのと同じADS-B信号を送信しますそのデータを受信してデコードすればSDRプラットフォームで実行したアルゴリズムの出力がシミュレーション結果と一致することを確認できます図11に示したのはADS-Bデータをデコードするアプリケーションの出力結果ですこれを見るとPar t 3に示した取得済みのデータによるHILシミュレーションの結果と同じであることがわかりますこれによりシステムが期待どおりに動作しており現実のデータを処理する準備が整っているという確証が得られます

図 1 1 ループバックによるテストの結果

実際のフィールドテストではマサチューセッツ州ネイティックにあるMathWorks社本社の屋外にSDRプラットフォームで構築したレシーバを配置しましたそして受信したライブ信号をシステムでデコードすることにより得られたA D S - Bの情報と航空機のリアルタイム追跡ウェブサイト( f l igh t radar24 comなど)で提供される情報とを比較しましたその結果開発したシステムはアンテナの見通し線上にある航空機から受信した信号を正しくデコードしていることが確認できました図12にシステムによって検出した航空機の情報とオンラインで得られる航空機の追跡情報を示しました両者を比較するとデコード用のアルゴリズムによって正しい航空機 ID高度速度緯度 経度が得られていることがわかります

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 7

図 1 2 ライブデータによるテストの結果

まとめ本シリーズではモデルベース設計を活用し S D Rシステムのシミュレーションから製造までのすべての作業の実施方法を4部構成で示しましたシリーズ全体で ハードウェアへの実装を前提としたSimul inkモデルによってADS-B信号のデコード機能を開発するためのすべての工程を網羅していますシミュレーション用のモデルを設計し記録済みのADS-Bメッセージをデコードできることを実証したうえでSDRに対応するハードウェアプラットフォームによって取得したライブデータを使いそのモデルの検証を行いましたこの作業によりモデルだけでなくSDRプラットフォームのアナログフロントエンドやレシーバ用のデジタルシグナルチェーンの設定が正しいことも検証できますまたプラットフォームがADS-B信号の受信用に正しくチューニングされていることの確証も得られましたその後Zynq SoCのプロセッシングシステムとプログラマブルロジックで実行する機能にモデルを分割しそれらを最適化したうえでHDLとC言語のコードを自動生成しました最後にHDLCコードをSDRプラットフォームに適用し民間航空機からのライブ信号を使ってシステムの機能を確認しました以上によりMathWorks社のモデル化ツールとコード生成ツールZynq SoCをベースとしたSDRプラットフォームを使用して完全に機能するSDRシステムを設計するための手順を示すことができました

本シリーズで例として取り上げたシステムはモデルベース設計のワークフローとプログラマブルで集積度の高い無線用ハードウェアであるADIのRFアジャイルトランシーバ IC(AD9361や「AD9364」)を組み合わせることによって従来の設計手法を適用するよりも迅速かつ低コストで適切に動作するプロトタイプを開発できることを示していますこのプロトタイプは以下に示す要因からほぼ障害に直面することなく比較的短

期間で構築することができました

bull適切なH D L Cコードの生成を可能にするM AT L A BとSimul inkによりADS-B用のレシーバのモデルを構築する能力

bullハードウェア ソフトウェアを統合するために必要な多くの作業を自動化するHDLワークフロー アドバイザーの機能

bullSDR用のプロトタイプを構築するためのその他の統合作業を支援するライブラリ( l ib i ioなど)

bullMathWorks社とADIが提供する製品のヘルプドキュメントや技術サポート

A D S - Bは比較的シンプルな規格なので S D R用プロトタイプの開発にモデルベースの手法を適用する方法を例としては最適でしたモデルベース設計とZ y n q S o Cをベースとする S D Rプラットフォームを採用すればこれよりも格段に複雑で高度なQPSK(4位相偏移変 調)QAM(直角位相振幅変調)LTEに対応するSDRシステムも本シリーズで示したワークフローに従って開発できるはずです

参考文献1 Di Pu Andre i Cozma Tom Hi l l 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 1ADIXi l inx社のSDR向けラピッドプロトタイピング用プラットフォーム――その機能メリット開発ツールについて学ぶ」Analog Dia logue 49-09

2 Mike Donovan Andre i Cozma Di Pu 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 2MATLABとSimul inkによるモードS信号の検出とデコード」Analog Dia logue 49-10

3 Di Pu Andre i Cozma 「製造までの4つのステップモデルベース設計で実現するソフトウェア無線Par t 3HILによるモードS信号のデコード用アルゴリズムの検証」 Analog Dia logue 49-11

4 Analog Devices Gi tHub repos i tory(ADIのGitHubリポジトリ)

5 HDL Coder

6 HDL Coder Block Suppor t(サポートされているブロック)

7 MATLAB Coder

8 MATLAB Toolboxes

9 MATLAB Code Genera t ion Readiness Tool(コード生成の準備状態ツール)

10 AD-FMCOMMS3-EBZ User Guide(AD-FMCOM-MS3-EBZユーザーガイド)

11 Xi l inx Zynq-7000 Al l Programmable SoC ZC706 Evalua t ion Ki t(Xil inx Zynq-7000 Al l Programmable SoC用の評価キット「ZC706」)

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03

Analog Dialogue 49-12 8

Andre i Cozma(andre i cozmaanalog com)はADIのエンジニアリングマネージャーとしてシステムレベルのリファレンス設計の開発を支援しています産業用オートメーションと情報科学に関する学士号に加えて電子工学と電気通信工学の博士号を取得していますモーター制御産業用オートメーションソフトウェア無線(SDR)電気通信などさまざまな分野にわたって設計 開発プロジェクトに従事した経験を持ちます

Andrei Cozma

Di PuDi Pu(di puanalogcom)はADIのシステムモデリングアプリケーションエンジニアですソフトウェア無線(SDR)に対応するプラットフォームやシステムの設計 開発をサポートしています特にMathWorks社と密に連携することで両社の顧客が抱える課題の解決に取り組んでいます2007年に中国南京にある南京理工大学(NJUST)で理学士の学位を取得していますまたマサチューセッツ州ウースターにあるウースター工科大学(WPI)で2009年に電気工学の修士号2013年に博士号を取得しましたWPIでは2013年の「Sigma Xi Research Award for Doctora l Disser ta t ion」を受賞しています

著者

Mike Donovan(mikedonovanmathworks com)はMathWorks社のアプリケーションエンジニアリンググループでマネージャーを務めていますバックネル大学で電気工学の学士号をコネチカット大学で修士号を取得していますMathWorks社に入社する前はレーダー 衛星通信システム分野ブロードバンド通信分野の業務に従事していました

Mike Donovan

12 AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZ AD-FMCOMMS4-EBZ HDLAD-FMCOMMS5-EBZ HDL Reference Des ign(AD-FMCOMMS2-EBZAD-FMCOMMS3-EBZAD-FMCOMMS4-EBZAD-FMCOMMS5-EBZのHDLリファレンス設計)

13 Analog Devices BSP for MathWorks HDL Workf low Advisor(ADIが提供するMathWorks HDLワーク フロー アドバイザー向けBSP)

14 Board and Reference Des ign Regis t ra t ion Sys tem (ボードとリファレンス設計の登録システム)

15 What I s Lib i io(Libi ioとは何か)

16 MathWorks Targe t ing ModelsmdashADSB(MathWorks ターゲットモデル -ADSB)

この著者が執筆した 他の技術文書

FPGAベースのシステムでモーター制御の性能を向上

Analog Dialogue 49-03