Microsemiのロゴスマートフュージョン2
DDR コントローラーとシリアル高速コントローラー
初期化方法
ユーザーガイド

導入

SmartFusion2 デバイスを使用してデザインを作成する場合、XNUMX つの DDR コントローラー (FDDR または MDDR) のいずれか、またはシリアル高速コントローラー (SERDESIF) ブロックのいずれかを使用する場合は、実行時にこれらのブロックのコンフィギュレーション レジスタを初期化する必要があります。それらは使用できます。 例えばampつまり、DDR コントローラーの場合、DDR モード (DDR3/DDR2/LPDDR)、PHY 幅、バースト モード、および ECC を設定する必要があります。
同様に、PCIe エンドポイントとして使用される SERDESIF ブロックの場合、PCIE BAR を AXI (または AHB) ウィンドウに設定する必要があります。
このドキュメントでは、電源投入時に DDR コントローラーと SERDESIF ブロックを自動的に初期化する Libero デザインを作成するために必要な手順について説明します。 また、組み込み設計フローで使用される Libero SOC からファームウェア コードを生成する方法についても説明します。
動作理論の詳細な説明が最初に提供されます。
次のセクションでは、Libero SoC System Builder を使用してそのような設計を作成する方法について説明します。Libero SoC System Builder は、設計で DDR または SERDESIF ブロックを使用している場合に「初期化」ソリューションを他の機能とともに作成する強力な設計ツールです。
次のセクションでは、SmartFusion2 System Builder を使用せずに完全な「初期化」ソリューションをまとめる方法について説明します。 これは、システム ビルダを使用したくない場合に何をする必要があるかを説明するのに役立ち、システム ビルダ ツールが実際に生成するものについても説明します。 このセクションでは、以下について説明します。

  • DDR コントローラーおよび SERDESIF 構成レジスターの構成データの作成
  • 構成データをさまざまな ASIC 構成レジスターに転送するために必要な FPGA ロジックの作成

最後に、生成された file以下に関連します。

  • ファームウェア「初期化」ソリューションの作成。
  • DDR「初期化」ソリューションのデザインのシミュレーション。

DDR コントローラーと SERDESIF コンフィギュレーション レジスタの詳細については、 Microsemi SmartFusion2 高速シリアルおよび DDR インターフェイス ユーザーズ ガイド。

動作原理

ペリフェラルの初期化ソリューションでは、次の主要コンポーネントが使用されます。

  • Cortex-M3 上で実行され、初期化プロセスを調整する CMSIS SystemInit() 関数。
  • ペリフェラルの構成レジスタを初期化する CoreConfigP ソフト IP コア。
  • MSS、DDR コントローラー、および SERDESIF ブロックのリセット シーケンスを管理する CoreResetP ソフト IP コア。

