FC2カウンター FPGAの部屋 ZYBOにHDLで書いたラプラシアンフィルタを実装する9(制御ソフトウェアを作製して実機確認)
fc2ブログ

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

FPGAの部屋

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

ZYBOにHDLで書いたラプラシアンフィルタを実装する9(制御ソフトウェアを作製して実機確認)

ZYBOにHDLで書いたラプラシアンフィルタを実装する9(devicetreeの生成、/sys, /devディレクトリ)”の続き。

前回は、devicetree.dtb を生成して、Micro SDカードに、BOOT.bin と devicetree.dtb を書き込んで、ZYBOに挿入してUbuntu をブートし、/sys ディレクトリと /dev ディレクトリを観察した。
今回は、制御ソフトウェアを作製してZYBO でHDLで書いたラプラシアンフィルタを動作させる。

ドライバ・ソフトウェアだが、本来はVivado HLS で書いたAXI4 Lite Slave モジュールを頂いているので、それ用のドライバ・ソフトウェアがあるはずなのだが、昔に作ったので、そのVivado HLS のプロジェクトが無くなったか?もしくは削除してしまっていてわからない?
そこで、もう一度Vivado HLS 2015.3 でラプラシアンフィルタのCソースコードを使ってIP 化してドライバ・ソフトウェアを生成することにした。

Vivado HLS 2015.3 で、lap_fil_hdl_axim() というTop Function のCソースコードをIP化して、xlap_fil_hdl_axim.h をHDLで書いたラプラシアンフィルタの lap_filter_axim_LiteS_if.v のアドレス・オフセットに合うように書き換えた。
なお、Cソースコードのディレクティブを変更してある。変更は、cam_addr ポートのインターフェースを ap_hs に、lap_addr ポートのインターフェースを ap_vld に変更した。
下にそのVivado HLS 2015.3 のプロジェクトを示す。
lap_fil_HDL_axim_122_151108.png

ZYBO の電源を入れてUbuntu 14.04 を起動する。
BOOT.bin も devicetree.dtb も問題なく起動できた。

home/linaro/Apps の下に、lap_fil_hdl_1shot ディレクトリを作製した。

ドライバ・ソフトウェアはWindows のパソコン上にあるので、WinSCP でZYBO に接続して、ドライバ・ソフトウェアをZYBO のlap_fil_hdl_1shot ディレクトリにアップロードした。
lap_fil_HDL_axim_123_151108.png

ドライバ・ソフトウェアをZYBO のlap_fil_hdl_1shot ディレクトリにアップロードできた。
lap_fil_HDL_axim_124_151108.png

次に、lap_fil_hls_1shot.c をコピー&ペーストして、修正して lap_fil_hdl_1shot.c を作製した。
lap_fil_HDL_axim_125_151108.png

簡単な Makefile を作製した。
lap_fil_HDL_axim_126_151108.png

make を行った。バイナリ(lap_fil_hdl_1shot)ができた。
cam_disp_uio と lap_fil_hls_1shot をこのディレクトリにコピーした。
lap_fil_HDL_axim_127_151108.png

./cam_disp_uio を実行して、カメラをディスプレイに表示した後で、 ./lap_fil_hdl_1shot を実行したが、エラーになってしまった。
./lap_fil_hls_1shot は通常に実行することができる。
lap_fil_HDL_axim_128_151108.png

試しに、Vivado HLS のラプラシアンフィルタのUIO エントリをコメント・アウトしたデバイスツリーを作ってコンパイルしてやってみた。
lap_fil_HDL_axim_129_151108.png

これだと、lap_fil_hdl_1shot が動作した。
どうやら、UIO で制御できるデバイスはデフォルトでは5個までのようだ。
lap_fil_HDL_axim_130_151108.png
動作時間は 10.05 ms 程度で一番速い。

ラプラシアンフィルタ処理はまだバグが残っている。最初のラプラシアンフィルタ処理は正しいようだが、2番めは上のエッジだけ、3番目は下のエッジだけになる。4番目は最初のラプラシアンフィルタ処理に戻る。

最初のラプラシアンフィルタ処理結果
lap_fil_HDL_axim_134_151108.jpg

2番め
lap_fil_HDL_axim_135_151108.jpg

3番目
lap_fil_HDL_axim_136_151108.jpg

バグが残っているが、動作確認はできるので、良しとすることにしよう。何処か完全に終了していない部分があるのだと思う。

次は、Linuxカーネルを修正してUIOを10 個までエントリできるようにしてみたい。
  1. 2015年11月09日 05:28 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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