SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA –...

71
SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ ユーザーズ・ガイド

Transcript of SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA –...

Page 1: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ

ユーザーズ・ガイド

Page 2: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

Revision 0 2

目次

はじめに .......................................................................................................................... 3

デモの要件 ....................................................................................................................... 4 ハードウェアおよびソフトウェアの要件 ..................................................................................................... 4

デザイン・ファイル ........................................................................................................ 5

デモ・デザインの説明 ...................................................................................................... 6

デモの構築 ....................................................................................................................... 7

ステップ 1: Libero SoC プロジェクトの生成 .............................................................. 8 SmartDesign を使って PCIe_Demo_0 を構成 ............................................................................................ 16 “PCIe_Demo_top” SmartDesign 内に SERDESIF コンポーネントをインスタンシエート ........................ 24 “PCIe_Demo_top” SmartDesign 内に”Debounce”ロジックをインスタンシエート .................................... 29 “PCIe_Demo_top” SmartDesign 内のコンポーネントを接続 ..................................................................... 31 ファームウェアの構成と生成 ..................................................................................................................... 37

ステップ 2: eNVM クライアントの生成 ..................................................................... 38

ステップ 3: シミュレーション用スティミュラスの開発 ............................................ 50

ステップ 4: デザインをシミュレート ......................................................................... 53

ステップ 5: プログラミング・ファイルの生成............................................................. 56

デモを走らせる ............................................................................................................. 59 デモのセットアップ .................................................................................................................................... 59 ドライバのインストレーション .................................................................................................................. 62 PCIe デモの GUI ......................................................................................................................................... 64

デザインを走らせる ...................................................................................................... 65

結論 ............................................................................................................................... 71

Page 3: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 3

SmartFusion2 SoC FPGA - PCIeコントロール・プレ

ーンのデモ

はじめに SmartFusion®2 システム・オン・チップ (SoC) フィールド・プログラマブル・ゲート・アレイ (FPGA) デバイスは、

第四世代フラッシュ・ベースFPGAファブリック、ARM® Cortex™-M3プロセッサをハイ・パフォーマンス・コミュニ

ケーション・インターフェイスとともに単一チップに集積しています。SmartFusion2高速シリアル・インターフェイ

ス (SERDESIF) は完全にハード化されたPCIeエンドポイント (EP) を実装し、これはPCIe Base Specification

Revision 2.0および1.1に準拠しています。詳細はSmartFusion2 SoC FPGA High Speed Serial Interfaces User’s Guide

を参照してください。

このデモではSmartFusion2のエンベデッドPCI Expressの特徴、およびSmartFusion2開発キットを使ってこれを低バ

ンド幅のコントロール・プレーンとして使用する方法を説明します。デモではシンプルなデザインを使ってホストPC

からSmartFusion2のPCIe EPにアクセスします。SmartFusion2のPCIeコンフィグレーション空間とBAR0および

BAR1のメモリ空間にリード/ライト・アクセスするためのGUIが提供されます。SmartFusion2 PCIe EPのためのホス

トPCのデバイス・ドライバもこのデモで提供されます。

Figure 1にPCIeコントロール・プレーン・デモの最上位ブロック図を示します。このデモ・デザインはSmartFusion2

のPCIeインターフェイスを最大のリンク幅x4で使用し、ホストPCのPCIe Gen1スロットとインターフェイスします。

PCIeインターフェイス経由で、SmartFusion2マイクロコントローラ・サブシステム (MSS) のGPIOがSmartFusion2

開発キット上のLEDとスイッチとを制御します。ホストPCはGUIからSmartFusion2のeSRAMメモリをリード/ライト

することもできます。SmartFusion2開発キット上のプッシュ・ボタンを使ってホストPCに割り込みをかけることも

できます。

Note: SmartFusion2開発キット上で使用されているのがSTD速度グレードのデバイスであることから、このデモは

Gen1スロットに制限されます。STD速度グレード・デバイスはGen1 (2.5 Gbps) PCIe レートのみ対応可能です。

PCIe Gen2 レート (5.0 Gbps) は-1デバイス速度グレードを使用した場合に完全にサポートされます。

Page 4: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

4 Revision 0

Figure 1 • PCIeコントロール・プレーン・デモの最上位ブロック図

このデモ・デザインは以下にリストするタスクを実行します:

• PCIeリンクの有効/無効、ネゴシエートされたリンク幅、リンク速度を表示する。

• GUIからのコマンドに応じてSmartFusion2開発キット上のLEDのステータスを制御する。

• SmartFusion2開発キット上のDIPスイッチ位置を表示する。

• eSRAMへのリードとライトを有効化する。

• プッシュ・ボタンを押したときにホストPCに割り込みをかける。GUIはSmartFusion2開発キットから送られ

たインタラプト数のカウント値を表示する。

• SmartFusion2のPCIeコンフィグレーション空間を表示する。

デモの要件

ハードウェアおよびソフトウェアの要件 このデモを走らせるために必要なハードウェアとソフトウェアをTable 1にリストします。

Table 1 • デモを走らせるために必要なハードウェアとソフトウェア

ハードウェア バージョン

SmartFusion2開発キット Rev C1

12 V アダプタ (キットに同梱) -

FlashPro4 プログラマ (キットに同梱) -

Page 5: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 5

PCIエッジ・カード・リボン・ケーブル キットに同梱) -

PCIe 2.0準拠のスロットが利用可能なホストPC オペレーティング・システム

Windows XP SP2: 64-bit

Windows 7: 64-bit

ソフトウェア

Libero® System-on-Chip (SoC) 11.1

SoftConsole 3.4

ホストPC用のドライバ (デザイン・ファイルともに提供) -

GUI実行形式 デザイン・ファイルともに提供) -

Note: 1. SmartFusion2開発キット上にRev Cとバージョン指定するラベルあり

デザイン・ファイル このデモのデザイン・ファイルはMicrosemi のウェブサイトからダウンロードできます。

www.microsemi.com/soc/download/rsc/?f=M2S_PCIE_Control_DEMO_DF.

デザイン・ファイルには以下が含まれます:

1. Liberoプロジェクト

2. プログラミング・ファイル

3. ホストPCのドライバ

4. GUI実行形式

5. Readmeファイル

完全なディレクトリ構造についてはデザイン・ファイルに含まれるReadme.txt ファイルを参照ください。

Page 6: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

6 Revision 0

デモ・デザインの説明 このデモ・デザインはホストPCをデモ・プラットフォームとして使い、SmartFusion2のエンベデッドPCI Expressイ

ンターフェイスを低バンド幅のコントロール・プレーンとして使用する例になります。このデザインはホストPCドラ

イバ、およびPCIeからSmartFusion2デバイスを制御するホストPCインターフェイスを提供します。Figure 2にこの

デザイン実装の詳細なブロック図を示します。PCIeのEPデバイスはGUIを通してホストPCからコマンドをゲットし、

SmartFusion2のMSSアドレス空間にメモリ・ライトをおこないます。MSSアドレス空間にはGPIOブロックとeSRAM

メモリ・ブロックがあり、これはファブリック・インターフェイス・コントローラ (FIC_0) からアクセスされます。

SERDESIF_1がPCIe 2.0、x4リンク幅、Gen1速度で構成されます。ファブリックへのPCIeインターフェイスはAMBA

ハイ・スピード・バス (AHB) を使用します。SERDESIFのAHBマスタが有効化され、MSSペリフェラルにアクセス

するためにFIC_0のAHBスレーブ・インターフェイスに接続されます。SmartFusion2 PCIe BAR0およびBAR1は32-bit

メモリ・マップされたメモリ・モードに構成されます。

PCIeアドレスはSmartFusion2のAHBバス・マトリックスのアドレス空間とは異なるので、SERDESIF PCIeのAXIマ

スタ・ウィンドウがひとつアドレス空間から別のアドレス空間へのアドレス変換をおこないます。AXIマスタ・ウィ

ンドウ0が有効化され、BAR0アドレス空間からMSS GPIOアドレス空間に変換してMSSのGPIOを制御するように構

成されます。AXIマスタ・ウィンドウ1が有効化され、BAR1アドレス空間からeSRAMアドレス空間に変換してPCIe

からのリード/ライトを実行するように構成されます。

MSSのGPIOブロックは有効化され以下のように構成されます:

• GPIO_0からGPIO_7を出力とし、LEDに接続

• GPIO_8からGPIO_11を入力とし、DIPスイッチに接続

PCIeインタラプト線はSmartFusion2開発キット上のSW3プッシュ・ボタンに接続されます。FPGAクロックはFPGA

ファブリックとMSSを100MHzで走らせるように構成されます。

Page 7: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 7

Figure 2 • PCIeコントロール・プレーン・デモのブロック図

デモの構築 このデモ・デザインは新プロジェクト作成から始まりSmartFusion2開発キット上で動作するデザインを作成するまで

の完全なデザイン・フローを提供します。この過程でSmartFusion2デバイスをプログラムするためのLibero SoCデザ

イン・スイート内の各ツールに触れることになります。デモの構築には以下のステップが含まれます:

1. ステップ1: Libero SoCプロジェクトの生成

2. ステップ2: eNVMクライアントの生成

3. ステップ3: シミュレーション用スティミュラスの開発

4. ステップ4: デザインをシミュレート

5. ステップ5: プログラミング・ファイルの生成

Page 8: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

8 Revision 0

ステップ1: Libero SoCプロジェクトの生成 1. メニューからStart > Programs > Microsemi Libero SoC v11.1 > Libero SoC v11.1とクリックするか、デス

クトップ上のショートカットをクリックしてください。Figure 3に示すようにLibero SoC v11.1のプロジェク

ト・マネージャが表示されます。

Figure 3 • Libero SoC v 11.1 のプロジェクト・マネージャ

2. StartPageタブ (Figure 3中にハイライト表示) 上でNewを選択するか、Libero SoCメニューからProject > New

Projectをクリックして、新規プロジェクトを作成してください。Figure 4のように、New Projectダイアログ・

ボックス内にこの新プロジェクトおよびデバイスに必要な情報を入力してください。

– Project Name: PCIE_Demo

– Project Location: 適当な場所を選択してください (例えば、 D:/Microsemi_prj)

– Preferred HDL type: Verilog

– Family: SmartFusion2

– Die: M2S050T

– Package: 896 FBGA

– Speed: STD

– Die Voltage: 1.2

Page 9: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 9

– Operating conditions: COM

3. Figure 4に示すように、”New Project”ウィンドウの”Design Templates and Creators”セクション内で”Use

Design Tool”をチェックし”Use System Builder”を選択してください。

Figure 4 • Libero SoC v 11.1 “New Project”ダイヤログ・ボックス

Page 10: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

10 Revision 0

4. “Edit Tool Profiles”をクリックするとFigure 5にあるように”Tool Profiles”ウィンドウが表示されます。以下の

ツール設定になっていることをチェックしてください。:

– Software IDE: SoftConsole

– Synthesis: Synplify Pro ME H2013.03M

– Simulation: ModelSim 10.1c

– Programming: FlashPro 11.1

Figure 5 • ツール・プロファイル

5. “New Project”ウィンドウ内でOKをクリックしてください。

6. “Use System Builder”を選択するとFigure 6のように “Enter a name for your system” とダイヤログ・ボック

スが表示されます。

Figure 6 • “Create New System Builder”ダイヤログ・ボックス

システムの名前としてPCIe_Demoと入力しOKをクリックしてください。

7. デフォルトで”Device Features”ページが開いた状態で”System Builder”ダイヤログ・ボックスが表示されます。

Figure 7のように”System Builder – Device Features”ページに以下のように詳細を入力してください。:

Page 11: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 11

– Will you be accessing external memory for the Cortex-M3 (Cortex-M3用に外部メモリにアクセスします

か) : No

– Will you be accessing DDR memory through the fabric (ファブリック経由でDDRメモリにアクセスします

か) : No

– Will you be adding data storage clients to on-chip Flash Memory (オンチップ・フラッシュ・メモリにデー

タ・ストレージ・クライアントを追加しますか) : No

– How many high-speed serial interfaces will you use (高速シリアル・インターフェイスはいくつ使います

か) : SERDESIF_1をチェックしてください

– Which Microcontroller Options will you be using (どのマイクロコントローラ・オプションを使いますか) :

すべてクリアしてください

Figure 7 • SmartFusion2 SoC FPGA “System Builder”コンフィグレータ

9. Nextをクリックしてください。”System Builder – Peripherals”ページが表示されます。Figure 8のよう

に”Fabric AMBA Master”を”MSS_FIC_0 – Fabric Master Subsystem”にドラッグしてください。これで

MSSのFIC_0スレーブ・インターフェイスが有効化されます。

Page 12: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

12 Revision 0

Figure 8 • “System Builder”コンフィグレータ – “Peripherals”ページ

