FC2カウンター FPGAの部屋 2019年05月
FC2ブログ

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

FPGAの部屋

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

Vivado 2019.1 WebPACK Edition をUbuntu 18.04 にインストールした

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/
vivado2019_1_install_1_190530.png

ケーブル・ドライバをインストールする。
cd /tools/Xilinx/Vivado/2019.1/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers

vivado2019_1_install_2_190530.png
vivado2019_1_install_3_190530.png

.bashrc の書き換えなどは、”Ubuntu16.04にVivado 2016.4をインストール”を参照ください。

環境設定を行って、Vivado 2019.1 を起動した。
source /tools/Xilinx/Vivado/2019.1/settings64.sh
vivado &

vivado2019_1_install_4_190530.png

Vivado 2019.1 が起動した。(ここからは、ツイッターであすてりず無さんのツィートを見たので、やってみた)
適当にプロジェクトを作成する過程でDefault Part のダイアログが出ている時を示す。
vivado2019_1_install_5_190530.png

ここで、Default Part のダイアログの Update Board Repositories ボタンをクリックする。
vivado2019_1_install_6_190530.png

Download Latest Board ダイアログが表示された。Download ボタンをクリックする。
vivado2019_1_install_7_190530.png

Download Boards ダイアログが表示された。
vivado2019_1_install_8_190530.png

すると、いろいろなボード・ファイルがインストールされて、Vendor を digileninc.com にすると、Zybo Z7-20 なども選択できるようになった。
vivado2019_1_install_9_190530.png

Vendor を em.avnet.com にするとUltra96 も選択できるがVer.1 だけでVer. 2 が無いのかも?
vivado2019_1_install_10_190530.png

なお、Vivado 2019.1 の Tools メニューから Download Latest Board... を選んでも同様にボード・ファイルをインストールすることができる。

あすてりず無さんのツィートによると、
Xilinx/XilinxBoardStore
のボード・ファイルがインストールされるようだ。
  1. 2019年05月31日 04:35 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

MIPIボード用PMOD拡張ボードをテストする4(I2Cのテスト用部品の到着)

MIPIボード用PMOD拡張ボードをテストする3(I2C、SPI のテスト方法)”の続き。

MIPIボード用PMOD 拡張ボードのI2C 入出力をテストするために秋月電子に注文しておいた部品が届いた。
BME280使用 温湿度・気圧センサモジュールキット
ブレッドボード EIC-801
ブレッドボード・ジャンパーワイヤ(オス-オス)セット 各種 合計60本以上
絶縁ラジアルリード型積層セラミックコンデンサー0.1μF50V2.54mm(10個入)
PMOD_B4MIPI_B_test_25_190530.jpg

なお、コンデンサはパスコンです。

BME280使用 温湿度・気圧センサモジュールキットをTCA9548A の 0 番ポートの I2C0 や I2C1 に接続して温度が計測できるかどうか?をテストしてみよう。
ソフトウェアは、GitHub のultra96_design/src/linux/caminit/src/ov5640.cc::init_ov5640() を参考にすれば書けそうだ。
  1. 2019年05月30日 05:17 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS で xfOpenCV を使用する4(StereoBM)

Vivado HLS で xfOpenCV を使用する3(Harris コーナー検出)”の続き。

前回は、examples ディレクトリの harris をVivado HLS GUI でやってみた。今回は、StereoBM をVivado HLS GUI でやってみたい。

まずは、examples ディレクトリの stereolbm ディレクトリを ~/xfopencv/HLS_Use_Model/examples ディレクトリの下にコピーした。
xfOpenCV_Vivado_HLS_41_190529.png

stereolbm/data ディレクトリには、left.png と right.png があった。
xfOpenCV_Vivado_HLS_42_190529.png

Vivado HLS 2018.3 で stereolbm_project プロジェクトを作っていこう。
xfOpenCV_Vivado_HLS_43_190529.png

ソースを登録する。
xf_stereoBM_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
xfOpenCV_Vivado_HLS_44_190529.png

次にテストベンチを登録する。
xf_stereoBM_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
left.png と right.png を追加した。
xfOpenCV_Vivado_HLS_45_190529.png

Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
xfOpenCV_Vivado_HLS_46_190529.png

stereolbm_project が生成された。
xfOpenCV_Vivado_HLS_47_190529.png

Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に "left.png right.png" を入力した。
xfOpenCV_Vivado_HLS_48_190529.png

C シミュレーションを行った。
xfOpenCV_Vivado_HLS_49_190529.png

C シミュレーションの結果を示す。
xfOpenCV_Vivado_HLS_50_190529.png

stereolbm/stereolbm_project/solution1/csim/build の内容を示す。
hls_out.jpg がステレオカメラの深度情報になっているようだ。
xfOpenCV_Vivado_HLS_51_190529.png

left.png を引用する。
xfOpenCV_Vivado_HLS_52_190529.jpg

right.png と合わせて深度を測定した結果の hls_out.jpg を示す。奥のほうがグレーが濃くなっているようだ。
xfOpenCV_Vivado_HLS_53_190529.jpg

合成を行った。
この結果からは、Ultra96 では、LUT のリソースが 101 % で足りないようだ。
Latency は 100 MHz クロックで、最大で約 41.8 ms となっている。
xfOpenCV_Vivado_HLS_54_190529.png

C/RTL 協調シミュレーションは例によってエラーになってしまった。
xfOpenCV_Vivado_HLS_55_190529.png

Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
xfOpenCV_Vivado_HLS_56_190529.png

