FC2カウンター FPGAの部屋 2013年を振り返る2(7月~9月)
FC2ブログ

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

FPGAの部屋

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

2013年を振り返る2(7月~9月)

7月~12月までを振り返ってみよう。

7月
お神輿用LED配線基板を一部実装した
AXI VDMAのシミュレーション1、AXI VDMAシミュレーションをするために、今まで、いろいろとXPSプロジェクトのカスタムIPを作ってきた。いよいよAXI VDMAの動作を調べるために、シミュレーション環境を整えてシミュレーションを行う。
インプリメントとシミュレーションでのRAM及びROMの初期値
VHDLのmath_realパッケージを使用した sin() と cos() の計算
Vivado IP Integrator のチュートリアル(Lab1)1(Vivado プロジェクトの生成)、Vivado 2013.2でチュートリアルをやってみた。
電飾お神輿、電飾お神輿の写真を撮って来ました。中学生が担ぐお神輿です。
Parallella-16 ボードを購入、Parallella-16ボードと電源アダプタ、ケーブルを購入しました。10月に来るそうです。(まだ来ていません。来月の2月だそうです)
Raspberry Pi にCamera を付けてOpenCVで顔認識、残念ながらうまく行かなかった。

Vivado IP Integrator のチュートリアルをずっとやっている

AXI VDMAのシミュレーション10(シミュレーション成功)、ISimでシミュレーションできたと思ったが、v_axi4s_vid_out IP の video_... の信号が出て無かった。
Vivado チュートリアル Designing with IP Lab1 1(FIFOコアの生成)

8月
Vivado チュートリアル Designing with IP Labをずっとやっている。

Vivado チュートリアル Designing with IP Lab3 (IP Packager)1、Xilinxのサイトからダウンロードすることができるデザインファイル(ug939-design-files.zip) は、ライセンスの懸念から使用しない。以前、AXI VDMAの検証用に使用した custom_vtc を使用する。
HelioボードでLinuxをブート、ここからHelioボードは使い方がわからずに、そのまま放置だ。
AXI4 Master, AXI4 Lite Slaveバスを持つプロジェクトをVivado IP Packager でIPにする1、前回、custom_vtc を Vivado 2013.2 の IP Packager で IP にすることが出来た。今回は、AXI4 Master, AXI4 Slave Liteバスを持つISEプロジェクトをVivado のプロジェクトとしてインポートして、そのプロジェクトをIPとして登録してみる。その場合にAXI4バスをグループ化する。
横浜に行ってきました、今日は横浜に、娘2人と奥さんと私で行って来ました。
AXI VDMAのシミュレーション11(シミュレーション成功2)、前回、シミュレーションが成功したと書いたが、v_axi4s_vid_out IP の video_... の信号が出て無かった。従って、HDMIの信号が出力されていない。そこで、v_axi4s_vid_out IP と互換(あくまで私が想定する用途ではということです)のカスタムIPを自分で作ることにした。名前は、custom_axi4s_video とした。13msecほどシミュレーションすると、ISimが落ちてしまうので、VSYNCが出るところまでシミュレーションすることが出来ないのが残念だ。
VivadoでAXI VDMAのシミュレーション1(IP Integrator)、Vivado で IP Integrator を使用してIPを接続して、Vivado Simulator でシミュレーションしてみようと思った。(自作カスタムIPをIP Packager でIPとしてパッケージして、そのIPをIP Integrator で接続したが、エラーが出て論理合成することが出来なかった。)
custom_vtc IP をテストする1、チュートリアルに使用した custom_vtc IP をIP Integrator でインスタンスして、論理合成、インプリメント、シミュレーションできるかどうか?を調べてみることにした。(問題なくできた)
mt9d111_inf_axis IP をテストする、簡単な1つだけのVerilog HDLファイルで構成されたIPをIP Integrator でインスタンスした時は、問題なくシミュレーション、論理合成、インプリメントまで行うことが出来た。今回は、NGCファイル、つまり、CoreGen で生成したFIFO IPが含まれているIPをIP Integrator でインスタンスして、問題なくシミュレーション、論理合成、インプリメントできるかどうかを確認する。(エラーが出てうまく行かなかった)
Vivado HLSのExampleを試してみる1(axi_lite の生成)、Vivado HLSを試しにやってみたい。試してみるのは、Vivado HLSのExample Project だ。
Vivado HLSのAXI Master Exampleを試す1、前回は、AXI Lite Slave を試してみたので、今回は、AXI Master の Example を試してみようと思う。
AXI VDMAのシミュレーション13(Questaでシミュレーション)、Questaでシミュレーションすると数フレーム、シミュレーションすることが出来て、AXI VDMAの動作がわかった。
Vivado 2013.2 の IP Packager でAXI4-Stream にクロックを関連付ける、今まで、Vivado 2013.2 の IP Packager では、AXI4-Stream Interface を作った時にクロックが無いと言われてIP Interface にワーニングが発生していた。それを回避する方法を ikwzm さんに教えて頂いたので、書いておこうと思う。
Vivado HLSで作ったaxi_lite IPをテストしたVivado HLSのExample として試した axi_lite IP をテストしてみた。単独でインプリメントを行った。
Vivadoで配置されたロジックと配線を見る1、Vivado では、FPGA Editor が無くなってしまった。今まで、配置されたロジックや配線遅延を見てきたのだが、無くなってしまうととっても困る。今日は、Vivado で、FPGA Editor と同様に配置配線の結果を見る方法を探ってみることにした。Vivado 2013.2 使用。

9月
Vivado Design Suite のチュートリアルをやってみた1(Tclスクリプト)、Vivado のIP Integrator やIP Packager はとりあえず次のバージョンを待ちたいが、Vivado はチュートリアルをやってみてやり方を学びたいと思った。そこで、”Vivado Design Suite チュートリアル デザイン フローの概要 UG888 (v2013.2) 2013 年 6 月 19 日”をやってみることにした。使用するVivado のバージョンは、2013.2
MFT2013落選、メールで通知が来て、MFT2013に落選しました。とっても残念でした。
2 Mega pixel Camera Module MT9D111 JPEG Out + HQ lens、eBay で注文した”2 Mega pixel Camera Module MT9D111 JPEG Out + HQ lens”が今日届きました。このカメラでディスプレイに表示した。
ZedBoard Linux上でカメラの画像を処理する1(準備編)、ZedBoard Linux上でカメラ画像を処理しようと思う。まずは現状確認と手段の検討をしようと思う。
ZedBoard Linux上でカメラの画像を処理する2(準備編2)、今回は、フレーム・バッファのアドレスをファイルに書いておくようにするのが目的だ。ZedBoardのLinux起動時に、Linuxのペンギンが写っている既存のフレームバッファをアドレスを取得して、カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPのフレームバッファ・スタート・アドレス・レジスタにWrite するようなCソフトウェアを実行している。そのソフトウェアでフレーム・バッファの開始アドレスをfb_start_addr.txt というファイルに書いておくようにしようと思う。そのために起動時のCソフトウェアを変更した。
ZedBoard Linux上でカメラの画像を処理する3(ラプラシアンフィルタ1)、ラプラシアンフィルタを実行するCのソフトウェア(Laplacian_Filter.c)を作製した。動作を下に示す。
ZedBoard Linux上でカメラの画像を処理する6(ラプラシアンフィルタ4)、Digilent Linux 上でのラプラシアン・フィルタのCソフトウエア完成しました。やった~~~。嬉しいですね。。。
ZedBoard Linux上でカメラの画像を処理する7(ラプラシアンフィルタ5)、mmap() で同時に領域を取らないようにしてみた。つまり、ReadとWriteで同時に mmap() して領域を確保していたが、Readで mmap() を使用して、領域を確保したら、一度、munmap() してから、Write用に mmap() で領域を確保するように書き換えた。
ソフトウエアのプロファイリング2(mmap(), munmap() の時間計測2)、Digilent Linux の起動時に、カメラ・コントローラやビットマップ・ディスプレイ・コントローラにフレーム・バッファの開始アドレスを指定する cam_disp3_linux.c プログラムを修正して、フレーム・バッファを4Kバイト境界から始まるように修正した。mmapの時間を計測した。map time = 29 usec
ソフトウエアのプロファイリング3(最適化)、ラプラシアン・フィルタの実行時間を139秒から37秒に最適化してきた。更に最適化して0.44秒になった。
ソフトウエアのプロファイリング4(ハードウェアと同じ方式)、ハードウェアの実装と近い形にしてきたが、更にハードウェアの実装に近づけることにする。ラプラシアン・フィルタの実行時間は0.39秒。
ラプラシアン・フィルタのCソフトをVivado HLSで、”ソフトウエアのプロファイリング4(ハードウェアと同じ方式)”のラプラシアン・フィルタのCソフトウェアをVivado HLSでコンパイルしてHDLコードの落として使ってみたい。そのため、Cプログラムを修正してVivado HLSでプロジェクトを作製してコンパイルしてみた。そのまま試したので、エラーだった。
Vivado HLSでラプラシアン・フィルタ式のみをaxi lite slaveモジュールにする1、今回は、3x3のラプラシアン・フィルタの式のみを、以前Vivado HLSのサンプルしてやってみた axi lite を元に変更してみようと思う。多分、計算式がとっても簡単なので、ハードウェア化のメリットは無いどころか、ソフトウェアよりも遅くなるかもしれないがやってみようと思う。
  1. 2013年12月28日 05:03 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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