ペリフェラルの初期化プロセスは次のように機能します。

  1. リセット時に、Cortex-M3 は CMSIS SystemInit() 関数を実行します。 この関数は、アプリケーションの main() 関数が実行される前に自動的に実行されます。
    CoreResetP 出力信号 MSS_HPMS_READY は、初期化プロセスの開始時にアサートされ、MSS とすべてのペリフェラル (MDDR を除く) が通信の準備ができていることを示します。
  2. SystemInit() 関数は、MSS FIC_2 APB3 バスを介して DDR コントローラーと SERDESIF 構成レジスターに構成データを書き込みます。 このインターフェイスは、FPGA ファブリックでインスタンス化されたソフト CoreConfigP コアに接続されます。
  3. すべてのレジスターが構成された後、SystemInit() 関数は CoreConfigP 制御レジスターに書き込み、レジスター構成フェーズの完了を示します。 次に、CoreConfigP 出力信号 CONFIG1_DONE および CONIG2_DONE がアサートされます。
    デザインで使用されるペリフェラルに応じて、レジスタ コンフィギュレーションには 1 つのフェーズ (CONFIG2 と CONFIGXNUMX) があります。
  4. MDDR/FDDR の 1 つまたは両方が使用され、デザインで SERDESIF ブロックが使用されていない場合、レジスタ コンフィギュレーション フェーズは 2 つだけです。 CoreConfigP 出力信号 CONFIGXNUMX_DONE と CONIGXNUMX_DONE の両方が、待機/遅延なしで次々にアサートされます。
    非 PCIe モードの 1 つまたは複数の SERDESIF ブロックがデザインで使用されている場合、レジスタ コンフィギュレーションのフェーズは 2 つだけです。 CONFIGXNUMX_DONE と CONIGXNUMX_DONE は、待機/遅延なしで次々にアサートされます。
    デザインで PCIe モードの SERDESIF ブロックが 1 つ以上使用されている場合、レジスタ設定には 2 つのフェーズがあります。 CONFIGXNUMX_DONE は、レジスタ コンフィギュレーションの最初のフェーズが完了した後にアサートされます。 SERDESIF システムおよびレーン レジスタは、このフェーズで設定されます。 SERDESIF が非 PCIE モードで設定されている場合、CONFIGXNUMX_DONE 信号もすぐにアサートされます。
  5. 次に、レジスタ設定の第 XNUMX フェーズが続きます (SERDESIF が PCIE モードで設定されている場合)。 以下は、第 XNUMX フェーズで発生するさまざまなイベントです。
    – CoreResetP は、使用される各 SERDESIF ブロックに対応する PHY_RESET_N および CORE_RESET_N 信号をディアサートします。 また、すべての SERDESIF ブロックがリセットされた後、出力信号 SDIF_RELEASED をアサートします。 この SDIF_RELEASED 信号は、SERDESIF コアがリセットされていないこと、およびレジスタ コンフィギュレーションの第 XNUMX フェーズの準備ができていることを CoreConfigP に示すために使用されます。
    – SDIF_RELEASED 信号がアサートされると、SystemInit() 関数は適切な SERDESIF レーンで PMA_READY のアサートのポーリングを開始します。 PMA_READY がアサートされると、SERDESIF レジスタ (PCIE レジスタ) の XNUMX 番目のセットが SystemInit() 関数によって構成/書き込まれます。
  6. すべての PCIE レジスターが構成された後、SystemInit() 関数は CoreConfigP 制御レジスターに書き込み、レジスター構成の第 2 フェーズの完了を示します。 次に、CoreConfigP 出力信号 CONIGXNUMX_DONE がアサートされます。
  7. 上記の信号のアサーション/デアサーションとは別に、CoreResetP は次の機能を実行してさまざまなブロックの初期化も管理します。
    – FDDR コア リセットのディアサート
    – SERDESIF ブロックのアサート解除 PHY および CORE リセット
    – FDDR PLL (FPLL) ロック信号の監視。 FDDR AXI/AHBLite データ インターフェイスと FPGA ファブリックが正しく通信できることを保証するために、FPLL はロックされている必要があります。
    – SERDESIF ブロックの PLL (SPLL) ロック信号の監視。 SPLL は、SERDESIF ブロック AXI/AHBLite インターフェイス (PCIe モード) または XAUI インターフェイスが FPGA ファブリックと適切に通信できることを保証するためにロックされている必要があります。
    – 外部 DDR メモリが安定し、DDR コントローラがアクセスできるようになるまで待機中。
  8. すべてのペリフェラルが初期化を完了すると、CoreResetP は INIT_DONE 信号をアサートします。 その後、CoreConfigP 内部レジスタ INIT_DONE がアサートされます。
    MDDR/FDDR の一方または両方が使用され、DDR 初期化時間に達すると、CoreResetP 出力信号 DDR_READY がアサートされます。 この信号 DDR_READY のアサートは、DDR (MDDR/FDDR) が通信可能であることを示すものとして監視できます。
    XNUMX つまたは複数の SERDESIF ブロックが使用され、レジスタ コンフィギュレーションの第 XNUMX フェーズが正常に完了すると、CoreResetP 出力信号 SDIF_READY がアサートされます。 この信号 SDIF_READY のアサートは、すべての SERDESIF ブロックが通信可能であることを示すものとして監視できます。
  9. INIT_DONE がアサートされるのを待っていた SystemInit() 関数が完了し、アプリケーションの main() 関数が実行されます。 その時点で、使用されている DDR コントローラーと SERDESIF ブロックはすべて初期化されており、ファームウェア アプリケーションと FPGA ファブリック ロジックはそれらと確実に通信できます。

このドキュメントで説明する方法論は、アプリケーションの main() 関数の前に実行されるシステム初期化コードの一部として初期化プロセスを実行する Cortex-M3 に依存しています。
FDDR/MDDR、SERDES (非 PCIe モード)、および SERDES (PCIe モード) の初期化手順については、図 1-1、図 1-2、および図 1-3 のフローチャートを参照してください。
図 1-4 に、ペリフェラルの初期化のタイミング図を示します。

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - タイミング図 1 Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - タイミング図 2

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - タイミング図 3Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - タイミング図 4図 1-3 • SERDESIF (PCIe) 初期化フローチャート
このドキュメントで説明されている初期化手順では、Cortex-M3 でコードを実行する予定がない場合でも、初期化プロセス中に Cortex-M3 を実行する必要があります。 何もしない基本的なファームウェア アプリケーションを作成する必要があります (たとえば、単純なループ)ample) を組み込みの非揮発性メモリ (eNVM) にロードし、Cortex-M3 の起動時に DDR コントローラと SERDESIF ブロックが初期化されるようにします。

System Builder を使用して DDR および SERDESIF ブロックを使用するデザインを作成する