LUT 使用量が 26286 個になった。LUT としては SRL を含める必要があると思うので、含めると、27299 個となった。
Ultra96 の全LUT 数が 70560 個なので、約 38.7 % となった。これならばUltra96 に十分入る。
Vivado HLS で合成時に出すレポートは当てならないので、Vivado に解析を頼んで、リソースの使用状況を確認したほうが良い。
  1. 2019年05月29日 05:01 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

MIPIボード用PMOD拡張ボードをテストする3(I2C、SPI のテスト方法)

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 の両方使用できるから、これにしようか?
  1. 2019年05月28日 05:28 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード16(タクトスイッチのフットプリントの修正)

Ultra96用PMOD拡張ボード15(Ultra96V2用に改版した3)”の続き。

Ultra96用PMOD拡張ボード15(Ultra96V2用に改版した3)”で基板が届いたので、部品を載せてみたところ、タクトスイッチのフットプリントが小さすぎてはみ出してしまうことが分かった。

データシートを見てみると、フットプリントの端から端までが 8 mm なのに、タクトスイッチの端から端までが 9 mm じゃないか。。。これじゃ必然的にはみ出しちゃう。怒、怒、怒。

フットプリントを修正した。今度は端から端までで 10 mm にした。これで大丈夫だろう?
Ultra96_ext_board_11_190527.png

基板を修正して、Ver.4 とした。
Ultra96_ext_board_12_190527.png

ただ、今の基板に部品を実装して確かめてみるまでは、基板を作らない。

今の基板に取り付けるタクトスイッチとして、ツィッターで”表面実装用タクトスイッチ”を教えていただいた。これだと端から端までで 8 mm なので、何とか搭載できそう。
  1. 2019年05月28日 04:35 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード15(Ultra96V2用に改版した3)

Ultra96用PMOD拡張ボード14(Ultra96V2用に改版した2)”の続き。

Ultra96V2用に改版したUltra96用PMOD拡張ボードを5月15日にFusionPCB に発注したが、5月24日(金)に基板が到着した。
今回は、Power SW などを搭載するようにした。
部品を実装して、動作を確認したいがいま検証しているMIPIボード用PMOD 拡張ボードの検証が終わってからにしよう。
Ultra96_ext_board_9_190526.jpg

Ultra96_ext_board_10_190526.jpg
  1. 2019年05月26日 11:34 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPIボード用PMOD拡張ボードをテストする3(実機でテスト)

MIPIボード用PMOD拡張ボードをテストする2(PMODテスト用IPの作成)”の続き。

今回は、PMOD 拡張ボードのPMOD の動作を確認するためにPMOD テスト用IP を作成し、Vivado に持っていって論理合成を行ったのだが、前回の回路では、clkcfg のDTS ファイルにfclk1 のエントリが無いので、クロックが主力されなかった。DTS ファイルに fclk1 のエントリを作れば良いのだが、面倒なので、fclk0 からクロックをもらってしまった。目で見て分からなくなったが、オシロスコープで確認すれば良いということにした。

もう一度、ブロック・デザインを貼っておく。
PMOD_B4MIPI_B_test_24_190524.png

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]}]


これで、論理合成、インプリメンテーション、ビットストリームの生成を行った。レポートを示す。
PMOD_B4MIPI_B_test_17_190525.png

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
PMOD_B4MIPI_B_test_19_190525.png

fpga.bin を Ultra96 のDebian に SFTP した。
fpga.bin を /lib/firmware/ にコピーした。
PMOD_B4MIPI_B_test_20_190525.png

sudo ./init_camera.sh
を実行すると、GPIO の PMOD に波形が出力された。
PMOD 1 ピンの波形を示す。
PMOD_B4MIPI_B_test_21_190525.jpg

381,470 Hz だった。
パラメータを示す。概ね大丈夫そうだ。
PMOD_B4MIPI_B_test_22_190525.jpg

PMOD の途中の信号線をすべて確かめた。最後の PMOD 10番ピンの波形を示す。
PMOD_B4MIPI_B_test_23_190525.jpg
  1. 2019年05月25日 18:03 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

MIPIボード用PMOD拡張ボードをテストする2(PMODテスト用IPの作成)

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 だ。
PMOD_B4MIPI_B_test_8_190524.png

C シミュレーションを実行した。問題なさそうだ。
PMOD_B4MIPI_B_test_9_190524.png

C コードの合成を行った。結果を示す。
PMOD_B4MIPI_B_test_10_190524.png

Export RTL を行った。なお、Vivado synthesis, place and route にチェックを入れてある。
PMOD_B4MIPI_B_test_11_190524.png

ex_board_test/solution1/ipml/ip ディレクトリに xilinx_com_hls_ex_board_test_1_0.zip ファイルが生成された。
PMOD_B4MIPI_B_test_12_190524.png

Vivado 2018.2 のプロジェクトのultra96_design ディレクトリに ex_board_test というディレクトリを作成し、ZIP ファイルを展開した。
PMOD_B4MIPI_B_test_13_190524.png

Vivado で ex_board_test IP をリポジトリに登録した。

zynq_ultra_ps_e_0 を開いて、PL Fabric Clocks の PL 1 を 1 MHz に設定して、出力させた。
PMOD_B4MIPI_B_test_14_190524.png

ex_board_test IP をブロック・デザインに追加した。
PMOD_B4MIPI_B_test_15_190524.png

