Vivado Design Suite ユーザー ガイド: エンベデッド プロセッサ ハードウェア デザイン (UG898)

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "Vivado Design Suite ユーザー ガイド: エンベデッド プロセッサ ハードウェア デザイン (UG898)"

Transcription

1 Vivado Design Suite ユーザーガイド エンベデッドプロセッサハードウェアデザイン UG898 (v2016.3) (v2016.4) 年 10 年月 11 5 日月 30 日 この資料は表記のバージョンの英語版を翻訳したもので 内容に相違が生じる場合には原文を優先します 資料によっては英語版の更新に対応していないものがあります 日本語版は参考用としてご使用の上 最新情報につきましては 必ず最新英語版をご参照ください

2 改訂履歴 次の表に 2016/11/30: この文書の改訂履歴を示し Vivado Design Suite ます リリース 前のバージョンから内容の変更なし 日付バージョン改訂内容 2016 年 10 月 5 日 第 3 章の I/O 設定 に Zynq UltraScale+ MPSoC デバイスのセキュアデジタル (SD) ホストコントローラーおよび PJTAG インターフェイスの説明を追加 第 3 章の クロック設定 をアップデート 第 4 章 エンベデッドデザインでの MicroBlaze プロセッサの使用 を若干変更 第 7 章の ザイリンクスパラメーター指定マクロ (XPM) メモリ を追加 2016 年 4 月 27 日 第 3 章 エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 を追加 第 4 章の MicroBlaze 設定ウィザード : アドバンスモード を追加 その他のマイナーな編集上の修正 エンベデッドプロセッサハードウェアデザイン 2

3 目次 改訂履歴 第 1 章 : 入門概要 ハードウェアおよびソフトウェアフローの概要 エンベデッドプロセッサデザインのフロー 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用概要 Vivado IDE での Zynq-7000 デバイスの設計 Zynq ブロックデザインと [Re-customize IP] ダイアログボックスの概要 プログラマブルロジック (PL) の使用 Vivado ピンプランナーでの PS I/O の表示 Vivado IDE で生成されたエンベデッドファイル ソフトウェア開発キット (SDK) の使用 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用概要 Vivado IDE での Zynq UltraScale+ デバイスの設計 Zynq UltraScale+ MPSoc の [Re-customize IP] ダイアログボックスの概要 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze プロセッサデザインの概要 MicroBlaze プロセッサを含む IP インテグレーターデザインの作成 MicroBlaze 設定ウィザード MicroBlaze プロセッサのクロストリガー機能 カスタムロジック エンベデッド IP カタログ 接続 第 5 章 : MIG コアを含むデザイン概要 メモリ IP の追加 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ概要 MIG コアを含まない MicroBlaze デザイン MIG コアを含む MicroBlaze デザイン PL ロジックを含まない Zynq デザイン PL ロジックを含む Zynq デザイン PL ロジックに MIG コアを含む Zynq デザイン エンベデッドプロセッサハードウェアデザイン 3

4 MIG と Clocking Wizard を含むデザイン 第 7 章 : UpdateMEM を使用した BIT ファイルの MMI および ELF データでのアップデート概要 UpdateMEM メモリ (MEM) ファイル ブロック RAM メモリマップ情報 (MMI) ファイル ザイリンクスパラメーター指定マクロ (XPM) メモリ 付録 A: その他のリソースおよび法的通知ザイリンクスリソース 参考資料 トレーニングリソース お読みください : 重要な法的通知 エンベデッドプロセッサハードウェアデザイン 4

5 第 1 章 入門 概要 この章では Vivado Design Suite フローを使用して Zynq All Programmable (AP) SoC デバイスまたは MicroBlaze プロセッサを使用したエンベデッドデザインをプログラムする方法の概要を説明します エンベデッドシステムは複雑です エンベデッドデザインのハードウェア部分とソフトウェア部分は それ自体がプロジェクトです 1 つのシステムとして機能するようにこれら 2 つのデザインコンポーネントを統合すると 追加の課題が出てきます FPGA デザインプロジェクトを追加すると さらに複雑になります デザインプロセスを単純にするため ザイリンクスでは複数のツールセットを提供しています 基本的なツール名 プロジェクトファイル名 これらのツールの略称を 知っておくと有益です Vivado 統合設計環境 (IDE) には プロセッサベースのデザインを統合するための IP インテグレーターツールが含まれています このツールをザイリンクスソフトウェア開発キット (SDK) と合わせて使用することで マイクロプロセッサベースのシステムとエンベデッドソフトウェアアプリケーションを設計およびデバッグするための統合環境が提供されています エンベデッドプロセッサおよび SDK ハードウェア / ソフトウェアクロストリガー およびデザインのデバッグを使用する例は Vivado Design Suite チュートリアル : エンベデッドプロセッサハードウェアデザイン (UG940) [ 参照 1] を参照してください このチュートリアルでは Vivado IP インテグレーターを使用してエンベデッドプロセッサデザインを構築し SDK および Vivado ロジック解析を使用してデザインをデバッグします ハードウェアおよびソフトウェアフローの概要 Vivado ツールでは プロセッサに基づいて プログラム用のフローが提供されています Vivado IDE では 接続を画像で示す IP インテグレーターを使用して デバイスを指定し ペリフェラルを選択し ハードウェアを設定できます Zynq-7000 AP SoC では Vivado IP インテグレーターを使用して ハードウェアプラットフォーム情報を XML 形式のアプリケーションとして ほかのデータファイルと共に取り込みます これらの情報がソフトウェアデザインツールで使用され ボードサポートパッケージ (BSP) ライブラリの作成と設定 コンパイラオプションの推論 プログラマブルロジック (PL) のプログラム JTAG 設定の定義など ハードウェアに関する情報を必要とする操作が自動化されます Zynq-7000 AP SoC ソリューションを使用すると 1 つの SoC でプログラマブルロジックと共に ARM Cortex A9 デュアルコアがエンベデッドブロックとして提供されているので エンベデッドデザインの複雑さが軽減されます エンベデッドプロセッサハードウェアデザイン 5

6 第 1 章 : 入門 ザイリンクスでは Zynq-7000 AP SoC および MicroBlaze プロセッサデバイス用のソフトウェアアプリケーションの開発およびデバッグのために 次のデザインツールを提供しています ソフトウェア IDE GUI ベースのコンパイラツールチェーン JTAG デバッガー これらのツールを使用すると OS を必要としないベアメタルアプリケーションと オープンソース Linux OS 用アプリケーションの両方を開発できます Vivado IP インテグレーターには コンフィギュレーション設定 レジスタメモリマップ プログラマブルロジック (PL) ファブリック内の関連ロジックなど プロセッシングシステム (PS) およびペリフェラルに関する情報が取り込まれます その後 PL 初期化用のビットストリームを生成できます ソフトウェアソリューションとしては Cortex-A9 プロセッサをサポートするサードパーティソースからも 次のようなツールが提供されています ソフトウェア IDE コンパイラツールチェーン デバッグおよびトレースツール エンベデッド OS およびソフトウェアライブラリ シミュレータ モデルおよび仮想プロトタイプツール サードパーティツールソリューションによって その統合レベルおよび Zynq-7000 デバイスの直接サポートは異なります SDK の詳細および Zynq デバイスのプログラムについては Zynq-7000 All Programmable SoC ソフトウェア開発者向けガイド (UG821) [ 参照 2] を参照してください SDK はスタンドアロン製品で からダウンロードできます 図 1-1 に エンベデッドハードウェアのツールフローを示します X-Ref Target - Figure 1-1 Hardware Specification File (XML) PS Configuration Configure PS Add IP Generate Bitstream (optional) Export to Software Tools Hardware Handoff PL Configuration (bitstream) BRAM Configuration (BMM) X12502 図 1-1: ハードウェアデザインツールからソフトウェアツールへのハンドオフ エンベデッドプロセッサハードウェアデザイン 6

7 第 1 章 : 入門 エンベデッドプロセッサデザインのフロー エンベデッドプロセッサデザインの全体的なフローは 次のようになります 1. 新しい Vivado Design Suite プロジェクトを作成します 2. IP インテグレーターツールでブロックデザインを作成し Zynq Processing System 7 IP コアまたは MicroBlaze プロセッサと その他のザイリンクス IP またはユーザーのカスタム IP をインスタンシエートします 3. 最上位ラッパーを作成して ブロックデザインを最上位 RTL デザインにインスタンシエートします 4. 最上位デザインを合成およびインプリメンテーションし ハードウェアを SDK にエクスポートします 5. ソフトウェアアプリケーションを作成し SDK で ELF (Executable Linkable File) ファイルをハードウェアデザインに関連付けます 6. UpdateMEM を使用して ELF およびブロック RAM のメモリマップ情報 (MMI) と ハードウェアデバイスビットストリームに統合します 7. ターゲットボードにプログラムします エンベデッドプロセッサハードウェアデザイン 7

8 第 2 章 エンベデッドデザインでの Zynq-7000 プロセッサの使用 概要 この章では Zynq All Programmable (AP) SoC デバイスを使用する場合の Vivado Design Suite フローについて説明します ここに示す例では ザイリンクス ZC702 Rev 1.0 評価ボードをターゲットとし Vivado Design Suite のバージョンは を使用しています 重要 : Vivado IP インテグレーターは Zynq デバイスおよび MicroBlaze プロセッサをターゲットとするデザインを含むエンベデッドプロセッサデザインを作成するための XPS (Xilinx Platform Studio) に代わるツールです XPS では MicroBlaze プロセッサをターゲットとするデザインのみがサポートされます IP インテグレーターも XPS も Vivado 統合設計環境 (IDE) から使用できます Vivado IDE での Zynq-7000 デバイスの設計 Zynq-7000 AP SoC デバイスの設計は Vivado IDE を使用した場合と ISE Design Suite およびエンベデッド開発キット (EDK) を使用した場合で異なります Vivado IDE では エンベデッド開発に IP インテグレーターを使用します IP インテグレーターは GUI ベースのインターフェイスで 複雑な IP サブシステムを統合できます 複雑なデザインに対応するため Vivado IDE の IP カタログからさまざまな IP が提供されています IP カタログにカスタム IP を追加することもできます 詳細は Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 5] を参照してください エンベデッドプロセッサハードウェアデザイン 8

9 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 Zynq-7000 プロセッサを含む IP インテグレーターデザインの作成 IP インテグレーターで [Create Block Design] ボックスにデザイン名を入力します をクリックし [Create Block Design] ダイアログ X-Ref Target - Figure 2-1 図 2-1: [Create Block Design] ダイアログボックス ブロックデザインは プロジェクトの一部として作成するか [Directory] で指定した別のディレクトリに作成できます [Specify source set] のプルダウンメニューからソースタイプを指定することもできます ブロックデザインキャンバス ( 図 2-2) が開きます X-Ref Target - Figure 2-2 図 2-2: ブロックデザインキャンバス エンベデッドプロセッサハードウェアデザイン 9

10 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 1. 空のブロックデザインキャンバスで [Add IP] ボタンをクリックして IP カタログから IP を追加します ( 図 2-3) または キャンバス上で右クリックして [Add IP] をクリックします X-Ref Target - Figure 2-3 図 2-3: ブロックデザインキャンバスへの IP の追加 2. [Add IP] をクリックすると検索ボックスが表示されるので 図 2-4 に示すように [ZYNQ7 Processing System] を検索して選択します X-Ref Target - Figure 2-4 図 2-4: IP カタログでの ZYNQ7 Processing System の検索 エンベデッドプロセッサハードウェアデザイン 10

11 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 ZYNQ7 Processing System IP を選択してダブルクリックすると Vivado IP インテグレーターでデザインに IP が追加され 図 2-5 に示すようにプロセッシングシステムのグラフィックが表示されます X-Ref Target - Figure 2-5 図 2-5: デフォルトの ZYNQ7 Processing System のグラフィック表示 Tcl コマンド : create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 3. ZYNQ7 Processing System のグラフィックをダブルクリックすると [Re-customize IP] ダイアログボックス ( 図 2-6) が表示されます X-Ref Target - Figure 2-6 図 2-6: ZYNQ7 Processing System の [Re-customize IP] ダイアログボックス エンベデッドプロセッサハードウェアデザイン 11

12 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 ブロックデザインの内容を確認します [Zynq Block Design] ページの緑色のブロックは設定可能です 緑色のブロックをクリックすると そのブロックのオプションを設定するページが開きます これらのページは 11 ページの図 2-6 の左側の Page Navigator から選択することもできます Zynq ブロックデザインと [Re-customize IP] ダイアログボックスの概要 Page Navigator から設定可能なオプションの詳細は Zynq-7000 All Programmable SoC テクニカルリファレンスマニュアル (UG585) [ 参照 6] を参照してください 次のセクションでは Page Navigator の選択オプションを簡単に説明します プロセッシングシステム (PS) とプログラマブルロジック (PL) 間の設定 [PS-PL Configuration] ページには 次のようなオプションがあります X-Ref Target - Figure 2-7 図 2-7: [PL-PS Configuration] ページ エンベデッドプロセッサハードウェアデザイン 12

13 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 12 ページの図 2-7 に示すダイアログボックスの上部には 次の 4 つのボタンあります [Documentation]: 資料メニューが開き 製品ガイド IP 変更ログ Zynq に関する資料を検索できるザイリンクスウェブサイトにアクセスできます 開くのは英語サイトです ブラウザーの URL の を に変更すると日本語サイトが表示されます [Presets]: 使用可能なプリセットオプションに関する情報を表示します ZYNQ7 Processing System の現在の設定をファイルに保存したり 既存の設定を適用してそれを基にプロセッサの現在のインスタンスを設定できます プリセットは ターゲットボードに適用することもできます 使用可能なオプションは 図 2-8 に示すように [Defalut] [Microzed] [ZC702] [ZC706] [ZedBoard] です X-Ref Target - Figure 2-8 図 2-8: プリセットオプション [IP Location]: IP は プロジェクトディレクトリ内に作成するか リモートディレクトリに作成できます X-Ref Target - Figure 2-9 図 2-9: IP ディレクトリの指定 [Import XPS Settings]: XPS ベースのプロジェクトからの Zynq プロセッサの設定を記述した XML ファイルがある場合は このボタンをクリックしてその設定をインポートし Zynq プロセッサをすばやく設定できます エンベデッドプロセッサハードウェアデザイン 13

14 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 一般設定 [General] を展開すると 次のオプションが表示されます X-Ref Target - Figure 2-10 図 2-10: [General] オプション エンベデッドプロセッサハードウェアデザイン 14

15 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 MIO および EMIO の設定 Page Navigator で [Peripheral I/O Pins] または [MIO Configuration] をクリックすると I/O ピンを表示および設定できます X-Ref Target - Figure 2-11 図 2-11: [Peripheral I/O Pins] ページを使用したペリフェラル I/O ピンの設定 Zynq-7000 PS では 20 以上のペリフェラルを使用できます これらのペリフェラルは デバイスの専用 MIO (Multiplexed I/O) に直接 または EMIO (Extended Multiplexed I/O) を介してファブリックに配線できます このページでは MIO の I/O 規格およびスルーレート設定も選択できます ペリフェラルをオンにすると その I/O ペリフェラルブロックにチェックマークが表示されます ブロックデザインには ペリフェラルがイネーブルかディスエーブルかのステータスが表示されます エンベデッドプロセッサハードウェアデザイン 15

16 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 [MIO Configuration] ページでも同様に設定できます ( 図 2-12) X-Ref Target - Figure 2-12 図 2-12: [MIO Configuration] ページを使用したペリフェラル I/O ピンの設定 7Z010 CLG225 の MIO および EMIO の詳細は Zynq-7000 All Programmable SoC テクニカルリファレンスマニュアル (UG585) [ 参照 6] の第 2 章 信号 インターフェイス ピン を参照してください ピンの制限 7Z010 CLG225 デバイスで使用可能な 32 個の MIO ピンにより PS の機能が次のように制限されます MIO を使用した場合 USB またはイーサネットコントローラーのいずれかのみが使用可能です SDIO からはブートできません NOR/SRAM とのインターフェイスはありません NAND フラッシュの幅は 8 ビットに制限されます エンベデッドプロセッサハードウェアデザイン 16

17 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 バンク設定 ペリフェラルを選択すると そのペリフェラルの各 I/O 信号が該当する MIO ロケーションに表示されます このセクションは主に さまざまなペリフェラルの I/O 規格を選択するのに使用します PS MIO I/O バッファーは 2 つの電圧ドメインに分けられ それぞれのドメイン内で各 I/O を個別にプログラムできます 次の 2 つの I/O 電圧バンクがあります 0:15 ピンを含むバンク 0 16:53 ピンを含むバンク 1 各 MIO ピンは 次の電圧信号用に個別にプログラムできます 1.8 および 2.5/3.3 ボルト CMOS シングルエンドまたは HSTL 差動レシーバーモード 重要 : バンク全体を同じ電圧にする必要がありますが ピンには異なる I/O 規格を設定できます [MIO Configuration] ページで MIO を設定すると [Zynq Block Design] ページのペリフェラルの図で MIO の選択を確認できます ウィンドウの左側に 使用可能なペリフェラルがリストされます ペリフェラルのチェックマークは そのペリフェラルが選択されていることを示します フラッシュメモリインターフェイス [Re-customize IP] ダイアログボックスの [MIO Configuration] ページで 次のいずれかを選択します クワッド SPI フラッシュ SRAM/NOR フラッシュ NAND フラッシュ エンベデッドプロセッサハードウェアデザイン 17

18 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 クワッド SPI フラッシュ 図 2-13 に クワッド SPI フラッシュで設定可能なオプションを示します X-Ref Target - Figure 2-13 リニアクワッド SPI フラッシュコントローラーの主な機能は 次のとおりです シングルまたはデュアル 1x および 2x 読み出しをサポート プログラム 読み出し およびコンフィギュレーションを含むすべてのデバイス操作が可能な I/O モード用 32 ビット APB 3.0 インターフェイス 読み出し操作用の 32 ビット AXI リニアアドレスマップインターフェイス シングルチップセレクトラインをサポート 書き込み保護信号をサポート 4 ビットの双方向 I/O 信号 x1 x2 および x4 の読み出し速度 x1 x2 および x4 の書き込み速度 図 2-13: クワッド SPI フラッシュのオプション マスターモードで最大 100 MHz のクワッド SPI クロック クワッド SPI の読み出し効率を改善するための 252 バイト入力の FIFO の深さ 最大 128 Mb の集積度のクワッド SPI デバイスをサポート 2 つの並列のクワッド SPI デバイスを含むデュアルクワッド SPI をサポート エンベデッドプロセッサハードウェアデザイン 18

19 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 リニアアドレスマップモードには 次の機能もあります AXI インターフェイスを介した標準読み出し専用メモリアクセス 最大 2 つの SPI フラッシュメモリ 1 つのメモリで最大 16 MB 2 つのメモリで 32 MB のアドレス空間 4 つの AXI 読み出し受諾機能 AXI のインクリメントおよびラップアドレスバースト読み出し 標準メモリ読み出しを SPI プロトコル ( またはその逆 ) に自動的に変換 シリアル デュアル クワッド SPI モード SRAM/NOR フラッシュ X-Ref Target - Figure 2-14 図 2-14: SRAM/NOR フラッシュのオプション SRAM/NOR コントローラーの機能は 次のとおりです 8 ビットデータバス幅 最大 26 個のアドレス信号 (64 MB) の 1 チップセレクト 最大 25 個のアドレス信号 (32 MB + 32 MB) の 2 チップセレクト 16 ワード読み出しおよび 16 ワード書き込みデータの FIFO 8 ワードコマンド FIFO チップごとに選択可能なプログラマブル I/O サイクルタイミング 非同期メモリ操作モード エンベデッドプロセッサハードウェアデザイン 19

20 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 NAND フラッシュ X-Ref Target - Figure 2-15 図 2-15: NAND コントローラーのオプション NAND コントローラーの機能は 次のとおりです 1 チップセレクト信号を含む 8/16 ビットの I/O 幅 ONFI 仕様 ワード読み出しおよび 16 ワード書き込みデータの FIFO 8 ワードコマンド FIFO I/O サイクルタイミングをプログラム可能 ECC アシスト 非同期メモリ操作モード エンベデッドプロセッサハードウェアデザイン 20

21 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 クロック設定 X-Ref Target - Figure 2-16 図 2-16: クロック設定 Zynq-7000 デバイスのクロックを設定するには 次のいずれかの方法を使用します Page Navigator で [Clock Configuration] をクリックします [Zynq Block Design] ページで [Clock Generation] ブロックをクリックします 図 2-17 に [Clock Configuration] ページを示します X-Ref Target - Figure 2-17 図 2-17: [Clock Configuration] ページ エンベデッドプロセッサハードウェアデザイン 21

22 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 図 2-18 に [Clock Configuration] ページでオプションを展開表示したところを示します X-Ref Target - Figure 2-18 図 2-18: [Clock Configuration] ページでオプションを展開表示 PS のクロッキングの詳細は Zynq-7000 All Programmable SoC テクニカルリファレンスマニュアル (UG585) [ 参照 6] を参照してください [Clock Configuration] ページでは ペリフェラルのクロックを設定できます PS のペリフェラルでは 通常内部 PLL または外部クロックソースからクロックソースを選択できます ほとんどのクロックで PLL を選択してクロックを生成できます 同じ PLL で複数の周波数が生成されるので [Requested Frequency (MHz)] 列に入力した周波数とまったく同じ周波数を取得できないことがあります 達成可能な周波数は [Actual Frequency (MHz)] 列に示されます エンベデッドプロセッサハードウェアデザイン 22

