FC2カウンター FPGAの部屋 キャラクタ・ディスプレイ・コントローラをAXI4スレーブにする2(Pcoreテンプレート生成)
FC2ブログ

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

FPGAの部屋

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

キャラクタ・ディスプレイ・コントローラをAXI4スレーブにする2(Pcoreテンプレート生成)

ar37425のAXI4 Masterサンプルを試す1(AXI_Master IPの登録、接続)”で作成したプロジェクトをコピーして、キャラクタ・ディスプレイ・コントローラのAXI4スレーブ・デバイスを作成することにした。

1.最初に、Add IPしたaxi_master_0 をDelete Instance した。
CDC_axi_slave_1_120225.png

2.Atlys_XPS_CDC_SVGA_134\pcores フォルダで、axi_slave_v1_00_a フォルダをコピーして、CDC_axi_slave_v1_00_a と名前を変更した。
CDC_axi_slave_2_120225.png

3.Atlys_XPS_CDC_SVGA_134\pcores\CDC_axi_slave_v1_00_a\data の下のファイル名を変更した。

4.CDC_axi_slave_v2_1_0.mpd の 46行目の BEGIN axi_slave を BEGIN CDC_axi_slave に変更した。

4A.CDC_axi_slave_v2_1_0.mpd の 52,53行目を以下のように変更した。

OPTION DESC = CDC_AXI Slave
OPTION LONG_DESC = CDC_AXI Slave


5.CDC_axi_slave_v2_1_0.pao の 50行目の lib axi_slave_v1_00_a axi_slave.vhd vhdl を lib CDC_axi_slave_v1_00_a CDC_axi_slave.vhd vhdl に変更した。

6.Atlys_XPS_CDC_SVGA_134\pcores\CDC_axi_slave_v1_00_a\hdl\vhdl の axi_slave.vhd を CDC_axi_slave.vhd に変更して、ファイルの中の axi_slave も CDC_axi_slave に変更した。

7.この状態で、XPSのPoject メニューからRescan User Repositoriesを選択し、リポジトリを更新した。

8.IP CatalogウインドウのProject Local PCores のUSER の下に、CDC_AXI Slaveが入った。
CDC_axi_slave_3_120225.png

*これで、IPコア名を変えて、Pcoreとして生成する目処が付いた。ここから、HDLファイルを追加して、CDC_axi_slave.vhd や.mpd, .paoファイルを修正する。現在修正中だ。
  1. 2012年02月25日 12:18 |
  2. AXI4 Slave IPの作製
  3. | トラックバック:0
  4. | コメント:6

コメント

こんにちは。この1月くらい業務で同じような事をやっています。
MicroBlazeにAXIでDDR2を接続して、外部からの大量データを格納しています。
愚痴で申し訳ないんですが、Xilinxのツールのクソさ加減には辟易します。
インプリメント結果を間違えるような事はないのですが、不具合多すぎです。
  1. 2012/02/25(土) 12:41:34 |
  2. URL |
  3. windy #-
  4. [ 編集 ]

windyさん、こんにちは。
お仕事でやられたんですね。わからないことがありましたら、コメントで教えて下さい。よろしくお願いします。
Xilinxのツールは、特にEDKはバグというか、仕様かもしれませんが、使い難い所が多いような気がします。しかし、うまく付き合っていかないとと思っています。いつも複数のバージョンをインストールするようにしています。複数のバージョンで確かめられるように。
  1. 2012/02/25(土) 15:24:20 |
  2. URL |
  3. marsee #WFaLwJm6
  4. [ 編集 ]

教えるなんてとんでもないです。このブログからAXIの情報をかき集めてばかりなので…
EDKの使いにくさはどうしようもないですね。僕はEDKの極力GUIを使わずにMHSファイルを直接編集するようにしています。
今のEDKってテキストファイルを開けないですよね。
Preferenceで外部エディタを設定してもエラーになっちゃうというお粗末さです。

ちなみに13.4ではSDKを単独で起動した場合にはSDKから「program FPGA」でFPGAへのコンフィグが出来ません。
なぜかDeta2Memがエラーで終了してしまいます。
ProjeNaviかXPSから起動していれば正常に出来るのですが。
13.3なら同じプロジェクトでも問題ないのに…

あと、ISEプロジェクト設定のworking directoryを変更しているとXPSサブモジュールを含んだデザインでISimが起動出来ません(最悪)
これはISEのTCLスクリプトのバグでした。自力で直してWebCaseで報告中です。

もう、やんなっちゃうよ…
  1. 2012/02/25(土) 19:33:44 |
  2. URL |
  3. windy #-
  4. [ 編集 ]

>ちなみに13.4ではSDKを単独で起動した場合にはSDKから「program FPGA」でFPGAへのコンフィグが出来ません。
これ、私もMicroBlaze MCSではまりました。

XPSの接続にもだいぶ慣れてきました。ほとんどGUIでやって、だめな時はMHSいじってます。

いろいろバグがあると思いますが、複数のバージョンで確かめてみています。でも、時間がかかっちゃうんですよね。。。Alteraも少ないかもしれませんが、バグはあるでしょうし、諦めて対処するようにしています。

バグ情報の共有はしたいし、有意義だと思っています。教えて頂いてありがとうございました。

今回は、自分でAXIバスのスレーブ・プロトコルを多少なりとも作って、カスタム・コアをXPSにシステムに接続しようと思っています。可能な限りソースと手順をブログに書いていこうと思っています。

次は、AXIバス・マスタ・プロトコルを作ってみようと思っています。途中でAltiumに手を出したりするかもしれませんが。。。
  1. 2012/02/25(土) 19:49:04 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

何度もすみませんが、ISEのDesign PropertyにあるWorking Directoryの設定って使ってますか?
SVNでソース管理してる事もあって、僕はプロジェクトファイルのディレクトリが出力ファイルで埋め尽くされるのが嫌なので必ず設定しているのですが、XilinxのWebCaseの担当者はこの設定を知りませんでした。
「デフォルトのまま使ってるお客様がほとんどです」という事でした。

こちらもAXI仕様のMCBに自作ペリフェラルを接続しているところです。
ペリフェラルと言ってもEDKのIPにはしないで、MIG生成のDDR2コアAXIに外部データとのブリッジを接続しています。
MicroBlazeのAXIはXPSモジュールから外に出してISEでのVHDLコード上で接続しています。
この方がシミュレーションが楽なので。
  1. 2012/02/27(月) 20:56:57 |
  2. URL |
  3. windy #-
  4. [ 編集 ]

残念ながら、Working Directoryは使っていません。ISEのインプリメント関係のファイルは、大体はISEバージョンごとにフォルダにまとめています。HDLソースファイルは別フォルダにして、Simulaiton 関係も別フォルダにしています。

XPSでは、ブリッジをつなぐだけですね。と言うことは、独自インターフェースのバスファンクションモデルを作ってあって、自由にシミュレーションでテストできるようになっているんでしょうか?

AXIバスのバスファンクションモデルを作ってみたいと思っています。そうすれば、自由にテストができますね。
  1. 2012/02/27(月) 21:45:00 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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