現在、論理合成が成功している。
  1. 2019年05月24日 05:24 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPIボード用PMOD拡張ボードをテストする1

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) 番ピン間のショート・パターンはパターン・カットした)
PMOD_B4MIPI_B_test_1_190523.jpg

PMOD_B4MIPI_B_test_2_190523.jpg

これを現在使用しているUltra96 用MIPI ボードに載せた。
PMOD_B4MIPI_B_test_3_190523.jpg

この状態で、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

PMOD_B4MIPI_B_test_4_190523.png

PMOD_B4MIPI_B_test_5_190523.png

cd test/
sudo ./rgbtest

これで 20 枚のPNG カメラ画像が取得できた。問題ないようだ。
PMOD_B4MIPI_B_test_6_190523.png

PMOD_B4MIPI_B_test_7_190523.png

次からは、Vivado のブロック・デザインにPMOD に出力する信号を追加して、MIPIボード用PMOD拡張ボードをテストしていこう。
  1. 2019年05月23日 04:44 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS で xfOpenCV を使用する3(Harris コーナー検出)

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 ディレクトリの下にコピーした。
xfOpenCV_Vivado_HLS_22_190522.png

harris/data ディレクトリには、 im0.jpg がある。
xfOpenCV_Vivado_HLS_23_190522.png

さて、Vivado HLS 2018.3 で harris_project プロジェクトを作っていこう。
xfOpenCV_Vivado_HLS_24_190522.png

次に、ソースを登録する。
xf_harris_accel.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。
xfOpenCV_Vivado_HLS_25_190522.png

次にテストベンチを登録する。
xf_harris_tb.cpp を CFLAG = "-D__XFCV_HLS_MODE__ -I../../../include --std=c++0x"を付けて登録した。(ここで、im0.jpg を登録するのを忘れてしまった。。。)
xfOpenCV_Vivado_HLS_26_190522.png

Ultra96 の使用を仮定して、 xczu3eg-sbva484-1-e を選択して、Finish をクリックした。
xfOpenCV_Vivado_HLS_27_190522.png

harris_project が生成された。
xfOpenCV_Vivado_HLS_28_190522.png

ここで、テストベンチに im0.jpg が入っていないのに気がついたので、Add File... で im0.jpg を追加した。
xfOpenCV_Vivado_HLS_29_190522.png

Project メニューから Project Settings... を選択した。
Project Settings ダイアログが表示された。左のペインから Simulation を選択した。
右のペインで、Options のClear Build にチェックを入れて、Input Arguments に im0.jpg を入力した。
xfOpenCV_Vivado_HLS_30_190522.png

C シミュレーションを行った。
xfOpenCV_Vivado_HLS_31_190522.png

C シミュレーションの結果を示す。
xfOpenCV_Vivado_HLS_32_190522.png

harris/harris_project/solution1/csim/build の内容を示す。
xfOpenCV_Vivado_HLS_33_190522.png

output_hls.png を見るとコーナー検出されているのが分かる。
xfOpenCV_Vivado_HLS_34_190522.png

C コードの合成を行った。結果を示す。
xfOpenCV_Vivado_HLS_35_190522.png

Latency -> Detail -> Instance の grp_cornerHarris_fu_72 をクリックして、下の階層のレポートを見る。
Latency -> Detail -> Instance には、xFCornerHarrisDetect_1_U0, cornerHarris_Loop2_U0, cornerHarris_Loop1_U0 があった。
xfOpenCV_Vivado_HLS_36_190522.png

xFCornerHarrisDetect_1_U0 をクリックした。
Latency -> Detail -> Instance には、grp_xFCornerHarrisDetect_fu_56 があった。
xfOpenCV_Vivado_HLS_37_190522.png

grp_xFCornerHarrisDetect_fu_56 をクリックした。
今度は、Latency -> Detail -> Instance には、沢山のインスタンスがあった。もう良く分からない???
xfOpenCV_Vivado_HLS_38_190522.png

C/RTL 協調シミュレーションを行ったところ、Fail してしまった。
xfOpenCV_Vivado_HLS_39_190522.png

Export RTL を行った。ただし、Vivado synthesis, place and route にチェックを入れてある。
結果を示す。
xfOpenCV_Vivado_HLS_40_190522.png
  1. 2019年05月22日 21:05 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる4

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
を実行したがエラーになった。
Ultra96_Pcam5C_46_190521.png

そこで、
sudo apt update
sudo apt upgrade
sudo apt install xserver-xorg lightdm gnome-session

を行ったところ、成功した。
Ultra96_Pcam5C_47_190521.png

次に、ultra96_design/etc/xorg.conf をUltra96 の /etc/X11/ ディスプレイにコピーする。
sudo cp xorg.conf /etc/X11/
Ultra96_Pcam5C_48_190521.png

Ultra96 を
sudo reboot
コマンドで再起動した。

再起動後にミニDisplayPort 変換アダプタを使用して接続したディスプレイを見るとログイン画面が表示されていた。
Ultra96_Pcam5C_51_190522.jpg

ここに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

でカメラ画像を表示できなかった。

  1. 2019年05月22日 04:01 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS で xfOpenCV を使用する2(Vivado HLS 2018.3 のGUI を使用する)

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 プロジェクトを作成する。
xfOpenCV_Vivado_HLS_9_190520.png

Add/remove C-based source files では、 xf_dilation_accel.cpp と xf_ip_accel_app.cpp を追加した。
xfOpenCV_Vivado_HLS_10_190520.png

Add/remove C-based testbench files では、testcase55.jpg と xf_dilation_tb.cpp を追加した。
xfOpenCV_Vivado_HLS_11_190520.png