23 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 注記 : 特定のペリフェラルの周波数は 入力周波数 同じ PLL から駆動されるほかのペリフェラルの周波数 アーキテクチャでの制限など 多くの要因によって異なります ツールで選択される M 値と D 値の詳細は ログファイルに含まれます DDR の設定 X-Ref Target - Figure 2-19 DDR は 次のいずれかの方法で設定できます 図 2-19: DDR コントローラー Page Navigator で [DDR Configuration] をクリックします [Zynq Block Design] ページで [DDR2/3, LPDDR2 Controller] ブロックをクリックします DDR メモリコントローラーでは DDR2 DDR3 DDR3L および LPDDR2 デバイスがサポートされ AXI メモリポートインターフェイス - DDR インターフェイス (DDRI) トランザクションスケジューラを含むコアコントローラー (DDRC) デジタル PHY を含むコントローラー (DDRP) の 3 つの主なブロックで構成されます DDRI ブロックは 4 つの 64 ビット同期 AXI インターフェイスを介して同時に複数の AXI マスターをサービスします それぞれの AXI インターフェイスに専用のトランザクション FIFO が含まれます DDRC には 2 つの 32 入力 CAM (Content Addressable Memory) が含まれ DDR メモリ効率を最大限にする DDR データサービススケジューリングが実行されます これには レイテンシの短いチャネル用のフライバイチャネルも含まれ CAM を介さずに DDR メモリにアクセスできます PHY でコントローラーからの読み出しおよび書き込み要求が処理され ターゲット DDR メモリのタイミング制約内で特定の信号に変換されます PHY ではコントローラーからの信号を使用して内部信号が生成され その内部信号がデジタル PHY を使用してピンに接続されます DDR ピンは PCB 信号トレースを使用して DDR デバイスに直接接続されます システムは DDRI を使用し 次の 4 つの 64 ビット AXI メモリポートを介して DDR にアクセスします 1 つの AXI ポートは CPU および ACP の L2 キャッシュ専用です 2 つのポートは AXI_HP インターフェイス専用です AXI インターコネクトのその他のマスターは 4 番目のポートを共有します DDRI はこの 8 つのポート ( 読み出し用 4 つ 書き込み用 4 つ ) からの要求を調整 ( アービトレーション ) します アービタは要求を選択し それを DDR コントローラーおよびトランザクションスケジューラ (DDRC) に渡します このアービトレーションは 要求が待機状態である時間 要求の重要度 および要求が前の要求と同じページ内にあるかどうかなどの状況に基づいて実行されます DDRC は 読み出しフローと書き込みフローのどちらでも 1 つのインターフェイスを介して DDRI から要求を受信します 読み出し要求にはタグフィールドが含まれていますが DDR はこれをデータと共に戻します DDR コントローラー PHY (DDRP) は DDR トランザクションを駆動します 図 2-20 に DDR コントローラーの設定を示します エンベデッドプロセッサハードウェアデザイン 23

24 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 注記 : 8 ビットインターフェイスはサポートされていませんが 8 ビットポートを使用して 16/32 ビットインターフェイスを作成することはできます X-Ref Target - Figure 2-20 図 2-20: DDR コントローラーの設定 GIC - 割り込みコントローラー GIC (Generic Interrupt Controller) は 次のいずれかの方法で設定できます Page Navigator で [Interrupts] をクリックします [Zynq Block Design] ページで [GIC] ブロックをクリックします X-Ref Target - Figure 2-21 図 2-21: GIC (Generic Interrupt Controller) エンベデッドプロセッサハードウェアデザイン 24

25 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 図 2-22 に 割り込みポートの設定ページを示します X-Ref Target - Figure 2-22 図 2-22: GIC 割り込み設定 GIC は PS および PL から CPU に送信される割り込みを管理する集中型リソースです コントローラーは プログラムされたとおりに割り込みソースをイネーブルまたはディスエーブルにし 優先順位を付けて 選択した CPU に送信します CPU インターフェイスは それに応じて次の割り込みを受信します コントローラーでは セキュリティ重視のシステムをインプリメントする際のセキュリティ拡張もサポートされています コントローラーは ARM Generic Interrupt Controller Architecture バージョン 1.0 (GIC v1) ( ベクターなし ) をベースにしています CPU のプライベートバスは 一時的な妨害やインターコネクトでのボトルネックを回避してレジスタにアクセスし 高速な読み出し / 書き込み応答を可能にします すべての割り込みソースが割り込み分配器に集められ 優先度の高い割り込みが個々の CPU に送信されます エンベデッドプロセッサハードウェアデザイン 25

26 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 GIC を使用することで 1 つの割り込みで複数の CPU をターゲットとしても 一度に 1 つの CPU のみが割り込みを受信するようにできます すべての割り込みソースには 割り込み ID 番号と 設定可能な優先順位およびターゲット CPU のリストが含まれています Zynq-7000 デバイスのロジックブロックに関する情報は Zynq-7000 All Programmable SoC テクニカルリファレンスマニュアル (UG585) [ 参照 6] および Zynq-7000 All Programmable SoC ソフトウェア開発者向けガイド (UG821) [ 参照 2] を参照してください PS および PL 間のインターコネクト AXI_HP インターフェイス X-Ref Target - Figure 2-23 図 2-23: AXI_HP インターフェイス 4 つの AXI_HP インターフェイスは DDR および OCM メモリへの高帯域幅のデータパスを持つ PL バスマスターを提供します 各インターフェイスには 読み出しおよび書き込み用に 2 つの FIFO バッファーが含まれます PL からメモリへのインターコネクトでは 高速 AXI_HP ポートが 2 つの DDR メモリポートまたは OCM のいずれかに配線されます AXI_HP インターフェイスは バッファー機能を強調して AXI FIFO インターフェイス (AFI) と呼ばれることもあります 重要 : PL ロジックが通信できるようにするため LVL_SHFTR_EN を使用して PL レベルシフターをイネーブルにする必要があります Page Navigator で [PS-PL Configuration] をクリックして [HP Slave AXI Interface] オプションを展開し これらのインターフェイスをイネーブルにしてください ( 図 2-24) エンベデッドプロセッサハードウェアデザイン 26

27 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 X-Ref Target - Figure 2-24 このインターフェイスは PL マスターと DDR やオンチップ RAM を含む PS メモリの間に高スループットデータパスを提供します 主な機能は次のとおりです 32 ビットまたは 64 ビットデータ幅のマスターインターフェイス ( ポートごとに個別にプログラム ) 32 ビットインターフェイスモードでアライメントされた転送を効率的に 64 ビットにダイナミック拡張 (AxCACHE を使用して制御可能 ) 32 ビットインターフェイスモードでアライメントされていない 32 ビット転送を 64 ビットに自動拡張 書き込みコマンドの解放しきい値をプログラム可能 PL - PS 間のすべての AXI インターフェイスで非同期クロック周波数のクロック乗せ換えが可能 読み出しおよび書き込みの両方に 1 KB ( ビット ) データ FIFO を使用してレイテンシの長い転送を円滑化 PL ポートから QoS 信号を使用可能 PL に対して使用可能なコマンドおよびデータ FIFO のフィルレベルカウント 標準 AXI 3.0 インターフェイスをサポート 図 2-24: AXI HP インターフェイスのイネーブル 読み出しコマンドと書き込みコマンド別に インターコネクトへのコマンド発行をプログラム可能 14 ~ 70 個のコマンド ( バースト長に依存 ) の範囲で大容量のスレーブインターフェイス読み出しを受諾可能 8 ~ 32 個のコマンド ( バースト長に依存 ) の範囲で大容量のスレーブインターフェイス書き込みを受諾可能 エンベデッドプロセッサハードウェアデザイン 27

28 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 AXI_ACP インターフェイス アクセラレータコヒーレンシポート (ACP) は プログラマブルロジックマスターにオプションのコヒーレンシおよび L1/L2 キャッシュを使用してレイテンシの短いアクセスを提供します システムの観点からは ACP インターフェイスの接続は APU CPU と似ています 接続が似ていることから ACP は APU ブロックの外側でリソースアクセスを直接競い合います 重要 : PL ロジックが通信できるようにするため LVL_SHFTR_EN を使用して PL レベルシフターをイネーブルにする必要があります [Zynq Block Design] で [64b AXI ACP Slave Ports] ブロックをクリックし AXI_ACP を設定します X-Ref Target - Figure 2-25 図 2-25: AXI_ACP ブロック または [PS-PL Configuration] をクリックして [ACP Slave AXI Interface] を展開します 図 2-26 に ACP AXI スレーブインターフェイスの設定を示します X-Ref Target - Figure 2-26 図 2-26: ACP AXI スレーブインターフェイスの設定 エンベデッドプロセッサハードウェアデザイン 28

29 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 AXI_GP インターフェイス AXI_GP には 次のような機能があります 標準 AXI プロトコル データバス幅 : 32 マスターポート ID 幅 : 12 マスターポート発行能力 : 8 読み出し 8 書き込み スレーブポート ID 幅 : 6 スレーブポート受諾能力 : 8 読み出し 8 書き込み これらのインターフェイスは マスターインターコネクトおよびスレーブインターコネクトのポートに直接接続されます 複雑な FIFO バッファーを使用してパフォーマンスおよびスループットを増加する AXI_HP とは異なり 追加の FIFO バッファーは使用されません このため パフォーマンスはマスターインターコネクトとスレーブインターコネクトによって制限されます これらのインターフェイスは 汎用目的のみに使用され 高パフォーマンスを達成するためのものではありません 重要 : PL ロジックが通信できるようにするため LVL_SHFTR_EN を使用して PL レベルシフターをイネーブルにする必要があります [Zynq Block Design] で次のブロックをクリックし AXI_GP インターフェイスを設定します X-Ref Target - Figure 2-27 図 2-27: AXI_GP ブロック または Page Navigator で [PS-PL Configuration] をクリックして [GP Master AXI Interface] および [GP Slave AXI Interface] オプションを展開します エンベデッドプロセッサハードウェアデザイン 29

30 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 図 2-28 に GP AXI マスターおよびスレーブの設定を示します X-Ref Target - Figure 2-28 PS-PL クロストリガーインターフェイス エンベデッドクロストリガー (ECT) は クロストリガーのメカニズムです ECT を使用することにより CoreSight コンポーネントはトリガーを送受信し ほかのコンポーネントと通信できます ECT は 次の 2 つのコンポーネントと共にインプリメントされます クロストリガーマトリックス (CTM) クロストリガーインターフェイス (CTI) 1 つまたは複数の CTM を組み合わせて 複数チャネルを持つイベントブロードキャストネットワークを形成します CTI は 1 つまたは複数チャネルでイベントを検出し 受信したイベントをトリガーにマップし トリガーを CTI に接続された 1 つまたは複数の CoreSight コンポーネントに送信します また 接続された CoreSight コンポーネントからのトリガーをまとめてマップして それらを 1 つまたは複数チャネルのイベントとしてブロードキャストします CTM および CTI はどちらも コントロールおよびアクセスクラスの CoreSight コンポーネントです ECT は 次を使用して構成されます 4 つのブロードキャストチャネル 4 つの CTI 注記 : パワーダウンはサポートされません 図 2-28: GP マスターおよびスレーブ AXI インターフェイス エンベデッドプロセッサハードウェアデザイン 30

31 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 クロストリガーは ZYNQ7 Processing System の [Re-customize IP] ダイアログボックスで [PS-PL Configuration] ページの [PS-PL Cross Trigger Interface] を展開し チェックボックスをオンにするとイネーブルにできます X-Ref Target - Figure 2-29 図 2-29: PS-PL クロストリガーインターフェイスの設定 プログラマブルロジック (PL) の使用 PL は ユーザーがコンフィギュレーション可能な機能を持つ豊富なアーキテクチャを提供します コンフィギャラブルロジックブロック (CLB) 6 入力ルックアップテーブル (LUT) (LUT 内にメモリ機能あり ) レジスタおよびシフトレジスタの機能 カスケード可能な加算器 36 Kb ブロック RAM 最大 72 ビット幅までのデュアルポート デュアル 18 Kb としてコンフィギュレーション可能 プログラマブル FIFO ロジック ビルトインエラー訂正回路 エンベデッドプロセッサハードウェアデザイン 31

32 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 DSP デジタル信号処理 : DSP48E1 スライス の 2 の補数の乗算器 / アキュムレータの高解像度 (48 ビット ) シグナルプロセッサ 対称フィルターアプリケーションを最適化するため各加算器で 25 ビットの消費電力削減 アドバンス機能 : オプションのパイプライン処理 オプションの ALU カスケード専用バス クロック管理 スキューの小さいクロック分配用の高速バッファーおよび配線 周波数合成および位相シフト ジッターの少ないクロックの生成およびジッターフィルター 設定可能 I/O 高パフォーマンスの SelectIO テクノロジ シグナルインテグリティを向上するためのパッケージ内の高周波数デカップリングキャパシタ 低消費電力 高速の I/O 操作用にトライステートにできるデジタル制御インピーダンス HR (High Range) I/O で 1.2 ~ 3.3V をサポート HP (High Performance) I/O で 1.2V ~ 1.8V をサポート (7z030 7z045 および 7z100 デバイス ) 低消費電力のギガビットトランシーバー 7z030 7z045 および 7z100 デバイス 最大 12.5 Gb/s まで処理可能な高パフォーマンストランシーバー (GTX) チップ間インターフェイス用に最適化された低消費電力モード アドバンス送信プリエンファシス / ポストエンファシス レシーバーリニア (CTLE) 追加マージン用の適応等化を含む判定帰還等化 (DFE) アナログ / デジタルコンバーター (XADC) デュアル 12 ビット 1 MSPS アナログ / デジタルコンバーター (ADC) 最大 17 個の柔軟性のあるユーザー設定可能なアナログ入力 オンチップまたは外部基準オプション オンチップ温度 (±4 最大誤差 ) および電源 (±1% 最大誤差 ) センサー ADC 測定に継続 JTAG アクセス PCI Express デザイン用統合インターフェイスブロック (7z030 7z045 および 7z100 デバイス用 ) エンドポイントおよびルートポート機能を含む PCI Express ベースの仕様 2.1 と互換性あり Gen1 (2.5 Gb/s) および Gen2 (5.0 Gb/s) 速度をサポート アドバンスコンフィギュレーションオプション アドバンスエラーレポート (AER) エンドツーエンド CRC (ECRC) エンベデッドプロセッサハードウェアデザイン 32

33 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 カスタムロジック Vivado IP パッケージャーを使用すると ユーザーおよびサードパーティの IP (Intellectual Property) を Vivado IDE の Vivado IP カタログから使用できるようにすることができます このように準備されたサードパーティ IP は Vivado Design Suite のデザインにインスタンシエートできます Vivado Design Suite の IP パッケージフローを使用して IP を開発すると ザイリンクス IP サードパーティ IP またはカスタマー開発 IP のどれでも Vivado Design Suite で同様に使用できます IP の開発時には IP パッケージャーを使用して IP ファイルと関連データを ZIP ファイルにパッケージ化します この生成された ZIP ファイルを Vivado Design Suite の IP カタログにインストールすると パラメーターを選択して IP をカスタマイズし IP インスタンスを生成できるようになります 詳細は Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 5] および Vivado Design Suite チュートリアル : IP インテグレーターを使用した IP サブシステムの設計 (UG995) [ 参照 8] を参照してください 推奨 : IP をユーザーに渡す前に IP のパッケージに問題がないことを確認するため 各 IP モジュールで IP ユーザーフローを完全に実行し IP が使用可能な状態であるかどうかを検証することをお勧めします Zynq-7000 プロセッシングシステムのシミュレーション Zynq-7000 バスファンクションモデル (BFM) では Zynq-7000 ベースのアプリケーションの論理シミュレーションがサポートされます BFM は PS-PL インターフェイスおよびプロセッシングシステム (PS) ロジックの OCM/DDR メモリを模倣することにより プログラマブルロジック (PL) の機能検証を可能にします この BFM は暗号化された Verilog モジュールのパッケージとして提供されています BFM の操作は Verilog 構文ファイルの Verilog タスクのシーケンスにより制御されます 機能 ピン互換性のある Verilog ベースのシミュレーションモデル すべての AXI インターフェイスをサポート AXI 3.0 に準拠 分散メモリモデル (DDR 用 ) および RAM モデル (OCM 用 ) Verilog タスクベースの API Vivado Design Suite で提供 ブロッキングおよびノンブロッキングの割り込みをサポート AXI BFM モデルのライセンスが必要 エンベデッドプロセッサハードウェアデザイン 33

34 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 アプリケーション Zynq-7000 BFM は Zynq-7000 PS ロジックのシミュレーション環境を提供するもので 通常デザインの ZYNQ7 Processing System ブロックに置き換わるものです Zynq-7000 BFM モデルには 次のような機能があります AXI BFM マスター API 呼び出しにより PS マスターから開始されるトランザクション PS スレーブからインターコネクトモデルを介した OCM および DDR メモリのモデルで終了するトランザクション FCLK リセットおよびクロック供給サポート PL から PS への入力割り込み PS レジスタマップ Zynq BFM の詳細は Zynq-7000 バスファンクションモデルデータシート (DS897) を参照してください エンベデッド IP カタログ Vivado IP カタログは IP の検索 詳細情報の確認 関連資料の表示を実行可能な統合リポジトリです Vivado IP カタログにサードパーティ IP またはカスタマー IP を追加すると Vivado Design Suite フローからその IP にアクセスできるようになります 図 2-30 に Vivado IDE の IP インテグレーター内の IP カタログを示します X-Ref Target - Figure 2-30 図 2-30: IP インテグレーター内の IP カタログ エンベデッドプロセッサハードウェアデザイン 34

35 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 設計アシスタンスを使用した接続 ZYNQ-7000 PS または Zynq UltraScale+ MPSoC を設定したら デバイスのプログラマブルロジック (PL) 部分に含めるほかの IP をインスタンシエートできます IP インテグレーターキャンバスを右クリックし [Add IP] をクリックします Vivado IP インテグレーターには IP サブシステムデザインの残りの部分を完了させるため ブロックオートメーションおよびコネクションオートメーションという 2 つのビルトイン機能があります これらの機能を使用すると 基本的なマイクロプロセッサシステムを IP インテグレーターツールで作成し ポートを外部 I/O ポートに簡単に接続できます ブロックオートメーション ブロックオートメーションは Zynq-7000 AP SoC Zynq UltraScale+ MPSoC MicroBlaze プロセッサなどのマイクロプロセッサ または一部の階層 IP を IP インテグレーターツールのブロックデザインにインスタンシエートする際に使用できます 図 2-31 に示されている [Run Block Automation] をクリックすると 単純な Zynq プロセッシングシステムを簡単に作成できます X-Ref Target - Figure 2-31 図 2-31: [Run Block Automation] リンク エンベデッドプロセッサハードウェアデザイン 35

36 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 [Run Block Automation] ダイアログボックスには 図 2-32 に示すように オートメーションで使用可能なオプションが表示されます ターゲットリファレンスボードを使用している場合は [Apply Board Preset] チェックボックスをオンにすると ボードプリセットをイネーブルにできます X-Ref Target - Figure 2-32 図 2-32: ZYNQ7 Processing System ブロックの [Run Block Automation] ダイアログボックス [OK] をクリックすると ブロックオートメーション機能により 図 2-33 のような基本的なシステムが作成されます X-Ref Target - Figure 2-33 図 2-33: ブロックオートメーション実行後の IP インテグレーターキャンバス エンベデッドプロセッサハードウェアデザイン 36

37 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 [Run Block Automation] ダイアログボックスの [Cross Trigger In] および [Cross Trigger Out] で適切な機能を選択すると クロストリガー機能をイネーブルにできます X-Ref Target - Figure 2-34 図 2-34: [Run Block Automation] ダイアログボックスのクロストリガー機能オプション [Cross Trigger In] および [Cross Trigger Out] のデフォルト値は [Disable] ですが [Enable] または [New ILA] を選択すると クロストリガーを使用できます [Cross Trigger In] および [Cross Trigger Out] で [Enable] を選択すると ZYNQ7 のクロストリガーピンが 1 つだけ使用可能になります これらのピンへの接続は ユーザーが指定する必要があります X-Ref Target - Figure 2-35 図 2-35: ZYNQ7 のクロストリガーピン エンベデッドプロセッサハードウェアデザイン 37

38 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 [New ILA] を選択すると クロストリガーピンがイネーブルになるだけでなく ILA (Integrated Logic Analyzer) コアにも接続されます X-Ref Target - Figure 2-36 図 2-36: ブロックオートメーションを使用してクロストリガーピンを ILA に接続 Vivado IP インテグレーターでは ZC702 のようなザイリンクスターゲットリファレンスプラットフォームを使用している場合 ボードオートメーション機能も提供されます 詳細は 43 ページの IP インテグレーターでのプラットフォームボードフロー を参照してください この機能を使用すると IP のポートがターゲットボードの FPGA ピンに接続されます IP は適切に設定され ユーザーの選択に基づいて I/O ポートに接続されます ボードオートメーションでは 物理制約が必要な IP に対して自動的に物理制約が生成されます 図 2-33 で 外部 DDR および FIXED_IO インターフェイスが外部ポートに接続されていることを確認してください コネクションオートメーション IP インテグレーターでキャンバス上にインスタンシエートされた IP の間に可能な接続が検出された場合 コネクションオートメーション機能を使用できます 図 2-37 では ZYNQ7 Processing System IP と共に AXI BRAM Controller と Block Memory Generator IP がインスタンシエートされています IP インテグレーターで AXI BRAM Controller と ZYNQ7 Processing System IP の間に可能な接続が検出されるので コネクションオートメーション機能を使用できます エンベデッドプロセッサハードウェアデザイン 38

39 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 X-Ref Target - Figure 2-37 図 2-37: [Run Connection Automation] 機能を使用した接続 [Run Connection Automation] をクリックすると 次が実行されます AXI Interconnect Block Memory Generator および Processor System Reset IP がインスタンシエートされます AXI Interconnect を使用して AXI BRAM Controller が ZYNQ Processing System IP に接続されます Processor System Reset IP が図 2-38 に示すように正しく接続されます X-Ref Target - Figure 2-38 図 2-38: コネクションオートメーション後のブロックデザイン エンベデッドプロセッサハードウェアデザイン 39

40 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 手動接続 図 2-39 に ILA SLOT_0_AXI を 監視する必要のある AXI インターフェイスに接続する方法を示します これは 手動で実行できます カーソルを IP ブロックのインターフェイスまたはピンコネクタの近くに移動すると カーソルの形が鉛筆形に変わります IP ブロックのインターフェイスまたはピンコネクタをクリックし 接続先ブロックにドラッグします X-Ref Target - Figure 2-39 図 2-39: ポートの手動接続 エンベデッドプロセッサハードウェアデザイン 40

