AR# 57744

Zynq-7000 SoC のデザイン アドバイザリ - 16 MB より大型のフラッシュを使用する場合の Zynq および QSPI のリセット要件

説明

影響を受ける Zynq-7000 プラットフォーム

シングル、デュアル スタック、デュアル パラレルのコンフィギュレーションでのブートに 16 MB より大型の QSPI フラッシュを使用する Zynq-7000 プラットフォーム

注記: 2 つの 16 MB QSPI フラッシュを使用するデュアル スタックドまたはデュアル パラレル コンフィギュレーション (合計 32 MB) のシステムは、この要件の影響を受けません。

Zynq-7000 でサポートされる QSPI デバイスは、(Xilinx Answer 50991) を参照してください。

背景

Zynq QSPI コントローラーは 3 バイト アドレス指定に制限されるので、ブート イメージがフラッシュの最初の 16 MB にある場合にのみ bootROM でフェッチできます (16 MB は 1 つの QSPI チップでアドレス指定可能な最大容量)。

16 MB より大型の QSPI フラッシュを使用する場合、フラッシュの 16 MB より上の部分のデータにアクセスするため、ソフトウェア ドライバー (スタンドアロン、U-Boot、Linux) で 3 バイト アドレスを拡張し、4 番目のバイトを拡張アドレス レジスタと呼ばれるベンダー特定の QSPI レジスタに保管する必要があります。  

これは、2013.3/14.7 ソフトウェア ドライバーおよびザイリンクス ツールでサポートされる予定です。

この拡張アドレス レジスタは、外部リセット イベント (フラッシュの電源サイクルまたはフラッシュの外部リセット) でしかクリアできません。

QSPI フラッシュの電源サイクルまたは外部リセットの後、デバイスにアクセスする前にリカバリ タイムが必要です。詳細は、QSPI フラッシュのデータシートを参照してください。

リセットに関する考慮事項

bootROM はすべてのシステム リセットで起動されます。

  • POR (外部ピン)
  • SRST (外部ピン)
  • システム SW リセット (SLCR ビットをソフトウェアでセット)
  • SWDT、AWDTx (ウォッチドッグ タイマー)
  • セキュア ロック ダウン (bootROM から)
  • システム デバッグ リセット (JTAG)

拡張アドレス レジスタが読み出し/書き込み操作によりフラッシュの 16 MB より上の部分にアクセスするために変更されており、システム リセットが実行されたときに 0 でない場合があります。

bootROM では QSPI 外部アドレス レジスタは認識されないのでクリアできず、ブート イメージを読み込むことができません。

注記: Zynq-7000 SoC に関するすべての質問を解決するのに役立つ情報は、Zynq-7000 SoC ソリューション センター (Xilinx Answer 52512) を参照してください。

ソリューション

この状況を解決するには、Zynq と QSPI フラッシュのリセットを一緒に制御する必要があります。 

どのリセット (POR またはウォーム リセット) でも、外部 SRST を Zynq に適用し、SRST がディアサートされる前に QSPI が回復できるようにする必要があります。

外部エンティティ (CPLD など) を使用して管理できます。

すべての Zynq プラットフォーム リセットを検出

Zynq にはすべてのウォーム リセット イベントを示す出力ピンがないので、これには専用 PS MIO (USER_IO) を使用する必要があります。

これがウィーク プルアップまたはプルダウンを使用して High または Low になるようにボードを設計する必要があります。

FSBL では、反対の方向にプルされます。これにより、その後のウォーム リセットの前に信号が確実に Low に駆動されます。

CPLD は POR_IN、SRST_IN、および USER_IO を監視し、POR_ZYNQ、SRST_ZYNQ、および QSPI_RESET/QSPI_POWER_EN を駆動します。

フローの 1 例は、 「16 MB より大型のフラッシュを使用する場合の QSPI リセット例」を参照してください。


 

注記: ダイアグラムで SRST_IN は、JTAG SRST (たとえばデバッガーからアサート可能) を含むボード上のすべての SRST の OR です。

SRST_ZYNQ または POR_ZYNQ を使用して Zynq をリセット状態に保持

SRST_ZYNQ を使用する利点は、ウォーム リセットが別のウォーム リセットに変換されるので、デバッグ レジスタなどがそのままに保持されることです。

アプリケーションのニーズによって、代わりに POR_ZYNQ を使用する必要がある場合もあります。

QSPI フラッシュのリセット

QSPI フラッシュにリセット ピンがある場合は、CPLD でそれを駆動します (QSPI_RESET)。

リセット ピンがない場合は、CPLD でボード上の FET などを使用して QSPI フラッシュの電源レールを制御します (QSPI_POWER_EN)。

電源レールと RESET のリカバリ タイムによっては、リセット ピンがある場合でも電源レールを使用した方が有利な場合もあります。

進行中の書き込みまたは消去により、フラッシュが破損する場合があります。

上位ソフトウェア/ファイルシステムでこれを考慮する必要があります。

POR_IN および SRST_IN が SRST_ZYNQ と重複した場合の処理

このロジックで SRST_ZYNQ がアサートされているときに POR_IN および SRST_IN のどちらかまたは両方が発生した場合、『Zynq-7000 SoC テクニカル リファレンス マニ ュアル』 (UG585) のガイドラインに従って、SRST_ZYNQ/POR_ZYNQ を正しい順序でアサートおよびディアサートする必要があります。  

『Zynq-7000 SoC テクニカル リファレンス マニ ュアル』 (UG585) のセクション 6.2.4 「リセット要件」および (Xilinx Answer 52847) を参照してください。

Zynq リセットの解放

CPLD ロジックは、QSPI フラッシュが使用可能になるまで Zynq をリセット状態に保持します (リカバリ タイム期間切れ、詳細は QSPI フラッシュのデータシートを参照)。

注記: bootROM は、POR_ZYNQ が解放 (立ち上がりエッジ) された後 QSPI にアクセスします (CS をアクティブに駆動)。

bootROM のブートイメージ検索

この時点で、bootROM が QSPI フラッシュの最初の 16 MB でブートイメージを検索し始めます (拡張アドレス レジスタは 0)。

注記:

1) CPLD ロジックを設計するのに役立つ追加の考慮事項は、『Zynq-7000 SoC テクニカル リファレンス マニ ュアル』 (UG585) の第 26 章「リセット システム」を参照してください。

SRST および POR 信号の順序は、(Xilinx Answer 52847) を参照してください。

2) 16 MB より大型の QSPI からブートする際のその他の考慮事項は、『Zynq-7000 SoC ソフトウェア開発者向けガイド 』 (UG821) を参照してください。

AR# 57744
日付 06/13/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス