コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term...

39
XAPP1282 (v1.0) 2016 9 27 1 japan .xilinx.com この資料は表記のバージ ョ ンの英語版を翻訳し たもので、 内容に相違が生じ る場合には原文を優先し ます。 資料によっては英語版の更新に対応していないものがあります。 日本語版は参考用 と し てご使用の上、 最新情報につき ま し ては、 必ず最新英語版を ご参照 く だ さ い。 i 概要 パラレル NOR フラッシュ メ モ リ は、 UltraScale™ FPGA でよく使用されるコンフィギュレーション ソ リ ューシ ョ ンです。 コ ン フ ィ ギ ュ レーシ ョ ン後に不揮発性ユーザー データを格納したり、 コンフィギュレーション イメージをリモートから アップデート したりする場合、 このソ リ ューションはさらに有用です。 このアプリケーション ノ ー ト では、 VCU108 価ボードを使用して、 コンフィギュレーション後に Virtex® UltraScale FPGA からパラレル NOR フラッシュ メモリにアク セスする方法を紹介します。 開発環境には Vivado® Design Suite 2016.1 を使用します。 このアプリケーション ノートの は、ザイリンクスのウェブサイトからダウンロードでき ます。 ®デザイン フ ァ イ ルの詳細は、 「リファレンス デザイン」 を参照してください。 はじめに このアプリケーション ノートのリファレンス デザインは、 MicroBlaze® プロセッサ コアを使用して AXI 外部 メ モ リ コン ト ローラー (AXI EMC) コアと STARTUPE3 プリ ミティブに接続し、 コンフィギュレーション後に専用 BPI コンフィギュ レーシ ョ ン インターフェイス経由で評価ボード上のパラレル NOR フラッシュ メモリに対して読み出し /書き込みアクセ スを実行します。 1 に、 コンフィギュレーション後のリファレンス デザインの動作を示します。 アプリケーション ノート : UltraScale FPGA XAPP1282 (v1.0) 2016 9 27 コンフィギュレーション後に UltraScale FPGA から STARTUPE3 を使用 してパラレル NOR フラッシュ メモリに アクセスする方法 著者: Steven HowellShashikant JadhavStephanie Tapp X-Ref Target - Figure 1 1: コンフィギュレーション後のリファレンスデザインのアクセス フロー Wally 0x00000000 0x01000000

Transcript of コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term...

Page 1: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

XAPP1282 (v1.0) 2016 年 9 月 27 日  1japan.xilinx.com

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

i

概要

パラレル NOR フラ ッシュ メモ リは、 UltraScale™ FPGA でよ く使用されるコンフ ィギュレーシ ョ ン ソ リ ューシ ョ ンです。コンフ ィギュレーシ ョ ン後に不揮発性ユーザー データを格納したり、 コンフ ィギュレーシ ョ ン イ メージを リモートからアップデート した りする場合、 このソ リ ューシ ョ ンはさ らに有用です。 このアプリ ケーシ ョ ン ノートでは、 VCU108 評価ボードを使用して、 コンフ ィギュレーシ ョ ン後に Virtex® UltraScale FPGA からパラレル NOR フラ ッシュ メモ リにアクセスする方法を紹介します。 開発環境には Vivado® Design Suite 2016.1 を使用します。

このアプリ ケーシ ョ ン ノートの リ ファレンス デザイン ファ イルは、 ザイ リ ンクスのウェブサイ トからダウンロードできます。 ®デザイン ファ イルの詳細は、 「 リ ファレンス デザイン」 を参照してください。

はじめに

このアプリ ケーシ ョ ン ノートの リ ファレンス デザインは、 MicroBlaze® プロセッサ コアを使用して AXI 外部メモリ コント ローラー (AXI EMC) コアと STARTUPE3 プリ ミ ティブに接続し、 コンフ ィギュレーシ ョ ン後に専用 BPI コンフ ィギュレーシ ョ ン インターフェイス経由で評価ボード上のパラレル NOR フラ ッシュ メモ リに対して読み出し /書き込みアクセスを実行します。 図 1 に、 コンフ ィギュレーシ ョ ン後のリ ファレンス デザインの動作を示します。

アプリケーシ ョ ン ノート : UltraScale FPGA

XAPP1282 (v1.0) 2016 年 9 月 27 日

コンフ ィギュレーシ ョ ン後に UltraScale FPGA から  STARTUPE3 を使用してパラレル NOR フラッシュ  メモリにアクセスする方法著者: Steven Howell、 Shashikant Jadhav、 Stephanie Tapp

X-Ref Target - Figure 1

図 1: コンフ ィギュレーシ ョ ン後のリファレンス デザインのアクセス フロー

Wally

0x00000000

0x01000000

Page 2: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

はじめに

XAPP1282 (v1.0) 2016 年 9 月 27 日  2japan.xilinx.com

重要: このアプリ ケーシ ョ ン ノートは、 更新用イ メージがパーシャル ビッ ト ス ト リームの場合には使用できません。 パーシャル ビッ ト ス ト リームのプログラム時にはシャッ ト ダウン コマンドを使用するため、 STARTUPE3 ブロ ッ クからの USRCCLK0/USRCLKTS 接続が無効になり、 パラレル NOR フラ ッシュ メモ リにアクセスできないためです。

BPI コンフ ィギュレーシ ョ ン モードを使用して FPGA をコンフ ィギュレーシ ョ ンする と、 初期ビッ ト ス ト リーム イ メージがパラレル NOR フラ ッシュ メモ リから読み込まれます。 FPGA の初期コンフ ィギュレーシ ョ ンが完了する と、 通常、BPI コンフ ィギュレーシ ョ ン インターフェイスは未使用のまま とな り ます。 しかし、 パラレル NOR フラ ッシュ メモ リの未使用領域には、 別のコンフ ィギュレーシ ョ ン イ メージやアプリ ケーシ ョ ン データを格納しておく こ とができます。 こうすれば、 メモ リの追加によるコス ト を節約したり、 必要なボード スペースを削減したりできます。 次に、 図 1 に示した リ ファレンス デザインの実行フローを示します。

• 手順 1: パラレル NOR フラ ッシュ メモ リに格納されたゴールデン ビッ ト ス ト リーム イ メージ (golden.bin) で FPGA をコンフ ィギュレーシ ョ ンします。 ゴールデン ビッ ト ス ト リーム イ メージには、 パラレル NOR フラ ッシュ メモ リの未使用領域に対する読み出し /書き込みアクセスを可能にするための STARTUPE3 プリ ミ ティブ、 インターフェイス ロジッ ク、 IP コア、 および制約が含まれます。

• 手順 2: MicroBlaze プロセッサ上でアプリ ケーシ ョ ン コードを実行し、 Tera Term Xmodem プロ ト コルを使用して新しい更新用ビッ ト ス ト リームをコンピューターからダウンロード します。 各 1024 バイ ト データ パケッ トは CRC を使用してチェッ ク され、 パラレル NOR フラ ッシュに書き込まれます。 次に IPROG 動作が実行され、 FPGA が元のゴールデン ビッ ト ス ト リーム イ メージ (golden.bin) の置き換えとなるアップデート ビッ ト ス ト リーム イ メージ (update.bin) から リ コンフ ィギュレーシ ョ ンされます。

本書の構成

• 「はじめに」 : リ ファレンス デザインの全体的な動作について説明します。

• 「システムの概要」 : リ ファレンス デザインのブロ ッ ク図、 ファ イル構造、 IP コアのアドレスについて説明します。

• 「 リ ファレンス デザインの実行」 : リ ファレンス デザインの実行に必要なハードウェアと ソフ ト ウェアを示し、 次の各手順について説明します。

° 「ホス ト コンピューターをセッ ト アッ プする」

° 「VCU108 評価ボードをセッ ト アップする」

° 「 リ ファレンス デザインのファイルをダウンロードする」

° 「 リ ファレンス デザインのプロジェク ト を生成する」

° 「プログラ ミ ング ファ イルを生成する」

° 「golden.bin で FPGA をコンフ ィギュレーシ ョ ンする」

° 「パラレル NOR フラ ッシュ メモ リに update.bin をプログラムする」

° 「update.bin で FPGA をコンフ ィギュレーシ ョ ンする」

• 「ハード ウェア システムの詳細」 : ハードウェアのクロ ッ ク ト ポロジ、 AXI EMC コア、 STARTUPE3 プリ ミ ティブの詳細を説明します。 コアのカスタマイズ、 タイ ミ ング、 制約についても説明します。

• 「ソフ ト ウェア システムの詳細」 : リ ファレンス デザインのソフ ト ウェアおよびフラ ッシュ コマンド セッ トについて説明します。

• 「チェ ッ ク リ ス ト とデバッグのヒン ト 」 : リ ファレンス デザインを正し く動作させるために確認しておくべき設定項目をまとめます。 よ くある設定の間違いと、 その解決方法について説明します。

• 「ま とめ」 : コンフ ィギュレーシ ョ ン後にパラレル NOR フラ ッシュ メモ リにアクセスするこ との利点についてまとめます。

Page 3: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

システムの概要

XAPP1282 (v1.0) 2016 年 9 月 27 日  3japan.xilinx.com

推奨されるデザイン知識

次についての全般的な知識が望まれます。

• UltraScale FPGA の BPI コンフ ィギュレーシ ョ ン モード『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) 参照 [参照 1]

• Vivado Design Suite『Vivado Design Suite ク イ ッ ク リ ファレンス ガイ ド』 (UG975) 参照 [参照 2]

システムの概要

このリ ファレンス デザインは、 MicroBlaze プロセッサ コア上で動作するソフ ト ウェアで AXI EMC コアを駆動し、STARTUPE3 プリ ミ ティブ経由でパラレル NOR フラ ッシュ メモ リに対する読み出し /書き込みを非同期モードで実行します。 このソフ ト ウェアは、 AXI UART Lite インターフェイスを経由して Tera Term が動作しているホス ト コンピューターにコマンド メニューを表示します。 このメニューからコマンドを選択して、 パラレル NOR フラ ッシュ メモ リの内容の消去、 プログラム、 検証を実行できます。 フラ ッシュ コマンド セッ ト と ソフ ト ウェア フローについては、 「ソフ ト ウェア システムの詳細」 で説明します。

Vivado Design Suite の IP インテグレーターを使用して、 コアを用いたブロ ッ ク図を作成します。 IP インテグレーター ブロ ッ ク デザインと STARTUPE3 プリ ミ ティブは、 最上位ラ ッパー デザイン ファ イル (design_1_wrapper.vhd) にインスタンシエート されます (図 2)。

Page 4: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

システムの概要

XAPP1282 (v1.0) 2016 年 9 月 27 日  4japan.xilinx.com

リファレンス デザイン ファイル

プロジェク ト スク リプ ト ファ イル