41 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 I/O ポートの手動作成と接続 Vivado IP インテグレーターでは 手動で外部 I/O ポートを作成できます ピン バス またはインターフェイス接続を選択すると 信号およびインターフェイスを外部 I/O ポートに接続できます 手動で I/O ポートを作成して接続するには ブロック図のポートを右クリックして 次をクリックします [Make External]: Ctrl キーを押しながらクリックして複数のピンを選択してから [Make External] をクリックできます このコマンドにより IP のピンがブロックデザインの I/O ポートに接続されます [Create Port]: クロック リセット uart_txd などのインターフェイス以外の信号を接続するのに使用します [Create Port] を使用すると 入力 / 出力 ビット幅 タイプ (clk reset または data) の指定をユーザーが制御しやすくなります クロックの場合 入力周波数も指定できます [Create Interface Port]: 機能を共有する信号をグループ化するインターフェイスポートを作成します たとえば S_AXI は複数のザイリンクス IP のインターフェイスポートです このコマンドを使用すると インターフェイスタイプおよびモード ( マスターまたはスレーブ ) の指定をより詳細に制御できます 設計アシスタンス IP インテグレーターでは AXI ストリーミングインターフェイスが AXI メモリマップドインターフェイスに接続される際に 設計アシスタンスが提供されます 図 2-40 の例では ストリーミングインターフェイスを含む FIR Compiler IP を ZYNQ7 Processing System のスレーブ ACP ポートに接続しようとしています X-Ref Target - Figure 2-40 図 2-40: ストリーミングインターフェイスのメモリマップドインターフェイスへの接続 エンベデッドプロセッサハードウェアデザイン 41

42 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 設計アシスタンスを使用するには 図 2-41 に示すように FIR Compiler の M_AXIS_DATA インターフェイスピンと ZYNQ7 Processing System の S_AXI_ACP ポート間を直接接続します X-Ref Target - Figure 2-41 図 2-41: 設計アシスタンスの起動 [Make Connection] ダイアログボックスが開き ストリームバスインターフェイス /fir_compiler_0/m_axis_data がメモリマップドバスインターフェイス /processing_system7_0/s_axi_acp に接続されることを確認するメッセージが表示されます また ストリーミングインターフェイスとメモリマップドインターフェイスのクロック供給オプションも設定できます デフォルトは [Auto] です X-Ref Target - Figure 2-42 図 2-42: 設計アシスタンスの [Make Connection] ダイアログボックス エンベデッドプロセッサハードウェアデザイン 42

43 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 設計アシスタンスにより 高周波数 / 中周波数転送用に設定された DMA コアがインスタンシエートされ 設定後に [OK] をクリックすると 設定に基づいて接続されます X-Ref Target - Figure 2-43 図 2-43: 設計アシスタンスを使用した後の接続 設計アシスタンスにより AXI Subset Converter AXI Direct Memory Access AXI Interconnect がインスタンシエートされ FIR Compiler のストリーミングインターフェイスと PS7 の ACP インターフェイスが接続されます AXI4-Stream Subset Converter は 互換性に若干の問題がある AXI4-Stream 信号セットを接続するためのソリューションを提供します IP には インターフェイスごとに設定可能な AXI4-Stream 信号が含まれ 一貫した方法で 1 つの信号セットを別の信号セットに変換できます IP インテグレーターでのプラットフォームボードフロー Vivado Design Suite では ボードが自動的に認識されます ターゲットボードに含まれるさまざまなコンポーネントが認識されるので IP をカスタマイズして そのボードのコンポーネントに接続されるように IP をインスタンシエートおよび設定できます 現在のところ 複数の 7 シリーズボードおよび Kintex UltraScale ボードがサポートされています IP インテグレーターでは ボードに存在するコンポーネントすべてが [Board] ウィンドウに表示されます このウィンドウを使用して必要なコンポーネントを選択し IP インテグレーターで提供される設計アシスタンスを使用すると ブロックデザインを選択したボードコンポーネントに簡単に接続できます I/O 制約はすべてこのフローの一部として自動的に生成されます 詳細は Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 5] のこのセクションを参照してください エンベデッドプロセッサハードウェアデザイン 43

44 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 [Address Editor] ウィンドウでのメモリマップ ブロックデザインにインスタンシエートされたペリフェラル ( スレーブ ) のメモリマップは自動的に割り当てられますが アドレスを手動で割り当てることもできます このデザインのアドレスマップを生成するには 次を実行します 1. ブロック図の上にある [Address Editor] タブをクリックします 2. ツールバーの [Auto Assign Address] をクリックします アドレスは [Offset Address] および [Range] 列に値を入力して手動で設定することもできます 詳細は Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 5] のこのセクションを参照してください X-Ref Target - Figure 2-44 図 2-44: ペリフェラルのメモリマップ ヒント : [Address Editor] ウィンドウは バスマスターとして機能する IP (Zynq-7000 AP SoC Zynq UltraScale+ MPSoC など ) がデザインに含まれている場合にのみ表示されます デザインルールチェックの実行 Vivado IP インテグレーターでは デザインを作成中にリアルタイムで基本的な DRC が実行されます ただし デザイン作成中にエラーが発生することがあります たとえば クロックピンの周波数が正しく設定されていないなどです 包括的な DRC を実行するには [Validate Design] ツールバーボタン をクリックします 警告およびエラーがない場合は それらがなかったことを示すメッセージが表示されます ブロックデザインの最上位デザインへの統合 ブロックデザインを完成してデザインを検証したら 次の 2 つの手順を実行してデザインを完成させます 出力ファイルの生成 HDL ラッパーの作成 出力ファイルを生成すると Vivado IDE の [Sources] ウィンドウにその IP のソースファイルと適切な制約が作成されます プロジェクト作成時にターゲット言語として指定した言語に応じて IP インテグレーターにより適切なファイルが生成されます Vivado IDE で特定の IP のソースファイルを指定したターゲット言語で生成できない場合は コンソールにそれを示すメッセージが表示されます エンベデッドプロセッサハードウェアデザイン 44

45 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 出力ファイルの生成 出力ファイルを生成するには 次のいずれかを実行します [Sources] ウィンドウの [Design Sources] フォルダー階層を展開してデザインを右クリックし [Generate Output Products] をクリックします Flow Navigator の [IP Integrator] の下の [Generate Block Design] をクリックします ブロックデザインで使用されるすべての IP に対して ソースファイルおよび最適な制約が生成されます ソースファイルは プロジェクト作成中または [Project Settings] ダイアログボックスで指定したターゲット言語に基づいて生成されます 出力ファイルの生成については Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 5] のこのセクションを参照してください HDL ラッパーの作成 IP インテグレーターのブロックデザインは それより上位のデザインに統合できます これには デザインを上位の HDL ファイルにインスタンシエートします 上位にインスタンシエートするには Vivado IDE の [Sources] ウィンドウでブロックデザインを右クリックし [Create HDL Wrapper] をクリックします X-Ref Target - Figure 2-45 図 2-45: HDL ラッパーの作成 Vivado には HDL ラッパーを作成する際に 2 つの選択肢があります Vivado でラッパーを作成して自動的にアップデートされるようにするオプション ( デフォルト ) ユーザーが変更可能なスクリプトを作成して ユーザーが編集および管理できるようにするオプション このオプションを選択した場合 ブロックデザインでポートレベルの変更を加えるたびに ラッパーをアップデートする必要があります X-Ref Target - Figure 2-46 図 2-46: [Create HDL Wrapper] ダイアログボックス エンベデッドプロセッサハードウェアデザイン 45

46 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 これにより IP インテグレーターサブシステムの最上位 HDL ファイルが生成されます これで デザインをエラボレーション 合成 インプリメンテーションなどのデザインフローで使用できます Vivado ピンプランナーでの PS I/O の表示 PCB ピンプランニングのガイドラインおよびこれらのデバイスのデザインについては Zynq-7000 All Programmable SoC PCB デザインガイド (UG933) [ 参照 9] を参照してください Vivado IDE で生成されたエンベデッドファイル Vivado IP インテグレーターから Zynq-7000 または Zynq UltraScale+ MPSoC プロセッサハードウェアデザインを SDK にエクスポートすると IP インテグレーターで次のファイルが生成されます 表 2-1: IP インテグレーターで生成されるファイル ファイル system.xml ps7_init.c ps7_init.h ps7_init.tcl ps7_init.html 説明 SDK を起動するとデフォルトで開き システムのアドレスマップを表示します Zynq プロセッシングシステムの初期化コードと DDR クロック PLL MIO の初期化設定が含まれます SDK では プロセッシングシステム上でアプリケーションを実行できるように プロセッシングシステムを初期化する際にこれらの設定が使用されます プロセッシングシステムの設定の中には ZC702 評価ボード用に固定されているものもあります INIT ファイルの Tcl バージョンです INIT ファイルは初期化データを記述します これらの生成ファイルの詳細は Zynq-7000 All Programmable SoC ソフトウェア開発者向けガイド (UG821) [ 参照 2] または Zynq UltraScale+ MPSoC ソフトウェア開発者向けガイド (UG1137) [ 参照 3] を参照してください エンベデッドプロセッサハードウェアデザイン 46

47 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 ソフトウェア開発キット (SDK) の使用 ザイリンクスソフトウェア開発キット (SDK) は ザイリンクスエンベデッドプロセッサをターゲットとするソフトウェアアプリケーションを作成するための環境を提供します GNU ベースのコンパイラツールチェーン (GCC コンパイラ GDB デバッガー ユーティリティ およびライブラリ ) JTAG デバッガー フラッシュプログラマ ザイリンクス IP およびベアメタルボードサポートパッケージ用のドライバー アプリケーション特定の関数のミドルウェアライブラリ C/C++ ベアメタルおよび Linux アプリケーションの開発とデバッグ用の IDE などが含まれます SDK はオープンソース Eclipse プラットフォームに基づいており CDT (C/C++ Development Toolkit) が組み込まれています SDK には 次の機能があります C/C++ コードエディターおよびコンパイル環境 プロジェクト管理 アプリケーションビルドコンフィギュレーションおよび makefile の自動生成 エラーナビゲーション エンベデッドターゲットをデバッグおよびプロファイルするための統合環境 ソースコードのバージョン制御など サードパーティプラグインを使用した追加機能 SDK の入手 SDK は ザイリンクス Vivado Design Suite インストールパッケージから またはスタンドアロンインストールとして入手できます SDK には FSBL (First Stage Boot Loader) を作成するアプリケーションテンプレートのほか ブートイメージをビルドするためのグラフィカルインターフェイスも含まれます SDK には コンセプト タスク およびリファレンス情報を記述したヘルプシステムが含まれます ハードウェア記述のエクスポート デザインをインプリメントし ビットストリームを生成したら ソフトウェアアプリケーションを開発するためにデザインを SDK にエクスポートできます プロセッシングロジックにロジックがまったく含まれていないことがまれにありますが このような場合はインプリメントおよびビットストリーム生成を実行せずにデザインをエクスポートすることもできます デザインを SDK にエクスポートするには 次の手順に従います 1. Vivado IDE で [File] [Export] [Export Hardware] をクリックします [Export Hardware] ダイアログボックスが開きます ( 図 2-47) エンベデッドプロセッサハードウェアデザイン 47

48 . 第 2 章 : エンベデッドデザインでの Zynq-7000 プロセッサの使用 X-Ref Target - Figure [Export Hardware] ダイアログボックスで [Include bitstream] チェックボックスをオンにします 注記 : プロジェクトベースのフローの場合 [Export to] は通常 [<Local to Project>] に設定されていますが 必要に応じて変更できます 3. ハードウェア定義をエクスポートしたら [File] [Launch SDK] をクリックして Vivado から SDK を起動します [Launch SDK] ダイアログボックスが表示されます 図 2-47: [Export Hardware] ダイアログボックス X-Ref Target - Figure 2-48 図 2-48: [Launch SDK] ダイアログボックス プロジェクトベースのフローでは [Exported location] および [Workspace] フィールドは通常 [<Local to Project>] に設定されていますが ハードウェア定義をエクスポートする際に別のディレクトリを指定した場合は [Exported location] でそのディレクトリを指定してください [Workspace] も必要に応じて適切なディレクトリに設定できます ハードウェア定義を SDK にエクスポートしてから SDK を起動すると SDK でソフトウェアアプリケーションの記述を開始できます ソフトウェアのデバッグおよびダウンロードは SDK から実行できます ソフトウェアの ELF ファイルを Vivado ツールにインポートし戻し FPGA ビットストリームに統合すると さらに詳細なダウンロードおよびテストを実行できます エンベデッドプロセッサハードウェアデザイン 48

49 第 3 章 エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 概要 この章では Zynq UltraScale+ MPSoC デバイスを使用する場合の Vivado Design Suite フローについて説明します ここに示す例では ザイリンクス ZCU102 Rev 1.0 評価ボードをターゲットとし Vivado Design Suite のバージョンは 2016.x を使用しています Vivado IDE での Zynq UltraScale+ デバイスの設計 ザイリンクス Zynq UltraScale+ Processing System LogiCORE IP コアは Zynq UltraScale+ プロセッシングシステムのソフトウェアインターフェイスです Zynq UltraScale+ MPSoC ファミリは システムオンチップ (SoC) スタイルの統合プロセッシングシステム (PS) およびプログラマブルロジック (PL) ユニットから構成されており 1 つのダイで拡張可能で柔軟性の高い SoC ソリューションを提供します エンベデッドプロセッサハードウェアデザイン 49

50 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 Zynq UltraScale+ プロセッシングシステムを含む IP インテグレーターデザインの作成 Zynq UltraScale+ MPSoC デバイスをターゲットとするデザインプロジェクト内で [Create Block Design] ボタンをクリックし 空のブロックデザインを作成します 1. [Add IP] をクリックをクリックすると検索ボックスが表示されるので 図 3-1 に示すように [ZYNQ UltraScale+ MPSoc] を検索して選択します X-Ref Target - Figure 3-1 図 3-1: IP カタログでの Zynq UltraScale+ MPSoc の検索 Zynq UltraScale+ MPSoc IP を選択してダブルクリックすると Vivado IP インテグレーターでデザインに IP が追加され 図 3-2 に示すようにプロセッシングシステムのグラフィックが表示されます X-Ref Target - Figure 3-2 図 3-2: デフォルトの ZYNQ UltraScale+ MPSoc のグラフィック表示 Tcl コマンド : create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:2.0 zynq_ultra_ps_e_0 2. プロセッシングシステムのグラフィックをダブルクリックすると Zynq UltraScale+ MPSoc の [Re-customize IP] ダイアログボックス ( 図 3-3) が表示されます エンベデッドプロセッサハードウェアデザイン 50

51 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 3. ブロックデザインの内容を確認します [PS UltraScale+ MPSoc] ページの緑色のブロックは設定可能です 緑色のブロックをクリックすると そのブロックのオプションを設定するページが開きます X-Ref Target - Figure 3-3 図 3-3: ZYNQ UltraScale+ MPSoc の [Re-customize IP] ダイアログボックス これらのページは 図 3-3 の左側の Page Navigator から選択することもできます [Switch to Advanced Mode] チェックボックスをオンにしてアドバンス設定モードに切り替えることもできます このオプションをオンすると [Advanced Configuration] および [PCIe Configuration] が設定可能になります X-Ref Target - Figure 3-4 図 3-4: ZYNQ UltraScale+ のアドバンス設定モード エンベデッドプロセッサハードウェアデザイン 51

52 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 Zynq UltraScale+ MPSoc の [Re-customize IP] ダイアログボックスの概要 Zynq UltraScale+ MPSoc の [Re-customize IP] ダイアログボックスの Page Navigator から設定可能なオプションの詳細は Zynq UltraScale+ MPSoC テクニカルリファレンスマニュアル (UG1085) [ 参照 7] を参照してください 次のセクションでは これらのオプションについて簡単に説明します Zynq UltraScale+ MPSoc に関する情報 [Documentation]: 資料メニューが開き 製品ガイド IP 変更ログ Zynq UltraScale+ MPSoC に関連した資料を検索できるザイリンクスウェブサイトにアクセスできます 開くのは英語サイトです ブラウザーの URL の を に変更すると日本語サイトが表示されます [IP Location]: IP 用に作成されたソースファイルのディレクトリが表示されます X-Ref Target - Figure 3-5 図 3-5: Zynq UltraScale+ MPSoc に関する情報 エンベデッドプロセッサハードウェアデザイン 52

53 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 I/O 設定 ZYNQ UltraScale+ MPSoc では 20 以上のペリフェラルを使用できます これらのペリフェラルは デバイスの専用 MIO (Multiplexed I/O) に直接配線できます ペリフェラルには低速と高速の 2 種類があります X-Ref Target - Figure 3-6 低速ペリフェラル メモリインターフェイス 図 3-6: [Peripheral I/O Pins] ページを使用したペリフェラル I/O ピンの設定 QSPI: 汎用クワッド SPI コントローラーは ソフトウェアによる汎用下位アクセスの要件を満たします このコントローラーは 汎用および将来のコマンドシーケンス 将来の NOR/NAND フラッシュデバイスをサポートします クワッド SPI コントローラーは汎用であるため ソフトウェアでどのモードのコマンドシーケンスでも生成できます クワッド SPI コントローラーでは SPI デュアル SPI クワッド SPI モードの機能がすべてサポートされています また 2 つのフラッシュデバイスに対しては 個別のバスを使用するデュアルパラレルモード 共有バスを使用するスタックモードもサポートされます クワッド SPI の選択肢には シングル デュアルスタックド デュアルパラレルがあります エンベデッドプロセッサハードウェアデザイン 53

54 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 QSPI I/O には スルーレート 駆動電流 プルアップ / プルダウンのオプションを設定できます オプションのフィードバッククロックも必要に応じて生成できます X-Ref Target - Figure 3-7 図 3-7: QSPI I/O ピンの設定 NAND: NAND フラッシュコントローラーには AXI (Advanced extensible Interface) インターフェイスがあります このインターフェイスにより ARM プロセッサで NAND フラッシュコントローラー内にある操作レジスタを設定できます このブロックでは オープン NAND フラッシュインターフェイスのワーキンググループ (ONFI) 規格 および 3.1 がサポートされています NAND フラッシュコントローラーは すべてのコマンド アドレス データシーケンスを処理し ハードウェアプロトコルを管理し レジスタの読み出しおよび書き込み操作を実行することによりユーザーが NAND フラッシュメモリにアクセスできるようにします すべてのオプションは [Re-customize IP] ダイアログボックスで設定できます X-Ref Target - Figure 3-8 図 3-8: NAND I/O ピンの設定 エンベデッドプロセッサハードウェアデザイン 54

55 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 SD: AXI プロセッサインターフェイスを使用した SD 3.0/SDIO 3.0 ホストコントローラーは セキュアデジタル (SD) ホストコントローラー規格のバージョン 3.00 に準拠しています ホストコントローラーは転送レベルで SDIO/SD プロトコルを処理し データのパック CRC ( 巡回冗長検査 ) の追加 開始 / 終了ビット トランザクションフォーマットのチェックを実行します ホストコントローラーでは プログラムされた I/O 方法と DMA データ転送方法が提供されます プログラムされた I/O 方法では ホストプロセッサからバッファーデータポートレジスタを使用してデータが転送されます ホストコントローラーの DMA サポートは 機能レジスタの DMA サポートをチェックすることにより判断されます DMA は ペリフェラルで CPU からの介入なしにメモリに対して読み出しまたは書き込みを実行できるようにします ホストコントローラーのシステムアドレスレジスタは最初のデータアドレスをポイントし データがそのアドレスから順にアクセスされます X-Ref Target - Figure 3-9 図 3-9: SD I/O ピンの設定 エンベデッドプロセッサハードウェアデザイン 55

56 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 I/O ペリフェラル CAN: PS にはほぼ同一の CAN コントローラーが 2 つあり 独立して動作させることができます CAN コントローラーには次の機能があります X-Ref Target - Figure 3-10 ISO CAN 2.0A および CAN 2.0B 規格に準拠 標準 (11 ビット識別子 ) および拡張 (29 ビット識別子 ) フレーム 64 個のメッセージに対応した送信メッセージ FIFO (TXFIFO) 1 つの高優先度送信バッファー (TXHPB) を介して優先度を送信 TXFIFO および RXFIFO のウォーターマーク割り込み エラー発生時または標準モードでのアービトレーションロス発生時の自動再送信 64 個のメッセージに対応した受信メッセージ FIFO (RXFIFO) イネーブル マスク ID での 4 つの RX 受諾フィルター 診断アプリケーション用のループバックおよびスヌープモード 自動ウェークアップ機能付きスリープモード マスク可能なエラーおよびステータス割り込み 受信メッセージ用の 16 ビットのタイムスタンプ 読み出し可能な RX/TX エラーカウンター 図 3-10: CAN I/O ピンの設定 I2C: I2C モジュールは マルチマスターデザインではマスターまたはスレーブとして機能することができるバスコントローラーです DC からの幅広い周波数 (400 Kb/s まで ) をサポートします マスターモードでは プロセッサによりスレーブアドレスを I2C アドレスレジスタに書き込むことにより転送を開始します データ割り込みまたは転送完了割り込みにより プロセッサに受信データが使用できるようになったことが通知されます ホールドビットがセットされている場合 データ送信後に I2C インターフェイスでクロックライン (SCL) が Low に保持され 低速プロセッササービスがサポートされます マスターは 標準 (7 ビット ) アドレス指定と拡張 (10 ビット ) アドレス指定の両方のモードを使用するようプログラム可能です 10 ビットアドレス指定は マスターモードでのみサポートされます エンベデッドプロセッサハードウェアデザイン 56

57 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 スレーブモニターモードでは I2C インターフェイスがマスターとして設定され 指定のスレーブデバイスが ACK で応答するまでスレーブに転送し続けます ホールドビットを設定すると マスターが転送し続けないようにし スレーブでのオーバーフロー状況を防ぐことができます マスターモードとスレーブモードの共通機能に タイムアウト (TO) 割り込みフラグがあります マスターまたはアクセスされたスレーブにより タイムアウトレジスタで指定された時間よりも長く SCL が Low に保持されると ストール状態を回避するために TO 割り込みが生成されます 2 つの I2C コントローラーの MIO ピンは ドロップダウンリストから選択できます オプションの割り込みは この 2 つの I2C コントローラーから生成できます X-Ref Target - Figure 3-11 図 3-11: I2C I/O ピンの設定 エンベデッドプロセッサハードウェアデザイン 57

