FC2カウンター FPGAの部屋 Ultra96
FC2ブログ

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

FPGAの部屋

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

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

Ultra96用PMOD拡張ボード11(改版した基板が届いた)”の続き。

前回届いたUltra96用PMOD拡張基板に部品を実装した。
これでテストできる。
OV5642_35_181215.jpg

OV5642_36_181215.jpg

ボードのスペルが間違っているのは、ご愛嬌ということで許して。。。
もしうまく行ったら欲しい人いるのかな? コミケで売ってみたい。
  1. 2018年12月15日 20:41 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

秋月電子カメラモジュールOV5642を使う9(デバイスツリー・オーバレイ用ファイルの整備)

秋月電子カメラモジュールOV5642を使う8(OV5642用Vivadoプロジェクト)”の続き。

前回は、Ultra96 用の cam_test_182 のVivado プロジェクトを少し改変して、OV5642用のVivado プロジェクトを作った。今回は、Debian 上でソフトウェアを起動するために、デバイスツリー・オーバレイ関連のファイルを整備する。

まずは、Ultra96 のDebian を起動して、~/examples/ ディレクトリに行って、 cam_cap_ov5642 ディレクトリを作成した。
cd ~/examples/
mkdir cam_cap_ov5642

OV5642_27_181212.png

nautilus を起動して、cam_capture ディレクトリの内のアプリケーションの実行ファイルの cam_capture 以外を cam_cap_ov5652 ディレクトリにコピーした。
OV5642_28_181212.png

パソコンからUltra96 のDebian に SFTP して、前回作成した cam_test_ov5642.bin をcam_cap_ov5652 ディレクトリにアップロードした。
OV5642_29_181212.png

SFTP したcam_cap_ov5652 ディレクトリの cam_test_ov5642.bin を /lib/firmware/ ディレクトリにコピーした。
sudo cp cam_test_ov5642.bin /lib/firmware/
OV5642_30_181212.png

/lib/firmware/ ディレクトリに cam_test_ov5642.bin がコピーされた。
OV5642_31_181212.png

cam_capture.dtb を削除して、cam_capture.dts を cam_cap_ov5642.dts に名前を変更した。
OV5642_32_181212.png

各dts ファイルを書き換えた。
最初に fpga-load.dts から示す。

/dts-v1/;
/ {
    fragment@0 {
        target-path = "/fpga-full";
        __overlay__ {
            firmware-name = "cam_test_ov5642.bin";
        };
    };
};


fclk01-zynqmp.dts を示す。

/dts-v1/;/plugin/;
/ {
    fragment@0 {
        target-path = "/amba";
        __overlay__ {
            fclk0 {
                compatible    = "ikwzm,fclkcfg-0.10.a";
                clocks        = <&clk 0x47>;
                insert-rate   = "100000000";
                insert-enable = <1>;
                remove-rate   = "1000000";
                remove-enable = <0>;
            };
            
            fclk1 {
                compatible    = "ikwzm,fclkcfg-0.10.a";
                clocks        = <&clk 0x48>;
                insert-rate   = "24000000";
                insert-enable = <1>;
                remove-rate   = "1000000";
                remove-enable = <0>;
            };
        };
    };
};


cam_cap_ov5642.dts を示す。

/dts-v1/;/plugin/;
/ {
    fragment@0 {
        target-path = "/amba_pl@0";
        #address-cells = <2>;
        #size-cells = <2>;

        __overlay__ {
            #address-cells = <2>;
            #size-cells = <2>;

            mt9d111_inf_axis-uio {
                compatible = "generic-uio";
                reg = <0x0 0xA0000000 0x0 0x1000>;
            };
            
            axi_iic-uio {
                compatible = "generic-uio";
                reg = <0x0 0xA0001000 0x0 0x1000>;
            };
            
            DMA_Write_sFB-uio {
                compatible = "generic-uio";
                reg = <0x0 0xA0010000 0x0 0x10000>;
            };

            cam_cap_ov5642-udmabuf4 {
                compatible  = "ikwzm,udmabuf-0.10.a";
                device-name = "udmabuf4";
                size = <0x00800000>;
            };
        };
    };
};