Solution Configuration では、 Part に xczu3cg-sbva484-1-e を指定した。(Ultra96 に使用されている xczu3eg-sbva484-1-e と間違ってしまった)
xfOpenCV_Vivado_HLS_12_190520.png

dillation_axi プロジェクトが生成された。
xfOpenCV_Vivado_HLS_13_190520.png

Project メニューから Project Settings... を選択する。
左のペインで、Simulation を選択する。 xf_dilation_tb.cpp を選択して、Edit CFLAGS... ボタンをクリックする。
xfOpenCV_Vivado_HLS_14_190520.png

”-D__XFCV_HLS_MODE__ -I../../include --std=c++0x”を入力した。
xfOpenCV_Vivado_HLS_15_190520.png

TestBench Files のCFLAG に先程入力した値が入っているのが分かる。
Options の Clear Build にチェックを入れて、Impt Arguments に testcase55.jpg を入力する。
これでSimulation の設定は完了したので、左のペインのSynthesis をクリックする。
xfOpenCV_Vivado_HLS_16_190520.png

Synthesis の xf_dilation_accel.cpp と xf_ip_accel_app.cpp にも、CFLAG に”-D__XFCV_HLS_MODE__ -I../../include --std=c++0x”を入力した。
xfOpenCV_Vivado_HLS_17_190520.png

C Simulation を行う前に、エラーの原因を修正しよう。
xf_dilation_config.h の画像の解像度を実際の写真に合わせて変更した。
xfOpenCV_Vivado_HLS_19_190520.png

C Simulation を行う。
xfOpenCV_Vivado_HLS_18_190520.png

C Simulation の結果を示す。成功した。
xfOpenCV_Vivado_HLS_20_190520.png

最後に合成結果を示す。
xfOpenCV_Vivado_HLS_21_190520.png
  1. 2019年05月20日 21:23 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる3

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/ ディレクトリの内容を
Ultra96_Pcam5C_33_190519.png

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_Pcam5C_34_190519.png

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/

Ultra96_Pcam5C_35_190519.png

sudo demod -a
sudo mv fpga.bin /lib/firmware/

を実行した。
Ultra96_Pcam5C_36_190519.png

sudo su
でスーパーユーザになって、
./init_camera.sh
を実行した。
ビットストリームをコンフィグし、fclk を設定して、V2L2 のドライバをインストールした。
Ultra96_Pcam5C_37_190519.png

Ultra96_Pcam5C_38_190519.png

Pcam5C ディレクトリの下に、test ディレクトリを作成した。
mkdir test
test ディレクトリに、ホスト・パソコンの ~/ultra96_design/test / ディレクトリのファイルとディレクトリをコピーした、。
Ultra96_Pcam5C_39_190519.png

OpenCV は 3.4.3 をすでにインストールしてある

makefile 先頭の OPENCV_DIR を ^?opencv-3.4.3 に設定する。
Ultra96_Pcam5C_40_190519.png

make
する。成功した。 rgbterst, rgbvideo, uvc_camera_test, yuvtest の各実行ファイルが作成された。
Ultra96_Pcam5C_41_190519.png

環境変数を設定してから、
export LD_LIBRARY_PATH=/usr/local/lib/
sudo ./rgbtest

Ultra96_Pcam5C_42_190519.png

Ultra96_Pcam5C_43_190519.png

0.png 〜 19.png までのPNG ファイルが作成された。

0.png を見たが、ちゃんと画像が写っていた。成功だ。ただし、カメラの上下方向は反対になっている。これは、カメラを上下反転して置いてあるからなので正常だ。
Ultra96_Pcam5C_44_190519.jpg

(2019/05/21:追加)
MIPI 拡張ボードとPcam5C の接続の様子の写真を貼っておく。
Ultra96_Pcam5C_45_190521.jpg
  1. 2019年05月19日 20:42 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS で xfOpenCV を使用する1

久しぶりに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_Vivado_HLS_1_190518.png

xfopencv/HLS_Use_Model/Standalone_HLS_Example ディレクトリに、dilation_project ディレクトリが生成された。
xfOpenCV_Vivado_HLS_2_190518.png

xfopencv/HLS_Use_Model/Standalone_HLS_Example/dilation_project/solution1/csim/build ディレクトリには、C シミュレーション結果の hls_out.jpg, out_error.jpg, out_ocv.jpg も表示されている。
xfOpenCV_Vivado_HLS_3_190518.png

Vivado HLS のバッチモードから抜けるために exit を入力した。
GUI モードのVivado HLS 2018.3 を起動した。
xfOpenCV_Vivado_HLS_4_190518.png

合成結果を見てみた。
xfOpenCV_Vivado_HLS_5_190518.png

C/RTL 協調シミュレーションをDump all で実行した。
xfOpenCV_Vivado_HLS_6_190518.png

波形を表示した。
xfOpenCV_Vivado_HLS_7_190518.png

波形を拡大した。
xfOpenCV_Vivado_HLS_8_190518.png
  1. 2019年05月18日 05:04 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる2

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 があるのを確認した。
Ultra96_Pcam5C_14_190517.png

同じディレクトリに fpga.bif を作成した。
Ultra96_Pcam5C_15_190517.png

all:
{
    [destination_device = pl] design_1_wrapper.bit
}


Ultra96_Pcam5C_16_190517.png

同じディレクトリで、
bootgen -image fpga.bif -arch zynqmp -w -o fpga.bin
を実行したところ、fpga.bin が生成された。
Ultra96_Pcam5C_17_190517.png

Ultra96_Pcam5C_18_190517.png

「4. V4L2 カーネルドライバおよびカメラ初期化 S/W のビルド」の「4.1 SDK による BSP 生成」を行う。
Vivado 2018.2 で File メニューから Export -> Export Hardware… を選択する。
Export Hardware ダイアログが表示されるので、include bitstream にチェックを入れて(これは必要ないと思うが)OK ボタンをクリックした。
Ultra96_Pcam5C_19_190517.png

次に、File メニューからLaunch SDK を選択する。
Launch SDK ダイアログが表示されるので、デフォルトのままOK ボタンをクリックした。
Ultra96_Pcam5C_20_190517.png

SDK が立ち上がった。
Ultra96_Pcam5C_21_190517.png

SDK のFile メニューから New -> Board Support Package を選択する。
New Board Support Package Project ダイアログの Xilinx Board Support Package Project 画面が表示された。デフォルトのままFinish ボタンをクリックした。
Ultra96_Pcam5C_22_190517.png

続いて、New Board Support Package Project ダイアログの Board Support Package Settings 画面が表示された。デフォルトのまま、OK ボタンをクリックした。
Ultra96_Pcam5C_23_190517.png

SDK に standalone_bsp_0 が生成された。
Ultra96_Pcam5C_24_190517.png

「4.2 カーネルドライバのビルド」を行う。
cd ~/ultra96_design/src/linux/driver
make

Ultra96_Pcam5C_25_190517.png

Ultra96_Pcam5C_26_190517.png

カーネルドライバ v4l2.ko が生成された。
Ultra96_Pcam5C_31_190517.png

「4.3 カメラ初期化 S/W のビルド」を行う。
~/ultra96_design/src/linux/caminit/ ディレクトリの main.cc に caminit() 関数を見ると、 SENSOR_OV5640 が定義されていた。カメラはPcam-5C カメラを使う予定なので、これで問題ない。よって、main.cc はデフォルトのままとした。
Ultra96_Pcam5C_27_190517.png

Ultra96_Pcam5C_28_190517.png

cd ~/ultra96_design/src/linux/caminit/build/
make

Ultra96_Pcam5C_29_190517.png

Ultra96_Pcam5C_30_190517.png

caminit が生成された。
  1. 2019年05月17日 05:01 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Fixstars Tech Blogの「Ultra96 Linux で MIPI カメラから画像を取得する」をやってみる1

基板は、まだ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 コアのライセンスを取得した。
Ultra96_Pcam5C_1_190515.png

Ubuntu 16.04 上でVivado 2018.2 を立ち上げて、Help メニューから Manage License... を選択する。
Vivado License Manager が立ち上げる。
左のペインの Load Lincense をクリックして、右のペインの Copy License... ボタンをクリックする。
Ultra96_Pcam5C_2_190515.png

Select License File ダイアログでダウンロードしたMIPI コア IP のライセンスを指定する。
Ultra96_Pcam5C_3_190515.png

ライセンスのインストールが成功したというダイアログが表示された。
Ultra96_Pcam5C_4_190515.png

左のペインからView License Status をクリックすると、右のペインに mipi_csi2_rx_ctrl が表示された。
Ultra96_Pcam5C_5_190515.png

これで、Vivado の設定は終了した。

次に、fixstars さんの ultra96_design.git を git clone する。
git clone https://github.com/fixstars/ultra96_design.git
Ultra96_Pcam5C_6_190515.png

cd ultra96_design
git submodule init

Ultra96_Pcam5C_7_190515.png

git submodule update
Ultra96_Pcam5C_8_190515.png

Vivado 2018.2 はすでに起動している。
TCL Console を表示して、コマンドを入力した。
cd ./ultra96_design
source ./script/create_project.tcl

Ultra96_Pcam5C_9_190515.png

プロジェクトが生成され、ブロックデザインも生成された。
Ultra96_Pcam5C_10_190515.png

ブロックデザインを示す。
Ultra96_Pcam5C_13_190516.png

ブロックデザインは、 mipi_csi2_rx_subsyst_0 からのデータを Vivado HLS で作成した demosaic_root IP に入れて、画像データになおしていると思われる。そのデータはVDMA 経由でDDR SDRAM にDMA されるのだろう?

Address Editor を示す。
Ultra96_Pcam5C_51_190721.png

次に、論理合成、インプリメンテーション、ビットストリームの生成を行った。成功した。
Ultra96_Pcam5C_11_190515.png

Summary を示す。
Ultra96_Pcam5C_12_190515.png
  1. 2019年05月16日 04:48 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード14(Ultra96V2用に改版した2)

Ultra96用PMOD拡張ボード13(Ultra96V2用に改版した)”の続き。

前回は、Ultra96V2 の回路図を見た結果、Ultra96 のPMOD 拡張ボードがUltra96V2 では動作しないことが判明したので、電源をVSYS_IN からVCC5V0 へ変更した。今回は、電源スイッチを押すのが、とっても大変なので、電源スイッチとPOR (Power On Reset) のタクトスイッチを 2 個実装することにした。

タクトスイッチは秋月電子の表面実装用タクトスイッチ 黒色 (2個入)を使用する。

まずは回路図シンボルを作成した。
Ultra96_ext_board_5_190515.png

回路図を作成した。
Ultra96_ext_board_6_190515.png

フットプリントを作成した。
Ultra96_ext_board_7_190515.png