58 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 PJTAG: ARM DAP と通信するには PJTAG 信号を介するのが代替オプションです MIO には 6 個のインターフェイスが指定されています MIO SLCR を使用すると PJTAG インターフェイスとして PJTAG0-5 MIO インターフェイスのいずれかを選択できます PJTAG インターフェイスは デバイス周囲の JTAG インターフェイスを配線する JTAG セキュリティゲート回路に入力されます PJTAG インターフェイスを使用するには 次の条件が満たされている必要があります CSU の正しいレジスタに書き込むことにより JTAG セキュリティゲートがディスエーブルになっている JTAG チェーンに ARM DAP が含まれない セキュリティホールを回避するため PJTAG はセキュリティゲートの前に JTAG 信号転送に多重化して入力されます X-Ref Target - Figure 3-12 図 3-12: PJTAG I/O ピンの設定 エンベデッドプロセッサハードウェアデザイン 58

59 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 PMU: プラットフォーム管理ユニット (PMU) は 電源投入 リセット システム全体のリソース監視を制御します Zynq UltraScale+ MPSoC PMU は 次のタスクを実行します ブート中のシステム初期化 電力ゲーティングの管理 システムがオフモードの場合 外部または内部のイベントからの指示でオンになります それらのイベントを検出するため システムロジックの一部がアクティブになっています PMU はパワーマネージメント エラー管理 安全性機能 ソフトウェアテストライブラリも提供します PMU はステータス情報を取得し アプリケーションプロセッサを使用せずにほかのシステムエレメントへの要求の発行 システム温度センサーの監視 ファンや電源などのシステムエレメントの制御を実行します X-Ref Target - Figure 3-13 図 3-13: PMU I/O ピンの設定 CSU: ブートプロセスは PMU およびコンフィギュレーションセキュリティユニット (CSU) によって管理および実行されます CSU は [CSU] チェックボックスをオンにすると使用できるようになります エンベデッドプロセッサハードウェアデザイン 59

60 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 SPI: SPI バスコントローラーは メモリ 温度センサー 圧力センサー アナログコンバーター リアルタイムクロック ディスプレイ シリアルモードサポート付きの SD カードなど さまざまなペリフェラルとの通信を可能にします SPI コントローラーは マスターモード スレーブモード またはマルチマスターモードで機能します Zynq UltraScale+ MPSoC には SPI コントーラーの 2 つのインスタンス (SPI 0 および SPI 1) があります これらのコントローラーは同一で ソフトウェアドライバーにより個別に制御されます 同時に動作させることができます X-Ref Target - Figure 3-14 図 3-14: SD I/O ピンの設定 エンベデッドプロセッサハードウェアデザイン 60

61 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 UART: UART コントローラーは全二重の非同期レシーバーおよびトランスミッターで プログラム可能なボーレートおよび I/O 信号フォーマットを幅広くサポートしています 自動パリティ生成およびマルチマスター検出モードをサポートできます UART の操作は コンフィギュレーションレジスタおよびモードレジスタで制御されます FIFO のステート モデム信号 その他のコントローラーファンクションは ステータス 割り込みステータス モデムステータスレジスタを使用して読み出されます コントローラーの RX と TX にそれぞれデータパスがあります 各パスには 64 バイトの FIFO が含まれています コントローラーの TX および RX FIFO でデータがシリアライズ / デシリアライズされ RxD および TxD 信号のさまざまなループバック設定をサポートするためのモードスイッチが含まれています FIFO 割り込みステータスビットは ポーリングまたは割り込み駆動のハンドラーをサポートします ソフトウェアは RX および TX データポートレジスタを使用してデータを読み出しおよび書き込みます モデムのようなアプリケーションで UART を使用すると モデム制御モジュールによりモデムハンドシェーク信号が検出および生成され またハンドシェークプロトコルに従ってレシーバーおよびトランスミッターパスが制御されます X-Ref Target - Figure 3-15 図 3-15: UART I/O ピンの設定 エンベデッドプロセッサハードウェアデザイン 61

62 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 GPIO: 汎用 I/O (GPIO) ペリフェラルは MIO モジュールを介して 78 本までのデバイスピンを監視および制御するソフトウェアを提供します また EMIO インターフェイスを介して プログラマブルロジック (PL) からの 96 個の入力および PL への 192 個の出力へのアクセスを提供します GPIO は 関連のインターフェイス信号をグループ化するレジスタの 6 つのバンクに分けられています 各 GPIO は 個別にダイナミックに入力 出力 割り込みを認識するようプログラムされます ソフトウェアでは 1 つのロード命令で 1 バンク内のすべての GPIO 値を読み出したり 1 つのストア命令で 1 つ以上の GPIO (GPIO の範囲内 ) にデータを書き込むことができます X-Ref Target - Figure 3-16 図 3-16: GPIO ピンの設定 エンベデッドプロセッサハードウェアデザイン 62

63 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 プロセッシングユニット (PU) Zynq UltraScale+ MPSoC プロセッシングユニット (PU) は Cortex-A53 MPCore プロセッサ 4 個 L2 キャッシュ および関連機能から構成されています Cortex-A53 MPCore プロセッサは最も電力効率のよい ARM v8 プロセッサで 32 ビットおよび 64 ビットのコードをシームレスにサポートでき 非常に効率のよい 8 段パイプラインと 高度なフェッチおよびデータアクセステクニックをバランスよく利用してパフォーマンスを高めます 低レベルデバイスに適した消費電力およびエリアフットプリントですが 同時に高いコア集積度を必要とするスケーラブルなエンタープライズシステムでも高パフォーマンスを提供できます SWDT: Zynq UltraScale+ MPSoC には RPU と APU の各サブシステムに対し 1 つずつ 合計 2 つのシステムウォッチドッグタイマー (SWDT) が含まれています RPU SWDT は低消費電力ドメイン (LPD) にあり PU SWDT はフル電力ドメイン (FPD) にあります 各 SWDT は エラー状態情報をエラーマネージャーに通知します PU SWDT は APU または FPD のリセットに使用できます RPU SWDT は RPU またはプロセッシングシステム (PS) のリセットに使用できます これらのタイマーは 図 3-17 に示すようにイネーブルにできます X-Ref Target - Figure 3-17 図 3-17: プロセッシングユニット SWDT ピンの設定 Trace: Cortex-A53 MPCore エンベデッドトレースマクロセル (ETM) は プログラムフロートレース (PFT) アーキテクチャに基づいて Cortex-A53 MPCore に対しリアルタイム命令フローを実行するモジュールです Cortex-A53 MPCore ETM は トレースツールで使用される情報を生成し プログラムのすべてまたは一部の実行を再構築します PFT アーキテクチャでは トレースツールでトレース中のコードのコピーにアクセスできるものと想定されます このため ETM はウェイポイントと呼ばれるプログラム実行の特定の点でのみトレースを生成します これにより ETM で生成されるトレースデータ量を削減できます ウェイポイントとは プログラムフローまたは例外などのイベントの変化です トレースツールでは ウェイポイントを使用して プログラム実行フローを追跡します インプリメンテーションを簡単にするため 各 Cortex-A53 MPCore に 1 つずつ ETM がエンベデッドされており リアルタイムに実行中のトレースがキャプチャされます TTC: トリプルタイムカウンター (TTC) モジュールには 3 つの独立したタイマー / カウンターモジュールがあり それぞれにシステムクロックまたは外部派生クロックを使用してクロックを供給できます 3 つのカウンターで 1 つの APB バスを共有しているため カウンターのセキュリティステータスは同じである必要があります エンベデッドプロセッサハードウェアデザイン 63

