99
Vivado Design Suite チュートリアル System Generator を使用した モデル ースの DSP デザイン UG948 (v2019.2) 2019 11 6 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資 料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報 につきましては、必ず最新英語版をご参照ください。 すべてのバージョンを表示

Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

Vivado Design Suite チュートリアルSystem Generator を使用したモデル ベ ースの DSP デザインUG948 (v2019.2) 2019 年 11 月 6 日

この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

すべてのバージョンを表示

Page 2: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

改訂履歴次の表に、この文書の改訂履歴を示します。

セクション 改訂内容2019 年 11 月 6 日 バージョン 2019.2

チュートリアル デザイン ファイルの場所および準備 デザイン ファイルをアップデート。演習 6 演習 6 を削除。

2019 年 5 月 22 日 バージョン 2019.1

チュートリアル デザイン ファイルの場所および準備 デザイン ファイルをアップデート。演習 3 手順 1: System Generator でのタイミング解析 図をアップデート。

改訂履歴

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 2

Page 3: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

目次改訂履歴..........................................................................................................................................................................2

System Generator for DSP の概要............................................................................................................5ソフトウェア要件........................................................................................................................................................... 6MATLAB の Vivado Design Suite への関連付け........................................................................................................... 6チュートリアル デザイン ファイルの場所および準備................................................................................................. 7

演習 1: System Generator の概要.............................................................................................................. 8手順 1: FPGA でのデザインの作成.................................................................................................................................8手順 2: FPGA での最適化されたデザインの作成........................................................................................................ 20手順 3: 個別のコンポーネントを使用したデザインの作成.........................................................................................25手順 4: データ型の使用................................................................................................................................................ 34まとめ............................................................................................................................................................................ 44

演習 2: System Generator へのコードのインポート.................................................................45手順 1: M コードを使用した制御のモデリング...........................................................................................................45手順 2: HDL で記述されたブロックのモデリング.......................................................................................................49手順 3: C/C++ コードで記述されたブロックのモデリング........................................................................................ 55

演習 3: タイミングおよびリソース解析................................................................................................63手順 1: System Generator でのタイミング解析........................................................................................................ 63手順 2: System Generator でのリソース解析............................................................................................................ 70まとめ............................................................................................................................................................................ 73

演習 4: マルチレート システム.................................................................................................................... 74手順 1: クロック ドメイン階層の作成......................................................................................................................... 74手順 2: 非同期チャネルの作成..................................................................................................................................... 78手順 3: クロック ドメインの指定.................................................................................................................................82まとめ............................................................................................................................................................................ 86

演習 5: IP インテグレーターでの AXI インターフェイスの使用........................................ 87手順 1: AXI インターフェイスの定義と作成................................................................................................................87手順 2: System Generator IP を使用した Vivado プロジェクトの作成....................................................................88手順 3: IP インテグレーターでのデザインの作成.......................................................................................................90手順 4: デザインのインプリメント..............................................................................................................................96まとめ............................................................................................................................................................................ 97

付録 A: その他のリソースおよび法的通知.......................................................................................... 98ザイリンクス リソース.................................................................................................................................................98

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 3

Page 4: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

Documentation Navigator およびデザイン ハブ...................................................................................................... 98お読みください: 重要な法的通知.................................................................................................................................98

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 4

Page 5: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

System Generator for DSP の概要System Generator for DSP は、FPGA デザイン用に MathWorks® モデル ベースの Simulink® デザイン環境を使用できるようにする Vivado® Design Suite に含まれるデザイン ツールです。System Generator を使用するのに、ザイリンクス FPGA デバイスまたは RTL デザイン手法の使用経験は不要です。デザインは、Simulink モデリング環境でザイリンクスのブロックセットを使用して記述します。RTL 合成およびインプリメンテーション (ゲート レベルのデザインをFPGA に配置配線) などのダウンストリームの FPGA 手順が自動的に実行され、FPGA プログラム ビットストリームが生成されます。Simulink のザイリンクス ブロックセットには、80 個以上の機能ブロックが含まれ含ます。これらのブロックには、加算器、乗算器、レジスタなどのよく使用される機能ブロックのほか、フォワード エラー訂正ブロック、FFT、フィルター、メモリなどの複雑な DSP 機能ブロックも含まれます。これらの複雑なブロックは ザイリンクス LogiCORE™IP を利用しており、選択したターゲット デバイス用に最適化された結果を得ることができます。ビデオ: System Generator で複数のクロック ドメインを使用して複雑な DSP システムをインプリメントできるようにする方法は、Vivado Design Suite QuickTake ビデオ: System Generator でのマルチクロック ドメインの使用をご視聴ください。ビデオ: System Generator で使用する Vivado HLS IP ブロックを生成する方法、System Generator デザインでVivado HLS ブロックを使用する方法は、Vivado Design Suite QuickTake ビデオ: System Generator for DSP で使用する Vivado HLS ブロックを生成をご視聴ください。ビデオ: Vivado HLS デザインを IP ブロックとして System Generator for DSP に組み込む方法は、Vivado DesignSuite QuickTake ビデオ: System Generator で Vivado HLS C、C++、System-C ブロックを使用をご視聴ください。ビデオ: System Generator の AXI4-Lite 抽象化機能を使用して DSP デザインをエンベデッド システムに組み込む方法は、Vivado Design Suite QuickTake ビデオ: Vivado System Generator デザイン用の AXI4-Lite インターフェイスの指定をご視聴ください。IP カタログへの統合、インターフェイスの接続の自動化、ソフトウェア API が完全にサポートされています。ビデオ: Vivado System Generator for DSP でポイント ツー ポイント イーサネット ハードウェア協調シミュレーションを使用する方法は、Vivado Design Suite QuickTake ビデオ: Vivado System Generator for DSP を使用したハードウェア協調シミュレーションをご視聴ください。ハードウェア協調シミュレーションを使用すると、FPGA で実行されるデザインを直接 Simulink シミュレーションに読み込むことができます。このチュートリアルでは、次を実行します。• 演習 1

○ System Generator を使用してモデルを作成および検証します。○ ワークスペース変数を使用して、モデルのパラメーターを簡単に変更できるようにします。○ モデルを FPGA デバイスに合成し、デザインをハードウェア用に最適化します。○ 固定小数点型を使用すると、精度を多少低下させる代わりにハードウェア エリアを縮小してパフォーマンスを向上できることを学びます。

• 演習 2: M コードを使用して制御システムをモデリングし、Verilog または VHDL で記述された既存の RTL デザインをデザインに組み込み、HLS のツール統合を利用して C/C++ ソース ファイルを System Generator モデルに組み込みます。

• 演習 3: タイミング解析およびリソース解析を実行し、タイミング違反を解決します。

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 5

Page 6: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

• 演習 4: 複数のクロック ドメインを使用して効率的なデザインを作成します。• 演習 5: AXI インターフェイスおよび Vivado IP インテグレーターを使用して、デザインにモデルを組み込みます。

ソフトウェア要件このリリースの System Generator でサポートされている MATLAB® リリースは、『Vivado Design Suite ユーザー ガイド: リリース ノート、インストール、およびライセンス』 (UG973) の「互換性のあるサードパーティ ツール」を参照してください。このリリースの System Generator でサポートされているオペレーティング システムは、『Vivado Design Suite ユーザー ガイド: リリース ノート、インストール、およびライセンス』 (UG973) の「サポートされるオペレーティング システム」を参照してください。

MATLAB の Vivado Design Suite への関連付け始める前に、MATLAB を Vivado Design Suite に関連付ける必要があります。次を実行します。1. MATLAB を設定します。

• Windows の場合:

1. [Start] → [All Programs] → [Xilinx Design Tools] → [ Vivado 2019.x] → [System Generator] → [SystemGenerator 2019.x MATLAB Configurator] をクリックします。

重要: Windows システムでは、MATLAB Configurator を管理者として起動する必要があります。メニューでMATLAB Configurator を選択したら、右クリックして [Run as Administrator] (管理者として実行) をクリックします。

図 1: MATLAB インストールの選択

2. 設定する MATLAB バージョンのチェック ボックスをクリックし、[OK] をクリックします。• Linux の場合:

System Generator for DSP の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 6

Page 7: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

Linux で System Generator を起動するには、<Vivado install dir>/bin ディレクトリにある sysgenというシェル スクリプトを使用します。このスクリプトを実行する前に、使用している Linux の $PATH 環境変数に MATLAB 実行ファイルが指定されていることを確認してください。System Generator スクリプトを実行すると $PATH で最初に検出された MATLAB 実行ファイルが実行され、System Generator がそのMATLAB のセッションに関連付けられます。また、sysgen シェル スクリプトでは、MATLAB でサポートされるすべてのオプションがサポートされているので、これらをコマンド ライン引数として sysgen スクリプトに指定できます。System Generator が開いたら、MATLAB コマンド ウィンドウに「version 」と入力すると、System Generatorに関連付けられている MATLAB のバージョンを確認できます。>> versionans = '9.3.0.713579 (R2017b)'

チュートリアル デザイン ファイルの場所および準備このチュートリアルには演習ごとにプロジェクト ファイルおよびソース ファイルがあります。このチュートリアルのデザイン ファイルは、japan.xilinx.com からダウンロードできます。1. ザイリンクス ウェブサイトからリファレンス デザイン ファイルをダウンロードします。2. ZIP ファイルの内容を、ローカル ハード ドライブまたはネットワーク上の書き込可能なディレクトリに解凍しま

す。推奨: チュートリアルの作業を進めながら、チュートリアルのデザイン データを変更していきます。このチュートリアルを開始するたびに、ug948-design-files.zip から新しく SysGen_Tutorial ディレクトリを解凍して使用することをお勧めします。ヒント: この資料では、チュートリアル ファイルは C:\SysGen_Tutorial に保存されていると想定しています。この資料内のパス名および図は、このパス名を参照しています。チュートリアル ファイルを別のディレクトリに保存する場合は、それに合わせてパス名を変更してください。

System Generator for DSP の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 7

Page 8: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

演習 1

System Generator の概要この演習では、System Generator を使用して Simulink® のデザインを指定し、デザインを FPGA に合成する方法を学びます。このチュートリアルでは標準 FIR フィルターを使用しており、System Generator のデザイン オプションを使用して最終的な FPGA ハードウェアが正確なものになるようにする方法を示します。

目標この演習を終了すると、次のことができるようになります。• System Generator ブロックセットを使用してデザインを作成。• 複雑なブロックセットまたは個別のブロックセットを使用してデザインを作成。• Vivado® Design Suite を使用してデザインを FPGA に合成。手順この演習では、次の 4 つの手順を実行します。• 手順 1: ザイリンクス FIR Compiler ブロックを使用する既存の Simulink デザインを使用し、Vivado で最終的なゲート レベルの結果を確認します。

• 手順 2: オーバーサンプリングを使用してより効率的なデザインを作成します。• 手順 3: 同じデザインを標準ブロックセットを使用して作成します。• 手順 4: 浮動小数点および固定小数点など、データ型の使用方法を理解します。

手順 1: FPGA でのデザインの作成この手順では、System Generator の基本操作を学び、Simulink デザインを FPGA に合成します。1. System Generator を起動します。