基板を作成した。
Ultra96_ext_board_8_190515.png

これでガーバー・ファイルとドリルファイルを作成して、FusionPCB に発注した。
発注費用は円高になっているとみえて、どちらも20.94 ドルで同じ金額なのだが、前回は 2,423 円だったが、今回は、2,383 円だった。
  1. 2019年05月15日 04:28 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

四国しまなみ海道サイクリングツアーに行ってきました

土日月と定年退職記念として、奥さんと愛媛県に旅行に行ってました。

5月11日は松山空港へANAで飛んで、道後温泉周辺を観光しました。
shimanami_1_190514.jpg

5月12日にメイン・イベントのしまなみ海道をサイクリングでした。約70km の工程を食事休憩を除くと大体5時間で走破できました。
天気もよく、とても雄大な景色を眺めることができてとっても幸せです。
shimanami_2_190514.jpg

shimanami_3_190514.jpg

shimanami_4_190514.jpg

shimanami_5_190514.jpg

5月13日は松山城を見てANAで羽田に帰ってきました。
shimanami_6_190514.jpg

とっても楽しかったです。
また今日から頑張りたいと思います。
  1. 2019年05月14日 04:53 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードが届いた

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板2”の続き。

FusionPCB に発注したMIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードが届いた。発注してから足掛け4日で届いた。とっても速い。凄いです。
PMOD_board4MIPI_board_18_190510.jpg

  1. 2019年05月10日 22:09 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード13(Ultra96V2用に改版した)

Ultra96用PMOD拡張ボード12(改版した基板に部品を実装した)”の続き。

Ultra96 のPMOD 拡張ボードを作ってきたが、Ultra96V2 の回路図を見た結果、Ultra96V2 では動作しないことが判明した。
理由は、低速コネクタ用のPMOD 拡張ボードの電源に使用しているVSYS_IN に逆向きにショットキーバリアダイオード (D18) が挿入されたからだ。Ultra96 への電源供給用だったんだ。。。知らなかった。(やまさん、ありがとうございました)
この低速コネクタ用のPMOD 拡張ボードの電源をVSYS_IN からVCC5V0 へ変更する。

今までの3端子DCDC は入力電圧範囲が 4.75V 〜 なので、入力の +5V がリップルで変動していたら動作を保証できない。また、電圧降下がプラスされて、4.75V くらいになることも考えられるので、使用することができない。
そこで、LDOレギュレータを選定した。

改版した回路図を示す。
Ultra96_ext_board_1_190510.png

基板のパターンを示す。
Ultra96_ext_board_2_190510.png

ガーバー・ファイルを出力した。
Ultra96_ext_board_3_190510.png

ドリル・ファイルを出力した。
Ultra96_ext_board_4_190510.png
  1. 2019年05月10日 04:58 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの部品の発注

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 拡張ボード作ったときの余りがあるので、今回の注文は無しとした。
  1. 2019年05月08日 05:25 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板2

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板1”の続き。

前回は、MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板パターンを作成した。今回は、基板のシルクの追加とそれに基板のサイズを少々縮小し、FusionPCB に発注した。

基板の縦幅を 1mm 縮小した。これは、MIPI Adapter MezzanineボードでMIPI のコネクタに当たりそう、もしくは、PMOD 拡張ボードをしたままMIPI ケーブルを挿入できるようにするためだ。基板の大きさは、縦 34mm x 横 85mm となった。
そしてシルクを追加した。
PMOD_board4MIPI_board_17_190507.png

PMOD_board4MIPI_board_10_190507.png

Ultra96用PMOD拡張ボード10(基板の改版3)”を参考にしながら、ガーバーファイルとドリルファイルを出力する。今回は、KiCad のバージョンが 5.1.2 になっているので、多少ダイアログが異なっている。

Pcbnew のFile メニューから Plot... を選択した。
Plot ダイアログが開いた。下図の様にチェックを入れてPlot ボタンをクリックした。
PMOD_board4MIPI_board_11_190507.png

次に、Generate Drill Files... ボタンをクリックして、Generate Drill Files ダイアログを表示させた。
下の図の様にセットして、Create Drill File ボタンをクリックしてドリル・ファイルを出力させた。
PMOD_board4MIPI_board_12_190507.png

これで、ガーバー・ファイルとドリル・ファイルが出力された。
PMOD_board4MIPI_board_13_190507.png

ガーバーファイルをGerbView を立ち上げて見てみよう。
GerbView を立ち上げて、すべてのガーバー・ファイルとドリル・ファイルを入れた。
PMOD_board4MIPI_board_14_190507.png

Edge-Cut ファイルの拡張子を gm1 から gml に変更した。ドリルファイルの拡張子を grl から txt に変更して、ZIP ファイルに固めた。
PMOD_board4MIPI_board_15_190507.png

https://www.fusionpcb.jp/ で、基板を発注した。デフォルトから基板の色を青、板厚を 1.2mm に変更して注文した。
価格は $4.9 だったが、配送料がDHL で $16.04 で合計 $20.94 。PayPal の支払いで日本円で、2,423 円だった。
PMOD_board4MIPI_board_16_190507.png
  1. 2019年05月07日 06:19 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの基板1

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの回路図”の続き。

前回はMIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの回路図を書いた。今回は、その基板のパターンを作成していこう。

まずは、パーツを配置した。まだラッツネットだが、基板を示す。
PMOD_board4MIPI_board_5_190503.png

ネットのクラスは Default の信号パターンとPower の電源、GND パターンの 2 つのクラスを設けてある。

