+ All Categories
Home > Documents > Model Composer ユーザー ガイド ഊ(UG1262) · Model Composer ユーザー ガイド UG1262...

Model Composer ユーザー ガイド ഊ(UG1262) · Model Composer ユーザー ガイド UG1262...

Date post: 10-Jun-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
185
Model Composer ユーザー ガイド UG1262 (v2017.4) 2017 12 20 この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料に よっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきまし ては、必ず最新英語版をご参照ください。
Transcript
  • Model Composer ユーザーガイドUG1262 (v2017.4) 2017 年 12 月 20 日

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

    http://www.xilinx.com

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

    日付 バージョン 改訂内容2017 年 12 月 20 日 2017.4 初版。

    改訂履歴

    Model Composer ユーザー ガイド 2UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=2

  • 目次改訂履歴......................................................................................................................................... 2第 1 章: 概要................................................................................................................................. 5

    Model Composer とは.................................................................................................................5第 2 章: Model Composer デザインの作成.................................................................. 9

    Model Composer の起動.............................................................................................................9新規モデルの作成....................................................................................................................... 10モデルへのブロックの追加........................................................................................................ 11ブロックの接続...........................................................................................................................13データ型の使用...........................................................................................................................14最上位サブシステム モジュールの作成..................................................................................... 21

    第 3 章: C/C++ コードのカスタム ブロックとしてのインポート......................22概要..............................................................................................................................................22xmcCreateLibrary コマンドの使用...........................................................................................22Model Composer への C/C++ のインポート............................................................................26テンプレート ブロックの定義....................................................................................................27ライブラリ ブラウザーへのユーザー ライブラリの追加..........................................................30

    第 4 章: 出力の生成................................................................................................................. 32概要..............................................................................................................................................32Model Composer Hub ブロックの追加....................................................................................32インターフェイス仕様の定義.....................................................................................................35Vivado 用 IP パッケージの生成................................................................................................. 39System Generator IP の生成.....................................................................................................48C++ コードの生成....................................................................................................................... 53

    第 5 章: デザインのシミュレーションおよび検証....................................................57概要..............................................................................................................................................57Simulink のシミュレーション....................................................................................................58Model Composer のキャッシュの管理.................................................................................... 59C++ コードの検証....................................................................................................................... 60

    Model Composer ユーザー ガイド 3UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=3

  • C/RTL コードの検証................................................................................................................... 61付録 A: ターゲット デバイスまたはボードの選択................................................... 62

    [Select Device] ダイアログ ボックス........................................................................................ 62付録 B: ストリーミングのサポート.................................................................................64ランダム アクセス vs 順次アクセス...........................................................................................64

    付録 C: Model Composer ブロック ライブラリ...................................................... 66サポートされる Simulink ブロック........................................................................................... 66Model Composer ブロックの分類............................................................................................67Model Composer ブロック....................................................................................................... 71

    付録 D: その他のリソースおよび法的通知................................................................ 183参考資料.................................................................................................................................... 183お読みください: 重要な法的通知.............................................................................................184

    Model Composer ユーザー ガイド 4UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=4

  • 第 1 章

    概要Model Composer とはModel Composer は、MathWorks Simulink 環境でデザインを短時間で試行できるモデル ベースのデザイン ツールで、自動コード生成により、ザイリンクス All Programmable デバイスのプロダクションまでの時間を短縮できます。MATLAB のアドオン製品である Simulink では、システム レベル デザインのモデリング、シミュレーション、解析、および検証をインタラクティブなグラフィカル環境で実行できます。ModelComposer は、MathWorks Simulink 環境に合わせたザイリンクス ツールボックスとして構築されており、アルゴリズム開発者が Simulink のグラフィカル環境のすべての機能を使用して、アルゴリズムを設計および検証できるようになっています。アルゴリズムは、Model Composer ライブラリからのブロックやユーザーがインポートしたカスタム ブロックを使用して Simulink で記述できます。Model Composer では、自動最適化機能とVivado HLS の高位合成テクノロジを使用して、ユーザーのアルゴリズム仕様をプロダクション品質の IP インプリメンテーションに変換します。Vivado Design Suite の IP インテグレーター機能を使用すると、その IP をプラットフォーム (Zynq デバイス、DDR3 DRAM、ARM プロセッサで実行されるソフトウェア スタックなど) に統合できます。Model Composer には、Simulink 環境内で使用可能な最適化済みのブロックを 80 以上含むライブラリが含まれます。これには、数学、線形代数、論理、ビット演算などのアルゴリズムを記述した基本的な論理ブロックが含まれます。また、画像処理およびコンピューター ビジョン用の特定用途向けブロックも多く含まれます。Xilinx Model Composer ブロック ライブラリには、次のカテゴリが含まれています。表 1: Xilinx Model Composer ブロック ライブラリ

    ライブラリ 説明Computer Vision デジタル化された画像の解析、操作、および最適化をサポートするブロック。Logic and Bit Operations 論理演算とビット単位演算をサポートするブロック。Lookup Tables 入力インデックスを使用して 1 次元のルックアップ演算を実行するブロックセット。Math Functions 数学関数をインプリメントするブロック。Ports and Subsystems サブシステムと入力/出力ポートを作成できるにするブロック。Relational Operations 2 つの入力間の関係 (数値等価および不等価) を定義するブロックセット。

    Model Composer ユーザー ガイド 5UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://www.mathworks.com/products/simulink.htmlhttps://japan.xilinx.com/products/design-tools/vivado/integration/esl-design.htmlhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=5

  • 表 1: Xilinx Model Composer ブロック ライブラリ (続き)ライブラリ 説明

    Signal Attributes 入力型と出力型の互換性をサポートするためのブロック (型変換など)。Signal Operations 新しい信号を生成するために、信号の時間変数の単純な変更をサポートするブロック

    (Unit Delay など)。Signal Routing 信号のソースおよびデスティネーションを監視するための設定をサポートするブロック (Bus Selector など)。Sinks ほかのブロックからの物理的な信号出力を受信するブロック。Source 信号データを生成またはインポートするブロック。Tools モデルのインプリメンテーション/インターフェイスを制御するブロック。

    1: 概要

    Model Composer ユーザー ガイド 6UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=6

  • Xilinx Model Composer ブロック ライブラリの特定のブロックに関する詳細は、付録 C: ModelComposer ブロック ライブラリを参照してください。Model Composer ブロック ライブラリは、標準 Simulink ブロック ライブラリと互換性があり、Simulink でシミュレーション可能なモデルを作成する際に一緒に使用できます。ただし、ModelComposer によるコード生成がサポートされるのは、一部の Simulink ブロックのみです。ModelComposer の出力生成と互換性のある Simulink ブロックは、Xilinx Model Composer ブロック ライブラリに含まれます。Model Composer では、既存の C/C++ コードからモデルで使用可能なカスタム ブロックを作成できます。詳細は、3: C/C++ コードのカスタム ブロックとしてのインポートを参照してください。Model Composer では、システム レベル デザインのアルゴリズム手法を試し、アプリケーション モジュールを定義して出力を生成し、その他の Simulink ブロックを接続してシミュレーションをイネーブルにし、デザインの出力特性を定義できます。デザイン モデルを Vivado HLS で合成できるように C++ コードにコンパイルしたり、System Generator ブロックを作成したり、Vivado Design Suite で使用できる IP パッケージを作成したりできます。次の図は、通常のツール フローを示しています。

    図 1: Model Composer ツール フロー

    1: 概要

    Model Composer ユーザー ガイド 7UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=7

  • Model Composer について学ぶには、『Model Composer チュートリアル: Model Composer を使用したモデルベース デザイン』 (UG1259) の演習およびデータを使用することをお勧めします。この資料の残りの部分では、次について説明します。• ブロック ライブラリを使用した Model Composer モデルの作成• 既存の C コードを Model Composer ブロック ライブラリへインポートしてモデルで使用• モデルをコンパイルしてダウンストリーム デザイン ツールで使用• Model Composer モデル、C++、および RTL 出力の検証

    1: 概要

    Model Composer ユーザー ガイド 8UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=latest;d=ug1259-model-composer-tutorial.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=8

  • 第 2 章

    Model Composer デザインの作成Model Composer の起動Model Composer はデスクトップ アイコンまたはコマンド ラインから起動できます。ModelComposer アイコンをダブルクリックするか、Windows オペレーティング システムの [スタート]メニューから起動するか、コマンド プロンプトから次のコマンドを使用してください。model_composer

    ヒント: Model Composer でコマンド ラインを使用するには、コマンド シェルが次のように設定されている必要があります。ディレクトリを /Model_Composer/ に変更して、settings64-Model_Composer.bat (または .sh) ファイルを実行します。 はインストール フォルダーで、 はツールの特定バージョンです。MATLAB が開き、Model Composer ライブラリと機能がこの環境に読み込まれます。ここで、メイン ツールバー メニューから Simulink アイコンをクリックするか、MATLAB コマンド プロンプトに「simulink」と入力します。>> simulink

    Simulink のスタート ページが表示されます。Model Composer の機能が Simulink プラットフォームに読み込まれます。Model Composer では、現バージョンの MATLAB と 1 つ前のリリースがサポートされます。たとえば、2017.4 リリースの Model Composer では R2017.x および R2016.x がサポートされます。システムに複数バージョンの MATLAB をインストールしている場合は、PATH で見つかった最初のバージョンが Model Composer で使用されます。特定のバージョンを使用するには、PATH をその MATLAB バージョンに変更しておきます。また、次のように -matlab オプションを使用すると、直接特定のバージョンを開くことができます。model_composer -matlab C:\Progra~1\MATLAB\R2016b

    Model Composer ユーザー ガイド 9UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=9

  • ヒント: MATLAB バージョンのパスを指定する際は、実行ファイルへのフル パス (bin/MATLAB) は指定しないでください。「C:\Progra~1\」文字列は「C:\Program Files\」へのショートカットで、コマンド パスからスペースを削除します。Model Composer でコマンド ラインを使用するには、コマンド シェルが先ほど説明したように設定されている必要があります。

    新規モデルの作成新しいモデルを作成するには、ライブラリ ブラウザーから Simulink Editor へブロックを追加します。この後、これらのブロックを信号ラインに接続し、ブロック間の関係を構築します。Simulink Editor では、スマート ガイドおよびスマート信号配線を使用して接続が管理され、構築中のモデルの表示が制御されます。モデルに階層を追加するには、ブロックおよび信号のグループを 1 つのブロック内のサブシステムとしてカプセル化します。Model Composer には、定義済みのブロックセットが含まれており、これらを組み合わせてアプリケーションの詳細なモデルを作成できます。Simulink のスタート ページで [Blank Model] を選択して新しいモデルを開きます。ヒント: Model Composer テンプレートが定義されている場合は、既存のテンプレートを開くこともできます。モデル テンプレートは、設定およびブロック コンフィギュレーションを再利用するための開始点です。テンプレートの詳細は、Simulink の資料 「モデルからのテンプレートの作成」を参照してください。Simulink のスタート ページの左側には、最近開いたモデルがリストされ、これらの 1 つを開くこともできます。空のモデルを開いたら、ブロックを追加して、ブロック パラメーターを指定し、信号ラインを使用してブロック間を接続して、Model Composer モデルを作成します。重要: Model Composer では、モデルに対して 1 サンプル時間しかサポートされず、複数のサンプル時間はサポートされません。すべての Model Composer ブロックに、モデルのソース ブロックからのサンプル時間が継承されます。詳細は、「サンプル時間とは」を参照してください。モデルを保存するには、メイン メニューから [File] → [Save] をクリックします。[Save As] ダイアログ ボックスが開きます。正しいフォルダーまたはディレクトリを指定し、[File Name] フィールドにモデルの名前を入力します。[Save] をクリックします。モデルが .slx という拡張子のファイルに保存されます。Model Composer のサンプル モデルには、[Help] メニューから表示可能な Xilinx ModelComposer 資料の「Model Composer Examples」セクションからアクセスできるほか、MATLABコマンド プロンプトから xmcOpenExample コマンドを入力しても入手できます。>> xmcOpenExample

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 10UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://jp.mathworks.com/help/simulink/ug/create-a-template-from-a-model.htmlhttps://jp.mathworks.com/help/simulink/ug/create-a-template-from-a-model.htmlhttps://jp.mathworks.com/help/simulink/ug/what-is-sample-time.htmlhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=10

  • このコマンドを実行すると、使用可能なサンプル モデルのリストが表示されます。xmcOpenExample コマンドは、サンプル モデルを指定したターゲット ディレクトリ (ターゲット ディレクトリが指定されていない場合は temp ディレクトリ) にコピーし、Model Composerで開きます。次は、サンプルとターゲット ディレクトリを指定する方法を示しています。xmcOpenExample('importing_c_code','C:\Data\importing_code')

    ヒント: 指定したターゲット ディレクトリが存在しない場合は、Model Composer により自動的に作成されます。

    モデルへのブロックの追加ブロックを現在のモデルに追加するには、ライブラリ ブラウザーを開いて、ブロックを Simulinkエディターのデザイン キャンバスにドラッグ アンド ドロップします。ライブラリ ブラウザーは、 ボタンをクリックするか、メイン メニューから [View] → [Library Browser] をクリックすると開くことができます。ライブラリ ブラウザーには、標準的な Sumulink ライブラリおよびザイリンクスの Model Composer ライブラリが表示されます。ヒント: ライブラリ ブラウザーは、コマンド プロンプトで slLibraryBrowser コマンドを入力しても開くことができます。Xilinx Model Composer ブロックは、機能別に分類されています。次の図は、ライブラリ ブラウザーの [Xilinx Model Composer] の [Computer Vision] ブロック ライブラリを示しています。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 11UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=11

  • 図 2: ライブラリ ブラウザー

    ライブラリ ブラウザー内でブロックをダブルクリックすると、[Block Parameter] ダイアログ ボックスが開き、選択したブロックで定義されるさまざまなパラメーターがデフォルト値で表示されます。ブロックはライブラリに含まれているので、パラメーターは表示しかできません。パラメーターを編集するには、ブロックをデザイン キャンバスに追加する必要があります。ブロックの詳細は、ライブラリ ブラウザーでブロックを右クリックして、[Help] をクリックすると確認できます。または、ライブラリ ブラウザーでブロックをダブルクリックし、ダイアログ ボックスで [Help] をクリックしても確認できます。ヘルプ ブラウザーが開き、ブロックの情報が表示されます。ブロックをキャンバスにドラッグ アンド ドロップすると、定義済みのデフォルトのパラメーター値でブロックが追加されます。ヒント: Simulink エディターのデザイン キャンバスをクリックしてブロック名を入力しても、ブロックを現在のモデルにすばやく追加できます。ライブラリから入力した名前と一致するものが表示されるので、該当するブロックを選択して追加します。Simulink モデルには、信号とパラメーターの両方が含まれます。信号はブロックに接続されるラインで表記されます。パラメーターは、ブロックの主な特徴および動作を定義する係数です。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 12UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=12

  • ブロックの接続ブロックの出力ポートは、ほかのブロックの入力ポートに信号ラインで接続できます。信号ラインは、モデルを通過するデータフローを定義します。信号には次のような複数の属性を含めることができます。• データ型: 信号で運ばれるデータ型を定義します。整数、浮動小数点型、固定小数点型などのさまざまなデータ型を使用できます。詳細は、データ型の使用を参照してください。

    • 信号の次元: 値をスカラー、ベクター、または行列として定義します。詳細は、信号の次元および行列、ベクトル、およびスカラーを参照してください。

    • 複雑性: 値を複素数または実数として定義します。詳細は、信号値を参照してください。次の図は、複素数がモデルを伝搬するところを示しています。

    図 3: 複素数信号値

    信号ラインを追加するには、カーソルを Simulink ブロックの入力または出力ポートの上に置きます。カーソルがプラス (+) マークに変わります。クリックして、ポートからドラッグします。マウス ボタンを押したままにしてドラッグして動かすと、接続ラインが点線で表示されます。点線は、完全に接続されていない信号を示します。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 13UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://jp.mathworks.com/help/simulink/ug/signal-dimensions.htmlhttps://jp.mathworks.com/help/comm/ug/matrices-vectors-and-scalars.htmlhttps://jp.mathworks.com/help/simulink/ug/signal-values.htmlhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=13

  • カーソルを接続する 2 つ目のポートまで移動したら、マウス ボタンを放します。入力ポートから開始する場合は出力ポートで止めるか別の信号ラインに接続し、出力から開始する場合は入力で止めます。Simulink でポートが信号ラインで接続されます。矢印は、信号フローの方向を示します。マウスを右クリックしてドラッグすると、既存のラインに接続できます。これにより、分岐ラインが作成され、既存の信号ラインの指定した位置に接続されます。分岐ラインは、接続された信号によって、入力または出力に接続できます。ヒント: ブロックは、Ctrl キーを押したまま順に選択しても接続できます。1 つ目のクロックの出力が 2 つ目のブロックの入力に接続されます。Ctrl キーを押したまま別のブロックを接続すると、チェーン接続されます。Simulink では、シミュレーションの [Run] をクリックすると、モデルがアップデートされます。モデルは、[Simulation] → [Update Diagram] メニュー コマンドを使用するか、デザイン プロセスの任意の段階で Ctrl+D を押してもアップデートできます。ソース ブロックからのデータ型、信号次元、サンプル時間がモデルに伝搬されるのを確認できます。ヒント: [Display] → [Signals and Ports] メニュー コマンドをクリックすると、[Signal Dimensions]および [Port Data Types] などのさまざまなデータがモデルで表示されます。Xilinx Model Composer ブロック ライブラリの Source ライブラリの Constant ブロックを除き、Model Composer ブロックにはサンプル時間は指定できません。Model Composer では、モデルの入力に接続されたソース ブロックからサンプル時間が推論されるので、複数のサンプル時間はサポートされません。ダイアグラムをアップデートすると、モデルの開発中に発生する可能性のある問題を発見して解決できます。頻繁にアップデートすることで、デザインへの最近のアップデートに範囲を絞れるので、問題の原因を見つけやすくなります。また、[Update Diagram] はシミュレーションを実行するよりも高速です。

    データ型の使用Model Composer では、次のデータ型がサポートされます。表 2: Model Composer データ型

    名前 説明double 倍精度浮動小数点single 単精度浮動小数点half* 半精度浮動小数点int8 符号付き 8 ビット整数uint8 符号なし 8 ビット整数

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 14UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=14

  • 表 2: Model Composer データ型 (続き)名前 説明

    int16 符号付き 16 ビット整数uint16 符号なし 16 ビット整数int32 符号付き 32 ビット整数uint32 符号なし 32 ビット整数fixed* 符号付きおよび符号なしの固定小数点boolean Simulink では 0 以外の実数値が TRUE (1) と表示されます。

    重要: * の付いたデータ型は Model Composer 特有のもので、Simulink ではサポートされません。Simulink では固定小数点データ型がサポートされていますが、Fixed-Point Designer™ をインストールしてライセンスを取得しておく必要があります。また、Xilinx Model Composer でサポートされる固定小数点データ型は、表記は同様ですが、Simulink でサポートされる固定小数点データ型とは互換性がありません。前述の表には、Model Composer ではサポートされても、Simulink ではデフォルトでサポートされないデータ型も含まれています。fixed または half データ型を使用する Model Composerブロック ライブラリからのブロックを Simulink ネイティブのブロックに接続すると、Simulinkでシミュレーションを実行したり、[Update Diagram] コマンドを使用したり、Ctrl+D を入力したときに、次のようなエラー メッセージが表示されます。The input signal(s) of 'untitled/Scope' are not being successfully converted from type 'x_sfix16_En2' to 'double'

    このエラーは、Simulink では Xilinx Model Composer の固定小数点型を倍精度の浮動小数点型に変換できないことを示しています。データ型が一致しない場合は、Data Type Conversion ブロックを使用しモデルの動作を指定し、データ型の変換を指定することをお勧めします。Data Type Conversion (DTC) ブロックは、Xilinx Model Composer ライブラリの Signal Attributes ライブラリに含まれています。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 15UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=15

  • 図 4: Data Type Conversion ブロック

    DTC ブロックでは、出力データ型 ([Output data type]) を指定できますが、入力データ型は入力ポートに接続される信号によって自動的に決まります。DTC ブロックを使用すると、たとえば単精度の浮動小数点を倍精度に変換したり、倍精度を単精度に変換したりできます。重要: 精度の高いデータ型を精度の低いデータ型に変換する場合は、精度の損失により、丸めまたは切り捨てが発生し、データが損失する可能性があるので注意が必要です。固定小数点データ型の使用前述のように、Simulink では固定小数点データ型はサポートされていますが、Fixed-PointDesigner™ 製品が必要となります。また、Xilinx Model Composer でサポートされる fixed データ型は Simulink のものと互換性がありません。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 16UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=16

  • 図 5: 固定小数点データ型

    Xilinx Model Composer 固定小数点データ型を表示するのに使用されるフォーマットは、x_[u/s]fix[wl]_E[n][fl] です。説明:• x_: ザイリンクスの固定データ型を示す接頭辞。• [u/s]: 符号なしか符号ありを表記。• fix: 固定小数点データ型であることを表記。• [wl]: データのワード長を指定。• E: 固定小数点データ型の分数部の接頭辞。分数長が 0 の場合は表示されません。• n: 2 進数小数点がワードの最下位ビットの左にある場合は n を表示、最下位ビットの右にある場合は n の表示なし。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 17UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=17

  • • [fl]: 固定小数点データ型の分数部の長さを指定して、ワードの最下位ビットに対する 2 進数小数点の位置を示す。

    たとえば、'x_sfix16_En6' の場合、符号付き 16 ビットの固定小数点で、2 進数小数点の右側に 6ビットが割り当てられています。また、固定小数点データ型では、データ オーバーフローが発生した場合にどうするか、丸めまたは切り捨てが必要かどうかも指定できます。詳細は、Data Type Conversionを参照してください。Xilinx Model Composer の固定小数点データ型は DTC ブロックを使用して Simulink の固定小数点データ型に変換する必要がありますが、Xilinx Model Composer の固定小数点データ型とSimulink の固定小数点データ型を直接変換することはできないので、次の方法を使用して変換してください。1. ライブラリ ブラウザーの Xilinx Model Composer ライブラリから DTC ブロックを使用して

    Xilinx Model Composer の固定小数点データ型を double に変換します。2. ライブラリ ブラウザーの Simulink の Signal Attributes ライブラリから Simulink Data Type

    Conversion ブロックを使用して double データ型を Simulink フォーマットの固定小数点データ型に変換します。

    3. 2 つの固定小数点データ型間の符号の有無、ワード長、分数長を同じにします。ヒント: Xilinx Model Composer の固定小数点データ型と Simulink の固定小数点データ型間の変換は、必要な場合以外は実行することはお勧めしません。ほとんどのアプリケーションで、最初の手順の Model Composer の固定小数点データ型を double に変換するだけで十分なはずです。固定小数点データ型の操作には時間がかかりますが、FPGA にインプリメントするアプリケーションの場合は、固定小数点データ型を使用する価値があります。これは通常、浮動小数点で設計した方がデザインの消費電力が大きくなるからです。FPGA には浮動小数点の DSP ブロックが搭載されており、DSP ブロックとその他のデバイス リソースを使用して浮動小数点ソリューションをインプリメントする必要があるので、消費電力が大きくなります。浮動小数点のインプリ

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 18UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=18

  • メンテーションには、同等の固定小数点のソリューションよりも多くの FPGA リソースが必要になります。リソース使用量が多くなると、消費電力も大きくなるので、デザインのインプリメンテーションの全体的なコストも高くなります。詳細は、ホワイト ペーパー 『浮動小数点から固定小数点への変換による消費電力およびコストの削減』 (WP491: 英語版、日本語版) を参照してください。half データ型の使用Xilinx Model Composer では、半精度の half 浮動小数点データ型 (32 ビットではなく 16 ビット) もサポートされています。このデータ型を使用すると、FPGA にインプリメントする際にターゲット デバイスのリソース使用量が少なくなります。Model Composer で設計する場合は、半精度データ型も考慮してみてください。ただし、Simulink では half データ型はサポートされていないので、シミュレーションでエラーが発生する可能性があります。この場合、ModelComposer サブモジュールに含まれず、生成される出力に含まれないデザイン部分に、ModelComposer の DTC ブロックを使用して、half データ型を Simulink でサポートされる singleデータ型に変換します。データ型式の使用Model Composer では、データ型を式として指定できます。現在のところ、次の ModelComposer ライブラリ ブロックでデータ型式がサポートされています。• Constant

    • Data Type Conversion

    • Gain

    • Look-Up Table

    • Reinterpret

    データ型式を指定するには、それをサポートするブロック タイプの 1 つを開いて、データ型と値を編集します。次の図では、Constant ブロックにデータ型式を定義しています。[Output datatype] に [data type expression] を選択し、データ型の値を指定する文字列 (この例では 'uint32')を指定します。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 19UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.com/cgi-bin/docs/ndoc?t=white_papers;d=wp491-floating-to-fixed-point.pdfhttps://japan.xilinx.com/cgi-bin/docs/ndoc?t=white_papers;d=j_wp491-floating-to-fixed-point.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=19

  • 図 6: データ型式

    データ型の値は、Model Composer データ型に示すサポートされるデータ型の文字列表記で指定します。ただし固定小数点データ型は例外で、fixed 文字列で指定せず、固定小数点データ型の使用で説明する表示フォーマット (例: 'x_sfix16_En8') に従って定義します。データ型を式として定義する利点は、モデルからの変数を使用してデータ型の値をプログラムで決定できることです。たとえば、次のように MATLAB コマンド ラインから変数を定義します。>> InputDataType = 'x_ufix8_En7';

    この変数は、データ型式を定義する際に使用できます。図 7: 変数データ型

    変数は、MATLAB コマンド ラインから定義するか、[Tools] → [Model Explorer] メニュー コマンドを使用してモデル内で定義するか、Ctrl+H を押して指定できます。Model Explorer からは、モデルまたはブロックで使用する変数を作成、編集、管理できます。ヒント: [View] → [Property Inspector] をオンにすると、現在選択しているオブジェクトの変数が表示されます。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 20UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=20

  • 最上位サブシステム モジュールの作成Model Composer モデルから出力を生成するには、Model Composer モデルの最上位に ModelComposer Hub ブロック (Model Composer Hub ブロックの追加を参照) とアプリケーション デザインを含むサブシステムが含まれている必要があります。デザインの最上位にインスタンシエートされているサブシステムから出力を生成するには、Xilinx Model Composer ブロックと特定の Simulink ブロックのみがサブシステムに必要です。Xilinx Model Composer ブロックでは、関数を IP パッケージ用にコンパイルするか、C++ コード用にコンパイルするかが定義されます。最上位デザインには、シミュレーションなどの別の目的用にほかのブロックおよびサブシステムモジュールを含めることもできますが、基本的なアプリケーションは指定したサブシステム内に完全に含まれるようにしておく必要があります。ヒント: Model Composer サブシステムでサポートされる特定の Simulink ブロックは XilinxModel Composer ブロック ライブラリにも表示されます。リストの内容は、サポートされるSimulink ブロックを参照してください。モデル内からサブシステムを作成するには、1 つまたは複数のブロックをモデルのキャンバスに追加し、そのブロックをサブシステムに変更します。1. モデルへのブロックの追加に示すように、Simulink Editor でブロックをモデル キャンバスにドラッグ アンド ドロップします。

    2. 1 つまたは複数のブロックを選択して右クリックし、[Create Subsystem from Selection] をクリックします。

    3. サブシステムに名前を付けます。名前は生成される出力アプリケーションまたは IP と同じ名前にします。

    4. サブシステムをダブルクリックして Simulink Editor で開きます。Simulink ヘルプのエクスプローラー バーおよびモデル ブラウザーを使用すると、モデルを探しやすくなります。

    • エクスプローラー バー ( ) を使用すると、Simulink Editor 内のビュー間で階層を上下や前後に移動できます。

    • モデル ブラウザーの [Model Hierarchy] ビューからは、別のレベルを選択して開いて、階層内をすばやく移動できます。

    2: Model Composer デザインの作成

    Model Composer ユーザー ガイド 21UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=21

  • 第 3 章

    C/C++ コードのカスタム ブロックとしてのインポート概要Model Composer では、C または C++ コードをインポートし、新しいブロックを作成できます。このブロックは、ライブラリに追加してほかの Model Composer ブロックと共にモデル内で使用できます。この機能を使用すると、カスタム ブロック ライブラリを構築して、それを ModelComposer で使用できるようになります。

    xmcCreateLibrary コマンドの使用Xilinx Model Composer には MATLAB コマンド ラインから使用可能な xmcCreateLibrary コマンドが含まれており、ソースおよびヘッダー ファイルで定義された関数を指定して、自動的に Model Composer ブロックが作成されるようにできます。xmcCreateLibrary コマンドでは、次の構文を使用する必要があります。xmcCreateLibrary('libName',{'funcNames'},'hdrFile',{'srcFiles'},{'srchPaths'},'options')

    説明:• libName: 新しいブロックを追加する Model Composer ライブラリの名前を指定します。新しく作成するライブラリの名前または既存のライブラリ名を指定できます。

    • funcNames: ソースまたはヘッダー ファイルで定義された Model Composer ブロックとしてインポートする 1 つまたは複数の関数名のリスト (セル配列) を指定します。中を {} のように空にすると、指定したヘッダー ファイル (hdrFile) で定義した関数すべてがインポートされます。

    • hdrFile: 関数宣言または定義を含むヘッダー ファイル (.h) を指定します。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 22UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=22

  • • srcFiles: 関数定義を検索する 1 つまたは複数のソース ファイルのリストを指定します。ヘッダーおよびソース ファイルは、シミュレーション用にメイン ヘッダー ファイル(headerFile) と一緒に共有ライブラリにコンパイルされて、Model Composer Hub ブロックの追加に示すように、Model Composer Hub ブロックで出力を生成するのに指定した[Target directory] のディレクトリにコピーされます。

    • srchPaths: ヘッダーおよびソース ファイルに対し、1 つまたは複数の検索パスのリストを指定します。中を {} のように空にすると、検索パスがないことを示し、MATLAB の現在のフォルダーが検索されます。HLS ヘッダー ファイルを含めるには '$XILINX_VIVADO_HLS/include' を使用します。

    ヒント: xmcCreateLibrary には MATLAB コマンド ラインからアクセスでき、helpxcmCreateLibrary を使用すると、前述の情報が表示されます。また、xmcCreateLibrary コマンドの options には、次の引数を使用する必要があります。• 'unlock': 既存のライブラリがロックされている場合は、ロックを解除します。

    xmcCreateLibrary コマンドでは既存のライブラリにブロックを追加することはできますが、そのためにはまずロックを解除する必要があります。

    • 'override': 指定したライブラリ内に存在する同じ名前のブロックが上書きされます。• 'supports_streaming': インポートする関数の配列パラメーターでストリーミング データがサポートされることを示し、関数のスカラー以外の引数へのランダム アクセスはできなくなります。これは、Model Composer でデザインがストリーミング用に最適化されることを示します。関数の引数に対するランダム アクセスと順次アクセスの例は、 付録 B: ストリーミングのサポートを参照してください。

    重要: supports_streaming オプションは、インポートされるすべての関数に適用されます。ストリーミングとストリーミングでない関数がどちらも含まれる場合は、xmcCreateLibraryに 2 つの呼び出しを使用します。たとえば、次の simple.h ヘッダー ファイルでは 2 つの倍精度浮動小数点の入力とポインター出力を含む simple_add 関数が定義されています。この関数では、2 つの入力が加算され、その合計が出力として返されます。例: simple_add 関数void simple_add(const double in1, const double in2, double *out) { *out = in1 + in2;}

    Model Composer ライブラリに simple_add 関数をブロックとしてインポートするには、MATLAB コマンド プロンプトに次のコマンドを入力します。xmcCreateLibrary('SimpleLib',{'simple_add'},'simple.h',{},{})

    説明:• SimpleLib: ブロックを追加する Model Composer ライブラリの名前です。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 23UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=23

  • • simple_add: インポートする関数です。• simple.h: 検索するヘッダー ファイルです。• C ソース ファイルや検索パスは指定されていません。この場合、関数定義が指定したヘッダー ファイルに含まれている必要があり、指定したファイルは MATLAB の現在のフォルダーのみで検索されます。

    ヒント: インポートするブロックと同じ関数名のブロックが指定したライブラリに既に存在する場合は、Model Composer で警告メッセージが表示されます。xmcCreateLibrary が終了したら、simple_add を含む SimpleLib ライブラリ モデルが次のように開きます。

    図 8: simple_add ブロック

    シミュレーションでは、ライブラリ ブロックの C/C++ コードがコンパイルされ、ライブラリ ファイルが作成されて読み込まれます。ライブラリ ファイルは、その後の run のシミュレーションで初期化にかかる時間を短縮するためにキャッシュされます。ライブラリ ブロックに含まれるソース コードは、ブロックをインポートし直したり、ライブラリを作成し直さなくても変更できますが、キャッシュされたライブラリ ファイルは C/C++ ソース コードを変更するとアップデートされます。ただし、関数シグネチャや関数に対するパラメーターを変更した場合は、xmcCreateLibraryを再実行してブロックを作成し直す必要があります。この場合は、override オプションを使用して、ライブラリ内の既存ブロックの定義を上書きする必要があります。重要: インポートする関数へのインターフェイスを変更した場合は、xmcCreateLibrary コマンドを実行し直す必要があります。ただし、関数の内容は xmcCreateLibrary を実行し直さなくても変更できます。ブロック シンボルが作成されたら、そのシンボルをダブルクリックすると、インポートしたブロックのパラメーターを確認できます。パラメーターを表示すると、関数ポートが正しく定義されたかどうかを確認できます。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 24UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=24

  • 図 9: simple_add ブロック

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 25UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=25

  • Model Composer への C/C++ のインポートModel Composer では C または C++ 関数をインポートして、ブロックのライブラリを作成できますが、特別な要件に従っていないと、コードが正しく認識および処理されません。関数は、ヘッダー ファイル (.h)、C または C++ ソース ファイル (.c、.cpp) のいずれかで定義できますが、ヘッダー ファイルには関数宣言を含める必要があります。スカラー、ベクター、または行列を含む関数は、関数パラメーターとしてインポートできます。固定小数点も含め、すべてのデータ型がサポートされます。ベクターの場合は、同じサイズの信号をブロックに接続する必要があります。たとえば、関数パラメーターが a[10] の場合、Model Composer で接続される信号は、1x10 または 10x1 サイズの行行列や列行列ではなく、サイズ 10 のベクターにする必要があります。ブロック関数への入力が行行列の場合、関数引数のフォーマットは a[1][10] に、列行列の場合は a[10][1] にする必要があります。関数パラメーターのポートの方向は、xmcCreateLibrary コマンドで自動的に決定されるか、関数定義で指定します。• 入力および出力ポートの自動決定:

    ○ 関数の return 値は、戻り値が void の場合を除き、常に出力として定義されます。○ const 修飾子で宣言される仮関数パラメーターは、入力として定義されます。○ 参照を使用して宣言されるパラメーター、ポインター型、または const 修飾子のない配列型は出力として宣言されます。

    ○ その他のパラメーター (値で読み込まれるスカラーなど) は、デフォルトで入力として定義されます。

    • 入力および出力ポートの手動定義:○ ソース コードの関数宣言の直前にプラグマを追加すると、入力および出力として定義する関数パラメーターを指定できます。

    ○ pragma XMC INPORT [, ...]

    ○ pragma XMC OUTPORT [, ...]

    次の例の場合、const 修飾子があるので、in は自動的に入力として定義され、out は出力として定義されます。インポートされたブロックには、関数に整数の return 値があるので、2 つ目の出力も含まれます。int func(const int in, int &out);

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 26UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=26

  • 次の例の場合、in は自動的に入力として定義され、out は出力になりますが、return 値はありません。void func(const in[512], int out[512]);

    次の例では、ソース コードの関数宣言の直前にプラグマを追加することで、ポートが手動で指定されています。関数を Model Composer にインポートする必要のある元の C++ コードに加えた変更はこれだけです。この例の場合、どのパラメーターをブロックの入力にするか、どのパラメーターをブロックの出力にするかをプラグマで指定しています。#pragma XMC INPORT din#pragma XMC OUTPORT doutvoid fir_sym (ap_fixed din[100], ap_fixed dout[100]);

    ヒント: ap_fixed では、Vivado HLS と互換性のある固定小数点を指定しています。プラグマを手動で追加して関数の入力および出力パラメーターを定義する方法は、関数に階層があり、const 修飾子を追加するのにソース コードを大幅に変更する必要のある場合などに便利です。また、入力および出力をコード内で明示的に指定できるので、インポート ブロックとの関連をより明確にできます。Model Composer にインポートする C または C++ コードを記述する際は、次の点にも注意する必要があります。• ソース コードは 32 ビットおよび 64 ビット アーキテクチャ間で移植できるように開発する必要があります。

    • ソース コードには、リソースおよびパフォーマンス最適化に Vivado HLS のプラグマを使用できます。これらのプラグマは Model Composer でも使用されますが、変更されたり追加されたりすることはありません。

    • コードにスタティック変数がある場合、その関数をインポートするブロックのインスタンスすべてに格納されます。スタティック変数をすべてのインスタンスで共有しない場合は、この変数を含む関数をコピーして名前を変更し、xmcCreateLibrary コマンドを使用して新しいライブラリ ブロックをインポートします。

    テンプレート ブロックの定義固定サイズの入力のみを使用できるブロックを作成するのが一般的ですが、異なるサイズの入力を使用したり、固定小数点長および小数部の長さが異なる信号を使用するブロックを作成することが必要な場合もあります。これには、テンプレートを使用して可変信号サイズを使用可能なブロックを作成できます。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 27UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=27

  • テンプレート ブロックは、次のようなテンプレート構文を使用して作成します。#include template void simple_matrix_add(const int16_t in1[ROWS][COLS], const int16_t in2[ROWS][COLS], int16_t out[ROWS][COLS]) { for (int i = 0; i

  • 図 10: columnize ファンクション

    そのほかにも、+、-、*、/、%、 などの単純な演算が、テンプレート パラメーターおよび整数定数の両方を使用してサポートされています。次に例を示します。templatevoid func(const int in[M][N], int out[M*2][M*N]);

    templatevoid func(array[2 * (ROWS + 1) + COLS + 3]);

    また、次に示すようなテンプレート構文を使用し、可変ワード長および整数長の固定小数点データ型を使用する関数テンプレートを定義することもできます。#include #include #pragma XMC OUTPORT outtemplate void fixed_add(const ap_fixed in1, const ap_fixed in2, ap_fixed &out) { out = in1+in2;}

    上記の例では、Vivado HLS からの固定小数点表記が使用され、ワード長および整数長が指定されています。Model Composer では、固定小数点データ型の使用に示すように、ワード長と小数部の長さを指定します。この場合、Model Composer の固定小数点データ型をインポートされたfixed_add ブロックに接続する際に注意が必要です。たとえば、上記の関数で WordLen が16、IntLen が 11 の場合、Model Composer の固定小数点データ型ではワード長が 16、小数部の長さが 5 になります。Vivado HLS での固定小数点の表記については、『Vivado Design Suite ユーザー ガイド: 高位合成』 (UG902) を参照してください。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 29UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.com/cgi-bin/docs/rdoc?v=2017.4;d=ug902-vivado-high-level-synthesis.pdfhttps://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=29

  • ヒント: 上記の例に示すように、固定小数点のテンプレート パラメーターでは単純な算術演算もサポートされています。fixed_add 関数をインポートして Model Composer でブロックを作成するには、次のコマンドを使用します。xmcCreateLibrary('SimpleLib',{'fixed_add'},fixed_example.h',{},...{'$XILINX_VIVADO_HLS/include'})

    ライブラリ ブラウザーへのユーザー ライブラリの追加ライブラリにインポートしたブロックを使用するには、ライブラリの Simulink モデルを開いてブロックを新しい Model Composer モデルにコピーするだけですが、ライブラリをライブラリブラウザーにリストされるようにし、ライブラリからブロックを新しいモデルにドラッグ アンド ドロップできるようにするには、xmcCreateLibrary コマンドの実行後に、次のプロセスを使用してライブラリを準備する必要があります。1. ライブラリ ブラウザー パラメーターをイネーブルにします。2. ライブラリを保存します。3. ライブラリの slblocks.m スクリプトを作成します。4. MATLAB にパスを追加するか、ライブラリを MATLAB パスに追加します。5. ライブラリ ブラウザーを更新します。ヒント: この方法でライブラリを設定するのは、新しく作成したライブラリに対してのみで、既に設定済みの既存ライブラリには必要ありません。ライブラリ ブラウザーで使用可能なライブラリをイネーブルにするには、EnableLBRepository パラメーターをオンにします。ライブラリを開いた状態でxmcCreateLibrary を使用してブロックを新しいライブラリにインポートしたら、ライブラリを保存する前に、MATLAB コマンド ラインから次のコマンドを使用する必要があります。set_param(gcs,'EnableLBRepository','on');

    このパラメーターはライブラリがライブラリ ブラウザーに属することを示しますが、これは単に最初の手順にすぎません。メイン メニューから [File] → [Save] コマンドを使用するか、ツールバーの ボタンをクリックしてライブラリを保存します。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 30UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=30

  • ライブラリ ブラウザーのライブラリには、ライブラリ モデルと同じディレクトリに、ライブラリと関連するメタデータを定義する slblocks.m というスクリプトも必要です。このスクリプトは、別のライブラリから既存のスクリプトをコピーするか、MATLAB インストール ディレクトリからコピーするか、次のテキストを編集して slblocks.m として保存すると作成できます。function blkStruct = slblocks % This function adds the library to the Library Browser % and caches it in the browser repository

    % Specify the name of the library Browser.Library = 'newlib'; % Specify a name to display in the library Browser Browser.Name = 'New Library';

    blkStruct.Browser = Browser;

    Browser.Library には、ライブラリ名から .slx ファイル拡張子を削除した名前を指定し、Browser.Name にはライブラリ ブラウザーに表示される名前を指定します。注記: ライブラリはそれぞれ別のディレクトリに保存され、.slx ファイルとそのライブラリの slblocks.m スクリプトが含まれます。ライブラリと slblocks.m スクリプトを作成したら、MATLAB で検出されるようにライブラリディレクトリを MATLAB パスに追加するか、MATLAB パスに既に含まれるフォルダーにライブラリをコピーします。MATLAB コマンド プロンプトに「path」と入力すると、MATLAB で現在使用されているパスが表示されます。また、次のコマンドを使用して MATLAB パスにライブラリ ディレクトリを追加することもできます。addpath ('library_folder')savepath

    説明:• 'library_folder': 新しいライブラリへのパスを定義する文字列です。• savepath: パスを Model Composer で今後使用できるように保存します。ヒント: MATLAB パスからフォルダーを削除するには、次のコマンド シーケンスを使用します。rmpath ('library_folder')savepath

    最後に、ライブラリ ブラウザーのウィンドウの左側を右クリックし、[Refresh Library Browser]をクリックして新しいライブラリを表示させます。これでライブラリがツールに読み込まれます。インポートされたブロックが表示され、モデルにドラッグ アンド ドロップできるようになります。

    3: C/C++ コードのカスタム ブロックとしてのインポート

    Model Composer ユーザー ガイド 31UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=31

  • 第 4 章

    出力の生成概要重要: Model Composer モデルから出力を生成するには、デザインの最上位にインスタンシエートされたサブシステムに Xilinx Model Composer ブロックとサポートされている Simulink ブロックセットのみを使用可能です。Model Composer の出力生成に使用可能な Simulink ブロックは、Xilinx Model Composer ブロック ライブラリに含まれます。すべてのリストは、サポートされる Simulink ブロックを参照してください。Model Composer モデルではデザインが自動的に下位表記にコンパイルされますが、コンパイルを設定して出力を生成するには、Model Composer モデルに Model Composer Hub ブロックを追加する必要があります。Model Composer では次の 3 つの出力タイプを作成でき、これは ModelComposer Hub ブロックの [Export type] 設定で定義できます。• IP カタログ• System Generator

    • C++ コード

    Model Composer Hub ブロックの追加Model Composer Hub ブロックは Xilinx Model Composer ライブラリの [Tools] ブロックセットに含まれ、ライブラリ ブラウザーから Simulink Editor のキャンバスにドラッグ アンド ドロップするとモデルに追加できます。Model Composer Hub ブロックは、Simulink 環境では仮想ブロックであり、物理的な目的はなく、コンパイルおよび出力用の指示子を指定するために使用します。Model Composer Hub ブロックのブロック パラメーター ダイアログ ボックスは次のとおりです。

    4: 出力の生成

    Model Composer ユーザー ガイド 32UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=32

  • 図 11: Model Composer Hub ブロック

    Model Composer Hub ブロックのダイアログ ボックスには、次の 4 つのタブが含まれています。• [Compilation] タブ

    ○ [Target directory]: コンパイルされた結果を書き込む出力フォルダーを指定します。ModelComposer で生成される出力には、多数のフォルダーおよびファイルが含まれることがあり、これらはすべて指定したディレクトリに書き込まれます。フォルダーは絶対パス (例:C:/Data/Code) か、現在の Model Composer モデルに相対的なパス (例: ./code) で指定できます。

    重要: Windows オペレーティング システムの場合は、[Target directory] のディレクトリにスペースを含めることはできません。

    ○ [Subsystem name]: 出力を生成するのに必要なモデルの最上位に含まれる ModelComposer サブシステムの名前を指定します。詳細は、最上位サブシステム モジュールの作成を参照してください。サブシステムには、インターフェイス仕様の定義で説明するように、Interface Spec ブロックも必要です。ここで指定した名前が、このサブシステム名が生成される出力ファイルの名前になります (例: subsystem_name.cpp、subsystem_name.h)。

    ヒント: Interface Spec ブロックは、出力生成に必ず必要なわけではありませんが、デザインのインターフェイス仕様を完全に制御するためには推奨されます。

    4: 出力の生成

    Model Composer ユーザー ガイド 33UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=33

  • ○ [Export type]: Model Composer から出力可能なファイル タイプの 1 つを選択します。選択肢には、Vivado Design Suite IP カタログに追加できる IP パッケージ、RTL ブロック デザインで使用できる System Generator ブロック、Vivado HLS で使用できる C++ コードがあります。

    ○ [Create and execute testbench]: シミュレーション テストベンチを作成して起動します。シミュレーションでは、Simulink からの問題のなかった結果と新しくコンパイルしたデザインからの結果が比較されます。詳細は、5: デザインのシミュレーションおよび検証を参照してください。- [Testbench stack size]: [Create and execute testbench] をオンにしている場合に、C シミュレーション (CSIM) で使用されるテストベンチ スタック フレームのサイズ (MB) を指定します。

    ヒント: スタックに大型信号配列が割り当てられている場合やサブシステムの入れ子構造が深すぎる場合など、テストベンチの実行用に割り当てられたデフォルトの 10 MB ではテストの実行には不十分な場合があります。この場合、セグメント エラーや関連するエラー メッセージが表示され、テストがエラーになります。このような場合は、スタック フレームのサイズを増加して、テストを再実行してください。

    ○ [Generate]: Model Composer モデルからの出力をコンパイルして書き出します。• [Device] タブ

    ○ [Project device]: Model Composer モデルの現在のターゲット パーツまたはボード プラットフォームを定義します。

    ○ 参照ボタン ([…]): [Select Device] ダイアログ ボックスを表示します。詳細は、[SelectDevice] ダイアログ ボックスを参照してください。

    • [Clocking] タブ○ [FPGA Clock Frequency]: ザイリンクス デバイスのクロック周波数を MHz で指定します。この周波数は、ダウンストリームのツール フローに渡されます。

    • [Feedback] タブ○ [Connect]: Xilinx Model Composer ツールに関するフィードバックを送信したり、問題や困難な点を知らせたり、ツールに対する改善点を提案したり、Model Composer ライブラリに新しいブロックを推奨したりできます。

    ターゲット ディレクトリ、サブシステム モジュール、エクスポート タイプを指定したら、[Generate] ボタンをクリックして指定した出力を作成します。Model Composer では、C++ コードだけでなく、コードを検証するのに必要なファイルおよび RTL への高位コードを合成するのに必要な指示子も生成されます。ヒント: Model Composer Hub ブロックの設定を変更した場合は、[Apply] をクリックしてから[Generate] をクリックする必要があります。

    4: 出力の生成

    Model Composer ユーザー ガイド 34UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=34

  • インターフェイス仕様の定義Simulink 環境内では、デザインの入力と出力は Inport ブロックおよび Outport ブロックを使用して定義されます。ただし、ソフトウェア アルゴリズムからハードウェアの RTL インプリメンテーションに移動する際に、特定の入力/出力 (I/O) プロトコルを使用して、これらの入力および出力ポートをデザイン インターフェイスのポートにマップする必要があり、実際には通常遅延が発生します。デザインの開発の一部として、デザインがその他のデザインやシステム内の IPとどのように通信するかを指定します。これには、デザインのインターフェイスを指定し、数個の標準 I/O プロトコルから選択します。Model Composer では、インターフェイス仕様 (Interface Spec) ブロックを使用して、この I/O プロトコルを定義する必要があります。インターフェイス合成は、デザイン内の最上位サブシステム モジュールでのみサポートされ、Model Composer で C++ コードが生成されます。次の図では、Edge Detection モジュールが最上位サブシステム モジュールで、Interface Spec ブロックをこのモジュール内にインスタンシエートする必要があります。ヒント: その他のサブシステム モジュールや入れ子のサブシステム モジュールにインスタンシエートされた Interface Spec ブロックは無視されます。

    図 12: 最上位サブシステム モジュール

    4: 出力の生成

    Model Composer ユーザー ガイド 35UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=35

  • Interface Spec ブロックでは、デザインにインスタンシエートするインターフェイスを制御できます。Interface Spec ブロックは出力のコード生成にのみ影響し、デザインの Simulink シミュレーションには影響しません。Interface Spec ブロックをサブシステム モジュールに追加しない場合、Model Composer でデフォルト インターフェイスが割り当てられますが、ターゲット プラットフォームまたはデバイスには適切でないことがあります。このため、Interface Spec ブロックを使用して、サブシステム モジュールの要件を定義することをお勧めします。制御信号を指定するデフォルトの関数レベルのプロトコルは Handshake で、関数の戻り値のプロトコルはAXI4-Lite です。デフォルトの I/O プロトコルは、スカラー ポートの場合は AXI4-Lite、スカラー以外のポートの場合は AXI4-Stream です。Interface Spec ブロックでは、インターフェイス合成で関数定義からどのように RTL ポートを作成するかを指定します。RTL インプリメンテーションのポートは、次によって決まります。• モジュールの制御信号を定義する関数レベルのプロトコル。• 関数入力および出力引数、および戻り値。• 関数によりアクセスされ、スコープ外部で定義されるグローバル変数。注記: グローバル変数がアクセスされても、すべての読み出しおよび書き込みがサブシステムのローカルである場合は、リソースがデザイン内に作成されるので、ポートを定義する必要はありません。

    図 13: Interface Spec ブロック

    Interface Spec ブロックには、次の 3 つのタブが含まれます。• [Function Protocol]: ブロック レベルのインターフェイス プロトコルで、IP にデータ処理を開始するタイミングを指示する信号ポートをサブシステムに追加します。IP では、新しいデータを受信可能か、演算を完了したか、アイドル状態なのかを示すためにも使用されます。

    • [Input Ports]: サブシステム内の入力ポートが検出され、これらのポートのインターフェイスプロトコルを指定できます。

    • [Output Ports]: サブシステム内の出力ポートが検出され、これらのポートのインターフェイスプロトコルを指定できます。

    4: 出力の生成

    Model Composer ユーザー ガイド 36UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=36

  • 重要: Interface Spec ブロックでは、現在のところ、サブシステム モジュールに入力ポート 8 つ、出力ポート 8 つまで含めることができます。Interface Spec ブロックが表示され、次の関数または I/O ポート プロトコルの機能またはパラメーターを設定できるようになります。表 3: [Function Protocol] タブ

    属性 説明Mode サブシステム モジュールに制御信号を追加するためのブロック レベルのプロトコルを指定します。サポートされるブロック レベルのプロトコルは、次のとおりです。

    • [AXI4-Lite]: 戻り値のポートを AXI4-Lite インターフェイスとしてインプリメントし、Handshake プロトコルで定義されたブロック レベルの制御ポートを追加します。これはデフォルトの関数プロトコルです。

    • [Handshake]: 入力処理の start、デザインの idle、done ステート、新しい入力データの ready など、ブロック レベルの制御ポートを定義します。

    • [No block-level I/O protocol]: サブシステムに制御ポートは追加されません。Bundle AXI4-Lite モードの場合にのみ有効になります。複数のポートを同じインターフェイスにまとめることを示します。 で指定します (スペースおよび特殊文字は使用不可)。Offset AXI4-Lite モードの場合にのみ有効になります。AXI4-Lite アドレス マップの関数プロトコルに関連するアドレス オフセットを指定します。オフセットは負以外の整数で指定します。デフォルト値は 0 です。

    表 4: [Input Ports]/[Output Ports] タブ属性 説明

    Name ポート名が表示されます。ここからは変更できません。

    4: 出力の生成

    Model Composer ユーザー ガイド 37UG1262 (v2017.4) 2017 年 12 月 20 日 japan.xilinx.com [placeholder text]

    https://japan.xilinx.comhttps://japan.xilinx.com/about/feedback.html?docType=User_Guides&docId=UG1262&Title=Model%20Composer%20%26%2312518%3B%26%2312540%3B%26%2312470%3B%26%2312540%3B%20%26%2312460%3B%26%2312452%3B%26%2312489%3B%20%28UG1262%29&releaseVersion=2017.4&docPage=37

  • 表 4: [Input Ports]/[Output Ports] タブ (続き)属性 説明

    Mode ポートレベル I/O プロトコルを指定します。サポートされるポート レベルのプロトコルは、次のとおりです。• [Default]: スカラー ポートの場合は AXI4-Lite インターフェイス、スカラー以外のポートの場合は AXI4-Stream インターフェイスが使用されます。

    • [AXI4-Stream]: 高速ストリーミング データ用にポートが AXI4-Stream インターフェイスとしてインプリメントされます。

    • [AXI4-Stream (video)]: ポートが AXI4-Stream インターフェイスとしてインプリメントされます。[Video Format] および [Video Component] 属性も指定できます。

    • [AXI4-Lite]: ポートが AXI4-Lite インターフェイスの一部としてインプリメントされます。同じ名前の [Bundle] 名の入力ポートまたは出力ポートが AXI4-Lite インターフェイスにまとめられます。

    • [FIFO]: ポートが標準 FIFO インターフェイスでインプリメントされ、アクティブLow FIFO の empty および full 制御信号が関連付けられたデータ入力および出力がまとめられます。ヒント: [FIFO] インターフェイスは、メモリ エレメントへのアクセスが常に順次で、ランダム アクセスが不要な場合に最も効率的です。連続していないアドレス位置から読み出す場合は、[Block RAM] インターフェイスを使用します。

    • [Constant]: 入力ポートに適用されるデータは関数演算中は安定したままで変化しませんが、最適化で削除可能な定数値ではありません。これを選択すると、内部最適化で不要なレジスタを削除できるようになります。

    • [Valid Port]: データ ポートと、データが読み出しまたは書き込みに対して有効になったことを示す valid ポートがインプリメントされます。

    • [No protocol]: プロトコルなし。入力データ信号にも出力データ信号にも、データの読み出しまたは書き込みをいつ実行するかを示す制御ポートは含まれません。

    • [Block RAM]: 配列引数が標準 RAM インターフェイスとしてインプリメントされます。Vivado IP インテグレーターで生成された IP を使用する場合、メモリ インターフェイスはシングル ポートとして表示されます。

    Bundle 色成分が複数の [AXI4-Stream (video)] インターフェイスを使用する場合に設定できます。この場合、色成分ごとに 1 つのポートがあり、ポートに同じバンドル名() を指定して、同じ [AXI4-Stream (video)] インターフェイスにまとめられるようにしま


Recommended