FC2カウンター FPGAの部屋 2010年09月20日
FC2ブログ

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

FPGAの部屋

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

小学校の運動会

だいぶ書くのが遅れてしまいましたが、土曜日(18日)には、小学校の運動会がありました。
快晴の天気のもと、暑かったです。ビーチパラソルがいっぱいです。タープ、テントを持ち込んでいる人もいました。
undokai_1_100920.jpg

小6の娘の午前中の出し物は、徒競走、騎馬戦、ソーラン節、全校踊りでした。
待ちに待ったお弁当です。メニューは娘が好きなサンドイッチとおにぎり、おいなりさん、おかずはエビフライ、チキンボーン?、お漬物、デザートは梨、りんご、ぶどうです。豪華です。
undokai_2_100920.jpg

さて、午後は鼓笛隊、私も一緒に親子障害走に出ました。親子障害走は、子供の三輪車で始まって、大きなパンツに親子で入って走り、二人三脚でゴールです。
undokai_3_100920.jpg

暑い一日でした。
  1. 2010年09月20日 08:01 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路27(VIOで8ビットのデータを取得)

昨日、Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路をFPGA-CAFEに持って行って、デモしてきた。画質は悪いが、ある程度、評価はしてもらえたかと思う。更には、Make Tokyou Meeting 06でデモ出来れば?と思っている。

現在は、DE0用にSCCBインターフェース回路をVerilogに変換中だが、Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路でも、現在は4ビット品質の画像しかディスプレイに出力していないので、8ビットの品質を見るためにVIOでYUVのデータを取得して、BMPファイルに変換して、画質を見てみた。(”Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路22(ソフトでYUV-RGB変換)”参照)
前回のChipScopeのVIOを追加したプロジェクトを改造して、SCCBインターフェース回路を入れた。そして、tclのデータ収集スクリプトを動かして、YUVのデータを取得した。それを、YUV-RGB変換、BMPフォーマット変換ソフトにかけて、BMPファイルにした。そうしたところ、黒のところに緑が出てしまうことがあって、おかしかった。そういえば、前回も黒の縁に緑が出ていた。
CamDispCntrler_DDR2_pict_14_100903.jpg

前回のソフトウェアをよく見てみたところ、YUV-RGB変換のところで値がマイナスになった時のアンダーフロー対応と256よりも値が大きくなった時の飽和処理がなかった事に気がついた。これを修正したCコードを下に示す。

        for (j=0; j<4; j++){
            r_int = (Y[j]<<8) + V[j]*359 - 45952;
            g_int = (Y[j]<<8) - V[j]*183 - U[j]*88 + 34688;
            b_int = (Y[j]<<8) + U[j]*454 - 58112;
            if (r_int <0)
                red = 0;
            else if (((r_int)>>8)>=256)
                red = 0xff;
            else
                red = (r_int)>>8;

            if (g_int<0)
                green = 0;
            else if (((g_int)>>8)>=256)
                green = 0xff;
            else
                green = (g_int)>>8;

            if (b_int<0)
                blue = 0;
            else if (((b_int)>>8)>=256)
                blue = 0xff;
            else
                blue = (b_int)>>8;

            cam_red[(int)(i/640)][(int)((i%640)+j)] = red;
            cam_green[(int)(i/640)][(int)((i%640)+j)]  = green;
            cam_blue[(int)(i/640)][(int)((i%640)+j)] = blue;
        }


これで、再度、以前の取得画像をBMPファイルに変換した。
CamDispCntrler_DDR2_pict_22_100920.jpg

黒のエッジに入っている緑色は無くなった。やはりアンダーフローだったのではないか?と思う。
次に今回取得した画像をBMPファイルに変換した。
CamDispCntrler_DDR2_pict_23_100920.jpg

やはり色は綺麗に見えている。だが、右下のフローリングの模様がブロックノイズぽい。実際に画面に出力してみないとわからないと思う。やはり、DACかDVIトランスミッタのICを付けてみたい。。。

  1. 2010年09月20日 04:14 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:9