SmartFusion2 System Builder は、システム レベルの要件を把握し、それらの要件を実装する設計を作成するのに役立つ強力な設計ツールです。 システム ビルダの非常に重要な機能は、ペリフェラル初期化サブシステムの自動作成です。 17 ページの「SmartDesign を使用して DDR および SERDESIF ブロックを使用したデザインを作成する」では、System Builder を使用せずにこのようなソリューションを作成する方法について詳しく説明しています。
System Builder を使用している場合は、次のタスクを実行して、電源投入時に DDR コントローラーと SERDESIF ブロックを初期化するデザインを作成する必要があります。

  1. [Device Features] ページ (図 2-1) で、デザインで使用する DDR コントローラーと使用する SERDESIF ブロックの数を指定します。
  2. [メモリ] ページで、DDR のタイプ (DDR2/DDR3/LPDDR) と外部 DDR メモリの構成データを指定します。 詳細については、メモリ ページのセクションを参照してください。
  3. [ペリフェラル] ページで、AHBLite/AXI として構成されたファブリック マスターをファブリック DDR サブシステムおよび/または MSS DDR FIC サブシステム (オプション) に追加します。
  4. [Clock Settings] ページで、DDR サブシステムのクロック周波数を指定します。
  5. 設計仕様を完成させ、[完了] をクリックします。 これにより、「初期化」ソリューションに必要なロジックを含むシステム ビルダ作成の設計が生成されます。
  6. SERDESIF ブロックを使用している場合は、デザインで SERDESIF ブロックをインスタンス化し、それらの初期化ポートを System Builder で生成されたコアのポートに接続する必要があります。

システム ビルダーのデバイス機能ページ
[Device Features] ページで、使用する DDR コントローラー (MDDR および/または FDDR) と、デザインで使用する SERDESIF ブロックの数を指定します (図 2-1)。

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - デバイス機能ページ図 2-1 • システム ビルダのデバイス機能ページ

システム ビルダーのメモリ ページ
MSS DDR (MDDR) またはファブリック DDR (FDDR) を使用するには、ドロップダウン リストからメモリ タイプを選択します (図 2-2)。

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - 外部メモリ図 2-2 • MSS 外部メモリ

絶対です:

  1. DDR タイプ (DDR2、DDR3、または LPDDR) を選択します。
  2. DDR メモリの整定時間を定義します。 外部 DDR メモリの仕様を参照して、正しいメモリ設定時間を設定してください。 メモリの整定時間が正しく設定されていないと、DDR メモリが正しく初期化されないことがあります。
  3. DDR レジスタ コンフィギュレーション データをインポートするか、DDR メモリ パラメータを設定します。 詳細については、 Microsemi SmartFusion2 高速シリアルおよび DDR インターフェイス ユーザーズ ガイド.

このデータは、DDR レジスタ BFM およびファームウェア構成を生成するために使用されます。 file26 ページの「ファームウェア アプリケーションの作成とコンパイル」および「BFM File■ 27 ページの「デザインのシミュレーションに使用する」を参照してください。DDR コントローラ コンフィギュレーション レジスタの詳細については、 Microsemi SmartFusion2 高速シリアルおよび DDR インターフェイス ユーザーズ ガイド。
元amp設定ファイル file 構文を図 2-3 に示します。 この中で使用されるレジスタ名 file で説明されているものと同じです Microsemi SmartFusion2 高速シリアルおよび DDR インターフェイス ユーザーズ ガイド

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - File 構文例ample図 2-3 • 構成 File 構文例ample
システムビルダー周辺機器ページ
[ペリフェラル] ページでは、DDR コントローラーごとに個別のサブシステムが作成されます (FDDR 用のファブリック DDR サブシステムと MDDR 用の MSS DDR FIC サブシステム)。 ファブリック AMBA マスター (AXI/AHBLite として構成) コアをこれらの各サブシステムに追加して、ファブリック マスターが DDR コントローラーにアクセスできるようにすることができます。 生成時に、System Builder は自動的にバス コアをインスタンス化し (追加された AMBA マスターのタイプに応じて)、バス コアのマスター BIF と、対応するサブシステム (FDDR/MDDR) のクロック ピンとリセット ピンを、適切なピン グループに公開します。上。 デザインでインスタンス化する適切なファブリック マスター コアに BIF を接続するだけです。 MDDR の場合、ファブリック AMBA マスター コアを MSS DDR FIC サブシステムに追加することはオプションです。 Cortex-M3 は、このサブシステムのデフォルト マスターです。 図 2-4 は、System Builder Peripherals ページを示しています。

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - ビルダー ペリフェラル ページ図 2-4 • システム ビルダのペリフェラル ページ

システム ビルダーの時計設定ページ
[Clock Settings] ページで、各 DDR コントローラーに対して、各 DDR (MDDR および/または FDDR) サブシステムに関連するクロック周波数を指定する必要があります。
MDDR の場合、次を指定する必要があります。

  • MDDR_CLK – このクロックは DDR コントローラーの動作周波数を決定し、外部 DDR メモリを実行するクロック周波数と一致する必要があります。 このクロックは、M3_CLK の倍数として定義されます (Cortex-M3 および MSS メイン クロック、図 2-5)。 MDDR_CLK は 333 MHz 未満である必要があります。
  • DDR_FIC_CLK – FPGA ファブリックから MDDR にもアクセスすることを選択した場合は、DDR_FIC_CLK を指定する必要があります。 このクロック周波数は、MDDR_CLK の比率として定義され、MDDR にアクセスする FPGA ファブリック サブシステムが実行されている周波数と一致する必要があります。

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - MDDR クロック図 2-5 • Cortex-M3 および MSS メイン クロック。 MDDR クロック

