AXI Quad SPI v3 - Xilinx · AXI Quad SPI v3.2 LogiCORE IP 製品ガイド Vivado Design Suite PG153...

Post on 20-Feb-2020

12 views 0 download

Transcript of AXI Quad SPI v3 - Xilinx · AXI Quad SPI v3.2 LogiCORE IP 製品ガイド Vivado Design Suite PG153...

AXI Quad SPI v3.2

LogiCORE IP 製品ガイド

Vivado Design Suite

PG153 2019 年 7 月 8 日

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

AXI Quad SPI v3.2 2

PG153 2019 年 7 月 8 日 japan.xilinx.com

目次

IP の概要

第 1章: 概要レガシ モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

AXI4 インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

コア内部のサブモジュール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

機能一覧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

サポート されていない機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

ラ イセンスおよび注文情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

第 2章: 製品仕様規格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

性能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

リ ソース使用状況 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

ポートの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

レジスタ空間 (レガシおよびエンハンス ト モード ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

仕様との相違点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

第 3章: コアを使用するデザイン一般的なデザイン ガイ ド ライン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

ク ロ ッキング (SPI ク ロ ッ ク位相および極性の制御) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

リセッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

プロ ト コルの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

第 4章: デザイン  フローの手順コアのカスタマイズおよび生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

コアへの制約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

シ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

合成およびインプリ メンテーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

第 5章: サンプル デザイン概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

サンプル デザインのインプリ メンテーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

KC705 ボード上でのサンプル デザインのテス ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

サンプル デザインのシ ミ ュレーシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

プログラム シーケンスの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

第 6章: テストベンチ概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

結果の確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

AXI Quad SPI v3.2 3

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 A: 検証、 準拠性、 相互運用性

付録 B: アップグレードVivado Design Suite への移行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Vivado Design Suite でのアップグレード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

付録 C: デバッグザイ リ ンクス ウェブサイ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Vivado Design Suite のデバッグ機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

ハードウェア デバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

インターフェイスのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

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

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

改訂履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

お読みください: 重要な法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

AXI Quad SPI v3.2 4

PG153 2019 年 7 月 8 日 japan.xilinx.com Production 製品仕様

はじめにLogiCORE™ IP AXI Quad Serial Peripheral Interface (SPI) コアは、AXI4 インターフェイスをスタンダード、 デュアル、 またはクワッ ド SPI プロ ト コル命令セッ トに対応した SPI スレーブ デバイスに接続します。 このコアは、 SPI スレーブ デバイスへのシ リアル インターフェイスを提供します。 デュアル/クワッ ド SPI は Motorola M68HC11 のデータシートで定義されたスタンダード SPI プロ ト コルを拡張したもので、 マスターとスレーブの間で簡単にデータを交換できます。

機能

• コンフ ィギュレーシ ョ ン可能な AXI4 インターフェイス。 AXI4-Lite インターフェイスを選択する と、 コア バージ ョ ン 1.00 と下位互換 (レガシ モード )

• データ受信レジスタ (DRR) およびデータ送信レジスタ (DTR) FIFO に対するバース ト モードをサポート したコンフ ィギュレーシ ョ ン可能な AXI4 インターフェイス

• コンフ ィギュレーシ ョ ン可能な XIP (eXecute In Place) モード

• AXI4-Lite または AXI4 インターフェイスに 32 ビッ ト スレーブと して接続

• コンフ ィギュレーシ ョ ン可能な SPI モード

° スタンダード SPI モード

° デュアル SPI モード

° クワ ッ ド SPI モード

• プログラム可能な SPI ク ロ ッ ク位相および極性

• コンフ ィギュレーシ ョ ン可能な FIFO の深さ (デュアル/クワ ッ ド /スタンダード SPI モードでは 16 または 256 エレ メン ト )。 XIP モードでは FIFO の深さは 16 で固定

• デュアル/クワ ッ ド モードでは次のスレーブ メモ リ を選択可能: 混在、 Micron、 Winbond、 および Spansion (ベータ バージ ョ ン)

IP の概要

この LogiCORE IP について

コアの概要

サポート される

デバイス ファ ミ リ (1)

UltraScale+™UltraScale™

Zynq®-7000 SoC、7 シ リーズ FPGA

サポート される

ユーザー インターフェイス

AXI4、 AXI4-Lite

リ ソースPerformance and Resource Utilization (ウェブ ページ)

コアに含まれるもの

デザイン ファイル VHDL

サンプル デザイン VHDL

テス トベンチ VHDL

制約ファイル ザイ リ ンクス デザイン制約ファ イル (.xdc)

シ ミ ュレーシ ョ ン モデル

なし

サポート される

ソフ ト ウェア ド ラ イバー (2)

スタンドアロンおよび Linux

テスト済みデザイン  フロー (3)

デザイン入力 Vivado® Design Suite

シ ミ ュレーシ ョ ン

サポート されているシ ミ ュレータの一覧は、

『Vivado Design Suite ユーザー ガイ ド :リ リース ノート、 インス トールおよび

ライセンス』 を参照

合成 Vivado 合成

サポート

ザイ リ ンクス サポート ウェブ ページで提供

注記:1. サポート されているデバイスの一覧は、 Vivado IP カタログを参

照して ください。

2. スタンドアロン ド ライバーの詳細は、 ザイ リ ンクス Wiki ペー

ジでソフ ト ウェア開発キッ ト (SDK) のディ レク ト リ (<install_directory>/SDK/<release>/data/embeddedsw/doc/

xilinx_drivers.htm) を参照して ください。

3. サポート されているツールのバージ ョ ンは、 『Vivado Design Suite ユーザー ガイ ド : リ リース ノート、 インス トールおよびラ

イセンス』 を参照してください。

AXI Quad SPI v3.2 5

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1章

概要図 1-1 に、 AXI4-Lite インターフェイスを選択してコンフ ィギュレーシ ョ ンした AXI Quad SPI コアの最上位ブロ ッ ク図を示します。

AXI4-Lite と AXI4 のどちらのインターフェイスを使用するかは、 Vivado® 統合設計環境 (IDE) の [Enable Performance Mode] チェッ ク ボッ クスで決ま り ます (第 4 章参照)。 デフォルトではこのチェッ ク ボッ クスはオフのため、AXI4-Lite インターフェイスが選択されます。 AXI4 インターフェイスを選択する と、 このコアは常にスレーブ IP として動作します。

X-Ref Target - Figure 1-1

図 1‐1: AXI Quad SPI コアの最上位ブロック図

IPICInterface

TXFIFO

RXFIFO

RdEnable

TxData

Wr Enable

Rx Data

InterruptController

IPIERIPISR

DGIER

Rx OCCReg

TxOCCReg

SPISSR

SPIDRR

SPIDTR

SPISR

SPICR

OCCCounter

CDCBlock

Register Module

TxandRx

Counter

SPI TransferDone

SPISEL, MODF,SPI Xfer Done

STARTUPBlock

CMD Compareand

BehaviorSignals

sck_o

sck_t

sck_i

io0_o

io0_t

io0_i

io1_o

io1_t

io1_i

io2_o

io2_t

io2_i

io3_o

io3_t

io3_i

spisel

ext_spi_clk

SPI ClkGenerator

SPIReceive

DataLogic

SPITransmitDataLogic

SPI Mode 0Logic

SPI Mode 1and 2 Logic

bus2ip_data(DTR)

IP2bus_data(DRR)

ss_oss_tss_i

Onl

yin

Qua

dSP

IMod

eSt

d/Du

al/Q

uad

SPIM

ode

AXI Quad SPI Block Diagram

SPI CLKDomain

AXI CLKDomain

AXI4

X23022 070819

AXI Quad SPI v3.2 6

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

レガシ モード

Vivado 統合設計環境 (IDE) で [Enable Performance Mode] をオフにする とレガシ モードが選択されます。 レガシ モードでは AXI4-Lite インターフェイスを使用します。 このモードの機能、 レジスタ ビッ ト位置、 およびレジスタ アクセスは従来のバージ ョ ンの AXI Quad SPI コアと完全に下位互換性があ り ます。

AXI Quad SPI コアをスタンダード SPI モードにする と、 マスターと選択したスレーブの間で 4 線インターフェイス (受信、 送信、 クロ ッ ク、 およびスレーブ選択) をサポート した全二重同期チャネルと して動作します。 デュアル/クワ ッ ド SPI モードにする と、 外部メモ リ を接続するための追加のピンが使用可能になり ます。 制御レジスタの設定および使用するコマンドによっては、 これらの追加のピンでコマンド、 アドレス、 およびデータを送信します。

このコアは、 スレーブ選択のデフォルト と して手動スレーブ選択をサポート します。 このモードでは、 スレーブ選択レジスタにデータを書き込んでスレーブ選択ラインを手動で制御できます。 このため、 エレ メン ト間でスレーブ選択ラインを ト グルせずに任意の数のエレ メン ト を転送できます。 ただし、 新規転送を開始する前にはスレーブ選択ラインを ト グルする必要があ り ます。

スレーブ選択には、 自動スレーブ選択モード もあ り ます。 このモードでは、 1 エレ メン トの転送が完了するたびにスレーブ選択ラインが自動でト グルされます (FIFO が無効の場合)。 このモードはスタンダード SPI モードでのみサポート されます。 詳細は第 3 章の 「SPI プロ ト コルのスレーブ選択アサート モード」 を参照して ください。

コアの機能は、 スタンダード SPI モード とデュアル/クワ ッ ド SPI モードに大別されます。 これらのモードは、 それぞれスレーブ メモ リの動作の仕方が異なるため機能も異なり ます。

スタンダード  SPI モード

Vivado IDE で [Mode] を [Standard] に設定する と、スタンダード SPI モードが選択されます。 このモードに関連するパラ メーターは次のとおりです。

• [Mode]

• [Enable STARTUPE2 Primitive]

• [Transaction Width]

• [No. of Slaves]

• [Frequency Ratio]

• [Enable FIFO]

スタンダード SPI モードで FIFO を使用するかど うかは、 コアのプロパティで設定します。

• FIFO を含めるかど うかは、 [Enable FIFO] パラ メーターで設定します。 [FIFO Depth] パラ メーターは、 [Enable FIFO] パラ メーターと連動しています。 FIFO を有効にした場合、 [FIFO Depth] パラ メーターで送信および受信 FIFO の深さを 16 または 256 に制限します。 FIFO が無効な場合、 [FIFO Depth] パラ メーターの値は 0 と見なされます。 深さは、 フラ ッシュ メモ リのページ サイズに最適な 256 とするこ とを推奨します。

• このモードでは、 [Enable FIFO] パラ メーターで FIFO を有効にした場合、 [FIFO Depth] の有効な値は 16 または 256 です。

[Enable FIFO] が 0 の場合、 FIFO はコアに含まれません。 データ送信には 1 つの送信および受信レジスタが使用されます。 [FIFO Depth] を 16 または 256 と した場合、 深さ 16 または 256 エレ メン トの送信または受信 FIFO がデザインに追加されます。 送信および受信 FIFO の幅は [Transaction Width] で設定します。

AXI Quad SPI コアは連続転送モードをサポート しています。 マスターと して設定した場合、 送信レジスタ /FIFO のデータがなくなるまで転送が継続します。 この機能は手動スレーブ選択、 自動スレーブ選択どちらのモードでも利用できます。 たとえばページ読み出しコマンド中、 DTR 内のコマンド、 アドレス、 データ ビート数は SPI メモ リによって読み出されるデータ バイ ト と同じ数に設定する必要があ り ます。

AXI Quad SPI v3.2 7

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

コアをスレーブと して設定した場合、 データ エレ メン トの転送中にスレーブ選択ライン (SPISEL) が High (非アクティブ ステート ) になる と現在の転送は中止されます。 スレーブ選択ラインが Low になる と、 中止したデータ エレメン トが再び送信されます。 このコアをスレーブ モードにできるのは、 スタンダード SPI モードの場合のみです。

デュアル/クワッ ド  SPI モード

Vivado IDE で [Mode] を [Dual] に設定する と、 デュアル SPI モードが選択されます。 このモードに関連するパラ メーターは次のとおりです。

• [Mode]

• [Slave Device]

• [Enable STARTUPEn Primitive]

注記: 7 シ リーズ デバイスでは STARTUPE2 プリ ミ ティブを使用します。 UltraScale™ デバイスでは STARTUPE3 プリ ミ ティブを使用します。

• [Transaction Width]

• [No. of Slaves]

• [FIFO Depth]

FIFO に関連するプロパティには次のものがあ り ます。

• FIFO の深さは [FIFO Depth] で設定します。 有効な値は 16 または 256 です。

• SPI スレーブ メモ リのページ サイズは常に 8 ビッ トのため、 FIFO の幅は 8 ビッ トです。

デュアル モードにおけるポートの動作は次のとおりです。

• スタンダード モード SPI 命令の場合、 IO0 および IO1 ピンは片方向で、 MOSI (Master Out Slave In) および MISO (Master In Slave Out) ピンと同じです。

• デュアル モード SPI 命令の場合、 IO0 および IO1 ピンは双方向で、 コマンドのタイプおよび選択したメモ リによって決ま り ます。

[Mode] を [Quad] に設定する と、 クワ ッ ド SPI モードが選択されます。 クワ ッ ド SPI モードにおけるポートの動作は次のとおりです。

• スタンダード モード SPI 命令の場合、 IO0 および IO1 ピンは片方向で、 スタンダード SPI モードの場合と同様に動作します。

• デュアル モード SPI 命令の場合、 IO0 および IO1 ピンは片方向または双方向で、 命令のタイプおよび制御レジスタのビッ トで選択したメモ リによって決ま り ます。 IO2 および IO3 ビッ トは ト ラ イステートです。

• クワ ッ ド モード SPI 命令の場合、 IO0、 IO1、 IO2、 および IO3 ピンは片方向または双方向で、 コマンド、 アドレス、 およびデータ送信に使用する メモ リのタイプによって決ま り ます。

[Mode] を [Dual] または [Quad] に設定する と、コアの動作はそれぞれデュアルまたはクワ ッ ド SPI モードになり ます。その場合も、 コアはスタンダード SPI コマンドおよびインターフェイスをサポート します。 コア I/O の動作は、 DTR FIFO (SPI DTR) に格納されたコマンドに応じて内部コマンド ロジッ クによって決定されます。 利用できる I/O ピンも [Mode] の設定によって異なり ます。

AXI Quad SPI v3.2 8

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

両方の SPI モードに共通の特長

マスターによる個々のスレーブ選択出力に必要なデコード ロジッ クが自動で生成されるため、 コアにスレーブを追加できます。 マスターも追加できます。 ただしこのインターフェイス規格には、 競合の完全な検出機能はインプリメン ト されていません。 競合を解消するには、 バス制御のアービ ト レーシ ョ ンをシステム ソフ ト ウェアで実行する必要があ り ます。

コアはオンチップとオフチップの両方のマスターおよびスレーブと通信できます。 スレーブ選択レジスタのサイズの制限によ り、 サポート されるスレーブは最大 32 です。 ただしスレーブおよびマスターの数によって周波数と リソース使用量が異なるため、 最大パフォーマンスも異なり ます。 SPI コア レジスタ と割り込みレジスタはすべて 32 ビッ ト幅です。 これらレジスタ モジュールへのアクセスは、 32 ビッ ト アクセスのみがサポート されます。

AXI4 インターフェイス

[Enable Performance Mode] をオンにする と、 AXI4 インターフェイスが選択されます。 このモードでは、 エンハンスト モード ([Enable XIP Mode] をオフ) または XIP モード ([Enable XIP Mode] をオン) でコアを動作させるこ とができます。 これらのモードでは、 AXI4 インターフェイスを使用して DTR および DRR のアドレスでバース ト ト ランザクシ ョ ンを実行できます。

エンハンスト  モード

このモードでは、 コアの AXI4-Lite インターフェイスが AXI4 インターフェイスで置き換えられます。 また、 このモードでは [Mode] オプシ ョ ンの設定に従ってスタンダード、 デュアル、 およびクワ ッ ド モードがサポート されます。 ターゲッ ト スレーブ メモ リは、 [Slave Device] で [Mixed]、 [Winbond]、 [Micron]、 [Spansion] のいずれかを選択します。 レジスタはすべて AXI4-Lite インターフェイスの場合と同じオフセッ トにマップされます。 AXI4 インターフェイスを使用したバース ト ト ランザクシ ョ ンは、 データ送信レジスタおよびデータ受信レジスタでのみサポートされます。 その他のレジスタにはシングル アクセスを使用する必要があ り ます。 このコアのアプリ ケーシ ョ ンを設計する際には、 この点に注意してください。

DTR および DRR FIFO は深さを 16 または 256 ビートに設定できます。 コアがサポートする機能は AXI4-Lite インターフェイスの場合と同じです。 このモードの利点は、 DTR および DRR のアドレスでバース ト ト ランザクシ ョ ンがサポート されるため、 AXI4 インターフェイス側でのコアに対するデータ読み出しおよび書き込みのオーバーヘッドが軽減されるこ とにあ り ます。

XIP モード

XIP モードでは、 コアは AXI4-Lite インターフェイス と AXI4 インターフェイスの両方を使用します (図 1-2 参照)。コンフ ィギュレーシ ョ ン レジスタ と ステータス レジスタへのアクセスには AXI4-Lite インターフェイスを使用します。 AXI4 インターフェイスは読み出し専用です。 AXI4 インターフェイスは読み出しチャネルのみをサポート します。 書き込みト ランザクシ ョ ンはサポート していません。 AXI4-Lite インターフェイスを使用してコンフ ィギュレーシ ョ ン レジスタへアクセスする と、 ク ロ ッ ク極性 (CPOL) またはクロ ッ ク位相 (CPHA) の設定を変更できます。

AXI Quad SPI v3.2 9

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

このモードはブート動作に適しています。 このモードでは、 コアは INCR および WRAP 読み出し ト ランザクシ ョ ンのみをサポート します。

このモードでは、 コアは SPI を読み出し専用メモ リ と見なします。 コンフ ィギュレーシ ョ ン モードに応じて 3 つの読み出しコマンドのいずれかを使用して SPI フラ ッシュ メモ リ を読み出します。 コアの機能は、 AXI4-Lite と AXI4 の両方のインターフェイスに同じ周波数を設定して検証しています。 コアには、 高速読み出し (0x0Bh)、 DIOFR (0xBBh)、 QIOFR (0xEBh) の 3 つの主要な読み出しコマンドが内蔵されています。

デュアル クワッ ド  SPI モード

デュアル クワ ッ ド SPI モードでは、 コアに 2 つの SPI インターフェイスがあ り ます。 このモードは、 UltraScale デバイスでクワッ ド モードを選択し、 STARTUP を有効にしてスレーブの数が 2 つの場合のみ有効になり ます。 この機能を使用する と 2 つのスレーブにアクセスできます。 スレーブはレジスタ設定によって選択します。

X-Ref Target - Figure 1-2

図 1‐2: XIP モードの AXI Quad SPI のブロック図

AXI4MemoryMappedInterface

STARTUPBlock

sck_o

sck_t

sck_i

io0_o

io0_t

io0_i

io1_o

io1_t

io1_i

io2_o

io2_t

io2_i

io3_o

io3_t

io3_i

spisel

ext_spi_clk

SPI ClkGenerator

SPIReceive

DataLogic

SPITransmitDataLogic

SPI Mode 0Logic

SPI Mode 1and 2 Logic

ss_oss_tss_i

Onl

yin

Qua

dSP

IMod

eSt

d/Du

al/Q

uad

SPIM

ode

X12680

AXI4

Mem

ory

Map

ped

AXI4Lite

Interface

XIP CR

XIP SR CDCLogic

AddrDecoding

Logic

AXILength

Counter

RX FIFO

RLAST

RDATA

INCR and WRAPAddress Gen

Logic

SPI CLKDomain

AXI CLKDomain

DataMerging

Logic32 bit Rx

Data

8 bit

Wr_En

AXI Quad SPI v3.2 10

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

コア内部のサブモジュール

このセクシ ョ ンでは、 AXI Quad SPI コアのサブモジュールについて説明します。

[Enable Performance Mode] をオフにした場合

このモードでは、 コアは以前のすべてのバージ ョ ンの AXI Quad SPI コアと下位互換性があ り ます。 この場合のコアには次のサブモジュールが含まれます。

AXI4‐Lite インターフェイス モジュール

AXI4-Lite インターフェイス モジュールは、 AXI4-Lite プロ ト コルおよび IPIC へのインターフェイスを提供します。AXI4-Lite インターフェイスでの読み出しおよび書き込みト ランザクシ ョ ンは、等価な IP インターコネク ト (IPIC) トランザクシ ョ ンに変換されます。 これは、 コアのデフォルトの組み合わせです。

SPI レジスタ  モジュール

SPI レジスタ モジュールには、 図 1-1 に示したメモ リ マップド レジスタがすべて含まれます。 このモジュールは AXI4-Lite インターフェイスに接続しており、 ステータス レジスタ、制御レジスタ、 N ビッ ト スレーブ選択レジスタ (N 32)、 および送信/受信レジスタ ペアで構成されます。

割り込みコン ト ローラー レジスタ  セッ ト  モジュール

割り込みコン ト ローラー レジスタ セッ ト モジュールは、 次に示す割り込み関連レジスタで構成されます。

• デバイス グローバル割り込みイネーブル レジスタ (DGIER)

• IP 割り込みイネーブル レジスタ (IPIER)

• IP 割り込みステータス レジスタ (IPISR)

SPI モジュール

SPI モジュールはシフ ト レジスタ、 パラ メーター設定可能なボー レート ジェネレーター (BRG)、 および制御ユニットで構成されます。 制御ロジッ ク と初期化ロジッ クを含む SPI インターフェイスを提供します。 スタンダード SPI モードでは、 このモジュールを中心に SPI が動作します。

オプシ ョ ンの FIFO

[Enable FIFO] パラ メーターで有効に設定する と、 送信および受信パスの両方に送信 FIFO と受信 FIFO がインプリ メン ト されます。 送信 FIFO と受信 FIFO の幅は同じで、 [Transaction Width] パラ メーターで設定します。 スタンダード SPI モードで FIFO を有効にした場合、深さは 16 または 256 に設定できます。デュアル/クワ ッ ド SPI モードでは、深さを 16 または 256 (バイ ト ) に設定できます。

STARTUPEn モジュール

7 シ リーズ デバイスでは STARTUPE2 プリ ミ ティブを使用します。 UltraScale デバイスでは STARTUPE3 プリ ミ ティブを使用します。

AXI Quad SPI v3.2 11

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

[Enable STARTUPE2 Primitive] パラメーター

STARTUPE2 はザイ リ ンクス デバイスのプリ ミ ティブです。 このプリ ミ ティブは、 FPGA コンフ ィギュレーシ ョ ン後にデザインで使用できます。 プ リ ミ ティブの使用方法の詳細は、 使用する FPGA のユーザー ガイ ドを参照してください。 [Enable STARTUPE2 Primitive] パラ メーターをオンにする と、 このプリ ミ ティブがデザインに追加されます。STARTUPE2 プリ ミ ティブは 7 シ リーズおよび Zynq®-7000 SoC デバイスに存在します。 このプリ ミ ティブには専用のクロ ッ ク ピンがあ り、 これを使用してスレーブ メモ リに SPI ク ロ ッ クを供給できます。 STARTUP プリ ミ ティブの出力ポートはコアの最上位で STARTUPE2 インターフェイス と して利用できます。 Spartan-7 7S6 および 7S15 FPGA は、 STARTUPE2.CLK - UserClk スタート アップ ク ロ ッ ク ピンをサポート していません。

[Enable STARTUPE3 Primitive] パラメーター

UltraScale デバイスには STARTUPE3 プリ ミ ティブがあ り ます。 このプ リ ミ ティブには専用のクロ ッ クおよびデータ ピンがあ り、 これをスレーブ メモ リへの SPI ク ロ ッ クおよびデータ インターフェイス と して使用します。

詳細は、 『UltraScale アーキテクチャ ライブラ リ ガイ ド』 (UG974) [参照 1] を参照してください。

クワッ ド  SPI 制御ロジック  モジュール

このモジュールは、 デュアル/クワ ッ ド SPI モードで使用する制御信号を生成します。 このモジュールは、 各種メモリ コンフ ィギュレーシ ョ ンに対応したシフ ト レジスタ、 SPI ク ロ ッ ク ジェネレーター、 およびステート マシンを内蔵しています。

機能一覧

• レガシ モード — AXI4-Lite インターフェイス ベースのデザイン

° AXI インターフェイス

- AXI4-Lite インターフェイスをサポート — レガシ モード

- コアのレジスタはすべてシングル AXI4-Lite ト ランザクシ ョ ンを使用して 32 ビッ ト アクセス と してアクセスする必要があ り ます。

° コンフ ィギュレーシ ョ ン可能な SPI モード

- スタンダード、 デュアル、 およびクワッ ド モードをサポート

- スタンダード モードでサポート される機能

- マスターおよびスレーブ SPI モード

- MSB/LSB ファース ト ト ランザクシ ョ ン

- テス ト用のローカル ループバッ ク機能

- マルチマスターおよびマルチスレーブ環境

- 深さ 0、 16、 または 256 エレ メン ト (1 エレ メン トは 1 バイ ト 、 1 ハーフワード、 または 1 ワード ) を選択可能な送信/受信 FIFO。 深さ 0 の FIFO は FIFO なし。

- デュアル/クワ ッ ド SPI モードでサポート される機能

- マスター モードのみ

- MSB ファース ト転送のみ

- SPI 転送長さは 8 ビッ トのみ

- マルチマスターおよびマルチスレーブ環境

- 深さ 16 または 256 の送信/受信 FIFO (オプシ ョ ン)

- 6 ピン SPI インターフェイス モードをオプシ ョ ンでサポート (クワ ッ ド モードのみ)

AXI Quad SPI v3.2 12

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

• AXI4 インターフェイス モード

° AXI4 インターフェイス

- AXI4 インターフェイスをサポート

° コンフ ィギュレーシ ョ ン可能な SPI インターフェイス

- スタンダード、 デュアル、 およびクワッ ド SPI モード

- マスター モードのみ

- 深さ 16 または 256 エレ メン トの送信/受信 FIFO

- SPI フラ ッシュ メモ リでは長さ 8 ビッ トの MSB ファース ト転送のみ

- 複数のスレーブ – 最大 32 まで設定可能

- XIP (eXecute-in-Place) モード と非 XIP モードをコンフ ィギュレーシ ョ ン可能

° エンハンス ト モード — 非 XIP モード (バース ト モード アクセス) — AXI4 デザイン

- マスターが SPI 読み出しおよび書き込みコマンドを発行

- DTR および DRR FIFO アドレスでは FIXED タイプのバース ト転送のみをサポート

- AXI4 インターフェイスから同時に受信できるのは 1 つの読み出し ト ランザクシ ョ ンまたは 1 つの書き込みト ランザクシ ョ ンのみ

- コアのレジスタはすべてシングル AXI4 ト ランザクシ ョ ンを使用した 32 ビッ ト アクセスのみ可能

- WRAP ト ランザクシ ョ ンは非対応

° 読み出し専用 XIP モード — AXI4-Lite + AXI4 インターフェイス ベースのデザイン

- コンフ ィギュレーシ ョ ン レジスタの設定およびステータス /デバッグ レジスタの読み出しに AXI4-Lite モードを使用

- SPI インターフェイスでは読み出しコマンドのみ

- メモ リ マップド アドレスでは INCR および WRAP 読み出し ト ランザクシ ョ ンが可能

- 深さ 64 ビートで固定の内部 FIFO (データ幅は 32 ビッ ト )

- FIXED ト ランザクシ ョ ンは非対応

AXI Quad SPI v3.2 13

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

表 1-1 に、 コアのコンフ ィギュレーシ ョ ンに使用するパラ メーターを示します。

表 1‐1: コアの動作モード とデザイン パラメーターの値

コアの動作

パラメーター

[Enab

le Perform

ance M

ode]

[Enab

le XIP M

ode]

[FIFO Dep

th]

[Mode]

[Frequen

cy Ratio]

[No. o

f Slaves]

[Slave Device]

[Enab

le STA

RTU

PEn

 Primitive](4)

レガシ モード

0、 16、 256 スタンダード4、 8、 Nx16

(N = 1、 2、 3、 ...、 128)(1) 1 ~ 32 (任意) (任意)

16、 256 デュアル 2(2) 1 ~ 32 (任意) (任意)

16、 256 クワ ッ ド 2(2) 1 ~ 32 (任意) (任意)

エンハンス ト モード

x 0、 16、 256 スタンダード2、 4、 8、 Nx16

(N = 1、 2、 3、 ...、 128)(1) 1 ~ 32 (任意) (任意)

x 16、 256 デュアル 2(2) 1 ~ 32 (任意) (任意)

x 16、 256 クワ ッ ド 2(2) 1 ~ 32 (任意) (任意)

XIP モード

x x 64 スタンダード 2(2) 1(3) (任意) (任意)

x x 64 デュアル 2(2) 1(3) (任意) (任意)

x x 64 クワ ッ ド 2(2) 1(3) (任意) (任意)

注記:1. このモードでは ext_spi_clk を axi_aclk または axi4_aclk を同じにできますが、AXI CLK または AXI4 ACLK 以上とする必要があ

り ます。 このモードは主に SPI プロ ト コルで動作する低速デバイス用です。 たとえば EEPROM や SPI インターフェイスを使用する DAC などのデバイスが該当します。

2. このモードでは、 ext_spi_clk を目的の SPI ク ロ ッ クの 2 倍に設定します。 このク ロ ッ クを、 [Frequency Ratio] パラ メーターの 2 で分周

して SPI ク ロ ッ クを生成します。ほとんどの SPI フラ ッシュ メモ リ コマンドは高速な SPI ク ロ ッ クで動作しますが、 コマンドによっては

低い周波数でないと動作しないものがあ り ます。 使用するコマンドに応じて、 ext_spi_clk と [Frequency Ratio] パラ メーターを適切に

設定する必要があ り ます。 高速な SPI ク ロ ッ クで低速なコマンドを実行した場合、 コアはエラーを生成せずにこれらのコマンドを外部フ

ラ ッシュ メモ リに渡しますが、 フラ ッシュ メモ リの動作は保証されません。

3. XIP モードでは [No. of Slaves] パラ メーターは常に 1 で、 変更できません。

4. 7 シ リーズ デバイスでは STARTUPE2 プリ ミ ティブを使用します。UltraScale 以降のデバイスでは STARTUPE3 プリ ミ ティブを使用します。

AXI Quad SPI v3.2 14

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 1 章:概要

サポート されていない機能

このコアは、 AXI4 インターフェイスに関する次の機能をサポート していません。

• エンハンス ト モードでの 1 を超える長さの INCR バース トおよび WRAP バース ト

• XIP モードでの FIXED バース ト

• エンハンス ト モードでのナロー バース ト (エンハンス ト モードでは 32 バース ト ビッ トの うち最後の 8 ビッ トのみが有効)

• XIP モードでの書き込みチャネルおよびト ランザクシ ョ ン

• ア ト ミ ッ ク、 ロ ッ ク、 およびキャ ッシュ ト ランザクシ ョ ン

• デバッグ/セキュアおよびユーザー信号

• アウ ト オブ オーダー ト ランザクシ ョ ン

• REGION 信号

• サービス品質 (QoS) 信号

• バイ ト ス ト ローブのホール

• バリア ト ランザクシ ョ ン

• 書き込みインターリーブ

• ユーザー信号

• AXI TrustZone およびロー パワー ステート

• エンハンス ト モードでの読み出し /書き込み同時ト ランザクシ ョ ン

• コアを読み出し専用の XIP モードにした場合、 アライ メン ト していないアドレス

• XIP モードでのバイ ト アクセス

• シ リアル ク ロ ッ ク (SCK) 比が 2 の場合、 スタンダード スレーブ モードはサポート されません。

• エンハンス ト モードでは、 IP は s_axi4_rready が最初の s_axi4_rvalid を生成するのを待ちます。

ライセンスおよび注文情報

このザイ リ ンクス LogiCORE™ IP は、 ザイ リ ンクス エンドユーザー ライセンス規約のも とザイ リ ンクス Vivado Design Suite を使用して追加コス ト なしで提供されています。

この IP およびその他のザイ リ ンクス LogiCORE IP モジュールに関する情報は、 IP コア ページから入手できます。その他のザイ リ ンクス LogiCORE IP モジュールおよびツールの価格や提供状況については、 ザイ リ ンクス販売代理店にお問い合わせください。

AXI Quad SPI v3.2 15

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2章

製品仕様

規格

AXI Quad SPI コアは、 AXI4 および AXI4-Lite インターフェイスをスタンダード、 デュアル、 またはクワ ッ ド SPI プロ ト コル命令セッ トに対応した SPI スレーブ デバイスに接続します。 このコアは、 Winbond、 Micron、 Spansion、 および Macronix 製 SPI シ リ アル フラ ッシュ メモ リ などの SPI スレーブ デバイスへのシ リ アル インターフェイスを提供します。 デュアル/クワ ッ ド SPI は、 Motorola M68HC11 のデータシートで定義されたスタンダード SPI プロ ト コルを拡張したものです。 このコアのプロ ト コルと Motorola M68HC11-Rev. 4.0 リ ファレンス マニュアルの違いについては、 「仕様との相違点」 を参照してください。

性能

リ ソース使用状況の詳細は、 Performance and Resource Utilization (ウェブ ページ) をご覧ください。

このコアの性能評価は、 マージン システム手法を使用して実施しました。 このマージン システム特性評価手法の詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] を参照してください。

注記: Zynq®-7000 SoC および UltraScale™ デバイスでの性能は、 7 シ リーズ デバイス と同等です。