各 dts をコンパイルした。
dtc -I dts -O dtb -o fpga-load.dtb fpga-load.dts
dtc -I dts -O dtb -o fclk01-zynqmp.dtb fclk01-zynqmp.dts

OV5642_33_181214.png

dtc -I dts -O dtb -o cam_cap_ov5642.dtb cam_cap_ov5642.dts
OV5642_34_181214.png

各 dts ファイルをコンパイルして dtb ファイルを生成した。

各デバイスツリーをロードするシェルスクリプト lddtovray.sh を示す。

#!/bin/bash

sudo mkdir /config/device-tree/overlays/fpga
sudo cp fpga-load.dtb /config/device-tree/overlays/fpga/dtbo
sudo mkdir /config/device-tree/overlays/fclk01
sudo cp fclk01-zynqmp.dtb /config/device-tree/overlays/fclk01/dtbo
sudo mkdir /config/device-tree/overlays/cam_cap_ov5642
sudo cp cam_cap_ov5642.dtb /config/device-tree/overlays/cam_cap_ov5642/dtbo

sleep 0.5
sudo chmod 666 /dev/uio*
sudo chmod 666 /dev/udmabuf4


各デバイスツリーを削除するシェルスクリプト rmdtovray.sh を示す。

#!/bin/bash

sudo rmdir /config/device-tree/overlays/cam_cap_ov5642/
sudo rmdir /config/device-tree/overlays/fclk01
sudo rmdir /config/device-tree/overlays/fpga/

  1. 2018年12月14日 04:47 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード11(改版した基板が届いた)

Ultra96用PMOD拡張ボード10(基板の改版3)”の続き。

昨日、改版したUltra96 用PMOD 拡張ボードが届いた。

早速、部品を実装して試してみたい。配送業者にDHL を選んで、基板発注から到着まで 12 日だった。
Ultra96_ext_board2_25_181213.jpg
  1. 2018年12月13日 05:42 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード10(基板の改版3)

Ultra96用PMOD拡張ボード9(基板の改版2)”の続き。

前回は、Ultra96用PMOD拡張ボードの基板レイアウトが完成した。今回は、ガーバー・データとドリル・データを出力してFusion PCB に発注しよう。

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

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

これで、ガーバー・ファイルとドリル・ファイルが出力された。
KiCad のGerbView でガーバー・ファイルとドリル・ファイルを見てみよう。
GerbView を立ち上げてすべてのガーバー・ファイルとドリル・ファイルを入れた。
Ultra96_ext_board2_18_181201.png

裏面の配線を示す。
Ultra96_ext_board2_19_181201.png

表面の配線を示す。
Ultra96_ext_board2_20_181201.png

裏面のハンダ・マスクとシルクを示す。B7, B8 の文字のシルクの太さを変え忘れてしまったようだ。失敗。
Ultra96_ext_board2_21_181201.png

表面のハンダ・マスクとシルクを示す。
Ultra96_ext_board2_22_181201.png

ガーバー・ファイルとドリル・ファイルをZIP で固めた。
Ultra96_ext_board2_24_181202.png

SeeedStudio のPCB製作ページに行って、ガーバー・ファイルをアップロードした。1.2 mm の厚さで青の基板にした。
Ultra96_ext_board2_23_181201.png

値段は $4.9 だったが、DHL の配送料が $15.48 だったので、合計 $20.38 だった。
PayPal で支払った日本円は 2,401 円だった。
  1. 2018年12月02日 04:30 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード9(基板の改版2)

Ultra96用PMOD拡張ボード8(基板の改版1)”の続き。

前回は、Ultra96 用PMOD 拡張ボードの回路図にプルアップ抵抗を追加して、基板図面にエクスポートした。今回は、FreeRouter で自動配線を行って、基板図面を完成させよう。

KiCadのインストールとローカルライブラリ参照設定”を参照してFreeRouter をUbuntu 16.08 にインストールした。
まずは、

https://github.com/freerouting/freerouting/files/1282814/freeroute.jar.zip

からfreeroute.jar.zip をダウンロードした。
Ultra96_ext_board2_4_181129.png