FDDR の場合、次を指定する必要があります。

  • FDDR_CLK – DDR コントローラーの動作周波数を決定し、外部 DDR メモリを実行するクロック周波数と一致する必要があります。 このクロックは、M3_CLK の倍数として定義されていることに注意してください (MSS および Cortex-M3 クロック、図 2-5)。 FDDR_CLK は 20 MHz から 333 MHz の範囲内である必要があります。
  • FDDR_SUBSYSTEM_CLK – このクロック周波数は、FDDR_CLK の比率として定義され、FDDR にアクセスする FPGA ファブリック サブシステムが実行されている周波数と一致する必要があります。

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - ファブリック DDR クロック図 2-6 • ファブリック DDR クロック
SERDESIF 構成
SERDESIF ブロックは、System Builder で生成されたデザインではインスタンス化されません。 ただし、図 2-7 に示すように、すべての SERDESIF ブロックに対して、初期化信号は System Builder コアのインターフェイスで使用でき、階層の次のレベルで SERDESIF コアに接続できます。Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - 周辺機器の初期化接続図 2-7 • SERDESIF ペリフェラルの初期化接続
DDR コンフィギュレーション レジスタと同様に、各 SERDES ブロックにもコンフィギュレーション レジスタがあり、実行時にロードする必要があります。 これらのレジスタ値をインポートするか、高速シリアル インターフェイス コンフィギュレータ (図 2-8) を使用して PCIe または EPCS パラメータを入力すると、レジスタ値が自動的に計算されます。 詳細については、 SERDES Configurator ユーザーズガイド.Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - シリアル インターフェイス コンフィギュレーター図 2-8 • 高速シリアル インターフェイス コンフィギュレータ
ユーザー ロジックを System Builder ブロックおよび SERDES ブロックと統合したら、最上位の SmartDesign を生成できます。 これにより、すべての HDL および BFM が生成されます。 fileデザインの実装とシミュレーションに必要な s。 その後、残りのデザイン フローに進むことができます。

SmartDesign を使用して DDR および SERDESIF ブロックを使用するデザインを作成する

このセクションでは、SmartFusion2 System Builder を使用せずに完全な「初期化」ソリューションをまとめる方法について説明します。 目的は、システム ビルダを使用したくない場合に何をしなければならないかを理解できるようにすることです。 このセクションでは、System Builder ツールが実際に生成するものについても説明します。 このセクションでは、次の方法について説明します。

  • DDR コントローラーおよび SERDESIF 構成レジスターの構成データを入力します。
  • 構成データを DDR コントローラーおよび SERDESIF 構成レジスターに転送するために必要なファブリック コアをインスタンス化して接続します。

DDR コントローラーの構成
MSS DDR (MDDR) およびファブリック DDR (FDDR) コントローラーは、外部 DDR メモリの構成要件 (DDR モード、PHY 幅、バースト モード、ECC など) に一致するように (実行時に) 動的に構成する必要があります。 MDDR/FDDR コンフィギュレーターに入力されたデータは、CMSIS SystemInit() 関数によって DDR コントローラー コンフィギュレーション レジスタに書き込まれます。 Configurator には、さまざまなタイプの構成データを入力するための XNUMX つの異なるタブがあります。

  • 一般データ (DDR モード、データ幅、クロック周波数、ECC、ファブリック インターフェイス、ドライブ強度)
  • メモリ初期化データ (バースト長、バースト順序、タイミング モード、レイテンシなど)
  • メモリタイミングデータ

外部 DDR メモリの仕様を参照し、外部 DDR メモリの要件に一致するように DDR コントローラーを構成します。
DDR 設定の詳細については、 SmartFusion2 MSS DDR 構成ユーザー ガイド。
SERDESIF 構成
SmartDesign キャンバスで SERDES ブロックをダブルクリックしてコンフィギュレータを開き、SERDES を設定します (図 3-1)。 これらのレジスター値をインポートするか、SERDES コンフィギュレーターを使用して PCIe または EPCS パラメーターを入力すると、レジスター値が自動的に計算されます。 詳細については、 SERDES Configurator ユーザーズガイド.Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - 高速シリアル インターフェイス コンフィギュレーター図 3-1 • 高速シリアル インターフェイス コンフィギュレータ
FPGA デザイン初期化サブシステムの作成
DDR および SERDESIF ブロックを初期化するには、FPGA ファブリックで初期化サブシステムを作成する必要があります。 FPGA ファブリック初期化サブシステムは、データを Cortex-M3 から DDR および SERDESIF コンフィギュレーション レジスタに移動し、これらのブロックが動作可能になるために必要なリセット シーケンスを管理し、これらのブロックが設計の残りの部分と通信する準備ができたときに通知します。 初期化サブシステムを作成するには、次のことを行う必要があります。

  • MSS 内で FIC_2 を構成する
  • CoreConfigP および CoreResetP コアをインスタンス化して構成する
  • オンチップ 25/50MHz RC オシレーターをインスタンス化する
  • システム リセット (SYSRESET) マクロをインスタンス化する
  • これらのコンポーネントを各ペリフェラルの構成インターフェイス、クロック、リセット、および PLL ロック ポートに接続します。

