EDKでPCIe+DDR3のアクセラレータフレームワークを作る(2)

技術紹介

実際に,EDKを使ってフレームワークを作るまでの手順をまとめます.

作るもののイメージ,リソースファイルは,「EDKでPCIe+DDR3のアクセラレータフレームワークを作る(1)」をどうぞ.

作成手順

今回の作成のおおまかな手順は次の通りです.

  1. プロジェクトを作り「New Source…」としてEmbedded Processorを選択
  2. とりあえず,PCIeとDDR3を使えるようにしてEmbedded Processorのウィザードを閉じる
  3. MicroBlaze関連は不要なので削除
  4. 各IPコアの設定をする
  5. IPコアのポートを適切に接続,あるいは,内部で接続しないものを外に出す
  6. AXIコアのAXIメモリ空間上のアドレスを決定する
  7. トップモジュールをHDLで書く
  8. 合成,配置配線

ここでは,3までの手順を紹介します.4以降はEDKで「PCIe+DDR3のアクセラレータフレームワークを作る(3)」をどうぞ.

プロジェクトの用意

なにはともあれ,プロジェクトが必要です.今回はターゲットボードとしてKC705を選べばいいので簡単です.

右クリックしてコンテクストメニューから「New Source…」を選んで,Embedded Processorを選択します.適当に名前をつけます.ここではaxi_cdma_systemにしました.

start2

Embeddedプロセッサウィザード

BSBウィザードを開くか尋ねられるので,OKをクリックしてみます.

BSB Wizardがはじまります.今回はAXIを使ってシステムを作るので,AXI Systemにチェックが入っていることを確認してOKをクリック.

bsb2

KC705のデフォルトシステムを流用します.今回は使わないですが,Dual MicroBlazeな環境も構築できるのですね!

bsb3

RS232_UARTや,およそマイコンシステムに必要そうなモジュールが標準で選択されているので,それらをばさばさとRemoveして,DDR3とPCIeだけシステムに組み込みます.

bsb4

Finishをクリックすると,無事Embedded Processorがプロジェクトに追加されました.

bsb5

XPSでコアの設定をする

すべき作業は,

  • MiroBlazeの削除
  • AXIコアのポートを適切に接続する
  • 各AXIコアのアドレスを決める

です.

ISEのHierarchyペインのaxi_cdma_systemをダブルクリックしてXPSを起動します.たぶん,↓のようになっているはずです.

xps1

今回は不要なmicroblaze関連,debug_module,PCIe_diff_Clk_1,util_and_logic_0をばさばさ削除します.削除するには,対象のコンポーネントを選択し右クリックしてコンテクストメニューからDelete Instanceを選択します.複数選択してまとめて削除することもできます.もし,

こんなダイアログがでてきたら,「Delete selected instances and all their connections」を選んで,全部消しちゃいましょう.

注意

ばしばしとインスタンスをGUI上で消したつもりでも,接続関係が残ってしまう場合があるようです.たとえば,次のようなエラーメッセージがコンソールに残ってました.

xps3

見辛いですね.

要は,microblaze_0.M_AXI_DCっていう名前のマスタがないぞ,と怒っているわけです.

これは,GUIからはどうしようもない(と思う)ので,テキストで管理されている元データを直接いじることにします.デフォルトでは,元データはプロジェクトの作業フォルダの下にEmbedded Processorの名前のフォルダ内の拡張子がmhsのファイルに保存されています.今回の場合であれば,

axi_cdma_system/axi_cdma_system.mhs

です.これを適当なエディタで開いて編集します.エラーメッセージに表示されている名前で検索すると,確かにMicroBlaze関連の接続の残骸が残っていました.

xps4

というわけで,C_INTERCONNECT_S_AX_MASTERSのmicroblazeのエントリを削除しました.XPS GUIを開いている裏でエディタで編集しても大丈夫です.ちゃんとツールが変更を検知してリロードを促してくれます.

xps5

ここまでで,↓のような

remove_microblaze1

感じになります.だいぶすっきりしましたね.

GPIOコアを追加しよう

MicroBlazeを削除するだけじゃなくて,内部にメモリアクセスでたたける作業用レジスタを用意しておきましょう.IPコアのインスタンスはXPS左のIPカタログペインから選んで追加できます.選択したら右クリックしてコンテクストメニューを開いて,「Add Instance」です.

axi_gpio

設定ダイアログが開きますが,ここでは,単にOKを押して追加してしまいましょう.とりあえず今回は,二つ追加してみました.Bus Interfacesペインは,↓のようになります.

axi_instances

 

コメント

タイトルとURLをコピーしました