• run_vcu108(.bat/.tcl) ( リ ファレンス デザインのプロジェク ト を作成し、 SDK を起動)

• make_download_files(.bat/.tcl) (ダウンロード用 .bin ファ イル (golden.bin、 update.bin) を作成)

• load_golden(.bat/.tcl) (Vivado デバイス プログラマを使用して golden.bin をパラレル NOR フラ ッシュ メモリにプログラム)

リ ファレンス デザイン ファ イル

• design_1_wrapper.vhd (STARTUPE3 プリ ミ ティブを含む最上位ハードウェア ファ イル): 次を含みます。

° design_1.vhd (ボード デザイン ハードウェア ラ ッパー )

° design_1.bd (ボード記述ファイル)

• vcu108.xdc (STARTUPE3 のタイ ミ ング制約とピン ロケーシ ョ ンを含む制約ファイル)

• バイナリ コンフ ィギュレーシ ョ ン ファ イル:

° golden.bin (生成済みの初期ビッ ト ス ト リーム イ メージ)

° update.bin (生成済みの更新用ビッ ト ス ト リーム イ メージ)

• SDK ソース コード ファ イル:

° vcu108_emc_rw.c (メ イン ループ、 Xmodem ダウンロード、 およびフラ ッシュ アップデート機能)

° vcu108_emc_rw.h

• lscript.ld ( リ ンカー スク リプ ト )

• vcu108_emc_rw.elf (生成済みのソフ ト ウェア イ メージ)

X-Ref Target - Figure 2

図 2: コンフ ィギュレーシ ョ ン後のリファレンス デザインのシステム ブロック図

Wally

AXI4

Mem

ory-

Map

ped

Inte

rcon

nect

Page 5: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  5japan.xilinx.com

IP コア アドレス マップ

パラレル NOR フラッシュ  メモリ  マップ

このリ ファレンス デザインは、 パラレル NOR フラ ッシュ メモ リに 2 つのイ メージを格納します (図 1)。

• ゴールデン ビッ ト ス ト リームの開始アドレス : 0x00000000

• 更新用ビッ ト ス ト リームの開始アドレス : 0x01000000

リファレンス デザインの実行

このセクシ ョ ンでは、 「必要なハード ウェアと ソフ ト ウェア」 と次の各手順について説明します。

• 「ホス ト コンピューターをセッ ト アッ プする」

• 「VCU108 評価ボードをセッ ト アップする」

• 「 リ ファレンス デザインのファイルをダウンロードする」

• 「 リ ファレンス デザインのプロジェク ト を生成する」

• 「プログラ ミ ング ファ イルを生成する」

• 「golden.bin で FPGA をコンフ ィギュレーシ ョ ンする」 (図 1 の手順 「1」 )

• 「パラレル NOR フラ ッシュ メモ リに update.bin をプログラムする」 (図 1 の手順 「2」 )

• 「update.bin で FPGA をコンフ ィギュレーシ ョ ンする」 (図 1 の手順 「2」 )

表 1: IP コア アドレス

IP コア バージョン入力クロック

周波数オフセッ ト  アドレス

範囲 上位アドレス

MicroBlaze プロセッサ (microblaze_1) 9.6

100 MHz

N/A N/A

AXI BRAM Controller (axi_bram_ctrl_1) 4.0 0xC000_0000 1 MB 0xC003_FFFF

AXI Interrupt Controller (microblaze_1_axi_intc) 4.1 0x4120_0000 64 KB 0x4120_FFFF

AXI UART Lite (axi_uartlite_0) 2.0 0x4060_0000 64 KB 0x4060_FFFF

AXI Interconnect (axi_mem_intercon) 2.1 N/A N/A

AXI_TIMER (axi_timer_0) 2.0 0x41C0_0000 64 KB 0x41C0_FFFF

JTAG_AXI (jtag_axi_0) 1.1 N/A N/A

AXI EMC (axi_emc_1) 3.0

50 MHz

0x4800_0000 128 MB 0x4FFF_FFFF

AXI_HWICAP (axi_hwicap_0) 3.0 0x4020_0000 N/A 0x4020_FFFF

Processor System Reset Module (proc_sys_reset) 5.0 N/A N/A

Page 6: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  6japan.xilinx.com

必要なハードウェアとソフ トウェア

• 次を搭載した VCU108 評価ボード

° Virtex UltraScale XCVU095-2FFVA2104 FPGA (U1)

° Micron MT28GU01GAAA1EGC 1 Gb (256 MB) パラレル NOR フラ ッシュ (U133)

• 電源: 100 ~ 240VAC 入力、 12VDC 5.0A 出力 (VCU108 評価キッ トに付属)

• 2 本の USB ケーブル (標準 A プラグ/micro-B プラグ)

• ホス ト コンピューター (次が必要)

° 2 つの USB ポート

° Vivado Design Suite が動作する Windows オペレーティング システム

• Vivado Design Suite 2016.1、 Design Edition with SDK

• Tera Term ターミナル エミ ュレーター プログラム ( リ ファレンス デザインのテス トにはバージ ョ ン 4.90 を使用)

• Silicon Labs Dual CP210x USB UART ド ラ イバー

• リ ファレンス デザイン ファ イル

ホスト  コンピューターをセッ トアッ  プする

インス トール済みでない場合は次の手順を実行します。

1. Vivado Design Suite バージ ョ ン 2016.1 をインス トールします。

2. Tera Term をダウンロード してインス トールします ( リ ファレンス デザインのテス トにはバージ ョ ン 4.90 を使用)。 手順の詳細は、 『Tera Term ターミナル エミ ュレーター インス トール ガイ ド』 (UG1036) [参照 3] を参照してください。

3. UART ド ラ イバーをダウンロード してインス トールします。 手順の詳細は、 『Silicon Labs CP210x USB-to-UART インス トール ガイ ド』 (UG1033) [参照 4] を参照してください。

ヒン ト : UART 通信パラ―メーターはこの後の手順で設定します。

VCU108 評価ボードをセッ トアップする

図 3 について説明します。

1. スイ ッチ SW1 を OFF の位置にして、 J15 に電源を接続します。

2. VCU108 評価ボード上の UART コネクタ (J4) と JTAG コネクタ (J106) に USB ケーブルを挿入してコンピューターに接続します。

Page 7: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  7japan.xilinx.com

3. FPGA DIP スイ ッチ SW16 を図 3 のよ うに設定します。 SW16[3:5] とする と、 BPI モード M[2:0] = 010 が選択されます。 FPGA RS[1:0] に接続されるパラレル NOR フラ ッシュ上位アドレス ビッ ト (A25 および A24) は、 SW16[1:2] で設定します。

リファレンス デザインのファイルをダウンロードする

1. リ ファレンス デザイン ファ イルを c:\xapp1282 にダウンロード して解凍します。 図 4 に、 作成されるファ イルの構造を示します。

2. 次のいずれかの手順に進みます。

• SDK プロジェク ト を作成し、 リ ファレンス デザインのコードを詳し く確認したい場合は、 「 リ ファレンス デザインのプロジェク ト を生成する」 に進みます。

• リ ファレンス デザインに付属の生成済みビッ ト ス ト リームを使用してデモをすぐに開始したい場合は、「golden.bin で FPGA をコンフ ィギュレーシ ョ ンする」 に進みます。

X-Ref Target - Figure 3

図 3: リファレンス デザインの実行に必要なボードのセッ トアップ

Wally

X-Ref Target - Figure 4

図 4: リファレンス デザインのファイル構造

Page 8: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  8japan.xilinx.com

リファレンス デザインのプロジェク ト を生成する

1. c:\xapp1282 ディ レク ト リに移動します。 run_vcu108.bat をダブルク リ ッ ク してバッチ ファ イルを実行します。

Vivado IP インテグレーター ハードウェア プロジェク ト (project_1.xpr) が生成され、 作成されたハード ウェアが project_1 ディ レク ト リの SDK (project_1.sdk) にエクスポート されます。 図 5 に、 新たに追加されるプロジェク ト ディ レク ト リ を示します。

ヒン ト : ホス ト コンピューターにもよ り ますが、 プロジェク トのビルドには約 30 分かかり ます。

X-Ref Target - Figure 5

図 5:新たに追加されたプロジェク ト  ディレク ト リ

Page 10: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  10japan.xilinx.com

2. パラレル NOR フラ ッシュ メモ リの読み出し /書き込みアクセス用のアプリ ケーシ ョ ンを作成します。

a. [File] → [New] → [Application Project] をク リ ッ ク して、 New Project ウ ィザードを開きます。

b. [Project name] に 「vcu108_emc_rw」 と入力します。

c. その他のフ ィールドは、 図 7 に示すよ うに値を設定します。

d. [Next] をク リ ッ ク して [Templates] ページを開きます。

X-Ref Target - Figure 7

図 7: アプリケーシ ョ ン  プロジェク トの作成

Page 11: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  11japan.xilinx.com

e. [Available Templates] で [Empty Application] を選択します (図 8)。

f. [Finish] をク リ ッ クする とアプリ ケーシ ョ ン プロジェク トがビルド されます。

