実際に,EDKを使ってフレームワークを作るまでの手順をまとめます.
作るもののイメージ,リソースファイルは,「EDKでPCIe+DDR3のアクセラレータフレームワークを作る(1)」をどうぞ.
作成手順
今回の作成のおおまかな手順は次の通りです.
- プロジェクトを作り「New Source…」としてEmbedded Processorを選択
- とりあえず,PCIeとDDR3を使えるようにしてEmbedded Processorのウィザードを閉じる
- MicroBlaze関連は不要なので削除
- 各IPコアの設定をする
- IPコアのポートを適切に接続,あるいは,内部で接続しないものを外に出す
- AXIコアのAXIメモリ空間上のアドレスを決定する
- トップモジュールをHDLで書く
- 合成,配置配線
ここでは,3までの手順を紹介します.4以降はEDKで「PCIe+DDR3のアクセラレータフレームワークを作る(3)」をどうぞ.
プロジェクトの用意
なにはともあれ,プロジェクトが必要です.今回はターゲットボードとしてKC705を選べばいいので簡単です.
右クリックしてコンテクストメニューから「New Source…」を選んで,Embedded Processorを選択します.適当に名前をつけます.ここではaxi_cdma_systemにしました.
Embeddedプロセッサウィザード
BSBウィザードを開くか尋ねられるので,OKをクリックしてみます.
BSB Wizardがはじまります.今回はAXIを使ってシステムを作るので,AXI Systemにチェックが入っていることを確認してOKをクリック.
KC705のデフォルトシステムを流用します.今回は使わないですが,Dual MicroBlazeな環境も構築できるのですね!
RS232_UARTや,およそマイコンシステムに必要そうなモジュールが標準で選択されているので,それらをばさばさとRemoveして,DDR3とPCIeだけシステムに組み込みます.
Finishをクリックすると,無事Embedded Processorがプロジェクトに追加されました.
XPSでコアの設定をする
すべき作業は,
- MiroBlazeの削除
- AXIコアのポートを適切に接続する
- 各AXIコアのアドレスを決める
です.
ISEのHierarchyペインのaxi_cdma_systemをダブルクリックしてXPSを起動します.たぶん,↓のようになっているはずです.
今回は不要なmicroblaze関連,debug_module,PCIe_diff_Clk_1,util_and_logic_0をばさばさ削除します.削除するには,対象のコンポーネントを選択し右クリックしてコンテクストメニューからDelete Instanceを選択します.複数選択してまとめて削除することもできます.もし,
こんなダイアログがでてきたら,「Delete selected instances and all their connections」を選んで,全部消しちゃいましょう.
注意
ばしばしとインスタンスをGUI上で消したつもりでも,接続関係が残ってしまう場合があるようです.たとえば,次のようなエラーメッセージがコンソールに残ってました.
見辛いですね.
要は,microblaze_0.M_AXI_DCっていう名前のマスタがないぞ,と怒っているわけです.
これは,GUIからはどうしようもない(と思う)ので,テキストで管理されている元データを直接いじることにします.デフォルトでは,元データはプロジェクトの作業フォルダの下にEmbedded Processorの名前のフォルダ内の拡張子がmhsのファイルに保存されています.今回の場合であれば,
axi_cdma_system/axi_cdma_system.mhs
です.これを適当なエディタで開いて編集します.エラーメッセージに表示されている名前で検索すると,確かにMicroBlaze関連の接続の残骸が残っていました.
というわけで,C_INTERCONNECT_S_AX_MASTERSのmicroblazeのエントリを削除しました.XPS GUIを開いている裏でエディタで編集しても大丈夫です.ちゃんとツールが変更を検知してリロードを促してくれます.
ここまでで,↓のような
感じになります.だいぶすっきりしましたね.
GPIOコアを追加しよう
MicroBlazeを削除するだけじゃなくて,内部にメモリアクセスでたたける作業用レジスタを用意しておきましょう.IPコアのインスタンスはXPS左のIPカタログペインから選んで追加できます.選択したら右クリックしてコンテクストメニューを開いて,「Add Instance」です.
設定ダイアログが開きますが,ここでは,単にOKを押して追加してしまいましょう.とりあえず今回は,二つ追加してみました.Bus Interfacesペインは,↓のようになります.
コメント