性能評価は、 次のファ ミ リに対して実施しました。

• Virtex®-7

• Kintex®-7

• Artix®-7

AXI Quad SPI v3.2 16

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

AXI Quad SPI コアの最大周波数を表 2-1 に示します。

注記: XIP およびスタンダード モードでは、 Ext_spi_clk は 60MHz に制限されるこ とがあ り ます。

注記: UltraScale™ デバイスでの周波数値は、 7 シ リーズ デバイスの場合と類似する と予想されます。

リソース使用状況

リ ソース使用状況の詳細は、 Performance and Resource Utilization (ウェブ ページ) をご覧ください。

表 2‐1: AXI Quad SPI の最大周波数

ファ ミ リ スピード  グレードAXI4‐Lite インターフェイス

Fmax (MHz)[AXI4 Interface]Fmax (MHz)

Ext_spi_clkFmax (MHz)

Virtex-7

-1 180 200 80

-2 200 240 90

-3 220 280 100

Kintex-7

-1 180 200 80

-2 200 240 90

-3 220 280 100

Artix-7

-1 120 150 60

-2 140 180 70

-3 160 200 80

AXI Quad SPI v3.2 17

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

ポートの説明

表 2‐2: I/O 信号

信号名 インターフェイス 信号タイプ 初期状態 説明

s_axi_aclk ク ロ ッ ク I - AXI ク ロ ッ ク。 この信号はレガシおよび XIP モードの場合のみ利用できます。

s_axi_aresetn リセッ ト I - AXI リセッ ト 。 この信号はレガシおよび XIP モードの場合のみ利用できます。

s_axi4_aclk(1)ク ロ ッ ク I - AXI4 ク ロ ッ ク。 この信号はエンハンス トおよび

XIP モードの場合のみ利用できます。

s_axi4_aresetn(2)リセッ ト I - AXI4 リセッ ト 。 この信号はエンハンス トおよび

XIP モードの場合のみ利用できます。

ext_spi_clk ク ロ ッ ク I -

このク ロ ッ クは SPI インターフェイスに使用します。

このクロ ッ クは、 SPI インターフェイスで想定する最大 SPI 周波数の 2 倍とする必要があ り ます。

ip2intc_irpt SPI O 0 SPI からの割り込み制御信号。

AXI インターフェイス信号

s_axi_* 入力/出力

AXI 信号の詳細は、 『Vivado Design Suite: AXI リファレンス ガイ ド』 (UG1037) [参照 3] の付録 A を参照してください。 この信号はレガシおよび XIP モードの場合のみ利用できます。

AXI4 インターフェイスの信号

s_axi4_* 入力/出力

AXI 信号の詳細は、 『Vivado Design Suite: AXI リファレンス ガイ ド』 (UG1037) [参照 3] の付録 A を参照してください。 この信号はエンハンス トおよび XIP モードの場合のみ利用できます。

SPI インターフェイスの信号

sck_i SPI I -SPI バス ク ロ ッ ク入力。

この信号はスタンダード SPI スレーブ モードの場合のみ利用できます。

sck_o SPI O - SPI バス ク ロ ッ ク出力。

sck_t SPI O 1SPI バス ク ロ ッ クの ト ライステート イネーブル。

アクティブ Low。

ss_i[(スレーブの数 – 1):0] SPI I - この入力は、 モードを問わずデザインでは使用しません。

ss_0[(スレーブの数 – 1):0] SPI O 1 長さ n のワンホッ ト エンコードによるアクティブ Low スレーブ選択ベクターを出力します。

ss_t SPI O 1スレーブ セレク トの ト ラ イステート イネーブル。

アクティブ Low。

io0_i SPI I - MOSI (Master Output Slave Input) 入力ピンと同様に動作します。

AXI Quad SPI v3.2 18

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

io0_o SPI O -

MOSI (Master Output Slave Input) 出力ピンと同様に動作します。

この信号はスタンダード SPI モードの場合のみ利用できます。 デュアル SPI モードではこの信号は双方向信号で、 命令によって動作が異なり ます。

io0_t SPI O 1 ト ラ イステート イネーブル MOSI (Master Output Slave Input)。 アクティブ Low。

io1_i SPI I -

MISO (Master Input Slave Output) 入力と同様に動作します。

デュアル/クワッ ド SPI モードでも、 この信号は IO1_I ポート と見なすこ とができます。

io1_0 SPI O -

MISO (Master Input Slave Output) 出力と同様に動作します。

この信号はスタンダード SPI モードの場合のみ利用できます。 デュアル SPI モードではこの信号は双方向信号で、 命令によって動作が異なり ます。

io1_t SPI O 1 ト ラ イステート イネーブル MISO (Master Input Slave Output)。 アクティブ Low。

io2_i SPI I -IO2 入力 (使用するコマンドによる )。

この信号はクワッ ド SPI モードの場合のみ利用できます。

io2_o SPI O -IO2 出力 (使用するコマンドによる )。

この信号はクワッ ド SPI モードの場合のみ利用できます。

io2_t SPI O 1ト ラ イステート イネーブル IO2。

この信号はクワッ ド SPI モードの場合のみ利用できます。 アクティブ Low。

io3_i SPI I -IO3 入力 (使用するコマンドによる )。

この信号はクワッ ド SPI モードの場合のみ利用できます。

io3_o SPI O -IO3 出力 (使用するコマンドによる )。

この信号はクワッ ド SPI モードの場合のみ利用できます。

io3_t SPI O 1ト ラ イステート イネーブル IO3。

この信号はクワッ ド SPI モードの場合のみ利用できます。 アクティブ Low。

io0_1_i(3) SPI I - MOSI (Master Output Slave Input) 入力ピンと同様に動作します。

io0_1_o(3) SPI O -

MOSI (Master Output Slave Input) 出力ピンと同様に動作します。

この信号は双方向信号で、 命令によって動作が異なり ます。

io0__1_t(3) SPI O 1 ト ラ イステート イネーブル MOSI (Master Output Slave Input)。 アクティブ Low。

表 2‐2: I/O 信号 (続き)

信号名 インターフェイス 信号タイプ 初期状態 説明

AXI Quad SPI v3.2 19

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

io1_1_i(3) SPI I - MISO (Master Input Slave Output) 入力と同様に動作します。

io1_1_0(3) SPI O - MISO (Master Input Slave Output) 出力と同様に動作します。

io1_1_t(3) SPI O 1 ト ラ イステート イネーブル MISO (Master Input Slave Output)。 アクティブ Low。

io2_1_i(3) SPI I - IO2 入力 (使用するコマンドによる )。

io2_1_o(3) SPI O - IO2 出力 (使用するコマンドによる )。

io2_1_t(3) SPI O 1 ト ラ イステート イネーブル IO2。アクティブ Low。

io3_1_i(3) SPI I - IO3 入力 (使用するコマンドによる )。

io3_1_o(3) SPI O - IO3 出力 (使用するコマンドによる )。

io3_1_t(3) SPI O 1 ト ラ イステート イネーブル IO3。アクティブ Low。

ss_0_i(3) SPI O - この入力は、 モードを問わずデザインでは使用しません。

ss_1_i(3) SPI O 1 長さ n のワンホッ ト エンコードによるアクティブ Low スレーブ選択ベクターを出力します。

spisel SPI I 1

ローカル SPI スレーブ選択アクティブ Low 入力。コアをスタンダード SPI スレーブ モードにした場合の入力信号です。

マスター モードでは、 SPICR の Master ビッ ト同様、 1 にセッ トする必要があ り ます。

STARTUP インターフェイスの信号

cfgclk STARTUP_IO O -このクロ ッ クはアクティブ コンフ ィギュレーシ ョ ン中および persist をセッ ト したマスター モード中のみアクティブです。

cfgmclk STARTUP_IO O -オンチップ オシレーターからのフ リーランニング ク ロ ッ ク。 公称 50MHz ですが、 特性評価はしておらずデータシートにも記載はあ り ません。

eos STARTUP_IO O - STARTUPEn シーケンスが完了する と この信号が立ち上がり ます。

preq STARTUP_IO O - FPGA ロジッ クに対する PROGRAM 要求。

注記:1. AXI ク ロ ッ クは ext_spi_clk よ り高速にする必要があ り ます。

2. ext_spi_clk が非常に低速な場合は [FIFO Depth] を 256 に設定するこ とを推奨します ([Frequency Ratio] は 50 ~ 100 の範囲)。

3. これらの信号はデュアル クワ ッ ド モードの場合のみ使用します。

表 2‐2: I/O 信号 (続き)

信号名 インターフェイス 信号タイプ 初期状態 説明

AXI Quad SPI v3.2 20

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

レジスタ空間 (レガシおよびエンハンスト  モード )

注記: AXI4-Lite 書き込みアクセス レジスタは 32 ビッ ト AXI 書き込みデータ (*_wdata) 信号によって更新され、AXI 書き込みデータ ス ト ローブ (*_wstrb) 信号の影響は受けません。 書き込みの場合、 AXI 書き込みアドレス有効 (*_awvalid) 信号と AXI 書き込みデータ有効 (*_wvalid) 信号を両方アサートする必要があ り ます。

表 2-3 に、 [Enable Performance Mode] をオフにした場合、 および [Enable Performance Mode] をオンにして [Enable XIP Mode] をオフにした場合のレジスタ セッ ト を示します。 一部の AXI Quad SPI コア レジスタには、 個別にアクセスする必要があ り ます。 これらのレジスタは、 AXI4-Lite インターフェイスまたは AXI4 インターフェイス (エンハンス ト モード ) 経由で設定およびアクセスできます。 どのレジスタにも 32 ビッ ト と してアクセスします。 存在しないレジスタにアクセスする と OKAY 応答が返されます。 これらのレジスタを読み出すと 0 が返され、 書き込みは無視されます。

表 2‐3: レガシおよびエンハンスト  モードのコア レジスタ

アドレス空間オフセッ ト レジスタ名 アクセス タイプデフォルト値 

(16 進数)説明

コア関連レジスタ

40h SRR W N/A ソフ ト ウェア リセッ ト レジスタ

60h SPICR R/W 0x180 SPI 制御レジスタ

64h SPISR R 0x0a5 SPI ステータス レジスタ

68h SPI DTR W 0x0 SPI データ送信レジスタ。単一レジスタまたは FIFO

6Ch SPI DRR R N/A(1) SPI データ受信レジスタ。単一レジスタまたは FIFO

70h SPISSR R/Wスレーブ選択なし0xFFFF

SPI スレーブ選択レジスタ

74h SPI 送信 FIFO 占有レベル レジスタ (2) R 0x0 送信 FIFO 占有レベル レジスタ

78h SPI 受信 FIFO 占有レベル レジスタ (2) R 0x0 受信 FIFO 占有レベル レジスタ

割り込み制御関連レジスタ

1Ch DGIER R/W 0x0 デバイス グローバル割り込みイネーブル レジスタ

20h IPISR R/TOW(3) 0x0 IP 割り込みステータス レジスタ

28h IPIER R/W 0x0 IP 割り込みイネーブル レジスタ

注記:1. SPI DRR のパワーオン リ セッ ト時のデータは不明またはすべて 0 です。 パワーオン リ セッ ト時にはこのレジスタを読み出さないでくだ

さい。

2. FIFO の深さを 16 または 256 に設定した場合のみ存在します。

3. TOW = 書き込みによ り ト グル (Toggle on Write) です。 レジスタの特定のビッ トに 1 を書き込むと、 そのビッ ト位置の値がト グルします。

AXI Quad SPI v3.2 21

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

レジスタの詳細

ソフ トウェア リセッ ト  レジスタ

ソフ ト ウェア リセッ ト レジスタ (SRR) は、 システム内でこのコアだけを独立して リセッ トするために使用します。

重要: ソフ ト ウェア リセッ ト を実行するには、 ソフ ト ウェア リセッ ト レジスタに値 0x0000_000a を書き込みます。

SRR に 0x0000_000a を書き込むと、 AXI ク ロ ッ クの 4 サイクルでコア レジスタが リセッ ト されます。 それ以外の書き込みアクセスは未定義の結果となり、 エラーが発生します。 図 2-1 に、 ソフ ト ウェア リセッ ト レジスタのビット割り当てを示します。 詳細は表 2-4 で説明します。 このレジスタを読み出すと、 未定義のデータが返されます。

SPI 制御レジスタ

SPI 制御レジスタ (SPICR) は、 AXI Quad SPI コアの各種動作をプログラムで制御するために使用します。 図 2-2 に SPICR のビッ ト割り当てを示します。 詳細は表 2-5 で説明します。

X-Ref Target - Figure 2-1

図 2‐1: ソフ トウェア リセッ ト  レジスタ  (コア ベース アドレス + 0x40)

表 2‐4: ソフ トウェア リセッ ト  レジスタの説明 (コア ベース アドレス + 0x40)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:0 リセッ ト WO N/A このレジスタに対する操作は、 0x0000000a の書き込み (AXI Quad SPI コアのリセッ ト ) のみ可能です。

X-Ref Target - Figure 2-2

図 2‐2: SPI 制御レジスタ  (コア ベース アドレス + 0x60)

Reset

31 0

X14419

0123 4567891031

LOOPMaster

Tx FIFO Reset

CPHA

Manual Slave Select Assertion

Enable

Rx FIFO Reset

Master Transaction

Inhibit

LSB First

Reserved

SPE

CPOL

X14420

AXI Quad SPI v3.2 22

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

表 2‐5: SPI 制御レジスタの説明 (コア ベース アドレス + 0x60)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:10 予約 N/A N/A 予約。

9 LSB First R/W 0

LSB ファース ト (1)

このビッ トは、 LSB ファース トのデータ転送フォーマッ ト を選択します。デフォルトの転送フォーマッ トは MSB ファース トです。定義:0 = MSB ファース トの転送フォーマッ ト。1 = LSB ファース トの転送フォーマッ ト。

注記:デュアル/クワ ッ ド SPI モードでは、 MSB ファース トの転送フォー

マッ トのみがサポート されます。

8マスター

ト ランザクシ ョ ン禁止

R/W 1

マスタート ランザクシ ョ ン禁止

このビッ トはマスター ト ランザクシ ョ ンを禁止します。このビッ トはスレーブの動作には影響しません。定義:0 = マスター ト ランザクシ ョ ンを有効にする。1 = マスター ト ランザクシ ョ ンを無効にする。

注記: このビッ ト をセッ トする と直ちに ト ランザクシ ョ ンが禁止されま

す。 転送途中にこのビッ ト をセッ トする と、 予測不能な結果とな り ます。

7

手動スレーブ選択

アサートイネーブル

R/W 1

手動スレーブ選択アサート イネーブル

デバイスがマスターと して設定されており、 SPE がアサート されてデバイスが有効なときにこのビッ ト をセッ トすると、 スレーブ選択レジスタ内のデータがスレーブ選択出力にアサート されます。このビッ トはスレーブの動作には影響しません。定義:0 = マスター コア ロジッ クがスレーブ選択出力をアサートする。1 = スレーブ選択出力はスレーブ選択レジスタのデータに従う。

注記:手動スレーブ選択アサート モードはスタンダード SPI モードでのみ

サポート されます。 詳細は、 「SPI プロ ト コルのスレーブ選択アサート モード」 を参照してください。

6 RX FIFO Reset R/W 0

受信 FIFO リセッ ト

このビッ トに 1 を書き込むと、 受信 FIFO が空の状態にリセッ トされます。 リセッ トから 1 AXI ク ロ ッ ク サイクル後に、 このビッ トは再び 0 に戻り ます。定義:0 = 受信 FIFO は通常の動作。1 = 受信 FIFO ポインターを リセッ トする。

5 TX FIFO Reset R/W 0

送信 FIFO リセッ ト

このビッ トに 1 を書き込むと、 送信 FIFO が空の状態にリセッ トされます。 リセッ トから 1 AXI ク ロ ッ ク サイクル後に、 このビッ トは再び 0 に戻り ます。定義:0 = 送信 FIFO は通常の動作。1 = 送信 FIFO ポインターを リセッ トする。

4 CPHA R/W 0

ク ロ ッ ク位相(2)

このビッ トは、 2 種類の転送フォーマッ トのいずれか 1 つを選択します。第 3 章の 「ク ロ ッキング (SPI ク ロ ッ ク位相および極性の制御)」を参照してください。

AXI Quad SPI v3.2 23

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

3 CPOL R/W 0

ク ロ ッ ク極性(2)

このビッ トでクロ ッ ク極性を定義します。定義:0 = アクティブ High ク ロ ッ ク (SCK は Low の場合にアイ ドル)。1 = アクティブ Low ク ロ ッ ク (SCK は High の場合にアイ ドル)。

2 マスター R/W 0

マスター (SPI マスター モード )(3)

このビッ トで SPI デバイスをマスターまたはスレーブに設定します。定義:0 = スレーブに設定。1 = マスターに設定。

注記:デュアル/クワ ッ ド SPI モードでは、 コアはマスター モードのみを

サポート します。

注記: SCK 比が 2 の場合、 スタンダード スレーブ モードはサポート され

ません。

1 SPE R/W 0

SPI システム イネーブル

このビッ ト を 1 にセッ トする と、 SPI デバイスが有効になり ます。定義:

• 0 = SPI システムを無効にする。 マスターとスレーブの出力はどちら も ト ラ イステート とな り、 スレーブの入力は無視されます。

• 1 = SPI システムを有効にする。 マスターの出力がアクティブ (たとえば IO0 (MOSI) と SCK がアイ ドル ステート ) になり、SS がアサート されている場合スレーブの出力もアクティブになり ます。 送信データが存在する場合、 マスターは転送を開始します。

0 LOOP R/W 0

ローカル ループバッ ク モード (4)

ローカル ループバッ ク動作を有効にします。 この機能はスタンダード SPI マスター モードの場合のみサポート されます。定義:

• 0 = 通常動作。

• 1 = ループバッ ク モード。 ト ランス ミ ッ ター出力は内部でレシーバー入力に接続されます。 レシーバーと ト ランス ミ ッターは通常どおり動作しますが、 リモート スレーブからの受信データは無視されます。

注記:1. このビッ ト (LSB ファース ト ) はスタンダード SPI モードの場合のみセッ トできます。 デュアル/クワ ッ ド SPI モードでは MSB

ファース ト モードのみがサポート されます。 デュアル/クワ ッ ド SPI モードでこのビッ ト をセッ ト した場合、 SPISR の対応する

エラー ビッ トがセッ ト され、 割り込みが生成されます。

2. デュアル/クワ ッ ド SPI モードでは、 CPHA-CPOL の値は 00 または 11 のみがサポート されます。 これ以外の値を設定する と メ

モ リ との通信中に誤動作が発生します。 これ以外の値を設定する と SPISR の対応するエラー ビッ トがセッ ト され、 SPI IPIER レジスタの対応するビッ トが有効な場合は割り込みが生成されます。

3. スレーブ モードはスタンダード SPI モードの場合のみサポート されます。デュアル/クワ ッ ド SPI モードでは、 コアはマスター モードのみをサポート します。 これ以外の値を設定する と SPISR の対応するエラー ビッ トがセッ ト され、 SPI IPIER レジスタ

の対応するビッ トが有効な場合は割り込みが生成されます。

4. ループバッ クは、 スタンダード SPI モードの場合のみサポート されます。

表 2‐5: SPI 制御レジスタの説明 (コア ベース アドレス + 0x60) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

AXI Quad SPI v3.2 24

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

SPI ステータス レジスタ

SPI ステータス レジスタ (SPISR) は、 AXI Quad SPI コアの各種ステータスをプログラマに示す読み出し専用レジスタです。 図 2-3 に SPISR のビッ ト割り当てを示します。 詳細は表 2-6 で説明します。 SPISR に書き込んでもレジスタ内容は変化しません。

X-Ref Target - Figure 2-3

図 2‐3: SPI ステータス レジスタ  (コア ベース アドレス + 0x64)

表 2‐6: SPI ステータス レジスタの説明 (コア ベース アドレス + 0x64)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:11 予約 N/A N/A 予約

10 Command Error R 0

コマンド エラー フラグ。

定義:

• 0 = デフォルト。

• 1 = コアがデュアル/クワ ッ ド SPI モードで、SPI DTR FIFO のリセッ ト後の最初のエン ト リがターゲッ ト メモ リでサポート されるコマンドのリ ス トに一致しない場合、 このビッ トがセット されます。

注記: コマンド エラーは、 コアをレガシまたはエンハンス ト (AXI4 イン

ターフェイス) モードおよびデュアルまたはクワッ ド モードにした場合

のみ関係します。

9 Loopback Error R 0

ループバッ ク エラー フラグ。

定義:

• 0 = デフォルト。 制御レジスタの LOOP ビッ トはデフォルト ステート。

• 1 = SPI コマンド、 アドレス、 およびデータ ビッ ト をスタンダード SPI プロ ト コル モード以外で転送するよ うに設定し、制御レジスタ (SPICR) で LOOP ビッ トがセッ ト されている。

注記:ループバッ クはコアをスタンダード モードにした場合のみサポー

ト されます。 それ以外のモードでこのビッ ト をセッ トする とエラーが発

生し、 レガシまたはエンハンス ト (AXI4 インターフェイス) モードでは割

り込みビッ トがセッ ト されます。

0123 4567891031

Rx_EmptyTx_Empty

Slave_Mode_Select

MODF

Slave ModeError

CPOL_CPHA_Error

CommandError

Loop BackError

Reserved

Rx_Full

Tx_Full

X14477

11

MSBError

AXI Quad SPI v3.2 25

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

8 MSB Error R 0

MSB エラー フラグ。

定義:

• 0 = デフォルト。

• 1 = このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにし、制御レジスタ (SPICR) の LSB First ビッ ト を 1 にした場合にセッ ト されます。

注記:デュアル/クワ ッ ド SPI モードでは、 MSB ファース トの転送フォー

マッ トのみがサポート されます。 MSB エラー フラグは、 コアをレガシま

たはエンハンス ト (AXI4 インターフェイス) モードおよびデュアルまたは

クワッ ド モードにした場合のみ関係します。

7Slave Mode

ErrorR 1

スレーブ モード エラー フラグ。

定義:

• 1 = このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにし、制御レジスタ (SPICR) の Master ビッ ト を 0 にした場合にセッ トされます。

• 0 = 制御レジスタ (SPICR) の Master ビッ トが 1。

注記: クワ ッ ド SPI モードでは、 コアはマスター モードのみをサポート し

ます。 スレーブ エラーは、 コアをレガシまたはエンハンス ト (AXI4 イン

ターフェイス) モードおよびデュアルまたはクワッ ド モードにした場合

のみ関係します。

6CPOL_CPHA_

ErrorR 0

CPOL_CPHA_Error フラグ。

定義:

• 0 = デフォルト。

• 1 = CPOL-CPHA が 01 または 10 に設定されている。このビッ トは、 Winbond、 Micron、 Spansion または Macronix のいずれかの SPI メモ リ を選択し、 CPOL-CPHA を 01 または 10 に設定する とセッ ト されます。

これらのメモリでは、 CPOL-CPHA を 00 または 11 に設定する必要があ り ます。 CPOL_CPHA_Error フラグは、 コアをレガシまたはエンハンス ト (AXI4 インターフェイス) モードおよびデュアルまたはクワッ ド モードにした場合のみ関係します。

5Slave_Mode_

SelectR 1

Slave_Mode_Select フラグ。

このフラグは、 コアがスレーブ モードに設定される とアサートされます。 Slave_Mode_Select は、 マスター SPI コアがコアのチップ セレク ト ピンをアサートする と直ちにアクティブになり ます。

• 1 = スタンダード モードのデフォルト。

• 0 = スレーブ モードに設定したコアが外部 SPI マスターによって選択される とアサート されます。

4 MODF R 0

モード フォルト エラー フラグ。

このフラグは、 マスターに設定した SPI デバイスで SS 信号がアクティブになる とセッ ト されます。 SPISR を読み出すと、 MODF は自動的にク リ アされます。 MODE が Low から High に遷移すると、 1 サイクルのス ト ローブ割り込みが生成されます。0 = エラーなし。1 = エラー条件が検出された。

表 2‐6: SPI ステータス レジスタの説明 (コア ベース アドレス + 0x64) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

AXI Quad SPI v3.2 26

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

SPI データ送信レジスタ

SPI データ送信レジスタ (SPI DTR) には、 SPI バスに送信するデータを書き込みます。 マスター モードで SPE ビッ トを 1 にセッ ト した後、 またはスレーブ モードで spisel がアクティブになった後、 データは SPI DTP からシフ ト レジスタへ転送されます。

DTR FIFO 書き込みポインターが 0 番目の位置を指し示すよ うに、 SPI DTR は書き込み前にリセッ トする必要があ ります。

3 Tx_Full R 0

送信フル。

送信 FIFO が存在する場合、 このビッ トは送信 FIFO がフルになる と High にセッ ト されます。

注記: FIFO が存在しない場合、 このビッ トは送信レジスタに AXI 書き込

みを実行する と High にセッ ト されます (このオプシ ョ ンはスタンダード SPI モードの場合のみ利用可能)。 SPI 転送が完了する と、 このビッ トはク

リ アされます。

2 Tx_Empty R 1

送信エンプティ。

送信 FIFO が存在する場合、 このビッ トは送信 FIFO が空になると High にセッ ト されます。送信 FIFO が空になる と このビッ トは直ちに High になり ます。 このビッ トが High の間、 送信データの最後のバイ トはまだパイプラインの中にあ り ます。 1 回の SPI 転送が完了するたびに FIFO 占有レベルがデク リ メン ト します。

注記: FIFO が存在しない場合、 1 回の SPI 転送が完了する と このビッ トが

セッ ト されます (このオプシ ョ ンはスタンダード SPI モードの場合のみ利

用可能)。 FIFO の有無にかかわらず、 このビッ トは送信レジスタ /FIFO に対する AXI 書き込みでク リ アされます。 デュアル/クワ ッ ド SPI モードで

は、 FIFO は常にコアに存在します。

1 Rx_Full R 0

受信フル。

受信 FIFO が存在する場合、 このビッ トは受信 FIFO がフルになる と High にセッ ト されます。 1 回の SPI ト ランザクシ ョ ンが完了するたびに FIFO 占有レベルがインク リ メン ト します。

注記: FIFO が存在しない場合、このビッ トは 1 回の SPI 転送が完了する と High にセッ ト されます (このオプシ ョ ンはスタンダード SPI モードの場合

のみ利用できます)。 この場合、 Rx_Empty と Rx_Full は相補信号です。

0 Rx_Empty R 1

受信エンプティ。

受信 FIFO が存在する場合、 このビッ トは受信 FIFO が空になると High にセッ ト されます。 FIFO 占有レベルは、 1 回の FIFO 読み出しごとにデク リ メン ト します。

注記: FIFO が存在しない場合、 このビッ トは受信レジスタを読み出すと High にセッ ト されます (このオプシ ョ ンはスタンダード SPI モードの場合

のみ利用可能)。 このビッ トは SPI 転送が正し く完了する と ク リ アされま

す。 デュアル/クワ ッ ド SPI モードでは、 FIFO は常にコアに存在します。

表 2‐6: SPI ステータス レジスタの説明 (コア ベース アドレス + 0x64) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

AXI Quad SPI v3.2 27

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

デュアル/クワッ ド  モード

最初の書き込みは常に AXI ト ランザクシ ョ ンからの SPI コマンド と し、 その後にアドレス (24 ビッ ト または 32 ビット )、 送信データの順に格納します。 メモ リのステータス レジスタを読み出す際は、 コマンドの要件に従ってこのレジスタにはダ ミー バイ トおよびコマンド とアドレス (オプシ ョ ン) を格納します。

これらのモードでは、 メモ リから受信したデータを内部でカウン トするために DTR にダ ミー バイ ト を格納する必要があ り ます。

デュアル モード読み出しなどのコマンドでは、 これらのバイ トはデータ ラインには転送されず、 SPI スレーブ メモリから読み出したデータ バイ トの数を追跡するために内部ロジッ クが使用します。

転送の実行中、シフ ト レジスタ内のデータが SPI DRR に転送される と直ちに SPI DTR 内のデータがシフ ト レジスタにロード され、 新規転送が開始します。 SPI DTR 内のデータは、 新しいデータが書き込まれるまで SPI DTR に残ります。 図 2-4 に SPI DTR を示します。 データ フォーマッ トの詳細は表 2-7 で説明します。

送信 FIFO が存在する場合、 データは直接 FIFO に書き込まれ、 FIFO の先頭位置が SPI DTP と して扱われます。 このポインターは、 1 回の SPI 転送が完了するたびにデク リ メン ト します。 FIFO をデザインに含めるかど うかは、 コアをスタンダード SPI モードで使用する場合のみ選択できます。 コアをデュアル/クワ ッ ド SPI モードにした場合、FIFO は常に存在します。 このモードでは、 FIFO の深さを [FIFO Depth] パラ メーターで 16 または 256 に設定します。

このレジスタは読み出すこ とはできず、 データを格納できる空きがある場合に書き込みのみを実行できます。 レジスタ /FIFO がフルの場合に書き込みを実行する と、 AXI 書き込みト ランザクシ ョ ン エラーとな り ます。 SPI DTR の読み出しはサポート されておらず、 このよ うな読み出し ト ランザクシ ョ ンからは未定義のデータが返されます。

X-Ref Target - Figure 2-4

図 2‐4: SPI データ送信レジスタ  (コア ベース アドレス + 0x68)

表 2‐7: SPI データ送信レジスタの説明 (コア ベース アドレス + 0x68)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

[N–1]:0TX Data(1) (DN–1 – D0)

WO 0

N ビッ トの SPI 送信データ。 N は 8、 16、 または 32 です。 (2)

[Transfer Width] = 8 の場合、 N = 8。[Transfer Width] = 16 の場合、 N = 16。[Transfer Width] = 32 の場合、 N = 32。

注記:1. DN-1 ビッ トはデータ転送フォーマッ トが LSB ファース トか MSB ファース トかに関係なく常に MSB を表します。 [Transfer

Width] = 8 または 16 の場合、 未使用の上位ビッ ト ((AXI データ幅 – 1) ~ N) は予約です。

2. スタンダード SPI モードでは、 コアのコンフ ィギュレーシ ョ ンに応じて 8、 16、 32 のいずれかです。 デュアル/クワ ッ ド SPI モードでは、 このレジスタは 8 ビッ ト幅です。

Tx Data ((D(N-1) - D0))

N-1 0

X14422

AXI Quad SPI v3.2 28

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

SPI データ受信レジスタ

SPI データ受信レジスタ (SPI DRR) は SPI バスから受信したデータを読み出すために使用します。 これはダブル バッファー レジスタです。 1 回の転送が完了するたびに、 受信データがこのレジスタに格納されます。 SPI アーキテクチャには、 スレーブがバスの ト ラフ ィ ッ クを調整する メカニズムがあ り ません。 このため、 最後の SPI 転送の前に SPI DRR が読み出された場合のみ、 1 回のト ランザクシ ョ ン完了後に SPI DRR が更新されます。

SPI DRR が読み出されずにフルの場合、 最後に転送されたデータは失われ、 受信オーバーラン割り込みが発生します。 同じエラーはマスター SPI デバイスでも発生するこ とがあ り ます。

デザインで FIFO を含める ([FIFO Depth] = 16 または 256) か含めない ([FIFO Depth] = 0) かは、コアをスタンダード SPI モードにした場合のみ選択できます。 コアをデュアル/クワ ッ ド SPI モードにした場合は、 FIFO は常に存在します。このモードでは、 FIFO の深さを [FIFO Depth] パラ メーターで 16 または 256 に設定します。 マスターとスレーブのどちらの場合も、 受信 FIFO を有効にした場合 (スタンダード SPI モードのみ)、 データは FIFO バッファーに格納されます。 受信 FIFO は読み出し専用バッファーです。 空の受信レジスタ /FIFO に対して読み出しを実行する と、 ステータス レジスタのエラー フラグがセッ ト されます。 SPI DRR に書き込みを実行してもレジスタ内容は変化せず、 OK 応答のみが返されます。

SPI DRR のパワーオン リセッ ト時の値は不明です。 このレジスタ内のデータを読み出せるのは、 コア ト ランザクシ ョ ン中に受信 FIFO に既知のデータを書き込んだ場合のみです。図 2-5 に SPI DRR を示します。データ フォーマットの詳細は表 2-8 で説明します。

重要: SPI デバイスに発行されるコマンドによっては、 いくつかの不要なバイ トが受信 FIFO に書き込まれます。 これらのバイ トは破棄する必要があ り ます。

X-Ref Target - Figure 2-5

図 2‐5: SPI データ受信レジスタ  (コア ベース アドレス + 0x6C)

表 2‐8: SPI データ受信レジスタの説明 (コア ベース アドレス + 0x6C)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

[N–1]:0RX Data(1) (DN-1 - D0)

RO N/A

N ビッ トの SPI 受信データ。 N は 8、 16、 または 32 です。 (2)

[Transfer Width] = 8 の場合、 N = 8。[Transfer Width] = 16 の場合、 N = 16。[Transfer Width] = 32 の場合、 N = 32。

注記:1. DN-1 ビッ トはデータ転送フォーマッ トが LSB ファース トか MSB ファース トかに関係なく常に MSB を表します。 [Transfer

Width] = 8 または 16 の場合、 未使用の上位ビッ ト ((AXI データ幅 – 1) ~ N) は予約です。

2. スタンダード SPI モードでは、 コアのコンフ ィギュレーシ ョ ンに応じて 8、 16、 32 のいずれかです。 デュアル/クワ ッ ド SPI モードでは、 このレジスタは 8 ビッ ト幅です。

3. スタンダード モードで、 空の DRR FIFO を読み出すとスレーブ エラーとな り ます。