g. プロジェク トのビルドが完了したら、 [Modify this BSP's Settings] をク リ ッ ク します (図 9)。

X-Ref Target - Figure 8

図 8: [Available Templates]

X-Ref Target - Figure 9

図 9: BSP の設定の変更

• • • • • • •• • • • • •

Page 12: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  12japan.xilinx.com

h. Board Support Package Settings ウ ィザード (図 10) で、 ザイ リ ンクス フラ ッシュ ライブラ リの [xilflash] をオンにし、 [OK] をク リ ッ ク します。 この手順によ り、 パラレル フラ ッシュ メモ リ との通信に必要なソフ ト ウェア機能が組み込まれます。 BSP は再生成されて再コンパイルされます。

i. SDK IDE の [Project Explorer] タブで vcu108_emc_rw フォルダーをダブルク リ ッ ク し、 [src] を選択します。 [src] を右ク リ ッ ク し、 [Import] をク リ ッ ク します。

j. Import ウ ィザードで [General] フォルダーを展開し、 [File System] をク リ ッ ク します (図 11)。

k. [Next] をク リ ッ ク します。

X-Ref Target - Figure 10

図 10:  [Board Support Package Settings]

X-Ref Target - Figure 11

図 11: [Select an import source] で [File System] を選択

Page 13: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  13japan.xilinx.com

l. [Browse] をク リ ッ ク し、 C:\xapp1282\source ディ レク ト リ を選択して、 [OK] をク リ ッ ク します。 次に、図 12 でハイライ ト されているファ イルをオンにします。

m. [Finish] をク リ ッ ク して、 すべてのソース ファ イルをプロジェク トに追加します。

3. MicroBlaze コードの内容を確認します (省略可)。 SDK IDE の [Project Explorer] タブで、 src の下の vcu108_emc_rw.c をダブルク リ ッ ク して開き、 コードの一部を確認します。 このファイルには、 メ イン関数と、 Tera Term コマンド メニューを表示するコードが含まれています。

° ファ イルの先頭近くには、 フラ ッシュ メモ リの幅、 フラ ッシュ メモ リ内のバイ ト、 ブロ ッ ク、 ページの各数、およびブロ ッ ク とページの各サイズといった一連の定義があ り ます。 下に示すいくつかのテス ト関数のフラ ッシュ メモ リ テス ト アドレスも定義されています。 この リ ファレンス デザインをほかのパラレル フラ ッシュ メモ リ タイプで使用する場合、 そのフラ ッシュに合わせてこれらの定義を変更する必要があ り ます。

° フラ ッシュ定義の下は、 update.bin ファ イルをコンピューターから MicroBlaze プロセッサに移動してフラ ッシュ メモ リに書き込む XMODEM プロ ト コル ダウンロード関数の一連の定義です。 これらは XMODEM-CRC (1K) に適した文字、 関数の一部ステート、 およびユーザー インターフェイスを作成するための追加 Tera Term コマンドを定義します。

° リ ファレンス デザインで使用される一連のフラ ッシュ メモ リ関数 (xilflash ライブラ リに含まれている下位レベル関数から作成される ) は、 コードの上部の Function Prototypes セクシ ョ ンに示されています。 これらの関数のコードは、 メ イン関数の下に表示されます。 メ イン関数は case 構造であ り、 UART 上にメニューを表示します。 これによってユーザーは、 フラ ッシュの動作 (ID 読み出し、 消去、 プログラム、 読み出し ) を選択したり、IPROG を実行したりできます。

X-Ref Target - Figure 12

図 12: ローカル ファイル システムからファイルをインポート

Page 14: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  14japan.xilinx.com

IPROG

IPROG コードを確認するには、 vcu108_emc_rw.c ファ イル内で HwIcapLowLevelIPROG 関数を見つけます。

° IPROG は、 内部コンフ ィギュレーシ ョ ン アクセス ポート (ICAP) 経由の一連のレジスタ書き込みによ り制御される、 FPGA の内部プログラ ミ ングです。 この動作を選択する と、 MicroBlaze プロセッサは axi_hwicap ペリ フェラルに対して一連のレジスタ書き込みを実行し、 IPROG が実行されます。 IPROG の始動後に、 FPGA はウォーム ブート開始アドレス レジスタ (WBSTAR) を除き、 現在のすべてのコンフ ィギュレーシ ョ ンを消去します。 このレジスタには、 FPGA がコンフ ィギュレーシ ョ ン イ メージのロードを開始する非ゼロ アドレスを含めるこ とができます。

° このよ うにして、 ユーザーは FPGA のリ コンフ ィギュレーシ ョ ンを要求し、 パラレル フラ ッシュにあるアップデート されたコンフ ィギュレーシ ョ ン イ メージの検索場所を指定できます。 フラ ッシュ内のプログラムされたイ メージを取得するために、 アドレス ビッ ト を設定するには数多くの方法があ り ます。 この リ ファレンス デザインでは、 update.bin イ メージを特定のアドレスに格納し、 IPROG の実行時に取得する という例を示しています。 WBSTAR レジスタの詳細は、 「update.bin で FPGA をコンフ ィギュレーシ ョ ンする」、 または『UltraScale アーキテクチャ』 を参照してください。

プログラ ミング ファイルを生成する

1. SDK の GUI を終了します。

2. C:\xapp1282\ready_to_download ディレク ト リに移動します。 make_download_files.bat をダブルク リ ック してバッチ ファ イルを実行します。 同じディ レク ト リ内にビッ ト ス ト リーム イ メージの golden.bin と update.bin が生成されます。

ヒン ト : ホス ト コンピューター システムにもよ り ますが、 これらファ イルの生成には約 5 分かかり ます。

golden.bin で FPGA をコンフ ィギュレーシ ョ ンする

この手順は、 図 1 の 「1.」 に該当します。

1. スイ ッチ SW1 (図 3 参照) を ON の位置にして VCU108 評価ボードに電源を投入します。 ボードに電源が投入され、電源システムが正常動作を開始する と、 SW1 の近くにある DS3 (パワー グッ ド LED) が緑に点灯します。

2. C:\xapp1282\ready_to_download ディレク ト リに移動します。 load_golden.bat をダブルク リ ッ ク してバッチ ファ イルを実行します。

このバッチ ファ イルは、golden.bin ( リ ファレンス デザインの初期ビッ ト ス ト リーム) をパラレル NOR フラ ッシュ メモ リのアドレス 0x00000000 にコピーした後に、 FPGA を リセッ ト し、 パラレル NOR フラ ッシュ メモ リに書き込んだ golden.bin イ メージで FPGA のコンフ ィギュレーシ ョ ンを開始します。

ヒン ト : ホス ト コンピューター システムにもよ り ますが、 パラレル NOR フラ ッシュ メモ リの消去、 プログラム、 および検証には約 10 分かかり ます。

Page 15: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  15japan.xilinx.com

3. リ ファレンス デザインの初期ビッ ト ス ト リーム (golden.bin) で FPGA のコンフ ィギュレーシ ョ ンが正常に完了する と、 DONE LED が点灯し、 LED 0 が点滅します (図 13)。

パラレル NOR フラッシュ  メモリに update.bin をプログラムする

この手順は、 図 1 の 「2.」 に該当します。

golden.bin でコンフ ィギュレーシ ョ ンした FPGA が動作を開始したら、 update.bin をホス ト コンピューターからダウンロード して、 パラレル NOR フラ ッシュのアドレス 0x01000000 に書き込み、 そのイ メージを使用して FPGA を リ コンフ ィギュレーシ ョ ンできます。

1. ホス ト コンピューターと VCU108 評価ボードが、 図 3 のよ うに接続されているこ とを確認します。

重要: メニューの選択項目 3 (Program <*.bin via XMODEM_1K>) および選択項目 5 (Reconfigure from IPROG) で示される動作に対して、図 17 または図 21 でハイライ ト されている Programming Start Address <hex> 値を入力します。 この例では、 フラ ッシュ メモ リ開始アドレス 0x01000000 は MicroBlaze プロセッサ コードによ り変換され、 同等の WBSTAR フォーマッ トに 0x40000000 と書き込まれます。 自動変換によ り、 WBSTAR 定義を考慮して計算する必要なく、 フラ ッシュ メモ リ アドレスを直接入力できます。 デザインを変更するか、 または別のボードでデザインを使用する場合は、 フラ ッシュ アドレス ピンと WBSTAR ビッ ト位置とのマッピングを理解しておく必要があ り ます。 WBSTAR の詳細は、『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] の、WBSTAR レジスタ テーブルを参照して ください。

2. Tera Term を起動して、 [Setup] → [Serial port] をク リ ッ ク して、 図 14 に示す値を使用します。 必ず標準の COM ポートを選択します (詳細は 「チェッ ク リ ス ト とデバッグのヒン ト 」 の手順 4 を参照)。

X-Ref Target - Figure 13

図 13: リファレンス デザインの初期ビッ トス ト リーム golden.bin が動作している状態

Page 16: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  16japan.xilinx.com

3. PROG プッシュボタン (VCU108 評価ボード上の SW4) をパルスして、 golden.bin コードを読み込みます。 シ リ アル接続が正し く設定されていれば、 Tera Term にリ ファレンス デザインのメニューが表示されます (図 15)。

4. Tera Term に表示されたメニューで 1 を入力してパラレル NOR フラ ッシュのベンダー情報を表示し、 ボードが正し くセッ ト アップされているこ とを確認します (図 16)。

X-Ref Target - Figure 14

図 14: Tera Term のシリアル ポート設定

X-Ref Target - Figure 15

図 15: リファレンス デザインのフラッシュ  メモリ  コマンド  メニュー

Page 17: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  17japan.xilinx.com

5. 3 を入力してパラレル NOR フラ ッシュ メモ リのオフセッ ト (プログラ ミ ング開始アドレス) 0x01000000 に対して update.bin イ メージをプログラムします (図 17)。

X-Ref Target - Figure 16

図 16: メニュー 1: パラレル NOR フラッシュ  メモリ情報の読み出し

X-Ref Target - Figure 17

図 17: メニュー 3: プログラム

Page 18: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  18japan.xilinx.com

6. メニュー バーで、 [File] → [Transfer] → [XMODEM] → [Send] をク リ ッ ク します (図 18)。

7. [Look in] に 「C:\xapp1282\ready_to_download」 と入力し、 [update.bin] を選択し、 [Option] の [1K] をオンにしてから [Open] をク リ ッ ク します (図 19)。

X-Ref Target - Figure 18

図 18: [Send file] コマンド

X-Ref Target - Figure 19

図 19: update.bin の選択

Page 19: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  19japan.xilinx.com

8. update.bin のプログラ ミ ングが正常に完了する と、 図 20 に示す Tera Term ウ ィンド ウが表示されます。

update.bin で FPGA をコンフ ィギュレーシ ョ ンする

この手順は、図 1 の 「2.」 の後半部分 (IPROG を実行して更新用イ メージで FPGA をコンフ ィギュレーシ ョ ンする ) に該当します。

update.bin (更新用ビッ ト ス ト リーム イ メージ) は、 リ ファレンス デザインによってフラ ッシュ メモ リのアドレス 0x01000000 に配置されます。 リ ファレンス デザインはイ メージをフラ ッシュ メモ リに書き込んだ後、 FPGA 内部コンフ ィギュレーシ ョ ン アクセス ポート (ICAP) を使用して FPGA をこの新しいイ メージでリ コンフ ィギュレーシ ョ ンします。

リ コンフ ィギュレーシ ョ ンは、 次の 2 段階で実行されます。

1. MicroBlaze™ プロセッサは、 AXI_HWICAP IP コアを ICAP ポートへのインターフェイス と して使用して、 ウォーム ブート開始アドレス レジスタ (WBSTAR) に値を書き込みます。 WBSTAR の内容は、 次の内部プログラ ミ ング コマンド (IPROG) が ICAP インターフェイスに対して発行される際のフラ ッシュ メモ リ開始アドレスを指定します。

WBSTAR レジスタは、 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] の表 9-31 で説明されています。

WBSTAR[31:30] (上位 2 桁のレジスタ ビッ ト ) は外部 FPGA ピン RS[1:0] に対応します。これらのピンは、WBSTAR の内容に従って駆動するか、 または外部プルアップ/プルダウン抵抗を使用して制御できます。 RS[1:0] ビッ トは、WBSTAR のビッ ト 29 によ り ト ラ イステート (外部的に制御される ) にするか、 または WBSTAR [31:30] の設定値で駆動できます。

WBSTAR[28:0] ビッ トは、 コンフ ィギュレーシ ョ ン フラ ッシュのアドレス ビッ トに接続し、 FPGA がコンフ ィギュレーシ ョ ン ファ イルの読み込みに使用するアドレスを制御できるよ うにします。