64 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 TTC がセキュアモードの場合は ユーザーモードとして実行しているアプリケーションはそのレジスタにはアクセスしません 2 つの TTC モジュールが Zynq UltraScale+ MPSoC にインスタンシエートされますが 1 つは TrustZone ソフトウェア用に予約され もう 1 つは TrustZone ソフトウェアとユーザーソフトウェアの両方で共有されます TrustZone テクノロジが使用されていない場合は 両方の TTC をユーザーソフトウェアで使用できます さらに TTC には外部基準クロック入力およびパルス幅で変調された (PWM) 出力をサポートするオプションがあります X-Ref Target - Figure 3-18 高速ペリフェラル 図 3-18: トリプルタイムカウンター (TTC) ピンの設定 ギガビットイーサネットコントローラー (GEM) ギガビットイーサネットコントローラー (GEM) は イーサネット用の IEEE 規格 (IEEE Std ) と互換性のある 10/100/1000 Mb/s のイーサネット MAC をインプリメントし 10/100 モードでは半二重または全二重で 1000 モードでは全二重で動作可能です プロセッシングシステム (PS) には 4 つのギガビットイーサネットコントローラーが含まれています 各コントローラーは個別に設定できます 各コントローラーでは ピンを節約するため RGMII (Reduced Gigabit Media Independent Interface) v2.0 が使用されます プログラマブルロジック (PL) には GMII (Gigabit Media Independent Interface) を提供する EMIO を介してアクセスされます EMIO インターフェイスで使用可能な GMII を使用して PL にほかのイーサネット通信インターフェイスを作成できます GEM では PS-GTR インターフェイスを使用して SGMII がサポートされています MAC 機能の設定 操作モードの選択 ネットワーク管理統計の有効化および監視には レジスタを使用します DMA コントローラーは AXI (advanced extensible interface) を介してメモリに接続します コントローラーの MAC の FIFO インターフェイスに接続されており エンベデッドプロセッシングシステムのパケットデータストレージにスキャッターギャザータイプの機能を提供します 各 GEM コントローラーには PHY 用に MDIO (Management Data Input/Output インターフェイスがあります エンベデッドプロセッサハードウェアデザイン 64

65 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 タイムスタンプユニット (TSU) は 図 3-19 に示すように [Re-customize IP] ダイアログボックスで [GEM TSU Clock] チェックボックスをオンにしてイネーブルにすることもできます TSU は タイマー 1 個と複数のレジスタで構成されており PTP イベントフレームがメッセージタイムスタンプポイントを超える時間をキャプチャします これらは APB インターフェイスを介してアクセスできます キャプチャレジスタがアップデートされると 割り込みが発行されます X-Ref Target - Figure 3-19 USB 図 3-19: ギガビットイーサネットコントローラーピンの設定 Zynq UltraScale+ MPSoC USB 3.0 コントローラーは 2 つの独立した多目的コントローラーで構成されています どちらも個別にホストまたはデバイスとして機能するよういつでも設定できます USB 3.0 DRD コントローラーは システムソフトウェアに AXI スレーブインターフェイスを介して xhci (extensible Host Controller Interface) を提供します コントローラー内に DMA エンジンがあり AXI マスターインターフェイスを使用してデータを転送します 3 つのデュアルポート RAM コンフィギュレーションで RX データ FIFO TX データ FIFO およびディスクリプター / レジスタキャッシュがインプリメントされます AXI マスターポートおよびプロトコルレイヤーは バッファー管理ユニットを介して異なる RAM にアクセスします エンベデッドプロセッサハードウェアデザイン 65

66 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 X-Ref Target - Figure 3-20 PCIe 図 3-20: USB コントローラーピンの設定 Zynq UltraScale+ MPSoC は Integrated Block for PCI Express v2.1 準拠 AXI-PCIe ブリッジ DMA モジュールのコントローラーを提供します AXI-PCIe ブリッジは PCIe と AXI をつなぐ高パフォーマンスのブリッジです PCIe 用コントローラーではエンドポイントおよびルートポートの両方の操作がサポートされています コントローラーは 2 つのサブモジュールで構成されています AXI-PCIe ブリッジは AXI から PCIe または PCIe から AXI へのプロトコル変換 イングレス / エグレスアドレス変換 DMA ルートポート / エンドポイント (RP/EP) モードのサービスを提供します Integrated Block for PCIe は 一方で AXI-PCIe ブリッジ もう一方で PS-GTR トランシーバーと通信し リンクネゴシエーション エラー検出およびリカバリなど PCIe プロトコルに特化した機能を実行します このブロックには直接アクセスできません エンベデッドプロセッサハードウェアデザイン 66

67 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 このブロックは 次の図に示すように [Re-customize IP] ダイアログボックスで [PCIe] チェックボックスをオンにするとイネーブルにできます X-Ref Target - Figure 3-21 DisplayPort 図 3-21: PCIe コントローラーピンの設定 Zynq UltraScale+ MPSoC DisplayPort コントローラーは VESA DisplayPort 1.2 規格に基づいたソース専用コントローラーです メインリンクでは または 5.40 Gb/s のデータレートで 2 つまでのレーンがサポートされます ビデオデータはビデオクロックでキャプチャされ メインリンクのレーンのクロッキングシステムからは独立しています データはメインリンクのレーンに送信される前にパケット化されます DisplayPort コントローラーでは 音声ストリームとビデオストリームの両方がサポートされています メインリンクに加え 半二重モードで補助チャネルがサポートされていますが これはソース / シンク通信に使用されます 補助チャネルは DisplayPort 規格に従ってマンチェスター 2 レベルのエンコーディングを使用する LVDS 信号転送を使用し 1 Mb/s のデータレートで動作します ホットプラグ検出にはホットプラグ検出 (HPD) 信号が使用され シンクからソースへの IRQ が生成されます Zynq UltraScale+ MPSoC DisplayPort コントローラーには アドバンスペリフェラルバス (APB) に準拠するコンフィギュレーションインターフェイスがあります ビデオおよび音声のインターフェイス用に数多くの AXI ストリーミングインターフェイスがあります DisplayPort コントローラーでは プログラマブルロジック (PL) からのライブオーディオ / ビデオチャネルがサポートされています また PL からのミキシングオーディオチャネル アルファブレンド ビデオチャネルのクロマキーもサポートされています レーンの選択は 68 ページの図 3-22 に示すように [Re-customize IP] ダイアログボックスの [Lane Selection] から設定できます 選択肢は [Dual Higher] [Dual Lower] [Single Higher] [Single Lower] です 選択値に基づいて レーンが 1 つまたは 2 つイネーブルになります エンベデッドプロセッサハードウェアデザイン 67

68 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 X-Ref Target - Figure 3-22 SATA 図 3-22: DisplayPort の設定 シリアル ATA (SATA) プロトコルは 主にストレージデバイスに使用されていた古いパラレル ATA ( または IDE) インターフェイスに代わるテクノロジとして設計されました SATA は ATA/ATAPI コマンドセットを使用していますが レートが 1.5 Gb/s (SATA のジェネレーション 1) 3.0 Gb/s ( ジェネレーション 2) または 6.0 Gb/s ( ジェネレーション 3) の差動ワイヤペア上のシリアル通信を使用します シリアルデータは 8B/10B でエンコードされており DC バランスを確実にするためデータパターンに十分な遷移があるようにし またクロックデータリカバリ回路が入力データパターンからクロックを抽出できるようにしています X-Ref Target - Figure 3-23 図 3-23: SATA の設定 Zynq UltraScale+ MPSoC のプロセッシングシステム (PS) の SATA ブロックは AHCI に準拠するコマンドレイヤーを含む高パフォーマンスのデュアルポート SATA ホストコントローラーです このコマンドレイヤーでは ネイティブコマンドキュー ポート乗算器を採用するシステムのフレーム情報構造 (FIS) ベースのスイッチングなどのアドバンス機能がサポートされています 基準クロック ビデオ基準クロック : 詳細は クロック設定 を参照してください PSS 代替基準クロック : 詳細は クロック設定 を参照してください エンベデッドプロセッサハードウェアデザイン 68

69 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 クロック設定 Zynq UltraScale+ MPSoC にはプログラム可能なクロックジェネレーターが含まれており 有限入力周波数クロックを取り込み プロセッシングシステム (PS) の位相ロックループ (PLL) ブロックを使用して複数のクロックを生成します 各 PLL からの出力クロックは PS ペリフェラルへの基準クロックとして使用されます Zynq UltraScale+ MPSoC には PLL が 5 つあり PS サブシステムで使用されるさまざまなクロックを生成します DDR PLL (DPLL): 主に DDR コントローラーのクロックを生成するのに使用されます APU PLL (APLL): 主に APU のクロックを生成するのに使用されます RPU PLL (RPLL): 主に RPU のクロックを生成するのに使用されます I/O PLL (IOPLL): 主にペリフェラル I/O のクロックを生成するのに使用されます ビデオ PLL (VPLL): PS サブシステムで使用されるビデオブロックのクロックを生成します PLL は 関連付けられている電力ドメインに基づいてグループ分けされています 低消費電力ドメインの PLL: I/O PLL (IOPLL): すべての低速ペリフェラルおよびインターコネクトの一部のクロックを供給します RPU PLL (RPLL): Cortex-R5 CPU およびインターコネクトの一部のクロックを供給します フル電力ドメインの PLL: APU PLL (APLL): Cortex-A53 CPU およびインターコネクトの一部のクロックを供給します ビデオ PLL (VPLL): ビデオ I/O のクロックを供給します DDR PLL (DPLL): DDR コントローラーおよびインターコネクトの一部のクロックを供給します DDR PHY: DDR PHY のクロックを供給するため 独自の PHY PLL (PPLL) を提供します Zynq UltraScale+ MPSoC デバイスのクロックを設定するには 次のいずれかの方法を使用します [PS UltraScale+ Block Design] ページの Zynq ブロック図で [Clocking] ブロックをクリックします Page Navigator で [Clock Configuration] をクリックします エンベデッドプロセッサハードウェアデザイン 69

70 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 入力クロックを設定するには 次の図に示すように [Input Clocks] タブをクリックします X-Ref Target - Figure 3-24 図 3-24: [Clock Configuration] ページ : [Input Clocks] タブ エンベデッドプロセッサハードウェアデザイン 70

71 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 出力クロックを設定するには [Clock Configuration] ページで [Output Clocks] タブをクリックします X-Ref Target - Figure 3-25 DDR 図 3-25: [Clock Configuration] ページ : [Output Clocks] タブ Zynq UltraScale+ MPSoC DDR サブシステムは 6 つの AXI インターフェイスを介して MPSoC の残りの部分に接続します データパスの 1 つはリアルタイムプロセッシングユニット (RPU) に 2 つはキャッシュコヒーレントのインターコネクト (CCI-400) に接続されます ほかはマルチプレクサーを介して DisplayPort コントローラー フル電力ドメインの DMA コントローラー (FPD-DMA) およびプログラマブルロジック (PL) に接続されます 6 つのインターフェイスのうち 5 つが 128 ビット幅で 最後の 1 つ (RPU に接続されている ) は 64 ビット幅です エンベデッドプロセッサハードウェアデザイン 71

72 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 DDR サブシステムでは DDR3 DDR3L LPDDR3 DDR4 および LPDDR4 がサポートされます AXI バスインターフェイスを使用してコントローラーに接続されている 6 つのアプリケーションホストポートからの読み出しおよび書き込み要求を受諾できます これらの要求は内部でキューに入れられ SDRAM へのアクセスがスケジューリングされます メモリコントローラーは SDRAM に対してデータの読み出しおよび書き込みを実行する PHY モジュールへのインターフェイスとなる DDR PHY インターフェイス (DFI) でコマンドを発行します X-Ref Target - Figure 3-26 図 3-26: [DDR Configuration] ページ DDR は 次のいずれかの方法で設定できます Page Navigator で [DDR Configuration] をクリックします [PS UltraScale+ Block Design] ページの Zynq ブロック図で [DDR Controller] ブロックをクリックします エンベデッドプロセッサハードウェアデザイン 72

73 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 PS - PL の設定 Zynq UltraScale+ MPSoC では 1 つのデバイスに多機能なクワッドコア ARM Cortex-A53 MPCore ベースのプロセッシングシステム (PS) とザイリンクスプログラマブルロジック (PL) が統合されています 各 Zynq UltraScale+ MPSoC の PS は同じですが PL および I/O リソースはデバイス間で異なります X-Ref Target - Figure 3-27 図 3-27: [PS-PL Configuration] ページ PS と PL は 複数のインターフェイスおよび信号を使用して 緊密にまたは緩く組み合わせることができます これにより ユーザーが作成したハードウェアアクセラレータおよびその他の機能を PL ロジックに効果的に統合できます これらのアクセラレータおよびその他の機能はプロセッサにアクセスでき また PS のメモリリソースにもアクセスできます デザインに Zynq UltraScale+ MPSoC を使用すると PL でカスタマイズされたアプリケーションにより最終的な製品を差別化できます エンベデッドプロセッサハードウェアデザイン 73

74 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 PS のプロセッサは常に最初にブートするため PL コンフィギュレーションにソフトウェアを中心としたアプローチが可能になります PL はブートプロセスの一部としてコンフィギュレーションするか 後でコンフィギュレーションできます PL は完全にリコンフィギュレーション可能で ダイナミックパーシャルリコンフィギュレーションで使用できます パーシャルリコンフィギュレーション (PR) を利用すると プログラマブルロジックの一部をコンフィギュレーションできます 係数のアップデートや アルゴリズムを入れ替えて PL リソースを時分割するなどのデザイン変更が可能になります 後者の機能はソフトウェアモジュールをダイナミックに読み込んだり削除したりするのに似ています PL コンフィギュレーションデータはビットストリームと呼ばれます 詳細は Vivado Design Suite ユーザーガイド : パーシャルリコンフィギュレーション (UG909) [ 参照 14] を参照してください PL は PS とは別の電力ドメインに配置できます そのため PL を完全にシャットダウンして消費電力を削減できます このモードでは PL はスタティック電力もダイナミック電力も消費しないため デバイスの消費電力を大幅に削減できます このモードから抜けるときは PL をリコンフィギュレーションする必要があります 特定のアプリケーションで PL のリコンフィギュレーションにかかる時間はビットストリームのサイズによるので それを考慮する必要があります PS は汎用インターコネクトブロックを使用して PL と通信します これらのブロックでは PL と PS 間のデータ転送 割り込み クロック リセット用にさまざまなインターフェイスがサポートされており また PL I/O に配線するため PS ペリフェラルを PL に接続しています さらに デバッグクロストリガーおよびトレースインターフェイスで 統合ハードウェア / ソフトウェアコードデバッグがサポートされています AXI インターフェイスでは次のものが提供されます 高パフォーマンスの AXI4 インターフェイス (PS での FIFO サポート付き ) - 可変のネイティブ PL バスデータ幅サポート ( ) - 独立した読み出しおよび書き込みクロックのサポート - アドレス変換のためのシステムメモリ管理ユニット (SMMU) を介したパス (PL に仮想アドレスを使用可能 ) - 3 つのインターフェイスでキャッシュコヒーレントインターコネクト (CCI) を介した I/O コヒーレンシをサポート 低消費電力ドメイン (LPD) と PL の間のレイテンシが短い専用パス 一貫性を保つためのアクセラレータコヒーレンシポート (ACP) インターフェイスおよび APU の L2 キャッシュへの直接割り当て フルコヒーレンシ用の AXI コヒーレンシ拡張 (ACE) インターフェイス I/O コヒーレンシ用の ACE-LITE として使用可能 汎用入力に 32 ビット PL との通信用のプラットフォーム管理ユニット (PMU) からの出力に 32 ビット 16 個の共有割り込みおよび 4 個のプロセッサ間割り込み ギガビットイーサネットコントローラー (GEM) からの専用インターフェイスおよび DisplayPort プロトコル エンベデッドプロセッサハードウェアデザイン 74

75 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 アドバンス設定 [Advanced Configuration] ページは [Switch to Advanced Mode] チェックボックスをオンした場合にのみ表示されます このページには Page Navigator で [Advanced Configuration] を選択するとアクセスできます X-Ref Target - Figure 3-28 図 3-28: [Advanced Configuration] ページ このページでさまざまなアドバンスオプションを設定できます エンベデッドプロセッサハードウェアデザイン 75

76 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 PCIe の設定 アドバンス設定モードでは Page Navigator から [PCIe Configuration] ページにアクセスできます [I/O Configuration] [High Speed] [PCIe] から [PCIe interface] をオンにすると このページで PCIe インターフェイスのアドバンスパラメーターを入力できます X-Ref Target - Figure 3-29 図 3-29: [PCIe Configuration] ページ エンベデッドプロセッサハードウェアデザイン 76

77 第 3 章 : エンベデッドデザインでの Zynq UltraScale+ MPSoC の使用 デザインの完了 デザインの完了については 第 2 章 エンベデッドデザインでの Zynq-7000 プロセッサの使用 の次のトピックを参照してください 35 ページの 設計アシスタンスを使用した接続 41 ページの I/O ポートの手動作成と接続 41 ページの 設計アシスタンス 43 ページの IP インテグレーターでのプラットフォームボードフロー 44 ページの [Address Editor] ウィンドウでのメモリマップ 44 ページの デザインルールチェックの実行 44 ページの ブロックデザインの最上位デザインへの統合 エンベデッドプロセッサハードウェアデザイン 77

78 第 4 章 エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze プロセッサデザインの概要 Vivado IDE の IP インテグレーターは プロセッサベースのシステムを統合する優れたツールです MicroBlaze エンベデッドプロセッサは ザイリンクスフィールドプログラマブルゲートアレイ (FPGA) のインプリメンテーション用に最適化された RISC (Reduced Instruction Set Computer) コアです 図 4-1 に MicroBlaze コアのブロックデザインを示します X-Ref Target - Figure 4-1 図 4-1: MicroBlaze コアのブロックデザイン MicroBlaze プロセッサは 詳細に設定可能なので デザインに必要な特定の機能セットを選択できます エンベデッドプロセッサハードウェアデザイン 78

79 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 プロセッサの固定機能セットには 次のものがあります 32 個の 32 ビット汎用レジスタ オペランド 3 つとアドレス指定モード 2 つを含む 32 ビット命令ワード 32 ビットのアドレスバス データ側は 64 ビットに拡張可能 単一発行のパイプライン MicroBlaze プロセッサでは これらの固定機能のほか パラメーター値を設定して追加機能を選択できます 推奨 : 古いバージョン ( サポートされなくなったもの ) の MicroBlaze では この資料で説明するオプションの機能の一部のみがサポートされます 最新バージョンの MicroBlaze (v9.0) では すべてのオプションがサポートされます 新しいデザインには最新バージョンの MicroBlaze を使用するようにしてください 詳細は MicroBlaze プロセッサリファレンスガイド (UG984) [ 参照 10] を参照してください MicroBlaze プロセッサを含む IP インテグレーターデザインの作成 MicroBlaze プロセッサを使用した設計は Vivado IDE を使用した場合と ISE Design Suite およびエンベデッド開発キット (EDK) を使用した場合で異なります Vivado IDE では エンベデッド開発に IP インテグレーターを使用します IP インテグレーターは GUI ベースのインターフェイスで 複雑な IP サブシステムを統合できます 複雑なデザインに対応するため Vivado IDE の IP カタログからさまざまな IP が提供されています IP カタログにカスタム IP を追加することもできます エンベデッドプロセッサハードウェアデザイン 79

80 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze プロセッサを使用したデザイン 1. Flow Navigator の [IP Integrator] の下の [Create Block Design] をクリックし [Create Block Design] ダイアログボックスを開きます 2. 図 4-2 に示すようにデザイン名を入力します X-Ref Target - Figure 4-2 ブロックデザインキャンバス ( 図 4-3) が開きます 図 4-2: [Create Block Design] ダイアログボックス X-Ref Target - Figure 4-3 図 4-3: ブロックデザインキャンバス Translation Note: Duplicate. Delete.Translation Note: Duplicate. Delete. 3. 空のブロックデザインキャンバスで [Add IP] ボタンをクリックして IP カタログから IP を追加します キャンバスで右クリックして [Add IP] をクリックしても IP を追加できます エンベデッドプロセッサハードウェアデザイン 80

81 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 検索ウィンドウが表示されるので 図 4-4 に示すように MicroBlaze プロセッサを検索して選択します X-Ref Target - Figure 4-4 図 4-4: IP カタログでの MicroBlaze の検索 MicroBlaze IP を選択してダブルクリックすると Vivado IP インテグレーターでデザインに IP が追加され 図 4-5 に示すようにプロセッシングシステムのグラフィックが表示されます X-Ref Target - Figure 4-5 図 4-5: ブロックデザインキャンバスの MicroBlaze プロセッサ Tcl コマンド : create_bd_cell -type ip -vlnv xilinx.com:ip:microblaze:10.0 microblaze_0 4. キャンバス上で MicroBlaze IP をダブルクリックすると MicroBlaze プロセッサの設定ウィザード ([Re-customize IP] ダイアログボックス ) が表示されます エンベデッドプロセッサハードウェアデザイン 81

82 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード 図 4-6 に MicroBlaze 設定ウィザードを示します X-Ref Target - Figure 4-6 図 4-6: MicroBlaze 設定ウィザード MicroBlaze 設定ウィザードには 次の特徴があります 定義済み設定テンプレートを使用してワンクリックで設定 選択した設定オプションに基づいて MicroBlaze の相対周波数 エリア およびパフォーマンスを即座に見積もり ページごとに指示に従って設定 すべての設定オプションにツールヒントが表示され そのオプションの機能を確認可能 [Advanced] ボタンをクリックしてタブ付きインターフェイスに切り替え すべての設定オプションに直接アクセス可能 詳細は 100 ページの MicroBlaze 設定ウィザード : アドバンスモード を参照してください 重要 : [Interrupt & Reset] および [PVR] タブは アドバンスモードでのみアクセス可能です エンベデッドプロセッサハードウェアデザイン 82

83 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザードには Welcome ページで選択されているオプションによって 次のページが表示されます Welcome ページ : 最初に表示されるページで 定義済みの設定および一般設定を示します [General]: 実行単位および最適化設定を選択します 常に表示されます [Exceptions]: Welcome ページで [Enable Selections] をオンにした場合に表示される例外設定のページです [Cache]: Welcome ページで [Use Instructions and Data Caches] をオンにした場合に表示されるキャッシュ設定のページです [MMU]: Welcome ページで [Use Memory Management] をオンにした場合に表示される MMU 設定のページです [Debug]: Welcome ページで [Enable MicroBlaze Debug Module Interface] をオンにした場合に表示されるページで ブレークポイントおよびウォッチポイントの数を設定します [Buses]: 設定ウィザードの最後に常に表示されるページで バスを設定します ダイアログボックスの左側には 現在の設定での周波数 エリア およびパフォーマンスの相対値と ブロック RAM および DSP の数が表示されます [Frequency]: 現在の設定で達成可能な見積もり周波数を このアーキテクチャおよびスピードグレードで達成可能な最大周波数に対する % で示します 注記 : これは定義済みのベンチマークセットに基づいた見積もりで 実際の値から最大 30% の誤差が出る可能性があり この見積もり値がシステムが達成できる周波数というわけではありません [Area]: 現在の設定で達成可能な MicroBlaze の見積もりエリアを このアーキテクチャを使用した場合の最大エリアに対する LUT の % で示します 注記 : これは見積もり値で 実際の値から最大 5% の誤差が出る可能性があり 実際にインプリメントされたエリアがこの値と同じになるとは限りません [Performance]: 現在の設定で達成可能な MicroBlaze の相対パフォーマンスを このアーキテクチャで達成可能な最大パフォーマンスに対する % で示します 注記 : これは ベンチマークのセットに基づく見積もりで 実際のパフォーマンスはユーザーアプリケーションによって大幅に異なる可能性があります [BRAMs]: MicroBlaze で使用されるブロック RAM の総数を示します ブロック RAM は命令キャッシュとデータキャッシュ および分岐先キャッシュで使用され またメモリ管理ユニット (MMU) により仮想モードまたは保護モードで 1 つのブロック RAM が使用されます [DSP48]: MicroBlaze で使用される DSP48 の総数を示します これらは 浮動小数点乗算をインプリメントするため 整数乗算器および浮動小数点演算ユニット (FPU) で使用されます エンベデッドプロセッサハードウェアデザイン 83

84 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード : Welcome ページ MicroBlaze 設定ウィザードを使用する最も単純な方法は 6 つの定義済みテンプレート ( それぞれ MicroBlaze 設定を完全に定義 ) の 1 つを選択することです 定義済みのテンプレートを特定のアプリケーションの開始点として使用し ウィザードでパフォーマンス 周波数 またはエリアの要件を満たすよう設定を変更できます オプションを変更すると パフォーマンス 周波数 エリアの相対的な見積もり値の変化が情報エリアにすぐに表示されます 次のテンプレートがあります [Minimum Area]: 最小の MicroBlaze コアで キャッシュまたはデバッグは含まれません [Maximum Performance]: 最大パフォーマンス 大型キャッシュおよびデバッグ すべての実行ユニットが含まれます [Maximum Frequency]: 達成可能な最大周波数 キャッシュは小さく デバッグもなしで 実行ユニットはほどんど含まれません [Linux with MMU]: MMU を使用する Linux を実行するときに高パフォーマンスを達成するのに適した設定で メモリ管理はイネーブルで 大型キャッシュ デバッグ すべての実行ユニットが含まれます [Low-end Linux with MMU]: MicroBlaze エンベデッドリファレンスシステムに対応する設定で 低性能システムでの Linux 開発に適した設定です メモリ管理はイネーブルで 小型のキャッシュとデバッグが含まれます [Typical]: パフォーマンス エリア 周波数の間で合理的に妥協した設定で スタンドアロンプログラムおよびオーバーヘッドの少ないカーネルに適しています キャッシュおよびデバッグはイネーブルです [Frequency Optimized]: MMU を含む MicroBlaze のすべての機能を提供すると同時に 周波数で最適化された 8 段パイプラインを使用して高周波数を達成します 図 4-7 に MicroBlaze 設定ウィザードの定義済み設定テンプレートを示します X-Ref Target - Figure 4-7 図 4-7: MicroBlaze の定義済み設定 エンベデッドプロセッサハードウェアデザイン 84

85 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [General Settings] 定義済みのテンプレートを使用しない場合は 各ページでオプションを選択できます これらのオプションを使用し デザインニーズに基づいて MicroBlaze プロセッサを調整できます オプションの上にカーソルを置くと そのオプションを説明するツールヒントが表示されます 次に これらのオプションについて説明します [Select implementation optimization]: [PERFORMANCE] に設定すると 5 段パイプラインを使用して 計算のパフォーマンスを最適化するインプリメンテーションが選択されます [AREA] に設定すると 命令スループットを小さくし 3 段パイプラインを使用して エリアを最適化するインプリメンテーションが選択されます [FREQUENCY] に設定すると 8 段パイプラインを使用して MicroBlaze の周波数を最適化するインプリメンテーションが選択されます 推奨 : Artix-7 や Spartan-7 デバイスのようなリソースに制限のあるアーキテクチャの場合は [AREA] に設定することをお勧めします システム周波数ターゲットを達成するには 特にキャッシュベースの外部メモリ MMU または大型 LMB メモリを使用する場合は [FREQUENCY] に設定することをお勧めします ただし パフォーマンスが重要な場合は 追加のクロックサイクルを必要とする命令もあるので [AREA] または [FREQUENCY] には設定しないでください 注記 : メモリ管理ユニット (MMU) 分岐先キャッシュ 命令キャッシュストリーム 命令キャッシュビクティム データキャッシュビクティム および ACE (AXI Coherency Extension) は エリア最適化と共に使用することはできません [Enable MicroBlaze Debug Module Interface]: Xilinx System Debugger (XSDB) を使用してプログラムをダウンロードおよびデバッグできるようにデバッグをイネーブルにします 推奨 : エリアリソースの重要度がそれほど高くない場合は 常にデバッグをイネーブルにすることをお勧めします [Use Instruction and Data Caches]: MicoBlaze にオプションの命令キャッシュを使用すると LMB アドレス範囲外にあるコードを実行する際のパフォーマンスを改善できます 命令キャッシュの機能は 次のとおりです 直接マップ (1 ウェイアソシエイティブ ) キャッシュ可能メモリアドレス範囲を選択可能 キャッシュおよびタグサイズを設定可能 AXI4 インターフェイス (M_AXI_IC) または CacheLink (XCL) インターフェイスでのキャッシュ 4 または 8 ワードのキャッシュラインを使用可能 MSR のビットを使用してキャッシュのオン / オフを制御 オプションの WIC 命令で命令キャッシュラインを無効化 オプションのストリームバッファーで命令を投機的にプリフェッチしてパフォーマンスを改善 オプションのビクティムキャッシュで追い出されたキャッシュラインデータを保存してパフォーマンスを改善 オプションのパリティ保護で ブロック RAM ビットエラーが検出された場合にキャッシュラインを無効化 オプションでデータ幅を 32 ビットにするか キャッシュライン全体にするか または 512 ビットにするかを選択 外部メモリを使用する際にキャッシュをアクティベートすると リソース使用量を削減するために小さいキャッシュサイズを選択する必要がある場合でも パフォーマンスが大きく改善されます エンベデッドプロセッサハードウェアデザイン 85

86 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Enable Exceptions]: 例外サポートのある OS を使用する場合 またはスタンドアロンプログラムで例外ハンドラーを明示的に追加する場合に 例外をイネーブルにします [Use Memory Management]: Linux などの OS を使用する予定の場合に メモリ保護付き仮想メモリをサポートするメモリ管理ユニット (MMU) をイネーブルにします 注記 : エリア最適化またはスタック保護をイネーブルにした場合 メモリ管理ユニット (MMU) は使用できません [Enable Discrete Ports]: 次の目的で使用される MicroBlaze インスタンスのディスクリートポートをイネーブルにします ソフトウェアブレーク (Ext_BRK Ext_NM_BRK) の生成 プロセッサのスリープおよびウェークアップ (Sleep Hibernate Suspend Wakeup Dbg_Wakeup) の管理 デバッグイベント (Debug_Stop MB_Halted) の処理 フォールトトレランス (MB_Error) を使用する場合にエラー信号を出力 プロセッサの一時停止 (Pause Pause_Ack Dbg_Continue) エンベデッドプロセッサハードウェアデザイン 86

87 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード : [General] ページ 図 4-8 に MicroBlaze 設定ウィザードの [General] ページを示します X-Ref Target - Figure 4-8 [Instructions] 図 4-8: MicroBlaze 設定ウィザードの [General] ページ [Enable Barrel Shifter]: MicroBlaze のハードウェアバレルシフターをイネーブルにします このパラメーターにより bsrl bsra bsll bsrli bsrai および bslli 命令がイネーブルになります バレルシフターをイネーブルにすると アプリケーションのパフォーマンスが大幅に改善されますが プロセッサのサイズは増加します このパラメーターがオンになっていると コンパイラでバレルシフター命令が自動的に使用されます [Enable Floating Point Unit]: IEEE-754 規格に基づく単精度浮動小数点演算ユニット (FPU) をイネーブルにします FPU を使用すると アプリケーションの単精度の浮動小数点のパフォーマンスが大幅に改善し MicroBlaze のサイズもかなり増加します このパラメーターを [BASIC] に設定すると fadd frsub fmul fdiv および fcmp 命令がイネーブルになります [EXTENDED] に設定すると flt finit および fsqrt 命令もイネーブルになります コンパイラは このパラメーターの設定に従って FPU 命令を自動的に使用します エンベデッドプロセッサハードウェアデザイン 87

88 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Enable Integer Multiplier]: MicroBlaze のハードウェア整数乗算器をイネーブルにします このパラメーターを [MUL32] に設定すると mul および muli 命令がイネーブルになります [MUL64] に設定すると 64 ビット乗算用に mulh mulhu および mulhsu 命令もイネーブルになります [NONE] に設定すると デバイスの MUL または DSP48 プリミティブをほかの目的に使用できます [NONE] に設定した場合でも MicroBlaze プロセッサのエリアに多少影響します このパラメーターがイネーブルになると コンパイラで mul 命令が自動的に使用されます [Enable Integer Divider]: MicroBlaze のハードウェア整数除算器を有効にします このパラメーターをオンにすると idiv および idivu 命令がイネーブルになります このパラメーターをオンにすると 整数除算を実行するアプリケーションのパフォーマンスは改善される可能性がありますが プロセッサのサイズも増加します このパラメーターが有効になると コンパイラで idiv 命令が自動的に使用されます [Enable Additional Machine Status Register Instructions]: MSR のビットをセットおよびクリアする追加のマシンステータスレジスタ (MSR) 命令をイネーブルにします このパラメーターをオンにすると msrset および msrclr 命令がイネーブルになります このパラメーターをオンにすると MSR のビット変更のパフォーマンスが改善されます [Enable Pattern Comparator]: パターン比較命令 pcmpbf pcmpeq および pcmpne をイネーブルにします パターン比較バイトの検出命令 (pcmpbf) は 2 つのワード間で一致する最初のバイトの位置を返し 文字列およびパターン一致操作のパフォーマンスを改善します このパラメーターがイネーブルの場合 SDK ライブラリで pcmpbf 命令が自動的に使用されます pcmpeq および pcmpne 命令は 2 つのワードが等しいかどうかに基づいて 1 または 0 を返します これらの命令によりフラグ設定のパフォーマンスが改善し コンパイラではこれらが自動的に使用されます このオプションをオンにすると clz ( 先行ゼロカウント ) 命令もイネーブルになります clz 命令は 優先デコードおよび正規化のパフォーマンスを向上します [Enable Reversed Load/Store and Swap Instructions]: 予約済みのロード ストア スワップ命令 lbur lhur lwr sbr shr swr swapb および swaph をイネーブルにします 予約済みロード / ストア命令ではエンディアンネスが逆のデータが読み出しまたは書き込みされ スワップ命令ではレジスタのバイトまたはハーフワードがスワップできるようになります これらの命令は主に リトルエンディアンの MicroBlaze を使用してビッグエンディアンのネットワークアクセスを処理する際のパフォーマンスを改善するのに便利です [Enable Additional Stream Instructions]: インターフェイスの選択にレジスタを使用するダイナミックアクセス命令 GETD および PUTD を含め AXI4-Stream リンクを使用する際に追加機能を提供します 命令は 次を提供するバリエーションを使用して拡張されます アトミック GET GETD PUT および PUTD 命令 テストのみの GET および GETD 命令 制御ビットが設定されていない場合にストリーム例外を生成する GET および GETD 命令 重要 : これらの命令を使用するには ストリーム例外をイネーブルにし 少なくとも 1 つのリンクを選択する必要があります [Select Extended Addressing]: メモリアドレス指定機能を設定します 追加のロード / ストア命令で 4 GB を超えるアドレス空間 (32 ビットアドレス ) にアクセスできるようにします データ側の LMB および AXI バスアドレスが 選択したメモリサイズに対応するアドレスビット数に拡張されます 選択可能な値は [NONE] (32 ビットアドレス 追加命令なし ) [64GB] (36 ビットアドレス ) [1TB] (40 ビットアドレス ) [16TB] (44 ビットアドレス ) [256TB] (48 ビットアドレス ) および [16EB] (64 ビットアドレス ) です ソフトウェアの使用方法および制限に関する詳細は MicroBlaze プロセッサセッサリファレンスガイド (UG984) [ 参照 10] を参照してください エンベデッドプロセッサハードウェアデザイン 88

89 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Optimization] [Select implementation optimization]: [General] ページのオプションと同じです [Enable Branch Target Cache]: 分岐先キャッシュをインプリメントします 条件分岐が予測されて分岐先がキャッシュされ 分岐パフォーマンスが改善されます ヒント : MicroBlaze 設定ウィザード : Welcome ページ で [Select implementation optimization] を [AREA] に設定した場合は [Enable Branch Target Cache] オプションはオフになっています また [Enable Branch Target Cache] をオンにすると [Select implementation optimization] の [AREA] オプションはディスエーブルになります [Branch Target Cache Size]: 分岐先キャッシュのサイズを指定します [Fault Tolerance] [Auto]/[Manual]: Vivado ツールでフォールトトレランスが自動的にイネーブルになるようにするか または手動で設定するかを指定します [Enable Fault Tolerance Support]: MicroBlaze により内部ブロック RAM をパリティで保護し LMB ブロック RAM のエラー訂正コード (ECC) を ECC エラーの例外処理も含めてサポートします これにより プロセッサ関数がブロック RAM のビットフリップの影響を受けなくなります このオプションが自動設定される場合は 接続された LMB BRAM コントローラーで ECC がイネーブルになると MicroBlaze でフォールトトレランスが自動的にイネーブルになります フォールトトレランスを手動でディスエーブルにした場合は 接続された LMB BRAM コントローラーで ECC が自動的にイネーブルになります フォールトトレランスを手動でディスエーブルにした場合は 接続された LMB BRAM コントローラーの ECC は変更されません エンベデッドプロセッサハードウェアデザイン 89

