***
さて、STM32F4のトリプルインターリーブを使うと、ADCで最大7.2Mspsまでサンプリングできます。簡単に使うなら、7.2Mspsが上限となります。
一方で、別の方法を使うと、最大で8bit時に9Mspsまでサンプリングできます(実際には9.818..MHzまでサンプリングできますが、内部処理の都合上特性が悪化すると予想されるので、最大で9Mspsと扱っています)。
6bit時であれば10.8Mspsまで行けそうですが、今回は分解能が足りないので8bitのみで動作確認を行っています。
試しに9MspsでNTSC(コンポジット映像信号)をサンプリングしてみました。

歪んではいますが、一応バーストサイクルもそれらしく受信できるようになりました。
バーストに対して約2.5倍のサンプリングレートなので、正弦波の再現性は良くありませんが、信号処理でなんとかできそうな程度にはなっているかな、という気がします。
メモリの容量的にあまり長時間はサンプリングできませんが、まぁ、7.2Msps超えを目指すという点では、一応達成したかな、と思っています。
***
試しにNTSCを画像化してみました。

なかなかいい感じですね。
1ラインあたり572.01pxくらいになり、詰め物をしなくてもほぼ垂直になります。水平ブランキングを除くと、横解像度は474pxくらいです。
今の所、72kポイントのメモリを確保していますが、これで縦解像度126ライン分くらいになります。
78kポイントほど確保しておけば、ちょうど0.5フレーム分くらいになるので、0.5フレームずつSDカードに保存し、その後で1フレームにまとめる、みたいな処理をすれば、いい感じに画像化できそうです。
SPIの8ピンDIPなSRAMだと64KBくらいの容量なので、これを3個使えば1フレーム分がバッファできるし、1bitSDカードよりは早そうなので、オンボードで画像化するならそのほうがいいかもしれません。
例えば、缶サットに乗せて上空から画像を撮影するだけなら、オンボードでの画像化は不要で、あとからPCで処理すれば良いので、楽そうです。一方、画像解析等を行って特定の色の場所へ誘導する、みたいな使い方の場合は、オンボードで画像化する必要があるので、なかなか大変そうです。まぁ、色情報を読み出そうとすると位相振幅変調をデコードしなきゃいけないので大変だし、そういう場合はJPEGカメラを使ったほうがいいでしょうけども。
とりあえず、もうちょっとカラフルなNTSCが得られるように工夫してデータを取り直して、PCで色情報のデコードを試してみようと思います。
***
追記
一つ前のサンプルとの差の数をカウントしてみた。

一番数が多いのは0で、ピークの7サンプルで全体のデータの6割を占める。それ以外のサンプルはピークより1桁低い回数しか出てこない。スペクトルの外側は2-3桁少ない。±128を超えると1回も出てこない。
ハフマン符号で圧縮したらかなりの圧縮率が稼げそう。
ただ、ループも含めて1バイトあたり16サイクル未満で圧縮する必要があるし、ハフマン符号はビット数が可変なので、それを効率よく詰め込んでいく必要がある。
まぁ、まずはデコード処理を作らなくちゃ。。
***
追記
そういえば、リンク集を読んでて思い出したけど、IKAROSの分離カメラが、NTSCカメラで、アナデバの素子で復調してるみたい。うろ覚えだけど、TRICOMのカメラも同じ大学が扱ってた気がするので、それもそうかな?
あと、今はNTSCとADCを直結だけど、適当なピンにLPF経由で接続して、アナログWDで前置等価パルス期間に割り込みかけて、そこからメインのADCを回す、みたいな処理にすれば、フレーム先頭をキャプチャできそう。タイマを1個挟めば任意のラインを読み込めるし。気が向いたら試してみよう(まずはデコードだ!!)。
0 件のコメント:
コメントを投稿