ユーザーが Tera Term/UART のメニューでフラ ッシュ メモ リ開始アドレスを指定する と、 MicroBlaze プロセッサはそのアドレスを、 WBSTAR の内容を設定する書き込みコマンドに適切に変換します。

X-Ref Target - Figure 20

図 20: プログラ ミング ステータス

Page 20: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

リファレンス デザインの実行

XAPP1282 (v1.0) 2016 年 9 月 27 日  20japan.xilinx.com

[Tera Term] ウ ィンド ウで、 オプシ ョ ン 5 を選択します。 パラレル NOR フラ ッシュ アドレスのプロンプ トが表示されたら、 1000000 を入力して、 更新用ビッ ト ス ト リームを読み込みます (図 21)。

2. MicroBlaze プロセッサは、 リ コンフ ィギュレーシ ョ ンを実行する一連のコマンドを書き込むこ とで、 手順 2 (図 1) を実行します。 (AXI_HWICAP IP 経由での) ICAP インターフェイスに対するこの一連の書き込みは IPROG と呼ばれ、結果と して FPGA がウォーム ブート されます。

FPGA の以前のコンフ ィギュレーシ ョ ンされた内容は、 WBSTAR アドレスで指定されたロケーシ ョ ンを除き、 すべてク リ アされます。 次に、 ユーザーが指定し、 MicroBlaze によって WBSTAR に読み込まれるフラ ッシュ アドレスから リ コンフ ィギュレーシ ョ ンが実行されます。 これによ り update.bin ファ イルが FPGA に読み込まれます。

FPGA が update.bin リ ファレンス デザインで正し く コンフ ィギュレーシ ョ ンされる と、 DONE LED が点灯し、LED 1 が点滅します (図 22)。 golden.bin の場合とは点滅する LED が異なるこ とに注意してください。

ヒン ト : update.bin で FPGA をコンフ ィギュレーシ ョ ンする と、 パラレル NOR フラ ッシュに対する動作は実行できなくな り ます。 このデモを再度実行するには、 「golden.bin で FPGA をコンフ ィギュレーシ ョ ンする」 の手順から実行して ください。

X-Ref Target - Figure 21

図 21: オプシ ョ ン  5: IPROG のリコンフ ィギュレーシ ョ ン

X-Ref Target - Figure 22

図 22: リファレンス デザインの更新用ビッ トス ト リーム update.bin が動作している状態

Page 21: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  21japan.xilinx.com

ハードウェア システムの詳細

このリ ファレンス デザインには、 update.bin ファ イルのダウンロードを実行するために必要な MicroBlaze プロセッサ コアとペリ フェラル IP コアが含まれています。 このセクシ ョ ンでは、 コンフ ィギュレーシ ョ ン後にパラレル NOR フラ ッシュ メモ リにアクセスするためのシステムのクロ ッ ク ト ポロジ、 AXI EMC コアの設定、 STARTUPE3 プリ ミ ティブの使用方法、 および制約について説明します。

クロック  トポロジ

このリ ファレンス デザインは、 VCU108 評価ボード上にある、 Silicon Labs Si5335A クワ ッ ド ク ロ ッ ク ジェネレーター /バッファーからの 300 MHz 差動クロ ッ ク入力を使用します。 図 23 に、 このクロ ッ ク分配を示します。

差動クロ ッ クは、 ク ロ ッキング IP ブロ ッ ク (clk_wiz_0) 内のミ ッ クス ド モード ク ロ ッ ク マネージャー (MMCM) に供給されます。 MMCM は、 入力クロ ッ クを 100 MHz と 50 MHz のクロ ッ クに分周してシステムの残りの部分に提供します。50 MHz ク ロ ッ ク (clk_out2) は AXI EMC、 プロセッサ システム リセッ ト 、 および axi_hwicap ブロ ッ クに供給され、100 MHz ク ロ ッ クは AXI ペリ フェラル インターコネク トおよびシステム内の残りのすべてのペリ フェラルに供給されます。

AXI EMC によ り使用される 50 MHz ク ロ ッ クは、 STARTUPE3 ブロッ クを経由してパラレル NOR フラ ッシュ メモ リにも供給されます。 AXI EMC ペリ フェラルを正し く機能させるには、 フラ ッシュが使用するのと同じクロ ッ クを AXI EMC に提供する必要があ り ます。 AXI EMC (axi_emc_1) は、 50 MHz ク ロ ッ クを使用して AXI インターフェイス上の ト ランザクシ ョ ンを駆動し、 パラレル NOR フラ ッシュ メモ リに対する読み出し /書き込みト ランザクシ ョ ンを作成します。

X-Ref Target - Figure 23

図 23: リファレンス デザインのクロック  トポロジ

Page 22: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  22japan.xilinx.com

重要: この リ ファレンス デザインは、VCU108 評価ボードに実装された Micron MT28GU01GAAA1EGC-0SIT フラ ッシュ メモ リでの使用を想定しています。 これ以外のパラレル NOR フラ ッシュ メモ リでは、 MicroBlaze システムに供給するクロ ッ ク周波数と、 STARTUPE3 ブロ ッ ク経由でパラレル NOR フラ ッシュ メモ リに供給するク ロ ッ ク周波数の調整が必要な場合があ り ます。

AXI EMC コアと  STARTUPE3 プリ ミテ ィブ

図 24 に、 コンフ ィギュレーシ ョ ン後のアクセスに必要な、 AXI EMC コア、 STARTUPE3 プリ ミ ティブ、 FPGA BPI コンフ ィギュレーシ ョ ン インターフェイス ピン、 および外部パラレル NOR フラ ッシュの間の接続を示します。

AXI EMC コア アドレス (mem_a[31:0]) は 26 ビッ トの長さ (Linear_Flash_address[25:0]) まで切り捨てられ、 FPGA の多目的 I/O ピンに配線されます。 AXI EMC の 16 データ ビッ トは 2 つのベクターに分割されます。

最初のベクター (mem_dq[3:0]) は、 STARTUPE3 プリ ミ ティブの DI[3:0]、 DO[3:0]、 および DTS[3:0] ポートに配線されます。 これらのビッ トは STARTUPE3 ブロ ッ クを経由して、 パラレル NOR フラ ッシュに接続される専用 FPGA ピンに配線されます。 2 番目のベクター (上位 12 ビッ トの mem_dq[15:4]) は、 最上位ラ ッパー デザイン (design_1_wrapper.vhd) の ト ラ イステート IOBUF に、 次に FPGA の多目的 I/O ピンに配線されます。

X-Ref Target - Figure 24

図 24: AXI EMC コアと  STARTUPE3 の接続

MT28GU01GAAAEGC

Page 23: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  23japan.xilinx.com

AXI EMC コアからのチップ イネーブル信号は STARTUPE3 プリ ミ ティブの FCSBO ポートに接続され、 FPGA の専用 DWR_FCS_B ピンに配線され、 パラレル NOR フラ ッシュの CE# ピンに接続されます。 AXI EMC から送信される信号 mem_adv_ldn、 mem_oen、 mem_wait、 および mem_wen は、 STARTUPE3 を経由せず、 多目的 FPGA ピンに直接送信された後パラレル NOR フラ ッシュに送信されます。

パラレル NOR フラ ッシュ用に MMCM が供給する 50 MHz ク ロ ッ ク信号は、 STARTUPE3 プリ ミ ティブの USRCCLKO ポートに配線され、 FPGA の専用 CCLK ピンに到達し、 それからパラレル NOR フラ ッシュの CLK ピンに接続されます。STARTUPE3 プリ ミ ティブを経由する信号は、 FPGA の専用コンフ ィギュレーシ ョ ン ピンに現れ、 ピンのロケーシ ョ ン制約を必要と しません。 AXI EMC から多目的 FPGA ピンに送信される信号にはロケーシ ョ ン制約が必要であ り、 タイ ミ ング制約による場合とは処理が多少異なり ます。

AXI EMC IP コア (3.0) のカスタマイズ

このサンプル デザインで使用されている AXI EMC IP コア (3.0) は特に XCVU095-2FFVA2104 FPGA、および VCU108 評価ボード上の Micron (以前の Numonyx) MT28GU01GAAA1EGC パラレル NOR フラ ッシュ メモ リ用にセッ ト アップされています。コアのカスタマイズには図 25 に示す IP インテグレーターのダイアログ ボッ クスが使用されます。 このダイアログ ボッ クスには、 AXI EMC IP コアで使用するタイ ミ ング パラ メーターの値が示されます。

X-Ref Target - Figure 25

図 25: AXI EMC (3.0) コアの設定を表示する  [Re‐customize IP] ウィンドウ

Page 24: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  24japan.xilinx.com

表 2 および 「タイ ミ ング パラ メーターの定義」 では、 タイ ミ ング パラ メーターについて説明しています。

タイ ミ ング パラメーターの定義

• [Read CE Low to Data Valid Period]: 選択したバンク内のメモリに対する、 読み出しのチップ イネーブルからデータ有効までの時間を指定します。 このオプシ ョ ンは、 バンク内のメモリ タイプが非同期である場合にのみ適用できます。これは、 各メモ リ デバイスのデータシートにあるフラ ッシュ メモ リの tELQV に相当します。

• [Read Address Valid to Data Valid Period]: 選択したバンク内のメモ リに対する、 読み出しのアドレス有効からデータ有効までの時間を指定します。 このオプシ ョ ンは、 バンク内のメモリ タイプが非同期である場合にのみ適用できます。これは、 各メモ リ デバイスのデータシートにある非同期 SRAM の tAA およびフラ ッシュ メモ リの tAVQV に相当します。

• [Page Access Period]: 選択したバンク内の非同期フラ ッシュ メモ リに対するページ アクセス時間を指定します。 このオプシ ョ ンは、 バンク内のメモ リ タイプがページ モード フラ ッシュ メモ リである場合にのみ適用できます。 これは、 ページ モード フラ ッシュ デバイスのデータシートにある tPACC/tAPA に相当し、 バンクに対して選択されているメモ リ タイプがページ モード フラ ッシュである場合にのみ割り当てる必要があ り ます。

• [Read CE High to Data Bus HZ Period]: 選択したバンク内のメモリに対する、読み出しの CE High からデータ バス ハイ インピーダンスまでの時間を指定します。 このオプシ ョ ンは、 バンク内のメモリ タイプが非同期である場合にのみ適用できます。 これは、 各メモ リ デバイスのデータシートにある非同期 SRAM の tHZCE およびフラ ッシュ メモ リの tEHQZ に相当します。

• [Read OE High to Data Bus HZ Period]: 選択したバンク内のメモ リに対する、読み出しの OE High からデータ バス ハイ インピーダンスまでの時間を指定します。 このオプシ ョ ンは、 バンク内のメモリ タイプが非同期である場合にのみ適用できます。 これは、 各メモ リ デバイスのデータシートにある非同期 SRAM の tHZOE およびフラ ッシュ メモ リの tGHQZ に相当します。