90 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード : [Exception] ページ 図 4-9 に MicroBlaze 設定ウィザードの [Exception] ページを示します X-Ref Target - Figure 4-9 重要 : 独自の例外ハンドラーを提供する必要があります 図 4-9: MicroBlaze 設定ウィザードの [Exception] ページ [Math Exceptions] [Enable Floating Point Unit Exceptions]: 浮動小数点演算ユニット (FPU) で生成された例外をイネーブルにします FPU は すべての IEEE 規格の条件 ( アンダーフロー オーバーフロー 0 による除算 不正操作 ) に対して例外を発生させます また MicroBlaze FPU は非正規化オペランドの例外も発生させます [Enable Integer Divide Exception]: idiv または idivu 命令に供給した除数 (ra) が 0 の場合 または idiv に対してオーバーフローが発生した場合 例外が発生します [Bus Exceptions] [Enable Instruction-side AXI Exception]: 命令側の AXI バスにエラーがある場合 例外が発生します [Enable Data-side AXI Exception]: データ側の AXI バスにエラーがある場合 例外が発生します エンベデッドプロセッサハードウェアデザイン 90

91 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Other Exceptions] [Enable Illegal Instruction Exception]: 主な opcode が無効な場合 例外が発生します [Enable Unaligned Data Exception]: 揃えられていないアクセスを処理するため 自動的にソフトウェアを挿入します [Generated Illegal Instruction Exception for NULL Instructions]: NULL 命令コード (0x ) は MicroBlaze コンパイラでは生成されず SDK ライブラリでも使用されません このコードは 手動アセンブルされた場合のみに存在します 通常は NULL 命令が実行されると プロセッサが初期化済み命令メモリ外に出たことを意味します C_OPCODE_0x_ILLEGAL が設定されると MicroBlaze でこの条件がトラップされます それ以外の場合は コマンドは NOP として処理されます この設定は [Enable Illegal Instruction Exception] をオンにした場合にのみ使用できます [Enable Stream Exception]: AXI の読み出しアクセス用にストリーム例外処理をイネーブルにします 重要 : ストリーム例外処理を使用するには 追加ストリーム命令もイネーブルにする必要があります [Enable Stack Protection]: メモリアクセスにスタックポインター (R1) を使用し それらが SLR (Stack Low Register) および SHR (Stack High Register) で設定した制限内であることを確認します 例外をイネーブルにしていてチェックでエラーが検出されると スタック保護違反例外が発生します チェックでエラーが検出されると Xilinx System Debugger (XSDB) でもそれがレポートされます エンベデッドプロセッサハードウェアデザイン 91

92 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード : [Cache] ページ 図 4-10 に MicroBlaze 設定ウィザードの [Cache] ページを示します X-Ref Target - Figure 4-10 図 4-10: MicroBlaze 設定ウィザードの [Cache] ページ [Enable Instruction Cache]: マシンステータスレジスタ (MSR) の命令キャッシュイネーブル (ICE) ビットを設定することにより命令キャッシュがソフトウェアでイネーブルになっている場合にのみ このキャッシュを使用します [Instruction Cache Feature]: [Size in Bytes]: C_USE_ICACHE がイネーブルの場合に 命令キャッシュのサイズを指定します どのアーキテクチャでもすべてのサイズが使用できるわけではありません [Line Length]: 外部命令メモリからのキャッシュミス転送のキャッシュライン長を 4 8 または 16 ワードに設定します [Base Address]: 命令キャッシュのベースアドレスを指定します このパラメーターは C_USE_ICACHE がイネーブルの場合にのみ使用されます [High Address]: 命令キャッシュのハイアドレスを指定します このパラメーターは C_USE_ICACHE がイネーブルの場合にのみ使用されます [Enable Writes]: wic 命令で命令キャッシュラインを無効化できるようにします このパラメーターは C_USE_ICACHE がイネーブルの場合にのみ使用されます [Use Cache for All Memory Accesses]: 命令キャッシュがディスエーブルになっている場合でも 外部命令メモリへのキャッシュ可能な範囲内のすべてのアクセスに MicroBlaze の専用キャッシュインターフェイスを使用します オフの場合 命令キャッシュがディスエーブルであれば 命令キャッシュでこれらのアクセスにペリフェラル AXI が使用されます オンの場合 外部メモリコントローラーでキャッシュインターフェイス MicroBlaze 命令メモリのみを提供する必要があります このパラメーターは ACE (AXI Coherency Extension) を使用する場合にオンにします エンベデッドプロセッサハードウェアデザイン 92

93 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Use Distributed RAM for Tags]: 命令キャッシュタグを使用して 各キャッシュラインのアドレスおよび Valid ビットを保持します オンの場合 命令キャッシュタグはブロック RAM ではなく分散メモリに格納されます これによりブロック RAM が節約されるので 最大周波数を増加できる可能性があります [Data Width]: AXI インターコネクトを使用する際の命令キャッシュのバス幅を指定します この幅は 次のいずれかに設定できます - [32-bit]: キャッシュラインの長さによって 32 ビットワードのキャッシュラインを送信するのにバーストを使用します - [Full Cache line]: キャッシュラインの長さによって キャッシュラインごとに または 512 ビットのデータ幅の単一転送を実行します - [512-bit]: 単一送信を実行しますが キャッシュラインの長さ (4 または 8 ワード ) によって 128 または 256 ビットのみを使用します 幅の広い 2 つの設定では キャッシュラインの長さによって キャッシュサイズが少なくとも 8 KB 16 KB または 32 KB である必要があります AXI インターコネクトのサイズを削減するには この設定をインターコネクトのデータ幅と同じにする必要があります ほとんどの場合 幅設定でベストなパフォーマンスが得られます 注記 : この設定は エリア最適化 ACE (AXI Coherency Extension) を使用する場合 フォールトトレランスがオンの場合は使用できません [Number of Streams]: 命令キャッシュで使用されるストリームバッファーの数を指定します ストリームバッファーは プロセッサが命令を要求する前に その命令を投機的にプリフェッチするために使用されます これにより プロセッサがメモリから命令をフェッチするのにかかる時間が短くなり パフォーマンスが改善されることがよくあります 注記 : 命令キャッシュストリームを使用できるようにするには エリア最適化または ACE (AXI Coherency Extension) をイネーブルにしないでください [Number of Victims]: 保存する命令キャッシュビクティムの数を指定します ビクティムはキャッシュから追い出されたキャッシュラインです ビクティムが保存されない場合は 必要に応じて追い出されたラインをすべてメモリから再度読み出す必要があります 最近のラインを保存しておくと より高速にフェッチできるので パフォーマンスが改善します 推奨 : 2 4 または 8 個のキャッシュラインを保存できます 保存するキャッシュラインが多いほど パフォーマンスも良くなります 推奨値は 8 ラインです 注記 : 命令キャッシュビクティムを使用できるようにするには エリア最適化または ACE (AXI Coherency Extension) をイネーブルにしないでください [Enable Data Cache]: マシンステータスレジスタ (MSR) のデータキャッシュイネーブル (DCE) ビットを設定することによりデータキャッシュがソフトウェアでイネーブルになっている場合にのみ このキャッシュを使用します [Data Cache Feature]: [Size in Bytes]: C_USE_DCACHE がイネーブルの場合に データキャッシュのサイズを指定します どのアーキテクチャでもすべてのサイズが使用できるわけではありません [Line Length]: 外部メモリからのキャッシュミス転送のキャッシュライン長を 4 8 または 16 ワードに設定します [Base Address]: データキャッシュのベースアドレスを指定します このパラメーターは C_USE_DCACHE がイネーブルの場合にのみ使用されます エンベデッドプロセッサハードウェアデザイン 93

94 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [High Address]: データキャッシュのハイアドレスを指定します このパラメーターは C_USE_DCACHE がイネーブルの場合にのみ使用されます [Enable Writes]: wdc 命令でデータキャッシュラインを無効化できるようにします このパラメーターは C_USE_DCACHE がイネーブルの場合にのみ使用されます [Use Cache for All Memory Accesses]: データキャッシュがディスエーブルになっている場合でも 外部メモリへのキャッシュ可能な範囲内のすべてのアクセスに MicroBlaze の専用キャッシュインターフェイスを使用します オフの場合 データキャッシュがディスエーブルであれば データキャッシュでこれらのアクセスにペリフェラル AXI が使用されます オンの場合 外部メモリコントローラーでキャッシュインターフェイス MicroBlaze データメモリのみを提供する必要があります このパラメーターは ACE (AXI Coherency Extension) を使用する場合にオンにします [Use Distributed RAM for Tags]: データキャッシュタグを使用して 各キャッシュラインのアドレスおよび Valid ビットを保持します オンの場合 データキャッシュタグはブロック RAM ではなく分散メモリに格納されます これによりブロック RAM が節約されるので 最大周波数を増加できる可能性があります [Data Width]: AXI インターコネクトを使用する際のデータキャッシュのバス幅を指定します この幅は 次のいずれかに設定できます - [32-bit]: キャッシュラインの長さによって 32 ビットワードのキャッシュラインを送信するのにバーストを使用します - [Full Cache line]: キャッシュラインの長さによって キャッシュラインごとに または 512 ビットのデータ幅の単一転送を実行します - [512-bit]: 単一送信を実行しますが キャッシュラインの長さ (4 または 8 ワード ) によって 128 または 256 ビットのみを使用します 幅の広い 2 つの設定では キャッシュラインの長さによって キャッシュサイズが少なくとも 8 KB 16 KB または 32 KB である必要があります AXI インターコネクトのサイズを削減するには この設定をインターコネクトのデータ幅と同じにする必要があります ほとんどの場合 幅設定でベストなパフォーマンスが得られます 注記 : この設定は エリア最適化 ACE (AXI Coherency Extension) を使用する場合 フォールトトレランスがオンの場合は使用できません [Enable Write-back Storage Policy]: ライトバックデータストレージポリシーの使用をイネーブルにします このポリシーが有効になると 必要な場合にのみデータキャッシュのデータがメモリに書き込まれ ほとんどの場合にパフォーマンスを向上できます ライトバックがイネーブルの場合 データはキャッシュライン全体を書き込むことにより格納されます ライトバックを使用するには 適切な場合にソフトウェアでキャッシュをフラッシュし 直接メモリアクセスを使用する場合などにデータがメモリに存在するようにする必要があります ディスエーブルの場合は ライトスルーポリシーが使用され 常にデータがメモリに即書き込まれます ヒント : MMU がイネーブルの場合 このパラメーターを設定すると各 TLB エントリに対してストレージポリシーを個別に選択できます [Number of Victims]: 保存するデータキャッシュビクティムの数を指定します ビクティムはキャッシュから追い出されたキャッシュラインです ビクティムが保存されない場合は 必要に応じて追い出されたラインをすべてメモリから再度読み出す必要があります 最近のラインを保存しておくと より高速にフェッチできるので パフォーマンスが改善します エンベデッドプロセッサハードウェアデザイン 94

95 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 推奨 : 2 4 または 8 個のキャッシュラインを保存できます 保存するキャッシュラインが多いほど パフォーマンスも良くなります 推奨値は 8 ラインです 注記 : データキャッシュビクティムを使用できるようにするには エリア最適化または ACE (AXI Coherency Extension) をイネーブルにしないでください MicroBlaze 設定ウィザード : [MMU] ページ 図 4-11 に MicroBlaze 設定ウィザードの [MMU] ページを示します X-Ref Target - Figure 4-11 [Memory Management] [Memory Management] では メモリ管理ユニット (MMU) のインプリメンテーションを指定します MMU をディスエーブルにするには [NONE] に設定します ユーザーモードおよび特権モードの命令のみをイネーブルにするには [USERMODE] に設定します メモリ保護をイネーブルにするには [PROTECTION] に設定します 仮想メモリアドレスの変換を含むすべての MMU の機能をイネーブルにするには [VIRTUAL] に設定します [USERMODE] に設定すると 特権命令例外がイネーブルになります [PROTECTION] または [VIRTUAL] に設定すると 特権命令例外および 4 つの MMU 例外 (Data Storage Instruction Storage Data TLB Miss Instruction TLB Miss) がイネーブルになります [Memory Management Feature]: 図 4-11: MicroBlaze 設定ウィザードの [MMU] ページ [Data Shadow Translation Look-Aside Buffer Size]: データシャドウ変換ルックアサイドバッファー (TLB) のサイズを指定します TLB はデータアドレス変換情報をキャッシュし 変換のパフォーマンスを改善します この選択は サイズを小さくするかパフォーマンスを良くするかのトレードオフで デフォルト値は 4 です [Instruction Shadow Translation Look-Aside Buffer Size]: 命令シャドウ変換ルックアサイドバッファー (TLB) のサイズを指定します TLB は命令アドレス変換情報をキャッシュし 変換のパフォーマンスを改善します この選択は サイズを小さくするかパフォーマンスを良くするかのトレードオフで デフォルト値は 2 です エンベデッドプロセッサハードウェアデザイン 95

96 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Enable Access to Memory Management Special Registers]: MFS および MTS 命令を使用したメモリ管理特殊レジスタへのアクセスをイネーブルにします [MINIMAL]: TLBLO TLBHI および TLBX の書き込みのみを可能にします [READ]: TLBLO TLBHI TLBX PID および ZPR の読み出しを追加します [WRITE]: すべてのレジスタの書き込みおよび TLBX の読み出しを可能にします [FULL]: TLBLO TLBHI TLBX PID および ZPR の読み出しを追加します 多くの場合 ソフトウェアにすべての読み出しアクセスを含める必要はありません たとえば Linux のメモリ管理コードでは [WRITE] に設定してエリアを節約できます スタティックメモリ保護を使用する場合は ソフトウェアで TLBSX PID および ZPR を使用する必要がないので [MINIMAL] に設定できます [Number of Memory Protection Zones]: インプリメントするメモリ保護ゾーンの数を指定します 多くの場合 メモリ管理ソフトウェアで使用可能なすべてのゾーンが使用されるわけではありません たとえば Linux のメモリ管理コードでは 2 つのゾーンしか使用されないので インプリメントするゾーンの数を削減してエリアを節約できます [Privileged Instructions]: [Memory Management] を [USERMODE] に設定した場合に使用可能な命令を指定します [FULL PROTECTION] に設定すると プロセス間に完全な保護が適用されます [ALLOW STREAM INSTR] に設定にすると ユーザーモードで AXI4-Stream 命令を使用できるようになります 注意 : パフォーマンスの理由から必要でない限り この設定を [FULL PROTECTION] から変更することはお勧めしません MicroBlaze 設定ウィザード : [Debug] ページ X-Ref Target - Figure 4-12 図 4-12: MicroBlaze 設定ウィザードの [Debug] ページ エンベデッドプロセッサハードウェアデザイン 96

97 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 デバッグオプション [MicroBlaze Debug Module Interface]: [BASIC] に設定すると MicroBlaze への MDM (MicroBlaze Debug Module) インターフェイスがデバッグ用にイネーブルになります このオプションでは Xilinx System Debugger (XSDB) を使用して JTAG (Joint Test Action Group) バウンダリスキャンインターフェイスでプロセッサをデバッグできます [EXTENDED] に設定すると クロストリガー トレース およびプロファイリングなどの MicroBlaze の拡張デバッグ機能がイネーブルになります デバッグが終了したら このオプションを [NONE] に設定して MicroBlaze のサイズを削減できます [Hardware Breakpoints]: 重要 : 次のオプションは C_DEBUG_ENABLED がオンの場合にのみ適用されます このパラメーターの値を大きくすると MicroBlaze の周波数がかなり下がります [Number of PC Breakpoints]: XSDB (Xilinx System Debugger) で設定可能なプログラムカウンター (PC) ハードウェアブレークポイントの数を指定します [Number of Write Address Watchpoints]: XSDB (Xilinx System Debugger) で設定可能な書き込みアドレスのウォッチポイントの数を指定します [Number of Read Address Watchpoints]: XSDB (Xilinx System Debugger) で設定可能な読み出しアドレスのウォッチポイントの数を指定します 推奨 : デバッグにウォッチポイントを使用しない場合は これら 2 つのオプションを 0 に設定することをお勧めします [Performance Monitoring] MicroBlaze では 拡張デバッグ用に次のパフォーマンス監視カウンターが提供されており さまざまなイベントをカウントしたり プログラム実行中のレイテンシを測定したりするのに使用できます [Number of Performance Monitor Event Conters] (C_DEBUG_EVENT_COUNTERS): イベントカウンターの数を設定します [Number of Performance Monitor Latency Counters] (C_DEBUG_LATENCY_COUNTERS): レイテンシカウンターの数を設定します [Performance Monitor Counter Width] (C_DEBUG_COUNTER_WIDTH): カウンター幅を または 64 ビットに設定します デフォルトでは カウンター幅は 32 ビット イベントカウンターは 5 つ レイテンシカウンターは 1 つに設定されます [Trace & Profiling] MicroBlaze の拡張デバッグには エンベデッドトレースバッファーに情報を格納してプログラム実行トレースをイネーブルにするプログラムトレース機能が含まれます [Auto] をクリックして [Manual] に切り替え [External Trace] チェックボックスをオンにすることもできます [Trace Buffer Size] (C_DEBUG_TRACE_SIZE) を使用すると トレースバッファーのサイズを 8 kb 16 kb 32 kb 64 kb または 128 kb に設定できます [NONE] に設定すると プログラムトレースはディスエーブルになります エンベデッドプロセッサハードウェアデザイン 97

98 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード : [Buses] ページ [Local Memory Bus Interfaces]: [Enable Local Memory Bus Instruction Interface]: LMB 命令インターフェイスをイネーブルにします この命令を 99 ページの図 4-13 に示すように設定すると ローカルメモリバス (LMB) 命令インターフェイスが使用できるようになります 典型的な MicroBlaze システムでは このインターフェイスを使用して命令用の高速ローカルメモリが提供されます 通常は LMB バスインターフェイスコントローラーを使用して LMB バスに接続され 共通のブロック RAM にアクセスします [Enable Local Memory Bus Data Interface]: LMB データインターフェイスをイネーブルにします このパラメーターをオンにすると ローカルメモリバス (LMB) データインターフェイスが使用できるようになります 典型的な MicroBlaze システムでは このインターフェイスを使用してデータおよびベクター用の高速ローカルメモリが提供されます 通常は LMB バスインターフェイスコントローラーを使用して LMB バスに接続され 共通のブロック RAM にアクセスします [AXI and ACE Interfaces]: [Select Bus Interface]: [AXI] に設定すると ペリフェラルとキャッシュアクセスの両方に AXI が選択されます [ACE] に設定すると ペリフェラルアクセスには AXI が選択され キャッシュアクセスには ACE (AXI Coherency Extension) が選択され キャッシュコヒーレンシがサポートされます 注記 : ACE エリア最適化を使用できるようにするには ライトバックデータキャッシュ 命令キャッシュストリームまたはビクティム および 32 ビット以外のキャッシュデータ幅を設定しないでください このオプションを設定するには [Cache] ページで命令キャッシュとデータキャッシュの両方に対して [Use Cache for All Memory Accesses] をオンにする必要があります [Enable Peripheral AXI Interface Instruction Interface]: ペリフェラル AXI4-Lite 命令インターフェイスを使用できるようにします 多くの場合 特に命令キャッシュが有効で C_ICACHE_ALWAYS_USED を設定する場合は このインターフェイスは必要ありません [Enable Peripheral AXI Data Interface]: ペリフェラル AXI4 データインターフェイスを使用できるようにします このインターフェイスは 通常 AXI4-Lite を使用してペリフェラル I/O に接続されますが メモリにも接続できます 排他的アクセスをイネーブルにする場合は AXI4 プロトコルが使用されます エンベデッドプロセッサハードウェアデザイン 98

99 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 X-Ref Target - Figure 4-13 [Stream Interfaces]: 図 4-13: MicroBlaze 設定ウィザードの [Buses] ページ [Number of Stream Links]: AXI4-Stream リンクインターフェイスのペアの数を指定します 各ペアには マスターとスレーブインターフェイスが含まれます インターフェイスでは MicroBlaze とハードウェアアクセラレータまたはコプロセッサの間に 一方向のポイントトゥポイント通信チャネルが提供されます これはレイテンシの短いインターフェイスで MicroBlaze レジスタファイルと FPGA ファブリック間のアクセスを提供します [Other Interfaces]: [Enable Trace Bus Interface]: トレースバスインターフェイスを使用できるようにします このインターフェイスは デバッグ 実行統計 およびパフォーマンス解析に有益です 特に このインターフェイスを ChipScope Logic Analyzer (ILA) に接続すると クロックサイクル精度でプログラムの実行をトレースできます [Lockstep Interface]: ロックステップサポートをイネーブルにします ロックステップサポートがイネーブルになると 2 つの MicroBlaze コアでロックステップで同じプログラムを実行し それらの出力を比較してエラーを検出できます [NONE]: ロックステップインターフェイスをディスエーブルにします [LOCKSTEP_MASTER]: Lockstep_Master_Out および Lockstep_Out 出力ポートをイネーブルにします [LOCKSTEP_SLAVE]: Lockstep_Slave_in 入力ポートと Lockstep_Out 出力ポートをイネーブルにし C_LOCSTEP_SLAVE パラメーターを 1 に設定します スレーブプロセッサは CPU として表示され プライベート LMB メモリを持つことができます [LOCKSTEP_HIDDEN_SLAVE]: [LOCKSTEP_SLAVE] と同様に機能しますが スレーブプロセッサは CPU としては表示されません プライベート LMB メモリを使用する場合以外は この設定をお勧めします エンベデッドプロセッサハードウェアデザイン 99

100 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザード : アドバンスモード MicroBlaze 設定ウィザードの [Advanced] ボタンをクリックすると タブ付きインターフェイスを使用するアドバンスモードに切り替わり さまざまな設定オプションに直接アクセスできるようになります X-Ref Target - Figure 4-14 図 4-14: MicroBlaze 設定ウィザードのアドバンスモードの [Interrupt & Reset] タブ アドバンスモードのインターフェイスではオプションがタブに分けられており タブをクリックすることで MicroBlaze 設定ウィザードの各ページにアクセスできます 87 ページの MicroBlaze 設定ウィザード : [General] ページ 90 ページの MicroBlaze 設定ウィザード : [Exception] ページ 92 ページの MicroBlaze 設定ウィザード : [Cache] ページ 95 ページの MicroBlaze 設定ウィザード : [MMU] ページ 96 ページの MicroBlaze 設定ウィザード : [Debug] ページ 98 ページの MicroBlaze 設定ウィザード : [Buses] ページ [Interrupt & Reset] および [PVR] タブは アドバンスモードでのみ表示されます エンベデッドプロセッサハードウェアデザイン 100