Rx Data (D(N-1) - D0)

N-1 0

X14424

AXI Quad SPI v3.2 29

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

SPI スレーブ選択レジスタ

SPI スレーブ選択レジスタ (SPISSR) には、長さ N のワンホッ ト エンコードによるアクティブ Low スレーブ選択ベクター SS を格納します。 N は [No. of Slaves] パラ メーターで設定したスレーブの数です。 SS ベクターは、 レジスタに右詰めで格納します。 Low にアサート されるビッ トは最大で 1 つまでです。 このビッ トが、 ローカル マスターが通信するスレーブを示します。 SPISSR のビッ ト割り当てを図 2-6 に示します。 詳細は表 2-9 で説明します。

SPI 送信 FIFO 占有レベル レジスタ

SPI 送信 FIFO 占有レベル レジスタ (TX_FIFO_OCY) は、 AXI Quad SPI コアで FIFO を有効 ([FIFO Depth] = 16 または 256) にした場合のみ存在します。 このレジスタが存在し、 送信 FIFO がエンプティでなければ、 FIFO 内のエレ メント数から 1 を引いた値をこのレジスタの下位 4 ビッ トに格納します (占有レベル - 1)。

このレジスタは読み出し専用です。 このレジスタに書き込んでも (または FIFO がエンプティの場合にこのレジスタを読み出しても )、 レジスタの内容は変化しません。 送信 FIFO がエンプティ /フルであるこ とを確実に判定するには、 SPI ステータス レジスタの Tx_Empty/Tx_Full ステータス ビッ ト を読み出すか、割り込みステータス レジスタの DTR エンプティ ビッ ト を読み出す必要があ り ます。 図 2-7 に送信 FIFO 占有レベル レジスタを示します。 データ フォーマッ トの詳細は表 2-10 で説明します。

X-Ref Target - Figure 2-6

図 2‐6: SPI スレーブ選択レジスタ  (コア ベース アドレス + 0x70)

表 2‐9: SPI スレーブ選択レジスタの説明 (コア ベース アドレス + 0x70)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:N 予約 N/A N/A 予約

[N–1]:0 Selected Slave R/W 1

長さ N ビッ トのワンホッ ト エンコードによるアクティブ Low スレーブ選択ベクター。 N データ バス幅 (32 ビッ ト ) とする必要があ り ます。

スレーブ番号は LSB から順に 0、 1、 2 …と割り当てられます。スレーブ番号は信号 SS のインデッ クスに対応します。

X-Ref Target - Figure 2-7

図 2‐7: SPI 送信 FIFO 占有レベル レジスタ  (コア ベース アドレス + 0x74)

表 2‐10: SPI 送信 FIFO 占有レベル レジスタの説明 (コア ベース アドレス + 0x74)

ビッ ト 名前コア 

アクセスリセッ ト値 (16 進数)

説明

31 – log(FIFO Depth) 予約 N/A N/A 予約

(log(FIFO Depth)–1):0 Occupancy Value R 0 この 2 進数値に 1 を足したものが占有レベルです。

0N-1N31

Selected SlaveReserved

X14425

(log(C_FIFO_DEPTH)-1) log(C_FIFO_DEPTH) 031

Occupancy ValueReserved

X14426

AXI Quad SPI v3.2 30

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

SPI 受信 FIFO 占有レベル レジスタ

SPI 受信 FIFO 占有レベル レジスタ (RX_FIFO_OCY) は、 AXI Quad SPI コアの設定で FIFO を有効 ([FIFO Depth] = 16 または 256) にした場合のみ存在します。 このレジスタが存在し、 受信 FIFO が空でなければ、 FIFO 内のエレ メン ト数から 1 を引いた値をこのレジスタの下位 4 ビッ トに格納します (占有レベル - 1)。

このレジスタは読み出し専用です。 このレジスタに書き込んでも (または FIFO が空の場合にこのレジスタを読み出しても )、 レジスタの内容は変化しません。 受信 FIFO が空/フルであるこ とを確実に判定するには、 SPI ステータス レジスタの Rx_Empty/Rx_Full ステータス ビッ ト を読み出す必要があ り ます。

図 2-8 に受信 FIFO 占有レベル レジスタを示します。 データ フォーマッ トの詳細は表 2-11 で説明します。

割り込みレジスタ  セッ トの説明

AXI Quad SPI コアには多くの種類の割り込みがあ り、 これらは割り込みコン ト ローラーに送信されます。 コアの割り込みコン ト ローラーは、 IP 割り込みイネーブル レジスタ (IPIER) を使用して各割り込みを個別に有効にできます。割り込みレジスタは割り込みコン ト ローラー内にあ り ます。 割り込みス ト ローブは複数の条件で生成するこ と も、1 回の転送完了後に生成するこ と もできます。 スタンダード、 デュアル、 またはクワ ッ ド SPI モードでマスター モードの場合、 [FIFO Depth] パラ メーターを 16 または 256 に設定する と表 2-13 に示した割り込みのほとんどすべてを利用できます。

スタンダード SPI モードで [FIFO Depth] を 0 に設定した場合、次に示すものを除きすべての割り込みを利用できます。

• ビッ ト [6]: TX FIFO Half Empty

• ビッ ト [8]: DRR_Not_Empty (このモードには存在しない)

デバイス グローバル割り込みイネーブル レジスタ

デバイス グローバル割り込みイネーブル レジスタ (DGIER) は、 割り込みコン ト ローラーからの最終的な割り込み出力をグローバルに有効にします (図 2-9 参照)。 詳細は表 2-12 で説明します。 これは読み出し /書き込み可能なビッ トで、 リセッ ト時にク リ アされます。

X-Ref Target - Figure 2-8

図 2‐8: SPI 受信 FIFO 占有レベル レジスタ  (コア ベース アドレス + 0x78)

表 2‐11: SPI 受信 FIFO 占有レベル レジスタの説明 (コア ベース アドレス + 0x78)

ビッ ト 名前コア 

アクセスリセッ ト値 (16 進数)

説明

31–log(FIFO Depth) 予約 N/A N/A 予約

(log(FIFO Depth)–1):0 Occupancy Value R 0 この 2 進数値に 1 を足したものが占有レベルです。

X-Ref Target - Figure 2-9

図 2‐9:デバイス グローバル割り込みイネーブル レジスタ  (コア ベース アドレス + 0x1C)

(log(C_FIFO_DEPTH)-1) log(C_FIFO_DEPTH) 031

Occupancy ValueReserved

X14427

03031

Reserved

X14428

AXI Quad SPI v3.2 31

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

IP 割り込みステータス レジスタ  (IPISR)

システムで FIFO を使用するかど うか、 マスター モードかスレーブ モードかで最大 14 種類の割り込み条件を使用できます。 FIFO を使用しないシステムでは、 割り込みの数は 7 つです。 割り込みコン ト ローラー内にあるこの 32 ビット割り込みステータス レジスタを使用して、 各割り込みを個別に有効にできます。 IP 割り込みステータス レジスタ (IPISR) はすべての割り込みイベン ト をキャプチャします。 図 2-10 にこのレジスタのビッ ト割り当てを示します。詳細は表 2-13 で説明します。 割り込みレジスタは読み出しおよび TOW (書き込みによる ト グル) が可能なレジスタです。 このレジスタの特定のビッ トに 1 を書き込むと、 そのビッ ト位置の値がト グルします。 このレジスタのビットはすべて リセッ ト時にク リ アされます。

表 2‐12:デバイス グローバル割り込みイネーブル レジスタの説明 (コア ベース アドレス + 0x1C)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31 GIE R/W 0

グローバル割り込みイネーブル。

個別に有効にしたすべての割り込みを割り込みコン ト ローラーに渡します。定義:0 = 無効。1 = 有効。

30:0 予約 N/A N/A 予約

X-Ref Target - Figure 2-10

図 2‐10: IP 割り込みステータス レジスタ  (コア ベース アドレス + 0x20)

X14429

05 4 37 6 231 1

Slave MODF

MODF

DTR Under-run

DTR EmptyReserved

DRR Over-run

DRRFull

Tx FIFO Half Empty

Slave Mode_Select

8

DRR_Not_Empty

91011

Slave Mode Error

CPOL_CPHA Error

1213

Loop Back Error

MSB Error

14

Command Error

表 2‐13: IP 割り込みステータス レジスタの説明 (コア ベース アドレス + 0x20)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:14 予約 N/A N/A 予約

13 Command Error R/TOW(1) 0

コマンド エラー。

IPISR ビッ ト [13] はコマンド エラーを示します。定義:1 = 次の場合にこのフラグがアサート されます。

• コアがデュアル/クワ ッ ド SPI モードに設定されており、 かつ

• SPI DTR FIFO のリセッ ト後の最初のエン ト リがターゲッ ト メモ リでサポート されるコマンドのリ ス トに一致しない場合。

DTR FIFO 内の SPI コマンドが、 この内部コマンド リ ス トに一致しない場合、 コアはスタンダード SPI フォーマッ トで SPI ト ランザクシ ョ ンを完了します。 コアがこの動作をした場合にこのビットがセッ ト されます。スタンダード SPI モードでは、 このビッ トは常にデフォルト値です。

AXI Quad SPI v3.2 32

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

12 Loopback Error R/TOW(1) 0

ループバッ ク エラー。

IPISR ビッ ト [12] はループバッ ク エラーを示します。定義:1 = 次の場合にこのフラグがアサート されます。

• コアがデュアル/クワ ッ ド SPI モードに設定されており、 かつ

• 制御レジスタ (SPICR(0)) で LOOP ビッ トがセッ ト されている場合。

スタンダード SPI モードでは、 このビッ トは常にデフォルト値です。

11 MSB Error R/TOW(1) 0

MSB エラー。

IPISR ビッ ト [11] は MSB エラーを示します。定義:1 = 次の場合にこのフラグがアサート されます。

• コアがデュアル/クワ ッ ド SPI モードに設定されており、 かつ

• 制御レジスタ (SPICR) の LSB First ビッ トが 1 に設定されている場合。

スタンダード SPI モードでは、 このビッ トは常にデフォルト値です。

10 Slave Mode Error R/TOW(1) 1

I/O モード命令エラー。

IPISR ビッ ト [10] はスレーブ モード エラーを示します。次の場合にこのフラグがアサート されます。

• コアがデュアル/クワ ッ ド SPI モードに設定されており、 かつ

• 制御レジスタ (SPICR(2)) の Master ビッ トが 0 に設定されている場合。

スタンダード SPI モードでは、 このビッ トは常にデフォルト値です。

9 CPOL_CPHA Error R/TOW(1) 0

CPOL_CPHA エラー。

IPISR ビッ ト [9] は CPOL_CPHA エラーを示します。次の場合にこのフラグがアサート されます。

• コアがデュアル/クワ ッ ド SPI モードに設定されており、 かつ

• 制御レジスタの CPOL - CPHA ビッ トが 01 または 10 に設定されている場合。

スタンダード SPI モードでは、 このビッ トは常にデフォルト値です。

8 DRR_Not_Empty R/TOW(1) 0

DRR ノ ッ ト エンプティ。

IPISR ビッ ト [8] は DRR ノ ッ ト エンプティ ビッ トです。このビッ トは、[FIFO Depth] が 16 または 256 で、コアをスレーブ モードおよびスタンダード SPI モードにした場合のみアサート されます。 このビッ トは、 SPI ト ランザクシ ョ ン中に DRR FIFO が最初のデータ値を受信する とセッ ト されます。このビッ トは、 コアが最初のデータ ビート を受信する と割り込みレジスタへの 1 ク ロ ッ ク周期のス ト ローブによってセッ ト されます。

注記: このビッ トは、 [FIFO Depth] が 16 または 256 で、 コアをスレーブ モードおよびスタンダード SPI モードにした場合のみアサート されます。

[FIFO Depth] を 0 に設定した場合、 このビッ トは常に 0 を返します。 デュ

アル/クワ ッ ド モードでは、 このビッ トは無視されます。

表 2‐13: IP 割り込みステータス レジスタの説明 (コア ベース アドレス + 0x20) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

AXI Quad SPI v3.2 33

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

7 Slave_Select_Mode R/TOW(1) 0

スレーブ選択モード。

IPISR ビッ ト [7] はスレーブ モード ビッ トです。このビッ トは、 コアをスレーブ モードおよびスタンダード SPI モードにした場合のみアサート されます。 このビッ トは、ほかの SPI マスター コアがスレーブ選択ラインをアサート してこのコアを選択する とセッ ト されます。 このビッ トは、 割り込みレジスタへの 1 ク ロ ッ ク周期のス ト ローブによってセッ ト されます。

注記: このビッ トはスタンダード SPI スレーブ モードの場合のみ関係し

ます。

6 TX FIFO Half Empty R/TOW(1) 0

送信 FIFO ハーフ エンプティ。

スタンダード SPI モードでは、 IPISR ビッ ト [6] は送信 FIFO ハーフ エンプティ割り込みを示します。 たとえば [FIFO depth] = 16 の場合、 このビッ トは FIFO 占有レベルの値が 1000 から 0111 へデク リ メン トする と割り込みレジスタへの 1 ク ロ ッ ク周期のス トローブによってセッ ト されます。 0111 は、送信 FIFO に 8 つのエレ メン トが格納されているこ とを意味します。 このモードでは、FIFO の深さは 16 に固定されます。 同様に、 深さが 256 の場合は 10000000 から 01111111 への変化でハーフ エンプティ とな ります。デュアルまたはクワッ ド SPI モードでは、 このビッ トは FIFO の深さに応じてハーフ エンプティ条件が成立するとセッ ト されます。

注記: この割り込みは、 AXI Quad SPI コアをスタンダード、 デュアル、 ま

たはクワ ッ ド SPI モードにし、 FIFO を有効にした場合のみ存在します。

5 DRR Overrun R/TOW(1) 0

データ受信レジスタ /FIFO オーバーラン。

IPISR ビッ ト [5] はデータ受信 FIFO オーバーラン割り込みです。このビッ トは、受信レジスタ /FIFO がフルの場合に SPI コア ロジックがデータを書き込んで SPI 転送が完了すると、 割り込みレジスタへの 1 クロッ ク周期のス ト ローブによってセッ ト されます。これは、 SPI デバイスがマスターまたはスレーブ モード (スタンダード SPI モードの場合)、 または IP が SPI マスター モードに設定されている場合 (デュアル/クワ ッ ド SPI モードの場合) に発生します。

4 DRR Full R/TOW(1) 0

データ受信レジスタ /FIFO フル。

IPISR ビッ ト [4] はデータ受信レジスタ フル割り込みです。 FIFO を使用しない場合、このビッ トは 1 つの SPI エレ メン ト (1 エレ メン トは [Transfer Width] の値によ りバイ ト、 ハーフワード、 またはワードのいずれか) の転送が終了する と、 割り込みレジスタへの 1 ク ロ ッ ク周期のス ト ローブによってセッ ト されます。FIFO を使用する場合、 このビッ トは SPI エレ メン トの転送が完了して受信 FIFO が完全にフルになる と、 割り込みレジスタへの 1 ク ロ ッ ク周期のス ト ローブによってセッ ト されます。

3 DTR Underrun R/TOW(1) 0

データ送信レジスタ /FIFO アンダーラン。

IPISR ビッ ト [3] はデータ送信レジスタ /FIFO アンダーラン割り込みです。 このビッ トは、 SPI ロジッ クが SPI 転送を実行するために空の送信レジスタ /FIFO からデータを要求する と、 SPI エレ メン トの転送終了時に割り込みレジスタへの 1 ク ロ ッ ク周期のス トローブによってセッ ト されます。これは、 SPI デバイスがスタンダード SPI モードでスレーブと して構成されており、 SPE ビッ トがセッ ト されて有効になっている場合のみ発生します。 アンダーラン条件ではシフ ト レジスタにすべて 0 がロード され、 スレーブによって送信されます。

表 2‐13: IP 割り込みステータス レジスタの説明 (コア ベース アドレス + 0x20) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

AXI Quad SPI v3.2 34

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

IP 割り込みイネーブル レジスタ  (IPIER)

IP 割り込みイネーブル レジスタ (IPIER) は、 システム割り込み出力をアクティブにするかど うかを設定します。この割り込みは、 IPISR レジスタのビッ トがアクティブで、 対応する IPIER レジスタのビッ トがイネーブルの場合に生成されます。 IPIER レジスタには、 IPISR で定義された各ビッ トに対応するイネーブル ビッ トがあ り ます (図 2-11 参照)。 詳細は表 2-14 で説明します。 ビッ トはすべて リセッ ト時にク リ アされます。

2 DTR Empty(2) R/TOW(1) 0

データ送信レジスタ /FIFO エンプティ。

IPISR ビッ ト [2] はデータ送信レジスタ /FIFO エンプティ割り込みです。 最後のデータ バイ トが外部フラ ッシュ メモ リに転送される とセッ ト されます。 第 3 章の 「転送終了周期」 を参照してください。M68HC11 リ ファレンス マニュアルの説明では、 FIFO なしで構成した場合、 この割り込みは SPI 転送完了フラグ (SPIF) 割り込みビッ トの補数と同じ意味です。 マスター モードでこのビッ トが 1 にセッ ト される と、 それ以上の SPI 転送は許可されません。

1 Slave MODF R/TOW(1) 0

スレーブ モード フォルト エラー。

IPISR ビッ ト [1] はスレーブ モード フォルト エラー フラグです。この割り込みは、 スレーブと して設定された SPI デバイスが無効にされている と きに SS 信号がアクティブになる と生成されます。このビッ トは SS がアクティブになる とすぐにセッ ト され、 SS がアクティブでデバイスが有効になっていない間はセッ ト されたままです。

0 MODF R/TOW(1) 0

モード フォルト エラー。

IPISR ビッ ト [0] はモード フォルト エラー フラグです。この割り込みは、 マスターと して設定した SPI デバイスで SS 信号がアクティブになる と生成されます。 このビッ トは SS がアクティブになる とすぐにセッ ト されます。

注記:1. TOW = 書き込みによ り ト グル (Toggle on Write)。 レジスタの特定のビッ トに 1 を書き込むと、 そのビッ ト位置の値がト グルします。

2. IPISR の DTR Empty ビッ トは、 IP からフラ ッシュ メモ リへの ト ランザクシ ョ ンが完了したこ とを確認するために使用します。

表 2‐13: IP 割り込みステータス レジスタの説明 (コア ベース アドレス + 0x20) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

X-Ref Target - Figure 2-11

図 2‐11: IP 割り込みイネーブル レジスタ  (コア ベース アドレス + 0x28)

X14430

05 4 37 6 231 1

Slave MODF

MODF

DTR Under-run

DTR EmptyReserved

DRR Over-run

DRRFull

Tx FIFO Half Empty

Slave Mode_Select

8

DRR_Not_Empty

91011

Slave Mode Error

CPOL_CPHA Error

1213

Loop Back Error

MSB Error

14

Command Error

AXI Quad SPI v3.2 35

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

表 2‐14: IP 割り込みイネーブル レジスタの説明 (コア ベース アドレス + 0x28)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:14 予約 N/A N/A 予約

13 Command Error R/W 0

コマンド エラー。

0 = 無効。1 = 有効。

このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにした場合のみ関係します。

12 Loopback Error R/W 0

ループバッ ク エラー。

0 = 無効。1 = 有効。

このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにした場合のみ関係します。

11 MSB Error R/W 0

MSB エラー。

0 = 無効。1 = 有効。

このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにした場合のみ関係します。

10Slave Mode

ErrorR/W 0

I/O モード命令エラー。

0 = 無効。1 = 有効。

このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにした場合のみ関係します。

9CPOL_CPHA

ErrorR/W 0

CPOL_CPHA エラー。

0 = 無効。1 = 有効。

このビッ トは、 コアをデュアル/クワ ッ ド SPI モードにした場合のみ関係します。

8DRR_Not_

EmptyR/W 0

DRR ノ ッ ト エンプティ。

0 = 無効。1 = 有効。

注記: このビッ トは、 コアの [FIFODepth] を 1 に設定し、 スタンダード SPI スレーブ モードにした場合のみ関係します。

[FIFO Depth] を 0 に設定した場合、 このビッ トの設定は無視されます。 この設定はスタンダード SPI モードの場合のみサポート されます。 この場合、 IPIER レジスタのこのビッ トはセッ ト されません。 したがって、 このビッ トは [FIFO Depth] を 1 に設定し、 コアをスレーブ モードに設定したした場合のみ使用して ください。

デュアル/クワ ッ ド モードでは、 このビッ トは無視されます。

7Slave_Select_

ModeR/W 0

スレーブ選択モード。

0 = 無効。1 = 有効。

このビッ トは、spisel でアクティブ Low のステータスを選択してコアをスレーブ モードに設定した場合のみ関係します。 マスター モードでは、 このビッ トの設定は無視されます。

AXI Quad SPI v3.2 36

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

XIP モード

AXI Quad SPI コアを XIP モードに設定した場合、 AXI4-Lite インターフェイスで利用できるのは次のレジスタのみです。

• XIP コンフ ィギュレーシ ョ ン レジスタ

• XIP ステータス レジスタ

これらの 32 ビッ ト レジスタは、 AXI4-Lite インターフェイス経由で個別に設定およびアクセスできます。 表 2-15 に、 XIP モードで利用できる AXI Quad SPI コア レジスタをま とめます。

重要: XIP モードでは、AXI QUAD SPI コアは割り込みを生成しません。割り込みピンは未接続のままでかまいません。

6TX FIFO Half

EmptyR/W 0

送信 FIFO ハーフ エンプティ。

0 = 無効。1 = 有効。

注記: このビッ トは、 AXI Quad SPI コアのコンフ ィギュレーシ ョ ンで FIFO を有効にした場合のみ意味があ り ます。

5 DRR Overrun R/W 0受信 FIFO オーバーラン。

0 = 無効。1 = 有効。

4 DRR Full R/W 0データ受信レジスタ /FIFO フル。

0 = 無効。1 = 有効。

3 DTR Underrun R/W 0データ送信 FIFO アンダーラン。

0 = 無効。1 = 有効。

2 DTR Empty R/W 0データ送信レジスタ /FIFO エンプティ。

0 = 無効。1 = 有効。

1 Slave MODF R/W 0スレーブ モード フォルト エラー フラグ。

0 = 無効。1 = 有効。

0 MODF R/W 0モード フォルト エラー フラグ。

0 = 無効。1 = 有効。

表 2‐15: XIP モードのコア レジスタ

ベース アドレスオフセッ ト  (16 進数)

レジスタ名アクセス タイプ

デフォルト値 (16 進数)

説明

コア関連レジスタ

60 XIP Config_Reg (XIP-CR) R/W 0x0 XIP コンフ ィギュレーシ ョ ン レジスタ

64 XIP Status_Reg (XIP-SR) R 0x0 XIP ステータス レジスタ

表 2‐14: IP 割り込みイネーブル レジスタの説明 (コア ベース アドレス + 0x28) (続き)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

AXI Quad SPI v3.2 37

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

XIP モードのコマンド

XIP モードのレジスタには、 AXI4-Lite インターフェイス経由でアクセスします。 XIP モードにした場合、 コアは次の 3 つの読み出しコマンドをサポート します。

• 高速読み出し (0x0Bh)

• 高速読み出しデュアル I/O (0xBBh)

• 高速読み出しクワッ ド I/O (0xEBh)

コアがどのコマンドをサポートするかは、 [Mode] で決定します。 これらはビルト イン コマンドで、 それ以外のコマンドをコンフ ィギュレーシ ョ ンする必要はあ り ません。 [Mode] を設定したら、 ト ランザクシ ョ ンが終わるまで同じコマンドで動作します。

XIP コンフ ィギュレーシ ョ ン レジスタ

図 2-12 に、 XIP コンフ ィギュレーシ ョ ン レジスタ (XIP-CR) のビッ ト割り当てを示します。 このレジスタは、 読み出し専用の XIP モードの設定に使用します。 このレジスタは読み出し /書き込みが可能で、 CPOL および CPHA モードを設定します。 XIP モードでは、 CPOL–CPHA = 00 または CPOL–CPHA = 11 のみサポート されます。 これ以外の組み合わせではステータス レジスタのエラー フラグがセッ ト され、 コアは AXI4 インターフェイスで ト ランザクシ ョ ンを受け取り ません。 新規に AXI4 ト ランザクシ ョ ンを開始する前に、 コアは必ず CPOL と CPHA の設定を確認します。

XIP ステータス レジスタ

図 2-13 に XIP ステータス レジスタ (XIP-SR) のビッ ト割り当てを示します。 詳細は表 2-16 で説明します。 このレジスタは、 コマンドおよびコアが実行するその他のプロセスのステータスを確認するために使用します。 コアが書き込みコマンドまたは書き込みト ランザクシ ョ ンを受信した場合はエラーが生成され、 ステータス レジスタに示されます。 このレジスタは読み出し専用です。 このレジスタに書き込みを実行した場合、 通常の ACK が返されますがレジスタの内容は変化しません。 このレジスタの内容は、 読み出すと リセッ ト されます。 コアにはタイムアウ ト カウンターがないため、 AXI4 ト ランザクシ ョ ンを受け取るこ とができない場合はステータス レジスタでエラーを確認する必要があ り ます。 エラーがある場合、 コアは AXI4 ト ランザクシ ョ ンを受け取り ません。

X-Ref Target - Figure 2-12

図 2‐12: XIP コンフ ィギュレーシ ョ ン レジスタ  (コア ベース アドレス + 0x60)

X-Ref Target - Figure 2-13

図 2‐13: XIP ステータス レジスタ  (コア ベース アドレス + 0x64)

Reserved

31 2

X14431

1 0

CPOL CPHA

Reserved

31 5

X14432

4 3

AXITransaction

Error

MasterMODF

2 1 0

Rx Empty

CPOL_CPHAError Rx Full

AXI Quad SPI v3.2 38

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

仕様との相違点

Motorola M68HC11‐Rev. 4.0 リファレンス マニュアルとの相違点

• スレーブに設定して有効にしていない SPI デバイスを選択した場合に割り込みを生成できるよ うに、 スレーブ モード フォルト エラーが追加されています。

• このデザインでは、 SPI DTR レジスタ と SPI DRR レジスタのアドレスは異なっています。 M68HC11 仕様では、これら 2 つのレジスタのアドレスは同じです。

• SPI デバイスの SS 信号はすべて FPGA 内部で相互に接続する必要があ り ます。 これは、 FPGA リ ソースの使用を最小限に抑えるためにスレーブで SS 信号のト グルを利用しているためです。

• SPICR レジスタのビッ ト [7] をセッ トする と SS 信号を手動で制御できます。 デバイスをマスターと して構成して SPICR レジスタのビッ ト [7] をセッ トする と、 SPISSR レジスタのベクターがアサート されます。 このモードを有効にする と、 SS ベクターを ト グルしなくても複数のエレ メン ト を転送できます。

• マスター転送を禁止する制御ビッ トが用意されています。 このビッ トはすべてのマスター モードで有効ですが、主な目的は SS 信号を手動で制御するこ とにあ り ます。

• M68HC11 のインプリ メンテーシ ョ ンでは、 送信レジスタはシフ ト レジスタから透過的であるため、 書き込み競合エラー (WCOL) 検出ハードウェアが必要です。 このデザインでは、 この機能はインプリ メン ト されていません。

• M68HC11 仕様で M68HC11 制御レジスタにある割り込みイネーブル (SPIE) ビッ トが IPIER レジスタに移動されています。 SPIE ビッ トの位置には、 テス ト用のローカル マスター ループバッ ク モードを選択するビッ トがあり ます。

• このデザインには、 送信モード と受信モードの両方 (全二重のみ) で FIFO をインプリ メン トするオプシ ョ ンがあり ます。

• M68HC11 のインプリ メンテーシ ョ ンでサポート されるのはバイ ト転送のみです。 このデザインでは、 [Transaction Width] パラ メーターを使用してバイ ト、 ハーフワード、 またはワード転送のいずれかに設定できます。

• Motorola の仕様では、 ボー レート ジェネレーターは制御レジスタのビッ ト を使用してプログラムします。 しかしこの FPGA デザインでは、 ボー レート ジェネレーターは VHDL インプリ メンテーシ ョ ンのパラ メーターを使用してプログラムします。 このため、 ボー レート を実行時に変更するこ とはできません。 比の値は、 2、 4、 16、32 以外に 2048 までの 16 の倍数を指定できます。

表 2‐16: XIP ステータス レジスタの説明 (コア ベース アドレス + 0x64)

ビッ ト 名前コア 

アクセスリセッ ト

値説明

31:5 予約 N/A 0 予約

4AXI Transaction

ErrorR 0 AXI ト ランザクシ ョ ン エラー

3CPOL_CPHA

ErrorR 0 CPOL_CPHA エラー

2 Master MODF R 0 マスター モード フォルト。 spisel ラインがディアサート されている場合、 このビッ トは 1 にセッ ト されます。

1 RX Full R 0 レシーバー フル

0 RX Empty R 1 レシーバー エンプティ

AXI Quad SPI v3.2 39

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 2 章:製品仕様

• ほとんどの SPI スレーブ デバイスは SPI モード 0 および 3 をサポート します。 これらデバイスの一部は、 データ有効期間が SCK の立ち下がりエッジから 8ns です。 これらのデバイスを 50MHz (ほとんどの命令がサポートする速度) で高速動作させる場合、 [Frequency Ratio] を 2 に設定する必要があ り ます (AXI の動作周波数を 100MHz にした場合)。

デザイン内の時間の制約およびデータ変更時の SPI スレーブの実際の動作を理由に、 SPI コア内のデータはコア内の SPI 立ち上がりエッジとその直後の立ち下がりエッジの中間で取り込まれます。 これによ り、 コアがデータを取り込む時間に 5ns が追加されます (ext_spi_clk ポートの動作クロ ッ クが 100MHz の場合)。 M68HC11 リ ファレンス マニュアルの記載に従い、 SPI モード 1 および 3 ではマスターは SCK の立ち上がりエッジごとにデータを取り込む必要があ り ます。 [Frequency Ratio] = 2 の場合、 このデータ取り込みメカニズムはこのコア特有のもので、 仕様に記載されたデータ取り込みメカニズムとは異なり ます。 SPI コアをマスター モードに設定した場合、 立ち下がりエッジごとにデータを変更します。 この動作は M68HC11 仕様に準拠しています。

• AXI Quad SPI コアをスレーブ モードにした場合 ([Mode] = [Standard])、 コア内のデータは SCK の立ち上がりエッジ + 1 AXI クロッ ク サイクルで取り込まれます。 内部では、 このデータは AXI クロッ ク サイクルの次の立ち上がりエッジで取り込まれます。 コアは SCK の立ち下がりエッジ + 1 AXI クロッ ク サイクルでデータを変更します。

• スタンダード SPI モードで SCK RATIO = 16 を使用した場合、 ダウンス ト リーム デバイスが次の SPI 立ち上がりエッジでデータを取り込むためのセッ ト アップ タイムと して、 コアは ext_spi_clk の約 7 サイクルを提供します。

その他の相違点

• AXI Quad SPI コアは同時に複数のメモ リ を選択できません。 つま り、 マルチスレーブ システムでは一度に 1 つのスレーブのみを選択してコマンドを実行するよ うにコアを設定する必要があ り ます。

• このコアは Winbond (W25Q80)、 Micron (N25Q256)、 Macronix (MX66U1G45G)、 および Spansion (S70FL01GS) メモ リの使用を想定しています。 これ以外のメモ リ デバイスを使用してコアをテス トする場合、 コアを正し く動作させるためには内部コマンド デコード ロジッ ク とそのビッ ト位置が理解される必要があ り ます。また、 Winbond、 Micron、 Spansion、 Macronix およびその他のメモリで共通にサポート されるコマンドが実行されるよ うに、 各メモ リのデータシートで共通のコマンド セッ ト を確認して ください。 クワ ッ ド モードでは、Micron メモ リは HOLD 機能を備えたデバイスのみがサポート されます。 RESET 機能を備えたメモ リ デバイスはサポート されません。

• 55 ページの 「次に、 デュアル/クワ ッ ド SPI モードでサポート されないコマンドを Winbond、 Micron、 Spansion のメモ リ別に示します。」 を参照してください。

• AXI Quad SPI コアは Winbond、 Micron、 Macronix、 および Spansion メモ リでコマンド、 アドレス、 データ要件と動作が共通なコマンド セッ トのみをサポートするため、 スレーブには同じ種類のメモ リ を使用して ください。1 種類のメモ リのみを使用した場合、 コアはよ り多くのコマンドをサポートでき、 性能が最大限に引き出されます。

• XIP モードでは、 AXI4/AXI4-Lite インターフェイス と SPI ド メ インの間でクロ ッ ク ド メ インをまたぐ信号がいくつかあ り ます。 XIP SR を読み出す場合は、 コアがステータス ビッ ト を更新するのに 5 ク ロ ッ ク サイクルかかるこ とに注意してください。

• XIP モードでは、 バイ ト アクセス モードはサポート されません。

• コアはコマンド キューイングをサポート していません。 このコアは、 Winbond、 Micron、 Macronix、 Spansion のスタンダード SPI メモ リ デバイスでサポート されるコマンドのみに基づいて設計されています。

AXI Quad SPI v3.2 40

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3章

コアを使用するデザインこの章では、 コアを使用した設計をよ り容易にするためのガイ ド ラインおよび追加情報を紹介します。

一般的なデザイン  ガイド ライン

AXI インターフェイスに基づく機能

AXI4‐Lite インターフェイス

AXI4-Lite インターフェイスを選択した場合、 SPI DTR と SPI DRR を含むすべてのレジスタが 32 ビッ トのシングル アクセス レジスタです。 SPI DTR および SPI DRR レジスタは、 32 ビッ トの うち 8 ビッ トのみが有効です。

