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

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

FPGAの部屋

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

キャラクタ・ディスプレイ・コントローラをAXI4スレーブにする12(現状)

キャラクタ・ディスプレイ・コントローラのAXI4バス・スレーブIPの作成はあまりうまく行ってないが、現状を書いておこうと思う。

まずは、AXI4バス・スレーブIPの名前がCDC_axi_slave で、CDCの大文字が入っているので、シミュレーションできなかと思って、一旦、CDC_axi_slave をデリートして、cdc_axi_slave に書き換えて、もう一度XPSにAdd IP してみた。そうして、シミュレーションしてみたが、やはり、cdc_axi_slave がないと言われてしまった。
CDC_axi_slave_46_120322.png

SDKのXilinx ToolsメニューからProgram FPGA を選択したら、エラーになってしまう。
CDC_axi_slave_48_120322.png

仕方がないので、iMPACT でコンフィグレーションしてから、SDKでchardisp_w_r.elf を右クリックメニューからDebug As -> Launch on Hardware を選択して、デバックモードへ移行する。
XMDを起動して、mwr 0x0001000 0x0000ffc1 でキャラクタ・ディスプレイ・コントローラのAXI4バス・スレーブIPにキャラクタ・データの書き込みを行うが、mrd 0x0001000 で読みだしてもオール0のままで書き込めていない。
CDC_axi_slave_47_120322.png

同じAXI4バス上にあるMCBには読み書きできる。

(現在は、microblaze_0 のAXI4バスのアドレス0x0001000 にキャラクタ・ディスプレイ・コントローラのAXI4バス・スレーブIPを接続している)
CDC_axi_slave_49_120322.png

ChipScope でS_AXI_AWVALID が1の時にトリガーをかけておいてもmwr 0x0001000 0x0000ffc1 でトリガーがかからない。
CDC_axi_slave_50_120322.png

どうやってデバックするか?を考えている。

(2010/03/24:追加)
cdc_axi_slave_v2_1_0.pao ファイルに、”lib cdc_axi_slave_v1_00_a afifo_sm.vhd vhdl”の行を追加してもシミュレーションはできません。
system_top_tb_beh.prj にはcdc_axi_slave.vhd の行もあったし、良く分かりません。つまりコンパイルできているはず。なんでエラボレートできないのだろうか?名前間違っている?

  1. 2012年03月22日 06:01 |
  2. AXI4 Slave IPの作製
  3. | トラックバック:0
  4. | コメント:5

コメント

ISimがモジュールを見つけてくれないのは、IPのpaoファイルに原因があるのではないかと思います。

ISimの起動エラーの調査には出力ディレクトリのfuse.logというファイルが参考になるかもしれません。
このファイルの前半部分に解析されたソースがリストアップされているので、目的のIPのソースが挙がっているかを確認します。

さらに出力ディレクトリにあるfuseの起動プロジェクトファイルにIPのソースが正しく出力されているかを確認します。
この場合のプロジェクトファイル名は、「system_top_tb_beh.prj」です。
ここにソースが挙がっていないとfuseで正しく認識されません。

では、ソースが挙がっていなかった時にどうすれば良いのかというと、はっきりとは分かりません(スミマセン…)
IPでCoreGenの生成コアを使用していたりすると、コアのシミュレーションモデルが含まれるようにしないと同じようにfuseが見つけられずにエラーになってしまいます。
  1. 2012/03/23(金) 12:11:48 |
  2. URL |
  3. windy #JalddpaA
  4. [ 編集 ]

ありがとうございます。
前に一度やったことがあるんですが、前の時は、インプリでエラーが出て、.pao にラッパー用のVHDLファイルを入れたんです。今回はエラーが出ないので、忘れていました。.ngc だけだとこのままではシミュレーション用にコンパイルできませんよね?
.pao にラッパー用HDLファイルを入れて試してみようと思っています。
それでダメだったら、教えて頂いた方法で確かめてみます。

http://marsee101.blog19.fc2.com/blog-entry-1895.html
  1. 2012/03/23(金) 12:54:28 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

system_top_tb_beh.prj にカスタム・スレーブIPのHDLは入ってましたが、ダメでした。どこが悪いんだろうか?キャッシュの方を試してみます。
  1. 2012/03/23(金) 22:08:24 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

なんとか全体でシミュレーションできるようになると良いのですけどね。
MBが出してくるAXIトランザクションの種類なんかも一目で分かるので。
前のコメントに書いたDCからのアクセスとキャッシュ範囲の件や、リード時のWRAPバーストの件もシミュレーションで確認しています。
MBのシステムを含むと動作モジュールが大量になってISimの起動も動作も遅くなるのですが、ChipScopeを持ち出すよりはマシだと思っています。

僕のところではVHDLを使っているのですが、Verilogを使用されているという事でここに違いがありますね。
  1. 2012/03/25(日) 12:33:26 |
  2. URL |
  3. windy #JalddpaA
  4. [ 編集 ]

スレーブIPの構成は、トップはVHDLで一部Verilog、Coregen 生成コア1個の混成です。トップのVHDLが見つからないと言われてしまいます。今度作るマスタIPでシミュレーションを試みてみます。
  1. 2012/03/25(日) 18:00:50 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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