101 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザードのアドバンスモードの [Interrupt & Reset] タブ 100 ページの図 4-14 に MicroBlaze 設定ウィザードの [Interrupt & Reset] タブを示します [Interrupt] [Sense Interrupt on Edge vs. Level (Auto)]: MicroBlaze プロセッサが割り込みをエッジで検出するか レベルで検出するかを指定します このチェックボックスをオンにすると C_EDGE_IS_POSITIVE で指定されているエッジでのみ割り込みが検出されます このチェックボックスをオフにすると 割り込みが High になるたびに割り込みがトリガーされます 注記 : 割り込み入力が High の間に割り込みが生成されて処理されると 別の割り込みが生成されます [Sense Interrupt on Rising vs. Falling Edge (Auto)]: C_INTERRUPT_IS_EDGE が 1 に設定されている場合に MicroBlaze プロセッサの割り込みが立ち上がりエッジで検出されるようにするか立ち下がりエッジで検出されるようするかを指定します [Use Interrupt]: MicroBlaze プロセッサの割り込み入力をイネーブルにします [NORMAL] に設定すると 割り込みがイネーブルになります [FAST] に設定すると レイテンシの短い割り込み処理がイネーブルになります [Reset] [Specify MSR Reset Value]: 一部の MSR ビットのリセット値を指定します [ICE] (=0x0020): リセットで命令キャッシュをイネーブルにします [DCE] (=0x0080): リセットでデータキャッシュをイネーブルにします [EIP] (=0x0200): リセットで進行中の例外を設定にします [EE] (=0x0100): リセットで例外をイネーブルにします [BIP] (=0x0008): リセットで進行中のブレークを設定にします [IE] (=0x0002): リセットで割り込みをイネーブルにします ヒント : リセットでキャッシュをイネーブルにすると 外部メモリからすぐに実行を開始できるので LMB メモリの使用を削減したり 必要をなくすために使用できます [Vectors] [Vector Base Address]: MicroBlaze ベクターに使用するベースアドレスを変更します この変更は リセット ユーザーベクター 割り込み ブレーク およびハードウェア割り込みのベクターに影響します リセット 割り込み 例外 ブレークの詳細は MicroBlaze プロセッサリファレンスガイド (UG984) [ 参照 10] を参照してください 通常 ローカルメモリのベースアドレスは 0x ですが このアドレスがほかの目的で使用される場合は このパラメーターを使用してベクターを別のアドレスに移動できます アドレスの下位 7 ビットは 0 である必要があります エンベデッドプロセッサハードウェアデザイン 101

102 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze 設定ウィザードのアドバンスモードの [PVR] タブ 図 4-15 に MicroBlaze 設定ウィザードの [PVR] タブを示します 詳細は MicroBlaze プロセッサリファレンスガイド (UG984) [ 参照 10] を参照してください X-Ref Target - Figure 4-15 [Processor Version Registers] 図 4-15: MicroBlaze 設定ウィザードアドバンスモードの [PVR] ページ [Specifies Processor Version Register]: プロセッサバージョンレジスタ (PVR) を指定します PVR をディスエーブルにするには このパラメーターを [NONE] ( デフォルト ) に設定します 最初の PVR のみをイネーブルにするには [BASIC] に設定します すべての PVR をイネーブルにするには [FULL] に設定します [Specifies USER1 Bits in Processor Version Register]: 最初の PVR の USER1 ビット (24 ~ 31) を指定します このパラメーターは [Specifies Processor Version Register] を [BASIC] または [FULL] に設定している場合にのみ設定可能です [Specifies USER2 Bits in Processor Version Register]: 2 番目の PVR (USER2) の値を指定します このパラメーターは [Specifies Processor Version Register] を [FULL] に設定している場合にのみ設定可能です エンベデッドプロセッサハードウェアデザイン 102

103 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze プロセッサのクロストリガー機能 クロストリガーは DBG_STOP と MB_Halted の 2 つの信号でサポートされます DBG_STOP 入力を 1 にすると MicroBlaze は数命令後に停止します XSDB で MicoBlaze が停止したことが検出され 停止した箇所が示されます この信号は ILA (Integrated Logic Analyzer) のトリガーなどの外部イベントで MicroBlaze プロセッサを停止させるために使用できます ブレークポイントやウォッチポイントに到達した後 XSDB コマンド stop の後 または DBG_STOP 入力がセットされたときなど MicroBlaze プロセッサが停止すると MB_Halted 出力信号は 1 になり XSDB コマンドで MicroBlaze の実行が再開されるとクリアされます 重要 : DBG_STOP および MB_Halted ピンは非表示になっています これらのピンを表示するには MicroBlaze の設定ウィザードの Welcome ページで [Enable Discrete Ports] をオンにする必要があります (103 ページの図 4-16) MB_Halted 信号は ILA (Integrated Logic Analyzer) をトリガーしたり DBG_STOP 入力に接続してマルチプロセッサシステムのほかの MicroBlaze コアを停止するのに使用できます X-Ref Target - Figure 4-16 図 4-16: [Enable Discrete Ports] オプション 拡張デバッグでは クロストリガーは MDM と共に使用するとサポートされます MDM には 接続されたすべてのプロセッサ間のプログラマブルクロストリガーと 外部トリガー入力および出力が含まれます 詳細は MicroBlaze Debug Module (MDM) 製品ガイド (PG115) [ 参照 11] を参照してください 拡張デバッグをイネーブルにするには MicroBlaze 設定ウィザードの [Debug] ページで [MicroBlaze Debug Module Interface] を [EXTENDED] に設定します ( 図 4-17) エンベデッドプロセッサハードウェアデザイン 103

104 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze では 8 個までのクロストリガーアクションを処理できます クロストリガーアクションは デバッグバスを介して接続された対応する MDM クロストリガー出力で生成されます X-Ref Target - Figure 4-17 図 4-17: MicroBlaze の拡張デバッグをイネーブル 拡張デバッグオプションは MicroBlaze プロセッサのブロックオートメーションを実行する際にも設定できます X-Ref Target - Figure 4-18 図 4-18: ブロックオートメーションで拡張デバッグを設定 エンベデッドプロセッサハードウェアデザイン 104

105 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 その後 MicroBlaze Debug Module (MDM) の [Re-customize IP] ダイアログボックスで [Enable Cross Trigger] をオンにします X-Ref Target - Figure 4-19 図 4-19: MDM の [Enable Cross Trigger] チェックボックス エンベデッドプロセッサハードウェアデザイン 105

106 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 最大で 4 つの外部トリガー入力と外部トリガー出力を選択できます オンにすると ブロックデザインがアップデートされて MDM の詳細が表示されます X-Ref Target - Figure 4-20 図 4-20: クロストリガーをイネーブルにした後のブロックデザインの MDM 次に コネクションオートメーションを実行してクロストリガー信号を ILA に接続します X-Ref Target - Figure 4-21 図 4-21: TRIG_IN_0 インターフェイスピンの ILA への接続 [Run Connection Automation] ダイアログボックスに 新しい ILA がインスタンシエートされ MDM の TRIG_IN_0 信号が該当する ILA のピンに接続されることが示されます X-Ref Target - Figure 4-22 図 4-22: [Run Connection Automation] ダイアログボックス コネクションオートメーションをもう一度実行して TRIG_OUT_0 インターフェイスを選択します この段階では [Slave] フィールドに 2 つの選択肢があり 既にインスタンシエートされた ILA を使用するか 新しく ILA をイ エンベデッドプロセッサハードウェアデザイン 106

107 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 ンスタンシエートするかを選択できます この選択によって 新しい ILA がインスタンシエートされるか 既にインスタンシエートされた ILA が再利用されて MDM のクロストリガーピンが接続されます X-Ref Target - Figure 4-23 図 4-23: TRIG_OUT_0 インターフェイスピンの ILA への接続 X-Ref Target - Figure 4-24 図 4-24: ILA にクロストリガーピンを接続した後のブロックデザイン カスタムロジック Vivado IP パッケージャーを使用すると ユーザーおよびサードパーティの IP (Intellectual Property) を Vivado IDE の Vivado IP カタログから使用できるようにすることができます このように準備されたサードパーティ IP は Vivado Design Suite のデザインにインスタンシエートできます Vivado Design Suite の IP パッケージフローを使用して IP を開発すると ザイリンクス IP サードパーティ IP またはカスタマー開発 IP のどれでも Vivado Design Suite で同様に使用できます IP の開発時には IP パッケージャーを使用して IP ファイルと関連データを ZIP ファイルにパッケージ化します この生成された ZIP ファイルを Vivado Design Suite の IP カタログにインストールすると パラメーターを選択して IP をカスタマイズし IP インスタンスを生成できるようになります 推奨 : IP をユーザーに渡す前に IP のパッケージに問題がないことを確認するため 各 IP モジュールで IP ユーザーフローを完全に実行し IP が使用可能な状態であるかどうかを検証することをお勧めします エンベデッドプロセッサハードウェアデザイン 107

108 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 エンベデッド IP カタログ Vivado IP カタログは IP の検索 詳細情報の確認 関連資料の表示を実行可能な統合リポジトリです Vivado IP カタログにサードパーティ IP またはカスタマー IP を追加すると Vivado Design Suite フローからその IP にアクセスできるようになります 図 4-25 に Vivado IDE の IP インテグレーター内の IP カタログを示します X-Ref Target - Figure 4-25 図 4-25: IP インテグレーター内の IP カタログ 接続 MicroBlaze プロセッサを設定したら デザインを構成するその他の IP をインスタンシエートできます IP インテグレーターキャンバスで右クリックして [Add IP] をクリックします IP インテグレーターの 2 つのビルトイン機能 ( ブロックオートメーションおよびコネクションオートメーション ) を使用すると 基本的なマイクロプロセッサシステムを作成し 外部 I/O ポートにポートを接続するプロセスが自動的に実行され IP サブシステムデザインの残りの部分をすばやく完成できます ブロックオートメーション ブロックオートメーションは ZYNQ7 Processing System (PS) または MicroBlaze プロセッサのようなマイクロプロセッサを IP インテグレーターのブロックデザインにインスタンシエートする際に使用できます 1. [Run Block Automation] をクリックすると 単純な MicroBlaze プロセッシングシステムを簡単に作成できます X-Ref Target - Figure 4-26 図 4-26: ブロックオートメーションの実行 エンベデッドプロセッサハードウェアデザイン 108

109 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Run Block Automation] ダイアログボックスでは マイクロプロセッサシステムに必要な基本的な機能に関するオプションを指定できます X-Ref Target - Figure 4-27 図 4-27: [Run Block Automation] ダイアログボックス (MicroBlaze) 2. 必要なオプションを選択し [OK] をクリックします ブロックオートメーションで 次のような MicroBlaze システムが作成されます X-Ref Target - Figure 4-28 図 4-28: ブロックオートメーション実行後の MicroBlaze デザイン エンベデッドプロセッサハードウェアデザイン 109

110 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 コネクションオートメーション IP インテグレーターでキャンバス上にインスタンシエートされた IP の間に可能な接続が検出された場合 コネクションオートメーション機能を使用できます 図 4-29 では GPIO と Uartlite の 2 つの IP が MicroBlaze と共にインスタンシエートされています X-Ref Target - Figure 4-29 図 4-29: IP インテグレーターのコネクションオートメーションの使用 エンベデッドプロセッサハードウェアデザイン 110

111 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 [Run Connection Automation] リンクをクリックすると 次のダイアログボックスが開きます X-Ref Target - Figure 4-30 図 4-30: [Run Connection Automation] ダイアログボックス IP インテグレーターでは 次のオブジェクトの接続が検出されます Processor System Reset IP の ext_reset_in ピンはリセットソース ( 内部リセットソースまたは外部入力ポートのいずれか ) に接続する必要があります Clocking Wizard の CLK_IN_1_D ピンは 内部クロックソースまたは外部入力ポートのいずれかに接続する必要があります AXI GPIO の s_axi インターフェイスは マスター AXI インターフェイスに接続する必要があります AXI GPIO コアの gpio インターフェイスは 外部 I/O に接続する必要があります Uartlite IP の s_axi インターフェイスは マスター AXI インターフェイスに接続する必要があります Uartlite IP の uart インターフェイスは 外部 I/O に接続する必要があります エンベデッドプロセッサハードウェアデザイン 111

112 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 これらの設定可能なオプションに対してコネクションオートメーションを実行すると ブロックデザインは図 4-31 のようになります X-Ref Target - Figure 4-31 図 4-31: サンプル MicroBlaze デザインでのコネクションオートメーションの実行 IP インテグレーターでのボードオートメーション 詳細は 43 ページの IP インテグレーターでのプラットフォームボードフロー を参照してください IP インテグレーターデザインでの手動接続 詳細は 40 ページの 手動接続 を参照してください I/O ポートの手動作成と接続 詳細は 41 ページの I/O ポートの手動作成と接続 を参照してください [Address Editor] ウィンドウでのメモリマップ 詳細は 44 ページの [Address Editor] ウィンドウでのメモリマップ を参照してください デザインルールチェックの実行 詳細は 44 ページの デザインルールチェックの実行 を参照してください ブロックデザインの最上位デザインへの統合 詳細は 44 ページの ブロックデザインの最上位デザインへの統合 を参照してください エンベデッドプロセッサハードウェアデザイン 112

113 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 MicroBlaze プロセッサの制約 IP インテグレーターでは 出力ファイルの生成中にツール内で生成された IP の制約が作成されますが カスタム IP または上位コードの制約はユーザーが生成する必要があります 制約セットはデザイン制約を含む XDC ファイルのセットで デザインに適用できます デザイン制約には 2 種類あります 物理制約 : ピン配置 ブロック RAM LUT フリップフロップなどのセルの相対 / 絶対配置 およびデバイスコンフィギュレーション設定を定義します タイミング制約 : 業界標準の SDC で記述し デザインの周波数要件を定義します タイミング制約を設定しない場合 デザインがワイヤの長さおよび配線の密集度にのみ基づいて最適化されます 注記 : タイミング制約を設定しない場合 Vivado インプリメンテーションでデザインのパフォーマンスを評価したり 向上するための処理は実行されません 重要 : Vivado Design Suite では UCF フォーマットはサポートされません UCF 制約を XDC コマンドに移行する方法は ISE から Vivado Design Suite への移行ガイド (UG911) [ 参照 12] を参照してください 制約セットの使用方法には多くのオプションがあり 次を含めることができます 1 つの制約セットに複数の制約ファイルを含める 物理制約ファイルおよびタイミング制約ファイルを別の制約セットに分ける マスター制約ファイルを使用し デザインの変更は新しい制約ファイルに保存 1 つのプロジェクトに複数の制約セットを作成し 異なるインプリメンテーション run で異なる制約セットをアクティブにして さまざまな設定をテスト 合成およびインプリメンテーション用に別々の制約セットを使用する デザイン要件が満たされるよう 合成 シミュレーション インプリメンテーションで異なる制約ファイルを適用する 制約を機能に応じて別の制約ファイルに分けておくと 制約ストラテジ全体がわかりやすくなり タイミングおよびインプリメンテーションを変更しやすくなります デザイン制約を複数の制約セットを使用して整理すると 次が可能になります 同じプロジェクトで異なるザイリンクス FPGA をターゲットとして設定できます 異なるターゲットパーツに対しては 物理制約およびタイミング制約も異なるものにする必要がある場合があります さまざまな条件でデザインを実行できます 制約セットを使用して 異なるフロアプランを適用したり デザイン制約を厳しくしたりできます 制約の変更を管理しやくすなります マスター制約の代わりに 別の制約ファイルに保存した制約を使用できます ヒント : タイミング制約を検証するには 合成済みデザインに report_timing_summary コマンドを使用するのがよい方法です 問題のある制約は インプリメンテーションの前に修正してください 配置配線に影響する制約の定義および制約での作業の詳細は Vivado Design Suite ユーザーガイド : 制約の使用 (UG903) [ 参照 13] を参照してください エンベデッドプロセッサハードウェアデザイン 113

114 第 4 章 : エンベデッドデザインでの MicroBlaze プロセッサの使用 合成 インプリメンテーション ビットストリーム生成の実行 デザインを完成させて制約を正しく設定したら 合成およびインプリメンテーションを実行し ビットストリームを生成できます ハードウェアのソフトウェア開発キット (SDK) へのエクスポート 詳細は 47 ページの ソフトウェア開発キット (SDK) の使用 を参照してください 通常は デザインのビットストリームを生成すると ハードウェア定義を SDK にエクスポートできるようになります これにより デザインに使用される IP を解釈するために SDK で必要な XML ファイルと プロセッサの視点からのメモリマップがエクスポートされます ビットストリームを生成してデザインをエクスポートすると デバイスにダウンロードできるようになり ソフトウェアをプロセッサ上で実行できるようになります ヒント : ビットストリームの作成前にソフトウェア開発を開始する場合は デザイン生成後にハードウェア定義を SDK にエクスポートできます 1. [File] [Export] [Export Hardware] をクリックします [Export Hardware for SDK] ダイアログボックスが開き エクスポートオプションを選択できます 2. ハードウェアをエクスポートしたら [File] [Launch SDK] をクリックして SDK を起動します X-Ref Target - Figure 4-32 図 4-32: [Export Hardware] ダイアログボックス ハードウェア定義を SDK にエクスポートしてから SDK を起動すると SDK でソフトウェアアプリケーションの記述を開始できます SDK から さらにデバッグおよびソフトウェアを実行できます ソフトウェアの ELF ファイルを Vivado IDE プロジェクトにインポートし戻し FPGA ビットストリームに統合すると さらに詳細なダウンロードおよびテストを実行できます エンベデッドプロセッサハードウェアデザイン 114

115 第 5 章 MIG コアを含むデザイン 概要 ザイリンクス FPGA メモリ IP は UltraScale アーキテクチャおよび 7 シリーズ FPGA ユーザーデザインを AMBA AXI4 (Advanced Extensible Interface) スレーブインターフェイスを使用して DDR DDR3 または DDR4 SDRAM QDR II+ SRAM RLDRAM 3 デバイスとインターフェイスさせるための 設計済みコントローラーと物理レイヤー (PHY) を組み合わせたものです 詳細は UltraScale アーキテクチャ FPGA メモリ IP LogiCORE IP 製品ガイド (PG150) [ 参照 16] または Zynq-7000 AP SoC および 7 シリーズデバイスメモリインターフェイスソリューションユーザーガイド (UG586) [ 参照 15] を参照してください この章では Vivado IP インテグレーターでの LogiCORE IP DDR4 DDR3 または DDR2 SDRAM メモリインターフェイスの使用 カスタマイズ シミュレーションについて説明します コアのアーキテクチャと カスタマイズおよびインターフェイス方法を詳しく説明します ヒント : Kintex -7 ボード KC705 を使用して説明されていますが UltraScale デバイスおよび KCU105 ボードでの違いについてもその都度説明されています これらのガイドラインは カスタムボードのザイリンクスデバイスにも適用できます メモリ IP の追加 メモリ IP を追加するには IP インテグレーターのデザインキャンバスで右クリックして [Add IP] をクリックします 検索可能な IP カタログが開きます 検索フィルターに IP 名の最初の何文字かを入力すると ( この例では MIG ) それに一致する IP モジュールのみが表示されます または キャンバス左側の [Add IP] ツールバーボタン をクリックします エンベデッドプロセッサハードウェアデザイン 115

116 第 5 章 : MIG コアを含むデザイン Memory Interface Generator IP をダブルクリックし ブロックデザインに追加します X-Ref Target - Figure 5-1 図 5-1: IP カタログで検索して MIG IP を追加 IP インテグレーターのブロックデザインに MIG IP コアが配置されます MIG の設定を変更するには ブロックを右クリックして [Customize Block] をクリックします MIG IP ブロックをダブルクリックしても [Xilinx Memory Interface Generator] ダイアログボックスを開くことができます 図 5-2 では 左上に MIG 7 Series IP コア 右下に UltraScale デバイスの DDR4 MIG を示しています IP カタログから使用可能な MIG IP は プロジェクトに選択したターゲットパーツまたはプラットフォームボードによって異なります UltraScale デバイスでは DDR3 と DDR4 メモリコントローラーに個別の IP コアがあります X-Ref Target - Figure 5-2 図 5-2: ブロックデザインに MIG IP コアをインスタンシエート この例では KC705 ボードをターゲットにしています 117 ページの図 5-3 に示すように プラットフォームフローの [Board] ウィンドウが表示され デザインとインターフェイスさせるコンポーネントを選択できます [Board] ウィンドウから DDR3 SDRAM コンポーネントをブロックデザインキャンバスにドラッグアンドドロップします エンベデッドプロセッサハードウェアデザイン 116

117 第 5 章 : MIG コアを含むデザイン 注記 : UltraScale KCU105 ボードでは DDR4 SDRAM コンポーネントを使用することも可能です X-Ref Target - Figure 5-3 図 5-3: プラットフォームボードフローを使用した MIG コアのインスタンシエート ターゲットプラットフォームボードのメモリコンポーネントにメモリコントローラーを接続するため 次の図に示すように Vivado IP インテグレーターで MIG IIP の SYS_CLK および DDR インターフェイスが外部インターフェイスポートに接続されます X-Ref Target - Figure 5-4 図 5-4: SYS_CLK および DDR3 インターフェイスのボードへの接続 図 5-4: エンベデッドプロセッサハードウェアデザイン 117

118 第 5 章 : MIG コアを含むデザイン ヒント : [Board] ウィンドウから DDR SDRAM コンポーネントを空のブロックデザインにドラッグアンドドロップして開始することもできます この場合 Vivado IP インテグレーターによりキャンバスに MIG IP がインスタンシエートされ MIG の SYS_CLK および DDR インターフェイスがプラットフォームボードのコンポーネントに接続されます 図 5-4 に示すように デザインキャンバス上部にある [Run Connection Automation] リンクをクリックします これにより MIG IP がプラットフォームボードのシステム FFPGA リセットに接続されます X-Ref Target - Figure 5-5 図 5-5: MIG IP のシステム FPGA リセットへの接続 注記 : KCU105 ボードの場合 [Run Connection Automation] ダイアログボックスに MIG IP の CO_SYS_CLK および sys_rst インターフェイスが含まれます エンベデッドプロセッサハードウェアデザイン 118