freeroute.jar を /user/bin にコピーして、実行パーミッションを入れた。
sudo mv freeroute.jar /usr/bin/
sudo chmod +x /usr/bin/freeroute.jar

freeroute.jar で起動した。
Ultra96_ext_board2_5_181129.png

Ultra96_ext_board2_6_181129.png

KiCad 5.0 からFreeRouter へのデータの渡し方が変更になったようだ。
Pcbnew のFile メニュー -> Export -> Specctra DSN... を選択する。
Specctra DSN File ダイアログでエクスポートする名前を決める。拡張子は .dsn のようだ。
Ultra96_ext_board2_7_181129.png

dsn ファイルをセーブしたらFreeRouter の Open Your Own Design をクリックして、dsn ファイルを選択する。
Ultra96_ext_board2_8_181129.png

ダイアログが表示された。はいをクリックした。
Ultra96_ext_board2_9_181129.png

デザインがロードされた。
Ultra96_ext_board2_11_181129.pngUltra96_ext_board2_10_181129.png

Autorouter ボタンをクリックして自動配線を行って、10分ほどやったかな?完成した。
Ultra96_ext_board2_12_181129.png

FreeRouter のFile メニューからExport Specctra Session File を選択して、ses ファイルを出力した。

Pcbnew のFile メニュー -> Import -> Specctra Session... を選択した。
Merge Specctra Session File: ダイアログで ses ファイルを選択して、FreeRouter の自動配線結果を取り込んだ。
Ultra96_ext_board2_13_181129.png

GNDベタを表面、裏面に設定して基板が完成した。
Ultra96_ext_board2_14_181130.png

DRC もエラーなしだった。
Ultra96_ext_board2_15_181130.png
  1. 2018年11月30日 06:39 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボード8(基板の改版1)

Ultra96用PMOD拡張ボード7(部品を実装した)”の続き。

Ultra96用PMOD拡張ボードは、+3.3V 側にプルアップ抵抗を付け忘れていた。よって、プルアップ抵抗を +3.3V の全出力ピンに追加する。

今回から KiCad 5.0 を使用することにした。今回からFreeRouter の使用方法が変更になっているようだ。

まずは、回路図でR5 〜 R20 を追加した。
Ultra96_ext_board2_1_181129.png

R5 〜 R20 のパッケージは手付用の1608 にした。
Ultra96_ext_board2_2_181129.png

基板は配線をすべて削除してラッツネットとした。基板外形の横を少し伸ばした。横 58 mm X 縦 34 mm 程度となった。
Ultra96_ext_board2_3_181129.png

次はFreeRouter を使用して配線していこう。
  1. 2018年11月29日 05:02 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Ultra96用PMOD拡張ボードの波形の観察

Ultra96用PMOD拡張ボードでカメラ入力13(Debian上でカメラ画像を画像ファイルに3)”でカメラの画像をBMPファイルに変換することができたので、Ultra96用PMOD拡張ボードの波形をオシロスコープで観察することにした。

OWON SDS-1102(オシロスコープ)を買いました”で購入したオシロスコープでMT9D111 カメラのI2C の波形を観察する。
CH1 がSCL(クロック) でCH2 がSDA(データ)の +3.3V 側を測定している。
oscilloscope_11_181128.jpg

綺麗な波形だと言える。
I2C Write の全体を入れてみる。
oscilloscope_12_181128.jpg

問題なさそうだ。

次に、MT9D111 のカメラ画像データの D5 を見てみよう。これも +3.3V 側の波形だ。
oscilloscope_13_181128.jpg

次に、そのD5 に 1kΩの抵抗を付けてみる。
oscilloscope_14_181128.jpg

D5 に 1kΩの抵抗を付けたときの波形を示す。
oscilloscope_15_181128.jpg

問題なさそうだ。
これで、3.3V 側が出力にピンに 1kΩのプルアップ抵抗も影響は無いようだ。BMPファイルにした画像も問題なかった。
これで、心置きなくUltra96用PMOD拡張ボードの改版をすることができる。
  1. 2018年11月28日 05:17 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0
»