AXI4 インターフェイス (エンハンスト  モード )

AXI4 インターフェイスを選択した場合、 どのレジスタにも長さ 1 のシングル アクセス とする必要があ り ます。 SPI DTR または SPI DRR 以外でバース ト アクセスを試みた場合、 コアの動作は保証されません。 SPI DTR および SPI DRR レジスタは 32 ビッ ト と してアクセスできます。 FIXED バース トは SPI DTR および SPI DRR レジスタに対してのみ可能です。 FIXED バース トの 32 ビッ トの うち、 8 ビッ トのみが有効です。 再帰 FIXED バース ト を開始する前には FIFO 占有レベル レジスタを読み出してください。FIFO 占有レベル レジスタの値に基づいて FIXED バース トの長さを決定します。 最後の 8 ビッ トのみを実際のデータ と見なす必要があ り ます。

DTR レジスタに対して書き込みバース ト を実行する場合、 書き込みス ト ローブのホールは認められません。 これはコアによってサポート されておらず、 この場合のコアの動作は保証されません。

SPI フラ ッシュ メモ リで新規ト ランザクシ ョ ンを開始する場合、 DTR FIFO にはコマンド、 アドレス、 ダ ミー バイト、 データ バイ トの順に格納する必要があ り ます。 アプリ ケーシ ョ ンはこのシーケンスに厳密に従う必要があ り ます。読み出しまたは書き込みデータ占有レベル レジスタで受信または送信 FIFO の空きの数を調べて、次のバース ト ト ランザクシ ョ ンの長さを決定できます。 このモードは、 主に CDMA ベースのアプリ ケーシ ョ ンに適しています。

AXI4 読み出し専用インターフェイス (XIP モード )

このインターフェイスでは、 AXI4 インターフェイスからの読み出し ト ランザクシ ョ ンのみが許可されます。 書き込みト ランザクシ ョ ンはサポート されず、 コアによってエラーと見なされます。 XIP レジスタには AXI4-Lite インターフェイス経由でアクセスします。 このモードは、 主にフラ ッシュ デバイスを ROM ベースのアプリ ケーシ ョ ンで使用する場合に適しています。

AXI Quad SPI v3.2 41

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

AXI4‐Lite インターフェイスのみを使用するスタンダード  SPI デバイスの機能

スタンダード SPI コンフ ィギュレーシ ョ ンの SPI デバイスには、 「IP の概要」 の 「機能」 に記載したもの以外に、 次のスタンダード機能があ り ます。

• ト ラ イステート ポートの表現を_I、 _O、 _T と区別し、 FPGA 内のマルチマスター構成をサポート します。

• デフォルト コンフ ィギュレーシ ョ ンで N x 8 ビッ トのデータ キャラ ク ターが使用可能です。 デフォルト モードでは、 SPISSR に書き込んだデータを使用して SS 出力を手動で制御します。 マスターを有効にする と、 このデータが SS 出力に直接そのまま現れます。 このモードは、 外部スレーブ デバイスに対してのみ使用できます。または、 マスター デバイスによる 8 ビッ トのキャラ ク ター転送ごとに SS 出力を自動でト グル (FIFO 無効時) するよ うに SPI マスター デバイスの SPICR のビッ トで選択するこ と もできます。

• マルチマスター環境をサポート します ( ト ラ イステート ド ラ イバーを使用してインプ リ メン ト 。 競合の可能性があるため、 ソフ ト ウェアによるアービ ト レーシ ョ ンが必要)。 「スタンダード SPI マルチマスター構成における AXI4-Lite インターフェイスの機能」 を参照して ください。

• マルチスレーブ環境をサポート します (マスター側で追加のスレーブ選択出力信号を自動で生成)。

• マスター モードでは AXI ク ロ ッ ク レートの最大 1/2、 スレーブ モードでは AXI ク ロ ッ クの最大 1/4 の SPI クロ ッ ク レート をサポート します (AXI ク ロ ッ ク と SPI ク ロ ッ クの同期方法によ り、 スレーブ モードでは C_SCK_RATIO = 2 はサポート されない)。 スレーブ モードに設定した場合、 AXI ク ロ ッ ク信号と外部クロ ッ ク信号を揃える必要があ り ます。

• SPI ク ロ ッ ク信号用のパラ メーター変更可能なボー レート ジェネレーターがあ り ます。

• M68HC11 リ ファレンス マニュアルに記載された書き込み競合エラーの WCOL フラグはサポート していません。SPI データ転送中は送信レジスタに書き込まないでください。

• 連続ト ランザクシ ョ ンをサポート します。 送信 FIFO エンプティ または受信 FIFO フルが発生しない限り、 複数のバイ ト /ハーフワード /ワード転送を中断なく実行できます。

• SPI 転送はすべて全二重で、 マスターからスレーブへ 8 ビッ トのデータ キャラ ク ターを転送しながらスレーブからマスターへも別の 8 ビッ ト データ キャラ ク ターを転送できます。 これは、 SPI マスター デバイスの 8 ビット シフ ト レジスタを SPI スレーブ デバイスの別の 8 ビッ ト シフ ト レジスタに接続した循環 16 ビッ ト シフ ト レジスタ と見なすこ とができます。

AXI Quad SPI v3.2 42

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

スタンダード  SPI マルチマスター構成における AXI4‐Lite インターフェイスの機能

個々のスレーブ デバイス (N 番目のデバイス) への SPI バスは次の 4 線で構成されます。

• シ リアル ク ロ ッ ク (SCK)

• IO0 (MOSI (Master Out, Slave In))

• IO1 (MISO (Master In, Slave Out))

• スレーブ選択 (SS(N))

SCK、 IO0 (MOSI)、 および IO1 (MISO) 信号はすべてのスレーブとマスターで共有します。 図 3-1 を参照してください。 図 3-1 で、 いずれか 1 つの SPI デバイスを SPICR (60h) でマスターと して設定し、 それ以外のデバイスをスレーブに設定できます。 この場合、 マスターは ss ピンからスレーブの SPISEL ピンを駆動します。

注記: マスター モードで生成したコアを SPICR (60h) でスレーブと して設定した場合、 SPISEL は SPI マスターからコアへ駆動されます。

X-Ref Target - Figure 3-1

図 3‐1: スタンダード  SPI モードにおけるマルチマスター構成のブロック図

SS(3)

SS(2)

SS(1)

SS(0)

SPI Device 0

IO0(MOSI)IO1(MISO)

SCK SPISEL

SS(1) SS(2) SS(3)

Slave-only devices (not shown) have SPISEL local slave select ports only and do not have SS(N) remote slave select ports

SPI Device 1

IO0(MOSI)IO1(MISO)

SCK SPISEL

SS(1) SS(2) SS(3)

SPI Device 2

IO0(MOSI)IO1(MISO)

SCK SPISEL

SS(1) SS(2) SS(3)

SPI Device 3

IO0(MOSI)IO1(MISO)

SCK SPISEL

SS(1) SS(2) SS(3)

x14433

AXI Quad SPI v3.2 43

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

各マスター SPI デバイスには、ワンホッ ト エンコードによるアクティブ Low の SS(N) ベクターを生成する機能があり ます。 このベクターの各ビッ トには、 各スレーブ SPI デバイスの SS 信号が割り当てられます。 SPI マスター /スレーブ デバイスはどちら も FPGA 内部に置く こ とができ、 SPI スレーブ デバイスは FPGA 外部に置く こ とができます。 外部 SPI スレーブ デバイスに接続する場合、 SPI ピンは Vivado® Design Suite によって自動で生成されます。図 3-1 に複数の SPI マスター /スレーブ デバイスを示します。 この構成図はデュアル モードの場合も同様です。

AXI4‐Lite インターフェイス スタンダード  SPI モード  — レガシ モードにおけるオプション FIFO

コアをスタンダード SPI モードにした場合、深さ 16 または 256 の FIFO をオプシ ョ ンでデザインに含めるこ とができます。 AXI Quad SPI は全二重のため、送信 FIFO と受信 FIFO はペアでインスタンシエート され、 5 ページの図 1-1 のよ うにコアに含めるこ とができます。

FIFO をインプ リ メン ト した場合、 FIFO バッファーに格納されたすべてのデータのスレーブ選択アドレスはすべて同じ必要があ り ます。 これは、 スレーブ選択アドレス用の FIFO がないためです。 送信 FIFO と受信 FIFO はどちらも深さ 16 (または 256) のエレ メン トで、 バース ト モードはサポート されないためシングル AXI ト ランザクシ ョ ンを使用してアクセスします。

送信 FIFO は書き込み専用です。 FIFO にデータを書き込むと占有レベルの値がインク リ メン ト し、 1 回の SPI 転送が完了する とデク リ メン ト します。 この動作によ り、 SPI 転送を中止してもデータは存在しており再送が可能です。マスター モードで転送を中止するには、 転送中に SPICR の Master Transaction Inhibit ビッ ト (8) を 1 にセッ トする必要があ り ます。 スレーブ モードでこのビッ ト をセッ ト してもスレーブの動作には影響しません。 これらの転送は、SPI インターフェイスで中止されます。 占有レベルの値は読み出し専用レジスタに格納されます。

FIFO がフルのと きに書き込みを試みる と、 ACK が返される と同時にエラー信号が生成されます。 送信 FIFO に関する割り込みには次があ り ます。

• データ送信 FIFO エンプティ

• TX FIFO Half Empty

• 送信 FIFO アンダーラン

詳細は、 第 2 章の 「割り込みレジスタ セッ トの説明」 を参照して ください。

受信 FIFO は読み出し専用です。 FIFO からデータを読み出すと占有レベルの値がデク リ メン ト し、 1 回の SPI 転送が完了する と インク リ メン ト します。 FIFO が空のと きに読み出しを試みる と、 ACK が返されるのと同時にエラー信号が生成されます。 受信 FIFO がフルになる と、 受信 FIFO フル割り込みが生成されます。

1 回の SPI 転送が完了する と、 データは SPI モジュールのシフ ト レジスタから自動的に FIFO に書き込まれます。受信 FIFO がフルのと きにデータを受信する と、 受信 FIFO オーバーフロー割り込みがアサート されます。 この場合、フルの受信 FIFO に SPI モジュールが書き込んだデータはすべて失われます。

AXI Quad SPI コアを FIFO あ りで構成した場合、SPI 転送を開始する方法は SPICR の SPE ビッ ト をセッ トするタイ ミングによって 2 種類あり ます。 最初のデータを FIFO にロードする前に SPE ビッ ト をセッ ト した場合、 マスターの送信 FIFO に書き込んだ直後に SPI 転送が開始します。 追加のエレ メン ト を送信 FIFO に書き込む前に SPI 転送によって FIFO が空になった場合、 割り込みがアサート されます。 これは、 AXI ク ロ ッ ク と SPI SCK の周波数比が非常に小さい場合によ く起こ り ます。

も う 1 つの方法と して、FIFO に最大 16 または 256 エレ メン ト をロード してからイネーブル ビッ ト をセッ ト して SPI 転送を開始するこ と もできます。 この場合、 すべてのエレ メン トが転送された後に割り込みがアサート されます。どちらの場合も、 FIFO が空になる前に追加のデータを送信 FIFO に書き込んで、 送信エレ メン ト数を増やすこ とができます。

AXI Quad SPI v3.2 44

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

AXI4‐Lite インターフェイス デュアル/クワッ ド  SPI モード  — FIFO の深さを選択可能

コアをデュアル/クワ ッ ド SPI モードにした場合、 FIFO は必ず存在しており、 オプシ ョ ンで FIFO の深さを選択できます。 FIFO 深さは 16 または 256 が可能です。 このモードの FIFO 幅は常に 8 ビッ トです。

AXI4‐Lite インターフェイス SPI マスターのループバック  モード

M68HC11 リ ファレンス マニュアルには記載されていませんが、テス ト を容易にするために SPI マスター ループバック モードがインプリ メン ト されています。 SPICR の LOOP ビッ ト (0) をセッ ト してこのモードを選択する と、内部でト ランス ミ ッ ター出力がレシーバー入力に接続されます。 レシーバーと ト ランス ミ ッ ターは通常どおり動作しますが、 リモート スレーブからの受信データは無視されます。 ループバッ ク モードがサポート されるのは、 SPI デバイスをマスターと して設定してスタンダード SPI ト ランザクシ ョ ン モードで動作させた場合のみです。 コアをデュアル/クワ ッ ド SPI モードにした場合、 ループバッ ク モードはサポート されません。

AXI4‐Lite インターフェイスのハードウェア エラー検出

SPI アーキテクチャでは、 マルチマスター構成での競合とエラーをソフ ト ウェア制御によるバス アービ ト レーシ ョンで防いでいます。 ただし、 SPI ハードウェアにも若干のエラー検出機能がインプリ メン ト されています。 まず挙げられるのが、 競合エラー検出のメカニズムです。 これは、 マスターと して設定された SPI デバイスが、 同時にマスターと して設定された別の SPI デバイスによって SS ビッ ト をアサート されて選択されたこ とを検出する メカニズムです。 この場合、 スレーブと して選択されたマスターは駆動の同時競合によるハード ウェアの損傷を防ぐために直ちに出力を駆動します。 また、 このマスターは SPISR の MODF (モード フォルト エラー ) ビッ ト をセッ ト します。このビッ トは、 SPISR を読み出すと自動的にク リ アされます。 MODF エラーが発生した場合、 いったんマスターを無効にした後、 正しいデータで再び有効にする必要があ り ます。 FIFO あ りで構成した場合、 FIFO のク リ アも必要となる場合があ り ます。

SPI スレーブ デバイスにも同様のエラー検出メカニズムがインプリ メン ト されています。 スレーブと して設定された SPI デバイスが無効にされている と きに別の SPI デバイスによって SS ビッ トがアサート されて選択される と、 エラーが検出されます。 この条件が検出される と、 IPISR レジスタへのス ト ローブによって IPISR のビッ ト 1 がセッ トされます。

また、 アンダーランおよびオーバーラン エラーの検出機能もあ り ます。 アンダーランはスレーブ モードで動作中のみ発生します。 これは、 マスターからのコマンドで転送が開始したと きにスレーブの送信レジスタ /FIFO にデータが格納されていないと発生します。 この場合、 スレーブ アンダーラン割り込みがアサート されスレーブのシフ ト レジスタには送信データ と してすべて 0 がロード されます。 オーバーランは受信レジスタ /FIFO がフルのと きに転送が実行される と発生し、 マスターおよびスレーブ デバイスのどちらでも起こる可能性があ り ます。 オーバーランが発生中の転送で受信したデータは失われ、 IPISR の DRR Overrun 割り込みビッ ト (5) がアサート されます。

[Frequency Ratio] パラメーターの設定

AXI Quad SPI コアは、 Micron、 Winbond、 Macronix、 および Spansion フラ ッシュ メモ リ などの SPI スレーブ デバイスを使用してスタンダード SPI モードでハード ウェア テス ト を実施しています。 スタンダード、 デュアル、 およびクワッ ド モードのテス トには、 Winbond、 Micron、 Spansion、 および Macronix の SPI フラ ッシュ メモ リ を使用しています。最大動作速度については、使用する SPI スレーブ フラ ッシュ メモ リ または EEPROM のデータシート を参照してください。 AXI ク ロ ッ クを決定し、 [Frequency Ratio] パラ メーターを選択する際には、 正しい値を使用する必要があ り ます。 AXI ク ロ ッ クおよび [Frequency Ratio] パラ メーターによってコアの SCK ピンのクロ ッ ク周波数が決まり ます。 種類の異なる複数の外部 SPI スレーブ デバイスを使用する場合は、 [Frequency Ratio] パラ メーターの設定に注意が必要です。 すべての外部 SPI スレーブ デバイスによってサポート される最大クロ ッ ク周波数を考慮に入れる必要があ り ます。

AXI Quad SPI v3.2 45

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

AXI4‐Lite インターフェイス SPI スレーブ モード  — レガシ モードにおけるスタンダード  SPI

外部マスターのスレーブ選択ラインを SPISEL に接続し、 SPICR のビッ ト 2 を 0 にする と、 AXI Quad SPI コアはスレーブ モードに設定されます。 スレーブ モードは、 スタンダード SPI モードの場合のみサポート されます。 デュアル/クワ ッ ド SPI モードでは、 コアはマスター モードのみをサポート します。

[Frequency Ratio] パラ メーターが 4 よ り大きい場合、受信信号はすべて AXI ク ロ ッ クに同期します。[Frequency Ratio] パラ メーターを 4 に設定した場合はタイ ミ ング要件が厳しいため、 受信した SCK ク ロ ッ ク信号とその同期信号は内部ロジッ クで直接使用されます。 したがって、 [Frequency Ratio] パラ メーターが 4 の場合は外部クロ ッ ク と AXI クロ ッ クが同期している必要があ り ます。 [Frequency Ratio] パラ メーターがそれ以外の値の場合も同期させるこ とを推奨しますが、 必須ではあ り ません。

推奨: スレーブ モードで FIFO を使用するには、 スタンダード SPI モードで [FIFODepth] を 16 または 256 に設定します。

スレーブ モードでは、 IPISR の割り込み以外に次の 2 つの割り込みを利用できます。

• DRR_Not_Empty (ビッ ト 8)

• Slave_Mode_Select (ビッ ト 7)

ほかの SPI マスターが通信を開始する前に、 スレーブ コアの送信 FIFO に必要なデータ ビート を書き込んでおく必要があり ます。 マスターがスレーブ モードのコアと通信を開始する と、 コアは送信 FIFO のデータがなくなるまで転送を継続します。最後のデータ ビートがスレーブの FIFO から送信される と、 スレーブ モードのコアは DTR エンプティ信号を生成し、 次の通信を開始するには新規データ ビート を送信 FIFO に書き込む必要があるこ とを知らせます。

[Enable STARTUPEn Primitive] パラメーター

[Enable STARTUPEn Primitive] パラ メーターはマスター SPI モードで使用します。 このパラ メーターをオンにする と、STARTUPE2 プリ ミ ティブ (7 シ リーズの場合) または STARTUPE3 プリ ミ ティブ (UltraScale™ デバイスの場合) がデザインに追加され、 FPGA のコンフ ィギュレーシ ョ ン後にコアの一部とな り ます。

STARTUPEn プリ ミティブの機能と使用法の詳細は、 アンサーまたはデバイスのユーザー ガイ ドを参照してください。

[Enable STARTUPEn Primitive] をオンにした場合

コアの動作とポート

• コアからの SCK_O ポートが STARTUPEn プリ ミティブに接続されます。 STARTUPEn は、 FPGA の前に外部 SPI スレーブ メモリ をコンフィギュレーシ ョ ンする FPGA のプリ コンフ ィギュレーシ ョ ン プロセスでも使用できます。

• FPGA のコンフ ィギュレーシ ョ ン後、 コアからの SCK_O 出力ポートがプリ ミ ティブの USRCCLK0 ポート を駆動します。 この信号はコアの外部ポート と しては利用できません。

• STARTUPEn をインスタンシエートする と ext_spi_clk の最大周波数に影響します。 サポート される最大周波数については、 表 2-1 を参照してください。 第 4 章の 「必須の制約」 も参照してください。

AXI Quad SPI v3.2 46

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

デュアル クワッ ド  モードの使用

[Enable Dual Quad Mode] パラ メーターは、 UltraScale™ 以降のデバイスで IP コアを次のよ うに設定した場合のみ利用できます。

• [Enable Master Mode]: オン

• [Enable STARTUPE3 Primitive]: オン

• [Mode]: Quad

• [No. of Slaves]: 2

このパラ メーターを有効にする と、 IP コアは 2 つの SPI インターフェイスを使用します。図 3-2 に示すよ うに、 IP は 2 つのフラ ッシュ /SPI スレーブ デバイスに接続されます。

SPI スレーブへのト ラフ ィ ッ クはスレーブ選択レジスタ (SPISSR) で制御します。

[Enable STARTUPEn Primitive] をオフにした場合

コアの動作とポート

• SCK_O および IO1_I ポートはコアの一部で、 プリ ミ ティブはコアにインスタンシート されないため、 これらのポートはコアの外部ポート と して利用でき、 ユーザーが設定したアドレスの IOB に配置されます。

レガシおよびエンハンスト  モードのコアの動作

[Enable Performance Mode] をオフにする とレガシ モード、 [Enable Performance Mode] をオンにして [Enable XIP Mode] をオフにする とエンハンス ト モードに設定されます。 AXI Quad SPI コアは Winbond、 Micron、 Spansion および Macronix メモ リ をサポート しています。 これ以外のメモ リ をコアと組み合わせてテス トする場合は、 コマンドを確認してください。 コマンド、 アドレス、 およびデータの動作が同じなら、 そのメモ リ をベース メモ リ と して使用してコアをテス トできます。

コアは、 ターゲッ ト メモ リに応じてコマンドおよびその期待される動作を内部ロジッ クを利用して理解します。Winbond、 Micron、 Macronix、 および Spansion メモ リのデータシートでサポート されないコマンドの場合は、 コマンド エラー フラグがセッ ト されます。 コマンド エラー フラグがセッ ト される と、 コアはそのコマンドに対する SPI トランザクシ ョ ンを実行せず、 コマンド エラー割り込みを生成します。 コマンド フェーズの後にアドレス フェーズが含まれる場合、 DTR の次の内容はアドレス モード ビッ トで定義されたモードの SPI ト ランザクシ ョ ンで転送されます。 データ フェーズが存在するコマンドの場合、 データ フェーズはデータ モード ビッ トで設定されたモードにより読み出しまたは書き込みと して実行されます。

X-Ref Target - Figure 3-2

図 3‐2:デュアル クワッ ド  モード  

QSPI LogicFlash1

Flash2

MUXDEMUX

SPISR

AXI QUAD SPI

lo*_i

lo*_0

lo*_1_i

lo*_1_0

X17930-091616

AXI Quad SPI v3.2 47

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

メモ リおよび命令の種類によってはダ ミー バイ トが必要なこ とがあ り ます。 これらのダ ミー バイ トは、 メモ リから読み出すバイ ト数のダ ミーも含めて SPI DTR に書き込む必要があ り ます。 各命令で必要なダ ミー バイ トの数の詳細は、 使用する メモ リのデータシート を参照してください。

読み出しコマンドの場合、 アドレス ビッ ト を送信する と コアは直ちに入力モードに戻り、 DRR へのデータ書き込みを開始します。 したがって、 DRR のダ ミー バイ ト を何バイ ト無視するかを知る必要があ り ます。 たとえば Winbond メモ リの高速読み出しデュアル出力コマンドの場合、 DTR にはコマンド (1 バイ ト )、 アドレス (3 バイ ト )、 ダ ミー サイクル用のダ ミー (2 バイ ト )、 そしてメモ リから読み出すバイ ト数のダ ミーを書き込みます。 コマンド とアドレスをスタンダード SPI モードで転送した後、 コアは入力モードに戻り、 データの格納を開始します。 データは IO0_I および IO_1 ラインで転送され、 SPI DRR に格納されます。 このデータには、 2 ダ ミー サイクルと有効データが含まれます。 したがって SPI DRR を読み出す間、 SPI DRR の最初の 6 バイ トは無視する必要があ り ます。 FIFO 内の有効なデータは 7 番目のバイ トから始ま り ます。 これは、 その他のデュアルまたはクワッ ド読み出しコマンドの場合も同様です。

SPI DTR FIFO は、 新規ト ランザクシ ョ ンのたびにク リ アする必要があ り ます。 SPI DTR の最初のエン ト リは常にコマンド と見なされ、 選択した SPI モードの各メモ リに対して内蔵ロジッ ク とのクロスチェッ クが行われます。

XIP モードのコアの動作

[Enable Performance Mode] と [Enable XIP Mode] を両方オンにする と、 コアはスタンダード、 デュアル、 およびクワッド モードをサポート します。

• [Mode] を [Standard] に設定し、 [Slave Device] を [Winbond]、 [Micron]、 [Macronix]、 または [Spansion] に設定するとスタンダード モードに設定されます。

• [Mode] を [Dual] に設定し、 [Slave Device] を [Winbond]、 [Micron]、 [Macronix]、 または [Spansion] に設定する とデュアル モードに設定されます。

• [Mode] を [Quad] に設定し、 [Slave Device] を [Winbond]、 [Micron]、 [Macronix]、 または [Spansion] に設定する とクワッ ド モードに設定されます。

次に、 このモードの注意点について説明します。

Winbond メモリ

DIOFR (0xBBh) または QIOFR (0xEBh) を実行する前に、 コアはパワーオン リセッ トのたびにハイ パフォーマンス モード (HPM) コマンドを実行します。 これによ り、 Winbond メモ リ をハイ パフォーマンス モードに設定します。

重要: クワ ッ ド モードに設定した場合、Winbond メモ リのプ リ コンフ ィギュレーシ ョ ンと してステータス レジスタの QE ビッ ト を 1 にセッ ト しておく必要があ り ます。

メモ リのプ リ コンフ ィギュレーシ ョ ンはユーザーが行う必要があ り ます。 コアはステータス レジスタへの書き込みは行いません。 XIP モードでは、 コアはプリ コンフ ィギュレーシ ョ ンが完了しているこ とを前提に動作します。

DIOFR または QIOFR コマンドを実行する前にコアをデュアルまたはクワ ッ ド モードにコンフ ィギュレーシ ョ ンしている場合、 コアは POR 時にハイ パフォーマンス コマンドを メモ リに書き込んでから AXI4 インターフェイスで トランザクシ ョ ンを受け取り ます。 HPM コマンドには 1 コマンドおよび 3 ダ ミー SPI サイ クルが必要です。 HPM コマンドを メモ リに書き込むこの動作は、 パワーオン リセッ ト時のみ実行されます。 これでメモ リがハイ パフォーマンス モード (HPM — 0xA3h) になり、 DIOFR または QIOFR はそれぞれのモードで動作できるよ うになり ます。

Micron メモリ

Micron メモ リでは、 揮発性および不揮発性コンフ ィギュレーシ ョ ン レジスタのダ ミー サイクルの設定はデフォルトのまま使用します。 つま り、 VCR[7:4] と NVCR[15:12] は 1111 に設定されます。 コアはこれを前提に動作し、 これらのダ ミー サイ クル レジスタの値を変更した場合、 コアの動作は保証されません。

推奨: 揮発性コンフ ィギュレーシ ョ ン レジスタ (VCR) と不揮発性コンフ ィギュレーシ ョ ン レジスタ (NVCR) はデフォルト設定を変更しないでください。

新規ト ランザクシ ョ ン開始時に、 コアは各コマンド、 アドレス、 および必要なダ ミー サイクルを送信してからデータを受信します。

AXI Quad SPI v3.2 48

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

Spansion メモリ

Spansion メモ リのプリ コンフ ィギュレーシ ョ ンはユーザーが行う必要があ り ます。 コアはステータス レジスタへの書き込みは行いません。 XIP モードでは、 コアはプリ コンフ ィギュレーシ ョ ンが完了しているこ とを前提に動作します。

重要: クワ ッ ド モードに設定した場合、 Spansion メモ リのプリ コンフ ィギュレーシ ョ ンと してコンフ ィギュレーシ ョン レジスタの QUAD ビッ ト を 1 にセッ ト しておく必要があ り ます。

Macronix メモリ

Macronix メモ リでは、 揮発性および不揮発性コンフ ィギュレーシ ョ ン レジスタのダ ミー サイクルの設定はデフォルトのまま使用します。 つま り、 VCR[7:4] と NVCR[15:12] は 1111 に設定されます。 コアはこれを前提に動作し、 これらのダ ミー サイ クル レジスタの値を変更した場合、 コアの動作は保証されません。

推奨: 揮発性コンフ ィギュレーシ ョ ン レジスタ (VCR) と不揮発性コンフ ィギュレーシ ョ ン レジスタ (NVCR) はデフォルト設定を変更しないでください。

デュアル SPI および混在メモリ  モードでサポート される共通のコマンド

[Mode] を [Dual] に設定し、 [Slave Device] を [Mixed] に設定した場合、 コアはコマンド、 アドレス、 およびデータの動作が Winbond、 Micron、および Spansion メモ リで共通のコマンド (表 3-1 参照) をサポート します。 コマンドの詳細はメモ リのデータシート を参照してください。 このモードでは、 高速読み出し、 デュアル I/O 高速読み出し、 およびデュアル出力高速読み出しコマンドはサポート されません。 これらのコマンドは、 Winbond、 Micron、 および Spansion デバイス間でダ ミー バイ ト またはダ ミー サイクルが異なるため、 混在モードではサポート されません。

また、 Micron メモ リの揮発性コンフ ィギュレーシ ョ ン レジスタは混在モードではサポート されません (該当するコマンドが Winbond メモ リに存在しないため)。 サポート されないコマンドの一覧は、 「次に、 デュアル/クワ ッ ド SPI モードでサポート されないコマンドを Winbond、 Micron、 Spansion のメモリ別に示します。」 を参照してください。

表 3‐1:デュアル SPI および混在メモリ  モードでサポート されるコマンド

オペコード  (16 進数) コマンドの説明

01 ステータス レジスタの書き込み

02 ページ プログラム

03 データ バイ ト読み出し

04 書き込みディ スエーブル

05 ステータス レジスタの読み出し

06 書き込みイネーブル

4B OTP (One Time Programmable) の読み出し (OTP 領域の読み出し )

75 プログラム/消去の停止

7A プログラム/消去の再開

9F ID の読み出し

C7 バルク消去

D8 セクター消去

AXI Quad SPI v3.2 49

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

クワッ ド  SPI および混在メモリ  モードでサポート される共通のコマンド

[Mode] を [Quad] に設定し、 [Slave Device] を [Mixed] に設定した場合、 コアはコマンド、 アドレス、 およびデータの動作が Winbond、 Micron、および Spansion メモ リで共通のコマンド (表 3-2 参照) をサポート します。 コマンドの詳細はメモ リのデータシート を参照してください。 このモードでは、 高速読み出し、 デュアル出力高速読み出し、 クワ ッ ド出力高速読み出し、 デュアル I/O 高速読み出し、 およびクワッ ド I/O 高速読み出しコマンドはサポート されません。 これらのコマンドは、 Winbond および Micron デバイス間でダ ミー バイ ト またはダ ミー サイクルが異なるため、 混在モードではサポート されません。 また、 Micron メモ リの揮発性コンフ ィギュレーシ ョ ン レジスタは混在モードではサポート されません (該当するコマンドが Winbond メモ リに存在しないため)。 サポート されないコマンドの一覧は、 「次に、 デュアル/クワ ッ ド SPI モードでサポート されないコマンドを Winbond、 Micron、 Spansion のメモ リ別に示します。」 を参照してください。

XIP モードのコマンド

XIP モードでは、 コアは次の 3 つの読み出しコマンドをサポート します。

• スタンダード モード : 高速読み出し (0x0Bh)

• デュアル モード : 高速読み出しデュアル I/O (0xBBh)

• クワ ッ ド モード : 高速読み出しクワッ ド I/O (0xEBh)

表 3‐2: クワッ ド  SPI モードおよび混在メモリ  モードでサポート されるコマンド

オペコード  (16 進数) コマンドの説明

01 ステータス レジスタの書き込み

02 ページ プログラム

03 データ バイ ト読み出し

04 書き込みディ スエーブル

05 ステータス レジスタの読み出し

06 書き込みイネーブル

32 クワ ッ ド IP ページ プログラム

C7 バルク消去

75 消去の停止

7A 消去の再開

4B 一意の ID 番号の読み出し

9F JEDEC® ID 番号の読み出し

D8 セクター消去

表 3‐3: AXI Quad SPI コアでサポート されるコマンド

コマンド  オペコード

コマンドの説明 Winbond SpansionNumonyx/Micron

Macronix

9E/9F JEDEC ID (各フラ ッシュ メモ リ固有の電子 ID)。 Spansion では SPAN_RDID、 Numonyx/Macronix では READ ID。

あ り あ り あ り あ り

0B 高速読み出し (フラ ッシュの最大周波数での読み出し動作)。 あ り あ り あ り あ り

3B 高速読み出しデュアル出力 (2 ライン高速読み出し )。 あ り あ り あ り あ り

AXI Quad SPI v3.2 50

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

BB 高速読み出しデュアル I/O (1 ク ロ ッ クあたり 2 アドレス ビット (A23-0) の入力が可能。 それ以外は 3Bh と同じ )。

あ り あ り あ り あ り

6B 高速読み出しクワ ッ ド出力 (4 ライン高速読み出し )。 あ り あ り あ り あ り

EB 高速読み出しクワ ッ ド I/O (1 ク ロ ッ クあたり 4 アドレス ビット (A23-0) の入力が可能。 それ以外は 3Bh と同じ )。

あ り あ り あ り あ り

06 WEN (ステータス レジスタの Write Enable Latch (WEL) ビッ トを 1 にセッ ト )。 ページ プログラム、 セクター消去、 ブロ ック消去、 チップ消去、 およびステータス レジスタ書き込み命令の前には WEL ビッ ト をセッ ト しておく必要があ り ます。 Numonyx/Macronix ではライ ト イネーブルです。

あ り あ り あ り あ り

04 書き込みディ スエーブル (WEL を 0 に設定)。 あ り あ り あ り あ り

02 ページ プログラム (FFh で消去済みのメモ リ アドレスに対し、 1 ~ 256 バイ ト (1 ページ) のデータをプログラム)。

あ り あ り あ り あ り

32 クワ ッ ド ページ プログラム (4 本のピンを使用したページ プログラム)。

あ り あ り あ り なし

D8 ブロッ ク消去。 指定したブロッ ク (64KB) 内のすべてのメモリを 1 (FFh) にして消去します。 Numonyx ではセクター消去です。