MSS FIC_2 APB 構成
MSS FIC_2 を構成するには:

  1. MSS コンフィギュレータから FIC_2 コンフィギュレータ ダイアログ ボックスを開きます (図 3-2)。
  2. Cortex-M3 を使用してペリフェラルを初期化するを選択します。
  3. システムに応じて、次のチェックボックスのいずれかまたは両方をオンにします。
    – MSS DDR
    – ファブリック DDR および/または SERDES ブロック
  4. [OK] をクリックして、MSS の生成に進みます (設計要件に合わせて MSS を完全に構成するまで、このアクションを延期することができます)。 FIC_2 ポート (FIC_2_APB_MASTER、FIC_2_APB_M_PCLK、および FIC_2_APB_M_RESET_N) が MSS インターフェイスで公開され、CoreConfigP および CoreResetP コアに接続できるようになりました。

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - MSS FIC 2 コンフィギュレーター図 3-2 • MSS FIC_2 コンフィギュレーター

コアコンフィグP
CoreConfigP を構成するには:

  1. CoreConfigP を SmartDesign (通常は MSS がインスタンス化される場所) にインスタンス化します。
    このコアは、Libero カタログ (周辺機器の下) にあります。
  2. コアをダブルクリックしてコンフィギュレーターを開きます。
  3. 初期化が必要なペリフェラルを指定するようにコアを設定します (図 3-3)。

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - ダイアログ ボックス図 3-3 • CoreConfigP ダイアログ ボックス

コアリセットP
CoreResetP を構成するには:

  1. CoreResetP を SmartDesign (通常は MSS がインスタンス化される場所) にインスタンス化します。
    このコアは、ペリフェラルの下の Libero カタログにあります。
  2. SmartDesign キャンバス内のコアをダブルクリックしてコンフィギュレーターを開きます (図 3-4)。
  3. コアを次のように構成します。
    – 外部リセットの動作を指定します (EXT_RESET_OUT がアサートされます)。 次の XNUMX つのオプションのいずれかを選択します。
    o EXT_RESET_OUT がアサートされることはありません
    o パワーアップ リセット (POWER_ON_RESET_N) がアサートされると、EXT_RESET_OUT がアサートされます。
    o FAB_RESET_N がアサートされると、EXT_RESET_OUT がアサートされます
    o パワーアップ リセット (POWER_ON_RESET_N) または FAB_RESET_N がアサートされると、EXT_RESET_OUT がアサートされます。
    – デバイス ボリュームの指定tage. 選択した値はボリュームと一致する必要がありますtagLibero プロジェクト設定ダイアログボックスで選択した e。
    – 適切なチェックボックスをオンにして、設計で使用しているペリフェラルを示します。
    – 外部 DDR メモリの設定時間を指定します。 これは、アプリケーションで使用されるすべての DDR メモリ (MDDR および FDDR) の最大値です。 このパラメータを設定するには、外部 DDR メモリ ベンダーのデータシートを参照してください。 200MHz で動作する DDR2 および DDR3 メモリでは、200us が適切なデフォルト値です。 これは、シリコン上で動作するシミュレーションと動作するシステムを保証するための非常に重要なパラメータです。 整定時間の値が正しくないと、シミュレーション エラーが発生する可能性があります。 このパラメータを設定するには、DDR メモリ ベンダーのデータシートを参照してください。
    – デザイン内の各 SERDES ブロックについて、適切なボックスをオンにして、次のいずれかを示します。
    o PCIe を使用
    o PCIe ホット リセットのサポートが必要です
    o PCIe L2/P2 のサポートが必要です

注記: 090 ダイ (M2S090) を使用していて、設計で SERDESIF を使用している場合は、「Used for PCIe」、「Include PCIe HotReset support」、および「Include PCIe L2/P2 support」のいずれのチェックボックスもチェックする必要はありません。 090 以外のデバイスを使用していて、XNUMX つ以上の SERDESIF ブロックを使用している場合は、適切な SERDESIF セクションの下にある XNUMX つのチェックボックスをすべてオンにする必要があります。
注記: このコンフィギュレーターで使用できるオプションの詳細については、CoreResetP ハンドブックを参照してください。

