Ultra96 ボードでデバイスツリー・オーバーレイをテストする6”でUltra96 のデバイスツリー・オーバーレイは完成したので、次は、以前作製したUltra96用PMOD拡張ボードのPMOD にカメラ(MT9D111)を接続してカメラ画像を表示したいのだが、残念ながらDisplayPort が表示出来ていない。よって、その前段階として、Ultra96用PMOD拡張ボードにMT9D111は接続するのだが、Frame Buffer のメモリにDMA Write するだけのVivado 2018.2 プロジェクトを作成したい。そのFrame Buffer をARM プロセッサで読んで、BMP ファイルにできればパソコンへX Window 経由で表示できるはずだ。
キャッシュにも書けるようになっているし、その環境は十分に整っている。Ultra96用PMOD拡張ボードの動作チェックも行うことができる。

まずは、最初にカメラMT9D111 とのインターフェース用のAXI4-Stream 出力のIP を作成する必要がある。さて、そのmt9d111_inf_axis IP を作っていこう。

まずは、ボードファイルUltra96v1:1.2 を使用して、mt9d111_axis_mpsoc プロジェクトを作成した。

次に、カメラのデータを受けるための非同期FIFO の pixel_fifo を作っていこう。このFIFO は入力のクロックはカメラのクロックで、出力のクロックはAXI4-Stream のクロックなため、非同期FIFO として実装する。
最初にIP Catalog を表示し、「fifo」で検索して、FIFO Generator をダブルクリックしてダイアログを表示させた。
705be1f9.png


最初のFIFO Generator のダイアログ画面を示す。Basic タブだ。
最初に、Component Name に pixel_fifo と入力する。
Fifo Implementaion で Independent Clocks Block RAM を選択する。
f92439d5.png


次は、Native Ports タブをクリックする。
Read Mode のラジオボタンをクリックして、First Word Fall Through モードにする。
Data Port Parameters の Write Width と Read Width は 34 に、Write Depth と Read Depth は 512 とする。
66625ebb.png


Status Flags タブで、Optional Flags でAlmost Full Flag とAlmost Empty Flag 、overflow 、underflow のチェックボックスにチェックを入れて活かす。
020ef9a6.png


Data Counts タブで、Data Count Options の More Accurate Data Counts にチェックを入れる。またRead Data Count(Synchronized with Read Clk) にチェックを入れる。
a0381ec4.png


Summary タブで確認して、OK ボタンをクリックする。
9fdc4155.png


これで pixel_fifo が生成された。