akita11 / EyeTracker

0 stars 0 forks source link

support_SPARTAN6でカメラ画像を取得不良 #29

Open akita11 opened 6 years ago

akita11 commented 6 years ago

support_SPARTAN6をSPARTAN6ボードで動作させると、VGA出力で表示されるカメラ画像が、左側40画素程度分のみになっている。残りの右側600画素程度分は真っ黒のまま。 なお表示されている40画素程度分のエリアの縦はカメラに設定したROIのサイズになっていて、またカメラにうつす対象物を動かすと、それにあわせてVGA出力表示も動く。 また重心位置の赤字マークは、表示はされているが、その位置は、対象物を固定した状態でも、表示エリア内でフレームごとに不規則に移動しており、表示されているエリア内の黒領域の正しい重心位置であるとは思われない。

watari3 commented 6 years ago

ROIのサイズ

これはどういう事を指しているのでしょうか?

akita11 commented 6 years ago

カメラの設定で、出力する範囲を640x170に設定していて、縦方向が170画素しかでてきません。 VGS出力させるモニタ画像では、縦方向が170画素分しか表示せれていません。 つまり縦方向のカメラからの読み込み(FVAL同期)は大丈夫そう、という意味です。

2017/12/29 9:30 "watari3" notifications@github.com:

ROIのサイズ

これはどういう事を指しているのでしょうか?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/akita11/EyeTracker/issues/29#issuecomment-354379880, or mute the thread https://github.com/notifications/unsubscribe-auth/AFuOtlsoIXFw2Wqf2VwxUsEWfMF-NUZZks5tFDKmgaJpZM4RN2VN .

watari3 commented 6 years ago

ToDo及び進捗状況

akita11 commented 6 years ago

動作時のVGAモニタの様子を記録しておきます。 画面の左端10画素程度のみ、映像と思われるものがうつっています(カメラの対象物を動かすとそれに応じて動いているようには見える) https://www.dropbox.com/s/439gomuvkej7hc1/180104Monitor1.jpg?dl=0

サイズがわかりにくいので、モニタ全体もあわせて撮影しました。拡大するとうっすらと左端のほうに、上記表示エリア(グレー)が見えます。 https://www.dropbox.com/s/q0muif8t5d79ecj/180104Monitor2.jpg?dl=0

akita11 commented 6 years ago

issue #28 で話の出た、Kintex7版のほうでボードを交換したら正常動作した、という件、こちらのSpartan6でも、このボードで動作させてみましたが、現象は変わらず(左端10画素分程度のみ表示)でした。

akita11 commented 6 years ago

CLctrl.vのfor文のところ、動作内容というか設計意図を確認させてください。140行目からのfor文のところは以下のようになっています。

            for (i=0; i<MDATA_WIDTH;i=i+2) begin
                if (col == i) begin
                    oMEMIN_0[i  ] <= (iDATA_L<iTHRESHOLD) ? iDE: 1'b0; // flag=1 for dark pixel and when iDE = high
                    oMEMIN_0[i+1] <= (iDATA_R<iTHRESHOLD) ? iDE: 1'b0; // flag=1 for dark pixel and when iDE = high
                end else begin
                    oMEMIN_0[i  ] <= oMEMIN_0[i  ];
                    oMEMIN_0[i+1] <= oMEMIN_0[i+1];
                end
            end

これは、アクセス中の列(col)のみoMEMIN_0を、画素値に応じてフラグをセットし、それ以外の列は変化させない、ということですよね。 そのような動作であれば、以下のような記述でもできそうな気がしますが、これだとマズいですか?

                    oMEMIN_0[col  ] <= (iDATA_L<iTHRESHOLD) ? iDE: 1'b0; // flag=1 for dark pixel and when iDE = high
                    oMEMIN_0[col+1] <= (iDATA_R<iTHRESHOLD) ? iDE: 1'b0; // flag=1 for dark pixel and when iDE = high
akita11 commented 6 years ago

↑のようにCLctrl.vを修正し、動作させてみましたが、現象は変わりませんでした。 ところでいま気づいたのですが、VGAモニタの右端のほうに、薄い矩形エリアが表示されているようです。具体的には、モニタの右端から横20画素程度、縦480画素(画面の高さいっぱい)の、薄い(たぶん輝度20/255くらい)矩形と、その左側に、同じくらいのサイズで、もう少し輝度が薄いエリアがあります。VGA表示メモリの残り、ですかね。

akita11 commented 6 years ago

Cadence/Synopsysを使うサーバの準備がほぼできました(git2だけまだですがそれも近日中)。

watari3 commented 6 years ago

修正前のコードは変化なしデータも明示的に保持させるために記載しています。 修正後のコードは変化なしデータに対する処理を省略しています。

明示的に記載したほうが安全なのでそうしています。

輝度20/255位とのことですが、やはり配線がおかしくなっている可能性が高そうですね。

GateSimに関しては後ほど関連資料やファイルをpushしておきます。

watari3 commented 6 years ago

gatesimが出来そうな環境をpushしました。

./designs/ISE/EyeTracker_SPARTAN6/set_timesim.sh (UTF-8)にGatesimの事前準備方法を記載しておきました。こちらを参照し準備ください。

準備後Linuxにて./designs/sim/ディレクトリに移動後./prepare_env_setting.shを実行し ncverilog -f run_gate.fを実行ください。

なおprepare_env_setting.sh及びrun_gate.fに自分の環境に合うようVerdi及びIUSの環境を設定ください。

問題がありましたら./log/及び./sdf/下のファイルをご提供ください。

または軽確認はnWaveにて波形ビューアが起動し、./fsdb/TOP.fsdbを読み込むことで波形確認できます。

akita11 commented 6 years ago

一応確認ですが、↑は、feature/issue29ブランチ、ですよね?

watari3 commented 6 years ago

はい。それです。