FC2カウンター FPGAの部屋 2012年10月18日
FC2ブログ

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

FPGAの部屋

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

ZedBoardにビットマップ・ディスプレイ・コントローラを追加する13(char_wirte_axi_master IPを追加4)

ZedBoardにビットマップ・ディスプレイ・コントローラを追加する12(char_wirte_axi_master IPを追加3)”の続き。

前回は単体シミュレーションがうまく行ったDDR3 SDRAMのフレーム・バッファにキャラクタを書き込むchar_write_axi_master IPをXPSプロジェクトに組み込んだが、うまく行かなかった。今回はトラブルシュートしてみた。

最初にChipScopeで見てみたが、全く動いている感じがなかった。これは、ビットマップ・ディスプレイ・コントローラの時にも似たような状態だった。そこで、ARMのソフトウェアでGPIOの出力を1にして、それを始動のイネーブルとするとビットマップ・ディスプレイ・コントローラが動作した。それと同じ何じゃないかと思った。というか、それを忘れてしまった。(本当に懲りない困ったもんだ)
案の定、init_done信号を追加して、init_done信号が0の時はリセットしているように書き換えたら、見事動作するようになった。(とっても嬉しいというか至福の時間を過ごせた。。。)

少なくともZynqのHP やACPバスに接続するAXI Master IPのについては、ARMのブートコードが実行されてHPバスやACPバスが使用可能になるよりもAXIバスのARESETN のリセットが外れるのが速いんだと思う。それでARESTNのリセットが外れてから動作したのでは、まだAXIバスが動いていないのかもしれない?ともかく、GPIOなどを使用して、ユーザーのプログラムでAXI Master IPの動作を開始させるのが良いと思う。

画像はYouTubeにアップしたので、見てください。DDR3 SDRAMの初期値のランダムパターンにキャラクタをハードウェアで書き込んでいくのが見えると思います。なお、解像度をHDにしてご覧ください。


ハードウェアでキャラクタを書いてうまく行ったということは、ビットマップ・ディスプレイ・コントローラの描画領域をARMからアクセスする場合は、描画領域の物理アドレスをアクセス可能にして、その領域はキャッシュをOFFする必要がありそうだ。そうするとARMの構造やアセンブラまで手をだす必要があるのかも知れない。
良いARMプロセッサの本を知っていたら教えて下さい。よろしくお願いします。Xilinxの資料で勉強できるのかな?少なくとも日本語の資料で概略つかめると楽だ。。。
  1. 2012年10月18日 05:29 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0