あ り あ り あ り あ り

01 ステータス レジスタの書き込み (書き込みできるのは、 不揮発性ステータス レジスタの SRP0、 SEC、 TB、 BP2、 BP1、BP0 ビッ ト (ステータス レジスタ 1 のビッ ト 7、 5、 4、 3、 2) および QE、 SRP1 ビッ ト (ステータス レジスタ 2 のビッ ト 9、8) のみ)。

あ り あ り あ り あ り

03 データ読み出し。 1 バイ ト以上のデータをメモリから逐次的に読み出すこ とができます。

あ り あ り あ り あ り

05 SR-1 の読み出し。 8 ビッ トのステータス レジスタを読み出す。

あ り あ り あ り あ り

7A 消去の再開。 消去の停止の後にセクターまたはブロ ッ ク消去を再開するにはこの命令を実行する必要があ り ます。

あ り あ り あ り なし

75 消去の停止。 セクターまたはブロ ッ ク消去を一時停止して、その他のセクターまたはブロ ッ クに対するデータの読み出しまたは書き込みを実行できます。

あ り あ り あ り なし

C7 チップ消去。 デバイス内のすべてのメモ リ を 1 (FFh) にして消去します。 Numonyx では C4 です。

あ り あ り あ り あ り

4B 一意の ID の読み出し。 工場で設定された各フラ ッシュ デバイスに固有の読み出し専用 64 ビッ ト値にアクセスします。Spansion および Numonyx では OTP の読み出しです。

あ り あ り あ り なし

13 読み出し (4 バイ ト アドレス)。 4 バイ ト アドレスを使用したデータ バイ ト読み出し命令コード (READ4BYTE) の後に 4 バイ ト アドレス (A31 ~ A0) を送信すると、 シ リアル クロッ ク (C) の立ち上がりエッジで各ビッ トがラッチされます。

なし あ り あ り あ り

0C 高速読み出し (4 バイ ト アドレス)。 なし あ り あ り あ り

表 3‐3: AXI Quad SPI コアでサポート されるコマンド  (続き)

コマンド  オペコード

コマンドの説明 Winbond SpansionNumonyx/Micron

Macronix

AXI Quad SPI v3.2 51

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

5A SFPD (Serial Flash Discoverable Parameters) の読み出し。 動作特性やベンダー固有情報を格納した読み出し専用の SFDP 領域 (2048 バイ ト ) を読み出します。 SFDP 領域は工場で書き込み済みです。 Numonyx ではシ リ アル フラ ッシュ検出パラメーターの読み出しです。

なし あ り あ り あ り

3C 高速読み出しデュアル出力 (4 バイ ト アドレス) なし あ り あ り あ り

BC デュアル I/O 読み出し (4 バイ ト アドレス) なし あ り あ り あ り

6C 読み出しクワ ッ ド出力 (4 バイ ト アドレス) なし あ り あ り あ り

EC クワ ッ ド I/O 読み出し (4 バイ ト アドレス)、高周波数、 4 ライン、 アドレス 2 ライン。

なし あ り あ り あ り

12 ページ プログラム (4 バイ ト アドレス)、 4 バイ ト アドレス指定によるページ プログラム。

なし あ り あ り あ り

42 OTP プログラム (POTP)。最大 64 バイ ト を OTP メモ リ領域にプログラムします (ビッ トの変化は 1 から 0 のみ)。 これらの 64 バイ トは、 特定の OTP プログラム (POTP) シーケンスによって永続的にロ ッ クできます。

なし あ り あ り あ り

E8 ロ ッ ク レジスタ読み出し。 SPM1 と SPM2 の 2 つのソフ トウェア保護モードを組み合わせるこ とによって、 メモ リ アレイを必要に応じて保護できます。 SPM2 は、 入力ピンを使用してハード ウェアでロ ッ クできます。

SPM1 は、 各 64KB セクターに割り当てられたロ ッ ク レジスタで管理します。 Numonyx では揮発性ロッ ク ビッ トの読み出しです。

なし あ り あ り あ り

85 揮発性コンフ ィギュレーシ ョ ン レジスタの読み出し。 不揮発性コンフ ィギュレーシ ョ ン レジスタ (NVCR) のビッ トは、 電源投入後のデフォルトのメモリ設定に影響します。 これにより、 アプリ ケーシ ョ ン要件に応じた設定でメモリの動作を開始できます。 Spansion ではプログラム サスペンドです。

なし あ り あ り あ り

E9 4 バイ ト アドレス モードの終了。この 4 バイ ト アドレス モード (EX4BYTEADDR) 命令によ り、 4 バイ ト アドレス モードが終了します。 Spansion ではパスワード ロ ッ ク解除です。

なし あ り あ り あ り

52 ブロ ッ ク消去。 Numonyx では 32KB サブセクター消去です。 あ り なし あ り あ り

A2 デュアル入力高速プログラム。 最高周波数。 この DIFP 命令では、 2 つの入力ピンを同時に使用して最大 256 バイ ト をプログラムできます (ビッ トの変化は 1 から 0)。

なし なし あ り なし

D2 デュアル入力拡張高速プログラム。 この DIEFP 命令は、 2 つのデータ ラインでアドレスを送信できるよ うに DIFP 命令を拡張したものです。

なし なし あ り なし

E5 ロ ッ ク レジスタの書き込み。 Numonyx では揮発性ロッ ク ビッ トの書き込みです。

なし なし あ り なし

70 フラグ ステータス レジスタの読み出し。 なし なし あ り なし

50 フラグ ステータス レジスタのク リ ア。 なし なし あ り なし

B5 不揮発性コンフ ィギュレーシ ョ ン レジスタの読み出し。 なし なし あ り なし

B1 不揮発性コンフ ィギュレーシ ョ ン レジスタの書き込み。Macronix ではセキュア OTP の開始 (ENSO) です。

なし なし あ り あ り

表 3‐3: AXI Quad SPI コアでサポート されるコマンド  (続き)

コマンド  オペコード

コマンドの説明 Winbond SpansionNumonyx/Micron

Macronix

AXI Quad SPI v3.2 52

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

81 揮発性コンフ ィギュレーシ ョ ン レジスタの書き込み。 なし なし あ り なし

65 揮発性拡張コンフ ィギュレーシ ョ ン レジスタの読み出し。 なし なし あ り なし

61 揮発性拡張コンフ ィギュレーシ ョ ン レジスタの書き込み。この WRVECR 命令を実行するたびに、 揮発性拡張コンフ ィギュレーシ ョ ン レジスタ (VECR) によってメモ リ設定が更新されます。 この命令によ り、 POR シーケンスで不揮発性コンフ ィギュレーシ ョ ン レジスタ (NVCR) によって適用されたメモ リ設定が上書きされます。 この命令は、 QIO-SPI および DIO-SPI プロ ト コルを有効にするために使用します。

なし なし あ り なし

B7 4 バイ ト アドレス モードの開始。 なし なし あ り あ り

C5 拡張アドレス レジスタの書き込み。 なし なし あ り あ り

C8 拡張アドレス レジスタの読み出し。 なし なし あ り あ り

66 リセッ ト イネーブル。 なし なし あ り あ り

99 メモリ リセッ ト。 リセッ ト イネーブルおよびメモリ リセット コマンドは、 デバイスをパワーオン リセッ ト状態にするためのシステム ソフ ト ウェア リセッ ト と して使用します。

なし なし あ り あ り

20 サブセクター消去 (SSE)。 選択したサブセクターのすべてのビッ ト を 1 (FFh) にします。 このコマンドを実行する前に、ライ ト イネーブル (WREN) 命令を実行する必要があ り ます。Macronix ではセクター消去です。

あ り なし あ り あ り

35 SR-2 の読み出し。 Numonyx ではクワ ッ ド IO モードの開始です。

あ り あ り あ り あ り

B9 パワーダウン。 通常動作時のスタンバイ電流はそれほど大きくあ り ませんが、 パワーダウン命令を実行する と、 このスタンバイ電流を削減できます。 この命令は、 消費電力の削減が必要なバッテ リ動作アプリ ケーシ ョ ンでは特に有用です。Spansion ではバンク レジスタ アクセス、 Numonyx/Macronix ではディープ パワーダウンの開始です。

あ り あ り あ り あ り

A3 HPM。 高周波数での動作時に、 デュアルまたはクワッ ド I/O 命令を実行する前に、 高性能モード (HPM) 命令を実行する必要があり ます (AC 電気的特性の FR および FR1 参照)。 この命令を実行する と、 フラ ッシュ メモ リ アレイへのアクセスに必要な電圧が得られるよ うに内部チャージ ポンプにプリチャージが実行されます。

あ り なし なし なし

FF 連続読み出しモード リセッ ト 。 高速読み出しデュアル/クワ ッ ド I/O 動作で命令オーバーヘッ ドを削減するために、 連続読み出しモード ビッ ト (M7-0) が実装されています。Spansion ではモード ビッ ト リセッ トです。

なし あ り なし なし

AB パワーダウン終了/HPM。 パワーダウンの終了、 または高性能モード /デバイス ID 命令は、 多目的の命令です。 このコマンドは、 パワーダウン ステートの終了、 またはデバイスの電子 ID 番号の取得に使用できます。 Spansion では電子署名の読み出し、 Numonyx/Macronix ではディープ パワーダウンの終了。 電子 ID の読み出しです。

あ り あ り あ り あ り

表 3‐3: AXI Quad SPI コアでサポート されるコマンド  (続き)

コマンド  オペコード

コマンドの説明 Winbond SpansionNumonyx/Micron

Macronix

AXI Quad SPI v3.2 53

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

90 デバイス ID。 メーカー /デバイス ID 読み出し命令は、 パワーダウン終了/デバイス ID 命令とは異なり、 JEDEC で割り当てられたメーカー ID とデバイス固有 ID の両方を読み出します。

あ り あ り なし あ り

30 SR-1 をク リ ア。 Macronix ではプログラム/消去再開です。 なし あ り なし あ り

15 自動ブート レジスタの書き込み。 Macronix ではコンフ ィギュレーシ ョ ン レジスタの読み出しです。

なし なし なし あ り

16 バンク レジスタの読み出し。 サスペンド中に、 別のセクターに対して読み出しまたはプログラムを実行するにはバンク アドレス レジスタの変更が必要となるこ とがあ り ます。Macronix では高速ブート レジスタの読み出しです。

なし あ り なし あ り

17 バンク レジスタの書き込み。 Macronix では高速ブート レジスタの書き込みです。

なし あ り なし あ り

38 拡張クワッ ド入力高速プログラム。 クワ ッ ド入力高速プログラムを拡張し、 4 つの入力ピンを使用して並列入力 (デバイスに送信されるアドレスを含む) を可能にしたものです。

なし あ り あ り あ り

34 クワ ッ ド ページ プログラム (4 バイ ト アドレス)。 なし あ り あ り なし

60 バルク消去。 Macronix ではチップ消去です。 あ り あ り なし あ り

E0 DYBRD。 消去サスペンド中にプログラムを実行するには、動的保護の解除と復元が必要となるこ とがあ り ます。Numonyx では 4 バイ ト揮発性ロ ッ ク ビッ トの読み出し、Macronix では DPB レジスタ書き込みです。

なし あ り あ り あ り

E1 DYBWR。 Numonyx では 4 バイ ト揮発性ロ ッ ク ビッ トの書き込み。 Macronix では DPB レジスタの書き込みです。

なし あ り あ り あ り

E2 PPBRD。 消去サスペンド中にプログラム コマンドを実行する前に、 永続的保護の状態を確認します。 Numonyx では不揮発性ロッ ク ビッ トの読み出し。 Macronix では SPB ステータスの読み出しです。

なし あ り あ り あ り

E3 PPB プログラム。 Winbond ではオクタル ワード読み出しクワ ッ ド I/O。 オク タル ワード読み出しクワッ ド I/O (E3h) 命令は、 アドレスの下位 4 ビッ ト (A0、 A1、 A2、 A3) を 0 にする必要がある点を除けば、 高速読み出しクワ ッ ド I/O (EBh) 命令と同じです。 これによ り 4 つのダ ミー ク ロ ッ クが不要となるため、 命令のオーバーヘッ ドが削減され、 コード実行 (XIP) におけるランダム アクセスが高速化します。 Numonyx では不揮発性ロッ ク ビッ トの書き込みです。

あ り あ り あ り あ り

E4 PPB 消去。 Numonyx では不揮発性ロッ ク ビッ トの消去です。 なし あ り あ り あ り

2B ASP 読み出し。 Macronix ではセキュ リティ レジスタの読み出しです。

なし あ り なし あ り

2F ASP プログラム。 Macronix ではセキュ リティ レジスタの書き込みです。

なし あ り なし あ り

A7 PPB ロ ッ ク ビッ トの読み出し。 Numonyx ではグローバル フリーズ ビッ トの読み出しです。

なし あ り あ り なし

A6 PPB ロ ッ ク ビッ トの書き込み。 Numonyx ではグローバル フリーズ ビッ トの書き込みです。

なし あ り あ り なし

表 3‐3: AXI Quad SPI コアでサポート されるコマンド  (続き)

コマンド  オペコード

コマンドの説明 Winbond SpansionNumonyx/Micron

Macronix

AXI Quad SPI v3.2 54

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

E7 クワ ッ ド IO ワードの読み出し。 Spansion ではパスワードの読み出しです。

なし あ り なし なし

F0 リセッ ト なし あ り なし なし

8A プログラムの再開。 なし あ り なし なし

07 SR-2 SP の読み出し。 なし あ り なし なし

DC 256KB 消去 (4 バイ ト アドレス)。Numonyx では 4 バイ ト セクター消去です。

なし あ り あ り あ り

27 4 バイ ト パスワードの読み出し。 なし なし あ り あ り

28 パスワードの書き込み。 なし なし あ り あ り

29 パスワードのロ ッ ク解除。 なし なし あ り あ り

3E 4xIO ページ プログラム。 Numonyx では 4 バイ ト クワ ッ ド入力拡張高速プログラムです。

なし なし あ り あ り

21 セクター消去 (4 バイ ト アドレス)。 Numonyx では 4 バイ ト 4KB サブセクター消去です。

なし なし あ り あ り

5C ブロ ッ ク消去 32KB。 Numonyx では 4 バイ ト 32KB サブセクター消去です。

なし なし あ り あ り

C0 バース ト読み出し長の設定。 なし なし なし あ り

18 高速ブート レジスタの消去。 なし なし なし あ り

F5 QPI モードのリセッ ト 。 Numonyx ではクワッ ド IO モードのリセッ トです。

なし なし あ り あ り

2D ロ ッ ク レジスタの読み出し。 Numonyx ではセクター保護の読み出しです。

なし なし あ り あ り

2C ロ ッ ク レジスタの書き込み。 Numonyx ではセクター保護の書き込みです。

なし なし あ り あ り

AF QPI ID。 Numonyx ではマルチ I/O ID 読み出しです。 なし なし あ り あ り

B0 プログラム/消去サスペンド (プログラム/消去の一時停止)。 なし なし なし あ り

C4 ダイ消去。 なし なし あ り なし

68 書き込み保護選択 (WPSEL)。 なし なし なし あ り

C1 セキュア OTP の終了。 なし なし なし あ り

7E ギャング ブロ ッ クのロ ッ ク。 なし なし なし あ り

98 ギャング ブロ ッ クのロ ッ ク解除。 なし なし なし あ り

00 NOP なし なし なし あ り

表 3‐3: AXI Quad SPI コアでサポート されるコマンド  (続き)

コマンド  オペコード

コマンドの説明 Winbond SpansionNumonyx/Micron

Macronix

AXI Quad SPI v3.2 55

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

次に、 デュアル/クワ ッ ド SPI モードでサポート されないコマンドを Winbond、 Micron、 Spansion のメモ リ別に示します。

Winbond メモリ  (例: W25Q64VSFIG)

このコアは 24 ビッ ト アドレス モードのみをサポート します。

このメモ リでサポート されないコマンド /機能は次のとおりです。

• 高速読み出しデュアル I/O 連続読み出しモード。

• 高速読み出しクワッ ド I/O 連続読み出しモード。

• コマンド ABh はフラ ッシュをパワー ダウンまたはハイ パフォーマンス モードから解放する場合のみサポートされます。 デバイス ID の読み出しには使用しないでください。 コマンド FFh (モード ビッ トの リセッ ト ) はデュアル/クワ ッ ド モード機能を使用する際に推奨されるため、 サポート されません。

一部のコマンドには、 次のよ うな例外動作があ り ます。

• パワー ダウン/ハイ パフォーマンス モードからの解放 (ABh): このコマンドには、 ダ ミー バイ トの組み合わせによってパワー ダウン/ハイ パフォーマンス モードからの解放とデバイス ID の読み出しの異なる機能があ り ます。 コアがサポートするのは、 パワー ダウン/ハイ パフォーマンス モードからの解放 (1 コマンド バイ トのみを DTR に格納) のみです。 デバイス ID の読み出しは、 別のコマンド (90h) があるためサポート されません。

Micron メモリ  (例: N25Q256)

このコアは 24 ビッ トおよび 32 ビッ ト アドレス モードをサポート します。

このメモ リでサポート されないコマンド /機能は次のとおりです。

• レガシまたはエンハンス ト モードでは、 XIP モードまたは連続読み出しモードはサポート されません。

• 拡張 SPI モードではデュアルまたはクワッ ド モードのコマンドはすべてサポート されます。 DIO (Dual In Out) および QIO (Quad In Out) モードはサポート されません。 このコアでサポート されないコマンドは、 次のとおりです。

° 96h (汎用読み出しレジスタの読み出し )

° 9Bh (インターフェイスの有効化)

° E7h (クワ ッ ド IO ワード読み出し )

° E1h (4 バイ ト揮発性ロ ッ ク ビッ トの書き込み)

注記:デュアル モードでは非サポート

• クワ ッ ド モードでは、 Micron メモ リは HOLD 機能を備えたデバイスのみがサポート されます。 RESET 機能を持つメモ リ デバイスはサポート されません。

注記: Micron MT25Q デバイス とバリデーシ ョ ン済み N25Q デバイスの互換性については、 『Technical Note: Micron N25Q to Micron MT25Q Migration』 [参照 21] を参照してください。

Spansion メモリ  (例: S70FL01GS)

このコアは 24 ビッ トおよび 32 ビッ ト アドレス モードをサポート します。 このメモ リでサポート されないコマンド /機能は次のとおりです。

• コアのモードにかかわらず、 DDR (Double Data Rate) コマンドはいずれもサポート されません。

• Spansion フラ ッシュは ExtAddr ビッ ト を 1 にセッ トする と 24 ビッ ト アドレス コマンドで 32 ビッ ト アドレス モードをサポート します。 コアはこの機能をサポート していません。

• コアのモードにかかわらず、 Spansion フラ ッシュの自動ブート コマンドはサポート されません。

AXI Quad SPI v3.2 56

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

Macronix メモリ  (例: MX66U1G45G)

このコアは 24 ビッ トおよび 32 ビッ ト アドレス モードをサポート します。 このメモ リでサポート されないコマンド /機能は次のとおりです。

• 拡張 SPI モードではデュアルまたはクワ ッ ド モードのコマンドはすべてサポート されます。

• DIO (Dual In Out) および QIO (Quad In Out) モードはサポート されません。

クロッキング (SPI クロック位相および極性の制御)

シ リアル ク ロ ッ ク (SCK) の位相と極性は、 ソフ ト ウェアで SPICR のビッ ト をプログラムして 4 つの組み合わせのいずれかを選択できます。 CPOL (ク ロ ッ ク極性) ビッ トでは、 アクティブ High (ク ロ ッ クのアイ ドル ステートが Low) またはアクティブ Low (ク ロ ッ クのアイ ドル ステートが High) ク ロ ッ クを選択します。 立ち上がりエッジと立ち下がりエッジのどちらを意味のあるエッジとするかは、 ク ロ ッ クのアイ ドル ステート (すなわち CPOL の設定) によって決ま り ます。

CPHA (ク ロ ッ ク位相) ビッ トでは、 2 種類の転送フォーマッ トのいずれかを選択できます。CPHA = 0 の場合、SS(N) がアサート された後の最初の SCK エッジ (立ち上がり または立ち下がり ) でデータが有効になり ます。CPHA = 1 の場合、 SS(N) がアサート された後の 2 番目の SCK エッジ (立ち上がり または立ち下がり ) でデータが有効になり ます。

重要: 正し く転送を行うには、 ク ロ ッ クの位相と極性をマスター SPI デバイスおよび選択したスレーブ デバイス と同じにする必要があ り ます。

最初の SCK サイクルは、 SCK 信号がアイ ドル ステートから遷移する と開始します。 これが、 データ転送の開始を示します。 アイ ドルからのクロ ッ ク遷移が転送の開始を示すため、 M68HC11 仕様では連続する転送と転送の間で SS(N) ラインをアクティブ (Low) のままにできる と記載されています。 仕様では、 このフォーマッ トはマスターとスレーブが 1 つずつのシステムに適している と記載されています。 M68HC11 仕様では、 送信データは送信レジスタに書き込むと直接シフ ト レジスタに格納されます。 したがって、 最初の SCK エッジの前にユーザーが SPISSR レジスタにデータを正し く ロードする必要があ り ます。

SS 信号はすべての CPHA コンフ ィギュレーシ ョ ンで ト グルします。 SPISEL を Low に維持するこ とはできません。SPI デバイスの SS 信号はすべて FPGA 内部で相互に接続する必要があ り ます。 SS 信号を ト グルするこ とによ り、FPGA リ ソースの使用が抑えられます。

リセッ ト

すべてのコンフ ィギュレーシ ョ ン モードにおいて、 コアは AXI インターフェイスからのアクティブ Low リセッ ト入力をサポート しています。 外部リセッ トは、 AXI ク ロ ッ クに同期する必要があ り ます。 また、 コアへのローカル リセッ ト信号を生成する内部リセッ ト レジスタもサポート しています。 このリセッ トによ り、 すべてのレジスタのすべてのビッ トがデフォルト設定に戻り ます。

AXI Quad SPI v3.2 57

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

プロ ト コルの説明

SPI プロ ト コルの説明は、 『Motorola M68HC11-Rev. 4.0 Reference Manual』 を参照してください。

AXI プロ ト コルの説明は、 『AMBA® AXI4-Stream Protocol Specification』 [参照 4] を参照してください。

AXI Quad SPIレガシおよびエンハンスト  モードのコアの動作

Micron SPI メモ リ をスレーブと して使用する場合、 サポート される命令セッ トが異なるこ とに注意が必要です。Micron N25Q_256_3 メモ リのデータシートでは、 拡張 SPI 命令のみがサポート されています。 [Mode] を [Dual] または [Quad]、 および [Slave Device] を [Micron] に設定した場合に各モードで予想されるコアの動作については、 データシートで確認してください。

[Mode] = [Dual]

この設定では、 コアはデュアルおよびスタンダード モード SPI コマンドをサポート します。 こ こからは、 各コンフ ィギュレーシ ョ ン モードにおける動作について説明します。

[Slave Device] = [Mixed]

このモードは、 複数の SPI スレーブ デバイスが存在するこ とを前提と します。 コアがサポートするのは Winbond および Micron メモ リのみのため、 スレーブにはこれらのデバイスを使用する必要があ り ます。

混在メモリ モードでのコアの動作は、 Winbond メモリに対する動作に準じます。 拡張 SPI プロ ト コル命令セッ トのうち、 Winbond、 Micron および Spansion メモ リに共通の命令がサポート されます。 表 3-4 に、 コアの動作を示します。

表 3‐4:デュアル モード、 混在メモリでの SPI コマンドに対するコアの動作

コマンド  タイプ Winbond Micron/Spansion コマンド  エラー コアの動作

スタンダード SPI サポートする サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない サポートする あ り SPI ト ランザクシ ョ ンなし

スタンダード SPI サポートする サポート しない なし スタンダード フォーマッ ト

スタンダード SPI サポート しない サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする サポートする なし デュアル モード命令フォーマッ ト

デュアル モード サポート しない サポートする あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする サポート しない なし デュアル モード命令フォーマッ ト

デュアル モード サポート しない サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする サポートする あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポート しない サポートする あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポート しない サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. [Slave Device] = [Mixed] は混在メモリ モードです。 [Mode] = [Dual] の場合、デュアルおよびスタンダード SPI コマンドがサポー

ト されます。 各コマンドに対するコアの動作は、 Winbond メモ リに対する動作に準じます。 Micron または Spansion でしかサ

ポート されないコマンドの場合はコマンド エラー フラグがセッ ト され、 コマンドは実行されません。 このモードでは、

Winbond と Micron の両方のメモ リに共通のコマンド セッ トがサポート されます。

AXI Quad SPI v3.2 58

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

[Slave Device] = [Winbond]

これは SPI スレーブ デバイスと して Winbond メモ リのみをサポートする専用モードです。 Winbond メモ リのほとんどの SPI コマンドがサポート されます。 表 3-5 に、 コアの動作を示します。

[Slave Device] = [Micron]

これは SPI スレーブ デバイスと して Micron メモ リのみをサポートする専用モードです。 Micron メモ リのほとんどのデュアルおよびスタンダード SPI コマンドがサポート されます。 表 3-6 に、 コアの動作を示します。

表 3‐5:デュアル モード、 Winbond メモリでの SPI コマンドに対するコアの動作

コマンド  タイプ Winbond メモリコマンド  エラー

コアの動作

スタンダード SPI サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする なし データシートに記載されたデュアル モード命令フォーマッ ト

デュアル モード サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. このコアは Winbond W25Q64BV メモ リ をサポートするよ うに設計されています。 コマンド、 アドレス、 ダ ミー バイ トおよび

各コマンドに必要なデータ バイ ト、 そしてコマンド、 アドレスおよびデータ ビッ トの動作の詳細は、 デバイスのデータシー

ト を参照して ください。

表 3‐6:デュアル モード、 Micron メモリでの SPI コマンドに対するコアの動作

コマンド  タイプ Micron メモリコマンド  エラー

コアの動作

スタンダード SPI サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする なし データシートに記載されたデュアル モード命令フォーマッ ト

デュアル モード サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. コアはこのモードですべてのデュアルおよびスタンダード モード コマンドに関して Micron N25Q256-3V メモ リ をサポートす

るよ うに設計されています。 コマンド、 アドレス、 ダ ミー バイ トおよび各コマンドに必要なデータ バイ ト、 そしてコマンド、

アドレスおよびデータ ビッ トの動作の詳細は、 デバイスのデータシート を参照して ください。

AXI Quad SPI v3.2 59

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

[Slave Device] = [Spansion]

これは SPI スレーブ デバイスと して Spansion メモ リのみをサポートする専用モードです。 Spansion メモ リのほとんどのデュアルおよびスタンダード SPI コマンドがサポート されます。 表 3-7 に、 コアの動作を示します。

[Mode] = [Quad]

このモードでは、 コアは SPI スレーブと して使用する メモ リのタイプに基づいてクワ ッ ド、 デュアル、 およびスタンダード モード SPI コマンドをサポート します。 こ こからは、 各コンフ ィギュレーシ ョ ン モードにおける動作について説明します。

[Slave Device] = [Mixed]

このモードは、 複数の SPI スレーブ デバイスが存在するこ とを前提と します。 コアがサポートするのは Winbond、Micron、 および Spansion メモ リのみのため、 スレーブにはこれらのデバイスを使用する必要があ り ます。

混在メモ リ モードでのコアの動作は、 Winbond メモ リに対する動作に準じます。 拡張 SPI コマンドのうち、Winbond、 Micron および Spansion メモ リに共通の命令のほとんどがサポート されます。 表 3-8 に、 コアの動作を示します。

表 3‐7:デュアル モード、 Spansion メモリでの SPI コマンドに対するコアの動作  

コマンド  タイプSpansion 

メモリコマンド  エラー

コアの動作

スタンダード SPI サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする なし データシートに記載されたデュアル モード命令フォーマッ ト

デュアル モード サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. コアはこのモードですべてのデュアルおよびスタンダード モード コマンドに関して Spansion S70FL01GS メモ リ をサポートす

るよ うに設計されています。 コマンド、 アドレス、 ダ ミー バイ トおよび各コマンドに必要なデータ バイ ト、 そしてコマンド、

アドレスおよびデータ ビッ トの動作の詳細は、 デバイスのデータシート を参照して ください。

表 3‐8: クワッ ド  モード、 混在メモリでの SPI コマンドに対するコアの動作

コマンド  タイプ Winbond Micron/Spansion コマンド  エラー コアの動作

スタンダード SPI サポートする サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない サポートする あ り SPI ト ランザクシ ョ ンなし

スタンダード SPI サポートする サポート しない なし スタンダード フォーマッ ト

スタンダード SPI サポート しない サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする サポートする なし デュアル モード命令フォーマッ ト

デュアル モード サポート しない サポートする あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする サポート しない なし デュアル モード命令フォーマッ ト

デュアル モード サポート しない サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする サポートする あ り クワ ッ ド モード命令フォーマッ ト

クワ ッ ド モード サポート しない サポートする あ り SPI ト ランザクシ ョ ンなし

AXI Quad SPI v3.2 60

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

[Slave Device] = [Winbond]

これは SPI スレーブ デバイスと して Winbond メモ リのみをサポートする専用モードです。 Winbond W25Q64BV メモリのほとんどの SPI コマンドがサポート されます。 表 3-9 に、 コアの一般的な動作を示します。

[Slave Device] = [Micron]

これは SPI スレーブ デバイスと して Micron メモ リのみをサポートする専用モードです。 Micron N25Q256-3V メモ リのほとんどのクワッ ド、 デュアル、 およびスタンダード SPI コマンドがサポート されます。 表 3-10 に、 コアの動作を示します。

クワッ ド モード サポートする サポート しない あ り クワ ッ ド モード命令フォーマッ ト

クワ ッ ド モード サポート しない サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. [Slave Device] = [Mixed] は混在メモリ モードです。 [Mode] = [Quad] の場合、 クワ ッ ド、 デュアル、 およびスタンダード SPI コ

マンドがサポート されます。 各コマンドに対するコアの動作は、 Winbond メモ リに対する動作に準じます。 Micron または Spansion でしかサポート されないコマンドの場合はコマンド エラー フラグがセッ ト され、 コマンドは実行されません。 この

モードでは、 Winbond と Micron の両方のメモ リに共通のコマンド セッ トがサポート されます。

表 3‐9:デュアル モード、 Winbond メモリでの SPI コマンドに対するコアの動作

コマンド  タイプ Winbond コマンド  エラー

コアの動作

スタンダード SPI サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする なし データシートに記載されたデュアル モード命令フォーマッ ト

デュアル モード サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする なし データシートに記載されたクワッ ド モード命令フォーマッ ト

クワ ッ ド モード サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. このコアは Winbond W25Q64BV メモ リ をサポートするよ うに設計されています。 コマンド、 アドレス、 ダ ミー バイ トおよび

各コマンドに必要なデータ バイ ト、 そしてコマンド、 アドレスおよびデータ ビッ トの動作の詳細は、 デバイスのデータシー

ト を参照して ください。

表 3‐10:デュアル モード、 Micron メモリでの SPI コマンドに対するコアの動作

コマンド  タイプ Micron  コマンド  エラー

コアの動作

スタンダード SPI サポートする なし スタンダード SPI フォーマッ ト

スタンダード SPI サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする なし データシートに記載されたデュアル モード命令フォーマッ ト

デュアル モード サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする なし データシートに記載されたクワッ ド モード命令フォーマッ ト

クワ ッ ド モード サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. コアはこのモードですべてのクワッ ド、 デュアル、 およびスタンダード モード コマンドに関して Micron N25Q256-3V メモ リ

をサポートするよ うに設計されています。 コマンド、 アドレス、 ダ ミー バイ トおよび各コマンドに必要なデータ バイ ト、 そ

してコマンド、 アドレスおよびデータ ビッ トの動作の詳細は、 デバイスのデータシート を参照してください。

表 3‐8: クワッ ド  モード、 混在メモリでの SPI コマンドに対するコアの動作 (続き)

コマンド  タイプ Winbond Micron/Spansion コマンド  エラー コアの動作

AXI Quad SPI v3.2 61

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

[Slave Device] = [Spansion]

これは SPI スレーブ デバイスと して Spansion メモ リのみをサポートする専用モードです。 Spansion S70FL01GS メモリのほとんどのクワッ ド、 デュアル、 およびスタンダード SPI コマンドがサポート されます。

XIP モードのコアの動作

[Enable XIP Mode] をオンにする と XIP モードに設定されます。 このモードは、 主にフラ ッシュに実行ファイルを格納し、 プロセッサやその他のマスターから ROM と してアクセスする場合に使用します。

XIP モードでは、 コアは Winbond、 Micron、 および Spansion メモ リに共通のモード と して 24 ビッ ト アドレス モードをサポート します。 Micron および Spansion メモ リの場合は 32 ビッ ト アドレス モード もサポート します。 IP が 32 ビッ ト アドレス モードの場合、 フラ ッシュを 32 ビッ ト モードにコンフ ィギュレーシ ョ ンする必要があ り ます。サポート されるコマンド セッ トについては、 各フラ ッシュのデータシート を参照して ください。 コアがスタンダード、 デュアル、 およびクワッ ド モードの場合、 Winbond および Micron メモ リには 24 ビッ ト アドレス モードを使用します。