119 第 5 章 : MIG コアを含むデザイン ブロックオートメーションを使用した接続 [Board] ウィンドウから DDR SDRAM コンポーネントをドラッグアンドドロップする代わりに IP インテグレーターのブロックオートメーション機能を使用し MIG を設定してその SYS_CLK および DDR3 インターフェイスをボードインターフェイスに接続できます MIG コアから K705 ボード全体にクロックが供給されるので クロックコントローラーを追加する前に [Run Block Automation] リンクをクリックして MIG コアのブロックオートメーションを実行する必要があります X-Ref Target - Figure 5-6 図 5-6: MIG コアのブロックオートメーションの実行 [Run Block Automation] ダイアログボックスが開きます X-Ref Target - Figure 5-7 図 5-7: [Run Block Automation] ダイアログボックス [Run Block Automation] ダイアログボックスに 使用可能な IP が表示されます この例では ブロックデザインには先ほど追加した MIG IP のみが含まれています MIG が選択されていることを確認し [OK] をクリックします MIG IP の SYS_CLK および DDR インターフェイスがプラットフォームボードの DDR メモリコンポーネントに接続されます MIG コアは 400 MHz 動作用に設定され KC705 ボードへのインターフェイス用に正しいピンが選択されます エンベデッドプロセッサハードウェアデザイン 119

120 第 5 章 : MIG コアを含むデザイン X-Ref Target - Figure 5-8 Clocking Wizard の追加 図 5-8: ブロックオートメーション実行後のブロックデザインの MIG コア デザインで MIG コアで生成されるクロック以外にクロックが必要な場合は ブロックデザインに Clocking Wizard IP を追加する必要があります [Add IP] コマンドをクリックし 検索フィールドに Clock と入力して Clocking Wizard IP を選択してダブルクリックします X-Ref Target - Figure 5-9 図 5-9: Clocking Wizard エンベデッドプロセッサハードウェアデザイン 120

121 第 5 章 : MIG コアを含むデザイン 次の手順に従って Clocking Wizard を MIG コアに接続します 1. 図 5-10 に示すように MIG IP の ui_clk または ui_addn_clk_0 出力とその他の生成されたクロックを Clocking Wizard の clk_in1 入力に接続します ヒント : 必要な周波数に適切な出力クロックピンを使用してください UltraScale MIG IP の場合は c0_ddr4_ui_clk ピンを Clocking Wizard に接続します X-Ref Target - Figure 5-10 図 5-10: ui_clk を clk_in1 に接続 2. 次の図に示すように MIG コアの ui_clk_sync_rst ピンを Clocking Wizard の reset ピンに接続します UltraScale MIG IP の場合は c0_ddr4_ui_clk_sync_rst ピンを Clocking Wizard に接続します X-Ref Target - Figure 5-11 図 5-11: ui_clk_sync_rst をリセットポートに接続 3. Clock Wizard IP をダブルクリックし デザインに必要なクロックすべてを生成するように設定します エンベデッドプロセッサハードウェアデザイン 121

122 第 5 章 : MIG コアを含むデザイン AXI マスターの追加 MIG デザインを完成するには Zynq や MicroBlaze エンベデッドプロセッサなどの AXI マスターまたは外部プロセッサが必要です 次の手順に従って ブロックデザインに MicroBlaze プロセッサをインスタンシエートします 1. [Add IP] コマンドをクリックし 検索フィールドに Micro と入力して MicroBlaze プロセッサを選択し ダブルクリックしてデザインに追加します 2. 基本的な MicroBlaze システムを構築するため [Run Block Automation] をクリックし ダイアログボックスで次の図に示すように設定します [Local Memory]: ローカルメモリのサイズを選択します [Local Memory ECC]: 必要に応じて ECC をイネーブルにします [Cache Configuration]: キャッシュメモリのサイズを選択します [Debug Module]: デバッグモジュールのタイプを指定します [Peripheral AXI Interconnect]: このオプションは必ず [Enabled] に設定します [Interrupt Controller]: 設定はオプションです [Clock Connection]: クロックソースを選択します X-Ref Target - Figure [OK] をクリックします 図 5-12: [Run Block Automation] ダイアログボックスの設定 エンベデッドプロセッサハードウェアデザイン 122

123 第 5 章 : MIG コアを含むデザイン [Run Block Automation] を実行すると MicroBlaze プロセッサのサポートに必要な IP がブロックデザインに追加され 接続されます ブロックデザインは 図 5-13 のようになるはずですが MIG コアは MicroBlaze プロセッサにはまだ接続されていません X-Ref Target - Figure 5-13 図 5-13: ブロックオートメーション後のブロックデザイン (MicroBlaze) 4. デザインキャンバス上部にある [Run Connection Automation] をクリックして MIG コアを MicroBlaze プロセッサに接続します 次のような [Run Connection Automation] ダイアログボックスが開きます X-Ref Target - Figure 5-14 図 5-14: MIG を MicroBlaze に接続するための [Run Connection Automation] ダイアログボックス 5. mig_7series_0 の S_AXI インターフェイスを選択します 注記 : UltraScale MIG IP の場合は mig_0 の C0_DDR4_S_AXI インターフェイスを選択します 6. [Master] のドロップダウンリストから [/microblaze_0 (Cached)] を選択します 7. [OK] をクリックします エンベデッドプロセッサハードウェアデザイン 123

124 第 5 章 : MIG コアを含むデザイン AXI Interconnect がインスタンシエートされ MIG コアと MicroBlaze プロセッサが接続されます X-Ref Target - Figure 5-15 図 5-15: MIG と MicroBlaze の接続 この後 外部リセットソースに接続したり Concat IP を介して割り込みソースを MicroBlaze プロセッサに接続するなど 残りの接続を完了させます メモリマップの作成 このデザインのアドレスマップを生成するには [Address Editor] ウィンドウをクリックします メモリマップは自動的に作成され デザインに追加されます アドレスは [Offset Address] および [Range] 列に値を入力して手動で設定することもできます 詳細は Vivado Design Suite ユーザーガイド : IP インテグレーターを使用した IP サブシステムの設計 (UG994) [ 参照 5] のこのセクションを参照してください X-Ref Target - Figure 5-16 図 5-16: [Address Editor] ウィンドウ ヒント : [Address Editor] ウィンドウは ブロックデザインにバスマスターとして機能する IP ブロック (MicroBlaze プロセッサなど ) が含まれている場合にのみ表示されます デザインルールチェックの実行 Vivado IP インテグレーターでは デザインを作成する際にリアルタイムで基本的なデザインルールチェック (DRC) が実行されます ただし デザイン作成中に問題が発生することがあります たとえば クロックピンの周波数が正しく設定されていないなどです 包括的なデザインチェックを実行するには [Validate Design] ツールバーボタンをクリックします デザインに警告およびエラーがない場合は 検証で問題が検出されなかったことを示すダイアログボックスが表示されます エンベデッドプロセッサハードウェアデザイン 124

125 第 5 章 : MIG コアを含むデザイン デザインのインプリメンテーション これでデザインをインプリメントし ビットストリームを生成して SDK でソフトウェアアプリケーションを作成する準備ができました エンベデッドプロセッサハードウェアデザイン 125

126 第 6 章 IP インテグレーターのリセットおよびクロックトポロジ 概要 IP インテグレーターを使用してターゲットハードウェアで問題なく動作するデザインを作成するには リセットおよびクロック供給の注意事項を理解しておく必要があります この章では システムレベルでのクロックおよびリセットの接続について説明します Vivado IP インテグレーターでは ザイリンクスプラットフォームボードフローを使用し 信号インターフェイスを介してデザイン内の IP をボードコンポーネントに自動的に接続できます また すべてを手動で接続することもできます この章で示す例および全体的なフローにはプラットフォームボードフローを使用しますが 注意事項はどのブロックデザインにも該当します Memory Interface Generator (MIG) コアを使用したデザインの場合 IP コアにクロックソースが含まれているので ボードオシレーターからのプライマリクロックは MIG コアに直接接続されている必要があります 詳細は 第 5 章 MIG コアを含むデザイン を参照してください MIG コアでは 5 つまでのクロックを追加で生成でき (UltraScale デバイス用の MIG では 4 つのみ ) これらのクロックは必要に応じてデザインのリセットに使用できます MIG コアを含むデザインの場合 プライマリオンボードクロックがメモリコントローラーに接続されるようにし 残りのデザインには追加のクロックソースとしてユーザークロック (ui_clock または ui_addn_clk_x) を使用します プラットフォームボードフローを使用する IP インテグレーターデザインでは 特定の IP (MIG や Clocking Wizard など ) でボードレベルのクロック設定がサポートされます 残りのシステムには その IP からクロックを派生させることができます 同様に リセット信号の駆動には 特定のリセット IP (proc_sys_reset など ) でボードレベルのリセットがサポートされます 外部リセットを必要とするその他の IP を使用することはできますが プラットフォームボードフローでは現在のところサポートされていません 次のセクションでは さまざまなデザインタイプのリセットトポロジについて説明します エンベデッドプロセッサハードウェアデザイン 126

127 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ MIG コアを含まない MicroBlaze デザイン MIG コアを含まない MicroBlaze プロセッサを使用したデザインでは Clocking Wizard IP をインスタンシエートして必要なクロックを生成できます プラットフォームボードフローでは 接続を次のように設定できます 1. デザインに MicroBlaze プロセッサをインスタンシエートした後 MicroBlaze のブロックオートメーションを実行します これにより MicroBlaze サブシステムが作成されます ( 図 6-1) X-Ref Target - Figure 6-1 図 6-1: MicroBlaze のブロックオートメーションの実行 2. [Run Block Automation] ダイアログボックスの [Clock Connection] で [New Clocking Wizard] を選択して Clocking Wizard IP をインスタンシエートするようにし [OK] をクリックします X-Ref Target - Figure 6-2 図 6-2: [Run Block Automation] ダイアログボックス (MicroBlaze) エンベデッドプロセッサハードウェアデザイン 127

128 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ ブロックオートメーションを実行すると Processor System Reset IP もインスタンシエートされ デザインのさまざまなブロックに接続されます IP インテグレーターキャンバスは 図 6-3 のようになります X-Ref Target - Figure 6-3 図 6-3: ブロックオートメーション実行後のデザイン 3. [Run Connection Automation] をクリックして [/clk_wiz_1/clk_in1_d] を選択し ボード定義に従ってオンボードクロックを Clocking Wizard IP の入力に接続します 注記 : Clocking Wizard をカスタマイズして デザインに必要なさまざまなクロックを生成できます X-Ref Target - Figure 6-4 図 6-4: Clocking Wizard のコネクションオートメーションの実行 エンベデッドプロセッサハードウェアデザイン 128

129 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 4. [Run Connection Automation] ダイアログボックスの [Select Board Part Interface] で ターゲットボードに対応するボードインターフェイスを選択する場合は [sys_diff_clock] を選択し 異なる入力クロックソースを Clocking Wizard IP に接続する場合は [Custom] を選択して [OK] をクリックします X-Ref Target - Figure 6-5 図 6-5: オンボード sys_diff_clock を Clocking Wizard の CLK_IN1_D ピンに接続 IP インテグレーターのキャンバス上に sys_diff_clock 入力ポートが作成され Clocking Wizard の CLK_IN1_D 入力に接続されます X-Ref Target - Figure 6-6 図 6-6: Clocking Wizard への入力クロックソースとして sys_diff_clock 入力を接続 5. Clocking Wizard のリセットピンには ターゲットボードの専用リセットインターフェイスまたはカスタムリセット入力ソースを選択します X-Ref Target - Figure 6-7 図 6-7: オンボードリセットの接続 注記 : 上記の手順 4 および 5 は [Board] ウィンドウの [Clock Sources] フォルダーの下の [System Differential Clock] および [Reset] フォルダーの下の [FPGA Reset] をドラッグアンドドロップしても実行できます エンベデッドプロセッサハードウェアデザイン 129

130 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 6. Processor System Reset ブロックの ext_reset_in ピンには 上記の手順の Clocking Wizard に選択したのと同じリセットソースまたはカスタムリセットソースを選択します 選択して [OK] をクリックすると IP インテグレーターのキャンバスは図 6-8 のようになります X-Ref Target - Figure 6-8 図 6-8: Proc Sys Reset IP に接続されたオンボードリセット 注意 : プラットフォームボードフローを使用しない場合 Clocking Wizard の locked 出力が Processor System Reset の dcm_locked 入力に接続されるようにしてください MIG コアを含む MicroBlaze デザイン 推奨 : 概要で触れたように MIG IP はクロックソースなので オンボードクロックを直接 MIG コアに接続することをお勧めします MIG コアには ユーザークロック (ui_clock) が含まれ 5 つまで (UltraScale MIG の場合は 4 つまで ) のクロックを残りのデザインに使用できます この接続は次のように設定できます 1. MIG IP を含むデザインでプラットフォームボードフローオートメーションを使用する場合は MIG IP を追加 ( または [Board] ウィンドウから ddr3_sdram をドラッグアンドドロップすることにより MIG をインスタンシエートしてボード用にそれを設定 ) してから ブロックオートメーションを実行することをお勧めします これにより オンボードクロックが MIG コアに接続されます エンベデッドプロセッサハードウェアデザイン 130

131 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ この後 MIG をカスタマイズして 必要に応じて追加でクロックを生成できます X-Ref Target - Figure 6-9 図 6-9: MIG コアのブロックオートメーションの実行 2. [Run Connection Automation] ダイアログボックスに ddr3_sdram インターフェイスが使用可能であることが示されます [OK] をクリックします X-Ref Target - Figure 6-10 図 6-10: MIG コアのブロックオートメーションの実行 図 6-11 に示すように インターフェイスポートが MIG に接続されます X-Ref Target - Figure 6-11 図 6-11: ブロックオートメーションにより ddr3_sdram を作成 エンベデッドプロセッサハードウェアデザイン 131

132 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 3. MicroBlaze プロセッサをデザインに追加し [Run Block Automation] を実行します X-Ref Target - Figure 6-12 図 6-12: MicroBlaze のインスタンシエーションおよびブロックオートメーション 4. [Run Block Automation] ダイアログボックスの [Clock Connection] で MIG の ui_clk (/mig_7series_0/ui_clk または mig_7series/u_addn_clk_0) を MicroBlaze プロセッサのクロックソースとして選択し [OK] をクリックします ヒント : デフォルトでは [mig_7series_0/ui_addn_clk_0] が選択されています X-Ref Target - Figure 6-13 図 6-13: MicroBlaze プロセッサの [Run Block Automation] のオプション エンベデッドプロセッサハードウェアデザイン 132

133 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ MicroBlaze サブシステムが作成され ui_addn_clk_0 が入力ソースクロックとしてサブシステムに接続されます ( 図 6-14 でハイライトされているネット ) X-Ref Target - Figure 6-14 図 6-14: MIG コアからの出力クロックを接続してデザインにクロックを供給 5. さらに次を接続します a. [Connection Automation] をクリックし [/mig_7series/s_axi] を選択して MIG を MicroBlaze に接続します b. [Run Connection Automation] ダイアログボックスで S_AXI インターフェイスの [Master] に [/microblaze_0(cached)] を選択します X-Ref Target - Figure 6-15 図 6-15: [Run Connection Automation] ダイアログボックス c. オンボードリセットを MIG IP の sys_rst 入力に接続します d. rst_mig_7_series_0_100m の ext_reset_in (Processor System Reset ブロック ) をリセット (FPGA リセット ) に接続します e. [OK] をクリックします エンベデッドプロセッサハードウェアデザイン 133

134 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 図 6-16 に 設計アシスタンスを使用して MicroBlaze と MIG の接続が完了した状態を示します X-Ref Target - Figure 6-16 図 6-16: リセットピンと mmcp_locked ピンの接続 エンベデッドプロセッサハードウェアデザイン 134

135 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ PL ロジックを含まない Zynq デザイン プログラマブルロジック (PL) を含まない Zynq デザインには すべてのクロックが ZYNQ7 Processing System IP に含まれます 次の手順を使用して PL を含まない Zynq デザインを追加します 1. ZYNQ7 Processing System IP を追加し [Run Block Automation] をクリックして [/processing_system7_0] を選択します X-Ref Target - Figure 6-17 図 6-17: Zynq のブロックオートメーションの実行 2. [Run Block Automation] ダイアログボックスに FIXED_IO および DDR インターフェイスが外部ポートに接続されることが示されます 3. [OK] をクリックします X-Ref Target - Figure 6-18 図 6-18: ZYNQ7 Processing System の [Run Block Automation] ダイアログボックス エンベデッドプロセッサハードウェアデザイン 135

136 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 4. ZYNQ7 Processing System ブロックをダブルクリックして IP を再カスタマイズします 5. [Re-Customize_IP] ダイアログボックスの [Clock Configuration] ページでクロックを設定します X-Ref Target - Figure 6-19 図 6-19: ZYNQ7 Processing System の [Clock Configuration] ページ エンベデッドプロセッサハードウェアデザイン 136

137 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ PL ロジックを含む Zynq デザイン 推奨 : PL ファブリックにカスタムロジックを含む Zynq-7000 プロセッサデザインで MIG IP が含まれない場合 デザインの PL 部分のクロックとリセットは PS から供給することをお勧めします クロックソースには PL ファブリッククロック (FCLK_CLK0 FCLK_CLK1 FCLK_CLK2 FCLK_CLK3) のいずれでも使用できます これらのクロックのそれぞれに関連するリセット (FCLK_RESET0_N FCLK_RESET1_N FCLK_RESET2_N FCLK_RESET3_N) を PL のリセットに使用できます 次の手順を使用して PL を含む Zynq-7000 デザインを追加します 1. ZYNQ7 Processing System IP を追加し [Run Block Automation] をクリックして [/processing_system7_0] を選択します X-Ref Target - Figure 6-20 図 6-20: ZYNQ7 プロセッシングシステムのブロックオートメーションの実行 [Run Block Automation] ダイアログボックスに FIXED_IO および DDR インターフェイスが外部ポートに接続されることが示されます エンベデッドプロセッサハードウェアデザイン 137

138 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 2. [OK] をクリックします X-Ref Target - Figure 6-21 図 6-21: ZYNQ7 Processing System の [Run Block Automation] ダイアログボックス 3. ZYNQ7 Processing System ブロックをダブルクリックして IP を再カスタマイズします X-Ref Target - Figure 6-22 図 6-22: ZYNQ7 プロセッシングシステムの再カスタマイズ エンベデッドプロセッサハードウェアデザイン 138

139 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 4. [Re-customize IP] ダイアログボックスの Page Navigator で [Clock Configuration] をクリックし [PL Fabric Clocks] を展開します X-Ref Target - Figure 6-23 図 6-23: ファブリッククロックの周波数の指定 5. Page Navigator で [PS-PL Configuration] をクリックし [General] を展開します エンベデッドプロセッサハードウェアデザイン 139

140 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 6. [Enable Clock Resets] を展開し PL ファブリックに適切なリセットを選択します X-Ref Target - Figure 6-24 図 6-24: PL ファブリックへのクロックリセットの指定 7. PL ファブリックに AXI GPIO などの IP をインスタンシエートし [Run Connection Automation] をクリックします [Run Connection Automation] ダイアログボックスに GPIO の S_AXI ポートが ZYNQ7 Processing System マスターインターフェイス M_AXI_GP0 に接続されることが示されます 8. [OK] をクリックします X-Ref Target - Figure 6-25 図 6-25: GPIO を接続する [Run Connection Automation] ダイアログボックス エンベデッドプロセッサハードウェアデザイン 140

141 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ IP インテグレーターデザインのクロックおよびリセットは 図 6-26 に示すようになります X-Ref Target - Figure 6-26 図 6-26: ZYNQ7 Processing System IP からの出力クロックを使用してデザインにクロックを供給 PL ロジックに MIG コアを含む Zynq デザイン 推奨 : PL に MIG コアを含む Zynq デザインでは MIG コアへの入力クロックに PS ファブリッククロックではなく 外部クロックソースを使用することを推奨します オンボードオシレーターからの外部クロックの方が PS からのクロックと比べてジッターが少ないからです PS ファブリッククロックは 必要に応じて PL デザインのほかの部分に使用できます 1. MIG IP を追加し デザイン要件に従って設定します 2. ブロックデザインの SYS_CLK を右クリックして [Create Interface Port] をクリックし 入力ソースを MIG コアの SYS_CLK 入力に接続します 3. [Create Interface Port] ダイアログボックスで図 6-27 のようにオプションを指定します エンベデッドプロセッサハードウェアデザイン 141

142 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ 4. [OK] をクリックします X-Ref Target - Figure 6-27 図 6-27: MIG コアへのオンボードクロックの接続 5. デザインで MicroBlaze プロセッサを使用する場合は 追加してブロックオートメーションを実行します 6. この場合 クロック接続には MIG の ui_clk を選択します [Run Block Automation] ダイアログボックスが開きます 7. [Clock Connection] で [/mig_7series_0/ui_clk] または [/mig_7_series_0/ui_addn_clk_0] を入力クロックとして指定します X-Ref Target - Figure 6-28 図 6-28: MicroBlaze オプションの指定 ヒント : デフォルトでは [mig_7series_0/ui_addn_clk_0 (100 MHz)] が選択されています 8. [OK] をクリックします エンベデッドプロセッサハードウェアデザイン 142

143 第 6 章 : IP インテグレーターのリセットおよびクロックトポロジ ブロックデザインは 図 6-29 のようになります X-Ref Target - Figure 6-29 図 6-29: ブロックオートメーション実行後のブロックデザイン (MicroBlaze) 9. MIG の sys_rst ピンを右クリックして [Make External] をクリックし 外部リセットソースに接続します X-Ref Target - Figure 6-30 図 6-30: 完成したブロックデザイン MIG と Clocking Wizard を含むデザイン MIG コアで生成されない特定のクロック周波数を必要とするデザインでは Clocking Wizard IP をインスタンシエートし Clocking Wizard のクロック入力として MIG IP の ui_clock 出力を使用します 次も接続する必要があります 1. MIG IP に加えて オンボードリセットを Clocking Wizard のリセット入力に接続します 2. MIG の mmcm_locked ピンと Clocking Wizard の locked ピンを AND 演算に設定した Utility Vector Logic IP に接続します Utility Vector Logic の出力を Processor System Reset の dcm_locked 入力に接続します エンベデッドプロセッサハードウェアデザイン 143