• [Write Cycle Period]: メモ リ バンクの書き込みサイクル時間を指定します。 このオプシ ョ ンは、 バンク内のメモリ タイプが非同期である場合にのみ適用できます。 これは、 各メモリ デバイスのデータシートにある非同期 SRAM の tWC およびフラ ッシュ メモ リの tCW に相当します。 AXI EMC コアは、 このパラ メーターを使用して、 メモ リ インターフェイスでの各書き込みで CEN ロジッ クを Low に保持します。

• [Write Enable Min. Pulse Width]: メモ リ バンクの書き込みイネーブルの最小パルス幅です。 このオプシ ョ ンは、 バンク内のメモ リ タイプが非同期である場合にのみ適用できます。 これは、 各メモ リ デバイスのデータシートにある非同期 SRAM の tWP およびフラ ッシュ メモ リの tPWE に相当します。 AXI EMC コアは、 このパラ メーターを使用して、メモ リ インターフェイスでの各書き込みで WEN ロジッ クを Low に保持します。

• [Write Phase Period]: メモ リ バンクの書き込みサイクル フェーズの期間です。 このオプシ ョ ンは、 バンク内のメモ リ タイプが非同期である場合にのみ適用できます。 AXI EMC コアは、 このパラ メーターを使用して、 メモ リ側での 2 つの連続する書き込み間の NOP サイクル数を決定します。 このパラ メーターを 0 に設定する と、 CEN は書き込み間の 1 ク ロ ッ ク サイクル間ロジッ クを High にします。

表 2: AXI EMC IP コアのタイ ミング パラメーター

Re‐customize IP の設定MT28GU01GAAA1EGC パラレル NOR 

フラッシュ  メモリの設定

パラ メーター ユーザー パラメーター デフォルト値 (ps) パラ メーターのシンボル ユーザー値 (ps)(1)

Read CE Low to Data Valid Period C_TCEDV_PS_MEM_* 15,000 tELQV 96,000

Read Address Valid to Data Valid Period C_TAVDV_PS_MEM_* 15,000 tAVQV 96,000

Page Access Period C_TPACC_PS_FLASH_* 25,000 tAPA 15,000

Read CE High to Data Bus HZ Period C_THZCE_PS_MEM_* 7,000 tEHQZ 7,000

Read OE High to Data Bus HZ Period C_THZOE_PS_MEM_* 7,000 tGHQZ 7,000

Write Cycle Period C_TWC_PS_MEM_* 15,000 tCW = (tWLWH + tELWL + tWHEH) 40,000

Write Enable Min. Pulse Width C_TWP_PS_MEM_* 12,000 tWLWH 40,000

Write Phase Period C_TWPH_PS_MEM_* 12,000 tWHWL 20,000

Write WE High to Data Bus LZ Period C_TLZWE_PS_MEM_* 0000 tWHGL 20,000

Write Recovery Period For Flash Memory C_WR_REC_TIME_ME 27,000 tBHWH 200,000

注記:1. この列のパラ メーター値は、 『Micron Parallel NOR Flash Memory MT28GU01GAAA1EGC Data Sheet』 [参照 6] から引用しています。

Page 25: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  25japan.xilinx.com

• [Write WE High to Data Bus LZ Period]: メモ リ バンクの書き込みサイ クルの書き込みイネーブル信号 High からデータ バス低インピーダンスまでの時間です。 このオプシ ョ ンは、 バンク内のメモリ タイプが非同期である場合にのみ適用できます。 これは、 各メモ リ デバイスのデータシートにある非同期 SRAM の tLZWE およびフラ ッシュ メモ リの tWHGL に相当します。 このオプシ ョ ンは、 メモ リの 「書き込みリ カバリから読み出しまでの時間」 要件を満たすためにも使用されます。

• [Write Recovery Period For Flash Memory]: メモ リ バンクのフラ ッシュ メモ リの書き込みリ カバリ期間です。 このオプシ ョ ンは、 バンク内のメモ リ タイプがフラ ッシュ メモ リのいずれかまたは PSRAM である場合にのみ適用できます。これは、 各メモ リ デバイスのデータシートにあるフラ ッシュ メモ リの tWR に相当します。 AXI EMC コアは、 このパラ メーターを使用して、 各 AXI WLAST 後のメモ リ インターフェイスでの NOP サイ クル数を決定します。 使用する AXI ク ロ ッ ク と同等の C_AXI_CLK_PERIOD_PS の値を指定するこ とを推奨しています。 この値は、 非同期メモ リ使用時の、 カウンターの内部キャ リブレーシ ョ ンに使用されます。 デフォルトでは、 100 MHz AXI ク ロ ッ クに対応する値の 10,000 に設定されています。 接続されている AXI ク ロ ッ クが 100 MHz ではない場合、 パラ メーターは Tcl コンソールで set_property CONFIG.C_AXI_CLK_PERIOD_PS {time period in picoseconds of AXI clock} [get_ips <component name of emc IP created>] コマンドを使用して設定する必要があ り ます。

STARTUPE3 プリ ミテ ィブ

UltraScale FPGA の BPI インターフェイス専用信号 (RDWR_FCS_B_0、 CCLK_0、 D03_0、 D02_0、 D01_DIN_0、D00_MOSI_0) は、 バンク 0 にあ り ます。 デフォルトでは、 コンフ ィギュレーシ ョ ン後にこれらのピンにはアクセスできないため、 パラレル NOR フラ ッシュ メモ リへはアクセスができなくな り ます。 これらの専用ピンにアクセスできるよ うにするため、 デザインに STARTUPE3 プリ ミ ティブをインスタンシエート します。 表 3 に、 専用の各コンフ ィギュレーシ ョ ン ピンに関連する内部ロジッ ク信号名と、 それぞれの STARTUPE3 の接続先ポート、および対応する FPGA 出力ピン位置を示します。

デザインを STARTUPE3 の適切なポートに接続する と、ユーザー デザインは FPGA 出力をこれらの専用ピンに駆動するかト ラ イステートにできます。 また、 D[03:00] は入力と して読み出すこ とができます。 ユーザー デザインは、 STARTUPE3 ブロ ッ クの.USRCCLKO、 .USRCCLKTS、 .DO、 .DTS、 .FCSBO、 および .FCSBTS ポート を介して専用の FPGA ピンにアクセスします。 パラレル NOR フラ ッシュからのデータ信号は、 .DI ポート経由でユーザー デザインに戻されます。UltraScale FPGA の CCLK、 D00_MOSI_0、 D01_DIN_0、 D02_0、 D03_0、 RDWR_FCS_B_0 ピンは専用ピンであ り、 物理ロケーシ ョ ンを変更できないため、 制約ファイル内では割り当てられません。

たとえば、 Clk_out を外部フラ ッシュに転送するには、 インスタンシエート した STARTUPE3 の USRCCLKO ポートに接続します。 FPGA の CCLK 出力は STARTUPE3 ブロ ッ クに接続しないとアクセスできないため、 デザインの最上位では Clk_out の明示的なポート宣言はあ り ません。CCLK 信号が常に外部パラレル NOR フラ ッシュ メモ リへアクティブに駆動されるよ うに、 USRCCLKO のイネーブルを制御する STARTUPE3 の USRCCLKTS ポートは 0 に接続しています。 内部ロジッ クから STARTUPE3 ブロ ッ クを経由して FPGA の専用外部ピンへ到達する信号はデザインの最上位ポート と しては現れず、 .xdc ファ イルには含まれません。

表 3: STARTUPE3 の BPI コンフ ィギュレーシ ョ ン  インターフェイス専用ピン

ロジック信号 STARTUPE3 ポート 専用ピン名FPGA (U1)

ピン位置

Linear_Flash_ce_n(0) FCSBO RDWR_FCS_B_0 AJ11

clk_out USRCCLKO CCLK_0 AF13

dq_o_e(3) DO[3] D03_0 AL11

dq_o_e(2) DO[2] D02_0 AM11

dq_o_e(1) DO[1] D01_DIN_0 AN11

dq_o_e(0) DO[0] D00_MOSI_0 AP11

dq_i(3) DI[3] D03_0 AL11

dq_i(2) DI[2] D02_0 AM11

dq_i(1) DI[1] D01_DIN_0 AN11

dq_i(0) DI[0] D00_MOSI_0 AP11

Page 26: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  26japan.xilinx.com

AXI EMC コアと STARTUPE3 プリ ミ ティブは最上位ラ ッパーの design_1_wrapper.vhd 内部で接続されるため、STARTUPE3 ブロ ッ クは IP インテグレーターのブロ ッ ク デザインには表示されません。 STARTUPE3 のインスタンシエーシ ョ ンは次のとおりです。

