”
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 側)。

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

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 にしようと思う。
- 2013年10月21日 04:03 |
- AXI4バス
-
| トラックバック:0
-
| コメント:0