FC2カウンター FPGAの部屋 AXI4バスでのAWCACHE、ARCACHEの値
fc2ブログ

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

FPGAの部屋

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

AXI4バスでのAWCACHE、ARCACHEの値

ZedBoardでHDMI出力3(ChipScope AXI Monitor でAXIバスを観察2)”では

、char_write_axi_master IP、つまりAXIバスのWrite マスタを追加した時には、AWCACHE = 3、つまりBufferableにすると、BRESPに”10”、SLVERR (Slave error) が帰ってきた。

と書いたが、”Zynq-7000 All Programmable SoC Seminar 2013”では、AWCACHE、ARCACHEどちらも3、AWCACHE, ARCACHE = 3'b011 が推奨という話だったので、実際にやってみた。実験してみたのは、現在使用しているLinuxを起動してるハードウェアだ。以前のハードウェアをISE14.6に変換して ChipScope を入れようとしたのだが、どうしてもエラーになって入らなかった。うまく入ったのが、このハードウェアだけだったのだ。

その結果、Write, Read 共にレスポンス信号にSLVERRが帰ってくることもなく、正常に動作した。う~ん。以前はSLVERRだったんだが、途中から変わったのか?とにかく、AWCACHE、ARCACHEどちらも3、AWCACHE, ARCACHE = 3'b011 でも問題なしだった。前の実験を間違えたのか?それともISE14.6で不具合が修正されたのか?よくわからないが、ISE14.6だと問題ないようだ。
次に、その時のカメラ・インターフェース回路の ChipScope の波形を下に示す(Write 側)。
AXI_CACHE_1_131020.png

0x19121238番地に、1転送8バイト単位で2バーストWriteしている。例によって、BVALIDのアサートがとっても遅い。最後のデータ転送が完了してから54クロック、つまり540nsec 後にBVALIDがアサートされている。
肝心のAWCACHEは 3 (Normal Non-cacheable Bufferable, Xilinxの推奨値) で転送を行ったところ、BRESPに 0 つまり、OKEYが帰ってきている。問題ない。

次に、ビットマップ・ディスプレイ・コントローラの ChipScope の波形を下に示す。(Read 側)
AXI_CACHE_2_131020.png

0x19153000番地から、1転送8バイト単位で、64バーストReadしている。ARCACHE を 3 (Normal Non-cacheable Bufferable, Xilinxの推奨値) にしても、RRESPはずっと 0 で問題ない。

このように、少なくともISE14.6 の環境では、AWCACHE、ARCACHEの値は 3 (Normal Non-cacheable Bufferable, Xilinxの推奨値) でも問題ないことがわかった。Xilinxの推奨値でもあることだし、今度からは、AWCACHE、ARCACHEの値は 3 にしようと思う。
  1. 2013年10月21日 04:03 |
  2. AXI4バス
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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