STARTUPE3_inst : component STARTUPE3 ----------------------- generic map ( PROG_USR => "FALSE", -- Activate program event security feature. SIM_CCLK_FREQ => 0.0 -- Set the Configuration Clock Frequency(ns) for simulation. ) port map ( CFGCLK => open, -- 1-bit output: Configuration main clock output CFGMCLK => open, -- 1-bit output: Configuration internal oscillator clock output DI => dq_i, -- 4-bit output: Allow receiving on the D input pin EOS => startupe3_eos, -- 1-bit output: Active-High output signal indicating the End Of Startup PREQ => open, -- 1-bit output: PROGRAM request to fabric output DO => dq_o_e(3 downto 0), -- 4-bit input: Allows control of the D pin output DTS => dq_t_e(3 downto 0), -- 4-bit input: Allows tristate of the D pin FCSBO => Linear_Flash_ce_n(0), -- 1-bit input: Controls the FCS_B pin for flash access FCSBTS => '0', -- 1-bit input: Tristate the FCS_B pin GSR => '0', -- 1-bit input: Global Set/Reset input (GSR cannot be used for the port) GTS => '0', -- 1-bit input: Global 3-state input (GTS cannot be used for the port name) KEYCLEARB => '1', -- 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM PACK => PACK_int, -- 1-bit input: PROGRAM acknowledge input USRCCLKO => Clk_out, -- 1-bit input: User CCLK input USRCCLKTS => '0', -- 1-bit input: User CCLK 3-state enable input USRDONEO => '1', -- 1-bit input: User DONE pin output control USRDONETS => '1' -- 1-bit input: User DONE 3-state enable output

ヒン ト : STARTUPE3 プリ ミ ティブを複数のコアに対して使用するデザインの場合、 この リ ファレンス デザインのよ うに STARTUPE3 を外部にインスタンシエート して ください。 外部にインスタンシエート した方が柔軟性が向上します。 ユーザー デザインで STARTUPE3 ポートにアクセスするのが AXI EMC コアのみの場合は、 [Use STARTUP Primitive Internal to IP] をオンにするこ と もできます。

STARTUPE3 のタイ ミング制約

STARTUPE3 ブロ ッ クの出力ピンは最上位ラ ッパーの design_1_wrapper.vhd には現れませんが、 STARTUPE3 ブロ ックの入出力信号にはタイ ミ ング制約を適用する必要があ り ます。

STARTUPE3 ブロ ッ クを通過する信号と並行して、 AXI EMC コアとパラレル NOR フラ ッシュ メモ リ間を行き来するデータ信号と制御信号は、 AXI EMC コア内の FIFO ロジッ クを使用して調整されます。 図 26 に、 これらの信号に必要なタイミ ング制約を示します。 図 25 で入力されたタイ ミ ング パラ メーターは、 パラレル NOR フラ ッシュ メモ リのデータシートからの抜粋で、 制御信号をパラレル NOR フラ ッシュ メモ リのデータ信号とアドレス信号に合わせて調整するよ う設定します。

Page 27: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  27japan.xilinx.com

図 26 は、 STARTUPE3 ブロ ッ クを通過して送信される信号も示しています。 タイ ミ ング制約の対象となるパス と、 ツールによ り考慮されない固定遅延が示されています。 制約されるパスは、 次に示す set_max_delay および set_min_delay 制約の対象です。

#### Following are the timing parameters of MT28GU01GAAA1EGC-0SIT flash, delays for the STARTUPE3 element, and #### delays related to the VCU108 board traces#### Max Tco -- Clock to input delay for flashset tco_max 5.5set tco_min 5.5#### Trace delays for VCU108 boardset tdata_trace_delay_max 0.25set tdata_trace_delay_min 0.25set tclk_trace_delay_max 0.2set tclk_trace_delay_min 0.2set startup_delay_max 7.000set startup_delay_min 1.350set board_del_max 1.000set board_del_min 0.500

#### Input delay constraints (max/min) for Linear_flash_wait[0]set_input_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tco_max + $tdata_trace_delay_max + $tclk_trace_delay_max + $board_del_max] [get_ports Linear_Flash_wait[0]]set_input_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tco_min + $tdata_trace_delay_min + $tclk_trace_delay_min + $board_del_min] [get_ports Linear_Flash_wait[0]]

次に示すロジッ ク と STARTUPE3 間のパス制約は、 図 26 で参照されています。

#### These constraints cover the paths going between logic and the STARTUPE3 blockset_max_delay -datapath_only -from [get_pins -hier {*STARTUP*_inst/DI[*]}] -to [get_cells -hier{*Mem_DQ_I_v_reg[*]}] 1.500set_max_delay -datapath_only -from [get_cells -hier {*mem_dq_o_reg_reg[*]}] -to [get_pins -hier*STARTUP*_inst/DO[*]] 1.500set_max_delay -datapath_only -from [get_cells -hier {*mem_dq_t_reg_reg[*]}] -to [get_pins -hier*STARTUP*_inst/DTS[*]] 1.500

次に示す STARTUPE3 制約をバイパスするデータ信号は、 図 26 で参照されています。

#### Input and output delay constraints max/min for mem_dq_io[*] signals that bypass STARTUPE3 block.Includes#### startup_delay_max/min values to match the paths of the bits traveling through STARTUPE3set_input_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tco_max + $tdata_trace_delay_max+ $tclk_trace_delay_max + $startup_delay_max + $board_del_max] [get_ports mem_dq_io[*]]set_input_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tco_min + $tdata_trace_delay_min+ $tclk_trace_delay_min + $startup_delay_min + $board_del_min] [get_ports mem_dq_io[*]]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tdata_trace_delay_max -$tclk_trace_delay_min + $startup_delay_max + $board_del_max] [get_ports mem_dq_io[*]]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tdata_trace_delay_min -$tclk_trace_delay_max + $startup_delay_min + $board_del_min] [get_ports mem_dq_io[*]]

Page 28: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  28japan.xilinx.com

次に示す STARTUPE3 制約をバイパスするアドレス信号と制御信号は、 図 26 で参照されています。

#### Output delay constraints (max/min) for Linear_Flash_address[*], Linear_Flash_oe_n, Linear_Flash_we_n, and #### Linear_Flash_adv_ldn pinsset_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tdata_trace_delay_max -$tclk_trace_delay_min + $board_del_max] [get_ports Linear_Flash_address[*]]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tdata_trace_delay_min -$tclk_trace_delay_max + $board_del_min] [get_ports Linear_Flash_address[*]]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tdata_trace_delay_max -$tclk_trace_delay_min + $board_del_max] [get_ports Linear_Flash_oe_n[0]]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tdata_trace_delay_min -$tclk_trace_delay_max + $board_del_min] [get_ports Linear_Flash_oe_n[0]]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tdata_trace_delay_max -$tclk_trace_delay_min + $board_del_max] [get_ports Linear_Flash_we_n]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tdata_trace_delay_min -$tclk_trace_delay_max + $board_del_min] [get_ports Linear_Flash_we_n]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -max [expr $tdata_trace_delay_max -$tclk_trace_delay_min + $board_del_max] [get_ports Linear_Flash_adv_ldn]set_output_delay -clock [get_clocks clk_out2_design_1_clk_wiz_0_0] -min [expr $tdata_trace_delay_min -$tclk_trace_delay_max + $board_del_min] [get_ports Linear_Flash_adv_ldn]

Page 29: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  29japan.xilinx.com

デザイン ロジッ クから USRCCLKO ピンまでのクロ ッ ク遅延を抑えるには、 set_max_delay 制約を使用します。STARTUPE3 プリ ミ ティブとの間のデータおよびト ラ イステート信号パスには、 USRCCLKO ピンの生成クロ ッ クを基準にした set_output_delay および set_input_delay 制約を与えます。 制約の作成手順と して、 まず STARTUPE3 ブロ ッ クの遅延およびパラレル NOR フラ ッシュ メモ リのセッ ト アップ要件を 『Virtex UltraScale FPGA データシート : DC 特性および AC スイ ッチ特性』 (DS893) [参照 5] および 『Micron Parallel NOR Flash Memory MT28GU01GAAA1EGC Data Sheet』 [参照 6] から求めます。 制約に使用するパラ メーターの例を表 4 と表 5 に示します。

上記の一部の制約は、 AXI EMC コアから STARTUPE3 ブロ ッ クへの信号を対象と しています。 それら以外の制約は、STARTUPE3 を経由せずに FPGA ピンから AXI EMC コアに直接送信される信号を対象と しています。

X-Ref Target - Figure 26

図 26:  STARTUPE3 のタイ ミング遅延

Address and control signals that bypass STARTUPE3 constraints

Data signals that bypass STARTUPE3 constraints

Logic to STARTUPE3 path constraints

Page 30: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ハードウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  30japan.xilinx.com

表 4 に、 CCLK の固定遅延および STARTUPE3 を経由して送信されるデータ信号を示します。

図 26 に VCU108 評価ボードのサンプル制約を示しています。 ボードおよび Micron MT28GU01GAAA1EGC フラ ッシュ メモ リのタイ ミ ング遅延は、 実測およびフラ ッシュ メモ リのデータシートから得るこ とができます。

これらの制約で、 AXI EMC IP コア ロジッ ク との間のパス遅延、 パラレル NOR フラ ッシュ メモ リのセッ ト アップおよびホールド要件、 FPGA の I/O ポート遅延、 STARTUPE3 プリ ミ ティブの遅延、 ボードの ト レース遅延が指定されます。 リファレンス デザインのタイ ミ ング制約は、 制約ファイル vcu108.xdc に含まれます。 このサンプル デザインを VCU108 以外のボードに適用する場合は、 フラ ッシュ メモ リの ト レース遅延、 クロ ッ ク遅延、 および出力遅延の各値を変更して、正し く機能するこ とを確認する必要があ り ます。

BPI コンフ ィギュレーシ ョ ン  モードの制約

マスター BPI x16 コンフ ィギュレーシ ョ ンを正し く実行するには、 golden.bin ファ イルの生成時に適切なプロパティを使用する必要があ り ます。 VCU108 評価ボードの 1.8V パラレル NOR フラ ッシュをサポート した リ ファレンス .xdc 制約ファイルには、 図 25 に示すプロパティが含まれます。 これらオプシ ョ ンの詳細は、 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570) [参照 1] および 『UltraScale FPGA の BPI コンフ ィギュレーシ ョ ンおよびフラ ッシュ プログラム アプリ ケーシ ョ ン ノート 』 (XAPP1220) [参照 7] を参照してください。

set_property CONFIG_VOLTAGE 1.8 [current_design]set_property CFGBVS GND [current_design]set_property CONFIG_MODE BPI16 [current_design]

表 4: Virtex UltraScale のタイ ミング パラメーター

シンボル 説明

VCCINT 動作電圧 = 0.95V

単位‐2 スピード  グレード

STARTUPE3 ポート

TUSRCCLKO STARTUPE3 USRCCLKO 入力ポートから CCLK ピンまでの出力遅延 1.00/6.70 ns、 最小/最大

TDO DO[3:0] ポートから D03 ~ D00 ピンまでの出力遅延 1.00/7.70 ns、 最小/最大

TDTS DTS[3:0] ポートから D03 ~ D00 ピンまでの ト ライステート遅延 1.00/8.30 ns、 最小/最大

TFCSBO FCSBO ポートから FCS_B ピンまでの出力遅延 1.00/8.00 ns、 最小/最大

TFCSBTS FCSBTS ポートから FCS_B ピンまでの ト ラ イステート遅延 1.00/8.00 ns、 最小/最大

TDI D03 ~ D00 ピンから DI[3:0] ポート までの入力遅延 0.5/3.1 ns、 最小/最大

表 5: Micron MT28GU01GAAA1EGC パラレル NOR フラ ッシュ  メモリのタイ ミング パラメーター

シンボル 説明 値

TELQV (max) CE# Low から出力有効まで 96 ns

TAVQV (max) アドレスから出力有効まで 96 ns

TAPA (max) ページ アドレス アクセス (非 MUX のみ) 15 ns

TACC (min) アドレス ラ ッチ ク ロ ッ クからの読み出しアクセス時間 96 ns

TGHQZ (max) OE# High から High-Z の出力まで 7 ns

TWLWH (min) WE# の書き込みパルス幅 Low 40 ns

TELWL (min) CE# セッ ト アップから WE# Low まで 0 ns

TWHEH (min) WE# High からの CE# ホールド 0 ns

TWHGL (min) WE# High から OE# Low まで 0 ns

TBHWH (min) WP# セッ ト アップから WE# High まで 200 ns

TEHQZ (max) CE# High から High-Z の出力まで 7ns

TGHQZ (max) OE# High から High-Z の出力まで 7 ns