Microsemi SmartFusion2 DDR コントローラーおよびシリアル高速コントローラー - CoreResetPConfigurator図 3-4 • CoreResetPConfigurator

25/50MHz 発振器のインスタンス化
CoreConfigP と CoreResetP は、オンチップ 25/50MHz RC オシレーターによってクロックされます。 25/50MHz オシレータをインスタンス化し、これらのコアに接続する必要があります。

  1. チップ オシレータ コアを SmartDesign (通常は MSS がインスタンス化される場所) にインスタンス化します。 このコアは、Clock & Management の下の Libero カタログにあります。
  2. 図 3-5 に示すように、RC オシレータが FPGA ファブリックを駆動するようにこのコアを設定します。

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - オシレータ コンフィギュレータ図 3-5 • チップ オシレータ コンフィギュレータ

システム リセット (SYSRESET) のインスタンス化
SYSRESET マクロは、デバイス レベルのリセット機能をデザインに提供します。 POWER_ON_RESET_N 出力信号は、チップの電源が投入されるか、外部ピン DEVRST_N がアサート/デアサートされるたびにアサート/デアサートされます (図 3-6)。
SYSRESET マクロを SmartDesign (通常は MSS がインスタンス化される場所) にインスタンス化します。 このマクロは、Libero カタログのマクロ ライブラリにあります。このマクロの設定は必要ありません。

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - SYSRESET マクロ図 3-6 • SYSRESET マクロ

全体的な接続性
デザインで MSS、FDDR、SERDESIF、OSC、SYSRESET、CoreConfigP、および CoreResetP コアをインスタンス化して構成したら、それらを接続して Peripheral Initialization サブシステムを形成する必要があります。 このドキュメントでは、接続の説明を簡略化するために、CoreConfigP および CoreResetP 関連の接続に関連付けられた APB3 準拠の構成データ パス接続に分割しています。
構成データ パス接続
図 3-7 は、 CoreConfigP を MSS FIC_2 信号およびペリフェラルの APB3 準拠コンフィギュレーション インターフェイスに接続する方法を示しています。
表 3-1 • コンフィギュレーション データ パス ポート/BIF 接続

から
ポート/バス インターフェイス
(BIF)/コンポーネント

ポート/バス インターフェイス (BIF)/コンポーネント
APBS プリセット N/ CoreConfigP APB S PRESET N/ SDIF<0/1/2/3> APBS プリセット N/
ドイツ
MDDR APB S PRESE TN/MSS
APB S PCLK/CoreConfigP APB S PCLK/SDIF APB S PCLK/FDDR MDDR APB S POLK/MSS
MDDR APBmslave/CoreConfig MDDR APB スレーブ (BIF)/MSS
SDIF<0/1/2/3> APBmslave/Config APB スレーブ (BIF)/ SDIF<0/1/2/3>
FDDR APBmslave APB スレーブ (BIF)/ FDDR
FIC 2 APBmmaster/CoreConfigP FIC 2 APB マスター/MSS

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - サブシステム接続図 3-7 • FIC_2 APB3 サブシステム接続

クロックとリセットの接続
図 3-8 は、CoreResetP を外部リセット ソースおよびペリフェラルのコア リセット信号に接続する方法を示しています。 また、CoreResetP をペリフェラルのクロック同期ステータス信号 (PLL ロック信号) に接続する方法も示します。 さらに、CoreConfigP と CoreResetP がどのように接続されているかを示します。

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ - サブシステム接続 2図 3-8 • コア SF2Reset サブシステムの接続

ファームウェア アプリケーションの作成とコンパイル

LiberoSoC からファームウェアをエクスポートすると (Design Flow Window > Export Firmware > Export Firmware)、Libero は以下を生成します。 fileの/firmware/drivers_config/sys_config フォルダー:

  • sys_config.c – ペリフェラル レジスタの値を保持するデータ構造を含みます。
  • sys_config.h – デザインで使用され、初期化が必要なペリフェラルを指定する #define ステートメントが含まれています。
  • sys_config_mddr_define.h – [Registers Configuration] ダイアログ ボックスに入力された MDDR コントローラーの構成データが含まれます。
  • sys_config_fddr_define.h – [Registers Configuration] ダイアログ ボックスに入力された FDDR コントローラーの構成データが含まれます。
  • sys_config_mss_locks.h - これ file MSS CCCコンフィギュレータで定義されたMSSクロック周波数が含まれています。 これらの周波数は、周辺クロック (PCLK) 周波数にアクセスする必要がある多くの MSS ドライバーに正しいクロック情報を提供するために、CMSIS コードによって使用されます (たとえば、MSS UART ボー レート除数は、ボー レートと PCLK 周波数の関数です)。 )。
  • sys_config_SERDESIF_ .c – SERDESIF_ を含むSERDESIF_ 中に提供されるレジスタ構成データデザイン作成時のブロック構成。
  • sys_config_SERDESIF_ .h – レジスター構成ペアの数と、PMA_READY のためにポーリングする必要があるレーン番号を指定する #define ステートメントが含まれています (PCIe モードのみ)。