10. このデモ・デザインはMSSペリフェラルを使用しないので”MSS Peripherals”のチェックを外して無効化して

ください。”System Builder – Peripherals”ページはFigure 9のように表示されます。Figure 9でハイライト表

示されているAMBA_MASTER_0のコンフィグレータ・ボタンをクリックして、”MSS_FIC_0 – Fabric Master

Subsystem”をAHB-Lite用に構成してください。Figure 10に示すようにドロップダウン・リストが表示されま

す。

Page 13: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 13

Figure 9 • “System Builder” コンフィグレータ – “Peripherals”ページ

11. Figure 10のようにドロップダウン・リストからAHBLiteを選択してください。

Figure 10 • AMBAマスタの構成

Page 14: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

14 Revision 0

12. Nextをクリックしてください。Figure 11のように”System Builder – Clock”ページが表示されます。”System

Clock” の構成を100 MHzから50 MHzに変更してください。専用入力パッドはオン・ボードの50MHzオシレー

タに接続されます。M3_CLKはデフォルトでは100 MHz に構成されます。

Figure 11 • “System Builder”コンフィグレータ – “Clock”ページ

13. Nextをクリックしてください。”System Builder – Microcontroller”ページが表示されます。すべてデフォル

トの選択のままにしておいてください。

14. Nextをクリックしてください。”System Builder – SECDED”ページが表示されます。すべてデフォルトの選

択のままにしておいてください。

15. Nextをクリックしてください。”System Builder – Interrupts”ページが表示されます。すべてデフォルトの選

択のままにしておいてください。.

16. Nextをクリックしてください。”System Builder – Memory Map”ページが表示されます。すべてデフォルト

の選択のままにしておいてください。

17. Finishをクリックしてください。

“System Builder”が選択したオプションに基づいてシステムを生成します。

Figure 12に示すように”System Builder”ブロックが生成されLibero SoCプロジェクトに自動的に追加されます。

Page 15: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 15

Figure 12 • SmartFusion2 SoC FPGA “System Builder”が生成したシステム

“System Builder”によって2つのソフト・コア (CoreSF2ResetおよびCoreSF2Config) が自動的にインスタンシエ

ートされ接続されます。SmartDesignキャンバス内で”System Builder”コンポーネントを開くことで、これらブロ

ックがどのように接続されているかを見ることができます。

Note: CoreSF2ResetおよびCoreSF2ConfigでASICペリフェラルのリセットとコンフィグレーションをおこないます。

このデモにおいてはSERDESIFモジュールのリセットとコンフィグレーションのために使われています。これら

のモジュールはASICペリフェラルを選択した場合に”System Builder”が生成したコンポーネントの中に含まれま

す。

Page 16: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

16 Revision 0

SmartDesignを使ってPCIe_Demo_0を構成 1. “Design Hierarchy”タブ (Figure 13参照) にて、 PCIe_Demo_top コンポーネントを展開します。

2. Figure13に示すようにPCIe_Demoを右クリックし、”Open as SmartDesign”を選択します。

Figure 13 • “Open as SmartDesign”オプション

3. システムはSmartDesignコンポーネントに変換され、下記のFigure 14のようにメッセージが表示されます。

Figure 14 • “System Builder”から”SmartDesign”への変換が成功したことを示すメッセージ

4. OKをクリックします。システム全体がFigure 15のようにSmartDesignキャンバスに表示されます。

Page 17: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 17

Figure 15 • “System Builder”が生成したシステムを”SmartDesign”内に表示

Page 18: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

18 Revision 0

5. “System Builder”は、別のページで選択された異なるオプションに基づいて異なるブロックを自動的にインス

タンス化し接続します。

– SYSRESET_POR: CoreSF2Resetブロックへのパワー・オン・リセット信号を生成します。

– CORESF2RESET_0 (ソフト・コア): システムに必要なすべてのリセット機構の管理を担います。

– FABOSC_0: CoreSF2Resetブロックへのクロック源を生成します。

– CCC_0: MSS_CCCのMCC_CLK_BASEリファレンスへのクロック源を生成するために使用されます。

MSS_CCC (これはMSSの一部) はファブリックCCC (CCC_0) からのリファレンス・クロックを使用しま

す。

– CORESF2CONFIG_0 (ソフト・コア): 指定されたコンフィグレーション・ファイルに基づいてコントロー

ラの構成状況の管理を担います。

6. PCIe_Demo_MSS_0をダブル・クリックしMSSコンフィグレータを開け、GPIOをFigure 16のように有効化し

ます。

Figure 16 • MSSのコンフィグレーション

Page 19: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 19

7. MSSコンフィグレータ中のGPIOをダブル・クリックして設定していきます。

– GPIO_0からGPIO_7までoutputとし、それらのconnectivityをFABRIC_Aとし、LEDと接続できる様にしま

す。

– GPIO_8からGPIO_11までinputとし、connectivityはFABRIC_AとしてDIPスイッチと接続できる様にしま

す。

– 本デザインではGPIO_0からGPIO_7をSmartFusion2開発キットのLED_1からLED_8に、GPIO_8から

GPIO_11をDIP1からDIP4に接続する必要があります。これらの信号はファブリックを通りI/Oピンに配線

されます。Figure 17はGPIO設定画面です。

Figure 17 • “MSS GPIO Configurator”

8. PCIe_Demo_MSS を保存し現れたPCIe_Demoタブをクリックします。

9. PCIe_Demo_MSS_0を右クリックし、”Update Instance(s) with Latest Component”をFigure 18に示すよう

に選択します。

Page 20: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

20 Revision 0

Figure 18 • インスタンスをアップデート

10. PCIe_Demo_MSS_0のGPIO_FABRICポートを右クリックし、”Promote to Top Level”を選択し、デザイン

の最上位階層にGPIOを引き上げます。(Figure19を参照)

Figure 19 • “Promote to Top Level”のオプション

Page 21: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 21

11. Figure 20のようにCoreAHBLite_0のConfigureアイコンをクリックします。

Figure 20 • CoreAHBLiteのコンフィグレーション・ボタンを使う

12. CoreAHBLite_0をFigure 21のように設定します。

- “Memory Space”: ドロップ・ダウン・リストから”16 64KB slots, plus reserved space, plus 1 huge

(2GB) slot beginning at address 0x80000000”を選択します。

- “Address range seen by slave connected to huge (2GB) slot Interface”: “0x00000000 - 0x7FFFFFFF”

を選択します。

- “Enable Master access”: “M0 can access slot 0”のチェックを外し、”M0 can access slot 16

(combined/huge)” にチェックを付けます。

Page 22: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

22 Revision 0

Figure 21 • CoreAHB-Liteのコンフィグレーション

13. OKをクリックすると、”Configuring CoreAHBLite_0”ウィンドウが保存され閉じます。

14. CoreAHBLite_0 のS16とPCIe_Demo_MSS_0のFIC_0_AHB_SLAVEを接続するために、CTRL(コントロー

ル)キーを押しながらピンを選び、S16を右クリックしFigure 22のように、表示されるメニューからConnectを

Page 23: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 23

選択します。S16スロットを使用することで、CoreAHBLite_0のマスタM0は2GBメモリ・アクセスが可能になり

ますが、他のスロットは256MBのみのメモリ・アクセスしかできません。

Figure 22 • “Connect”オプション

15. SaveをクリックしPCIe_Demoを保存します。

16. PCIe_Demo_top タブをクリックし、PCIe_Demo_topのSmartDesignを開きます。

17. Figure 23のようにPCIe_Demo_0を右クリックし”Update Instance(s) with Latest Component”をメニュー

から選択します。

Page 24: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

24 Revision 0

Figure 23 • 最新コンポーネントでインスタンスをアップデート

“PCIe_Demo_top” SmartDesign内にSERDESIFコンポーネントをインスタン

シエート Libero SoCの「カタログ」ではSmartCanvasワークスペースにドラッグ・アンド・ドロップで簡単に使える IPコア

を提供しています。 これら多くのIPは無償ですが、いくつかライセンス契約が必要とされるものもあります。組み込

みPCIe インターフェイスをサポートするSERDESIFモジュールはこのカタログに含まれています。PCIe_Demo_top

のSmartDesign内にSERDESIFコンポーネントをインスタンシエートするため、Libero SoC “Catalog”の中の

Peripheralsを展開して下さい。

Page 25: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 25

Figure 24 • IPカタログ

1. “High Speed Serial Interface”を”PCIe_Demo_top”のSmartDesignキャンバス上にドラッグします。このコ

ンポーネントがVaultになかった場合は、名前を右クリックし、Downloadを選んでください。

2. SmartDesignキャンバス中のSERDES_IF_0をダブル・クリックし、SERDESコンフィグレータを開きます。

Figure 25に示すように下記設定の通りSERDESを構成します。

– SERDESIF_1にチェックを付け、SERDESIF_0のチェックを外します。

– Simulation Level: BFM PCIe

– Protocol1: Number of Lanes: x4

– CLK_BASE Frequency (MHz): 100

– PCIe Fabric Interface: AHBLite

– BAR 0 Width: 32-bit, Size: 1 MB (MSSペリフェラルのアドレス空間にアクセスする)

– BAR 1 Width: 32-bit, Size: 64 KB (eSRAMメモリにアクセスする)

– Device ID: 0x11AA (MicroSemiのID)

– Subsystem Vendor ID: 0x11AA (MicroSemiのID)

Page 26: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

26 Revision 0

Figure 25 • SERDESコンフィグレータ

3. “Edit Registers”をクリックし、GUIから制御できない追加のSERDESIFレジスタを設定します。

PCIE_AXI_MASTER_WINDOWを使って、PCIeアドレス・ドメインからローカル・デバイスのアドレス・ド

メインに変換します。このデモではPCIE_AXI_MASTER_WINDOWは、BAR0とBAR1のアドレスをMSS GPIO

アドレスとeSRAMアドレスに変換するために使用されます。下記レジスタを設定します。

– PCIE_AXI_MASTER_WINDOW0_0を0xC000_0000に: BAR1アドレス空間をMSS GPIO/ペリフェラルの

アドレス (0x4000_0000) に変換します。CoreAHBLiteは ベース・アドレスから0x8000_0000アドレスを

差し引いた設定になることに注意して下さい。

Page 27: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 27

– PCIE_AXI_MASTER_WINDOW0_1を0xFFF0_0001に: ウィンドウの最大サイズの設定です。

– PCIE_AXI_MASTER_WINDOW0_2を0x0000_0001に: BAR0用にAXI window 0を有効にします。

– PCIE_AXI_MASTER_WINDOW1_0 を 0xA000_0000 に : BAR1 ア ド レ ス 空 間 を eSRAM ア ド レ ス

(0x2000_0000) に変換します。

– PCIE_AXI_MASTER_WINDOW1_1を0xFFF0_0001に: ウィンドウの最大サイズの設定です。

– PCIE_AXI_MASTER_WINDOW1_2を0x0000_0002に: BAR1のAXI window 1を有効にします。

Figure 26にレジスタの設定を示します。

Figure 26 • レジスタ・コンフィグレーション

4. OKをクリックしてレジスタ・コンフィグレータを閉じます。

Page 28: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

28 Revision 0

5. OKをクリックして”High Speed Serial Interface Configurator”を保存シテ閉じます。

6. SmartDesignウィンドウで、Figure 27に示す様に”Auto Connect” オプションをクリックします。

Figure 27 • “Auto Connect” オプション

7. Figure 28で示すように”Auto Connect”機能はSERDES_0とPCIe_Demo_0 コンポーネント間の接続を構築し

ます。

Page 29: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 29

Figure 28 • “PCIe_Demo_top” SmartDesign

“PCIe_Demo_top” SmartDesign内に”Debounce”ロジックをインスタンシエー

ト 1. このデモではSmartFusion2開発キット上のプッシュ・ボタンでホストPCに割り込みを送ることができます。

プッシュ・ボタンはスイッチ・バウンスを発生し、PCIeへの複数割り込みを引き起こします。このスイッチ・

バウンスを避けるためにデバウンス回路が必要となります。

2. PCIeデモ・デザインにこのデバウンス回路を追加します。File > New > HDLとクリックして下さい。

3. “Create a new HDL file”ウィンドウが表示されます。Name欄にDebounceと入力しFigure 29のよう

に”Initialize file with standard template”のチェックを外します。

Page 30: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

30 Revision 0

Figure 29 • 新しいHDLファイルを生成

4. OKをクリックしてウィンドウを閉じます。

5. Debounce.v ファイルが生成され、Figure 30のように現れます。

Figure 30 • 新しいファイル

Page 31: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 31

6. プロジェクト・フォルダの”source files”フォルダ内にあるDebounce.v中のVerilogソース・コードをコピーし、

Saveをクリックします。

7. “Design Hierarchy”ウィンドウにDEBOUNCEコンポーネントが現れます。PCIe_Demo_topタブをクリック

して、DEBOUNCEコンポーネントを”Design Hierarchy”から”PCIe_Demo_top” SmartDesignキャンバスに

ドラッグします(Figure 31参照)。このVerilog HDLファイルに対するSmartDesign用シンボルが自動的に生

成されます。

Figure 31 • “Design Hierarchy”内の”DEBOUNCE”コンポーネント

PCIe_Demo_topはFigure 32のようになります。 次のセクション(”PCIe_Demo_top”SmartDesign内のコンポーネン

トを接続)での説明に従い、すべてのブロックのピンを接続します。

“PCIe_Demo_top” SmartDesign内のコンポーネントを接続 “PCIe_Demo_top” SmartDesignのコンポーネントを接続するには2つの方法があります。

ひとつめの方法は”Connection Mode”オプションを使用する方法です。この方法を使うには、SmartDesignウィンド

ウの”Connection Mode”をクリックしてSmartDesignを”connection mode”(接続モード)に変更します(Figure 32)。

カーソルが通常時の形から接続モード時のアイコンに変わります。このモードで接続をするには片方のピンをクリッ

クし、そのまま、接続したい相手のピンにドラック・アンド・ドロップします。

Page 32: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

32 Revision 0

ふたつめの方法は繋ぎたいピンを選びコンテキスト・メニューからConnectを選ぶ方法です。CTRL(コントロール)

キーを押しながら繋ぎたい複数のピンを選び、入力信号部分を右クロックし、出てきたメニュー(コンテキスト・メ

ニュー)で、Connectを選択しすべての信号を接続します。同様に、入力信号を右クリックし、Disconnectを選択す

ると接続されていた信号を切り離すことができます。

Figure 32 • SmartDesign内の”PCIe_Demo_top”

1. PCIe_Demo_0のFIC32_0_PINSを展開しTable 2のように接続します。

Table 2 • FIC32_0_PINs

PCIe_Demo_0から へ

FIC_32_0_CLK

CLK_BASE of SERDES_IF_0

CLK of DEBOUNCE_0

Page 33: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 33

3. PCIe_Demo_0のSDIF1_PINSを展開しTable 3のように接続します。

Table 3 • SDIF1_PINS

PCIe_Demo_0から SERDES_IF_0へ

SERDESIF1_PHY_RESET_N PHY_RESET_N

SERDESIF1_CORE_RESET_N CORE_RESET_N

SERDESIF1_SPLL_LOCK SPLL_LOCK

3. PCIe_Demo_0のCORESF2CONFIG_0_PINSを展開しTable 4のように接続します。

Table 4 • CORESF2CONFIG_0_PINS

PCIe_Demo_0から SERDES_IF_0へ

APB_S_PCLK APB_S_PCLK

APB_S_PRESET_N APB_S_PRESET_N

4. PCIe_Demo_0のCORESF2RESET_0_PINSを展開してTable 5のように接続します。

Table 5 • CORESF2RESET_0_PINS

From PCIe_Demo_0から へ

USER_FAB_RESET_N

FIC32_0_RESET_IN_N of PCIe_Demo_0

RESET_N of DEBOUNCE_0

5. PCIe_Demo_0のEXT_RESET_IN_Nを右クリックして”Tie high”を選択します。

6. PCIe_Demo_0のUSER_FAB_RESET_IN_Nを右クリックして”Tie high”を選択します。

7. PCIe_Demo_0のGPIO_FABRICを右クリックして”Promote to top level”を選択します。

8. CoreAHBLite_0_PINSを展開してREMAP_M0を右クリックして”Tie low”を選択します。

9. DEBOUNCE_0のSWITCHを右クリックして”Promote to top level”を選択します。

Page 34: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

34 Revision 0

10. SERDES_IF_0の下記ポートをCTRL(コントロール)キーを押しながら選択し、右クリックして”Mark Unused”

を選択します。

– PCIE_SYSTEM_INT

– PLL_LOCK_INT

– PLL_LOCKLOST_INT

– PCIE_EV_1US

11. PCIeは4つの割り込みをサポートします。このデザインではその4つのうちのひとつの割り込みのみを使用し

ます。未使用の割り込みはロジック ‘0’に接続するために、割り込みピンを2つのグループに分けます。

SERDES_IF_0のPCIE_INTERRUPT[3:0] を右クリックし、”Edit Slice”を選択します。”Edit Slice”ウィンドウ

がFigure 33のように表示されます。

Figure 33 • スライスの編集

Page 35: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 35

12. Figure 34のように”2” slices of width ”2”と選択します。

Figure 34 • スライスの編集

13. PCIE_INTERRUPT[3:0]を展開してPCIE_INTERRUPT[3:1]を右クリックし”Tie low”を選択します。

14. DEBOUNCE_0 のINTERRUPTをSERDES_IF_0のPCIE_INTERRUPT[0] と接続します。

15. “Auto arrange instances”をクリックしてインスタンスを整列させた後、File > Saveとクリックします。

PCIe_Demo_topはFigure 35のようになります。

Page 36: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

36 Revision 0

Figure 35 • “PCIe_Demo_Top”デザイン

Page 37: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 37

ファームウェアの構成と生成 1. Design > Configure FirmwareとクリックしFigure 36で示すようにCMSIS以外のドライバすべてのチェック

を外します。

Figure 36 • ファームウェアを構成

4. PCIe_Demo_topタブを開き、Figure 37のように”Generate Component”アイコンをクリックします。

Figure 37 • コンポーネントを生成

3. デザインがエラー無く生成されると、Libero SoCのLogウィンドウに”‘PCIe_Demo_top' was successfully

generated”と表示されます。LiberoはSoftConsoleのソフトウェア・プロジェクトも生成します。コンポーネン

ト生成が成功した際のLogウィンドウはFigure 38のように表示されます。

Figure 38 • “Log”ウィンドウ

Page 38: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

38 Revision 0

ステップ2: eNVMクライアントの生成 ここまでで、このデモのHDLと論理デザイン部分が出来上がりました。ここからのセクションではMSSとSERDESIF

の初期化に使用するCortex-M3ファームウェアの作成を説明します。

SERDESIF初期化用のファームウェア・アプリケーションをCoreSF2Config経由でeNVMクライアントにアップロー

ドする必要があります。Cortex-M3プロセッサはSmartFusion2デバイスがリセットされた後にeNVM中のコードを実

行します。このデザインでは、SERDESIF初期化用のファームウェア・アプリケーション・コードでeNVMクライア

ントを作成します。

1. ファームウェアeNVMクライアントを生成するために、Figure 39のように”Design Flow”ウィンドウの”Write

Application Code”をクリックします。

Figure 39 • SoftConsoleプロジェクトを起動

Page 39: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 39

5. SoftConsole IDEが起動され、SoftConsoleのプロジェクト・ワークスペースがFigure 40のように表示されます。

Figure 40 • SoftConsole ワークスペース

3. “Project Explorer”の中にあるプロジェクトPCIe_Demo_MSS_CM3_appと

PCIe_Demo_MSS_CM3_hw_platformをCTRLキーを押しながら選択します。

4. 右クリックして”Build Configurations > Set Active > Release”と選びます(Figure 41参照)。

Page 40: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

40 Revision 0

Figure 41 • リリース・モードのオプション

5. PCIe_Demo_MSS_CM3_appを選択し、右クリックしてPropertiesを選びます(Figure 42参照)。

Page 41: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 41

Figure 42 • プロパティ・オプション

Page 42: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

42 Revision 0

6. “Properties for PCIe_Demo_MSS_CM3_app”ウィンドウがFigure 43のように開きます。

Figure 43 • プロパティ・ウィンドウ

7. “Properties for PCIe_Demo_MSS_CM3_app”で、”C/C++ Build”オプションを開き、Settingsを選びます。

8. Miscellaneousを選択し、リンカにリリース・モードのリンカ・スクリプト・ファイルを渡します。

Figure 44のように”Linker flags”欄に下記パスを入力します。

-T../../PCIe_Demo_MSS_CM3_hw_platform/CMSIS/startup_gcc/production-execute-in-place.ld

Page 43: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 43

Figure 44 • LDファイルのオプション

9. “OK”をクリックして”Properties for PCIe_Demo_MSS_CM3_app”ウィンドウを閉じます。

10. プロジェクトをクリーン、ビルドするために Figure 45のようにProject > Cleanを選択します。

Figure 45 • SoftConsoleプロジェクトをビルドする

Page 44: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

44 Revision 0

11. Cleanウィンドウが開きます。OKをクリックしてSoftConsoleプロジェクトをビルドします(Figure 46参照)。

Figure 46 • SoftConsoleプロジェクトのクリーン・アンド・ビルド

12. SoftConsole はPCIe_Demo_MSS_CM3_appプロジェクトの下のRelease フォルダ内にhexファイルを生成

します(Figure 47参照)。

Page 45: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 45

Figure 47 • 生成されたHEXファイル

13. Liberoプロジェクトを開きPCIe_Demo_MSSタブをクリックしてeNVMクライアントを追加します。

SmartDesignのMSSコンフィグレータ内にあるENVMモジュールをダブル・クリックし、Figure 48のように

eNVMデータ・ストレージ・クライアントを追加します。

Page 46: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

46 Revision 0

Figure 48 • MSSコンフィグレータ内のENVMブロック

14. eNVMコンフィグレータ・ウィンドウがFigure 49のように表示されます。

Page 47: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 47

Figure 49 • “Modify core – ENVM”

15. “Available client types”欄の中にある”Data Storage”を選択し、”Add to System”をクリックします。 “Add

Data Storage Client”ウィンドウがFigure 50のように開きます。

Figure 50 • データ・ストレージ・クライアントを追加

Page 48: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

48 Revision 0

16. “Add Data Storage Client”ウィンドウのデータ・ストレージの”Client Name”欄にeNVMと入力します。

17. “Browse…”ボタンを押し、(生成されたHEXファイルにて)生成された”.hex”ファイルを指定します。Figure51

のように、この実行ファイルはSoftConsole プロジェクトのワークスペース内部の”Release”フォルダの中に

あります。

Figure 51 • ブラウズして.hex ファイルを探す

18. Figure 52のように”Add Data Storage Client”ウィンドウのOKをクリックします。

Page 49: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 49

Figure 52 • データ・ストレージ・クライアントを追加

19. ENVMコンフィグレータ・ウィンドウのOKをクリックします。

Figure 53 • “Modify Core – ENVM”

Page 50: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

50 Revision 0

20. PCIe_Demo_MSSを保存し、SmartDesignの”Generate Component”をクリックし、PCIe_Demo_topコンポ

ーネントを再生成します。

ステップ3: シミュレーション用スティミュラスの開発 本設計過程において、SERDESIFはBFMシミュレーション・モデルに対応して生成されています。BFMシミュレーシ

ョン・モデルはPCIeインターフェイス全体をシンプルなBFMに置き換え、AHBLiteインターフェイスから書き込み、

読み出しトランザクションを送ることができます。これらのトランザクションはひとつのファイルによってドライブ

され、PCIeインターフェイスに接続するFPGAデザインのシミュレーションを簡単にします。SmartFusion2 PCIeイ

ンターフェイスは完全にハード化され検証済なので、このシミュレーション方法はFPGAデザインに集中するという

利点があります。

このセクションではSmartDesignで生成されたBFMスクリプト(user.bfm)ファイルを修正変更方法を説明します。

BFMスクリプト・ファイルはFIC_0を介してPCIeのMSSから(への)書き出し/読み出しをシミュレーションします。

1. SERDESIF_1_user.bfmファイルを開きます。SERDESIF_1_user.bfmを開くには、Figure 54のようにFilesタ

ブ> Simulationフォルダに行き、SERDESIF_1_user.bfmをダブル・クリックします。

Figure 54 • SmartDesignが生成した”SERDESIF_1_user.bfm”ファイル

Page 51: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 51

2. SERDESIF_1_user.bfmファイルに下記のリード/ライト用コマンドを追加します。

memmap GPIO 0xC0013000;

memmap eSRAM 0xA0000000;

procedure main;

# add your BFM commands below:

wait 500us;

wait 500us;

wait 500us;

write64 w GPIO 0x00 0x0 0x5;

write64 w GPIO 0x04 0x0 0x5;

write64 w GPIO 0x08 0x0 0x5;

write64 w GPIO 0x0C 0x0 0x5;

write64 w GPIO 0x10 0x0 0x5;

write64 w GPIO 0x14 0x0 0x5;

write64 w GPIO 0x18 0x0 0x5;

write64 w GPIO 0x1C 0x0 0x5;

write64 w GPIO 0x88 0x0 0x01;

write64 w GPIO 0x88 0x0 0x03;

write64 w GPIO 0x88 0x0 0x07;

write64 w GPIO 0x88 0x0 0x0F;

write64 w GPIO 0x88 0x0 0x1F;

write64 w GPIO 0x88 0x0 0x3F;

write64 w GPIO 0x88 0x0 0x7F;

write64 w GPIO 0x88 0x0 0xFF;

write64 w eSRAM 0x00 0x0 0x12345678;

write64 w eSRAM 0x04 0x0 0x87654321;

write64 w eSRAM 0x08 0x0 0x9ABCDEF0;

Page 52: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

52 Revision 0

write64 w eSRAM 0x0C 0x0 0x0FEDCBA9;

readcheck64 w eSRAM 0x00 0x0 0x12345678;

readcheck64 w eSRAM 0x04 0x0 0x87654321;

readcheck64 w eSRAM 0x08 0x0 0x9ABCDEF0;

readcheck64 w eSRAM 0x0C 0x0 0x0FEDCBA9;

3. 修正後のBFMファイルはFigure 55のようになります。

Figure 55 • 修正後のSERDESユーザBFM

Page 53: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 53

ステップ4: デザインをシミュレート 本デザインはAXIバス・インターフェイスを介して高速シリアル・インターフェイス・ブロックと通信する、BFM_PCIe

シミュレーション・レベルをサポートしています。シリアル通信は実際には高速シリアル・インターフェイス・ブロ

ックを通りませんが、 このシミュレーションでファブリック・インターフェイス接続を検証することができます。

<Liberoプロジェクト>/simulation フォルダの下のSERDESIF_1_user.bfmファイルにはMSS GPIOとeSRAMへのリ

ード/ライト・アクセス検証のBFMコマンドが含まれています。

1. このセクションではデザインをシミュレーションするためにSmartDesignテストベンチとBFMスクリプト・フ

ァイルをどのように使用するかを説明します。Libero SoCの “project settings”を開きます。 (Project > Project

Settings).

6. “Project Settings”ウィンドウの”Simulation Options”の下にある”Do File”を選択します。Figure 56のよう

に”Simulation runtime” を525usに変更します。

Figure 56 • プロジェクト設定 – DOファイル・シミュレーションのランタイム設定

3. “Simulation Options”の下のWaveformsを選択します(Figure 57参照)。

– “Log all signals in the design”にチェックを付けます。

– Closeをクリックして”Project settings”ダイアログ・ボックスを閉じます。

Page 54: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

54 Revision 0

– 変更を保存するどうか促された場合はSaveを選択してください。

Figure 57 • プロジェクト設定 – Waveform

シミュレーションを実行するために、” Design Flow”ウィンドウの中の” Verify Pre-Synthesized Design”の下にあ

るSimulateをダブル・クリックしてください。

ModelSimが約525us実行されます。Figure 58に示すようにModelSimのtranscriptウィンドウにはBFMコマンドとエラ

ーなくシミュレーションが完了したと表示されます。

Page 55: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 55

Figure 58 • SERDES BFM シミュレーション

Page 56: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

56 Revision 0

ステップ5: プログラミング・ファイルの生成 1. Figure 59に示すように” Design Flow”ウィンドウの中の”I/O Constraints”をダブル・クリックします。”I/O

Editor” ウィンドウはSynthesize(論理合成)とCompile(コンパイル)が完了した後に表示されます。

Figure 59 • I/Oコンストレインツ

Page 57: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 57

2. “I/O Editor”が表示され、ピン・アサインをTable 6で示すようにおこないます。ピン・アサインが終わると”I/O

Editor”は”Figure 60に示すようになります。

Table 6 • ポートからピンへのマッピング

ポート名 ピン番号

CLK0_PAD U7

GPIO_0_M2F A18

GPIO_1_M2F B18

GPIO_2_M2F D18

GPIO_3_M2F E18

GPIO_4_M2F A20

GPIO_5_M2F D20

GPIO_6_M2F E20

GPIO_7_M2F B20

GPIO_8_M2F R3

GPIO_9_M2F R4

GPIO_10_M2F AE2

GPIO_11_M2F AD1

SWITCH AA2

これらピン・アサインはSmartFusion2開発キットにおける下記の接続になります。

– CLK0_PAD と 基板上の50 MHzクロック・オシレータ

– 基板上のLEDにGPIO_0からGPIO_8

– 基板上のDIPスイッチにGPIO_8からGPIO_11

– SWITCH と 基板上のSW3

Page 58: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

58 Revision 0

Figure 60 • I/Oエディタ

3. 配置配線、タイミング検証、書き込みファイル生成のために、”Generate Programming Data”アイコンをク

リックします (Figure 61参照)。

Page 59: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 59

Figure 61 • プログラミング・データの生成

デモを走らせる

デモのセットアップ 1. FlashPro4 プログラマをSmartFusion2 SoC FPGA開発キットのJ59コネクタに繋げます。

7. SmartFusion2 SoC FPGA開発キットのジャンパー設定を下記Table 7に示すように設定します。

Note: ジャンパー変更の際には、ボードの電源供給スイッチSW7がOFF側に設定されていることを確認してください。

Table 7 • SmartFusion2 SoC FPGA開発キットのジャンパ設定

ジャンパ ピン (~から) ピン (~へ)

J70, J93, J94, J117, J123, J142, J157, J160, J167, J225, J226, J227 1 (デフォルト) 2

J2 1 (デフォルト) 3

J23 2 (デフォルト) 3

3. 電源供給をJ18コネクタに接続します。

4. 電源供給スイッチSW7をON側にします。

5. SmarFusion2デバイスにデザインを書き込むために、”Design Flow”ウィンドウにある”Run Programming

Action”をダブル・クリックします(Figure 62参照) 。

Page 60: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

60 Revision 0

Figure 62 • “Run Programming Action”

6. 書き込む成功後、SmartFusion2開発キットの電源を落とし、ホストPCをシャットダウン(終了)します。

7. “J230 - PCIe Edge”コネクタをホストPCの PCIeスロットとPCIエッジ・カード・リボンを通して接続します。

Note: PCのPCIeスロットにPCIeコネクタ・ケーブルを繋ぐ時は、PCがOFF状態にあることを確認してください。

8. 基板のセットアップはFigure 63のようになります。

Page 61: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 61

Figure 63 • SmartFusion2開発キットのセットアップ

9. 電源供給スイッチSW7をONにします。

10. ホストPCを立ち上げ、”PCIeデバイス”をPCの”デバイス・マネージャー”で確認します。Figure 64のように表

示されます。デバイスが検出されなかった場合は、SmartFusion2開発キットの電源を立ち上げ直し、デバイ

