Vivado 2019.1 が出たので、WebPACK Edition を Ubuntu 18.04 の /tools ディレクトリにインストールした。
まずはWeb インストーラー(Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin)を
Xilinx 社のダウンロードサイト よりダウンロードした。
Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin の実行パーミッションが有効になっていないので、有効にした。
chmod +x Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin Linux 用Web インストーラーを起動してインストールを行った。(WebPACK Edition、/tools/Xilinx ディレクトリへのインストール)
sudo ./Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin 自分のホームディレクトリの .Xilinx ディレクトリがスーパーユーザ権限になっているので、グループとオーナーを自分に変更した。
sudo chown -R masaaki:masaaki .Xilinx/ ケーブル・ドライバをインストールする。
cd /tools/Xilinx/Vivado/2019.1/data/xicom/cable_drivers/lin64/install_script/install_drivers sudo ./install_drivers .bashrc の書き換えなどは、”
Ubuntu16.04にVivado 2016.4をインストール ”を参照ください。
環境設定を行って、Vivado 2019.1 を起動した。
source /tools/Xilinx/Vivado/2019.1/settings64.sh vivado & Vivado 2019.1 が起動した。(ここからは、ツイッターで
あすてりず無さんのツィート を見たので、やってみた)
適当にプロジェクトを作成する過程でDefault Part のダイアログが出ている時を示す。
ここで、Default Part のダイアログの Update Board Repositories ボタンをクリックする。
Download Latest Board ダイアログが表示された。Download ボタンをクリックする。
Download Boards ダイアログが表示された。
すると、いろいろなボード・ファイルがインストールされて、Vendor を digileninc.com にすると、Zybo Z7-20 なども選択できるようになった。
Vendor を em.avnet.com にするとUltra96 も選択できるがVer.1 だけでVer. 2 が無いのかも?
なお、Vivado 2019.1 の Tools メニューから Download Latest Board... を選んでも同様にボード・ファイルをインストールすることができる。
あすてりず無さんのツィート によると、
Xilinx/XilinxBoardStore のボード・ファイルがインストールされるようだ。
2019年05月31日 04:35 |
Vivado
| トラックバック:0
| コメント:0
”
MIPIボード用PMOD拡張ボードをテストする3(I2C、SPI のテスト方法) ”の続き。
MIPIボード用PMOD 拡張ボードのI2C 入出力をテストするために秋月電子に注文しておいた部品が届いた。
BME280使用 温湿度・気圧センサモジュールキット ブレッドボード EIC-801 ブレッドボード・ジャンパーワイヤ(オス-オス)セット 各種 合計60本以上 絶縁ラジアルリード型積層セラミックコンデンサー0.1μF50V2.54mm(10個入) なお、コンデンサはパスコンです。
BME280使用 温湿度・気圧センサモジュールキット をTCA9548A の 0 番ポートの I2C0 や I2C1 に接続して温度が計測できるかどうか?をテストしてみよう。
ソフトウェアは、
GitHub のultra96_design/src/linux/caminit/src/ov5640.cc::init_ov5640() を参考にすれば書けそうだ。
2019年05月30日 05:17 |
Ultra96
| トラックバック:0
| コメント:0
”
Vivado HLS で xfOpenCV を使用する3(Harris コーナー検出) ”の続き。
前回は、examples ディレクトリの harris をVivado HLS GUI でやってみた。今回は、StereoBM をVivado HLS GUI でやってみたい。
まずは、examples ディレクトリの stereolbm ディレクトリを ~/xfopencv/HLS_Use_Model/examples ディレクトリの下にコピーした。
stereolbm/data ディレクトリには、left.png と right.png があった。
Vivado HLS 2018.3 で stereolbm_project プロジェクトを作っていこう。
ソースを登録する。
xf_stereoBM_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
次にテストベンチを登録する。
xf_stereoBM_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
left.png と right.png を追加した。
Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
stereolbm_project が生成された。
Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に "left.png right.png" を入力した。
C シミュレーションを行った。
C シミュレーションの結果を示す。
stereolbm/stereolbm_project/solution1/csim/build の内容を示す。
hls_out.jpg がステレオカメラの深度情報になっているようだ。
left.png を引用する。
right.png と合わせて深度を測定した結果の hls_out.jpg を示す。奥のほうがグレーが濃くなっているようだ。
合成を行った。
この結果からは、Ultra96 では、LUT のリソースが 101 % で足りないようだ。
Latency は 100 MHz クロックで、最大で約 41.8 ms となっている。
C/RTL 協調シミュレーションは例によってエラーになってしまった。
Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
LUT 使用量が 26286 個になった。LUT としては SRL を含める必要があると思うので、含めると、27299 個となった。
Ultra96 の全LUT 数が 70560 個なので、約 38.7 % となった。これならばUltra96 に十分入る。
Vivado HLS で合成時に出すレポートは当てならないので、Vivado に解析を頼んで、リソースの使用状況を確認したほうが良い。
2019年05月29日 05:01 |
Vivado HLS
| トラックバック:0
| コメント:0
”
MIPIボード用PMOD拡張ボードをテストする3(実機でテスト) ”の続き。
フレックスターズさんのブログの”Ultra96 Linux で MIPI カメラから画像を取得する (解説編)” を全面的に参考にさせていただきます。
フレックスターズさんのブログの”Ultra96 Linux で MIPI カメラから画像を取得する (解説編)” の「3. カメラ制御」の「3.1 I2C 制御」によると、TCA9548A のI2C スイッチによって I2C が 8 個に分けられているということだった。
そのうちの 0 番ポートの I2C0 と 1 番ポートの I2C1 をPMOD に出力している。
I2C0 を使うには、PS の I2C1 コントローラから 0x75(TCA9548A のアドレス)、0x1 を送れば良いそうだ。I2C1 を使うには、 0x75、 0x2 を送る。
フレックスターズさんのブログの”Ultra96 Linux で MIPI カメラから画像を取得する (解説編)” の「3.1 I2C 制御」によると、TCA9548A の 0 番ポートの I2C0 が /dev/i2c-2 に、 1 番ポートの I2C1 が /dev/i2c-3 に割り当てられているようだ。これらを open して使えば良さそうだ。
PS の I2C1 コントローラからアクセスするためのソースコードも
GitHub のultra96_design/src/linux/caminit/src/ov5640.cc::init_ov5640() もしくは ultra96_design/src/linux/caminit/src/imx219.cc::init_imx219() にあるそうだ。
もう1つの資料としては、Linux から I2C を使う方法を書いた”
I2Cデバイスの扱い方 ”が参考になりそうだ。
次にSPI だが、低速コネクタのSPI0 の信号線をPMOD に出力している。
やはり、PS のIOU のSPI 0 が出力されているようだ。
SPI をLinux から使う方法は、なひたふさんの”
ZYNQのSPIをLinuxから使う方法 ”が参考になりそうだ。
とりあえずSPI は後回しにしよう。
Xilinx Wiki SPI Zynq driver I2CとSPI を使用するモジュールを買う必要があるが、秋月電子の
BME280使用 温湿度・気圧センサモジュールキット だったら、I2C と SPI の両方使用できるから、これにしようか?
2019年05月28日 05:28 |
Ultra96
| トラックバック:0
| コメント:0
”
Ultra96用PMOD拡張ボード15(Ultra96V2用に改版した3) ”の続き。
”
Ultra96用PMOD拡張ボード15(Ultra96V2用に改版した3) ”で基板が届いたので、部品を載せてみたところ、タクトスイッチのフットプリントが小さすぎてはみ出してしまうことが分かった。
データシート を見てみると、フットプリントの端から端までが 8 mm なのに、タクトスイッチの端から端までが 9 mm じゃないか。。。これじゃ必然的にはみ出しちゃう。怒、怒、怒。
フットプリントを修正した。今度は端から端までで 10 mm にした。これで大丈夫だろう?
基板を修正して、Ver.4 とした。
ただ、今の基板に部品を実装して確かめてみるまでは、基板を作らない。
今の基板に取り付けるタクトスイッチとして、ツィッターで”
表面実装用タクトスイッチ ”を教えていただいた。これだと端から端までで 8 mm なので、何とか搭載できそう。
2019年05月28日 04:35 |
Ultra96
| トラックバック:0
| コメント:0
”
Ultra96用PMOD拡張ボード14(Ultra96V2用に改版した2) ”の続き。
Ultra96V2用に改版したUltra96用PMOD拡張ボードを5月15日にFusionPCB に発注したが、5月24日(金)に基板が到着した。
今回は、Power SW などを搭載するようにした。
部品を実装して、動作を確認したいがいま検証しているMIPIボード用PMOD 拡張ボードの検証が終わってからにしよう。
2019年05月26日 11:34 |
Ultra96
| トラックバック:0
| コメント:0
”
MIPIボード用PMOD拡張ボードをテストする2(PMODテスト用IPの作成) ”の続き。
今回は、PMOD 拡張ボードのPMOD の動作を確認するためにPMOD テスト用IP を作成し、Vivado に持っていって論理合成を行ったのだが、前回の回路では、clkcfg のDTS ファイルにfclk1 のエントリが無いので、クロックが主力されなかった。DTS ファイルに fclk1 のエントリを作れば良いのだが、面倒なので、fclk0 からクロックをもらってしまった。目で見て分からなくなったが、オシロスコープで確認すれば良いということにした。
もう一度、ブロック・デザインを貼っておく。
ex_board_test_0 の ap_clk を fclk0 からもらっている。
論理合成を行って、出力ポートの位置とインターフェース仕様を決定した。
信号名とFPGAのピン番号の対応表を示す。
信号名 ピン番号 HD_GPIO_1 F8 HD_GPIO_2 F7 HD_GPIO_4 F6 HD_GPIO_5 G5 HD_GPIO_6 A6 HD_GPIO_9 E6 HD_GPIO_10 E5 HD_GPIO_11 D6
制約を示す。
set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[7]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[6]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[5]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[4]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[3]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[2]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[1]}] set_property IOSTANDARD LVCMOS18 [get_ports {outc_V_0[0]}] set_property PACKAGE_PIN F8 [get_ports {outc_V_0[0]}] set_property PACKAGE_PIN F7 [get_ports {outc_V_0[1]}] set_property PACKAGE_PIN F6 [get_ports {outc_V_0[2]}] set_property PACKAGE_PIN G5 [get_ports {outc_V_0[3]}] set_property PACKAGE_PIN A6 [get_ports {outc_V_0[4]}] set_property PACKAGE_PIN E6 [get_ports {outc_V_0[5]}] set_property PACKAGE_PIN E5 [get_ports {outc_V_0[6]}] set_property PACKAGE_PIN D6 [get_ports {outc_V_0[7]}]
これで、論理合成、インプリメンテーション、ビットストリームの生成を行った。レポートを示す。
design_1_wrapper.bit が生成された。これを”
Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる2 ”の fpga.bif を使って fpga.bin を生成した。
bootgen -image fpga.bif -arch zynqmp -w -o fpga.bin fpga.bin を Ultra96 のDebian に SFTP した。
fpga.bin を /lib/firmware/ にコピーした。
sudo ./init_camera.sh を実行すると、GPIO の PMOD に波形が出力された。
PMOD 1 ピンの波形を示す。
381,470 Hz だった。
パラメータを示す。概ね大丈夫そうだ。
PMOD の途中の信号線をすべて確かめた。最後の PMOD 10番ピンの波形を示す。
2019年05月25日 18:03 |
その他のFPGAの話題
| トラックバック:0
| コメント:0
”
MIPIボード用PMOD拡張ボードをテストする1 ”の続き。
前回は、MIPI ボード用PMOD 拡張ボードに部品を実装し、MIPI ボードの取り付けて、MIPI ボードの動作に変化が無いことを確かめた。今回は、PMOD 拡張ボードのPMOD の動作を確認するためにPMOD テスト用IP を作成し、Vivado に持っていって論理合成を行った。
まずは、PMOD テスト用のIP だが、Vivado HLS 2018.2 を使用して作成したものがすでにある。
”
Ultra96用PMOD拡張ボードのPMOD端子のテストのために8ビットカウンタのLチカを作る ”で作成してあるが、Windows 10 で作ってあったので、今回、Ubuntu 18.04 で作成してみよう。
Vivado HLS 2018.2 を起動して、ex_board_test プロジェクトを作成した。なお、動作周波数は 1 MHz だ。
C シミュレーションを実行した。問題なさそうだ。
C コードの合成を行った。結果を示す。
Export RTL を行った。なお、Vivado synthesis, place and route にチェックを入れてある。
ex_board_test/solution1/ipml/ip ディレクトリに xilinx_com_hls_ex_board_test_1_0.zip ファイルが生成された。
Vivado 2018.2 のプロジェクトのultra96_design ディレクトリに ex_board_test というディレクトリを作成し、ZIP ファイルを展開した。
Vivado で ex_board_test IP をリポジトリに登録した。
zynq_ultra_ps_e_0 を開いて、PL Fabric Clocks の PL 1 を 1 MHz に設定して、出力させた。
ex_board_test IP をブロック・デザインに追加した。
現在、論理合成が成功している。
2019年05月24日 05:24 |
Ultra96
| トラックバック:0
| コメント:0
”
MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードが届いた ”の続き。
”
MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードが届いた ”で届いた基板に部品を実装した。
なお、J1(MIPIボード上ではJ13)の15 - 16 (CAM1_SDA), 17 - 18 (CAM1_SCL), 19 - 20 (CAM2_SDA), 21 - 22 (CAM2_SCL) 番ピン間のショート・パターンはパターン・カットした) これを現在使用しているUltra96 用MIPI ボードに載せた。
この状態で、MIPI ボードの動作確認をするために、”
Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる3 ”をもう一度やってみた。
Ultra96 のDebian 上で作業する。
まずは、環境変数のLD_LIBRARY_PATH は .bashrc に記述してある。
export LD_LIBRARY_PATH=/usr/local/lib/
cd examples/Pcam5C/ sudo ./init_camera.sh cd test/ sudo ./rgbtest これで 20 枚のPNG カメラ画像が取得できた。問題ないようだ。
次からは、Vivado のブロック・デザインにPMOD に出力する信号を追加して、MIPIボード用PMOD拡張ボードをテストしていこう。
2019年05月23日 04:44 |
Ultra96
| トラックバック:0
| コメント:0
”
Vivado HLS で xfOpenCV を使用する2(Vivado HLS 2018.3 のGUI を使用する) ”の続き。
前回は、xfopencv/HLS_Use_Model/ ディレクトリにあるもう一つのサンプル・デザインの AXI_Sample をVivado HLS GUI を起動してやってみた。今回は、examples ディレクトリの harris をVivado HLS GUI でやってみようと思う。
まずは、examples ディレクトリの harris ディレクトリを ~/xfopencv/HLS_Use_Model/examples ディレクトリの下にコピーした。
harris/data ディレクトリには、 im0.jpg がある。
さて、Vivado HLS 2018.3 で harris_project プロジェクトを作っていこう。
次に、ソースを登録する。
xf_harris_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
次にテストベンチを登録する。
xf_harris_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。(ここで、im0.jpg を登録するのを忘れてしまった。。。)
Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
harris_project が生成された。
ここで、テストベンチに im0.jpg が入っていないのに気がついたので、Add File... で im0.jpg を追加した。
Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に im0.jpg を入力した。
C シミュレーションを行った。
C シミュレーションの結果を示す。
harris/harris_project/solution1/csim/build の内容を示す。
output_hls.png を見るとコーナー検出されているのが分かる。
C コードの合成を行った。結果を示す。
Latency -> Detail -> Instance の grp_cornerHarris_fu_72 をクリックして、下の階層のレポートを見る。
Latency -> Detail -> Instance には、xFCornerHarrisDetect_1_U0, cornerHarris_Loop2_U0, cornerHarris_Loop1_U0 があった。
xFCornerHarrisDetect_1_U0 をクリックした。
Latency -> Detail -> Instance には、grp_xFCornerHarrisDetect_fu_56 があった。
grp_xFCornerHarrisDetect_fu_56 をクリックした。
今度は、Latency -> Detail -> Instance には、沢山のインスタンスがあった。もう良く分からない???
C/RTL 協調シミュレーションを行ったところ、Fail してしまった。
Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
2019年05月22日 21:05 |
Vivado HLS
| トラックバック:0
| コメント:0
”
Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる3 ”の続き。
前回は、Fixstars Tech Blog さんの「
Ultra96 Linux で MIPI カメラから画像を取得する (セットアップ編) 」の手順通りに、「5. 実機上でのカーネルドライバロードおよび初期化 S/W の実行」、「6. 実機上でのカメラ画像取得テストの実行」を行った。今回は、「7. display port 経由での外部ディスプレイ出力」をやってみよう。
まずはミニDisplayPort 変換アダプタを使用して、VGA端子でディスプレイと接続した。
Ultra96 のDebian で、
sudo apt install xserver-xorg lightdm gnome-session を実行したがエラーになった。
そこで、
sudo apt update sudo apt upgrade sudo apt install xserver-xorg lightdm gnome-session を行ったところ、成功した。
次に、ultra96_design/etc/xorg.conf をUltra96 の /etc/X11/ ディスプレイにコピーする。
sudo cp xorg.conf /etc/X11/ Ultra96 を
sudo reboot コマンドで再起動した。
再起動後にミニDisplayPort 変換アダプタを使用して接続したディスプレイを見るとログイン画面が表示されていた。
ここにID: root , PASS: admin でログインできたのだが、すぐに出されてログイン画面が表示されてしまう。ログインしたままにならない。
よく分からないので、前に進めてみよう
export DISPLAY=:0.0 して、
cd test sudo ./rgbvideo してみたが、
Invalid MIT-MAGIC-COOKIE-1 key (camera:4120): Gtk-WARNING **: cannot open display: :0.0
でカメラ画像を表示できなかった。
2019年05月22日 04:01 |
Ultra96
| トラックバック:0
| コメント:0
”
Vivado HLS で xfOpenCV を使用する1 ”の続き。
前回は、xfopencv/HLS_Use_Model/ ディレクトリにある Standalone_HLS_Example をTCL スクリプトを起動してやってみた。今回は、、xfopencv/HLS_Use_Model/ ディレクトリにあるもう一つのサンプル・デザインの AXI_Sample をVivado HLS GUI を起動してやってみようと思う。
なお、HLS_UseModel_Usage_Doc.pdf を参考にしている。
~/xfopencv/HLS_Use_Mode/AXI_Sample ディレクトリの下に dilation_axi プロジェクトを作成する。
Add/remove C-based source files では、 xf_dilation_accel.cpp と xf_ip_accel_app.cpp を追加した。
Add/remove C-based testbench files では、testcase55.jpg と xf_dilation_tb.cpp を追加した。
Solution Configuration では、 Part に xczu3cg-sbva484-1-e を指定した。(Ultra96 に使用されている xczu3eg-sbva484-1-e と間違ってしまった)
dillation_axi プロジェクトが生成された。
Project メニューから Project Settings... を選択する。
左のペインで、Simulation を選択する。 xf_dilation_tb.cpp を選択して、Edit CFLAGS... ボタンをクリックする。
”-D__XFCV_HLS_MODE__ -I../../include --std=c++0x”を入力した。
TestBench Files のCFLAG に先程入力した値が入っているのが分かる。
Options の Clear Build にチェックを入れて、Impt Arguments に testcase55.jpg を入力する。
これでSimulation の設定は完了したので、左のペインのSynthesis をクリックする。
Synthesis の xf_dilation_accel.cpp と xf_ip_accel_app.cpp にも、CFLAG に”-D__XFCV_HLS_MODE__ -I../../include --std=c++0x”を入力した。
C Simulation を行う前に、エラーの原因を修正しよう。
xf_dilation_config.h の画像の解像度を実際の写真に合わせて変更した。
C Simulation を行う。
C Simulation の結果を示す。成功した。
最後に合成結果を示す。
2019年05月20日 21:23 |
Vivado HLS
| トラックバック:0
| コメント:0
”
Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる2 ”の続き。
前回は、Fixstars Tech Blog さんの「
Ultra96 Linux で MIPI カメラから画像を取得する (セットアップ編) 」の手順通りに、「bin ファイルの生成」、「V4L2 カーネルドライバおよびカメラ初期化 S/W のビルド」を行った。今回は、「5. 実機上でのカーネルドライバロードおよび初期化 S/W の実行」、「6. 実機上でのカメラ画像取得テストの実行」を行う。
「5. 実機上でのカーネルドライバロードおよび初期化 S/W の実行」をやってみよう。
ホスト・パソコンの ~/ultra96_design/overlay/ ディレクトリの内容を
cd examples mkdir Pcam5C Ultra96 のDebian の examples ディレクトリの下に、 Pcam5C ディレクトリを作成し、その下にホスト・パソコンの ultra96_design/overlay/ ディレクトリの内容をSFTP した。
~/ultra96_design/src/linux/caminit/build/caminit ファイルも Pcam5C ディレクトリにSFTP した。
さらに、ホスト・パソコンの ^/ultra96_design/src/linux/driver ディレクトリの v4l2.ko をUltra96 のDebian の examples ディレクトリの下の Pcam5C ディレクトリにSFTP した。
Ultra96 の/lib/modules/4.14.0-xlnx-v2018.2-zynqmp-fpga/kernel/drivers/ ディレクトリの下に v4l2 ディレクトリを作成する。
v4l2.ko をそのディレクトリに移動した。
sudo mkdir /lib/modules/4.14.0-xlnx-v2018.2-zynqmp-fpga/kernel/drivers/v4l2/ sudo mv v4l2.ko /lib/modules/4.14.0-xlnx-v2018.2-zynqmp-fpga/kernel/drivers/v4l2/ sudo demod -a sudo mv fpga.bin /lib/firmware/ を実行した。
sudo su でスーパーユーザになって、
./init_camera.sh を実行した。
ビットストリームをコンフィグし、fclk を設定して、V2L2 のドライバをインストールした。
Pcam5C ディレクトリの下に、test ディレクトリを作成した。
mkdir test test ディレクトリに、ホスト・パソコンの ~/ultra96_design/test / ディレクトリのファイルとディレクトリをコピーした、。
OpenCV は 3.4.3 をすでにインストールしてある 。
makefile 先頭の OPENCV_DIR を ^?opencv-3.4.3 に設定する。
make する。成功した。 rgbterst, rgbvideo, uvc_camera_test, yuvtest の各実行ファイルが作成された。
環境変数を設定してから、
export LD_LIBRARY_PATH=/usr/local/lib/ sudo ./rgbtest 0.png 〜 19.png までのPNG ファイルが作成された。
0.png を見たが、ちゃんと画像が写っていた。成功だ。ただし、カメラの上下方向は反対になっている。これは、カメラを上下反転して置いてあるからなので正常だ。
(2019/05/21:追加)
MIPI 拡張ボードとPcam5C の接続の様子の写真を貼っておく。
2019年05月19日 20:42 |
Ultra96
| トラックバック:0
| コメント:0
久しぶりに
UG902 見たところ、Vivado HLS 2018.3 では、OpenCV 対応が変更され、xfOpenCV を使用するようになっていた。これはやってみないとということでやってみたいと思う。そして他にもVivado HLS が拡張されているところがあるので、それもいずれやってみたい。
なお、やりかけの”
Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる2 ”の続きについては、今日、明日の休日にゆっくりやって見る予定だ。
まずは、xfOpenCV を git clone しよう。
git clone https://github.com/Xilinx/xfopencv.git なのだが、私は以前 git clone してあったので、
git pull した。
さて、xfopencv/HLS_Use_Model/ ディレクトリに Standalone_HLS_Example と AXI_Sample ディレクトリと HLS_UseModel_Usage_Doc.pdf がある。
HLS_UseModel_Usage_Doc.pdf には xfOpenCV をVivado HLS で使用する方法が書いてある。HLS_UseModel_Usage_Doc.pdf によると、xfOpenCV を Vivado HLS で使用するには、
1. テストベンチでの xf::Mat オブジェクトには、 static を定義する。 Ex: static xf::MatimgInput(in_img.rows,in_img.cols); 2. コンパイル時に __XFCV_HLS_MODE__, -std=c++0x オプションを使用する。 3. インタフェースレベルの関数の引数にインタフェースのプラグマを指定する。 例えば関数の引数にポインタや参照渡しがあったら、m_axi のインターフェース・プラグマを指定する。ストリームがあったら axis を指定するということでしょう?
Standalone_HLS_Example と AXI_Sample ディレクトリの xf::dilate のサンプルでは、 2. のコンパイルオプションは tcl スクリプトに書いてあります。
Standalone_HLS_Example/script.tcl を引用する。
Copyright (c) 2018, Xilinx, Inc.
All rights reserved.
############################################################ ## Copyright (C) 1986-2018 Xilinx, Inc. All Rights Reserved. ############################################################ open_project dilation_project set_top dilation_accel add_files ./xf_dilation_accel.cpp -cflags "-D__XFCV_HLS_MODE__ -I../../include --std=c++0x" add_files -tb ./testcase55.jpg add_files -tb ./xf_dilation_tb.cpp -cflags "-D__XFCV_HLS_MODE__ -I../../include --std=c++0x" open_solution "solution1" set_part {xczu9eg-ffvb1156-2-i} -tool vivado create_clock -period 10 -name default #source "./dilation_color/solution1/directives.tcl" csim_design -argv {testcase55.jpg} -clean -compiler gcc csynth_design cosim_design -argv {testcase55.jpg} #export_design -format ip_catalog
さて、このscript.tcl をVivado HLS 2018.3 で動作させることにしよう。
OpenCV をVivado HLS で使用する場合は、PNGやJPEG用のライブラリをインストールする必要がある。
エラーが出た場合は、
”
Ubuntu 18.04 上でVivado HLS 2018.2 でOpenCV を使用したとき?のエラー ”
”
Ubuntu 16.04 上のVivado HLS 2017.2 でOpenCV を使用したプロジェクトでエラー発生 ”を参照のこと。
私は、libjpeg.so.62 が無くて、
sudo apt-get install libjpeg62-dev を実行した。
まずは、Vivado 2018.3 の実行ファイルにパスを通す。
source /tools/Xilinx/Viavdo/2018.3/settings64.sh xfopencv/HLS_Use_Model/Standalone_HLS_Example ディレクトリに行く。
cd ~/xfopencv/HLS_Use_Model/Standalone_HLS_Example/ Vivado HLS 2018.3 に tcl スクリプトを実行させる。(Ubuntu 18.04 を使用している)
vivado_hls -f script.tcl xfopencv/HLS_Use_Model/Standalone_HLS_Example ディレクトリに、dilation_project ディレクトリが生成された。
xfopencv/HLS_Use_Model/Standalone_HLS_Example/dilation_project/solution1/csim/build ディレクトリには、C シミュレーション結果の hls_out.jpg, out_error.jpg, out_ocv.jpg も表示されている。
Vivado HLS のバッチモードから抜けるために
exit を入力した。
GUI モードのVivado HLS 2018.3 を起動した。
合成結果を見てみた。
C/RTL 協調シミュレーションをDump all で実行した。
波形を表示した。
波形を拡大した。
2019年05月18日 05:04 |
Vivado HLS
| トラックバック:0
| コメント:0
”
Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる1 ”の続き。
前回は、Fixstars Tech Blog さんの「
Ultra96 Linux で MIPI カメラから画像を取得する (セットアップ編) 」の手順通りに、Vivado 2018.2 でTCL スクリプトを起動して、Vivado 2018.2 のプロジェクトを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行った。今回は続きの「bin ファイルの生成」、「V4L2 カーネルドライバおよびカメラ初期化 S/W のビルド」を行っていく。
今回もFixstars Tech Blog さんの「
Ultra96 Linux で MIPI カメラから画像を取得する (セットアップ編) 」の手順通りに実行していく。
「3.4 bin ファイルの生成」を行う。
~/ultra96_design/ultra96_design/ultra96_design.runs/impl_1/ ディレクトリに design_1_wrapper.bit があるのを確認した。
同じディレクトリに fpga.bif を作成した。
all: { [destination_device = pl] design_1_wrapper.bit }
同じディレクトリで、
bootgen -image fpga.bif -arch zynqmp -w -o fpga.bin を実行したところ、fpga.bin が生成された。
「4. V4L2 カーネルドライバおよびカメラ初期化 S/W のビルド」の「4.1 SDK による BSP 生成」を行う。
Vivado 2018.2 で File メニューから Export -> Export Hardware… を選択する。
Export Hardware ダイアログが表示されるので、include bitstream にチェックを入れて(これは必要ないと思うが)OK ボタンをクリックした。
次に、File メニューからLaunch SDK を選択する。
Launch SDK ダイアログが表示されるので、デフォルトのままOK ボタンをクリックした。
SDK が立ち上がった。
SDK のFile メニューから New -> Board Support Package を選択する。
New Board Support Package Project ダイアログの Xilinx Board Support Package Project 画面が表示された。デフォルトのままFinish ボタンをクリックした。
続いて、New Board Support Package Project ダイアログの Board Support Package Settings 画面が表示された。デフォルトのまま、OK ボタンをクリックした。
SDK に standalone_bsp_0 が生成された。
「4.2 カーネルドライバのビルド」を行う。
cd ~/ultra96_design/src/linux/driver make カーネルドライバ v4l2.ko が生成された。
「4.3 カメラ初期化 S/W のビルド」を行う。
~/ultra96_design/src/linux/caminit/ ディレクトリの main.cc に caminit() 関数を見ると、 SENSOR_OV5640 が定義されていた。カメラはPcam-5C カメラを使う予定なので、これで問題ない。よって、main.cc はデフォルトのままとした。
cd ~/ultra96_design/src/linux/caminit/build/ make caminit が生成された。
2019年05月17日 05:01 |
Ultra96
| トラックバック:0
| コメント:0
基板は、まだPMOD 6 個のUltra96 用PMOD 拡張ボードが残っているのだが、基板の設計に飽きたので、Fixstars Tech Blog さんに「Ultra96 Linux で MIPI カメラから画像を取得する」がある。これは、Ultra96 に
MIPI 拡張ボード を挿して、MIPI コネクタにPcam 5C を挿入して画像を自分でもMIPI 拡張ボードとPcam 5C カメラを持っているので、やってみることにした。
最初に、Fixstars Tech Blog さんの「
Ultra96 Linux で MIPI カメラから画像を取得する (セットアップ編) 」の手順に従ってやっていこう。
MIPI ボードのセットアップは後回しにした。
debian Linux イメージ SD カードは、ikwzm さんのをすでに作成してある。
Ultra96 のボード・ファイルもVivado にインストールしてある。
「3. HW の作成」からやってみよう。
使用環境は、Docker 上に構築した Ubuntu 16.04 上のVivado 2018.2 を使用する。
最初に
Xilinx のMIPI CSI Controller Subsystem のページ に行って、IP コアのライセンスを取得した。
Ubuntu 16.04 上でVivado 2018.2 を立ち上げて、Help メニューから Manage License... を選択する。
Vivado License Manager が立ち上げる。
左のペインの Load Lincense をクリックして、右のペインの Copy License... ボタンをクリックする。
Select License File ダイアログでダウンロードしたMIPI コア IP のライセンスを指定する。
ライセンスのインストールが成功したというダイアログが表示された。
左のペインからView License Status をクリックすると、右のペインに mipi_csi2_rx_ctrl が表示された。
これで、Vivado の設定は終了した。
次に、fixstars さんの ultra96_design.git を git clone する。
git clone https://github.com/fixstars/ultra96_design.git cd ultra96_design git submodule init git submodule update Vivado 2018.2 はすでに起動している。
TCL Console を表示して、コマンドを入力した。
cd ./ultra96_design source ./script/create_project.tcl プロジェクトが生成され、ブロックデザインも生成された。
ブロックデザインを示す。
ブロックデザインは、 mipi_csi2_rx_subsyst_0 からのデータを Vivado HLS で作成した demosaic_root IP に入れて、画像データになおしていると思われる。そのデータはVDMA 経由でDDR SDRAM にDMA されるのだろう?
Address Editor を示す。
次に、論理合成、インプリメンテーション、ビットストリームの生成を行った。成功した。
Summary を示す。
2019年05月16日 04:48 |
Ultra96
| トラックバック:0
| コメント:0
”
Ultra96用PMOD拡張ボード13(Ultra96V2用に改版した) ”の続き。
前回は、Ultra96V2 の回路図を見た結果、Ultra96 のPMOD 拡張ボードがUltra96V2 では動作しないことが判明したので、電源をVSYS_IN からVCC5V0 へ変更した。今回は、電源スイッチを押すのが、とっても大変なので、電源スイッチとPOR (Power On Reset) のタクトスイッチを 2 個実装することにした。
タクトスイッチは
秋月電子の表面実装用タクトスイッチ 黒色 (2個入) を使用する。
まずは回路図シンボルを作成した。
回路図を作成した。
フットプリントを作成した。
基板を作成した。
これでガーバー・ファイルとドリルファイルを作成して、FusionPCB に発注した。
発注費用は円高になっているとみえて、どちらも20.94 ドルで同じ金額なのだが、前回は 2,423 円だったが、今回は、2,383 円だった。
2019年05月15日 04:28 |
Ultra96
| トラックバック:0
| コメント:0
土日月と定年退職記念として、奥さんと愛媛県に旅行に行ってました。
5月11日は松山空港へANAで飛んで、道後温泉周辺を観光しました。
5月12日にメイン・イベントのしまなみ海道をサイクリングでした。約70km の工程を食事休憩を除くと大体5時間で走破できました。
天気もよく、とても雄大な景色を眺めることができてとっても幸せです。
5月13日は松山城を見てANAで羽田に帰ってきました。
とっても楽しかったです。
また今日から頑張りたいと思います。
2019年05月14日 04:53 |
日記
| トラックバック:0
| コメント:0
”
MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板2 ”の続き。
FusionPCB に発注したMIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードが届いた。発注してから足掛け4日で届いた。とっても速い。凄いです。
2019年05月10日 22:09 |
Ultra96
| トラックバック:0
| コメント:0
”
Ultra96用PMOD拡張ボード12(改版した基板に部品を実装した) ”の続き。
Ultra96 のPMOD 拡張ボードを作ってきたが、Ultra96V2 の回路図を見た結果、Ultra96V2 では動作しないことが判明した。
理由は、低速コネクタ用のPMOD 拡張ボードの電源に使用しているVSYS_IN に逆向きにショットキーバリアダイオード (D18) が挿入されたからだ。Ultra96 への電源供給用だったんだ。。。知らなかった。(やまさん、ありがとうございました)
この低速コネクタ用のPMOD 拡張ボードの電源をVSYS_IN からVCC5V0 へ変更する。
今までの
3端子DCDC は入力電圧範囲が 4.75V 〜 なので、入力の +5V がリップルで変動していたら動作を保証できない。また、電圧降下がプラスされて、4.75V くらいになることも考えられるので、使用することができない。
そこで、
LDOレギュレータ を選定した。
改版した回路図を示す。
基板のパターンを示す。
ガーバー・ファイルを出力した。
ドリル・ファイルを出力した。
2019年05月10日 04:58 |
Ultra96
| トラックバック:0
| コメント:0
”
MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板2 ”で基板をSeeedStudio に発注した。現在は、生産中のステータスとなっている。
今回は部品を秋月電子に発注した。
発注した部品は、
【C-00084】ピンソケット (メス) 2×13 (26P) が10個【C-05755】L型ピンソケット 2×10(20P) が10個
だ。
L型ピンソケットは 20 ピンだが、PMOD コネクタは 12 ピンなので、割って使うことにする。
他の部品はPMOD 拡張ボード作ったときの余りがあるので、今回の注文は無しとした。
2019年05月08日 05:25 |
Ultra96
| トラックバック:0
| コメント:0
”
MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板1 ”の続き。
前回は、MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板パターンを作成した。今回は、基板のシルクの追加とそれに基板のサイズを少々縮小し、FusionPCB に発注した。
基板の縦幅を 1mm 縮小した。これは、MIPI Adapter MezzanineボードでMIPI のコネクタに当たりそう、もしくは、PMOD 拡張ボードをしたままMIPI ケーブルを挿入できるようにするためだ。基板の大きさは、縦 34mm x 横 85mm となった。
そしてシルクを追加した。
”
Ultra96用PMOD拡張ボード10(基板の改版3) ”を参考にしながら、ガーバーファイルとドリルファイルを出力する。今回は、KiCad のバージョンが 5.1.2 になっているので、多少ダイアログが異なっている。
Pcbnew のFile メニューから Plot... を選択した。
Plot ダイアログが開いた。下図の様にチェックを入れてPlot ボタンをクリックした。
次に、Generate Drill Files... ボタンをクリックして、Generate Drill Files ダイアログを表示させた。
下の図の様にセットして、Create Drill File ボタンをクリックしてドリル・ファイルを出力させた。
これで、ガーバー・ファイルとドリル・ファイルが出力された。
ガーバーファイルをGerbView を立ち上げて見てみよう。
GerbView を立ち上げて、すべてのガーバー・ファイルとドリル・ファイルを入れた。
Edge-Cut ファイルの拡張子を gm1 から gml に変更した。ドリルファイルの拡張子を grl から txt に変更して、ZIP ファイルに固めた。
https://www.fusionpcb.jp/ で、基板を発注した。デフォルトから基板の色を青、板厚を 1.2mm に変更して注文した。
価格は $4.9 だったが、配送料がDHL で $16.04 で合計 $20.94 。PayPal の支払いで日本円で、2,423 円だった。
2019年05月07日 06:19 |
Ultra96
| トラックバック:0
| コメント:0
”
MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの回路図 ”の続き。
前回はMIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの回路図を書いた。今回は、その基板のパターンを作成していこう。
まずは、パーツを配置した。まだラッツネットだが、基板を示す。
ネットのクラスは Default の信号パターンとPower の電源、GND パターンの 2 つのクラスを設けてある。
これらの情報をFreeRouter に渡す。詳しい情報は”
KiCad-4.0.2 と FreeRouter インストール覚書 ”を参照のこと。
FreeRouter での自動配線後の配線パターンを示す。
この配線情報を KiCad にインポートした。
表面にベタGND をかぶせたところ。
裏面にベタGND をかぶせたところ。
2019年05月06日 05:14 |
Ultra96
| トラックバック:0
| コメント:0
”
MIPI Adapter MezzanineボードのJ15用のPMOD拡張ボードの部品選定 ”の続き。
前回、MIPI Adapter MezzanineボードのJ15用のPMOD拡張ボードの部品選定を行ったが、精査してみると、J15 にはPL のポートが 5 つしか無いことが判明した。後のGPIO は PS のGPIO だった。という訳でPL のGPIO の数が足りないので、J13 からも信号を出力することにした。こうすれば、+3.3V 電源が手に入るので、DCDCコンバータを実装する必要がなくなる。
回路図を書いたので、下に貼っておく。
なお、J1, J2 はピンソケットでピンヘッダに対向して入るので、水平方向にミラーしてある。
PMODコネクタのP2 には、I2C 2チャンネルとSPI を 1 チャンネル入れました。J13, J15 2つ分のコネクタの幅なので、基板が寂しいので、3.3V レベルに変換して出力することにしました。
回路図のパーツにフットプリントをアサインした。
PMOD コネクタは以前作製したフットプリント を使用した。
(2019/09/16:追記) 現在は、J1 コネクタの15 - 16 (CAM1_SDA), 17 - 18 (CAM1_SCL) , 19 - 20 (CAM2_SDA), 21 - 22 (CAM2_SCL) はパターンカットしてあります。今後、基板に実装する場合はそうする予定です。
2019年05月04日 07:34 |
Ultra96
| トラックバック:0
| コメント:0
96boards の
MIPI Adapter Mezzanine カードの J15 に挿すのPMOD 拡張ボードを作ろうと思っている。これを作れば、ラズパイカメラをMIPI で接続して、PMODから従来から使用しているモーター制御用のPMODモジュールに接続することができる。
MIPI Adapter Mezzanineボードの回路図が
AISTARVISION MIPI Adapter V2.1.pdf だ。
AISTARVISION MIPI Adapter V2.1.pdf から J15 の回路図を引用する。
左側のGPIO からPMOD の信号レベルに変換する。
また電源は 1.8V しか来ていないので、それを昇圧して 3.3V に変換する。
J15 は 26 ピンの 2.54mm ピッチのヘッダなので、通常の秋月電子のピンコネクタで問題ないだろう?
秋月電子 ピンソケット (メス) 2×13 (26P) で良さそうだ。
電源は 1.8V のみなので、DCDCコンバータによる 3.3V への昇圧が必要だ。
昇圧型DCDCコンバータ StepUP・DIP 3.3Vタイプ Ver2 データシート これで良いかも? 200mA なのだが、PMOD 8 ピンの予定なので、3.3 / 680 x 8 = 39 mA なので大丈夫そうだ。
データシートを見ると 1.8V の入力電圧では、せいぜい 100 mA がMAX のようだ。
外部コンデンサのC3 は電解コンデンサと書いてあるが、電源モジュールには積層セラミックコンデンサが付いているので、
チップ積層セラミックコンデンサー 100μF6.3V X5R 3216 (5個入) で良いかな? 積層セラミックコンデンサはDCバイアスかかると 3V で 40uF くらいにまで落ちるということを教えてもらったので、やはりOSコンデンサにしようと思う。
を選定した。アキシャル部品だがこれで良いだろう?
レベル変換IC やコネクタは従来のものを使用する。
MIPI Adapter Mezzanine のJ15 は左隅なので、それにかぶせるようにPMOD 拡張ボードを作る予定だ。下の図でピンクの線で囲われた部分(一方は線が書いていないが)がPMOD 拡張ボードをかぶせる予定の領域だ。
今回のJ15 ヘッダは 2.54mm ピッチなので、2mm ピッチと違ってピン間 1 本の配線は楽に通ると思うので、行けると思う。
MIPI Adapter MezzanineボードのJ15用のPMOD拡張ボードの方を先に作ろうと思う。
2019年05月02日 06:29 |
Ultra96
| トラックバック:0
| コメント:0
一昨日、
キングダム を見て、昨日、
アベンジャーズ/エンドゲーム を見てきました。
キングダムはヤングジャンプでずっと読んでいるので、ストーリーを分かってたので、面白かったです。戦闘シーンが多かったですが、山崎健人の信と吉沢亮のえいせいがイメージ通りでした。良かったです。
アベンジャーズ/エンドゲームはヒーロー大集合の映画で、前回のアベンジャーズの続きでした。ストーリーは書きませんがご都合主義でそんな解釈でよいか?と思いました。それでも楽しめましたが。。。
2019年05月02日 04:26 |
日記
| トラックバック:0
| コメント:0