これらの情報をFreeRouter に渡す。詳しい情報は”KiCad-4.0.2 と FreeRouter インストール覚書”を参照のこと。
FreeRouter での自動配線後の配線パターンを示す。
PMOD_board4MIPI_board_6_190506.png

この配線情報を KiCad にインポートした。
PMOD_board4MIPI_board_7_190506.png

表面にベタGND をかぶせたところ。
PMOD_board4MIPI_board_8_190506.png

裏面にベタGND をかぶせたところ。
PMOD_board4MIPI_board_9_190506.png
  1. 2019年05月06日 05:14 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPI Adapter MezzanineボードのJ13、J15用のPMOD拡張ボードの回路図

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_board4MIPI_board_4_190503.png

回路図のパーツにフットプリントをアサインした。
PMOD_board4MIPI_board_3_190503.png

PMOD コネクタは以前作製したフットプリントを使用した。
  1. 2019年05月04日 07:34 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

MIPI Adapter MezzanineボードのJ15用のPMOD拡張ボードの部品選定

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 の回路図を引用する。
PMOD_board4MIPI_board_1_190502.png

左側の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コンデンサにしようと思う。
導電性高分子アルミ固体電解コンデンサー OS-CON 100μF16V105℃
を選定した。アキシャル部品だがこれで良いだろう?

レベル変換IC やコネクタは従来のものを使用する。

MIPI Adapter Mezzanine のJ15 は左隅なので、それにかぶせるようにPMOD 拡張ボードを作る予定だ。下の図でピンクの線で囲われた部分(一方は線が書いていないが)がPMOD 拡張ボードをかぶせる予定の領域だ。
今回のJ15 ヘッダは 2.54mm ピッチなので、2mm ピッチと違ってピン間 1 本の配線は楽に通ると思うので、行けると思う。
PMOD_board4MIPI_board_2_190502.jpg

MIPI Adapter MezzanineボードのJ15用のPMOD拡張ボードの方を先に作ろうと思う。
  1. 2019年05月02日 06:29 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

キングダムとアベンジャーズ/エンドゲーム(映画)を見てきました。

一昨日、キングダムを見て、昨日、アベンジャーズ/エンドゲームを見てきました。
キングダムはヤングジャンプでずっと読んでいるので、ストーリーを分かってたので、面白かったです。戦闘シーンが多かったですが、山崎健人の信と吉沢亮のえいせいがイメージ通りでした。良かったです。

アベンジャーズ/エンドゲームはヒーロー大集合の映画で、前回のアベンジャーズの続きでした。ストーリーは書きませんがご都合主義でそんな解釈でよいか?と思いました。それでも楽しめましたが。。。
  1. 2019年05月02日 04:26 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Ultra96のPMOD拡張ボード計画(高速、低速コネクタをPMODへ変換)の部品調査結果の覚書

Ultra96 のPMOD 拡張ボードを作ってきたが、Ultra96V2 の回路図を見た結果、Ultra96V2 では動作しないことが判明した。
理由は、低速コネクタ用のPMOD 拡張ボードの電源に使用しているVSYS_IN に逆向きにショットキーバリアダイオード (D18) が挿入されたからだ。Ultra96 への電源供給用だったんだ。。。知らなかった。(やまさん、ありがとうございました)
この低速コネクタ用のPMOD 拡張ボードの電源をVSYS_IN からVCC5V0 へ変更すれば良いので、改版はすぐにできそうだ。

それとは別に高速コネクタと低速コネクタの両方から出力を取れば、PMOD コネクタが 6 個実装できそうだ。そこまでいるのか?という話はあるのだが。。。

まずは部品が無いと話しにならないので、調査してみた。その結果を覚書として書いておく。

Ultra96 Bill of Materials
http://zedboard.org/sites/default/files/documentations/Ultra96-V2%20Rev1%20BOM.pdf

Hispeedコネクタ 5177983-2
Mouser https://www.mouser.jp/ProductDetail/TE-Connectivity-AMP/5177983-2?qs=sGAEpiMZZMvffgRu4KC1R%252BoOfWa3zEpvT7rVDu6UlJk%3D
データシート https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=889092_0.8mm_FH_Conn&DocType=Catalog+Section&DocLang=English&PartCntxt=5177983-2

勘合する相手方コネクタ たぶんコネクタ勘合時の高さ 8mmの5179031-2
MIPI Adapter Mezzanineカードを入れると少し斜めになっている(低速コネクタより高速コネクタの高さが高い)。だが、そうでないとUSBコネクタの金属部分に基板が当たってしまうためだろう?
Mouser https://www.mouser.jp/ProductDetail/TE-Connectivity-AMP/5179031-2?qs=sGAEpiMZZMvffgRu4KC1R8rBJR2XJ4CGVDXQfomnbnc%3D
データシート https://www.te.com/commerce/DocumentDelivery/DDEController?Action=srchrtrv&DocNm=889092_0.8mm_FH_Conn&DocType=Catalog+Section&DocLang=English&PartCntxt=5177983-2

表面実装の低速コネクタ用ヘッダ
こうなると低速コネクタの方も少し長いピンの2mmヘッダはないのかな?できれば表面実装が良いな。低速コネクタ用ヘッダピンが長いとUSBコネクタの金属部分に基板が当たってしまうので、普通の長さが良いようだ。
TMM-120-01-LM-D-SM-P (Samtec)
https://www.mouser.jp/ProductDetail/Samtec/TMM-120-01-LM-D-SM-P?qs=sGAEpiMZZMs%252BGHln7q6pm8Vn94ktop%2FJM577iIjtGL%252B6bANV4Akyww%3D%3D
データシート https://www.mouser.jp/datasheet/2/527/tmm_sm-1357013.pdf