スマネージャーで”ハードウェア変更のスキャン”をクリックして下さい。

11. もしSmartFusion2のPCIeデバイスに対して既に他のドライバ(以前のバージョンのJungo(ジャンゴ)社のドラ

イバがインストールされていた場合は、それらはアンインストールしてFigure 64に示すように”デバイス・マ

ネージャー”ウィンドウにPCIデバイスが表示されることを確認して下さい。

Page 62: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

62 Revision 0

Figure 64 • デバイス・マネージャ – PCIeデバイスの検出

Note: もしデバイスが検出されない場合は、ホストPCのBIOSバージョンが最新であるか、ホストPCのBIOSにてPCI

が有効(enable)になっているかどうかを確認して下さい。

ドライバのインストレーション このPCIeデモではJungo WinDriverProから提供されているドライバ・フレームワークを使用します。SmartFusion2 開

発キット向けにホストPCにPCIeドライバをインストールするには、下記のステップをご利用下さい。

1. C:¥ドライブ にSF2_PCIe_Demo.rarを解凍して下さい。”SF2_PCIe_Demo.rar”ファイルは提供されているデ

ザイン・ファイル内に用意されています。

– 64-bit向け: M2S_PCIE_Control_DEMO_DF¥Drivers_64bitOS¥SF2_PCIe_Demo.rar

– 32-bit向け: M2S_PCIE_Control_DEMO_DF¥Drivers_32bitOS¥SF2_PCIe_Demo.rar

2. C:¥SF2_PCIe_Demo¥DriverInstall¥Jungo_KP_install.bat このバッチ・ファイルを実行して下さい。

Note: これらドライバのインストールにはPCの管理者権限が必要になります。

Page 63: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 63

3. Figure 65のようなウィンドウが開いたら、Installをクリックして下さい。

Figure 65 • Jungoドライバのインストレーション

4. Figure 66のようなウィンドウが現れたら”Install this driver software anyway”をクリックして下さい。

Figure 66 • Windowsセキュリティ

Page 64: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

64 Revision 0

PCIeデモのGUI SmartFusion2 PCIeデモのGUIは、SmartFusion2 PCIe EPデバイスと通信できるPCで動くシンプルなグラフィック・

ユーザー・インターフェイスです。GUIはPCIeのリンク・ステータス、ドライバ情報、デモのコントロールを提供し

ます。GUIはホストPCにインストールされたPCIeドライバを呼び出し、ユーザー選択に応じてコマンドをドライバに

提供します。

以下のステップに従いGUIをインストールして下さい。

1. 提供されたSF2_PCIe_GUI_Installer¥setup.exe のsetup.exeをダブル・クリックしてください。Figure 67に示

されるそのままの設定を使用します。

Figure 67 • GUIのインストレーション

2. Nextをクリックしてインストールを完了します。インストール完了後、次のウィンドウが表示されます。

Page 65: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 65

Figure 68 • GUIのインストレーションが成功

3. ホストPCを再起動して下さい。

デザインを走らせる 1. ドライバを確認するためにホストPCの”デバイス・マネージャー”を確認して下さい。もしデバイスが検出され

ない場合はSmartFusion2開発キットの電源を立ち上げ直し、デバイス・マネージャーで”ハードウェア変更の

スキャン”をクリックして下さい。

Page 66: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

66 Revision 0

Figure 69 • デバイス・マネージャ – PCIeデバイスの検出

Note: “デバイス マネージャー”にて、DEVICEあるいはWinDriverアイコンに注意マークが表示される場合は、それら

をアンインストールし、『ドライバのインストール』のステップ1から始めて下さい。

2. ALL Programs > SmartFusion2_PCIe > SmartFusion2_PCIe.exeからGUIを起動します。GUIはFigure 70の

ように現れます。

Page 67: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 67

Figure 70 • PCIeデモのGUI

3. PCIeデモのGUIのGUIの右上にあるConnectボタンをクリックすると、Figure 71にあるようなメッセージが

GUI上に現れます。

Figure 71 • バージョン情報

Page 68: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

68 Revision 0

4. 左側にある”Demo Controls”ボタンをクリックすると、Figure72に示すようにLEDとDIPスイッチのポジショ

ン(状態)が表示されます。

Figure 72 • デモのコントロール

5. SmartFusion2開発キットのLEDをオン/オフするにはGUIのLEDをクリックして下さい。

6. SmartFusion2開発キットのLEDを点滅させるには”Start LED ON/OFF Walk”をクリックして下さい。

7. 点滅を止めるには”Stop LED ON/OFF Walk”をクリックします。

8. SmartFusion2開発キットのDIPスイッチ (SW10) の位置を変えると”GUI SWITCH MODULE”のスイッチの位

置も同じようになることが観測できます。

9. “Enable Interrupt Session”をクリックして PCIe割り込みを有効にします。

10. SmartFusion2開発キットのSW3のボタンを押し、GUIの”Interrupt Counter”部分の割り込みカウントを観測し

てください(Figure 73参照)。

Page 69: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 69

Figure 73 • インタラプト・カウンタ

11. “Clear/Disable Interrupts”をクリックするとPCIeの割り込みがクリアされ無効になります。

12. “Config Space” をクリックし、PCIeコンフィグレーション空間に関する詳細を確認して下さい。Figure 74

はそのPCIeコンフィグレーション空間を示しています。

Page 70: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

70 Revision 0

Figure 74 • コンフィグレーション空間

13. “PCIe R/W”をクリックして、BAR1空間を経由してeSRAMにリード/ライトを実行します。Figure 75はPCIe の

R/Wウィンドウを示します。

Page 71: SmartFusion2 SoC FPGA PCIe コントロール・プレーンのデモ...SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ Revision 0 5 PCIエッジ・カード・リボン・ケーブル

SmartFusion2 SoC FPGA – PCIeコントロール・プレーンのデモ

Revision 0 71

Figure 75 • PCIeを使ってeSRAMへの読み書きを実行

14. Exitをクリックしてデモを終了します。

結論 このデモはSmartFusion2 のPCIeエンドポイント機能にどのようにアクセスするかを説明し、簡単なデザインを作る

手順を提供します。BFMシミュレーションを使用したデザイン検証の手順を説明しています。このデモは、Jungo社

のドライバを介してPCIeエンドポイント・デバイスを容易に制御するためのGUIを提供します。またSmartFusion2の

PCIeインターフェイスを使用してホストPCがSmartFusion2開発キットと簡単に通信できるデモンストレーションを

おこなえます。