このモードでは、 まず AXI4-Lite インターフェイスを使用してコアの CPOL および CPHA モードを正し く設定します。 有効なモードは 00 と 11 です。 それ以外の組み合わせでは、 コアは AXI4 ト ランザクシ ョ ンを受信できません。AXI4-Lite インターフェイスは、 コンフ ィギュレーシ ョ ン レジスタ と ステータス レジスタへのアクセスにしか使用しません。 メモ リのデータは、 AXI4 インターフェイスから供給されるアドレスを使用して AXI4 インターフェイスで読み出します。 AXI4 インターフェイスの読み出しチャネルから供給された開始アドレスを、 コアは SPI インターフェイスで SPI ト ランザクシ ョ ンに変換します。 コアの動作モードは [Mode] で設定し、 ターゲッ ト メモ リは [Slave Device] で選択します。 この場合、 コアは複数のメモ リ をサポート しておらず、 ターゲッ ト メモ リは 1 つのみです。ターゲッ ト メモ リには Winbond、 Micron、 Spansion メモ リ、 またはデフォルトの 3 つの読み出しコマンドをサポートした任意のメモ リ を使用できます。 FIFO 深さが 64 のため、 このモードでは AXI4 インターフェイスでの読み出し トランザクシ ョ ンの最大バース ト長は 64 です。 この条件を満たさない場合、 コアの動作は保証されません。

デフォルトのコマンドは、 高速読み出し (0x0Bh)、 高速読み出しデュアル I/O (0xBBh)、 および高速読み出しクワ ッド I/O (0xEBh) です。 動作中は、 [Mode] の設定に基づく コマンドのみが使用されます。 コマンドはコア内部で生成されるため、 変更はできません。

読み出しコマンドによってはダ ミー バイ トのパディングが必要で、 コアにはそのための内部リ ファレンス ロジッ クがあ り ます。

XIP モードでのコアの動作は、 Winbond、 Micron、 および Spansion メモ リのデータシートに記載されている読み出しコマンドの動作仕様に基づきます。

表 3‐11:デュアル モード、 Spansion メモリでの SPI コマンドに対するコアの動作

コマンド  タイプSpansion 

メモリコマンド  エラー

コアの動作

スタンダード SPI サポートする なし スタンダード フォーマッ ト

スタンダード SPI サポート しない あ り SPI ト ランザクシ ョ ンなし

デュアル モード サポートする なし データシートに記載されたデュアル モード命令フォーマッ ト

デュアル モード サポート しない あ り SPI ト ランザクシ ョ ンなし

クワッ ド モード サポートする あ り データシートに記載されたクワッ ド モード命令フォーマッ ト

クワ ッ ド モード サポート しない あ り SPI ト ランザクシ ョ ンなし

注記:1. コアはこのモードですべてのクワッ ド、 デュアル、 およびスタンダード モード コマンドに関して Spansion S70FL01GS メモ リ

をサポートするよ うに設計されています。 コマンド、 アドレス、 ダ ミー バイ トおよび各コマンドに必要なデータ バイ ト、 そ

してコマンド、 アドレスおよびデータ ビッ トの動作の詳細は、 デバイスのデータシート を参照してください。

AXI Quad SPI v3.2 62

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

このモードで使用するパラ メーターは次のとおりです。

• [Enable Performance Mode]

• [Enable XIP Mode]

• モード

• [Slave Device]

• [Enable STARTUPEn Primitive]

注記: 7 シ リーズ デバイスでは STARTUPE2 プリ ミ ティブを使用します。 UltraScale デバイスでは STARTUPE3 プリ ミ ティブを使用します。

コアは SPI ロジッ クの基準クロ ッ ク と して ext_spi_clk を使用します。このクロ ッ クは AXI4 インターフェイス クロ ッ クから独立しており、 SPI インターフェイスの目的の SPI 周波数の 2 倍の周波数とする必要があ り ます。 このクロ ッ クを基準に、 コアは [Frequency Ratio] の値 (XIP モードではこの値は 2 で固定) を使用して SPI インターフェイスの SPI ク ロ ッ クを生成します。 XIP モードにはソフ ト リセッ ト レジスタも割り込みレジスタもあ り ません。 コアをリセッ トするには、 インターコネク ト を リセッ トする必要があ り ます。

XIP モードでコアがサポートする AXI4 ト ランザクシ ョ ン タイプは、WRAP および INCR のみです。 FIXED ト ランザクシ ョ ンはエラーとなり、 コアはト ランザクシ ョ ンを受け取り ません。 この場合、 XIP ステータス レジスタの ト ランザクシ ョ ン エラー フラグがセッ ト されます。 この場合、 ターゲッ ト メモ リは Winbond または Spansion であるため、 コアをクワッ ド モードにした場合は SPI フラ ッシュ メモ リからコアをブートする前に Winbond メモ リのステータス レジスタの QE ビッ ト 、 または Spansion メモ リのコンフ ィギュレーシ ョ ン メモ リの QE ビッ ト をセッ トする必要があ り ます。 これは外部プログラ ミ ング ツールで行います。

スタンダード  SPI モードのト ランザクシ ョ ン

このセクシ ョ ンでは、 バス ト ランザクシ ョ ンを開始して完了するまでの SPI レジスタの設定方法について説明します。

SPI マスター デバイス、 FIFO あり /なし、 手動スレーブ選択アサート  モード  (SPICR ビッ ト  7 = 1)

このフローでは、 スレーブ選択ベクターを 1 回トグルするだけで N 個のバイ ト /ハーフワード /ワード エレメン ト を転送できます。 これはデフォルトの動作モードです。 SPI ト ランザクシ ョ ンを正し く完了するには次の手順を実行します。

1. SPI バス アービ ト レーシ ョ ンを含め、 既知の状態から開始します。

2. 必要に応じて DGIER および IPIER レジスタを設定します。

3. 必要に応じてターゲッ ト スレーブ SPI デバイスを設定します。 具体的には、 スレーブ SPI コアの DTR および制御レジスタを設定し、 スレーブ SPI コアを有効にします。

4. マスターの SPI DTR レジスタ /FIFO へ最初のデータを書き込みます。 このと き、 SPI マスターは無効にしておきます。

a. レガシ モードでは、 AXI4-Lite ト ランザクシ ョ ンは DTR に 1 つずつ書き込まれます。

b. エンハンス ト モードでは、 AXI4 インターフェイスは FIXED バース ト ト ランザクシ ョ ンを生成する必要があ り ます。長さ 0 の INCR ト ランザクシ ョ ンは可能ですが、 DTR または DRR FIFO に対して INCR バース トを実行した場合、 コアの動作は保証されません。 この INCR ト ランザクシ ョ ンは FIXED ト ランザクシ ョ ンと して扱われます。 FIFO オーバーフローまたはアンダーフロー エラーを避けるため、 長さにかかわらずバース ト を開始する場合はその前に送信または受信 FIFO 占有レベル レジスタを読み出しておく必要があ ります。 XIP モード以外では、 DRR への読み出しコマンドの最大バース ト長は、 16 または Rx FIFO 占有レベルの値のいずれか小さい方までサポート されます。 この条件を満たさない場合、 コアの動作は保証されません。 DTR レジスタへの書き込みの場合、 書き込みの長さが (FIFO_Depth - DTR 占有レベルの値) 以下でないと コアの動作は保証されません。

5. SPISSR レジスタのビッ トがすべて 1 であるこ とを確認します。

AXI Quad SPI v3.2 63

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

6. コンフ ィギュレーシ ョ ン データをマスター SPI デバイスの SPICR に書き込みます。 ビッ ト 7 はセッ ト し、 SS ベクターを手動でアサート します。 SPE ビッ ト と Master Transaction Inhibit ビッ ト もセッ ト します。 これで SCK と IO0 が初期化されますが、 転送は禁止されます。

7. SPISSR レジスタに書き込んで SS ベクターを手動でアサート します。

8. 上記のコンフ ィギュレーシ ョ ン データをマスター SPI デバイスの SPICR レジスタに書き込みます。 ただし Master Transaction Inhibit ビッ トはク リ アします。 これで転送が開始します。

9. 割り込みを待つ (通常は IPISR のビッ ト 4) か、 完了ステータスをポーリ ングします。 待ち時間は SPI ク ロ ッ ク比によ り異なり ます。

10. Master Transaction Inhibit ビッ ト をセッ ト して割り込み要求を処理します。

11. マスターのレジスタ /FIFO およびスレーブ デバイスに新規データを書き込みます。

12. Master Transaction Inhibit ビッ ト をク リ アする と、 N 個の 8 ビッ ト エレ メン トの転送が継続します。

注記: SPI DRR レジスタ /FIFO のオーバーランは、 SPI DRR レジスタ /FIFO を正し く読み出していない場合に発生します。 また、 エレ メン ト (FIFO を使用する場合はエレ メン ト グループ) の転送が終了してから次に開始するまでの間、 SCK によってアイ ドル レベルが延長されます。 IO0 は 1 エレ メン ト (またはエレ メン ト グループ) の転送終了時に遷移できますが、 2 分周クロ ッキング モードでは安定しています。 IO0 は SCK の立ち下がりエッジで有効になり ます。 それ以外のすべてのモードでは、 SCK の立ち下がりエッジから 2 ext_spi_clk サイクル後に有効になり ます。 また、 新規 SPI ト ランザクシ ョ ンど う しの間にはアイ ドル サイクルはあ り ません。

13. すべてのデータが転送されるまで手順 10 ~手順 12 を繰り返します。

14. SPISSR レジスタのすべてのビッ トに 1 を書き込むか、SCK と IO0 がアイ ドル ステートの状態で手動スレーブ選択アサート モードを終了して SS ベクターをディアサート します。

15. 必要に応じてデバイスを無効にします。

SPI マスターおよびスレーブ デバイス、 FIFO なし、 1 回の 8/16/32 ビッ ト転送を実行 (オプション モード )

SPI ト ランザクシ ョ ンを正し く完了するには、 次の手順を実行します。

1. SPI バス アービ ト レーシ ョ ンを含め、 既知の状態から開始します。

2. マスターの DGIER および IPIER レジスタを設定します。スレーブの DGIER および IPIER レジスタも必要に応じて設定します。

3. 必要に応じてマスター SPI デバイスの SPICR レジスタにコンフ ィギュレーシ ョ ン データを書き込みます。

4. 必要に応じてスレーブ SPI デバイスの SPICR レジスタにコンフ ィギュレーシ ョ ン データを書き込みます。

5. ワンホッ ト エンコードによるアクティブ Low スレーブ選択アドレスをマスターの SPISSR レジスタに書き込みます。

6. 必要に応じてスレーブの SPI DTR にデータを書き込みます。

7. マスターの SPI DTR にデータを書き込んで転送を開始します。

8. 割り込みを待つ (通常は IPISR のビッ ト 4) か、 完了ステータスをポーリ ングします。

9. 必要に応じてマスターおよびスレーブ SPI デバイスの IPISR レジスタを読み出します。

10. 必要に応じて割り込み要求を実行します。

11. 必要に応じてマスターおよびスレーブ SPI デバイスの SPISR レジスタを読み出します。

12. 必要に応じて、 または SPISR レジスタのデータに基づいてアクシ ョ ンを実行します。

AXI Quad SPI v3.2 64

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

SPI マスターおよびスレーブ デバイス、 SPI 転送の開始前にレジスタ /FIFO に書き込み、 複数の 8 ビッ ト転送を個別に実行 (オプシ ョ ンモード )

スレーブ モードのコアは、 送信または受信 FIFO に対して FIXED バース トのみをサポート します。 このバース ト トランザクシ ョ ンの長さは、 [FIFO Depth] パラ メーターおよび送信/受信 FIFO 占有レベル レジスタに基づいて決定します。 これによ り、 DTR または DRR FIFO のオーバーランまたはアンダーラン エラーを防ぐこ とができます。

SPI ト ランザクシ ョ ンを正し く完了するには、 次の手順を実行します。

1. SPI バス アービ ト レーシ ョ ンを含め、 適切な状態から開始します。

2. マスターの DGIER および IPIER レジスタを設定します。スレーブの DGIER および IPIER レジスタも必要に応じて設定します。

3. 必要に応じてマスター SPI デバイスの SPICR レジスタにコンフ ィギュレーシ ョ ン データを書き込みます。

4. 必要に応じてスレーブ SPI デバイスの SPICR レジスタにコンフ ィギュレーシ ョ ン データを書き込みます。

5. ワンホッ ト エンコードによるアクティブ Low スレーブ選択アドレスをマスターの SPISSR レジスタに書き込みます。

6. 必要に応じてスレーブの SPI DTR レジスタ /FIFO にすべてのデータを書き込みます。

7. マスターの SPI DTR レジスタ /FIFO へすべてのデータを書き込みます。

8. マスターの SPICR レジスタにイネーブル ビッ ト を書き込んで転送を開始します。

9. 割り込みを待つ (通常は IPISR のビッ ト 4) か、 完了ステータスをポーリ ングします。

10. 必要に応じてマスターおよびスレーブ SPI デバイスの IPISR レジスタを読み出します。

11. 必要に応じて割り込み要求を実行します。

12. 必要に応じてマスターおよびスレーブ SPI デバイスの SPISR レジスタを読み出します。

13. 必要に応じて、 または SPISR レジスタのデータに基づいてアクシ ョ ンを実行します。

SPI マスターおよびスレーブ デバイス、 FIFO に初期データ書き込み、 SPI 転送を開始、 高速 SPI 転送またはそれ以上の高速 SPI 転送としてデータを FIFO に書き込み、複数の 8 ビッ ト転送を個別に実行 (オプショ ン モード )

SPI ト ランザクシ ョ ンを正し く完了するには、 次の手順を実行します。

1. SPI バス アービ ト レーシ ョ ンを含め、 適切な状態から開始します。

2. マスターの DGIER および IPIER レジスタを設定します。スレーブの DGIER および IPIER レジスタも必要に応じて設定します。

3. 必要に応じてマスター SPI デバイスの SPICR レジスタにコンフ ィギュレーシ ョ ン データを書き込みます。

4. 必要に応じてスレーブ SPI デバイスの SPICR レジスタにコンフ ィギュレーシ ョ ン データを書き込みます。

5. ワンホッ ト エンコードによるアクティブ Low スレーブ選択アドレスをマスターの SPISSR レジスタに書き込みます。

6. 必要に応じてスレーブの送信 FIFO に最初のデータを書き込みます。

7. マスターの送信 FIFO に最初のデータを書き込みます。

8. マスターの SPICR レジスタにイネーブル ビッ ト を書き込んで転送を開始します。

9. マスターおよびスレーブの FIFO へのデータ書き込みを継続します。

10. 割り込みを待つ (通常は IPISR のビッ ト 4) か、 完了ステータスをポーリ ングします。

11. 必要に応じてマスターおよびスレーブ SPI デバイスの IPISR レジスタを読み出します。

12. 必要に応じて割り込み要求を実行します。

AXI Quad SPI v3.2 65

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

13. 必要に応じてマスターおよびスレーブ SPI デバイスの SPISR レジスタを読み出します。

14. 必要に応じて、 または SPISR レジスタのデータに基づいてアクシ ョ ンを実行します。

デュアル/クワッ ド  SPI モードのト ランザクシ ョ ン

このモードでは、 コアをマスター モードに設定する必要があ り ます。 それ以外の場合、 エラー割り込みが生成されます。

コアをデュアル モードで動作させる手順をコアの観点から説明します。 コマンドの相互依存を確認してから SPI DTR レジスタへの書き込みを実行し、 SPI コアを有効にして ト ランザクシ ョ ンを開始してください。

1. [Mode] = [Dual] に設定され、 [Slave Device] が正しい SPI スレーブ メモ リに設定されているこ とを確認します。

2. 必要な SPI ク ロ ッ クによって駆動され、 [Frequency Ratio] によって設定される命令がリ ス トに含まれているこ とを確認します。

3. [FIFO Depth] パラ メーターを設定します。 このパラ メーターは 16 または 256 が可能です。

4. ソフ ト リセッ ト レジスタに書き込んでコアを リセッ ト します。 この リセッ トは、 16 AXI サイクルの間アクティブです。 この間、 各 FIFO レジスタはリセッ ト ステートに維持されます。

5. SPICR レジスタに書き込んでコアをマスター モードにし、 CPOL と CPHA の値を設定し、 Master Transaction Inhibit ビッ ト をセッ ト します。

6. IPIER および IPISR レジスタに書き込んで必要な割り込みを有効にします。

7. SPI DTR にコマンド、 アドレス、 ダ ミー、 および送信するデータ バイ ト を書き込みます。 書き込み手順は、 使用するデバイスのデータシートの記載に従います。

8. SPI DTR にコマンド、 アドレス、 ダ ミー バイ ト、 および読み出しまたは書き込みを行うバイ ト数のデータ バイト を書き込みます。

9. SPISSR レジスタに書き込んでコアからのチップ選択信号をアサート します。

10. SPICR レジスタの Master Transaction Inhibit ビッ ト をク リ アします。 これでコアは SPI ク ロ ッ クを開始します。

11. 書き込みの場合、 DTR エンプティ割り込みが生成されるまで待ちます。

12. DTR エンプティ割り込みが生成される と、 データを SPI DTR に書き込んで ト ランザクシ ョ ンを継続できます (スレーブ選択レジスタが変化しておらず、 スレーブが選択されたままの場合)。

13. 追加のデータを書き込んだ場合、 SPISSR レジスタはアサート されたままで、 SPI ク ロ ッ クのみが停止します。DTR FIFO が空でない場合、 SPI ク ロ ッ クを再び有効にする とデータが送信されます。

14. 読み出しの場合も手順 11、 手順 12、 および手順 13 が適用されます。 SPI スレーブ メモ リ を読み出す間、 DTR FIFO に任意のランダムなデータ ビート を書き込みます。

15. SPISSR レジスタのすべてのビッ ト を 1 にセッ ト して選択したスレーブを無効にするか、 SPICR レジスタの Master Transaction Inhibit ビッ ト を 1 にセッ トする と SPI ク ロ ッ クが停止します。

16. SPISSR レジスタのすべてのビッ ト を 1 にセッ ト して選択したスレーブを無効にした後、 SPI DTR FIFO に再び書き込むと、 コアは新規ト ランザクシ ョ ンと見なして DTR FIFO の最初のエン ト リ とサポート されるコマンドを比較します。

17. 新規ト ランザクシ ョ ンの前に、 スレーブを選択していない状態で SPICR レジスタのビッ トに書き込んで SPI DTR および DRR FIFO を リセッ トする必要があ り ます。 これで 2 つの FIFO がリセッ ト され、 DTR FIFO の最初のエン ト リ をサポート されるコマンド と比較できるよ うになり ます。

注記: このコアは、 DTR への書き込みに関して、 一括で書き込む方法 (手順 7 のよ うに、 Master Transaction Inhibit をセッ ト した後、 コマンド、 アドレス、 データをすべて DTR に書き込んで、 Master Transaction Inhibit を リセッ トする ) と、 順次書き込む方法 (Master Transaction Inhibit をセッ ト した後、 コマンドを SPI DTR に書き込んで Master Transaction Inhibit を リセッ ト 。 アドレス、 データについても同じ手順を繰り返す) の両方をサポート します。

AXI Quad SPI v3.2 66

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

デュアル/クワッ ド  モード  SPI コンフ ィギュレーシ ョ ン

デュアル/クワ ッ ド モード SPI コンフ ィギュレーシ ョ ンでは、 SPI データ ビート を送信する前にメモ リのタイプ (Winbond、 Micron、 または Spansion) に応じて SPI DTR FIFO に書き込む必要があ り ます。新規ト ランザクシ ョ ンを書き込む前に、 SPI DTR および DRR FIFO の両方を リセッ ト します。 SPI DTR FIFO にはコマンド、 アドレス、 ダ ミー バイ ト、 データの順に書き込む必要があ り ます。 SPI DTR FIFO の最初のエン ト リは常に内部のコマンド マップ テーブルと比較され、 サポート されるコマンドに基づいてコアの動作が決定します。 SPI DTR FIFO の最初のエン ト リがサポート されるコマンドの リ ス ト内のどのコマンド と も一致しない場合、 コアはこれをエラーと して扱い、 SPI ト ランザクシ ョ ンは実行されません。 このエラーに対しては割り込みも生成されます。

Winbond、 Micron、 および Spansion メモ リでサポート されるコマンド とサポート されないコマンド (デュアル/クワ ッド SPI モード と Winbond、 Micron、 または Spansion メモ リでサポート されないコマンド ) のリ ス ト を必ず確認する必要があ り ます。 サポート されない命令を実行した場合、 コアの動作は保証されません。 コマンドがコアでサポートされるコマンドのいずれと も一致しない場合、 コマンド エラーを示す割り込みがセッ ト されます。 デュアル/クワ ッド モードでは、 コアは常に SPI ト ランザクシ ョ ンのコマンド フェーズを 1 本のライン (IO0_* ポート ) で送信します。デュアル/クワ ッ ド SPI コンフ ィギュレーシ ョ ンのコアでは、 2-2-2 および 4-4-4 (コマンド、 アドレス、 データ ) SPI モードはサポート されません。

転送フォーマッ ト

スタンダード SPI モードでは、 CPHA - CPOL の組み合わせは 00、 01、 10、 11 のいずれかのモードがサポート されます。

デュアル/クワ ッ ド SPI モードでは、 CPHA - CPOL の組み合わせは 00 または 11 のモードのみがサポート されます。SPICR でそれ以外のモードを設定した場合はエラーとなり、 割り込みがセッ ト されます。 コアの動作は予測不能です。

CPHA = 0 の場合の転送フォーマッ ト

図 3-3 に、 スタンダード SPI モードで CPHA = 0 の場合のデータ書き込み/読み出しサイクルのタイ ミ ング図を示します。 この波形は CPOL = 0、 LSB First = 0、 およびジェネ リ ッ ク C_SCK_RATIO = 4 の場合のものです。 すべての AXI 信号と S_AXI_AClk、 およびすべての SPI 信号と SCK の関係は同じです。

信号 SCK は、 スレーブ選択ラインのアサート (すなわち転送の開始) から 1/2 周期まではアイ ドル ステートのままです。 SS(N) ラインのアサートは転送開始を示すため、 同じスレーブ デバイスに対して連続してエレ メン ト を転送するにはいったんディアサート してから再びアサートする必要があ り ます。

1 SCK ク ロ ッ ク周期で 1 ビッ トのデータが転送されます。 データは SCK の片方のエッジでシフ ト され、 データが安定する と反対のエッジでサンプルされます。 M68HC11 SPI 仕様に準じ、 ク ロ ッ ク極性および 8/16/32 ビッ ト指向データ転送に対する 2 種類のクロ ッキング プロコ トルは SPICR のビッ トで選択できます。

スタンダード SPI モードでは、 IO0 ピンは IO0 (MOSI) と同じです。 スタンダード SPI モードでは、 IO1 ピンは IO1 (MISO) と同じです。

X-Ref Target - Figure 3-3

図 3‐3: CPHA = 0 および SPICR(7) = 0 の場合の SPI バスに対する 8 ビッ ト  データ書き込み/読み出しサイクル

SCK

IO0 (MOSI)IO1 (MISO)

SPISEL

Dt(0) Dt(1) Dt(3) Dt(4) Dt(5) Dt(6) Dt(7)

Dr(0) Dr(1) Dr(3) Dr(4) Dr(5) Dr(6) Dr(7) **

A0: Address of Transmit_Data Register

Dr: Received Data

**: Not de ned, but normally MSB of character just receivedSCK is shown for CPOL = 0

Dt: Transmi ed Data

Legend:

Dt(2)

Dr(2)

X14434

SS

AXI Quad SPI v3.2 67

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

IO0 および IO1 ポートの動作は、 SPI デバイスがマスター モードかスレーブ モードかで異なり ます。 マスター モードの場合、 IO0 ポートはシ リ アル データ出力ポートで、 IO1 はシ リ アル データ入力ポートです。 反対に、 デバイスがスレーブ モードの場合は IO1 ポートがスレーブ シ リ アル データ出力ポートで、 IO0 がシ リ アル データ入力ポートです。 複数のマスターとスレーブが同時にデータを送信するこ とはできません。 このバス アーキテクチャでは競合エラーの検出が制限される、 つま り複数のデバイスが共有の IO1 および IO0 信号を駆動する競合エラーしか検出できないため、 競合エラーを防ぐためにソフ ト ウェアによるアービ ト レーシ ョ ンが必要です。

各デバイスの SCK、 IO0、 および IO1 ピンはすべてハードワイヤード されています。 すべてのト ランザクシ ョ ンにおいて、 SPI バス上でマスターに設定される SPI デバイスは 1 つのみで、 それ以外のすべての SPI デバイスはスレーブに設定されます。

この 1 つのマスターが、 SCK および IO0 ピンをスレーブの SCK および IO0 ピンに駆動します。 1 つだけ選択されたスレーブ デバイスは IO1 ピンからマスターの IO1 ピンにデータを駆動し、 これによって全二重通信を実現します。

SS(N) 信号の N 番目のビッ ト をアクティブ (Low) にして N 番目の SPI スレーブを選択します。 それ以外のスレーブ デバイスは SCK 信号と IO0 信号をいずれも無視します。 また、 選択されていないスレーブ (すなわち SS ピンが High) は、 SPI バス アクティ ビティに干渉しないよ うに IO1 ピンを ト ライステートに駆動します。 外部スレーブ SPI デバイスをインプ リ メン ト した場合、 SCK、 IO0、 IO1、 および必要な SS(N) 信号はピンに引き出されます。 すべての信号は完全な ト ライステート バス信号で、 内部デバイス と外部デバイスの両方が存在する場合、 誤った外部バス アクティビティによって内部転送が破損するこ とがあ り ます。

外部 SPI ト ラ イステート信号の外部プルアップまたはプルダウンが FPGA I/O ド ラ イバーのシンク /ソース能力に一致しているこ とを確認してください。 I/O ド ラ イバーは異なる駆動能力および内部プルアップにできます。 複数の外部スレーブに対する ト ライステート信号はシステム設計要件に従ってインプリ メン トできますが、 外部バスは M68HC11 SPI 仕様に従う必要があ り ます。

CPHA = 1 の場合の転送フォーマッ ト

CPHA = 1 の場合、 SCK ラインが非アクティブ レベルからアクティブ レベルに遷移するエッジ (立ち上がりエッジか立ち下がりエッジかは CPOL の設定による ) で最初の SCK サイクルが開始します (図 3-4 参照)。 この波形は CPOL = 0、 LSB First = 0、 およびジェネ リ ッ ク C_SCK_RATIO = 4 の場合のものです。 すべての AXI 信号と S_AXI_Clk、 およびすべての SPI 信号と SCK の関係は同じです。

X-Ref Target - Figure 3-4

図 3‐4: CPHA = 1 および SPICR(7) = 0 の場合の SPI バスに対する 8 ビッ ト  データ書き込み/読み出しサイクル

SCK

IO0 (MOSI)

IO1 (MISO)

SPISEL

SS

Dt(0) Dt(1) Dt(2) Dt(3) Dt(4) Dt(5) Dt(6) Dt(7)

Dr(0)** Dr(1) Dr(2) Dr(3) Dr(4) Dr(5) Dr(6) Dr(7)

Legend:AO: Address of Transmit_Data RegisterDt: Transmitted DataDr: Received DataSCK is shown for CPOL = 0**: Not defined, but normally MSB of character just received

x14435

AXI Quad SPI v3.2 68

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

SPI プロ ト コルのスレーブ選択アサート  モード

このセクシ ョ ンでは、 スタンダード モードの SPI プロ ト コルで利用できる自動スレーブ選択アサート と手動スレーブ選択アサートについて説明します。 「ク ロ ッキング (SPI ク ロ ッ ク位相および極性の制御)」 で説明したすべての SPI 転送フォーマッ トは、 これら 2 つのモードの両方で有効です。

自動スレーブ選択アサート  モードの SPI プロ ト コル

このセクシ ョ ンでは、 FIFO 無効時にスレーブ選択 (SS(N)) を SPI マスター デバイスが自動的にアサートする場合 (SPICR ビッ ト 7 = 0) の SPI プロ ト コルについて説明します。

このコンフ ィギュレーシ ョ ン モードでは、 すべてのエレ メン トが転送されるまでスレーブ選択 (SS) 信号が自動的にト グルしてデータが転送されます。 このモードでは、 新規転送の開始時に SPISSR レジスタ内のデータが SS(N) 出力に現れます。 1 ビートの SPI ト ランザクシ ョ ン (Vivado IDE の [Transaction Width] で設定) が完了するたびに SS(N) 出力が 1 になり ます。 次の新規転送の開始時に、 SPISSR レジスタ内のデータが SS(N) 出力に再び現れます。 スレーブ選択信号を手動で制御する必要はあ り ません。 このモードは、 AXI4-Lite および AXI4 インターフェイスを使用したデュアル/クワ ッ ド SPI モードのコアではサポート されません。

手動スレーブ選択アサート  モードの SPI プロ ト コル

このセクシ ョ ンでは、 スレーブ選択 (SS(N)) をユーザーがアサートする場合 (SPICR ビッ ト 7 = 1) の SPI プロ ト コルについて簡単に説明します。 このコンフ ィギュレーシ ョ ン モードでは、 すべてのエレ メン トが転送されるまでスレーブ選択を ト グルせず任意の数のエレ メン ト を転送できます。 このモードでは、 SPISSR レジスタ内のデータがそのまま SS(N) 出力に現れます。

前述のよ うに、 スレーブ選択をアサートする前に SCK が安定している必要があ り ます。 したがって手動スレーブ選択モードを使用する際は、 SPI マスターを先に有効にして (SPICR ビッ ト 7 = 1)、 スレーブ選択をアサートする前に SCK をアイ ドル ステートにしておく必要があ り ます。

Master Transaction Inhibit (SPICR ビッ ト 8) を使用する と、 スレーブ選択を手動でアサート し、 すべての FIFO データ レジスタが初期化されるまで必要に応じてマスター ト ランザクシ ョ ンを禁止できます。 これは最初のト ランザクシ ョ ンの前、 および完了が許可された ト ランザクシ ョ ンの後に使用できます。

上述の規則に従った場合、 スレーブ選択信号と転送されるエレ メン ト数をユーザーが制御する点を除き、 タイ ミ ングは自動スレーブ選択アサート モードの場合と同じです。 完全なメモ リ読み出しまたはページ読み出しを実行する際は、 手動スレーブ選択モードの使用を推奨します。

SPI 転送の開始と終了

開始および終了周期の詳細は、 選択した CPHA のフォーマッ トおよび SPI がマスター モードかスレーブ モードかで異なり ます。 こ こからは、 SPI 転送の開始および終了周期について説明します。

転送開始周期

AXI Quad SPI コアの転送開始周期の定義は、 M68HC11 リ ファレンス マニュアルに準じます。 詳細は、 同マニュアルを参照してください。 すべての SPI 転送はマスター SPI デバイスが開始および制御します。

スレーブと して、 プロセッサは最初の SCK エッジまたは SS の立ち下がりエッジ (CPHA の設定による ) で転送開始と判断します。 CPHA = 0 の場合、 SS の立ち下がりエッジが転送開始を示します。 CPHA = 1 の場合、 SCK の最初のエッジが転送開始を示します。 どちらの CPHA フォーマッ トの場合も、 SS(N) 信号をディアサートする と転送を中止でき、 これによって SPI スレーブ ロジッ ク とビッ ト カウンターがリセッ ト されます。 このインプリ メンテーシ ョンでは、 ソフ ト ウェア ド ラ イバーですべてのスレーブの選択を解除 (すなわち SS(N) を High に駆動) する と ト ランザクシ ョ ンを中止できます。 ハード ウェアはシングルまたはバース ト転送の途中でスレーブを変更できますが、 ソフ ト ウェアでこれを防ぐよ うに設計する必要があ り ます。

AXI Quad SPI v3.2 69

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 3 章: コアを使用するデザイン

スレーブ モードでは、 SS 信号がアサート された後の最初の AXI 立ち上がり ク ロ ッ ク エッジで SPI DTR レジスタからデータが送信されます。 データはレジスタまたは FIFO にあ り ます。 データが存在しない場合は、 アンダーラン割り込みがアサート されます。

転送終了周期

AXI Quad SPI コアの転送終了周期の定義は、 M68HC11 リ ファレンス マニュアルに準じます。 SPI 転送が完了する と、SPIF フラグがセッ ト されます。 ただし、 SPI システムのコンフ ィギュレーシ ョ ンによっては転送完了の判定にいくつかの手順が必要になるこ と もあ り ます。

FIFO なしで構成した場合、 SPISR の Rx_Full ビッ ト (1) がセッ ト されていれば転送完了です。 SPI DRR レジスタにデータが存在する場合、 IPISR のビッ ト 4 もアサート されます。 SPI DRR 内のデータは、 SPI DRR レジスタ フル割り込みがアサート されるのと同じクロ ッ ク エッジでサンプルされます。

SPI デバイスを FIFO なしで構成してマスターと して設定した場合は、 次の手順を実行します。

• SPISR の Rx_Empty ビッ ト (0) と Tx_Full ビッ ト (3) がク リ アされます。

• Tx_Empty ビッ ト (2) と Rx_Full ビッ ト (1) がセッ ト されます。

• 最後の SCK サイクル終了後の最初の立ち上がり AXI ク ロ ッ ク エッジで IPISR の DRR Full ビッ ト (4) と Slave MODF ビッ ト (1) がセッ ト されます。

注記: CPHA = 0 の場合は SCK の遷移が最後の SCK サイクルの終了を示しますが、CPHA = 1 の場合は SCK の遷移は終了を示しません (図 3-3 および図 3-4 参照)。 ただし内部マスター ク ロ ッ クによって提供される SCK エッジを利用してこれらのビッ ト をセッ トおよびク リ アできます。