PMOD用ライトアングルヘッダ
M20-7920642R (Harwin)
https://www.mouser.jp/ProductDetail/Harwin/M20-7920642R?qs=sGAEpiMZZMs%252BGHln7q6pmzdTeEJXjwtLAJ%2FK3SQUoAleMdnpnFbhTQ%3D%3D
データシート https://www.mouser.jp/datasheet/2/181/M20-792R-1273521.pdf
パッドが1列に並んでいるので、はんだ付けはやりにくそうだ

電源SW、リセットスイッチは表面実装が良さそう。
秋月電子 表面実装用タクトスイッチ 黒色 (2個入)
http://akizukidenshi.com/catalog/g/gP-09361/

プルアップ抵抗
現在は、1ポートずつ 1608 の 1 kΩを付けいているが、集合抵抗でも良いかも知れない。
秋月電子のチップネットワーク抵抗器 CND2A10Y 1kΩ (5個入)だと8個抵抗が入っているので、良いのだが、他の抵抗値が無い。
http://akizukidenshi.com/catalog/g/gP-10717/
データシート
http://akizukidenshi.com/download/ds/koa/cnd.pdf

Mouser で検索したところ CND2A10Y は廃番になるとのこと、1kΩ以外が無いのはそういうことか?
Mouser での代替え品は742C163102JP かな?これは抵抗が独立の 8 個だった。
https://www.mouser.jp/ProductDetail/CTS-Electronic-Components/742C163102JP?qs=hbgUSdfWRJWiYz9Zfe71Cw%3D%3D
データシート
https://www.mouser.jp/datasheet/2/96/74x-1133528.pdf

3.3 kΩ
https://www.mouser.jp/ProductDetail/CTS-Electronic-Components/742C163332JP?qs=%2Fha2pyFaduiDN1ozaQl2IUq1XHIQURxX7BUxqJhagJDqjukxMDMyhg%3D%3D
680 Ω
https://www.mouser.jp/ProductDetail/KOA-Speer/CND2A10YTTE102J?qs=%2Fha2pyFadugGRL52AthcK1KSS8mycW%2FfSG%252BcnDhvn3JqWGmoNsTtVw%3D%3D

シリーズパス・レギュレータ
低飽和型レギュレーター 3.3V500mA NJM2884U1-33(5個入)にしようかな?(5V から 3.3V へ電圧変換)
電力損失は(5−3.3)×0.5=0.85Wだけど、放熱大丈夫かな?
なるべくGNDに接続する部分に銅箔を増やそう。
http://akizukidenshi.com/catalog/g/gI-10673/
最低680Ωとすると、1つのPMODが8ピンで6個だから、8x6=48ピン。
1ピン当たり、3.3/680=4.85mAで48ピンだから 233mAか。。。
1kΩで158mAなので、NJM2884U1-33で大丈夫みたい。
なお、CONTRL端子はVin直結で消費電流を気にしなければ問題ないようだ。
0.85Wも食わせる可能性があると問題だというご指摘をいただいた。下のムラタのDCDCを検討する。

三端子レギュレーター 3.3V1A NJM2391DL1-33 (4個入)
http://akizukidenshi.com/catalog/g/gI-02252/
データシート http://akizukidenshi.com/download/ds/njr/NJM2391.pdf
これでも良いのではないか?と思う。特にPMOD 2 個の従来型は。
76.2x114.3x1.6mm(EIA/JEDEC規格サイズ、2層、FR-4、)基板実装、且つ銅箔面積100mm2で 950mW だそうなので、基板面積は多少少なくなるが、プルアップ抵抗 680Ω以上という仕様にして 769mW と結構ギリギリかな?
とにかく従来型はこれで行こうと思う。

ムラタ表面実装DC-DCコンバーター
ムラタ表面実装DC-DCコンバーター OKL-T/3-W5N-C
http://akizukidenshi.com/catalog/g/gM-06206/
入力電圧:DC2.4V~5.5V、出力電圧:0.6V~3.63V(可変)、出力電流:最大3A
可変電圧DCDCで抵抗を3本くらい合成抵抗として使用する必要がある。
390+39+15 = 444 Ωで 3.3V だそうだ。
データシート http://akizukidenshi.com/download/ds/murata/OKL_T3_W5.pdf
https://power.murata.com/pub/data/power/okl-t3-w5.pdf
抵抗はあるだろうか?しかも精度 1 % は欲しい。
超小型 金属皮膜抵抗1W390Ω(100本入) http://akizukidenshi.com/catalog/g/gR-08826/
超小型 金属皮膜抵抗1W39Ω(100本入) http://akizukidenshi.com/catalog/g/gR-08812/
超小型 金属皮膜抵抗1W15Ω(100本入) http://akizukidenshi.com/catalog/g/gR-08806/
一応あったが、アキシャル抵抗なので、実装面積が増える。。。
ネガティブロジックなので、ON/OFF端子(1pin)をGNDへ接続した時に電源ONする。
シーケンス機能は無し。
パッドが特殊なので、KiCadで作れるかな?

Ultra96 Ver2外形図
http://zedboard.org/sites/default/files/documentations/Ultra96-V2%20Rev1%20Mechanical%20Drawing.PDF
  1. 2019年05月01日 05:41 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0