Page 31: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ソフ トウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  31japan.xilinx.com

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property BITSTREAM.CONFIG.CONFIGFALLBACK Enable [current_design]set_property BITSTREAM.CONFIG.TIMER_CFG 0x00050000 [current_design]set_property BITSTREAM.CONFIG.BPI_SYNC_MODE Type1 [current_design]set_property BITSTREAM.CONFIG.UNUSEDPIN Pulldown [current_design]set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT Enable [current_design]set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 32'h01000000 [current_design]

ソフ トウェア システムの詳細

このリ ファレンス デザインは、 MicroBlaze ソフ ト プロセッサ コア上で動作するソフ ト ウェアで AXI EMC コアを駆動し、STARTUPE3 プリ ミ ティブへのハードウェア接続を使用してパラレル NOR フラ ッシュ メモ リに対する読み出し /書き込みを実行します。 このリ ファレンス デザインには、 下位のソフ ト ウェア読み出し /書き込み動作の例を記述した vcu108_emc_rw.c ファ イルが付属します。 これらの読み出し /書き込み関数を使用して、 Micron フラ ッシュ メモ リの動作を実装しています (このフラ ッシュ メモ リのコマンドは『Micron Parallel NOR Flash Memory MT28GU01GAAA1EGC Data Sheet』 [参照 6] を参照)。 このメモ リは、 VCU108 評価ボードの U133 の位置に実装されています (図 3 参照)。

別のベンダーのフラ ッシュ メモ リ を使用する際はメモ リ動作の作成が必要な場合があ り、 vcu108_emc_rw.c の関数をこれに使用できます。 ただし制御ロジッ クからフラ ッシュ アレイに対する読み出し /書き込み/消去の実行、 およびフラ ッシュ メモ リの動作を制御するレジスタへのアクセスに使用するコマンドは、 ほとんどのパラレル NOR フラ ッシュ メモ リでほぼ共通しています。 この リ ファレンス デザインは、 VCU108 評価ボードに実装された Micron MT28GU01GAAA1EGC パラレル NOR フラ ッシュ メモ リのコマンド セッ ト を使用しています。 サポート される命令セッ トは、 [参照 6] を参照して ください。

フラッシュ  コマンド  セッ ト

フラ ッシュ アレイへのアクセスやパラレル NOR フラ ッシュ メモ リに対するその他の動作を実行するコマンドは数多く存在します。 すべてのパラレル NOR フラ ッシュ ト ランザクシ ョ ンは、 AXI EMC コアに接続されたフラ ッシュ メモ リによりサポート されるコマンドに依存します。 サポート されるコマンドについては、 使用するパラレル NOR フラ ッシュ メモリのデータシート を参照して ください。 Micron MT28GU01GAAA1EGC パラレル NOR フラ ッシュ メモ リのコマンドは、[参照 6] に記載されています。 この リ ファレンス デザインでユーザーが実行できるのは、 図 15 のメニューに表示されたコマンドのみです。 フラ ッシュ コマンド セッ トのフローチャートは、 図 27 を参照して ください。

Page 32: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ソフ トウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  32japan.xilinx.com

図 27 に示したサポート される各動作には、 それぞれ特定のコマンド シーケンスがあ り ます。 次に、 主要な動作のコマンド シーケンスを示します。

XILFLASH ライブラ リは、 共通フラ ッシュ インターフェイス (CFI) 規格に準拠するフラ ッシュ メモ リ デバイスの機能をインプリ メン ト します。 CFI によ り、 単一のフラ ッシュ ライブラ リ をデバイス ファ ミ リ全体で使用できます。 これは特定のデバイス向けではなく、 一連のコマンドによる読み出し、 書き込み、 および消去アルゴ リ ズムに対応するライブラ リです。 CFI は実行時に使用するアルゴ リズムの決定が可能です。

こ こでは、 基本のパラレル NOR フラ ッシュのアクセス動作向けの XILFLASH ライブラ リ API を説明します。

1. フラ ッシュの初期化: 関数 XFlash_Initialize() は、 ライブラ リ内のほかのどの関数よ り も前に、 アプリ ケーシ ョ ンによって呼び出される必要があ り ます。 この初期化関数はデバイス ファ ミ リ をチェ ッ ク し、 XFlash インスタンスを (たとえば、 Micron や Spansion などの) ファ ミ リ固有データで初期化します。 ターゲッ トのフラ ッシュ CFI クエ リが正常に読み出された後、 消去、 読み出し、 書き込みなどの以降の動作のためにベクター テーブルが維持されます。 ファミ リ固有 API の関数ポインターが含まれるベクター テーブルがセッ ト アップされ、 次のタスクを実行するファ ミ リ固有の初期化ルーチンが呼び出されます。

a. CFI クエ リ コマンドを実行します。 0x0098 でのベース アドレスの書き込み (CFI クエ リ コマンド ) です。

b. フラ ッシュ ファ ミ リ と レイアウ ト を識別します。 CFI データを 0x10、 0x11、 0x12 から識別します (16 進数の QRY 文字)。

c. ベクター テーブルにジオメ ト リ リードバッ クを取り込みます。 フラ ッシュ アーキテクチャから特定のオプシ ョンを指定します。 『Micron Parallel NOR Flash Memory MT28GU01GAAA1EGC Data Sheet』 を参照して ください。

X-Ref Target - Figure 27

図 27: フラ ッシュ  コマンド  セッ トのフローチャート

Page 33: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

ソフ トウェア システムの詳細

XAPP1282 (v1.0) 2016 年 9 月 27 日  33japan.xilinx.com

d. ベクター テーブルを CFI データでセッ ト アップします。 ベクター テーブルからのデータでベース アドレスをリードバッ ク します。

2. フラ ッシュの消去: 消去動作は、 フラ ッシュ メモ リ内で指定されたアドレス範囲 (ブロ ッ ク ) を消去するためのものです。 消去動作が正常に完了したかまたはエラーが報告された後でなければ制御はユーザーに戻されないという点で、消去呼び出しはブロ ッ ク型です。 消去するバイ ト数は、 デバイスの境界内であればいくつでも構いません。 フラ ッシュの消去では、 次のタスクが実行されます。

a. ブロ ッ クをロ ッ ク します。

b. 0x20 のブロ ッ ク アドレスを書き込みます。

c. ブロ ッ ク アドレスをアンロ ッ ク します。

d. 確認のために、 0xD0 でブロ ッ ク アドレスを消去します。

e. 読み出しステータス レジスタ = 0x7 でブロ ッ クは消去されます。

3. フラ ッシュの書き込み: 最小でゼロ バイ トから最大でフラ ッシュ メモ リ全体の書き込みを実行できます。 書き込みが指定されたオフセッ ト アドレスがフラ ッシュ メモ リの範囲外であったり、 オフセッ ト アドレスから指定されたバイト数がフラ ッシュ メモ リの境界を越えたり した場合は、 エラーが報告されます。 書き込み動作が正常に完了したかまたはエラーが報告された後でなければ制御はユーザーに戻されないという点で、 書き込みはブロ ッ ク型です。 この動作によ り、 フラ ッシュ メモ リがユーザー バッファーで指定されたデータでプログラムされます。 ソース アドレスとデスティネーシ ョ ン アドレスは、 フラ ッシュ データ バスの幅に揃える必要があ り ます。 プロセッサが揃えられていないアクセスをサポートする場合には、 ソース アドレスをフラ ッシュの幅に揃える必要はあ り ません。 ただし、このライブラ リは汎用であ り、 (MicroBlaze プロセッサなどの) 一部のプロセッサは揃えられていないアクセスをサポート しないため、 API ではソース アドレスを揃える必要があ り ます。 フラ ッシュの書き込みでは、 次のタスクが実行されます。

a. ブロ ッ ク = 0x20 をロ ッ ク します。

b. デバイスが初期化される と、 ステートは IsReady = 1 になり ます。

c. フラ ッシュのリセッ ト : この関数は、 フラ ッシュ デバイスを リセッ ト し、 それを読み出しモードにします。

d. ブロ ッ ク = 0x60h をアンロ ッ ク します。

e. バッファー データをフラ ッシュ デバイスに送信します。

f. 制御が戻され、 成功した場合、 書き込み動作は確定されます。

4. フラ ッシュの読み出し : 最小でゼロ バイ トから最大でフラ ッシュ メモ リ全体の読み出しを実行します。 読み出しに指定されたオフセッ ト アドレスがフラ ッシュ境界の範囲外である場合、 エラーが報告されます。 読み出し関数は、 フラ ッシュ メモ リの境界を越えてメモ リ位置を読み出します。 バイ ト数とオフセッ ト アドレスを加算した数が、 フラ ッシュ メモ リ アドレスの境界内に必ず収まるよ うに注意する必要があ り ます。 読み出し動作が正常に完了したかまたはエラーが報告された後でなければ制御はユーザーに戻されないという点で、 書き込みはブロ ッ ク型です。

a. ブロ ッ ク = 0x20 をロ ッ ク します。

b. デバイスが初期化される と、 ステートは IsReady = 1 になり ます。

c. フラ ッシュのリセッ ト : この関数は、 フラ ッシュ デバイスを リセッ ト し、 それを読み出しモードにします。

d. ブロ ッ ク = 0x60h をアンロ ッ ク します。

e. フラ ッシュ メモ リ内のデータのブロッ クを、 オフセッ ト アドレスから読み出します。

Page 34: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

チェ ックリス ト とデバッグのヒン ト

XAPP1282 (v1.0) 2016 年 9 月 27 日  34japan.xilinx.com

チェ ックリス ト とデバッグのヒン ト

1. このデモでは、 「AXI EMC IP コア (3.0) のカスタマイズ」 のセクシ ョ ンで [Use STARTUP Primitive External to IP] をオンにする必要があ り ます (図 25 参照)。

2. リ ファレンス デザインのデモを実行する前に、 「VCU108 評価ボードをセッ ト アップする」 で説明した手順をすべて実行しておく必要があ り ます。 これによ り、 次が確実に実施されます。

° ボードに電源を正し く接続し、 電源スイ ッチ SW1 を ON の位置にする。

° マスター SPI コンフ ィギュレーシ ョ ン モードを正し く設定する (モード ピンを M[2:0]=010 に設定)。 DIP スイ ッチ SW16 を図 3 のよ うに設定する。

° UART ケーブルと JTAG ケーブルの両方を使用して、 VCU108 評価ボード とホス ト コンピューターを接続する (図 3 参照)。

3. VCU108 評価ボードに付属のオンボード JTAG ケーブルの代わりにザイ リ ンクス プラ ッ ト フォーム ケーブル USB II を使用する場合、 リ ファレンス デザイン スク リプ ト を別のケーブルをターゲッ トにするよ う変更する必要があ り ます。 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908) [参照 9]を参照してください。