• Windows の場合は、[Start] → [All Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [System Generator] → [System Generator 2019.x] をクリックします。

• Linux システムの場合は、コマンド プロンプトに「sysgen」と入力します。2. 「cd C:\SysGen_Tutorial\Lab1」と入力して Lab1 フォルダーに移動します。

• ディレクトリの内容は、MATLAB® の [Current Folder] ブラウザーで、またはコマンド ライン プロンプトで「ls」と入力して確認できます。

3. 次のいずれかを実行して Lab1_1 デザインを開きます。• MATLAB のコマンド ウィンドウに「open Lab1_1.slx」と入力します。• [Current Folder] ブラウザーで Lab1_1.slx をダブルクリックします。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 8

Page 9: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

Lab1_1 デザインが開きます。このデザインは 2 つのサイン波ソースを加算し、2 つのローパス フィルターを個別に介して出力します。このデザインでは、ローパス フィルターは Simulink FDATool または Lowpass Filter ブロックを使用してインプリメントできることを示します。

図 2: Lab1_1 デザイン

4. Simulink プロジェクト ワークシートで、[Simulation] → [Run] をクリックするか、[Run simulation] ボタンをクリックします。

図 3: [Run simulation] ボタン

シミュレーションが終了すると、加算後のフィルターを介さない波形に 1 MHz および 9 MHz の要素が示され、2 つのフィルターを介した波形では 9 MHz 信号が減衰されいることが示されます。

図 4: 初期結果

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 9

Page 10: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

次に、同じフィルターを FPGA へのインプリメンテーション用に System Generator ブロックを使用して作成します。

5. Simulink ツールバーの [Library Browse] ボタンをクリックし、Simulink Library Browser を開きます。図 5: [Library Browse] ボタン

System Generator を使用すると、Simulink ライブラリに FPGA にデザインをインプリメントするためのブロックが含まれます。System Generator で提供されるブロックの詳細は、『Vivado Design Suite リファレンス ガイド:System Generator を使用したモデル ベースの DSP デザイン』 (UG958) を参照してください。

6. [Xilinx Blockset] を展開して [DSP] を選択し、[Digital FIR Filter] を選択します。7. [Digital FIR Filter] を右クリックし、[Add block to model Lab1_1] を選択します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 10

Page 11: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 6: Digital FIR Filter ブロックの追加

Digital FIR Filter ブロックのフィルター係数を定義するには、[Digital FIR Filter] ブロックをダブルクリックしてブロック属性にアクセスするか、ここで示すように FDATool を使用します。

8. [DSP] ライブラリから [FDATool] を選択して Lab1_1 デザインに追加します。FPGA デザインでは、次の 3 つを定義する必要があります。• 入力ポート• 出力ポート• FPGA テクノロジ次の 3 つの手順で、これらの属性を Simulink デザインに追加します。

重要: デザインにこれらのコンポーネントを正しく追加しないと、デザインを FPGA にインプリメントできません。この後の演習でこれらのブロックの設定を詳細に確認しますが、これらはすべての System Generator デザインに存在している必要があります。

9. [Basic Elements] の [Gateway In] を選択し、デザインに追加します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 11

Page 12: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 7: Gateway In ブロックの追加

10. 同じライブラリから Gateway Out ブロックをデザインに追加します。11. 同じライブラリから FPGA テクノロジを定義する System Generator トークンを追加します。12. 既存の Spectrum Analyzer ブロックのいずれかのコピーを作成し、インスタンス名ラベルをクリックして名前を

Spectrum Analyzer SysGen に変更します。ブロックを次の図に示すように接続します。マウスを使用してポートとネットの間を接続します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 12

Page 13: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 8: System Generator デザイン

次に、System Generator ブロックを設定します。

System Generator ブロックの設定まず、新しいフィルターの係数を定義します。ここでは、ザイリンクスの FDATool ブロックを使用します。既存のFDATool ブロックを開いて、周波数および振幅の設定を確認します。1. [Digital Filter Design] インスタンスをダブルクリックし、プロパティ エディターを開きます。既存のフィルターのプロパティを確認します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 13

Page 14: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 9: フィルターの仕様

2. Digital Filter Design インスタンスのプロパティ エディターを閉じます。3. [FDATool] インスタンスをダブルクリックし、プロパティ エディターを開きます。4. フィルターの仕様が次の値であることを確認します。

• [Frequency Specifications]

○ [Units]: [MHz]

○ [Fs]: [20]

○ [Fpass]: [1.5]

○ [Fstop]: [8.5]

• [Magnitude Specifications]

○ [Units]: [dB]

○ [Apass]: [0.01]

○ [Astop]: [100]

5. プロパティ エディターを閉じます。次に、FDATool インスタンスのフィルター パラメーターを Digital FIR Filter インスタンスに関連付けます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 14

Page 15: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

6. [Digital FIR Filter] インスタンスをダブルクリックし、プロパティ エディターを開きます。7. [Filter Parameters] セクションで [Coefficient Vector] に「xlfda_numerator('FDATool')」と入力し、FDAToolインスタンスで定義されている係数が使用されるようにします。

図 10: Digital FIR Filter ブロックの仕様

8. [OK] をクリックして Digital FIR Filter のプロパティ エディターを閉じます。FPGA では、デザインは特定のクロック レートで動作し、特定のビット数を使用してデータ値が表現されます。標準 Simulink 環境で使用される連続時間を FPGA ハードウェア環境での離散時間に変換するには、Gateway Inブロックでサンプル レートを定義します。これにより、連続入力波形のサンプリング頻度が決まります。このサンプル レートは、System Generator によりデザインのほかのブロックにも自動的に伝搬されます。データを表現するのに使用されるビット数も、Gateway In ブロックで定義するとシステム全体に伝搬されます。このチュートリアルでは使用しませんが、一部のザイリンクス ブロックでは、自動伝搬の一部としてレートとビット幅の変更 (増加または減少) がイネーブルになっています。これらのブロックの詳細は、『Vivado Design Suiteリファレンス ガイド: System Generator を使用したモデル ベースの DSP デザイン』 (UG958) を参照してください。これらの属性 (レートおよびビット幅) により、連続時間信号の表現の精度が決まります。これらの属性は、最終的なハードウェアのサイズ、パフォーマンス、およびコストにも影響します。System Generator では、Simulink 環境を使用して定義およびシミュレーションすることにより、これらの属性の影響を確認できます。

9. [Gateway In] ブロックをダブルクリックし、プロパティ エディターを開きます。デザインの周波数が最大のサイン波は 9 MHz なので、入力ポートのサンプリング周波数は 18 MHz 以上にする必要があります。このデザインでは 20 MHz を使用します。

10. プロパティ エディターで [Sample period] を [1/20e6] に設定します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 15

Page 16: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

11. デフォルト設定のままにし、固定小数点 ([Fixed-point])、2 の補数 ([Signed (2's comp)]、[Number of bits] は 16 ビット、[Binary point] は 14 ビットを使用します。この設定では、サイン波 (どちらも振幅 1) の和を表すのに必要な範囲を超える -2.0 ~ 1.999 の範囲を表現できます。

図 11: Gateway In ブロックのプロパティ

12. [OK] をクリックして Gateway In のプロパティ エディターを閉じます。これで、ハードウェアでの精度を確認するために正確なサンプル レートおよびビット幅を使用できます。

13. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。データを十分に表現するため入力ポートは 20 MHz でサンプリングされるので、FPGA のクロック レートとSimulink のサンプル周期を 20 MHz 以上に設定する必要があります。

14. [Clocking] タブをクリックします。a. [FPGA clock period] を 50 ns (1/20 MHz) に指定します。b. [Simulink system period] を 1/20e6 秒に指定します。c. [Perform analysis] に [Post Synthesis]、[Analyzer type] に [Resource] を選択します。このオプションを選択す

ると、完了後にリソース使用量が表示されます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 16

Page 17: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 12: Lab_1 のクロッキング

15. [OK] をクリックして System Generator トークンを閉じます。

16. [Run simulation] ボタン をクリックしてデザインをシミュレーションし、結果を確認します。新しいデザインはサイクル精度およびビット精度なので、前よりもシミュレーションに時間がかかる場合があります。

図 13: コンパイル結果

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 17

Page 18: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

上の図に示す結果では、右側の [Spectrum Analyzer Sysgen] ウィンドウは左側の [Spectrum Analyzer FDA Tool] ウィンドウに示される元のデザインとは異なります。これは、連続時間システムを離散時間ハードウェアで記述する際に発生する量子化およびサンプリングによるものです。最後に、このデザインをハードウェアにインプリメントします。これにより、Gateway In と Gateway Out ブロック間にあるすべてのものがハードウェア記述に合成されます。デザインのこの記述は、Verilog または VHDLハードウェア記述言語 (HDL) で出力されます。このプロセスは、System Generator トークンで制御されます。

17. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。18. [Compilation] タブをクリックしてデバイスとデザイン フローの詳細を指定します。19. [Compilation] に [IP Catalog] を選択し、出力が IP カタログ フォーマットになるようにします。[Part] で FPGA デバイスを選択します。ここでは、デフォルトのデバイスを使用します。[Hardware description language] もデフォルトの [VHDL] を使用します。

図 14: 演習 1 手順 1 の Sytem Generator トークン

20. [Generate] クリックしてデザインをハードウェアにコンパイルします。コンパイル プロセスで Simulink ブロックのデザインが業界標準の RTL デザイン記述に変換されます。RTL デザインは、ハードウェア デザインに合成できます。ハードウェア デザイン記述が生成されると、[ResourceAnalyzer] ウィンドウが表示されます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 18

Page 19: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 15: Lab1_1 の [Resource Analyzer] ウィンドウ

[Compilation status] ダイアログ ボックスも表示されます。図 16: [Compilation status] ダイアログ ボックス

21. [OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。22. [OK] をクリックして [Resource Analyzer] ウィンドウを閉じます。23. [OK] をクリックして System Generator トークンを閉じます。最後の手順では、ハードウェアを作成して結果を確認します。

結果の確認デザインのコンパイル結果は、netlist ディレクトリに保存されます。このディレクトリには、3 つのサブディレクトリが含まれます。• sysgen: 業界標準の VHDL フォーマットで記述された RTL デザイン記述が含まれます。これは、ハードウェア デザインに精通したユーザーが詳細を確認できるようにするために提供されています。

• ip: ザイリンクス IP カタログ フォーマットのデザイン IP が含まれ、デザインをザイリンクス Vivado Design Suiteに転送するために使用されます。「演習 5: IP インテグレーターでの AXI インターフェイスの使用」で、デザインIP を FPGA にインプリメントするため Vivado Design Suite に転送する方法を説明しています。

• ip_catalog: デザイン IP を含む Vivado プロジェクトの例が含まれます。このプロジェクトは、すばやく解析するためにのみ提供されています。

先ほどの [Resource Analyzer: Lab1_1] ウィンドウの図は、デザインの合成後のリソース サマリを示します。ip_catalog ディレクトリの Vivado プロジェクト例を使用してハードウェアの結果を確認することもできます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 19

Page 20: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

重要: ip_catalog ディレクトリの Vivado プロジェクトには、最上位 I/O バッファーは含まれていません。合成結果は、最終的なデザイン結果の良い見積もりとして使用できますが、このプロジェクトの結果を最終的な FPGA を作成するのに使用することはできません。結果を確認したら、Lab1_1.slx Simulink ワークシートを閉じます。

関連情報IP インテグレーターでの AXI インターフェイスの使用

手順 2: FPGA での最適化されたデザインの作成この手順では、手順 1 で使用したデザインにオーバーサンプリングを使用して、FPGA に最適化されたデザインを作成します。ワークスペース変数を使用する方法も学びます。1. コマンド プロンプトに「open Lab1_2.slx」と入力します。

2. Simulink プロジェクト ワークシートで [Simulation] → [Run] をクリックするか [Run simulation] ボタン をクリックし、これが「手順 1: FPGA でのデザインの作成」と同じデザインであることを確認します。

3. System Generator トークンをダブルクリックし、プロパティ エディターを開きます。手順 1 で述べたとおり、このデザインには 18 MHz 以上のサンプル周波数が必要で、現時点では 20 MHz (FPGAクロック周期 50 ns) に設定されています。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 20

Page 21: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 17: Lab1_2 のクロッキングの初期設定

FPGA デバイスに供給可能なクロックの周波数は、20 MHz 以上にすることができます。FPGA を実行するクロック周波数を高くすると、System Generator で同じハードウェア リソースを使用して複数の中間結果を計算できるようになります。

4. [FDATool] インスタンスをダブルクリックし、プロパティ エディターを開きます。5. [Filter Coefficients] ボタン をクリックし、フィルター係数を再表示します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 21

Page 22: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 18: Lab1_2 のフィルター係数

フィルターで 11 個の対称係数が使用されていることが示されます。これには、6 回以上の乗算が必要です。「System Generator ブロックの設定」セクションの結果でも、ハードウェアで乗算を実行するための FPGA リソースである DSP48 コンポーネントが 6 個使用されていることが示されています。現時点のデザインでは、データは 20 MHz のレートでサンプリングされます。入力を 6 倍の周波数でサンプリングすれば、すべての計算を 1 つの乗算器で実行できます。

6. FDATool のプロパティ エディターを閉じます。7. このデザインの一部の属性をワークスペース変数に置き換えます。まず、ワークスペース変数を定義します。8. MATLAB のコマンド ウィンドウで次を実行します。

a. 「num_bits = 16」と入力します。b. 「bin_pt = 14」と入力します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 22

Page 23: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 19: ワークスペース変数の定義

9. デザイン Lab1_2 で [Gateway In] ブロックをダブルクリックし、プロパティ エディターを開きます。10. [Fixed-Point Precision] セクションで 16 を num_bits に変更し、14 を bin_pt に変更します。

図 20: Lab1_2 の Gateway In ブロックのプロパティ

11. [OK] をクリックして変更を保存し、プロパティ エディターを閉じます。次の手順を実行して、System Generator トークンのサンプリング周波数を 120 MHz (6 * 20 MHz) に変更します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 23

Page 24: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

1. [FPGA clock period] を 8.33 ns (1/120 MHz) に設定します。2. [Simulink system period] を 1/120e6 秒に設定します。3. 次の図に示すように、[Perform Analysis] に [Post Synthesis]、[Analyzer type] に [Resource] を選択します。こ

のオプションを選択すると、完了後にリソース使用量が表示されます。図 21: Lab1_2 のクロッキング設定

12. [Generate] をクリックし、デザインをハードウェア記述にコンパイルします。この場合、リソースが共有されるようにしてリソースを削減するため、デザインに意図的にサンプル レートを超えるクロックを供給しているので、[Diagnostic Viewer] ウィンドウに表示されるメッセージは無視できます。[Diagnostic Viewer] ウィンドウを閉じます。

13. 生成が完了したら、[OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。生成が完了すると次の図に示すような [Resource Analyzer] ダイアログ ボックスが開き、合成後のデザインのリソース使用量が表示されます。ハードウェア デザインで使用される DSP48 リソースは 1 つのみとなり (乗算器 1 つ)、「System Generator ブロックの設定」セクションの結果と比較してリソース使用量は約半分になります。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 24

Page 25: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 22: Lab1_2 の [Resource Analyzer] ダイアログ ボックス

14. [OK] をクリックして [Resource Analyzer] ダイアログ ボックスを閉じます。15. [OK] をクリックして System Generator トークンを閉じます。Lab1_2.slx Simulink ワークシートを閉じます。関連情報手順 1: FPGA でのデザインの作成System Generator ブロックの設定

手順 3: 個別のコンポーネントを使用したデザインの作成この手順では、System Generator で個別のコンポーネントを使用してデザインを作成し、効率的なハードウェア デザインを達成する方法を示します。1. コマンド プロンプトに「open Lab1_3.slx」と入力します。

次の図に示すような Simulink デザインが表示されます。このデザインは、手順 1 および 2 のデザインと似ていますが、フィルターが個別のコンポーネントを使用して作成されており、完成していません。この手順では、このデザインを完成させることにより、個別のコンポーネントを追加して設定する方法を学びます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 25

Page 26: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 23: Lab1_3 デザインの初期状態

このフィルターは、次のように動作します。• サンプルは In ポートから、シフト レジスタ (ASR インスタンス) に保存された遅延後に入力されます。• フィルター係数の保存に ROM が必要です。• 計算に使用するデータおよび係数サンプルを選択するため、カウンターが必要です。• 計算を実行するために積和ユニットが必要です。• 最後のダウン サンプル ユニットにより、出力が nth サイクルごとに選択されます。まず、デザインに個別のコンポーネントを追加します。

2. Simulink ツールバーの [Library Browse] ボタン をクリックし、Simulink Library Browser を開きます。a. [Xilinx Blockset] を展開します。b. [Control Logic] を選択し、[Counter] を右クリックして [Add block to model Lab1_3] をクリックし、このコンポーネントをデザインに追加します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 26

Page 27: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 24: Counter インスタンス

c. [Memory] を選択し、ROM をデザインに追加します。d. [DSP] を選択し、DSP48 Macro 3.0 をデザインに追加します。

3. 新しい 3 つのインスタンスを、次の図に示すようにデザインの残りの部分に接続します。図 25: 個別のコンポーネントを使用したフィルター デザイン

次に、これらのインスタンスを設定してデータが正しくフィルター処理されるようにします。4. [FDATool] インスタンスをダブルクリックし、[Filter Coefficients] ツールバー ボタン をクリックしてフィルターの仕様を確認します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 27

Page 28: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 26: Lab1_3 のフィルター仕様

これは、前の手順の仕様と同じで、11 個の係数があります。Gateway In の入力をダブルクリックして、入力のサンプル レートが 20 MHz (サンプル周期 1/20e6) であることも確認できます。次に、この情報を使用して個別のコンポーネントを設定します。

5. FDATool のプロパティ エディターを閉じます。6. [Counter] インスタンスをダブルクリックし、プロパティ エディターを開きます。

a. [Counter type] で [Count limited] をオンにし、[Count to value] に「length(xlfda_numerator('FDATool'))-1」と入力します。これにより、カウンターが 0 から 10 までカウントするようになります (11 個の係数とデータ アドレス)。

b. [Output type] をデフォルトの [Unsigned] のままにし、[Number of Bits] に [4] と入力します。11 までカウントするのに必要な 2 進アドレスは 4 ビットです。

c. [Explicit Sample Period] に [1/(11*20e6)] と入力し、サンプル周期が入力データ レートの 11 倍になるようにします。各入力サンプルに対して、フィルターで計算を 11 回実行する必要があります。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 28

Page 29: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 27: Counter ブロックのプロパティ エディター

d. [OK] をクリックしてプロパティ エディターを閉じます。7. [ROM] インスタンスをダブルクリックし、プロパティ エディターを開きます。

a. [Depth] に「length(xlfda_numerator('FDATool'))」と入力します。これにより、ROM の要素数が11 になります。

b. [Initial value vector] に「xlfda_numerator('FDATool')」と入力します。係数値は FDATool インスタンスにより供給されます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 29

Page 30: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 28: ROM ブロックのプロパティ エディター

c. [OK] をクリックしてプロパティ エディターを閉じます。8. [DSP48 Macro 3.0] インスタンスをダブルクリックし、プロパティ エディターを開きます。

a. [Instructions] タブで、既存の命令を A*B+P に変更し、A*B を追加します。sel 入力が偽の場合、DSP48 は積和を実行します。sel 入力が真の場合、DSP48 は乗算を実行します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 30

Page 31: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 29: DSP48 ブロックのプロパティ エディターの [Instructions] タブ

b. [Pipeline Options] タブで、[Pipeline Options] ドロップダウン リストから [By_Tier] を選択します。c. [Tier 3] および [Tier 5] をオンにします。これにより、レジスタが A と B への入力および乗算と累算の間に使用されるようになります。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 31

Page 32: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 30: DSP48 ブロックのプロパティ エディターの [Pipeline Options] タブ

d. [OK] をクリックしてプロパティ エディターを閉じます。9. [Save] をクリックしてデザインを保存します。10. [Run simulation] ボタンをクリックしてデザインをシミュレーションし、結果を確認します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 32

Page 33: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 31: 個別のコンポーネントで作成したフィルターの結果

最後に、デザインをハードウェア記述にコンパイルして合成します。11. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。12. [Compilation] タブで、[Compilation] に [IP Catalog] が選択されていることを確認します。13. [Clocking] タブで、[Perform analysis] に [Post Synthesis] を選択し、[Analyzer type] に [Resource] を選択します。

このオプションを選択すると、完了後にリソース使用量が表示されます。14. [Generate] をクリックし、デザインをハードウェア記述にコンパイルします。生成が完了すると、[Resource

Analyzer] ウィンドウにリソース使用量が表示されます。図 32: Lab1_3 の合成結果

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 33

Page 34: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

Digital FIR Filter マクロを使用して作成したデザインと比較して、FPGA ハードウェア リソース数が少なくなっていることがわかります。

15. [OK] をクリックして [Resource Analyzer] ウィンドウを閉じます。16. [OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。17. [OK] をクリックして System Generator トークンを閉じます。18. Lab1_3.slx ワークシートを閉じます。関連情報System Generator ブロックの設定手順 2: FPGA での最適化されたデザインの作成

手順 4: データ型の使用この手順では、ハードウェアで効率の良い固定小数点型を使用して、必要な仕様を満たしながらリソースを効率よく使用するデザインを作成し、ザイリンクス ブロックセットを使用してこれらのシステムを解析します。この演習では、次の 2 つの手順を実行します。• パート 1 では、浮動小数点型を使用するデザインを確認して合成します。• パート 2 では、同じデザインを固定小数点型を使用してインプリメントし、データ型を調整して、同じ要件を満たしながらハードウェアで効率の良いデザインを作成します。

パート 1: 浮動小数点型を使用した設計このセクションでは、浮動小数点型を使用してインプリメントしたデザインを確認します。1. System Generator を起動します。

• Windows の場合は、[Start] → [All Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [System Generator] → [System Generator 2019.x] をクリックします。

• Linux システムの場合は、コマンド プロンプトに「sysgen」と入力します。2. コマンド プロンプトに「open Lab1_4_1.slx」と入力します。

次の図に示すような Simulink デザインが表示されます。このデザインは、演習 1 手順 1 で使用したデザインと似ていますが、浮動小数点型が使用されており、フィルターはサブシステム FIR にインプリメントされています。まずデザインの属性を確認した後、デザインをシミュレーションしてパフォーマンスを検証し、最後にデザインを合成します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 34

Page 35: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 33: Lab1_4_1 デザインの初期状態

上の図では、インスタンス FIR の入力と出力はどちらも double 型です。3. MATLAB のコマンド ウィンドウに次を入力します。

MyCoeffs = xlfda_numerator('FDATool')

4. [FIR] インスタンスをダブルクリックし、サブシステムを開きます。5. [Constant1] インスタンスダブルクリックし、プロパティ エディターを開きます。

[Constant value] は MyCoeffs(1) と定義されています。図 34: Constant1 ブロックのプロパティ エディター

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 35

Page 36: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

6. Constant1 のプロパティ エディターを閉じます。7. [Up To Parent] ツールバー ボタンをクリックするか、[Lab1_4_1] タブをクリックして、最上位デザインに戻ります。このデザインは、2 つの 9 MHz サイン波を加算します。System Generator への入力ゲートウェイは、18 MHz 以上のレートでデータをサンプリングする必要があります。

8. [Gateway In1] インスタンスをダブルクリックしてプロパティ エディターを開き、入力がデータを 20 MHz (サンプル周期 1/20e6) のレートでサンプリングすることを確認します。

9. Gateway In のプロパティ エディターを閉じます。10. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。

次の図に示す結果では、System Generator ブロックセットでほぼ理想的な結果 (中央) が得られています。SystemGenerator デザインは入力波形を継続的に離散時間値にサンプリングする必要があるので、結果は同一ではありません。

図 35: Lab1_4_1 のシミュレーション結果

最後に、最上位デザインを合成します。11. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。12. [Compilation] タブで、[Compilation] に [IP Catalog] が選択されていることを確認します。13. [Clocking] タブで、[Perform analysis] に [Post Synthesis] を選択し、[Analyzer type] に [Resource] を選択します。

このオプションを選択すると、完了後にリソース使用量が表示されます。14. [Generate] をクリックし、デザインをハードウェア記述にコンパイルします。完了すると、次の図に示すように

[Resource Analyzer] ダイアログ ボックスにリソース使用量が表示されます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 36

Page 37: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 36: Lab1_4_1 のリソース使用量

15. [OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。16. [OK] をクリックして System Generator トークンを閉じます。

演習 1 手順 1 では、同じフィルターを固定小数点型を使用してインプリメントしました。そのインプリメンテーションの合成結果 (次の図) と比較すると、今回のインプリメンテーションでは多量のレジスタ (FF)、LUT、および DSP48 (DSP) リソース (ザイリンクスの専用乗算/加算ユニット) が使用されているのがわかります。

図 37: Lab1_1 のリソース使用量

浮動小数点型の完全な精度を保つのが理想ですが、それには多量のハードウェアが必要です。このデザインでは、浮動小数点型の全範囲は必要ありません。この時点のデザインでは、必要以上に多量のリソースが使用されています。次のセクションでは、Simulink 環境内で異なるデータ型を使用するデザインを比較する方法を学びます。

17. Vivado Design Suite を閉じます。18. Lab1_4_1.slx Simulink ワークシートを閉じます。

パート 2: 固定小数点型を使用した設計このパートでは、「パート 1: 浮動小数点型を使用した設計」のデザインを固定小数点型を使用してインプリメントし直し、新しいデザインと元のデザインを比較します。固定小数点型を使用する利点と欠点を説明し、System Generatorでデザインを簡単に比較して、FPGA インプリメンテーションを確定する前に Simulink 環境で精度とリソースのトレードオフを検討できることを示します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 37

Page 38: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

1. コマンド プロンプトに「open Lab1_4_2.slx」と入力し、デザインを開きます。図 38: Lab1_4_2 デザイン

2. MATLAB コマンド ウィンドウに次を入力します。MyCoeffs = xlfda_numerator('FDATool')

3. [Gateway In2] インスタンスをダブルクリックし、データが 16 ビット固定小数点値としてサンプリングされることを確認します。

4. [Cancel] をクリックしてプロパティ エディターを閉じます。5. [Run simulation] ボタンをクリックしてデザインをシミュレーションし、[Spectrum Analyzer SysGen Fixed] ウィ

ンドウに表示されるフィルター処理された出力を確認します。FIR-Fixed-Point インスタンスの出力を見ると、System Generator で入力データ型が自動的にフィルターを介して伝搬され、信号の精度を保つために出力を 43 ビット (28 小数部ビット) にする必要があることがわかります。これは、フィルターを介したビット増加およびフィルター係数が 16 ビットであることにに基づきます。

6. MATLAB のコマンド ウィンドウに「sum(abs(MyCoeffs))」と入力し、現在の係数を使用して絶対最大増加を決定します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 38

Page 39: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 39: Lab1_4_2 の係数の和

係数の正の値と負の値を考慮すると、最大増加は 1.2070 であり、出力信号は最大でも入力信号 (16 ビット) よりも少し小さいことがわかります。2 進小数点より上位のデータを 15 ビット (43 ~ 28) にする必要はありません。次に、Reinterpret および Convert ブロックを使用して、正しい結果を表すのに必要な幅以上にならないように固定小数点データを変更し、ハードウェアで最も効率的なデザインを作成します。

7. キャンバスのどこかを右クリックし、[Xilinx BlockAdd] をクリックします。8. [Add Block] ボックスに「Reinterpret」と入力します。9. [Reinterpret] コンポーネントをダブルクリックし、デザインに追加します。10. 上記の 3 手順を繰り返して、次のコンポーネントを追加します。

a. Convert

b. Scope

11. デザインで [Gateway Out2] インスタンスを選択します。a. 右クリックして [Copy] および [Paste] を使用し、Gateway Out ブロックの新しいインスタンスを作成します。b. さらに 2 回貼り付けて、Gateway Out のインスタンスをあと 2 つ作成します (合計で 3 つ作成)。

12. [Scope] コンポーネントをダブルクリックします。a. [Scope] ダイアログ ボックスで [File] → [Number of Inputs] → [3] をクリックします。b. [View] → [Configuration Properties] をクリックし、[Number of input ports] が 3 に設定されていることを確認します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 39

Page 40: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 40: [Configuration Properties] ダイアログ ボックス

c. [OK] をクリックして [Configuration Properties] ダイアログ ボックスを閉じます。d. [File] → [Close] をクリックして [Scope] ダイアログ ボックスを閉じます。

13. ブロックを次の図に示すように接続します。14. Scope に入力される信号の名前を、次の図に示すように Convert、Reinterpret、および Growth に変更します。信号名を変更するには、既存の名前ラベルをクリックしてテキストを編集するか、ラベルがない場合はワイヤをダブルクリックして名前を入力します。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 40

Page 41: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 41: アップデートされた Lab1_4_2 デザイン

15. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。16. [Scope] をダブルクリックして信号を調べます。ヒント: 信号の詳細を表示するには、拡大するか、[View] → [Configuration Properties] をクリックしてスケールを調整する必要がある場合があります。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 41

Page 42: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 42: アップデートされた Lab1_4_2 デザインの [Scope] ウィンドウ

この時点では Reinterpret および Convert ブロックを設定していないので、3 つの信号は同一です。ザイリンクス Reinterpret ブロックは、入力の数値を保持するかどうかにかかわらず、出力を新しいデータ型にします。符号なしデータを符号付きデータに再解釈したり、符号付きデータを符号なしデータに再解釈したりします。2 進小数点の位置を変えることにより、データのスケーリングの再解釈も可能です。この演習では、データを係数 2 でスケーリングし、大型のシステムで発生する可能性のある追加のデザイン処理をモデリングします。Reinterpret ブロックは、スケール ダウンにも使用できます。

17. [Reinterpret] ブロックをダブルクリックし、プロパティ エディターを開きます。18. [Force Binary Point] をクリックします。19. [Output Binary Point] に 27 を入力し、[OK] をクリックします。

ザイリンクス Convert ブロックは、各入力サンプルをさまざまな演算タイプに変換します。たとえば、数値を符号付き (2 の補数) または符号なしの値に変換できます。信号の量子化の切り捨てまたは丸め、信号のオーバーフローの折り返し、飽和、またはエラーとしてフラグも可能です。このチュートリアルでは、Convert ブロックを使用して 43 ビット ワードを 16 ビット値に削減します。この演習では、Reinterpret ブロックはより複雑なデザインをモデリングし、データを係数 2 でスケーリングするために使用しています。そのため、出力の 2 進小数点の上位にこの増加を表すのに十分なビット数があることを確認する必要があります。

20. [Convert] ブロックをダブルクリックし、プロパティ エディターを開きます。21. [Fixed-Point Precision] セクションで [Binary Point] に 13 と入力し、[OK] をクリックします。22. デザインを保存します。23. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。24. [Scope] をダブルクリックして信号を調べます。ヒント: 信号の詳細を表示するには、拡大するか、[View] → [Configuration Properties] をクリックしてスケールを調整する必要がある場合があります。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 42

Page 43: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

次の図では、フィルター (Growth) からの出力の値が -1 ~ +1 の範囲であることがわかります。Reinterpret ブロックからの出力は、-2 ~ +2 の範囲です。波形の詳細表示では、再解釈された結果と比較すると、使用されるのは 16 ビットだけですが、最終出力 (Convert)の忠実性に違いはありません。

図 43: スケーリングされた Lab1_4_2 デザインの [Scope] ウィンドウ

最後に、最上位デザインを合成します。25. System Generator トークンをダブルクリックし、プロパティ エディターを開きます。26. [Compilation] タブで、[Compilation] に [IP Catalog] が選択されていることを確認します。27. [Clocking] タブで、[Perform analysis] に [Post Synthesis] を選択し、[Analyzer type] に [Resource] を選択します。

このオプションを選択すると、完了後にリソース使用率の詳細が表示されます。28. [Generate] をクリックし、デザインをハードウェア記述にコンパイルします。完了すると、次の図に示すように

[Resource Analyzer] ダイアログ ボックスにリソース使用量が表示されます。図 44: Lab1_4_2 のリソース使用量

29. [OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。30. [OK] をクリックして System Generator トークンを閉じます。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 43

Page 44: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

手順 1 の結果 (図 37: Lab1_1 のリソース解析結果) と比較すると、リソース使用量は次のようになっています。• フリップフロップは約 45% 増加• LUT 約 45% 増加• DSP48 は約 30% 増加ただし、このデザインには元の浮動小数点フィルターと新しい固定小数点フィルターが含まれているので、固定小数点フィルターでは、許容可能な信号忠実性およびデザイン パフォーマンスを達成しながら、リソース使用量は約 75 ~ 50% になっています。

31. Vivado Design Suite を閉じます。32. Lab1_4_2.slx ワークシートを閉じます。

まとめこの演習では、Simulink 環境で System Generator ブロックセットを使用してデザインを作成し、デザインをハードウェアに合成してザイリンクス FPGA にインプリメントできるようにする方法を学びました。ザイリンクス Digital FIRFilter ブロックを使用してデザインを作成する利点と、オーバーサンプリングを使用してデザインを向上する方法を学びました。また、浮動小数点型を使用すると精度は上がるが FPGA にインプリメントするのに必要なリソースが増加すること、System Generator ブロックセットを使用すると、より効率的な固定小数点型を使用し、固定小数点型を使用する場合の精度の低下を補うことができることを学びました。Reinterpret および Convert ブロックは、詳細なビット レベルの最適化を実行せずにデザインを最適化できる有益なツールです。これらのブロックを使用して、データ型を変換し、結果をすばやく解析できます。最後に、個別のプリミティブを使用して、ハードウェア インプリメンテーションを完全に制御する方法を学びました。注記: このチュートリアルでは、デザインに System Generator ブロックを追加して設定しました。最初に SystemGenerator トークンを追加して設定する方が効率的です。設計開始時にターゲット デバイスが設定されている場合は、一部の複雑な IP ブロックをデザインに追加したときに、それらの IP ブロックが自動的にデバイス用に設定されます。この演習で使用した最終 System Generator ファイル (*.slx) は、C:/SysGen_Tutorial/Lab1/solution ディレクトリにあります。

演習 1: System Generator の概要

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 44

Page 45: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

演習 2

System Generator へのコードのインポート手順 1: M コードを使用した制御のモデリング

この手順では、MCode ブロックを使用して 2 進数値 1011 を検出する単純な有限ステート マシン (FSM) を作成します。この FSM では、10111011 など、この値の連続も検出する必要があります。目標この演習を終了すると、System Generator の MCode ブロックを使用して有限ステート マシンを作成できるようになります。

手順この演習では、M コードを使用して有限ステート マシンの制御ロジックを作成します。その後、デザインをシミュレーションして正しく動作することを確認します。1. System Generator を起動し、作業ディレクトリを C:\SysGen_Tutorial\Lab2\M_code に変更します。2. Lab2_1.slx ファイルを開きます。

次の未完成の図が表示されます。図 45: Lab2_1 デザインの初期状態

3. ザイリンクス ブロックセットの Index ライブラリから MCode ブロックを追加します。a. ブロックはまだ接続しないでください。b. まず MATLAB® 関数を編集し、正しいポートおよび関数名を作成します。

4. [MCode] ブロックをダブルクリックし、プロパティ エディターで [Edit M-File] ボタンをクリックします。

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 45

Page 46: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 46: [Edit M-File] ボタン

MATLAB テキスト エディターにデフォルトの M コードが表示されます。図 47: MATLAB テキスト エディターの M コード

5. デフォルトの MATLAB 関数の名前を state_machine に変更し、入力を din、出力を matched にします。6. サンプル M コードを削除します。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 46

Page 47: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 48: ステート マシンのコード

7. [Save As] をクリックし、MATLAB ファイルを state_machine.m という名前で Lab5 フォルダーに保存します。a. MCode のプロパティ エディターで、[Browse] ボタンをクリックして MCode ブロックがローカルの M コード ファイル (state_machine.m) を参照していることを確認します。

8. MCode のプロパティ エディターで [OK] をクリックします。MCode ブロックに新しいポートと関数名が適用されます。

9. MCode ブロックを次の図に示すように接続します。図 49: MCode ブロックの接続

これで、ステート マシンのコードを記述する準備ができました。次の図に、このステート マシンの状態遷移図を示します。この FSM には 5 つのステートがあり、連続する 2 つのシーケンスを検出可能です。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 47

Page 48: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 50: ステート マシンの状態遷移図

10. M コード ファイル state_machine.m を編集し、状態変数を次のように ザイリンクス xl_state データ型を使用して定義します。変数を persistent 変数として宣言する必要があります。xl_state 関数には、初期状態と固定小数点宣言の 2 つの引数が必要です。4 までカウントするので、3 ビット必要です。persistent state, state = xl_state(0,{xlUnsigned, 3, 0});

11. switch-case 文を使用して FSM ステートを定義します。次にサンプルを示します。注記: 最後の case として otherwise 文が必要です。switch state case 0 if din == 1 state = 1 else state = 0 end matched = 0;

12. M コード ファイルを保存し、シミュレーションを実行します。波形は次の図のようになります。シーケンスが 2 回検出されているのがわかります。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 48

Page 49: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 51: Lab2_1 の波形

手順 2: HDL で記述されたブロックのモデリングこの手順では、RTL デザインを System Generator にブラック ボックスとしてインポートします。ブラック ボックスを使用すると、記述がハードウェア記述言語 (HDL) フォーマットであっても、デザインを SystemGenerator にインポートできます。

目標この手順を終了すると、次のことができるようになります。• RTL HDL 記述を System Generator for DPS にインポート。• デザインを正しくシミュレーションできるようにブラック ボックスを設定。1. System Generator を起動し、MATLAB コンソールでディレクトリを C:\SysGen_Tutorial\Lab2\HDL に変更します。このディレクトリには、次のファイルが含まれています。• Lab2_2.slx: ブラック ボックス例を含む Simulink モデル。• transpose_fir.vhd: 転置型 FIR フィルターの最上位 VHDL。このファイルは、ブラック ボックスに関連付けられている VHDL です。

• mac.vhd: 転置型 FIR フィルターの作成に使用される乗加算コンポーネント。2. 「open Lab2_2.slx」と入力します。3. Down Converter というサブシステムを開きます。4. Transpose FIR Filter Black Box というサブシステムを開きます。このサブシステムには、2 つの入力ポートと 1 つの出力ポートがあります。このサブシステムにブラック ボックスを追加します。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 49

Page 50: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 52: Transpose FIR Filter Black Box サブシステム

5. デザイン キャンバスを右クリックして [Xilinx BlockAdd] をクリックし、このサブシステムに Black Box ブロックを追加します。ブラウザー ウィンドウが開き、ブラック ボックスに関連付けることが可能な VHDL ファイルがリストされます。

6. ブラウザー ウィンドウで最上位 VHDL ファイル transpose_fir.vhd を選択します。これを次の図に示します。

図 53: transpose_fir.vhd ファイル

関連のコンフィギュレーション M コード transpose_fir_config.m がエディターに開きます。7. エディターを閉じます。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 50

Page 51: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

8. ブラック ボックスのポートを対応するサブシステム ポートに接続し、デザインを保存します。図 54: ブラック ボックスの転置フィルター

9. Black Box ブロックをダブルクリックし、次のダイアログ ボックスを開きます。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 51

Page 52: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 55: Black Box のプロパティ エディター

このダイアログ ボックスには、次のオプションがあります。• [Block configuration m-function]: ブラック ボックスのコンフィギュレーション M 関数の名前を指定します。この例では、Configuration Wizard で生成された関数の名前が含まれています。デフォルトでは、ブラック ボックスにはウィザードで生成された関数の名前が使用されます。これは自分で作成したものに変更できます。

• [Simulation mode]: 次の 3 つのシミュレーション モードがあります。• [Inactive]: シミュレーション モードを [Inactive] (非アクティブ ) に設定すると、シミュレーションでブラック ボックスへの入力は無視され、0 が生成されます。この設定は、ブラック ボックスに個別のシミュレーション モデルが存在している場合によく使用され、その場合シミュレーション モデルはシミュレーション マルチプレクサーを使用してブラック ボックスと並列に接続されます。

• [Vivado Simulator]: シミュレーション モードを [Vivado® Simulator] に設定すると、ブラック ボックスのシミュレーション結果は、ブラック ボックスに関連付けられている HDL の協調シミュレーションを使用して生成されます。

• [External co-simulator]: シミュレーション モードを [External co-simulator] (外部協調シミュレータ) に設定した場合、ModelSim HDL 協調シミュレーション ブロックデザインに追加し、[HDL co-simulator to use]フィールドに ModelSim ブロックの名前を指定する必要があります。このモードでは、ブラック ボックスは HDL 協調シミュレーションを使用してシミュレーションされます。

10. [Simulation mode] で [Inactive] をオンにし、[OK] をクリックします。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 52

Page 53: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

11. デザインの最上位に移動し、[Run simulation] ボタン をクリックしてシミュレーションを実行します。その後、Scope ブロックをダブルクリックします。

12. [Output Signal] スコープに表示されているブラック ボックス出力は 0 です。これは、ブラック ボックスを非アクティブに設定したからです。

図 56: シミュレーション モードが非アクティブの場合の Lab2_2 の波形

13. Simulink エディター メニューから [Display] → [Signals & Ports] → [Port Data Types] をクリックし、ブラック ボックスのポートのデータ型を表示します。

14. モデルをコンパイルし (Ctrl + D キーを押す)、ポートのデータ型がアップデートされることを確認します。ブラック ボックスのポート出力のデータ型は UFix_26_0 です。このデータ型は、符号なし、26 ビット幅、2 進数小数点 0 位置は最下位ビットの左側です。

15. コンフィギュレーション M 関数 transpose_fir_config.m を開き、出力のデータ型を UFix_26_0 からFix_26_12 に変更します。変更後の行 (26 行目) は次のようになります。dout_port.setType('Fix_26_12');

次の手順を使用して、コンフィギュレーション M 関数を編集し、追加の HDL ファイルをブラック ボックスに関連付けます。

16. 65 行目 this_block.addFile('transpose_fir.vhd'); に移動します。17. この行の上に「this_block.addFile('mac.vhd');」という行を追加します。18. 変更をコンフィギュレーション M 関数に保存し、ファイルを閉じます。19. デザイン キャンバスをクリックし、Ctrl + D キーを押してモデルをコンパイルし直します。

Transpose FIR Filter Black Box サブシステムは次の図のようになります。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 53

Page 54: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 57: アップデートされた転置フィルター

20. Black Box ブロックのパラメーター ダイアログ ボックスで、[Simulation mode] の設定を [Inactive] から [VivadoSimulator] に変更し、[OK] をクリックします。

21. デザインの最上位に移動し、シミュレーションを実行します。22. シミュレーションが終了したら、[Scope] ウィンドウの出力を確認します。

波形は 0 ではありません。シミュレーション モードが [Inactive] に設定されていた時は、[Output Signal] スコープの出力は 0 でした。今回は、[Output Signal] に Vivado シミュレーションからの結果がサイン波で示されています。

23. [Output Signal] 表示を右クリックし、[Configuration Properties] をクリックします。[Main] タブで [Axis Scaling]を [Auto] に設定します。次のような出力が表示されます。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 54

Page 55: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 58: シミュレーション モードを Vivado シミュレータに設定した場合の波形

手順 3: C/C++ コードで記述されたブロックのモデリングVivado® Design Suite の System Edition には、C/C++ デザイン ソースを RTL に変換する機能を持つ Vivado HLS が含まれています。System Generator には、[Xilinx Blockset] → [Control Logic] ライブラリおよび [Xilinx Blockset] →[Index] ライブラリに Vivado HLS ブロックが含まれており、C/C++ ソース ファイルを System Generator モデルに組み込むことができます。

目標この演習を終了すると、C、C++、または SystemC から Vivado HLS を使用して合成されたデザインを MATLAB デザインに組み込むことができるようになります。

手順この手順では、まず Vivado HLS を使用してデザインを合成します。MATLAB からのデザイン ファイルと関連の HDLラッパーおよび制約ファイルを使用して、Vivado DSP デザイン プロジェクトで作業します。パート 2 では、VivadoHLS からの出力を MATLAB に組み込み、MATLAB のシミュレーション機能を使用して C アルゴリズムで画像が正しくフィルター処理されることを確認します。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 55

Page 56: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

パート 1: Vivado HLS からの System Generator パッケージの作成1. [Start] → [All Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [Vivado HLS] → [Vivado HLS 2019.x] をクリックして Vivado HLS を起動します。

2. Welcome 画面で [Open Project] をクリックし、Vivado HLS プロジェクト ディレクトリ C:\SysGen_Tutorial\Lab2\C_code\hls_project を選択します。

図 59: Vivado HLS プロジェクト

3. [OK] をクリックしてプロジェクトを開きます。4. [Explorer] ビューで [Source] フォルダーを展開し、MedianFilter.cpp ファイルをダブルクリックして C++ ファイルの内容を表示します。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 56

Page 57: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 60: C++ ソース ファイル

このファイルは、2 次元メジアン フィルターを 3x3 ウィンドウ サイズにインプリメントします。5. [solution1] を右クリックして [C Synthesis] → [Active Solution] をクリックし、ソース ファイルを合成します。

図 61: HLS 合成

合成が完了すると、Vivado HLS に「Finished C synthesis」というメッセージが表示されます。次に、ソースを System Generator で使用できるようにパッケージします。

6. [solution1] を右クリックし、[Export RTL] をクリックします。7. [Format Selection] で [System Generator for DSP] を選択し、[OK] をクリックします。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 57

Page 58: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 62: HLS IP の Sytem Generator へのエクスポート

RTL のエクスポートが完了すると、Vivado HLS に次のメッセージが表示されます。Finished export RTL

8. Vivado HLS を閉じます。

パート 2: Vivado HLS パッケージの System Generator デザインへの追加1. System Generator を起動し、Lab2/C_code フォルダーにある Lab2_3.slx ファイルを開きます。次の図に示

すデザインが表示されます。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 58

Page 59: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 63: Lab2_3 デザイン

2. Vivado HLS ブロックを追加します。キャンバスのどこかを右クリックします。3. [Xilinx BlockAdd] をクリックします。4. [Add Block] ダイアログ ボックスに「Vivado HLS」と入力します。5. [Vivado HLS] を選択します。

図 64: Vivado HLS ブロックの追加

6. [Vivado HLS] ブロックをダブルクリックし、プロパティ エディターを開きます。7. [Browse] ボタンをクリックして Vivado HLS で作成された C:/SysGen_Tutorial/Lab2/C_code/

hls_project/solution1 を選択します。8. [OK] をクリックして Vivado HLS IP をインポートします。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 59

Page 60: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 65: Vivado HLS IP のインポート

9. ブロックの入力ポートと出力ポートを次の図に示すように接続します。図 66: 完成した Lab2_3 デザイン

10. Noisy Image サブシステムを表示し、[Image From File] ブロック xilinx_logo.png をダブルクリックして、[Block Parameters] ダイアログ ボックスを開きます。

11. [Browse] ボタンをクリックして xilinx_logo.jpg が指定されていることを確認します。

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 60

Page 61: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 67: 入力画像の指定

12. [OK] をクリックして [Block Parameters] ダイアログ ボックスを閉じます。13. [Up to Parent] ツールバー ボタン をクリックして最上位に戻ります。14. デザインを保存します。15. デザインをシミュレーションし、画像がフィルター処理されていることを確認します。

図 68: Lab2_3 のシミュレーション結果

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 61

Page 62: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

まとめこの演習では、次のことを学びました。• M コードを使用して制御ロジックを作成する方法。作成したデザインは、ザイリンクス ブロックセットを使用して作成したデザインと同様に、HDL ネットリストを作成するのに使用できます。

• 既存の VHDL RTL デザインを組み込むことにより HDL を使用するブロックを System Generator でモデリングする方法、System Generator モデルのデータ型と RTL デザインのデータ型を一致させることの重要性、およびSystem Generator で RTL デザインをシミュレーションする方法。

• C++ で記述されたフィルターを Vivado HLS を使用して合成し、そのデザインを MATLAB に組み込む方法。これにより、C、C++、または SystemC デザインを使用してカスタム ブロックを作成できます。この演習では、VivadoHLS で生成した RTL デザインをインポートし、MATLAB 内で使用する方法を示しました。

この演習の完成したファイルは、次の場所にあります。C:/SysGen_Tutorial/Lab2/M_code/solution

C:/SysGen_Tutorial/Lab2/HDL/solution

C:/SysGen_Tutorial/Lab2/C_code/solution

演習 2: System Generator へのコードのインポート

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 62

Page 63: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

演習 3

タイミングおよびリソース解析この演習では、Simulink® でシミュレーションを実行してデザインの機能を検証し、System Generator デザインをターゲット ザイリンクス デバイスにインプリメントしたときに正しく機能することを確認します。

目標この演習を終了すると、次のことができるようになります。• System Generator で生成された HDL ファイルのタイミング問題を検出し、デザインのタイミング違反の原因を特定。

• リソース解析を実行し、既存のリソース解析結果および最適化のための推奨事項にアクセス。手順この演習では、次の 2 つの手順を実行します。• 手順 1: System Generator でタイミング解析を実行します。• 手順 2: System Generator でリソース解析を実行します。

手順 1: System Generator でのタイミング解析1. System Generator を起動します。

• Windows の場合は、[Start] → [All Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [System Generator] → [System Generator 2019.x] をクリックします。

• Linux システムの場合は、コマンド プロンプトに「sysgen」と入力します。2. 「cd C:\SysGen-Tutorial\Lab3」と入力して Lab3 フォルダーに移動します。ディレクトリの内容は、MATLAB® の [Current Folder] ブラウザーで、またはコマンド ライン プロンプトで「ls」と入力して確認できます。

3. 次のいずれかを実行して Lab3 デザインを開きます。• MATLAB コマンド プロンプトに「open Lab3.slx」と入力します。• [Current Folder] ブラウザーで Lab3.slx をダブルクリックします。次の図に示す Lab3 デザインが開きます。

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 63

Page 64: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 69: Lab3_1 デザイン

4. Simulink プロジェクト ワークシートから、[Simulation] → [Run] をクリックするか [Run simulation] ボタンをクリックし、デザインをシミュレーションします。

5. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。6. [Clocking] タブをクリックします。7. 次の図に示すように、[Perform Analysis] に [Post Synthesis]、[Analyzer type] に [Timing] を選択します。

図 70: タイミング解析の設定

8. System Generator トークンで [Generate] をクリックします。[Generate] をクリックすると、次が実行されます。a. System Generator で選択されているコンパイル ターゲットに必要なファイルが生成されます。タイミング解析のため、System Generator により Vivado® Design Suite がバックグランドで起動され、デザインのタイミング制約が Vivado Design Suite に渡されます。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 64

Page 65: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

b. [Perform Analysis] で [Post Synthesis] を選択したか [Post Implementation] を選択したかによって、デザインに対して Vivado Design Suite で合成またはインプリメンテーションまで実行されます。

c. Vivado ツールの実行が完了すると、タイミング パスの情報が収集され、Vivado タイミング データベースから指定のファイル フォーマットで保存されます。タイミング パス データが収集されると、Vivado プロジェクトが閉じ、MATLAB/System Generator プロセスに戻ります。

d. System Generator でタイミング情報が処理され、次の図に示すように、[Timing Analyzer] ウィンドウの表にタイミング パスの情報が表示されます。

図 71: Lab3 のタイミング解析結果

9. タイミング解析の表には、情報が次のように表示されます。• パスがスタック値が最低のものから順に表示されます。• タイミング違反が発生しているパスのスラック値は負であり、赤で表示されます。

10. [Timing Analyzer] ウィンドウの表でパスをクリックすると、Simulink モデルにクロスプローブでき、モデル内の対応する System Generator ブロックがハイライトされます。これにより、タイミング違反が発生しているパスを解析してトラブルシュートできます。

11. クロスプローブすると、対応するパスが次の図に示すようにハイライトされます。12. タイミング違反が発生しているブロックは赤で表示されます。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 65

Page 66: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 72: [Timing Analyzer] ウィンドウからのクロスプローブ

13. [Timing Analyzer] ウィンドウの表の 2 番目のパスをダブルクリックしてクロスプローブします。対応するパスが緑でハイライトされ、タイミング違反が発生していないことがわかります。

図 73: タイミング違反のないパスは緑でハイライト

[Timing Analyzer] ウィンドウを閉じた後、モデルの既存のタイミング解析結果を含む表を再び表示するには、System Generator トークンの [Clocking] タブで [Launch] ボタンをクリックします。これは、Simulink モデルでタイミング解析を既に実行している場合にのみ可能です。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 66

Page 67: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 74: [Timing Analyzer] ウィンドウを開く

注記: [Timing Analyzer] ウィンドウを再度開く場合は、[Analyzer type] に [Timing] が選択されていることを確認してください。表示される表は、[Perform analysis] の設定 ([Post Synthesis] または [Post Implementation]) にかかわらず、System Generator トークンの [Target directory] で指定されているディレクトリに保存されている結果です。

タイミング違反のトラブルシューティング1. 組み合わせパスにレジスタを挿入すると、タイミング結果が向上し、タイミング違反がある場合にそれを解決するのに役立つ場合があります。これには、組み合わせブロックのレイテンシを次に説明するように変更します。

2. [Timing Analyzer] ウィンドウで違反のあるパスをダブルクリックします。次の図に示すように、違反のあるパスが開きます。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 67

Page 68: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 75: タイミング違反が発生しているパス

3. [Mult] ブロックをダブルクリックし、Multiplier ブロックのプロパティ エディターを開きます。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 68

Page 69: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 76: Mult ブロックのプロパティ エディター

4. [Basic] タブで [Latency] を 1 から 2 に変更し、[OK] をクリックします。5. [System Generator] トークンをダブルクリックし、[Analyzer type] が [Timing] に設定されていることを確認して、

[Generate] をクリックします。6. 生成が完了すると、次の図に示すように [Timing Analyzer] ウィンドウが開きます。ステータスが「PASSED」に

なっていることを確認します。デザインにタイミング違反のあるパスはありません。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 69

Page 70: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 77: タイミング違反がないことを示す [Timing Analyzer] ウィンドウ

注記:

1. タイミング解析を繰り返し実行する場合、インプリメンテーション後に解析するよりも、合成後に解析する方が時間がかかりません。

2. ブロックのレイテンシを変更すると、「手順 2: System Generator でのリソース解析」に示すように、リソース数が増加する可能性があります。

関連情報手順 2: System Generator でのリソース解析

手順 2: System Generator でのリソース解析この手順では、手順 1 と同じデザイン Lab3.slx を使用して、リソース解析を実行します。ヒント: 次のコンパイル ターゲットのいずれかを生成したら、リソース解析を実行できます。• IP カタログ• ハードウェア協調シミュレーション• 合成済みチェックポイント• HDL ネットリスト

1. Simulink モデルで [System Generator] トークンをダブルクリックします。パーツ ([Part]) が指定されており、[Compilation] が上記のいずれかに設定されていることを確認します。

2. [Clocking] タブで [Perform Analysis] を [Post Synthesis] に設定し、[Analyzer type] を [Resource] に設定します。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 70

Page 71: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 78: リソース解析用の設定

3. System Generator トークンで [Generate] をクリックします。System Generator でリソース使用量データが処理され、[Resource Analyzer] ウィンドウの表にその情報が表示されます。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 71

Page 72: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 79: Lab3 のリソース使用量

表の各列 ([BRAMs]、[DSPs]、[LUTs] など) のヘッダーに、デザインのターゲットに指定されているザイリンクスデバイスで使用可能なリソースの合計数が表示されます。表の残りの部分には、デザインの各サブシステムおよびブロックが階層別にリストされ、リソース タイプ別に数が表示されます。

4. [Resource Analyzer] ウィンドウの表でブロックまたはサブシステムをクリックすると、Simulink モデルにクロスプローブでき、モデル内の対応する System Generator ブロックまたはサブシステムがハイライトされます。クロスプローブは、特定タイプのリソースを使用してインプリメントされたブロックやサブシステムを特定するのに便利です。

5. 表で選択したブロックが黄色でハイライトされ、赤で囲まれます。図 80: [Resource Analyzer] ウィンドウからのクロスプローブ

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 72

Page 73: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

6. 表で選択したブロックまたはサブシステムが上位のサブシステム内にある場合は、そのブロックに加えて上位サブシステムも赤でハイライトされます。

図 81: リソースのサブシステム表示

重要: [Resource Analyzer] ウィンドウまたは [Timing Analyzer] ウィンドウが開いたときに表に情報が何も表示されない (表のセルが空) 場合は、System Generator トークンをダブルクリックして [Target directory] で新しいディレクトリを設定し、解析を再実行します。

まとめこの演習では、System Generator 内でタイミング解析およびリソース解析を実行する方法を学びました。Vivado 合成が実行され、解析に必要な情報が収集されます。また、単純なデザインで、タイミング違反が発生しているパスを特定し、トラブルシュートする方法も学びました。

演習 3: タイミングおよびリソース解析

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 73

Page 74: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

演習 4

マルチレート システムこの演習では、複数のクロック ドメインを使用する複数データ レートのデザインを効率的にインプリメントする方法を学びます。

目標この演習を終了すると、次のことができるようになります。• 複数クロック ドメインを使用してマルチレート デザインをインプリメントする利点を理解。• FIFO を使用して階層を隔離し、非同期データを安全に転送するチャネルを作成する方法を理解。• 異なるクロックを使用する階層をインプリメントする方法。手順この演習では、次の 3 つの手順を実行します。• 手順 1: クロック ドメイン間に階層を作成します。• 手順 2: 階層間に FIFO を追加します。• 手順 3: 各階層に個別のクロック ドメインを追加します。

手順 1: クロック ドメイン階層の作成この手順では、異なるデータ レートで動作する複数の部分を含むデザインを参照し、デザインを複数のサブシステムに分割して異なるクロック ドメインをインプリメントします。1. System Generator を起動します。

• Windows の場合は、[Start] → [All Programs] → [Xilinx Design Tools] → [Vivado 2019.x] → [System Generator] → [System Generator 2019.x] をクリックします。

• Linux システムの場合は、コマンド プロンプトに「sysgen」と入力します。2. 「cd C:\SysGen_Tutorial\Lab4」と入力して Lab4 フォルダーに移動します。3. コマンド プロンプトに「open Lab4_1.slx」と入力します。

次の図に示すような Simulink デザインが表示されます。このデザインは、次の 3 つの部分から構成されています。• チャネル フィルターは、入力信号 (491.52 MSPS) を典型的なマルチレート フィルターを使用してベースバンド付近 (61.44 MSPS) に変換します。2 つのハーフバンド フィルターの後に 2 の間引き段フィルターを使用しており、1 つの大型フィルターよりも必要な係数の数が大幅に少なくなります。

• 出力部分では、データを使用する後続のブロック用に出力の増加を制御します。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 74

Page 75: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

• 増加は POWER_SCALE 入力で制御します。図 82: Lab4_1 デザインの初期状態

4. [Run simulation] ボタンをクリックしてデザインをシミュレーションします。次の図では、色を使用したサンプル時間表示がイネーブルになっており (キャンバスを右クリックして [SampleTime Display] → [Colors] をクリック)、デザインが複数のデータ レートで実行されていることが示されています。

図 83: Lab4_1 のシミュレーション後の表示

5. System Generator 環境では、異なるデータ レートがデザインで自動的に伝搬されます。このようなマルチレート デザインをハードウェアにインプリメントする場合、データと同じ周波数のクロックを使用するのが最適なインプリメンテーションですが、この環境ではクロックは表示されていません。次に、この理想的なインプリメンテーションを最も効率的に作成する方法を示します。

6. System Generator を使用してマルチレート (マルチクロック) デザインを効率的にインプリメントするには、同じデータ レート (クロック周波数) で実行される部分を 1 つの階層に含めて、それぞれに System Generator トークンを追加します。これらの各階層を FIFO に接続します。

7. このデザインには、はっきりとしたクロック ドメインが 2 つと、少しわかりにくいクロック ドメインが 1 つあります。• 増加制御入力 POWER_SCALE は CPU から設定できるので、CPU と同じクロック周波数で実行できます。• 出力段の実際の増加制御ロジックは、FIR からの出力データと同じ周波数で実行する必要があります。これにより、システムの後続のブロックにより効率的に接続できます。

• わかりにくいのはフィルター チェーンです。演習 1 で説明したように、FIR Compiler などの SystemGenerator で提供される複雑な IP では、自動的にオーバーサンプリングが利用され、最も効率的なハードウェアが得られます。たとえば、100 MHz で動作する乗算器を 40 個使用するのではなく、FIR Compiler では500 MHz で動作する乗算器を 8 個 (= 40*100/500) 使用します。そのため、フィルター チェーン全体を 1 つのクロック ドメインにまとめることができます。最初の FIR Compiler インスタンスは最大クロック レートで実行し、次のインスタンスでは自動的にオーバーサンプリングを使用します。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 75

Page 76: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

これらの領域を異なる階層にまとめることから始めます。8. 下の図に示すように、フィルター チェーンのすべてのブロックを選択します。これらを 1 つのクロック ドメインにまとめます。

9. [Create Subsystem] をクリックして新しいサブシステムを作成します。図 84: DDC サブシステムの作成

10. サブシステムのインスタンス名を選択し、DDC に変更します。図 85: DDC サブシステム作成後の Lab4_1 デザイン

11. 出力パスのコンポーネントを選択し、Gain Control という名前のサブシステムを作成します。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 76

Page 77: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 86: Gain Control サブシステム作成後の Lab4_1 デザイン

12. Gateway In インスタンス [POWER_SCALE] と [Constant] を選択し、CTRL という名前のサブシステムを作成します。デザインは次の図に示すようになります。

図 87: クロック ドメイン用サブシステム作成後の Lab4_1 デザイン

デザインが完成すると、各サブシステムは異なるクロック周波数で実行されます。クロック ドメインはお互いに同期しない可能性があります。現時点では、1 つのサブシステムから別のサブシステムに無効なデータがサンプリングされるのを防ぐための機構はありません。次の手順では、異なるドメイン間に非同期チャネルを作成し、デザインをハードウェアにインプリメントしたときに、データが異なるクロック ドメイン間で非同期に安全に転送されるようにします。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 77

Page 78: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

手順 2: 非同期チャネルの作成この手順では、FIFO を使用してサブシステム間に非同期チャネルをインプリメントします。FIFO のデータは入力された順に処理され、制御信号により有効なデータがある場合にのみデータが読み出され、スペースがある場合にのみデータが書き込まれるよう制御されます。FIFO が空またはフルになると、制御信号がシステムを停止します。このデザインでは、入力は常に書き込み可能であり、FIFO がフルの場合の要件を考慮する必要はありません。このデザインには、FIFO が必要なデータパスが 2 つあります。• CTRL から Gain Control へのデータ。• DDC から Gain Control へのデータ。1. キャンバスのどこかを右クリックし、[Xilinx BlockAdd] をクリックします。2. [Add Block] ダイアログ ボックスに「FIFO」と入力します。3. FIFO を選択してデザインに追加します。4. データパスを FIFO インスタンスを介して接続します。既存の接続を解除してから実行します。

a. CTRL/Out1 を FIFO/din に接続します。b. FIFO/dout を Gain Control/In1 に接続します。

5. FIFO インスタンスのコピーを作成します (Ctrl + C および Ctrl + V キーを使用)。6. データパスを FIFO1 インスタンスを介して接続します。既存の接続を解除してから実行します。

a. DDC/Out2 を FIFO1/din に接続します。b. FIFO1/dout を Gain Control/In3 に接続します。異なるドメイン間のデータが接続され、デザインが次の図に示すようになります。

図 88: FIFO データ チャネルを追加した Lab4_1

次に、制御ロジック信号を接続してデータがドメイン間で安全に転送されるようにします。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 78

Page 79: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

• CTRL ブロックからライト イネーブルが必要です。この信号は存在していないので、作成する必要があります。

• DDC ブロックからライト イネーブルが必要です。これには、最終 FIR 段からの data_tvalid を使用できます。

• Gain Control で両方の FIFO のリード イネーブルを生成する必要があります。FIFO の Empty 信号を使用し、これを反転します。データがある場合は、このブロックが読み出します。

7. [CTRL] ブロックをダブルクリックし、サブシステムを開きます。8. キャンバスを右クリックし、[Xilinx BlockAdd] をクリックして次のブロックを追加します。

a. Delay (ザイリンクス)

b. Relational

9. Out1 インスタンスのコピーを作成します (Ctrl + C および Ctrl + V キーを使用)。10. [Relational] ブロックをダブルクリックし、プロパティ エディターを開きます。11. [Comparison] ドロップダウン リストから [a!=b] を選択し、[OK] をクリックします。12. ブロックを次の図に示すように接続します。

図 89: 変更後の CTRL サブシステム

Out2 に出力ストローブが作成されます。出力ストローブは、入力が変化したときに 1 サイクル間アクティブになり、CTRL から Gain Control (最上位の FIFO ブロック) へのライト イネーブルとして使用されます。

13. [Up to Parent] ツールバー ボタン をクリックし、最上位に戻ります。14. [Gain Control] インスタンスをダブルクリックし、サブシステムを開きます。15. キャンバスを右クリックし、[Xilinx BlockAdd] をクリックして次のブロックを追加します。

a. Inverter

b. Inverter (合計 2 個のインバーター)

c. Delay (ザイリンクス)

16. Out1 インスタンスのコピー Out3 を作成します (Ctrl + C および Ctrl + V キーを使用)。• Out3 を DDC_Read という名前に変更します。

17. Out1 インスタンスのコピー Out3 を作成します (Ctrl + C および Ctrl + V キーを使用)。• Out3 を CTRL_Read という名前に変更します。

18. In1 インスタンスのコピー In4 を作成します (Ctrl + C および Ctrl + V キーを使用)。• In4 を CTRL_Empty という名前に変更します。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 79

Page 80: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

19. ブロックを次の図に示すように接続します。図 90: 変更後の Gain Control サブシステム

• Gain Control FIFO (FIFO) ブロックからの FIFO Empty 信号は、最上位 DDC FIFO (FIFO1) のリード イネーブルを作成するのに使用した Inverter ブロックです。FIFO が空でなければ、データが読み出されます。

• 同様に、最上位 DDC FIFO (FIFO1) からの FIFO Empty 信号が反転され、FIFO のリード イネーブルが作成されています。

• この同じ信号は、新しい data_tvalid (以前は In2) として使用されます。ただし、FIFO のレイテンシは 1なので、この信号を遅延させて制御信号が FIFO により 1 遅延されたデータと正しく揃うようにします。

20. [Up to Parent] ツールバー ボタン をクリックして最上位に戻ります。最上位に制御信号が含まれています。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 80

Page 81: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 91: 変更後の Lab4_1 デザイン

接続を完成させます。21. 制御パスを FIFO インスタンスを介して接続します。既存の接続を解除してから実行します。

a. CTRL/Out2 を FIFO/we に接続します。b. FIFO/empty を Gain Control/CTRL_Empty に接続します。c. Gain Control/CTRL_Read を FIFO/re に接続します。

22. 制御パスを FIFO1 インスタンスを介して接続します。既存の接続を解除してから実行します。a. DDC/Out1 を FIFO1/we に接続します。b. FIFO1/empty を Gain Control/In2 に接続します。c. Gain Control/DDC_Read を FIFO1/re に接続します。

図 92: 最終的な Lab4_1 デザイン

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 81

Page 82: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

23. [Run simulation] ボタンをクリックしてデザインをシミュレーションし、正しく動作することを確認します。手順1 ~ 4 の結果と同じになります。

次の手順では、各階層に個別のクロック ドメインを指定する方法を学びます。

手順 3: クロック ドメインの指定この手順では、各サブシステムに異なるクロック ドメインを指定します。1. System Generator トークンをダブルクリックし、プロパティ エディターを開きます。2. [Clocking] タブをクリックします。3. [Enable multiple clocks] をクリックします。注記: [FPGA clock period] と [Simulink system period] が淡色表示されます。これは、クロック レートが SystemGenerator により各階層に個別に設定されることを示しています。マルチレート デザインでは、最上位にサブシステムと FIFO のみが含まれるようにし、ほかのロジックは含めないようにすることが重要です。

図 93: 複数のクロック ドメインをイネーブル

4. [OK] をクリックしてプロパティ エディターを閉じます。次に、CTRL ブロックのクロック レートを指定します。CTRL ブロックは、100 MHz で実行される CPU で駆動されます。

5. [System Generator] トークンを選択します。6. Ctrl + C キーを押すか右クリックして [Copy] をクリックし、トークンをコピーします。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 82

Page 83: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

次に、CTRL ブロックにクロック レートを指定します。このブロックには 100 MHz のクロックを供給し、AXI4-Lite インターフェイスを使用してアクセスします。

7. [CTRL] ブロックをダブルクリックし、サブシステムを開きます。8. Ctrl + V キーを押すか右クリックして [Paste] をクリックし、System Generator トークンを CTRL に貼り付けます。

9. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。10. [Clocking] タブをクリックします。11. [Enable multiple clocks] をオフにします。12. [FPGA clock period] を [1e9/100e6] に変更します。13. [Simulink system period] を [1/100e6] に変更します。

図 94: CTRL クロック ドメイン

14. [OK] をクリックしてプロパティ エディターを閉じます。15. Gateway In インスタンス [POWER_SCALE] をダブルクリックし、プロパティ エディターを開きます。16. [Sample period] をこのブロックの新しい周波数である [1/100e6] に変更します。

[Implementation] タブの [Interface] は [AXI4-Lite] に設定されています。これにより、このポートが AXI4-Lite インターフェイスにレジスタとしてインプリメントされます。

17. [OK] をクリックしてプロパティ エディターを閉じます。18. System Generator トークンを選択してコピーします。19. [Up to Parent] ツールバー ボタンをクリックして最上位に戻ります。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 83

Page 84: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

次に、Gain Control ブロックのクロック レートを指定します。Gain Control ブロックには、DDC の出力と同じレート (61.44 MHz) のクロックが供給されます。

20. [Gain Control] ブロックをダブルクリックし、サブシステムを開きます。21. Ctrl + V キーを押すか右クリックして [Paste] をクリックし、System Generator トークンを Gain Control に貼り付

けます。22. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。23. [Clocking] タブをクリックします。24. [FPGA clock period] を [1e9/61.44e6] に変更します。25. [Simulink system period] を [1/61.44e6] に変更します。

図 95: Gain Control クロック ドメイン

26. [OK] をクリックしてプロパティ エディターを閉じます。出力信号名には、接頭辞として M_AXI_DATA_ が付きます。どちらの信号名も有効な AXI4 信号名 (tvalid および tdata) なので、これらのポートは AXI4 インターフェイスとしてインプリメントされます。

27. [Up to Parent] ツールバー ボタンをクリックして最上位に戻ります。DDC ブロックでは、入力データのレートである元のデザインと同じクロック周波数 (491 MHz) が使用されます。

28. 最上位デザインで System Generator トークンを選択してコピーします。29. [DDC] ブロックをダブルクリックし、サブシステムを開きます。30. Ctrl + V キーを押すか右クリックして [Paste] をクリックし、System Generator トークンを DDC に貼り付けます。31. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 84

Page 85: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

32. [Clocking] タブをクリックします。33. [Enable multiple clocks] をオフにします。[FPGA clock period] と [Simulink system period] が 491 MHz に設定されます。

図 96: DDC クロック ドメイン

34. [OK] をクリックしてプロパティ エディターを閉じます。35. [Up to Parent] ツールバー ボタンをクリックして最上位に戻ります。36. デザインを保存します。37. [Run simulation] ボタンをクリックしてデザインをシミュレーションし、先ほどと同じ結果であることを確認しま

す。これで、デザインが 3 つのクロック ドメインでインプリメントされます。

38. 最上位の [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。39. [Generate] をクリックし、デザインをハードウェア記述にコンパイルします。40. [Yes] をクリックしてシミュレーションの警告を閉じます。41. 生成が完了したら、[OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。42. [OK] をクリックして System Generator トークンを閉じます。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 85

Page 86: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

43. C:\SysGen_Tutorial\Lab4\IPP_QT_MCD_0001\DDC_HB_hier\ip\hdl\ lab4_1.vhd を開き、デザインに 3 つのクロックが使用されていることを確認します。entity lab4_1 is port ( ctrl_clk : in std_logic; ddc_clk : in std_logic; gain_control_clk : in std_logic;

まとめこの演習では、異なるクロック レートでインプリメントするデザインの部分に個別の階層を作成する方法を学びました。これらの階層を FIFO を使用して分離してデータを安全に非同期転送できるようにし、各階層にクロック レートを指定する方法も学びました。この演習で使用した最終 System Generator ファイル (*.slx) は、次の solution ディレクトリにあります。solution ディレクトリには、System Generator からの IP 出力および Vivado® Design Suite で生成されたファイルおよびディレクトリは含まれていません。C:/SysGen_Tutorial/Lab4/solution

• 手順 1 の結果は、Lab4_1_sol.slx に含まれます。• 手順 2 の結果は、Lab4_2_sol.slx に含まれます。• 手順 3 からの最終結果は、Lab4_3_sol.slx に含まれます。

演習 4: マルチレート システム

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 86

Page 87: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

演習 5

IP インテグレーターでの AXI インターフェイスの使用

この演習では、System Generator を使用して AXI インターフェイスをインプリメントする方法を学びます。デザインを IP カタログ フォーマットで保存し、その IP を Vivado® IP インテグレーター環境で使用します。AXI インターフェイスを使用すると、IP インテグレーターでコネクション アシスタンスを使用してすばやく接続できることを学びます。

目標この演習を終了すると、次のことができるようになります。• デザインに AXI インターフェイスをインプリメント。• デザインを IP として Vivado IP カタログに追加。• IP インテグレーターでデザインを接続。手順この演習では、次の 4 つの手順を実行します。• 手順 1: System Generator を使用して AXI インターフェイスをインプリメントします。• 手順 2: System Generator IP 用に Vivado プロジェクトを作成します。• 手順 3: IP インテグレーターで System Generator IP を使用してデザインを作成します。• 手順 4: デザインをインプリメントし、FPGA のプログラムに使用する FPGA ビットストリームを生成します。

手順 1: AXI インターフェイスの定義と作成この手順では、AXI インターフェイスを定義して作成します。1. System Generator を起動し、[Current Folder] ブラウザーでディレクトリを C:\SysGen_Tutorial\Lab5 に変更します。

2. [Command Window] に「open Lab5_1.slx」と入力します。次の図に示すデザインが表示されます。

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 87

Page 88: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 97: Lab5_1 デザイン

このデザインでは、多数の AXI インターフェイスが使用されています。これらについて見ていきます。• AXI インターフェイスを使用すると、Vivado IP カタログにデザインをエクスポートし、IP インテグレーターを使用して効率的にシステムに組み込むことができます。

• IP カタログにエクスポートするデザインに AXI インターフェイスを使用することは必須ではありません。このデザインには、次の AXI インターフェイスが使用されています。• s_axis_source_* ポートには AXI4-Stream インターフェイスが使用されます。Gateway In および

Gateway Out ブロックのすべての信号名には同じ接頭辞 (s_axis_source_) が付けられており、同じインターフェイスにまとめられます。すべてのポートの接尾辞はすべて有効な AXI4-Stream インターフェイス信号名 (tready、tvalid、tlast、および tdata) です。○ m_axis_dout_* ポートには AXI4-Stream インターフェイスが使用されます。○ 残りのポートには、AXI4-Lite が使用されます。これは、次の手順を使用して確認できます。

3. Gateway In インスタンス [decrypt] (または [reset]、[Keys[63:32]]、[Keys[31:0]]、[parity_err] のいずれか) をダブルクリックします。

4. プロパティ エディターで [Implementation] タブをクリックします。5. [Interface] が [AXI4-Lite] に設定されていることを確認します。6. [OK] をクリックしてプロパティ エディターを閉じます。

デザインのシミュレーションの詳細は、キャンバスに記述されます。この演習では、デザインを Vivado IP カタログにエクスポートして、その IP を既存のデザインで使用することに焦点を置きます。

手順 2: System Generator IP を使用した Vivado プロジェクトの作成

この手順では、ハードウェア デザインを作成するのに使用する Vivado プロジェクトを作成します。1. [System Generator] トークンをダブルクリックし、プロパティ エディターを開きます。2. プロパティ エディターで、[Compilation] に [IP Catalog] が選択されていることを確認します。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 88

Page 89: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

3. [Generate] をクリックしてデザインを IP カタログ フォーマットで生成します。4. [OK] をクリックして [Compilation status] ダイアログ ボックスを閉じます。5. [OK] をクリックして System Generator トークンを閉じます。6. デザインは、IP カタログ フォーマットで記述され、./IPI_Project ディレクトリに保存されています。次に、

この IP を Vivado IP カタログにインポートし、既存のサンプル デザインで使用します。7. [Start] → [All Programs ] → [Xilinx Design Tools] → [Vivado 2019.x] → [Vivado 2019.x] をクリックして Vivado IDEを開きます。

8. [Create Project] をクリックします。9. [Next] をクリックします。10. [Project Location] に「C:/SysGen_Tutorial/Lab5/IPI_Project」と入力します。ヒント: [Project Location] に「/IPI_Project」と手で入力して IPI_Project ディレクトリを作成する必要があります。

図 98: Vivado IP インテグレーター プロジェクト

11. [Next] をクリックします。12. [RTL Project] および [Do not specify sources] をオンにして [Next] をクリックします。13. [Boards] をクリックして [ZYNQ-7 ZC702 Evaluation Board] を選択します。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 89

Page 90: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 99: ターゲット デバイス

14. [Next] をクリックします。15. [Finish] をクリックします。16. ZC702 評価ボードをターゲットとする Vivado プロジェクトが作成されました。

手順 3: IP インテグレーターでのデザインの作成この手順では、System Generator IP を使用してデザインを作成します。1. Flow Navigator で [Create Block Design] をクリックします。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 90

Page 91: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 100: ブロック デザインの作成

2. [Create Block Design] ダイアログ ボックスで [OK] をクリックし、デフォルトの名前を使用します。まず、System Generator IP 用の IP リポジトリを作成し、IP をこのリポジトリに追加します。

3. [Diagram] ウィンドウを右クリックし、[IP Settings] をクリックします。図 101: IP 設定を開く

4. [Settings] ダイアログ ボックスで [Project Settings] → [IP] → [Repository] を選択し、[Add Repository] ボタン をクリックしてリポジトリを追加します。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 91

Page 92: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 102: [Add Repository] ボタン

5. [IP Repositories] ダイアログ ボックスで、次のディレクトリに移動します。C:\SysGen_Tutorial\Lab5\IPI_Project\ip

6. ip フォルダーが選択された状態で [Select] をクリックし、新しいリポジトリを作成します。図 103: ip フォルダーを IP リポジトリとして選択

7. [OK] をクリックして [Add Repository] ダイアログ ボックスを閉じます。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 92

Page 93: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

8. [OK] をクリックして [Settings] ダイアログ ボックスを閉じます。9. キャンバスの中央にある [Add IP] ボタンをクリックします。10. [Search] フィールドに「zynq」と入力します。11. [ZYNQ7 Processing System] をダブルクリックして CPU を追加します。

図 104: ZYNQ7 Processing System の追加

12. [Run Block Automation] をクリックします。図 105: ブロック オートメーションの実行

13. [Apply Board Presets] をオンのままにし、[OK] をクリックします。これにより、デザインが ZC702 評価ボードで動作するよう自動的に設定されます。

14. [Diagram] ウィンドウのどこかを右クリックし、[Add IP] をクリックします。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 93

Page 94: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 106: IP インテグレーターのブロック図に IP を追加

15. [Search] フィールドに「lab5」と入力します。16. [ lab5_1] をダブルクリックし、デザインに IP を追加します。17. 次に、この IP をデザインに接続します。Vivado IP インテグレーターでは、デザインに AXI インターフェイスが使用されていると、設計アシスタンスが提供されます。

18. デザイン キャンバス上部にあるバナーの [Run Connection Automation] リンクをクリックします。19. [OK] をクリックし、デフォルト オプション (lab5_1_0/lab5_1_s_axi から processing_system7_0/

M_AXI_GP0) を選択して AXI4-Lite インターフェイスを Zynq®-7000 IP SoC に接続します。20. [ZYNQ7 Processing System] をダブルクリックして IP をカスタマイズします。21. [PS-PL Configuration] をクリックします。22. [HP Slave AXI Interface] を展開して [S AXI GP0 interface] を選択します。

[S AXI HP0 interface] の横にあるチェック ボックスがオンになっていることを確認します。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 94

Page 95: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

図 107: ZYNQ7 Processing System のカスタマイズ

23. [OK] をクリックして Zynq Processing System にこのポートを追加します。24. System Generator IP lab5_1 ブロックの AXI4-Stream 入力インターフェイス ポート s_axis_source をクリックして押したままにし、マウスをドラッグします。鉛筆形のカーソルが近づくと、有効な接続が緑のチェック マークで示されます。マウスを Zynq Processing System の S_AXI_HP0 ポートにドラッグして接続します。

図 108: AXI4-Stream インターフェイスの接続

25. [Make Connect] ダイアログ ボックスで [OK] をクリックします。26. [Run Connection Automation] をクリックして AXI DMA の AXI4-Lite インターフェイスをプロセッサに接続します。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 95

Page 96: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

27. デフォルト設定のまま [OK] をクリックします。28. [Validate Design] ボタンをクリックしてデザインにエラーがないことを確認します。

図 109: IP インテグレーター デザインの検証

29. [OK] をクリックして [Validate Design] メッセージを閉じます。System Generator からのデザインが IP インテグレーター デザインに組み込まれました。リポジトリの IP は、プロジェクトにリポジトリを追加することによりどの Vivado プロジェクトでも使用できます。

30. 次に、デザインをビットストリーム生成まで実行します。

手順 4: デザインのインプリメントこの手順では、IP インテグレーター デザインをインプリメントし、ビットストリームを生成します。1. Flow Navigator の [Project Manager] をクリックします。2. [Sources] ウィンドウの [Design Sources] ツリー ビューの一番上に design_1 というブロック ダイアグラム オブジェクトが表示されます。

3. このオブジェクトを右クリックして [Generate Output Products] をクリックします。図 110: 出力ファイルの生成

4. [Generate Output Products] ダイアログ ボックスで [Generate] をクリックし、必要なソース ファイルの生成を開始します。

5. design_1 オブジェクトを再び右クリックして [Create HDL Wrapper] をクリックし、[Let Vivado managewrappter and auto-update] (Vivado でラッパーを自動管理) をオンにして [OK] をクリックします。

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 96

Page 97: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

[Design Sources] ツリーの一番上に design_1_wrapper.v ファイルが表示されます。これで、デザインを合成してインプリメンテーションし、FPGA プログラム ビットストリームを生成する準備ができました。

6. Flow Navigator で [Generate Bitstream] をクリックし、残りのフローを実行します。7. [Yes] をクリックし、合成およびインプリメンテーション ファイルを生成します。8. ビットストリーム生成が終了したら、ダイアログ ボックスで [Open Implemented Design] をオンにして [OK] をクリックします。

9. インプリメント済みデザインを確認したら、Vivado IDE を閉じます。

まとめこの演習では、System Generator デザインに AXI インターフェイスを追加し、System Generator デザインを IP カタログ フォーマットで保存して Vivado IP カタログに追加し、デザインで使用する方法を学びました。また、デザインで AXI インターフェイスを使用すると、IP インテグレーターのコネクション オートメーションを利用して設計時間を大幅に短縮できることを学びました。この演習で使用した最終 System Generator ファイル (*.slx) は、次の solution ディレクトリにあります。solution ディレクトリには、System Generator からの IP 出力および Vivado Design Suite で生成されたファイルおよびディレクトリは含まれていません。C:/SysGen_Tutorial/Lab5/solution

演習 5: IP インテグレーターでの AXI インターフェイスの使用

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 97

Page 98: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

付録 A

その他のリソースおよび法的通知

ザイリンクス リソースアンサー、資料、ダウンロード、フォーラムなどのサポート リソースは、ザイリンクス サポート サイトを参照してください。

Documentation Navigator およびデザイン ハブザイリンクス Documentation Navigator (DocNav) では、ザイリンクスの資料、ビデオ、サポート リソースにアクセスでき、特定の情報を取得するためにフィルター機能や検索機能を利用できます。DocNav を開くには、次のいずれかを実行します。• Vivado® IDE で [Help] → [Documentation and Tutorials] をクリックします。• Windows で [スタート] → [すべてのプログラム ] → [Xilinx Design Tools] → [DocNav] をクリックします。• Linux コマンド プロンプトに「docnav」と入力します。ザイリンクス デザイン ハブには、資料やビデオへのリンクがデザイン タスクおよびトピックごとにまとめられており、これらを参照することでキー コンセプトを学び、よくある質問 (FAQ) を参考に問題を解決できます。デザイン ハブにアクセスするには、次のいずれかを実行します。• DocNav で [Design Hub View] タブをクリックします。• ザイリンクス ウェブサイトでデザイン ハブ ページを参照します。注記: DocNav の詳細は、ザイリンクス ウェブサイトの Documentation Navigator ページを参照してください。DocNav からは、日本語版は参照できません。ウェブサイトのデザイン ハブ ページをご利用ください。

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には「貴殿」、法人その他の団体の場合には「貴社」。以下同じ) に開示される情報 (以下「本情報」といいます) は、ザイリンクスの製品を選択および使用することのためにのみ提供されます。適用される法律が許容する最大限の範囲で、(1) 本情報は「現状有姿」、およびすべて受領者の責任で (with all faults) という状態で提供され、ザイリンクスは、本通知をもって、明示、黙示、法定を問わず (商品性、非侵害、特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する) ものとします。また、(2) ザイリンクスは、本情報 (貴殿または貴社による本情報の使用を含む) に関係し、起

付録 A: その他のリソースおよび法的通知

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 98

Page 99: Vivado Design Suite チュートリアル...Vivado Design Suite チュートリアル System Generator を使用した モデル ベ ースの DSP デザイン UG948 (v2019.2) 2019

因し、関連する、いかなる種類・性質の損失または損害についても、責任を負わない (契約上、不法行為上 (過失の場合を含む)、その他のいかなる責任の法理によるかを問わない) ものとし、当該損失または損害には、直接、間接、特別、付随的、結果的な損失または損害 (第三者が起こした行為の結果被った、データ、利益、業務上の信用の損失、その他あらゆる種類の損失や損害を含みます) が含まれるものとし、それは、たとえ当該損害や損失が合理的に予見可能であったり、ザイリンクスがそれらの可能性について助言を受けていた場合であったとしても同様です。ザイリンクスは、本情報に含まれるいかなる誤りも訂正する義務を負わず、本情報または製品仕様のアップデートを貴殿または貴社に知らせる義務も負いません。事前の書面による同意のない限り、貴殿または貴社は本情報を再生産、変更、頒布、または公に展示してはなりません。一定の製品は、ザイリンクスの限定的保証の諸条件に従うこととなるので、https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。IP コアは、ザイリンクスが貴殿または貴社に付与したライセンスに含まれる保証と補助的条件に従うことになります。ザイリンクスの製品は、フェイルセーフとして、または、フェイルセーフの動作を要求するアプリケーションに使用するために、設計されたり意図されたりしていません。そのような重大なアプリケーションにザイリンクスの製品を使用する場合のリスクと責任は、貴殿または貴社が単独で負うものです。https://japan.xilinx.com/legal.htm#tos で見られるザイリンクスの販売条件を参照してください。

自動車用のアプリケーションの免責条項オートモーティブ製品 (製品番号に「XA」が含まれる) は、ISO 26262 自動車用機能安全規格に従った安全コンセプトまたは余剰性の機能 (「セーフティ設計」) がない限り、エアバッグの展開における使用または車両の制御に影響するアプリケーション (「セーフティ アプリケーション」) における使用は保証されていません。顧客は、製品を組み込むすべてのシステムについて、その使用前または提供前に安全を目的として十分なテストを行うものとします。セーフティ設計なしにセーフティ アプリケーションで製品を使用するリスクはすべて顧客が負い、製品責任の制限を規定する適用法令および規則にのみ従うものとします。

商標© Copyright 2013-2019 Xilinx, Inc. Xilinx、Xilinx のロゴ、Alveo、Artix、Kintex、Spartan、Versal、Virtex、Vivado、Zynq、およびこの文書に含まれるその他の指定されたブランドは、米国およびその他各国のザイリンクス社の商標です。 AMBA、AMBA Designer、Arm、ARM1176JZ-S、CoreSight、Cortex、PrimeCell、Mali、および MPCore は、EUおよびその他各国の Arm Limited の商標です。 MATLAB および Simulink は、MathWorks, Inc. の登録商標です。 すべてのその他の商標は、それぞれの保有者に帰属します。

この資料に関するフィードバックおよびリンクなどの問題につきましては、[email protected] まで、または各ページの右下にある [フィードバック送信] ボタンをクリックすると表示されるフォームからお知らせください。フィードバックは日本語で入力可能です。いただきましたご意見を参考に早急に対応させていただきます。なお、このメール アドレスへのお問い合わせは受け付けておりません。あらかじめご了承ください。

付録 A: その他のリソースおよび法的通知

UG948 (v2019.2) 2019 年 11 月 6 日 japan.xilinx.comSystem Generator を使用したモデル ベースの DSP デザイン 99