FC2カウンター FPGAの部屋 AXIバスのEDKチュートリアルを試す9(カスタムIPを作る3)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

AXIバスのEDKチュートリアルを試す9(カスタムIPを作る3)

AXIバスのEDKチュートリアルを試す8(カスタムIPを作る2)”の続き。(使用するISEのバージョンは13.1)

次は、現在のプロジェクトに作成したカスタムIPを追加する。
EDK Concepts, Tools, and Techniques A Hands-On Guide to Effective Embedded System Design EDK 13.1 (UG683 April 13, 2011)の60ページのTake a Test Drive! Adding the Pcore to Your Projectからのチュートリアルをやってみる。

まずは、MPDファイルにLEDsのポート宣言を追加する必要があるそうだ。

1.system\pcores\blink_v1_00_a\dataの blink_v2_1_0.mpd を開いて、##Portsの項目にLEDsのポート宣言を追加する。blink_v2_1_0.mpd をセーブする。
SP605_AXI_EDK_88_110721.png

2.XPSでProjectメニューから> Rescan User Repositoriesを選択して、blink pcoreの変更をXPSに認識させる。
SP605_AXI_EDK_89_110721.png

・Xilinxは、カスタムIPを変更したときは、IPリポジトリをリスキャンすることを推奨しているそうだ。
・これでカスタムpcoreは、EDKで使用する準備ができた。
・PSFファイルや追加情報は、Platform Specification Format Reference Manualに書いてあるそうだ。

現在、プロジェクトに入ってるLEDs_4Bits pcoreを抜いて、blink pcoreを入れる。

3.System Assembly Viewで、LEDs_4Bits を選択して、右クリックメニューからDelete Instanceを選択する。
SP605_AXI_EDK_90_110721.png

4.Delete IP Instanceダイアログが開く。デフォルトのインスタンスとすべての接続を削除する。
SP605_AXI_EDK_91_110721.png

5.XPSのIP CatalogからProject Local PCores -> USER -> BLINKを選んで、右クリックメニューからAdd IPを選択する。
SP605_AXI_EDK_92_110721.png

6.XPS Core Configダイアログが開く。デフォルト値でOKボタンをクリックする。Interconnect Settings for BUFIFタブでは、Write Data FIFO DepthやRead Data FIFO Depthなどの設定もあるようだ。
SP605_AXI_EDK_93_110721.png

7.Instantiate and Connect IPダイアログが開く。Select the MicroBlaze Instance to Connect toでmicroblze_0が選ばれている。MicroBlazeは1個だけなので、選べるのはmicroblze_0のみ。
SP605_AXI_EDK_94_110721.png

8.XPSのBus Interfaceタブを見ると、blinkコアが入っているのがわかる。blinkとLEDsの間に外部接続を作る必要がある。
SP605_AXI_EDK_95_110721.png

9.blink_0を展開して、LEDsのプルダウンメニューからMake External を選択する。
SP605_AXI_EDK_96_110721.png

10.外部ピン名は、デフォルトで、blink_0_LEDs_pinとなった。NameやNetをクリックすると、名前を変更できる。MHSファイルを編集しても書き換えることができる。
SP605_AXI_EDK_97_110721.png

11.Addressタブをクリックすると、blink_0のアドレス領域が0x7C600000から0x7C60FFFFであることがわかる。64Kbyteのアドレスを割りつけられるので多いと思うが、これはデコーダのスピードをあげるために、わざとデコードするアドレスビットを減らしているそうだ。
SP605_AXI_EDK_98_110721.png

・最後にUCFファイルにLED出力のピン情報を追加する

12.Projectタブをクリックする。UCF File: data/system.ucfをダブルクリックする。
SP605_AXI_EDK_99_110721.png

13.system.ucfファイルが表示された。 LEDs_4Bits_TRI_Oを検索する。これは、先ほど削除したGPIO coreの制約で、XPSで削除しても自動的にUCFから削除されないそうだ。つまり、コアを削除したら、自分でUCFを修正して、コアの使用していた外部ピンの制約を削除する必要がある。
SP605_AXI_EDK_100_110721.png

14.LEDs_4Bits_TRI_Oをblink_0_LEDs_pinに置換して、セーブした。これでカスタムIPの追加は終了。
SP605_AXI_EDK_101_110721.png

15.XPSを閉じて、Project Navigatorに戻り、再度、Hierarchyウインドウでsystemを選択する。下のProcessesウインドウでGenerate Top HDL Source をダブルクリックして、トップレベルファイルを再生成する。(ピン名が違っているから)
SP605_AXI_EDK_23_110706.png

16.ProcessesウインドウでGenerate Programming File をダブルクリックして、インプリメントを開始した。
SP605_AXI_EDK_24_110706.png

・注:Project Navigatorでインプリメントしていると固まる時がある。その場合は、XPSでProjectメニューからClean All Generate Filesを行ってから、Project Navigatorで、ProjectメニューからCleanup Project Files...をすると直るようだ。

17.インプリメントが終了した。使用したLUTは21%だった。前回とパーセンテージは同じだが、使用数が少し違っている。上の図は今回のインプリメント。下の図が前回のインプリメント。
SP605_AXI_EDK_102_110721.png

SP605_AXI_EDK_25_110706.png

AXIバスのEDKチュートリアルを試す10(カスタムIPを作る4)”に続く。
  1. 2011年07月21日 05:52 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/1858-e90bd5ee
この記事にトラックバックする(FC2ブログユーザー)