4. Tera Term にリ ファレンス デザインのメ イン メニュー (図 15 参照) が表示されない場合、 またはホス ト コンピューターと VCU108 評価ボード (J4) の間で UART 通信ができない場合は、Tera Term と コンピューターの COM ポートが正し く設定されているこ とを確認します。

° Windows デバイス マネージャーで COM ポート ド ラ イバーが正し く選択されているこ とを確認します。「Enhanced」 ではなく 「Standard」 と書かれたド ライバーを選択します (図 28)。 COM 番号はコンピューターによって異なり ます。 Tera Term に VCU108 System Controller Main Menu が表示される場合は、 拡張 COM ポートが誤って選択されています。 標準 COM ポートに変更してください。

Page 35: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

チェ ックリス ト とデバッグのヒン ト

XAPP1282 (v1.0) 2016 年 9 月 27 日  35japan.xilinx.com

° Tera Term が正し く インス トールされているこ とを確認します ( リ ファレンス デザインのテス トにはバージ ョ ン 4.90 を使用)。

° Tera Term の [Port Settings] タブで COM ポートが図 14 と同じ値に設定されているこ とを確認します。

5. FPGA がコンフ ィギュレーシ ョ ンされていないと考えられる場合

° パラレル NOR フラ ッシュ メモ リに有効なビッ ト ス ト リーム イ メージが書き込まれているこ とを確認します。

° FPGA PROG プッシュボタン (SW4) を短く押すか、 SW1 でパワー サイクルを実行して FPGA のプログラムを開始します (スイ ッチの位置は図 3 参照)。

6. バッチ ファ イルが正し く実行されない場合

° Vivado Design Suite 2016.1 がインス トールされ、 パスが正し く設定されているこ とを確認します。

7. DIP スイ ッチ SW16 でマスター BPI コンフ ィギュレーシ ョ ン モードを正し く設定していて DONE LED が点灯しない場合

° JTAG インターフェイス (J106) を使用して FPGA の golden.bin を直接プログラムできるこ とを確認します。

° リードバッ クを実行して、 パラレル NOR フラ ッシュ メモ リの別のアドレスにプログラムした内容をチェッ ク します (図 29)。

X-Ref Target - Figure 28

図 28:標準 COM ポート  ド ライバー

Page 36: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

チェ ックリス ト とデバッグのヒン ト

XAPP1282 (v1.0) 2016 年 9 月 27 日  36japan.xilinx.com

° ユーザー デザインで write_bitstream 制約が BPI コンフ ィギュレーシ ョ ン モード向けに正し く インプ リ メン ト されているこ とを確認します ( 「ハード ウェア システムの詳細」 参照)。

° ご く稀に update.bin のダウンロード中にエラーが発生して LED0 が点滅するこ とがあ り ます。 この場合、update.bin を消去しても う一度プログラムし直します。 XMODEM がハングアップする場合は、 デバイスが消去されているこ とを確認します。

° DONE LED が点灯しているが、 LED 0/LED 1 が正し く点滅していない場合は、 load_golden.bat が使用されているこ とを確認します。 初期イ メージ (golden.bin) を読み込んだ場合は LED0 が点滅し、 更新用イ メージ (update.bin) を読み込んだ場合は LED1 が点滅します。

8. このリ ファレンス デザインは、 Micron MT28GU01GAAA1EGC パラレル NOR フラ ッシュ メモ リのコマンドを使用しています。 このリ ファレンス デザインで別のフラ ッシュ メモ リ を使用する場合は、 使用するフラ ッシュ メモ リに合わせてデザインを一部変更する必要があ り ます。 使用するフラ ッシュ メモ リのデータシート を参照してください。

9. JTAG-to-AXI IP を使用する と、下位の JTAG コマンドを Vivado ハードウェア マネージャーから JTAG ケーブル経由で送信できます。 パラレル NOR フラ ッシュ メモ リに対して IDCODE チェッ クを実行するには、 次の Tcl コマンド シーケンスを使用します。

a. Tcl コンソールでパスを c:/xapp1282/source ディ レク ト リに変更し、次のコマンドを入力してパラレル NOR 不フラ ッシュ ID を表示します。

source jtag_to_axi.tcl

10. オプシ ョ ンと して、コンピューターと VCU108 評価ボード間の JTAG インターフェイス と してプラ ッ ト フォーム ケーブル USB II を使用できますが、 それにはターゲッ ト ケーブルを指定している Vivado スク リプ ト を変更する必要があり ます。

X-Ref Target - Figure 29

図 29: オプシ ョ ン 4: パラレル NOR フラッシュの出力の読み出し

Page 37: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

まとめ

XAPP1282 (v1.0) 2016 年 9 月 27 日  37japan.xilinx.com

まとめ

このアプリ ケーシ ョ ン ノートでは、 コンフ ィギュレーシ ョ ン後に UltraScale FPGA からパラレル NOR フラ ッシュ メモ リに簡単にアクセスする方法を説明しました。 パラレル NOR フラ ッシュ メモ リにアクセスして、 複数のビッ ト ス ト リームを格納したり リモートからアップデート した りできるよ うになる と、 ボード スペースを節約するだけでなく メモ リ ス トレージ ソ リ ューシ ョ ンのコス ト も削減できる可能性があ り ます。

リファレンス デザイン

このアプリ ケーシ ョ ン ノートの リ ファレンス デザイン ファ イルは、 ザイ リ ンクスのウェブサイ トからダウンロードできます。 表 6 に、 リ ファレンス デザインの詳細を示します。

 

表 6: リファレンス デザインの詳細

パラメーター 説明

全般

開発者 Steven Howell、 Shashikant Jadhav、 Stephanie Tapp

ターゲッ ト デバイス Virtex UltraScale FPGA (XCVU095-2FFVA2104)

ソース コードの提供 あ り

ソース コードの形式 Verilog

既存のザイ リ ンクス アプリ ケーシ ョ ン ノート / リ ファレンス デザイン、 またはサードパーティからデザインへのコード /IP コアの使用

Vivado Design Suite

シミ ュレーシ ョ ン

論理シ ミ ュレーシ ョ ンの実施 なし

タイ ミ ング シ ミ ュレーシ ョ ンの実施 なし

論理シ ミ ュレーシ ョ ンおよびタイ ミ ング シ ミ ュレーシ ョンでのテス トベンチの利用

なし

テス トベンチの形式 N/A

使用したシ ミ ュレータ /バージ ョ ン N/A

SPICE/IBIS シ ミ ュレーシ ョ ンの実施 N/A

インプリ メンテーシ ョ ン

使用した合成ツール/バージ ョ ン Vivado 合成

使用したインプリ メンテーシ ョ ン ツール/バージ ョ ン Vivado Design Suite および SDK 2016.1

スタティ ッ ク タイ ミ ング解析の実施 あ り

ハードウェア検証

ハードウェア検証の実施 あ り

使用したハード ウェア プラ ッ ト フォーム VCU108 評価ボード

Page 38: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

参考資料

XAPP1282 (v1.0) 2016 年 9 月 27 日  38japan.xilinx.com

参考資料

注記:日本語版のバージ ョ ンは、 英語版よ り古い場合があ り ます。

1. 『UltraScale アーキテクチャ コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG570: 英語版、 日本語版)

2. 『Vivado Design Suite ク イ ッ ク スタート ガイ ド』 (UG975: 英語版、 日本語版)

3. 『Tera Term ターミナル エミ ュレーター インス トール ガイ ド』 (UG1036)

4. 『Silicon Labs CP210x USB-to-UART インス トール ガイ ド』 (UG1033)

5. 『Virtex UltraScale FPGA データシート : DC 特性および AC スイ ッチ特性』 (DS893: 英語版、 日本語版)

6. 『Micron Parallel NOR Flash Memory MT28GU01GAAA1EGC Data Sheet』 (www.micron.com)

7. 『UltraScale FPGA の BPI コンフ ィギュレーシ ョ ンおよびフラ ッシュ プログラム』 (XAPP1220: 英語版、 日本語版)

8. VCU108 評価キッ トのウェブ ページ (japan.xilinx.com/vcu108)

9. 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908: 英語版、 日本語版)

10. 『Vivado Design Suite Tcl コマンド リ ファレンス ガイ ド』 (UG835: 英語版、 日本語版)

11. 『VCU108 評価キッ ト ク イ ッ ク スタート ガイ ド』 (XTP400)

12. 『VCU108 ボード ユーザー ガイ ド』 (UG1066)

13. 『VCU108 ソフ ト ウェア インス トールおよびボード セッ ト アップ チュート リ アル』 (XTP368)

14. 『AXI EMC 製品ガイ ド』 (PG100)

改訂履歴

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

日付 バージョ ン 内容

2016 年 9 月 27 日 1.0 初版

Page 39: コンフィギュレーション後に UltraScale FPGA から STARTUPE3 … · 2. Tera Term をダウンロードしてインストールします ( リファレンス デザインのテストにはバージョン

法的通知

XAPP1282 (v1.0) 2016 年 9 月 27 日  39japan.xilinx.com

法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開

示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適用される

法律が許容する最大限の範囲で、 (1) 本情報は 「現状有姿」、 およびすべて受領者の責任で (with all faults) とい う状態で提供され、 ザイ リ

ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこれらに限られません)、すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿または貴社による本情報の使用

を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負わない (契約上、 不法行為上 (過失の

場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損害には、 直接、 間接、 特別、 付随的、 結

果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信用の損失、 その他あらゆる種類の損失や損害を

含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可能であったり、 ザイ リ ンクスがそれらの可能性につい

て助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情報に含まれるいかなる誤り も訂正する義務を負わず、 本情

報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負いません。 事前の書面による同意のない限り、 貴殿または貴社

は本情報を再生産、 変更、 頒布、 または公に展示してはなり ません。 一定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と と

なるので、 http://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照して ください。 IP コアは、 ザイ リ ンクスが貴殿

または貴社に付与したライセンスに含まれる保証と補助的条件に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、

または、 フェイルセーフの動作を要求するアプリ ケーシ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ うな

重大なアプリ ケーシ ョ ンにザイ リ ンクスの製品を使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。

http://japan.xilinx.com/legal.htm#tos で見られるザイ リ ンクスの販売条件を参照してください。

自動車用のアプリ ケーシ ョ ンの免責条項

オートモーティブ製品 (製品番号に 「XA」 が含まれる ) は、 ISO 26262 自動車用機能安全規格に従った安全コンセプ ト または余剰性の機

能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セーフティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用前または提供前

に安全を目的と して十分なテス ト を行う ものと します。 セーフティ設計なしにセーフティ アプリ ケーシ ョ ンで製品を使用する リ スクは

すべて顧客が負い、 製品責任の制限を規定する適用法令および規則にのみ従う ものと します。

© Copyright 2016 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Artix、 ISE、 Kintex、 Spartan、 Virtex、 Vivado、 Zynq、 およびこの文書に含まれるその

他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 すべてのその他の商標は、 それぞれの保有者に帰属

します。