これら files は、CMSIS コードを適切にコンパイルし、MSS のペリフェラル コンフィギュレーション データやクロック コンフィギュレーション情報など、現在のデザインに関する情報を含めるために必要です。
これらは編集しないでください file手動で。 これらは、それぞれのペリフェラルを含む SmartDesign コンポーネントが生成されるたびに、対応するコンポーネント/ペリフェラル ディレクトリに作成されます。 いずれかのペリフェラルの構成データに変更が加えられた場合は、ファームウェア プロジェクトを再エクスポートして、更新されたファームウェアが更新されるようにする必要があります。 files (上記のリストを参照) は、 / ファームウェア/drivers_config/sys_config フォルダー。
ファームウェアをエクスポートすると、Libero SoC はファームウェア プロジェクトを作成します。 files とドライバーがコンパイルされます。
プロジェクトの作成にチェックを入れるとチェックボックスをオンにすると、ソフトウェア SoftConsole/IAR/Keil プロジェクトが作成され、main.c およびユーザー C/H を編集できるアプリケーション プロジェクトが保持されます。 file秒。 SoftConSole/IAR/Keil プロジェクトを開いて、CMSIS コードを正しくコンパイルし、ハードウェア設計に合わせてファームウェア アプリケーションを適切に構成します。

BFM File設計のシミュレーションに使用

デザインに関連するペリフェラルを含む SmartDesign コンポーネントを生成すると、シミュレーション fileは、それぞれの周辺機器に対応する/シミュレーション ディレクトリ:

  • テスト.bfm – トップレベルの BFM file これは、SmartFusion2 MSS Cortex-M3 プロセッサを実行するシミュレーション中に最初に実行されます。 それは、peripheral_init.bfm と user.bfm をこの順序で実行します。
  • MDDR_init.bfm – デザインが MDDR を使用している場合、Libero はこれを生成します file; 入力した MSS DDR コンフィギュレーション レジスタ データ ([レジスタの編集] ダイアログ ボックスまたは MSS_MDDR GUI を使用) の MSS DDR コントローラ レジスタへの書き込みをシミュレートする BFM 書き込みコマンドが含まれています。
  • FDDR_init.bfm – デザインが FDDR を使用している場合、Libero はこれを生成します file; これには、入力したファブリック DDR コンフィギュレーション レジスタ データ ([レジスタの編集] ダイアログ ボックスまたは FDDR GUI を使用) のファブリック DDR コントローラ レジスタへの書き込みをシミュレートする BFM 書き込みコマンドが含まれています。
  • SERDESIF_ _init.bfm – デザインで XNUMX つ以上の SERDESIF ブロックを使用する場合、Libero はこれを生成します file SERDESIF_ のそれぞれについて使用されるブロック; 入力した SERDESIF コンフィギュレーション レジスタ データの書き込みをシミュレートする BFM 書き込みコマンドが含まれています ([レジスタの編集] ダイアログ ボックスを使用するか、SERDESIF_ GUI) を SERDESIF_ に登録します。 SERDESIF ブロックが PCIe として構成されている場合、これは file また、2 つのレジスタ構成フェーズの実行を完全な順序で制御する #define ステートメントもいくつかあります。
  • ユーザー.bfm – ユーザー コマンドが含まれます。 これらのコマンドは、peripheral_init.bfm が完了した後に実行されます。 これを編集 file BFM コマンドを入力します。
  • SERDESIF_ _user.bfm – ユーザー コマンドが含まれます。 これを編集 file BFM コマンドを入力します。 SERDESIF_ を構成している場合は、これを使用しますブロックを BFM PCIe シミュレーション モードで、AXI/AHBLite マスターとして使用します。 SERDESIF_ を構成した場合RTL シミュレーション モードのブロックでは、これは必要ありません。 file.

毎回シミュレーションを呼び出すと、次の XNUMX つのシミュレーション fileは、 内容が更新された /simulation ディレクトリ:

  • サブシステム.bfm – 各ペリフェラルに対応して実行されるperipheral_init.bfmの特定のセクションを指定する、設計で使用される各ペリフェラルの#defineステートメントが含まれています。
  • operipheral_init.bfm – main() プロシージャに入る前に、Cortex-M3 で実行される CMSIS:: SystemInit() 関数をエミュレートする BFM プロシージャが含まれています。 設計で使用されているペリフェラルのコンフィギュレーション データを正しいペリフェラル コンフィギュレーション レジスタにコピーし、すべてのペリフェラルの準備が整うのを待ってから、これらのペリフェラルを使用できることをアサートします。 MDDR_init.bfm と FDDR_init.bfm を実行します。