このデザインにはカウンターがインプリ メン ト されており、マスターおよびスレーブ SPI デバイスの SPISR と IPISR のビッ ト を同時にセッ トできます。 外部 SPI スレーブ デバイスは、 SCK ク ロ ッ ク と非同期な内部 AXI ク ロ ッ クを使用できます。 このため、 SPISR と IPISR でステータス ビッ トの状態が一致しないこ とがあ り ます。 したがって、 外部 SPI スレーブ デバイスが AXI ク ロ ッ クを使用しないシステムでは AXI Quad SPI コアを使用できません。

AXI Quad SPI コアで FIFO を有効にし、 SPI 8 ビッ ト /16 ビッ ト /32 ビッ ト (パラ メーター設定による ) エレ メン トの転送を連続して実行した場合、 SPISR ビッ ト と IPISR ビッ トで最初と最後の SPI 転送の完了は示されますが、 その中間の転送の完了は示されません。 中間の転送の完了を知るには、 受信 FIFO 占有レベルの値を監視する必要があ り ます。 送信 FIFO の占有レベルが半分になる と発生するハーフ エンプティ割り込みもあ り ます (IPISR のビッ ト 6)。

SPI デバイスをスレーブに設定した場合、 マスターに関して説明したビッ トのセッ ト /ク リ アは CPHA = 0 と CPHA = 1 のどちらの場合もマスターのビッ トのセッ ト /ク リ アと一致します。 CPHA = 1 の場合 (すなわち最後のクロ ッ ク周期の終了を知らせる SCK エッジがない場合)、AXI ク ロ ッ ク周期カウンターが SPI スレーブ デバイスに含まれていない限り スレーブは最後の SCK 周期の終了を知るこ とができません。

AXI Quad SPI v3.2 70

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4章

デザイン  フローの手順この章では、 コアのカスタマイズと生成、 制約、 およびシ ミ ュレーシ ョ ン/合成/インプリ メンテーシ ョ ンの手順について説明します。 一般的な Vivado® デザイン フローおよび IP インテグレーターの詳細は、 次の Vivado Design Suite ユーザー ガイ ドを参照してください。

• 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2]

• 『Vivado Design Suite ユーザー ガイ ド : IP インテグレーターを使用した IP サブシステムの設計』 (UG994) [参照 5]

• 『Vivado Design Suite ユーザー ガイ ド : 入門』 (UG910) [参照 6]

• 『VVivado Design Suite ユーザー ガイ ド : ロジッ ク シ ミ ュレーシ ョ ン』 (UG900) [参照 7]

コアのカスタマイズおよび生成

こ こでは、 ザイ リ ンクス ツールを使用し、 Vivado® Design Suite でコアをカスタマイズおよび生成する方法について説明します。

Vivado IP インテグレーターでコアをカスタマイズおよび生成する場合は、 『Vivado Design Suite ユーザー ガイ ド : IP インテグレーターを使用した IP サブシステムの設計』 (UG994) [参照 5] を参照して ください。 IP インテグレーターは、 デザインの検証または生成時に一部のコンフ ィギュレーシ ョ ン値を自動的に計算する場合があ り ます。 値が変わるかど うかを確認するには、 この章のパラ メーターの説明を参照してください。 パラ メーター値を確認するには、Tcl コンソールから validate_bd_design コマンドを実行してください。

IP はユーザー デザインに合わせてカスタマイズできます。 それには、 IP コアに関連する各種パラ メーターの値を次の手順に従って指定します。

1. Vivado IP カタログから IP を選択します。

2. 選択した IP をダブルク リ ッ クするか、 ツールバーまたは右ク リ ッ ク メニューから [Customize IP] コマンドをクリ ッ ク します。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] および 『Vivado Design Suite ユーザー ガイ ド : 入門』 (UG910) [参照 6] を参照してください。

注記: この章の図には Vivado IDE のスク リーンシ ョ ッ トが使用されていますが、 現在のバージ ョ ンとはレイアウ トが異なる場合があ り ます。

AXI Quad SPI v3.2 71

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

図 4-1 に、 Vivado 統合設計環境 (IDE) の AXI Quad SPI 設定画面を示します。

[AXI Interface Options]

• [Enable XIP Mode] – XIP (eXecute In Place) モードを有効にします。 このチェッ ク ボッ クスをオンにする と AXI4 および AXI4-Lite インターフェイスが有効になり ます。 24 ビッ ト と 32 ビッ トのアドレス モードは、 ダウンス トリーム SPI デバイスに合わせて選択します。

• [Enable Performance Mode] – AXI4 インターフェイスを有効にします。 AXI4 インターフェイスを使用する と、 コアの送信/受信 FIFO アドレスでのバース ト機能も有効になり ます。 このチェッ ク ボッ クスをオフにした場合は AXI4-Lite インターフェイスが使用されます。

X-Ref Target - Figure 4-1

図 4‐1: Vivado IDE の AXI Quad SPI 設定画面

AXI Quad SPI v3.2 72

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

[SPI Options]

• [Mode] – スタンダード、 デュアル、 またはクワッ ド モードを選択します。 使用する SPI スレーブ デバイスおよびアプリ ケーシ ョ ンに応じて正しいモードを選択します。

• [Transaction Width] – 8、 16、 または 32 ビッ ト ト ランザクシ ョ ンを選択します。 選択したビッ ト数が SPI ト ランザクシ ョ ン幅とな り ます。 デュアル/クワ ッ ド SPI モードでは、 ト ランザクシ ョ ン幅は 8 ビッ トに制限されます。XIP モードでは、 スタンダード、 デュアル、 クワ ッ ド モードのいずれにおいても ト ランザクシ ョ ン幅は 8 ビットに制限されます。

• [Frequency Ratio] – 2 ~ 2,048 の範囲の分周値を 2 のべき乗で指定します。 ext_spi_clk 信号の周波数をこの値で分周したものが SPI ク ロ ッ ク周波数とな り ます。 レガシおよびエンハンス ト モードの場合、 デュアル/クワ ッド SPI モードでは分周値は 2 に制限されます。 XIP モードでは、 スタンダード、 デュアル、 クワ ッ ド モードのすべてで周波数比は 2 に制限されます。

• [No. of Slaves] – レガシまたはエンハンス ト モードで SPI スレーブ デバイスの数を 1 ~ 32 の範囲で選択します。XIP モードでは、 SPI スレーブ デバイスの数は 1 に制限されます。

• [Slave Device] – デュアル/クワ ッ ド SPI モードのスレーブ デバイスの種類を次の中から選択します。

° [Mixed] – Winbond、 Micron、 および Spansion メモ リ仕様に共通のコマンド セッ ト選択します。

° [Winbond] – Winbond 固有のメモ リ コマンド セッ ト を選択します。

° [Micron] – Micron 固有のメモ リ コマンド セッ ト を選択します。

° [Spansion] – Spansion 固有のメモ リ コマンド セッ ト を選択します。

XIP 以外のスタンダード SPI モードでは [Slave Device] パラ メーターは無視されます。 [Mode] で [Dual] または [Quad] を選択する と、 Vivado IDE に [Slave Device] オプシ ョ ンが表示されます。

その他のオプシ ョ ン

• [Enable Master Mode] – オンにする とマスター SPI モード、 オフにする とスレーブ SPI モードが有効になり ます。このパラ メーターはスタンダード SPI モードの場合のみ適用されます。 デュアル/クワ ッ ド SPI モードでは、 マスター SPI モード しかサポート されません。

• [Enable FIFO] – オンにする と送信/受信 FIFO がデザインに追加され、 オフにする と FIFO が省略されます。 このパラ メーターはスタンダード SPI モードの場合のみ適用されます。 デュアル/クワ ッ ド SPI モードでは、 FIFO が常にデザインに追加されます。

• [FIFO Depth] – FIFO の深さを 0、 16、 または 256 ビートから選択します。 スタンダード SPI モードの場合、 このパラ メーターは FIFO を追加した場合のみ適用されます。 デュアル/クワ ッ ド SPI モードでは、 FIFO 深さは 16 または 256 ビートに制限されます。 FIFO 幅は 8 ビッ トで固定です。

• [Enable STARTUPE2 Primitive] – オンにする と STARTUP プリ ミ ティブがデザインに追加され、 オフにする と省略されます。 7 シ リーズ FPGA には STARTUPE2 プリ ミ ティブがあ り、 UltraScale™ デバイスには STARTUPE3 プリ ミ ティブがあ り ます。 外部 SPI スレーブ デバイスと SPI ク ロ ッ クを共有する場合に使用します。 スレーブ モードのデバイスでは、 このプリ ミ ティブは常に無効です。

• [Enable Async Clock Mode] – このオプシ ョ ンは、 コアをスタンドアロン モードで使用し、 AXI インターフェイス ク ロ ッ ク と外部 SPI ク ロ ッ クの位相/極性および周波数が異なる場合のみオンにします。 このオプシ ョ ンは IP インテグレーターでは無効です。 このパラ メーターは、 コアに接続されたクロ ッ クに応じて自動的に伝搬します。AXI ク ロ ッ ク と ext_spi_clk が互いに同期している場合、 このパラ メーターは 0 に設定されます。 互いに非同期の場合は 1 に設定されます。

AXI Quad SPI v3.2 73

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

ユーザー パラメーター

表 4-1 に、 Vivado IDE のフ ィールド とユーザー パラ メーターの対応関係を示します。 ユーザー パラ メーターは Tcl コンソールで表示可能です。

出力の生成

詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] を参照してください。

表 4‐1: Vivado IDE のパラメーターとユーザー パラメーターの対応表

Vivado IDE のパラメーター /値 ユーザー パラメーター /値 デフォルト値

[Enable XIP Mode] C_XIP_MODE 0

[Enable Performance Mode] C_TYPE_OF_AXI4_INTERFACE 0

モード C_SPI_MODE 0

[Transaction Width] C_NUM_TRANSFER_BITS 8

[Frequency Ratio] C_SCK_RATIO 16

[Multiplying Factor] Multiples16 1

[No. of Slaves] C_NUM_SS_BITS 1

[Enable Master Mode] Master_mode 1

[Enable FIFO] FIFO_INCLUDED 1

[FIFO Depth] C_FIFO_DEPTH 16

[Enable STARTUP Primitive] C_USE_STARTUP 1

[Enable Async Clock Mode] Async_Clk 0

ID_WIDTH C_S_AXI4_ID_WIDTH 4

[SPI Flash Address Bits] C_SPI_MEM_ADDR_BITS 24

[Slave Device] C_SPI_MEMORY 1

注記:1. 未使用のスタート アップ ポート C_SHARED_STARTUP 0 を共有します。

2. IP 内部のスタート アップ C_USE_STARTUP_INT 0 を使用します。

AXI Quad SPI v3.2 74

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

コアへの制約

IP 固有の制約は、 コア生成時に出力されます。

必須の制約

「IP への制約」 で説明しているシステム レベルの制約を最上位の XDC ファ イルに追加する必要があ り ます。 記載した数値は仮のもので、 個々のデザインに応じて変更する必要があ り ます。

STARTUP を有効にする場合: STARTUP プリ ミ ティブを有効にする と、 AXI-QSPI の動作周波数に影響します。 このプ リ ミ ティブには固有の遅延があ り、 全体的なインプリ メンテーシ ョ ン/タイ ミ ング プロセスではこの遅延を考慮していません。

STARTUPE2 プリ ミ ティブは CCLK ピンの SCK の駆動に使用し、 STARTUPE3 プリ ミ ティブは SCK およびデータ ピンの駆動に使用します。

STARTUP プリ ミ ティブを使用する と、 SCK パスに追加される遅延によってクロ ッ ク とデータの関係が変化します。この遅延はデバイスおよびスピード グレードによ り異な り、 0.1ns ~ 7.5ns です。 この値は、 FPGA のデータシートに記載されています。

ツールではこの遅延が計測されないため、 計算では必ず最大遅延を考慮する必要があ り ます。 この遅延を CCLK_DELAY と呼ぶこ とにします。 K7-2 の場合、 この値は 0.5ns ~ 6.7ns とするこ とができます。 これがクロ ッ ク周波数に対する最初の制約となり ます。 動作周波数は Fmax1 = (1/CCLK_DELAY) MHz を超えるこ とはできません。

SPI への書き込み動作

SCK 比が 2 の場合、 書き込み動作は 2 ext_spi_clk ク ロ ッ ク サイクル以内に完了するのが正常です。

つま り :

• SCK の立ち上がりエッジは ext_spi_clk の 2 つのアクティブ エッジの間に現れる必要があ り ます。

• SCK の立ち上がりエッジは、 SPI デバイスの Tsetup および Thold タイムの要件を満たした位置に現れる必要があり ます。

• Tsetup の解析には、 SCK の最小遅延 (すなわち STARTUP の最小遅延)、 データパスの最大遅延、 およびボード配線遅延を考慮に入れる必要があ り ます。

• 同様に、 Thold の解析には、 SCK の最大遅延 (すなわち STARTUP の最大遅延)、 データの最小遅延、 およびボード配線遅延を考慮に入れる必要があ り ます。

この SPI デバイスの要件も、 IP の動作周波数に対する制約となり ます。

これに基づき、 2 つの数値が得られます。 Tsu に違反する Fmax、 および Th に違反する Fmax です。

Fmax2 = fn {STARTUP delay min, max datapath, board routing delay, Tsu}

Fmax3 = fn {STARTUP delay max, min datapath, board routing delay, Th}

この 2 つの値のうち、 よ り制約の大きい方を考慮する必要があ り ます。

AXI Quad SPI v3.2 75

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

読み出し動作

SCK 比が 2 の場合、 読み出し動作は SCK の立ち下がりエッジで開始した SPI データが ext_spi_clk の 2 番目の立ち上がりエッジでキャプチャされるのが正常です。 つま り 2 番目の立ち上がりエッジでキャプチャされる時点で安定したデータが存在している必要があ り ます。

ワース ト ケースは次の場合です。

• SCK のライン上の遅延が最大 (すなわち STARTUP の最大遅延)

• SPI がデータを駆動する際の Tco が最大

Fmax4 = fn {STARTUP delay max, Tco-max, board routing}

したがって、 Fmax2、 Fmax3、 および Fmax4 の中で最も制約の大きいものが実際の Fmax とな り ます。

IP への制約

制約の追加方法を理解するには、 AXI Quad SPI フラ ッシュ メモ リのクロ ッ クおよびデータ周辺のロジッ ク構造を理解しておく必要があ り ます。

次に、 ロジッ ク構造の図を示します。

注記: 『コンフ ィギュレーシ ョ ン後に UltraScale FPGA から STARTUPE3 を使用してパラレル NOR フラ ッシュ メモ リにアクセスする方法』 (XAPP1282) [参照 22] を参照してください。

STARTUP プリ ミ ティブによ り、 USRCCLKO と CCLK ピンの間に遅延が追加されます。 この遅延はツールでは考慮されず、 タイ ミ ング計算には含まれません。 ツールでは、 タイ ミ ング パスは USRCCLKO で終了します。

必要な制約を得るには、 STARTUP プリ ミ ティブの遅延を考慮する必要があ り ます。 タイ ミ ング パスは USRCCLKO で終わるため、 CCLK ピンに対するクロ ッ クを生成できません。

X-Ref Target - Figure 4-2

図 4‐2: ロジック構造

Q D

D Q

Fabric

CFG Logic

STARTUP

SPI Flash

Clock

USRCCLK0

DI[3:0]

DO[3:0]

CCLK

D[03:00]

AXI Quad SPI v3.2 76

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

SCK ク ロ ッ クをエミ ュレートするには、 STARTUP プリ ミ ティブ遅延を考慮に入れて生成クロ ッ クを作成する必要があ り ます。 そのためには、 USRCCLKO ピンに対して生成クロ ッ クを作成するよ うにします。

これによ り、 SCK を生成するフ リ ップフロ ップの遅延、 そのフ リ ップフロ ップから USRCCLKO ピンまでの配線遅延、 および STARTUP プリ ミ ティブの遅延を考慮に入れるこ とができます。 また、 SCK に対する遅延を抑えるためにフ リ ップフロ ップから USRCCLKO までの遅延をなるべく小さ くする必要があ り ます。 この制約は、set_max_delay によって与えるこ とができます。

次に、 データパスに対しては set_output_delay、 set_input_delay、 および set_multicyle_path 制約を使用して制約を与えるこ とができます。

1. STARTUPE3 (UltraScale) プリ ミ ティブを IP 内部に含める場合:

# You must provide all the delay numbers# CCLK delay is 0.1, 6.7 ns min/max for ultra-scale devices; refer Data sheet# Consider the max delay for worst case analysisset cclk_delay 6.7create_generated_clock -name clk_sck -source [get_pins -hierarchical *axi_quad_spi_0/ext_spi_clk] -edges {3 5 7} -edge_shift [list $cclk_delay $cclk_delay $cclk_delay] [get_pins -hierarchical *USRCCLKO]

set_multicycle_path -setup -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] 2set_multicycle_path -hold -end -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] 1set_multicycle_path -setup -start -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck 2set_multicycle_path -hold -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck 1

2. STARTUPE3 (UltraScale+) プリ ミ ティブを IP 内部に含める場合: UltraScale+ デバイスでは、 Vivado による STARTUPE3 のタイ ミ ングが異なり ます。 STARTUPE3 のタイ ミ ングのために、 いくつかの内部ピンがモデル化されており、 これらを使用してプリ ミ ティブのタイ ミ ングを決定できます。 次に、 UltraScale+ デバイスで使用可能な制約を示します。

set tdata_trace_delay_max 0.25set tdata_trace_delay_min 0.25set tclk_trace_delay_max 0.2set tclk_trace_delay_min 0.2create_generated_clock -name clk_sck -source [get_pins -hierarchical *axi_quad_spi_0/ext_spi_clk] [get_pins -hierarchical */CCLK] -edges {3 5 7}set_input_delay -clock clk_sck -max [expr $tco_max + $tdata_trace_delay_max + $tclk_trace_delay_max] [get_pins -hierarchical *STARTUP*/DATA_IN[*]] -clock_fall;set_input_delay -clock clk_sck -min [expr $tco_min + $tdata_trace_delay_min + $tclk_trace_delay_min] [get_pins -hierarchical *STARTUP*/DATA_IN[*]] -clock_fall;set_multicycle_path 2 -setup -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]]set_multicycle_path 1 -hold -end -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]]set_output_delay -clock clk_sck -max [expr $tsu + $tdata_trace_delay_max - $tclk_trace_delay_min] [get_pins -hierarchical *STARTUP*/DATA_OUT[*]];set_output_delay -clock clk_sck -min [expr $tdata_trace_delay_min -$th - $tclk_trace_delay_max] [get_pins -hierarchical *STARTUP*/DATA_OUT[*]];set_multicycle_path 2 -setup -start -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sckset_multicycle_path 1 -hold -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck

AXI Quad SPI v3.2 77

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

3. STARTUPE2 を有効にする場合:

STARTUPE2 に関する制約を使用します。

# You must provide all the delay numbers# CCLK delay is 0.5, 6.7 ns min/max for K7-2; refer Data sheet# Consider the max delay for worst case analysis

set cclk_delay 6.7# Following are the SPI device parameters# Max Tcoset tco_max 7# Min Tcoset tco_min 1

# Setup time requirementset tsu 2

# Hold time requirementset th 3

# Following are the board/trace delay numbers# Assumption is that all Data lines are matchedset tdata_trace_delay_max 0.25set tdata_trace_delay_min 0.25set tclk_trace_delay_max 0.2set tclk_trace_delay_min 0.2

### End of user provided delay numbers

# this is to ensure min routing delay from SCK generation to STARTUP input# User should change this value based on the results# having more delay on this net reduces the Fmax

set_max_delay 1.5 -from [get_pins -hier *SCK_O_reg_reg/C] -to [get_pins -hier *USRCCLKO] -datapath_onlyset_min_delay 0.1 -from [get_pins -hier *SCK_O_reg_reg/C] -to [get_pins -hier *USRCCLKO]

# Following command creates a divide by 2 clock# It also takes into account the delay added by STARTUP block to route the CCLK

create_generated_clock -name clk_sck -source [get_pins -hierarchical *axi_quad_spi_1/ext_spi_clk] [get_pins -hierarchical *USRCCLKO] -edges {3 5 7} -edge_shift [list $cclk_delay $cclk_delay $cclk_delay]

# Data is captured into FPGA on the second rising edge of ext_spi_clk after the SCK falling edge # Data is driven by the FPGA on every alternate rising_edge of ext_spi_clk

set_input_delay -clock clk_sck -max [expr $tco_max + $tdata_trace_delay_max + $tclk_trace_delay_max] [get_ports IO*_IO] -clock_fall;

set_input_delay -clock clk_sck -min [expr $tco_min + $tdata_trace_delay_min + $tclk_trace_delay_min] [get_ports IO*_IO] -clock_fall;

set_multicycle_path 2 -setup -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]]

AXI Quad SPI v3.2 78

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

set_multicycle_path 1 -hold -end -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]]

# Data is captured into SPI on the following rising edge of SCK# Data is driven by the IP on alternate rising_edge of the ext_spi_clk

set_output_delay -clock clk_sck -max [expr $tsu + $tdata_trace_delay_max - $tclk_trace_delay_min] [get_ports IO*_IO];set_output_delay -clock clk_sck -min [expr $tdata_trace_delay_min -$th - $tclk_trace_delay_max] [get_ports IO*_IO];

set_multicycle_path 2 -setup -start -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck set_multicycle_path 1 -hold -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck

STARTUP を無効にする場合:

# Following are the SPI device parameters# Max Tcoset tco_max 7# Min Tcoset tco_min 1

# Setup time requirementset tsu 2

# Hold time requirementset th 3

# Following are the board/trace delay numbers# Assumption is that all Data lines are matchedset tdata_trace_delay_max 0.25set tdata_trace_delay_min 0.25set tclk_trace_delay_max 0.2set tclk_trace_delay_min 0.2

### End of user provided delay numbers

create_generated_clock -name clk_sck -source [get_pins -hierarchical *axi_quad_spi_1/ext_spi_clk] [get_ports <SCK_IO>] -edges {3 5 7}

# Data is captured into FPGA on the second rising edge of ext_spi_clk after the SCK falling edge # Data is driven by the FPGA on every alternate rising_edge of ext_spi_clk

set_input_delay -clock clk_sck -max [expr $tco_max + $tdata_trace_delay_max + $tclk_trace_delay_max] [get_ports IO*_IO] -clock_fall;

set_input_delay -clock clk_sck -min [expr $tco_min + $tdata_trace_delay_min + $tclk_trace_delay_min] [get_ports IO*_IO] -clock_fall;

set_multicycle_path 2 -setup -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] set_multicycle_path 1 -hold -end -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]]

# Data is captured into SPI on the following rising edge of SCK

AXI Quad SPI v3.2 79

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

# Data is driven by the IP on alternate rising_edge of the ext_spi_clk

set_output_delay -clock clk_sck -max [expr $tsu + $tdata_trace_delay_max - $tclk_trace_delay_min] [get_ports IO*_IO];set_output_delay -clock clk_sck -min [expr $tdata_trace_delay_min -$th - $tclk_trace_delay_max] [get_ports IO*_IO];

set_multicycle_path 2 -setup -start -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck set_multicycle_path 1 -hold -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck

デュアル クワッ ド  モードの制約

デュアル クワ ッ ド モードでは、 STARTUPE3 プリ ミ ティブが有効になり ます。 2 つの SPI インターフェイスがあ り、1 つは STARTUPE3 ブロ ッ クに接続され、 も う 1 つは SPI1 (io0_1_、 io1_1_、 io2_1_、 io3_1_ および ss_1_* ポート ) に接続されます。

SPI_1 のポートには、 STARTUP を無効にした場合と同じ方法で制約を与えます。 その他の制約は、 STARTUP3 を有効にした場合と同じで、 UltraScale デバイス ファ ミ リの場合と UltraScale+ デバイス ファ ミ リの場合で異なり ます。UltraScale デバイスでは、 制約ファイルは次のよ うにな り ます。

# You must provide all the delay numbers# CCLK delay is 0.5, 6.7 ns min/max for K7-2; refer Data sheet# Consider the max delay for worst case analysisset cclk_delay 6.7# Following are the SPI device parameters# Max Tcoset tco_max 7# Min Tcoset tco_min 1# Setup time requirementset tsu 2# Hold time requirementset th 3# Following are the board/trace delay numbers# Assumption is that all Data lines are matchedset tdata_trace_delay_max 0.25set tdata_trace_delay_min 0.25set tclk_trace_delay_max 0.2set tclk_trace_delay_min 0.2### End of user provided delay numberscreate_generated_clock -name clk_sck -source [get_pins -hierarchical *axi_quad_spi_0/ext_spi_clk] -edges {3 5 7} -edge_shift [list $cclk_delay $cclk_delay $cclk_delay] [get_pins -hierarchical *startup*/*usrcclko]set_multicycle_path -setup -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] 2set_multicycle_path -hold -end -from clk_sck -to [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] 1set_multicycle_path -setup -start -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck 2set_multicycle_path -hold -from [get_clocks -of_objects [get_pins -hierarchical */ext_spi_clk]] -to clk_sck 1#create_generated_clock -name clk_sck -source [get_pins -hierarchical *axi_quad_spi_1/ext_spi_clk] [get_ports <SCK_IO>] -edges {3 5 7}# Data is captured into FPGA on the second rising edge of ext_spi_clk after the SCK falling edge# Data is driven by the FPGA on every alternate rising_edge of ext_spi_clk

AXI Quad SPI v3.2 80

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

set_input_delay -clock clk_sck -max [expr $tco_max + $tdata_trace_delay_max + $tclk_trace_delay_max] [get_ports IO*_1_IO] -clock_fall;set_input_delay -clock clk_sck -min [expr $tco_min + $tdata_trace_delay_min + $tclk_trace_delay_min] [get_ports IO*_1_IO] -clock_fall;# Data is captured into SPI on the following rising edge of SCK# Data is driven by the IP on alternate rising_edge of the ext_spi_clkset_output_delay -clock clk_sck -max [expr $tsu + $tdata_trace_delay_max - $tclk_trace_delay_min] [get_ports IO*_1_IO];set_output_delay -clock clk_sck -min [expr $tdata_trace_delay_min - $th - $tclk_trace_delay_max] [get_ports IO*_1_IO];

デバイス、 パッケージ、 スピード  グレードの選択

このセクシ ョ ンは、 この IP コアには適用されません。

クロック周波数

このセクシ ョ ンは、 この IP コアには適用されません。

クロック管理

このセクシ ョ ンは、 この IP コアには適用されません。

クロック配置

このセクシ ョ ンは、 この IP コアには適用されません。

バンク設定

このセクシ ョ ンは、 この IP コアには適用されません。

ト ランシーバーの配置

このセクシ ョ ンは、 この IP コアには適用されません。

I/O 規格と配置

このセクシ ョ ンは、 この IP コアには適用されません。

AXI Quad SPI v3.2 81

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 4 章:デザイン フローの手順

シ ミ ュレーシ ョ ン

Vivado Design Suite のシ ミ ュレーシ ョ ン コンポーネン トについて、またサポート されているサードパーティ ツールについては、 『Vivado Design Suite ユーザー ガイ ド : ロジッ ク シ ミ ュレーシ ョ ン』 (UG900) [参照 7] を参照してください。

サンプル デザインのシ ミ ュレーシ ョ ン方法は、 第 5 章の 「サンプル デザインのシ ミ ュレーシ ョ ン」 を参照してください。

重要: 7 シ リーズ FPGA または Zynq-7000 デバイスをターゲッ トにしたコアでは、 UNIFAST ライブラ リはサポート されません。 ザイ リ ンクスの IP は UNISIM ラ イブラ リでのみテス ト と認定が行われています。

合成およびインプリ メンテーシ ョ ン

合成およびインプ リ メンテーシ ョ ンの詳細は、 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896) [参照 2] を参照して ください。

サンプル デザインの合成およびインプリ メンテーシ ョ ンに関する詳細は、 「サンプル デザインのインプリ メンテーシ ョ ン」 を参照してください。

AXI Quad SPI v3.2 82

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5章

サンプル デザインこの章では、 Vivado® Design Suite で提供されているサンプル デザインについて説明します。

概要

最上位モジュールは、 このコアおよびサンプル デザインをハード ウェアに実装するために必要なすべてのコンポーネン ト をインスタンシエート しています (図 5-1)。 これには、 ク ロ ッ ク ジェネレーター (MMCME2)、 レジスタ設定モジュール、 読み出しデータ チェッカー、 およびスレーブが含まれます。

X-Ref Target - Figure 5-1

図 5‐1:サンプル デザインのブロック図

DUT

RegisterConfiguration

ClockGenerator

Read Data Checker

Clk_p

Clk_n

Reset

Status

<Component_name>_exdes.vhdTOP MODULE

X13762

SPI Interface toSlave

AXI Quad SPI v3.2 83

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5 章:サンプル デザイン

このサンプル デザインでは、 AXI Quad SPI コアをさまざまにコンフ ィギュレーシ ョ ンして ト ランザクシ ョ ンを評価できます。 各種モードにコンフ ィギュレーシ ョ ンして、 AXI Quad SPI からスレーブ メモ リに対する読み出しおよび書き込みト ランザクシ ョ ンを確認できます。

• ク ロ ッ ク ジェネレーター : サンプル デザインに対するクロ ッ クは、 MMCME2 で生成します。 これによ り、 サンプル デザインで使用する DUT (テス ト対象デバイス) およびその他のモジュールに対する 200MHz ク ロ ッ クを生成します。 サンプル デザインの DUT は MMCME2 がロ ッ クするまで リセッ ト状態のままです。

• レジスタ設定モジュール: DUT およびその他のモジュールの内部レジスタは、 AXI Traffic Generator を使用して設定します (62 ページの 「スタンダード SPI モードの ト ランザクシ ョ ン」 参照)。 レジスタの最初のコンフ ィギュレーシ ョ ンのデータ シーケンスが AXI ト ランザクシ ョ ンと して AXI Quad SPI に送信された後、 AXI Quad SPI コアはこのデータに対する SPI ト ランザクシ ョ ンを生成し、 接続されたスレーブ メモ リにに書き込みます。

• 読み出しデータ チェッカー : AXI Traffic Generator は、 AXI Quad SPI コアに対してコマンドを生成して接続したスレーブ メモ リからデータを読み出すよ うに要求し、 書き込んだデータが正し く読み出されるかを確認します。

• スレーブ: 付属のメモ リ モデルは Winbond、 Micron、 および Spansion 製フラ ッシュの動作を模しており、 AXI Quad SPI コアをマスター モードにした場合はこのメモ リ モデルをスレーブ メモ リ と して使用します。

スレーブ モードの場合、 AXI Quad SPI コアは内部でマスターと してインスタンシエート され、 スレーブ動作を示します。

重要: STARTUPEn ブロ ッ クを有効にした場合、 サンプル デザインはサポート されません。

サンプル デザインのインプリ メンテーシ ョ ン

第 4 章 「コアのカスタマイズおよび生成」 で説明した手順を実行後、 次の手順に従ってサンプル デザインを実装します。

1. [Hierarchy] ペインでコアを右ク リ ッ ク し、 [Open IP Example Design] をク リ ッ ク します。

新規ウ ィンド ウが開きます。 サンプル デザインのデフォルトのディ レク ト リ をそのまま使用するか、 新しいディ レク ト リ名を指定します。

選択したディ レク ト リに新しいプロジェク トが作成され、新しい Vivado ウ ィンド ウでプロジェク トが開きます。

2. Flow Navigator (左側のペイン) で [Run Implementation] をク リ ッ ク し、 指示に従います。

現在のプロジェク ト ディレク ト リに、 新規プロジェク ト <component_name>_example が作成されます。 AXI Quad SPI のサンプル デザイン作成に必要なソース ファ イルは、 すべてこのディ レク ト リ とそのサブディ レク ト リにあ り ます。

表 5-1 に、 生成されるデザイン ファ イルを示します。

表 5‐1:サンプル デザインのディレク ト リ

名前 説明

<component_name>_exdes.vhd サンプル デザインの最上位 HDL ファ イル。

memory.vhd XIP モードで使用する メモ リ モデル。

memory_model.vhd その他のモードで使用する メモ リ モデル。

AXI Quad SPI v3.2 84

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5 章:サンプル デザイン

表 5-2 に、 データ送信用に生成される COE ファ イルを示します。

表 5-3 に、 生成されるテス トベンチ ファ イルを示します。

表 5-4 に、 生成される制約ファイルを示します。

このサンプル デザインは KC705 ボード上で検証されています。 exdes.xdc ファ イルにはボード制約も記述していますが、 デフォルトでコ メン ト アウ ト しています。

重要: このボード上でテス ト をする際はピン制約のコ メン ト をはずして ください。

表 5‐2: COE デザイン ディレク ト リ

名前 説明

qspi_addr_*.coe AXI Traffic Generator にアドレス情報を提供します。

qspi_data_*.coe AXI Traffic Generator にデータ情報を提供します。

qspi_ctrl_*.coe AXI Traffic Generator に制御情報を提供します。

qspi_mask_*.coe AXI Traffic Generator にマスク情報を提供します。

init_data_coe BMG に対する初期化データ。

注記:1. * には 1 ~ 3 の数字が入り、 各ファ イルがそれぞれの AXI Traffic Generator に対応します。

表 5‐3: Simulation ディレク ト リ

名前 説明

<component_name>_exdes_tb.vhd Exdes 用テス トベンチ。

表 5‐4: Constraints ディレク ト リ

名前 説明

exdes.xdc サンプル デザインの最上位制約ファイルです。

AXI Quad SPI v3.2 85

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5 章:サンプル デザイン

KC705 ボード上でのサンプル デザインのテスト

KC705 ボード上でサンプル デザインをテス トするには、 次の手順を実行します。

1. Vivado 統合設計環境 (IDE) を使用してコアをスタンドアロン モードでコンフ ィギュレーシ ョ ンします。

2. サンプル デザインをインプリ メン ト します。

3. インプ リ メンテーシ ョ ンを選択してビッ ト ス ト リームを生成し、 ビッ ト ス ト リーム オプシ ョ ンを生成します。

ト ランザクシ ョ ンのステータス (Done など) は F16 に表示されます。E18 および G19 ピンは AXI Traffic Generator コアのステータスを示します。 これらピンの詳細は、 exdes_xdc.ttcl ファ イルを参照してください。exdes_xdc.ttcl ファ イルを使用する前に、 LOC 制約のコ メン ト をはずすこ とが必要な場合もあ り ます。 詳細は、90 ページの 「結果の確認」 を参照してください。

スレーブ SPI と して外部メモ リ を使用するため、 このサンプル デザインはボード上ではサポート されません。 FPGA のメモ リ モデルを使用してビッ ト ス ト リームをテス トできます。

重要: コアの動作を確認する場合、パラ メーターの組み合わせは Vivado IDE のオプシ ョ ンで設定する必要があ り ます。

ビルト イン メモ リ モデルがターゲッ ト スレーブと して使用されます。 このメモ リ モデルと コアは事前定義済みのコマンド、 アドレス、 およびデータでコンフ ィギュレーシ ョ ンされます。 サンプル デザインのシ ミ ュレーシ ョ ンを有効にした場合、 モデルと コアの両方がデータを交換します。

レガシおよびパフォーマンス モードのサンプル デザインの動作

スタンダード SPI モードおよびデュアル/クワ ッ ド SPI モードの場合、 コアと メモ リ モデルには事前定義済みのコマンドがあ り ます。 デザインで FIFO を有効にした場合、 スタンダード ページ プログラム コマンド (0x02h) を使用してメモ リ モデルにデータを書き込みます。 メモ リ モデルからの読み出しに使用するコマンドは、 コアの SPI モードに応じて選択されます。

XIP モードのサンプル デザインの動作

XIP モードでは、 コアは選択したモードに応じて内蔵のコマンドを使用します。 メモ リ モデルには事前定義済みのデータがあ り、 ト ランザクシ ョ ンを開始する と このデータがコアによって読み出されます。

AXI Quad SPI v3.2 86

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5 章:サンプル デザイン

サンプル デザインのシミ ュレーシ ョ ン

AXI Quad SPI コアに付属するサンプル デザインを使用する と、 コアの動作を簡単にシ ミ ュレーシ ョ ンして観察できます。

シミ ュレーシ ョ ンの設定

ザイ リ ンクス シ ミ ュレーシ ョ ン ライブラ リ をシ ミ ュレータにマップする必要があ り ます。 ザイ リ ンクス シ ミ ュレーシ ョ ン モデルの設定方法の詳細は、 『Vivado Design Suite ユーザー ガイ ド : ロジッ ク シ ミ ュレーシ ョ ン』 (UG900) [参照 7] を参照してください。 シ ミ ュレータを変更するには、 画面左側の Flow Navigator で [Simulation Settings] をクリ ッ ク します。 [Simulation] ページで [Target Simulator] の設定を変更します。

サンプル デザインでは、 論理 (ビヘイビアー ) シ ミ ュレーシ ョ ンと合成後のシ ミ ュレーシ ョ ンが可能です。 シ ミ ュレーシ ョ ン実行方法の詳細は、 『Vivado Design Suite ユーザー ガイ ド : ロジッ ク シ ミ ュレーシ ョ ン』 (UG900) [参照 7] を参照してください。

シ ミ ュレーシ ョ ン結果

シ ミ ュレーシ ョ ン スク リプ トは、 まず AXI Quad SPI サンプル デザインおよび関連するシ ミ ュレーシ ョ ン ファ イルをコンパイルします。 次にシ ミ ュレーシ ョ ンを実行し、 テス トにパスするかど うかを確認します。

テス トにパスする と、 次のメ ッセージが表示されます。

Test Completed Successfully

テス トがハングする と、 次のメ ッセージが表示されます。

Test Hanged

テス トに失敗する と、 次のメ ッセージが表示されます。

Test Failed.

AXI Quad SPI v3.2 87

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5 章:サンプル デザイン

プログラム シーケンスの例

マスター モードでの SPI ト ランザクシ ョ ンは、 SPI コアに接続されたスレーブ デバイスによってサポート されるコマンドによって決ま り ます。 サポート されるコマンドおよびモード (スタンダード /デュアル/クワ ッ ド ) については、使用する SPI スレーブ デバイスのデータシート を参照してください。 こ こでは、 SPI フラ ッシュに対する消去、 書き込み、 および読み出しコマンド シーケンスの手順について簡単に説明します。

注記: [1] フラ ッシュに対する書き込みト ランザクシ ョ ン (消去/フラ ッシュに対するデータ書き込み/フラ ッシュのレジスタ書き込み) コマンドの前には、 書き込みイネーブル コマンドを発行する必要があ り ます。

注記: [2] 次に示すプログラ ミ ング シーケンスは、 フラ ッシュのアドレス モードが 24 ビッ ト モードで、 AXI QUAD SPI コアにスレーブが 1 つのみ接続されている場合のものです。

書き込みイネーブル コマンドのシーケンス

1. SPICR (60h) の Master Transaction Inhibit ビッ ト をアサート してマスター ト ランザクシ ョ ンを無効にし、 SPICR で受信 FIFO と送信 FIFO を リセッ ト します。

例: SPICR に 0x1E6 を書き込む。

2. SPI DTR に 0x06 を書き込んで書き込みイネーブル コマンドを発行します。

3. SPISSR (70h) に 0x00 を書き込んでチップ セレク ト を発行します。

4. SPICR の Master Transaction Inhibit ビッ ト をディアサート してマスター ト ランザクシ ョ ンを有効にします。

5. SPISSR に 0x01 を書き込んでチップセレク ト をディアサート します。

6. SPICR の Master Transaction Inhibit ビッ ト をアサート してマスター ト ランザクシ ョ ンを無効にします。

消去コマンドのシーケンス

1. SPICR で受信 FIFO と送信 FIFO を リセッ ト します。

2. SPI DTR にセクター消去コマンド (1) を発行してフラ ッシュ セクター アドレス以降のセクターを消去するか、 バルク消去コマンド (1) を発行してフラ ッシュ ベース アドレス以降のフラ ッシュ全体を消去します。

例: SPI DTR に 0xD8 を書き込む。

3. SPISSR に 0x00 を書き込んでチップ セレク ト を発行します。

4. SPICR の Master Transaction Inhibit ビッ ト をディアサート してマスター ト ランザクシ ョ ンを有効にします。

5. SPISSR に 0x01 を書き込んでチップセレク ト をディアサート します。

6. SPICR の Master Transaction Inhibit ビッ ト をアサート してマスター ト ランザクシ ョ ンを無効にします。

AXI Quad SPI v3.2 88

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 5 章:サンプル デザイン

データ書き込みコマンドのシーケンス

1. SPICR で受信 FIFO と送信 FIFO を リセッ ト します。

2. SPI DTR にデータ書き込みコマンド (1) (2) を発行して、フラ ッシュ セクター アドレス以降のセクターにデータを書き込みます。

3. フラ ッシュに書き込むデータを SPI DTR に格納します。 最大データ サイズは QSPI の FIFO サイズ設定によ り異なり ます。

4. SPISSR に 0x00 を書き込んでチップ セレク ト を発行します。

5. SPICR の Master Transaction Inhibit ビッ ト をディアサート してマスター ト ランザクシ ョ ンを有効にします。

6. SPISSR に 0x01 を書き込んでチップセレク ト をディアサート します。

7. SPICR の Master Transaction Inhibit ビッ ト をアサート してマスター ト ランザクシ ョ ンを無効にします。

データ読み出しコマンドのシーケンス

1. SPICR で受信 FIFO と送信 FIFO を リセッ ト します。

2. SPI DTR にデータ読み出しコマンド (1) (2) を発行して、フラ ッシュ セクター アドレス以降のセクターからデータを読み出します。

3. SPI DTR にダ ミー データを格納して、 フラ ッシュから必要なデータを読み出します。

4. SPISSR (70h) に 0x00 を書き込んでチップ セレク ト を発行します。

5. SPICR の Master Transaction Inhibit ビッ ト をディアサート してマスター ト ランザクシ ョ ンを有効にします。

6. SPISSR に 0x01 を書き込んでチップセレク ト をディアサート します。

7. SPICR の Master Transaction Inhibit ビッ ト をアサート してマスター ト ランザクシ ョ ンを無効にします。

8. SPI DRR を読み出し、 SPI バスから受信した読み出しデータを取得します。

1. 発行するコマンドの詳細は、 使用する SPI スレーブ (フラ ッシュ ) のデータシート を参照して ください。

2. 書き込み/読み出しコマンドは、 使用するモード (スタンダード、 デュアル、 クワ ッ ド ) によ り異な り ます。

AXI Quad SPI v3.2 89

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 6章

テストベンチこの章では、 Vivado® Design Suite で提供されているテス トベンチについて説明します。

概要

図 6-1 に、 AXI Quad SPI サンプル デザインのテス トベンチを示します。 最上位のテス トベンチは 200MHz のクロ ックを生成し、 サンプル デザインに対する最初のリセッ ト信号を駆動します。

X-Ref Target - Figure 6-1

図 6‐1: AXI Quad SPI サンプル デザインのテストベンチ

top_tb

Clock and Reset Generation

<componentname>_exdes.vhd(top)

Test Status

clock_in

reset

done

status

X13763

Slave Model

SPI Interfaceto Slave

AXI Quad SPI v3.2 90

PG153 2019 年 7 月 8 日 japan.xilinx.com

第 6 章: テストベンチ

結果の確認

AXI Quad SPI サンプル デザインはスレーブ デバイスに少量のデータを書き込みます。 その後、 リードバッ クを実行して書き込んだデータ と読み出したデータを比較します。 テス ト ケースの結果に関する情報は、 信号ステート を使用して伝達します。

• ステータス [1:0] でテス トの結果 (成功、 失敗、 またはハング) を示します。

01 - テス ト成功。 書き込んだデータ と読み出したデータが一致したこ とを示します。

10 - テス ト失敗。 書き込んだデータ と読み出したデータが一致しなかったこ とを示します。

11 - テス ト ハング。 何らかの命令でコアがハングしたこ とを示します。

• ステータス [9:2] は、 テス ト停止位置の MIF インデッ クスを示します。

注記: テス トが完了する と Done 信号が High になり ます。

AXI Quad SPI v3.2 91

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 A

検証、 準拠性、 相互運用性表 A-1 に、 AXI Quad SPI コアの検証とバリデーシ ョ ンに使用したデバイスの製品番号を示します。

表 A‐1:検証とバリデーシ ョ ンに使用したデバイスの製品番号

デバイス バリデーシ ョ ン 検証

Micron

N25Q256A33E なし あ り

N25Q256A31E なし あ り

N25Q256A13E なし あ り

N25Q256A11E なし あ り

N25Q032A13E なし あ り

N25Q032A11E なし あ り

N25Q256A83E なし あ り

N25Q256A73E なし あ り

N25Q128A11E なし あ り

N25Q128A11B なし あ り

N25Q128A13E なし あ り

N25Q128A13B あ り あ り

Spansion

S25FL512S なし あ り

S70FL01GS あ り あ り

Winbond

W25Q80BL なし あ り

W25Q80BV なし あ り

W25Q80BW なし あ り

W25Q80DL なし あ り

W25Q80DV なし あ り

W25Q80EW なし あ り

W25Q80V なし あ り

注記:1. Micron MT25Q デバイス とバリデーシ ョ ン済み N25Q デバイスの互換性については、 『Technical Note: Micron N25Q to Micron

MT25Q Migration』 [参照 21] を参照してください。

AXI Quad SPI v3.2 92

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 B

アップグレードこの付録には、 ISE® から Vivado® Design Suite へデザインを移行する際の情報、 および最新版 IP コアへのアップグレードに関する情報が記載されています。 Vivado Design Suite でアップグレードする場合のポート変更およびユーザー ロジッ クへの影響といった重要な情報もこ こに記載されています。

Vivado Design Suite への移行

Vivado Design Suite への移行方法については、 『ISE から Vivado Design Suite への移行ガイ ド』 (UG911) [参照 8] を参照してください。

Vivado Design Suite でのアップグレード

マスター SPI モードを選択した場合、 SPISEL ポートは外部に現れません。 マスター モードでは、 このポートは内部で VCC に駆動されます。 スレーブ SPI モードの場合はこのポート をほかの SPI マスターのスレーブ選択ポートに接続する必要があ り ます。

デュアル クワ ッ ド モードのみで使用する I/O ポートがいくつか追加されています。 詳細は、 表 2-2 (特に 18 および 19 ページ) を参照して ください。

AXI Quad SPI v3.2 93

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 C

デバッグこの付録では、 ザイ リ ンクス サポート ウェブサイ ト よ り入手可能な リ ソースおよびデバッグ ツールについて説明します。

ザイリンクス ウェブサイ ト

AXI Quad SPI コアを使用した設計およびデバッグでヘルプが必要な場合は、 ザイ リ ンクス サポート ウェブ ページから製品の資料、 リ リース ノート、 アンサーなどを参照するか、 テクニカル サポートでサービス リ クエス ト を作成してください。

資料

この製品ガイ ドは、 AXI Quad SPI コアに関する主要資料です。 このガイ ド、 並びに設計プロセスで使用する各製品の関連資料はすべて、 ザイ リ ンクス サポート ウェブ ページ (https://japan.xilinx.com/support) またはザイ リ ンクス Documentation Navigator から入手できます。

ザイ リ ンクス Documentation Navigator は、 ダウンロード ページからダウンロードできます。 このツールの詳細および機能は、 インス トール後にオンライン ヘルプを参照してください。

アンサー

アンサーには、 よ く発生する問題についてその解決方法、 およびザイ リ ンクス製品に関する既知の問題などの情報が記載されています。 アンサーは、 ユーザーが該当製品の最新情報にアクセスできるよ う作成および管理されています。

このコアのアンサーを下に示します。 また、 ザイ リ ンクス サポート ウェブ ページからも検索できます。 よ り的確な検索結果を得るには、 次のよ うなキーワードを使用してください。

• 製品名

• ツールに表示される メ ッセージ

• 問題の概要

検索結果は、 フ ィルター機能を使用してさ らに絞り込むこ とができます。

AXI Quad SPI コアのマスター アンサー レコードは、 ザイ リ ンクス アンサー 54408 を参照してください。

AXI Quad SPI v3.2 94

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 C:デバッグ

テクニカル サポート

ザイ リ ンクスは、 製品資料の説明に従って使用されている LogiCORE™ IP 製品に対するテクニカル サポート をザイリ ンクス サポート ウェブ ページで提供しています。 ただし、 次のいずれかに該当する場合、 タイ ミ ング、 機能、 サポートは保証されません。

• 資料で定義されていないデバイスにソ リ ューシ ョ ンをインプリ メン ト した場合。

• 資料で定義されている許容範囲を超えてカスタマイズした場合。

• 「DO NOT MODIFY」 と されているデザイン セクシ ョ ンに変更を加えた場合。

ザイ リ ンクス テクニカル サポートへのお問い合わせは、 ザイ リ ンクス サポート ウェブ ページを参照してください。

Vivado Design Suite のデバッグ機能

Vivado® Design Suite のデバッグ機能は、Logic Analyzer および Virtual I/O コアをユーザー デザインに直接挿入します。デバッグ機能を使用する と、 ト リガー条件を設定して、 アプリ ケーシ ョ ンおよび統合ブロッ クのポート信号をハード ウェアに取り込むこ とができます。 取り込まれた信号は、 その後解析できます。 Vivado IDE のこの機能は、 ザイリ ンクス デバイスで実行されるデザインの論理デバッグおよび検証に使用されます。

Vivado ロジッ ク解析は次の IP ロジッ ク デバッグ コアと共に使用されます。

• ILA 2.0 (およびそれ以降のバージ ョ ン)

• VIO 2.0 (およびそれ以降のバージ ョ ン)

いくつかの内部信号はデバッグ信号と してマーク されています。 これらは簡単にロジッ ク解析に追加できます。

詳細は、 『Vivado Design Suite ユーザー ガイ ド : プログラムおよびデバッグ』 (UG908) [参照 9] を参照してください。

ハードウェア デバッグ

ハードウェアの問題は、 リ ンク立ち上げ時の問題から、 テス ト後に生じる問題までさまざまです。 こ こでは、 一般的な問題のデバッグ手順を説明します。 Vivado Design Suite のデバッグ機能は、 ハード ウェア デバッグに有益な リソースです。

1. SPI インターフェイスのハード ウェア デバッグには、 Vivado ロジッ ク アナライザーを使用します。

2. すべての SPI インターフ ィ ス ポート (SS、 SCK、 IO0、 IO1、 およびクワッ ド モードの場合は IO2、 IO3) にロジッ ク アナライザーのポート を接続します。

3. AXI インターフェイスで ト ランザクシ ョ ンを生成し、 スレーブ選択ラインがアサート されるかど うか、 および SPI ク ロ ッ クが存在するかど うかを観察します。

4. コアからのデータがセッ ト アップおよびホールド タイムの要件を十分に満たしているかど うかを観察します。

AXI Quad SPI v3.2 95

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 C:デバッグ

インターフェイスのデバッグ

AXI4‐Lite インターフェイス

デフォルトがすべて 0 でないレジスタから読み出して、 インターフェイスが機能しているこ とを確認します。 読み出しアドレスが有効になる と出力 s_axi_arready がアサート され、 読み出しデータ /応答が有効になる と出力 s_axi_rvalid がアサート されます。 インターフェイスが応答しない場合は、 次を確認します。

• s_axi_aclk および aclk 入力が接続されており、 ト グルしているこ とを確認します。

• インターフェイスが リセッ ト状態に保持されておらず、 s_axi_areset がアクティブ Low のリセッ トであることを確認します。

• シ ミ ュレーシ ョ ンが実行されている場合はシ ミ ュレーシ ョ ン、 または Vivado Design Suite のデバッガーのキャプチャ機能を使用して、 波形が AXI4-Lite インターフェイスへのアクセスに適しているこ とを確認します。

• コアは AXI 読み出し ト ランザクシ ョ ンと AXI 書き込みト ランザクシ ョ ンを同時に受信するこ とはできません。

AXI4 インターフェイス

AXI Quad SPI コアは、 エンハンス ト モード と XIP モードで AXI4 インターフェイスをサポート します。

• エンハンス ト モードでは、 データ送信およびデータ受信 FIFO のアドレスに対して FIXED タイプの AXI4 ト ランザクシ ョ ンのみがサポート されます。 それ以外の AXI4 ト ランザクシ ョ ンはサポート されておらず、 コアの動作は保証されません。

• XIP モードではすべての AXI4 ト ランザクシ ョ ンがサポート されます。 32 ビッ ト AXI4 ト ランザクシ ョ ンを使用するこ とを推奨します。 次に、 デバッグに関する注意点を示します。

エンハンスト  モードのデバッグ

1. ク ロ ッ クが s_axi4_aclk ポートに接続されているこ とを確認します。

2. アクティブ Low の reset 信号が s_axi4_aresetn ポートに接続されているこ とを確認します。 コアを確実に動作状態にするためにはリセッ ト を非アクティブにする必要があ り ます。

3. すべてのレジスタには、 シングル AXI ト ランザクシ ョ ンを使用してワード境界でアクセスする必要があ り ます。

4. DTR および DRR FIFO には、シングル ト ランザクシ ョ ンまたは FIXED タイプのバース ト ト ランザクシ ョ ンでアクセスできます。

5. AXI4 ト ランザクシ ョ ンは bus2ip_* 信号のト ランザクシ ョ ンで変換されます。

6. SPI ト ランザクシ ョ ンを開始するには、 DTR FIFO にデータ ビートが格納されている必要があ り ます。 SPI ト ランザクシ ョ ンは SPICR レジスタを設定した場合のみ有効になり ます。 スレーブ レジスタを更新して特定のスレーブを選択する必要があ り ます。 SPI ト ランザクシ ョ ンは SPI インターフェイス (スレーブ選択、 SPI ク ロ ック、 IO0、 IO1 など) で観察できます。

7. スレーブ選択ラインはすべての SPI ト ランザクシ ョ ンでアサートする必要があ り ます。

AXI Quad SPI v3.2 96

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 C:デバッグ

XIP モードのデバッグ

1. すべてのクロ ッ クおよびリセッ ト信号が AXI インターフェイスに正し く接続されているこ とを確認します。

2. このモードでは、 コアは FIXED、 WRAP、 および INCR を含むすべての AXI4 ト ランザクシ ョ ンをサポート します。 32 ビッ ト AXI ト ランザクシ ョ ンを使用するこ とを推奨します。 XIP モードでは、 コアは読み出し専用モードで動作します。

3. ダウンス ト リーム デバイスがサポートするアドレス ビッ ト数に応じて、 Vivado 統合設計環境 (IDE) で 24 ビッ トまたは 32 ビッ ト アドレス モードを選択します。 この設定に基づき、 コアは AXI4 アドレス ト ランザクシ ョ ンを 24 ビッ ト または 32 ビッ ト と見なします。

4. 選択した SPI モードに基づき、 コアは適切な SPI 読み出しコマンドを選択し、 ダ ミー サイクルを追加した後、 メモ リから正しいデータ ビッ ト を受信します。

5. SPI ト ランザクシ ョ ンはスレーブ選択ラインがアサート されている SPI インターフェイスで観察されます。 SPI ク ロ ッ クはコアによって生成されます。

6. データを取得する と、 コアは内部 FIFO 経由でデータを AXI4 読み出しチャネルに供給します。

AXI Quad SPI v3.2 97

PG153 2019 年 7 月 8 日 japan.xilinx.com

付録 D

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

ザイリンクス リソース

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

参考資料

次の資料は、 この製品ガイ ドの補足資料と して役立ちます。

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

1. 『UltraScale アーキテクチャ ライブラ リ ガイ ド』 (UG974: 英語版、 日本語版)

2. 『Vivado Design Suite ユーザー ガイ ド : IP を使用した設計』 (UG896: 英語版、 日本語版)

3. 『Vivado Design Suite: AXI リ ファレンス ガイ ド』 (UG1037: 英語版、 日本語版)

4. 『AMBA AXI4-Stream Protocol Specification』 (Arm IHI 0051A)

5. 『Vivado Design Suite ユーザー ガイ ド : IP インテグレーターを使用した IP サブシステムの設計』 (UG994: 英語版、日本語版)

6. 『Vivado Design Suite ユーザー ガイ ド : 入門』 (UG910: 英語版、 日本語版)

7. 『Vivado Design Suite ユーザー ガイ ド : ロジッ ク シ ミ ュレーシ ョ ン』 (UG900: 英語版、 日本語版)

8. 『ISE から Vivado Design Suite への移行ガイ ド』 (UG911: 英語版、 日本語版)

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

10. 『Motorola M68HC11-Rev. 4.0 Reference Manual』

11. 『Motorola MPC8260 PowerQUICC II Users Manual 4/1999 Rev. 0』

12. 『AXI4-Lite IPIF LogiCORE IP 製品ガイ ド』 (PG155)

13. 『AXI Interconnect LogiCORE IP 製品ガイ ド』 (PG059)

14. Winbond メモ リ データシート (W25Q64BV)

15. Micron メモ リ データシート (N25Q256-3v)

16. 『7 シ リーズ FPGA データシート : 概要』 (DS180: 英語版、 日本語版)

17. 『7 シ リーズ FPGA コンフ ィギュレーシ ョ ン ユーザー ガイ ド』 (UG470: 英語版、 日本語版)

18. 『Vivado IP インテグレーターで AXI Quad SPI を XIP (eXecute-in-Place) モードに設定して使用』 (XAPP1176: 英語版、 日本語版)

19. 『スループッ ト性能の測定』 (XAPP797: 英語版、 日本語版)

20. 『Vivado Design Suite ユーザー ガイ ド : インプリ メンテーシ ョ ン』 (UG904: 英語版、 日本語版)

AXI Quad SPI v3.2 98

PG153 2019 年 7 月 8 日 japan.xilinx.com

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

21. 『Technical Note: Micron N25Q to Micron MT25Q Migration』 (TN-25-01)

22. 『コンフ ィギュレーシ ョ ン後に UltraScale FPGA から STARTUPE3 を使用してパラレル NOR フラ ッシュ メモ リにアクセスする方法』 (XAPP1282: 英語版、 日本語版)

改訂履歴

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

日付 バージョ ン 内容

2019 年 7 月 8 日 3.2 表 3-3 を更新。

2018 年 4 月 4 日 3.2 • 「デュアル クワ ッ ド モードの制約」 を追加。

• 各種デバイスでサポート されるコマンドを更新。

• [FIFO Depth] の値を更新。

• 1 バイ ト コマンド モードのみのサポートに関する注記を追加。

2017 年 4 月 5 日 3.2 • UltraScale+ デバイスの XDC を更新。

2016 年 10 月 05 日 3.2 • 「IP の概要」 の表の注記 2 で SDK のディ レク ト リ を更新。

• 「レジスタ空間」 の冒頭に AXI4-Lite 書き込みアドレス レジスタに関する注記を追加。

• を追加。

• 第 1 章 「概要」 に 「デュアル クワ ッ ド SPI モード」 を追加。

• 表 2-2 に、 デュアル クワ ッ ド モードにのみ関係する I/O 信号を追加。

• 第 3 章 「コアを使用するデザイン」 に 「デュアル クワ ッ ド モードの使用」 を追加。

2016 年 4 月 6 日 3.2 • 第 5 章に 「プログラム シーケンスの例」 を追加。

• 第 4 章の set_max_delay コマンドを更新。

2015 年 11 月 18 日 3.2 UltraScale+ ファ ミ リのサポート を追加。

2015 年 9 月 30 日 3.2 • Performance and Resource Utilization (ウェブ ページ) へのリ ンクを追加。

• UltraScale™ デバイスで使用する新しい STARTUPE3 プリ ミ ティブに関する情報を追加。

• 表 2-1 に EXT_spi_clk の列を追加。

• 表 2-4 の ss_i [(No. of Slaves – 1):0] の説明を変更。

• 表 2-7 のマスター制御レジスタの説明に注記を追加。

• 表 4-1 に 2 つの注記を追加。

• Numonyx の表記をすべて Micron に置き換え。

• Intel フラ ッシュに関する記載をすべて削除 (S3A を最後に S33 クワ ッ ド SPI フラ ッシュ ファ ミ リの生産を終了したため)。

• ST MicroElectronics に関する記載をすべて削除 (Micron による置き換えのため)。

• Atmel に関する記載を削除。

• 図 3-2 を訂正。

2014 年 11 月 19 日 3.2 UltraScale のリ ソースの数値を追加。

AXI Quad SPI v3.2 99

PG153 2019 年 7 月 8 日 japan.xilinx.com

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

2014 年 10 月 1 日 3.2 • リ ビジ ョ ン変更に伴う文書更新のみ。

• 文書全体で E3 に関する記載を削除。

• 表 1-1 「コアの動作モード とデザイン パラ メーターの値」 の注記 2 を更新。

• 表 2-2 「Kintex®-7 FPGA のリ ソース使用状況」 を更新。

• 表 2-3 「I/O 信号」 の STARTUP 信号を更新。

• SPI 制御レジスタのビッ ト [8] を更新。

• SPI ステータス レジスタのビッ ト [2] の説明を更新。

• SPI データ受信レジスタの説明を更新。

• IP 割り込みステータス レジスタのビッ ト [2] の説明を更新。

• 表 3-1 および表 3-2 のオペコード 20 を削除。

• 「XIP モードのコマンド」 に表 3-3 「AXI Quad SPI コアでサポート されるコマンド」 を追加。

• 「コアを使用するデザイン」 の章に 「AXI Quad SPI でサポート されるデバイス」のセクシ ョ ンを追加。

• 「デザイン フローの手順」 の章にユーザー パラ メーターの表を追加。

• 「必須の制約」 に説明を追加。

• 図 5-1 「サンプル デザインのブロ ッ ク図」 を更新。

• 図 6-1 「AXI Quad SPI サンプル デザインのテス トベンチ」 を更新。

2014 年 4 月 2 日 3.2 • Spansion フラ ッシュのサポート を追加 (ベータ バージ ョ ン)。

• STARTUP 信号をほかの IP コアで使用できるよ うにした STARTUP インターフェイスを追加。

2013 年 12 月 18 日 3.1 UltraScale アーキテクチャのサポート を追加。

2013 年 10 月 2 日 3.1 • コア v3.1 用に内容を更新。 文書のバージ ョ ン番号と コアのバージ ョ ン番号を統一。

• XIP モードで Micron メモ リの 32 ビッ ト アドレス サポート を追加。

• コアのサンプル デザイン、 およびテス トベンチに関する情報を追加。

• シ ミ ュレーシ ョ ン、 合成、 インプリ メンテーシ ョ ン、 および Vivado IP インテグレーターのサポートに関する情報を追加。

• ハードウェア デバッグと インターフェイス デバッグに関する情報を追加。

2013 年 3 月 20 日 1.0 製品ガイ ドのフォーマッ トでの初版 (従来の DS843 を置き換え)。

• 「コアの動作モード とデザイン パラ メーターの値」 の表を第 1 章に移動。

• 変更された I/O 信号の幅を改訂。

• 第 3 章の 「リセッ ト 」 を改訂。

• 第 3 章の 「XIP モード」 に 24 ビッ ト アドレス指定の制限に関する注記を追加。

• 第 4 章に IDE の画面に関する説明を追加し、 「デザイン パラ メーター」 (旧情報) を削除。

日付 バージョ ン 内容

AXI Quad SPI v3.2 100

PG153 2019 年 7 月 8 日 japan.xilinx.com

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

お読みください: 重要な法的通知本通知に基づいて貴殿または貴社 (本通知の被通知者が個人の場合には 「貴殿」、 法人その他の団体の場合には 「貴社」。 以下同じ ) に開示される情報 (以下 「本情報」 といいます) は、 ザイ リ ンクスの製品を選択および使用するこ とのためにのみ提供されます。 適

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

供され、 ザイ リ ンクスは、 本通知をもって、 明示、 黙示、 法定を問わず (商品性、 非侵害、 特定目的適合性の保証を含みますがこ

れらに限られません)、 すべての保証および条件を負わない (否認する ) ものと します。 また、 (2) ザイ リ ンクスは、 本情報 (貴殿ま

たは貴社による本情報の使用を含む) に関係し、 起因し、 関連する、 いかなる種類 ・ 性質の損失または損害についても、 責任を負

わない (契約上、 不法行為上 (過失の場合を含む)、 その他のいかなる責任の法理によるかを問わない) ものと し、 当該損失または損

害には、 直接、 間接、 特別、 付随的、 結果的な損失または損害 (第三者が起こした行為の結果被った、 データ、 利益、 業務上の信

用の損失、 その他あらゆる種類の損失や損害を含みます) が含まれるものと し、 それは、 たとえ当該損害や損失が合理的に予見可

能であったり、 ザイ リ ンクスがそれらの可能性について助言を受けていた場合であったと しても同様です。 ザイ リ ンクスは、 本情

報に含まれるいかなる誤り も訂正する義務を負わず、 本情報または製品仕様のアップデート を貴殿または貴社に知らせる義務も負

いません。 事前の書面による同意のない限り、 貴殿または貴社は本情報を再生産、 変更、 頒布、 または公に展示してはなり ませ

ん。 一定の製品は、 ザイ リ ンクスの限定的保証の諸条件に従う こ と となるので、 https://japan.xilinx.com/legal.htm#tos で見られるザ

イ リ ンクスの販売条件を参照して ください。 IP コアは、 ザイ リ ンクスが貴殿または貴社に付与したライセンスに含まれる保証と補

助的条件に従う こ とにな り ます。 ザイ リ ンクスの製品は、 フェイルセーフと して、 または、 フェイルセーフの動作を要求するアプ

リ ケーシ ョ ンに使用するために、 設計されたり意図されたり していません。 そのよ う な重大なアプリ ケーシ ョ ンにザイ リ ンクスの

製品を使用する場合のリ スク と責任は、 貴殿または貴社が単独で負う ものです。 https://japan.xilinx.com/legal.htm#tos で見られるザ

イ リ ンクスの販売条件を参照して ください。

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

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

の機能 ( 「セーフティ設計」 ) がない限り、 エアバッグの展開における使用または車両の制御に影響するアプリ ケーシ ョ ン ( 「セー

フティ アプリ ケーシ ョ ン」 ) における使用は保証されていません。 顧客は、 製品を組み込むすべてのシステムについて、 その使用

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

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

© Copyright 2013-2019 Xilinx, Inc. Xilinx、 Xilinx のロゴ、 Alveo、 Artix、 Kintex、 Spartan、 Versal、 Virtex、 Vivado、 Zynq、 およびこの

文書に含まれるその他の指定されたブランドは、 米国およびその他各国のザイ リ ンクス社の商標です。 AMBA、 AMBA Designer、Arm、 ARM1176JZ-S、 CoreSight、 Cortex、 PrimeCell、 Mali、 および MPCore は、 EU およびその他各国の Arm Limited の商標です。

DisplayPort アイコンは、 米国およびその他の国々で登録された、 Video Electronics Standards Association の商標です。 すべてのその

他の商標は、 それぞれの保有者に帰属します。

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 jpn_trans_feedback@xilinx.com まで、 または各ページ

の右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語

で入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは

受け付けており ません。 あらかじめご了承ください。