生成されたこれらを使用して fileデザイン内の DDR コントローラーは自動的に構成され、SmartFusion2 デバイスで何が起こるかをシミュレートします。 user.bfm を編集できます file デザインのシミュレーションに必要なコマンドを追加します (Cortex-M3 がマスターです)。 これらのコマンドは、ペリフェラルが初期化された後に実行されます。 test.bfm、subsystem.bfm、peripheral_init.bfm、MDDR_init.bfm、FDDR_init.bfm は編集しないでください。 files および SERDESIF_ _init.bfm files.

製品サポート

Microsemi SoC Products Group は、カスタマー サービス、カスタマー テクニカル サポート センター、 webサイト、電子メール、および世界中の営業所。
この付録には、Microsemi SoC Products Group への連絡およびこれらのサポート サービスの使用に関する情報が含まれています。
顧客サービス
製品の価格設定、製品のアップグレード、更新情報、注文ステータス、承認など、技術以外の製品サポートについては、カスタマーサービスにお問い合わせください。
北米から、電話 800.262.1060
世界の他の地域から、電話 650.318.4460
ファックス、世界中のどこからでも、 408.643.6913
お客様テクニカルサポートセンター
Microsemi SoC Products Group は、Microsemi SoC 製品に関するハードウェア、ソフトウェア、および設計に関する質問に答える、高度なスキルを持つエンジニアを配置したカスタマー テクニカル サポート センターを配置しています。 カスタマー テクニカル サポート センターは、アプリケーション ノート、一般的な設計サイクルの質問への回答、既知の問題のドキュメント、およびさまざまな FAQ の作成に多くの時間を費やしています。 そのため、お問い合わせいただく前に、オンライン リソースをご覧ください。 すでにご質問にお答えしている可能性が非常に高いです。
テクニカルサポート
カスタマーサポートにアクセス web地点 (www.microsemi.com/soc/support/search/default.aspx) 詳細とサポートについては、 検索可能で利用可能な多くの回答 web リソースには、図、イラスト、および上の他のリソースへのリンクが含まれています。 webサイト。
Webサイト
次の SoC ホームページで、さまざまな技術情報および非技術情報を参照できます。 www.microsemi.com/soc.
お客様テクニカルサポートセンターへのお問い合わせ
テクニカル サポート センターには、高度な技術を持つエンジニアが常駐しています。 テクニカル サポート センターには、電子メールまたは Microsemi SoC Products Group を通じて連絡できます。 webサイト。
メール
技術的な質問を当社の電子メール アドレスに送信すると、電子メール、ファックス、または電話で回答を受け取ることができます。 また、デザインに問題がある場合は、デザインをメールで送信できます file支援を受けることができます。
私たちは一日中、メールアカウントを常に監視しています。 リクエストを当社に送信する際は、リクエストを効率的に処理するために、氏名、会社名、および連絡先情報を必ず含めてください。
テクニカル サポートの電子メール アドレスは次のとおりです。 soc_tech@microsemi.com.
私のケース
Microsemi SoC Products Group のお客様は、オンラインでテクニカル ケースを送信および追跡できます。 私のケース.
米国外
米国のタイムゾーン以外でサポートが必要なお客様は、電子メール (soc_tech@microsemi.com) または最寄りの営業所にお問い合わせください。 営業所のリストは、次の場所にあります。 www.microsemi.com/soc/company/contact/default.aspx.
ITARテクニカルサポート
国際武器取引規則 (ITAR) によって規制されている RH および RT FPGA のテクニカル サポートについては、 soc_tech_itar@microsemi.com. または、My Cases 内の ITAR ドロップダウン リストで [はい] を選択します。 ITAR 規制の Microsemi FPGA の完全なリストについては、ITAR をご覧ください。 web ページ。
Microsemi Corporation (NASDAQ: MSCC) は、以下の半導体ソリューションの包括的なポートフォリオを提供しています。 航空宇宙、防衛、セキュリティ。 企業と通信; 産業用および代替エネルギー市場。 製品には、高性能で信頼性の高いアナログおよび RF デバイス、混合信号および RF 集積回路、カスタマイズ可能な SoC、FPGA、および完全なサブシステムが含まれます。 Microsemi は、カリフォルニア州アリソ ビエホに本社を置いています。 www.microsemi.com.
© 2014 マイクロセミ コーポレーション。 全著作権所有。 Microsemi および Microsemi のロゴは、Microsemi Corporation の商標です。 その他すべての商標およびサービス マークは、それぞれの所有者の財産です。

5-02-00384-1/08.14Microsemiのロゴマイクロセミ本社
One Enterprise、Aliso Viejo CA 92656 USA
米国内: +1 949-380-6100
売上: +1 949-380-6136
ファックス: +1 949-215-4996

ドキュメント / リソース

Microsemi SmartFusion2 DDR コントローラおよびシリアル高速コントローラ [pdf] ユーザーガイド
SmartFusion2 DDR コントローラおよびシリアル高速コントローラ、SmartFusion2 DDR、コントローラおよびシリアル高速コントローラ、高速コントローラ

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *