FC2カウンター FPGAの部屋 2009年12月26日
FC2ブログ

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

FPGAの部屋

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

ESP企画の旧パージョンボードでのPCLK処理方法

ESP企画の旧パージョンボード(画像ベースボード、デジタルCMOSカメラ、208ピンSpartan3E XC3S500+2M高速SRAM基板)を使って、画像を出力していると、時々下の画像のようにちらちらしておかしくなる。(インプリメントの具合によって違うみたい。ちらつくインプリはずっとちらついているし、ちらつかないインプリはズートちらつかない)
Camera_Disp_33_091022.jpg

拡大してみると、特に本の白い部分で黒いポチポチが見える。これはほんのちょっとVHDLソースを変えたりすると直ってしまう。詳しくは、”CMOSカメラから画像を入力してディスプレイへ出力15(できた!!!)”参照。これはどうして起こるか確かめてみることにした。
いろいろ原因を考えてみたが、SDRAMのReadとWriteもぶつかっているようでも無い。やはりクロックが臭いのかな?ということで、CMOSカメラからのPCLKは下の図のようにDCMを通しているが、PCLKを直接クロックとして使用することにした。それでもXSTが自動的にBUFGは入れてくれていると思うけど。。。
Camera_Disp_6_090921.png

つまり上図でDCM1/1を通さないで直接、回路のマスタクロックとして使用した。そうしたら、おかしい現象は解消された。下のラプラシアンフィルタの図もなんか緑っぽく、ノイジーだったのが、ノイズが減った。(下図はノイジーな状態)
edge_detect_16_091113.jpg

下に変更点を示す。DCM_module_24MHzのmclk出力からmclkをとらないで、外部入力のcam_pclkから直接mclk へ接続した。mclk が回路全体のクロックである。

    DCM_module_24MHz_inst : DCM_module_24MHz port map(
        clk48MHz_in => clk,
        clk48_out => clk48,
        cam_clk_out => cam_clk_node,
        pclk_in => cam_pclk,
        -- mclk_out => mclk,
        mclk_out => open,
        cam_clk_locked => cam_clk_locked,
        mclk_locked => mclk_locked
    );
    reset <= not mclk_locked;
    mclk <= cam_pclk;


DACクロックもやはり反転して、DACデータの真ん中でクロックを立ち上げた方が良いようだ。

    -- DAC用クロックの生成
    n_mclk <= not mclk;
    ODDR2_for_dac_clk : ODDR2 generic map(
        SRTYPE => "ASYNC"
    ) port map(
        Q => dac_clk,
        C0 => mclk,
        C1 => n_mclk,
        CE => '1',
        D0 => '0',
        D1 => '1',
        R => reset,
        S => '0'
    );


D0 => '0', D1 => '1' で反対になっている。
これで、安心して仕事の回路がデバックできる。

(追記)
このボードはclk入力もpclk入力もGCLKにアサインされていないので、ISE11だと、下のような制約を入れる必要がある。どうにかならないものかな?GCLKにアサインされていれば。。。

NET "cam_pclk" CLOCK_DEDICATED_ROUTE = FALSE;
PIN "DCM_module_24MHz_inst/DCM_pclk.CLKIN" CLOCK_DEDICATED_ROUTE = FALSE;



(もう一度、追記)
新しいESP企画の画像ボードは、ちゃんとクロックがGCLK入力にアサインされていて、PCLKにDCMを使っても問題ないようです。
  1. 2009年12月26日 21:51 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:0

今年1年で行ったこと

まだ、2009年は終わっていないが今年1年で行ったことをまとめておこうと思う。

1月
・EDKでPetalinuxを動かしてみようとしていた。しかしLinunxは1つも動かせていない。残念。。。
・秋月電子のAKI-H8/3069FフラッシュマイコンLANボードをいじってた。もう遠い昔のようだ。。。
・”AKI-H8/3069FフラッシュマイコンLANボードでRedBoot起動”でRedBootは起動したが、Ubuntuでtftpd を起動してもネットワーク経由でelf ファイルをダウンロードすることが出来なかった。

2月
・ISE10.1iのXPower Analyzerを使ってみた。
・2/8にハンタマにスキーに行ったみたい。今シーズンは3回スキーに行ったわけだ。
・ナビを買いました。小さい3.5インチのナビ、ガーミン nuvi250 Plus です。
・2/28にFPGAの部屋のオフ会をした。参加された皆さん、ありがとうございました。また、このような会がもてればと思います。今度はFPGAカフェでどうですかね?

3月
・Spartan3A Starter KitのDDR2 SDRAMコントローラを作り出した。今年のハイライト、まとめた原稿は来年4月頃公開予定。
・まずはSpartan3AのIOなどを調査
・蔵王に行った。ガリガリのアイスバーン。怖かった。
・Spartan3A Starter KitのDDR2 SDRAMコントローラでフロアプランを試したが、やはりうまくない。
・Spartan3A Starter KitのDDR2 SDRAMコントローラでRead入力用SLICEMの位置を固定した。

4月
・Spartan3A Starter KitのDDR2 SDRAMコントローラのDQやDQSの配置を試行錯誤していた。
・筑波山にカタクリの花を見に行った。
・Spartan3A Starter KitのDDR2 SDRAMコントローラIOテストモジュールでシミュレーション。
・非同期FIFOを自作した。(Advanced FPGA本を参考にした)
・イーエスピー企画が出している。画像ベースボード、デジタルCMOSカメラ、208ピンSpartan3E XC3S500+2M高速SRAM基板を使って、カメラで撮影した画像をアナログRGBディスプレイに表示することができた。(これはサンプルプロジェクトを改造している)
・Spartan3A Starter KitのDDR2 SDRAMコントローラIOテストモジュールのインプリメントを行っている。
・ISE11.1iをインストール

5月
・Spartan3A Starter KitのDDR2 SDRAMコントローラIOテストモジュールを公開した。
・ISE11.1iのチュートリアルを書いた。チュートリアルを書くのは疲れる。。。
・Graphvizでステートマシンの図を書いてみた
・日昇テクノロジーからFPGA/Cyclone II EP2C5Q208ボード とCPLD/FPGA用のインタフェース・ボードとCPLD/FPGA用ダウンロード・ケーブルを購入した。

6月
・Spartan3A Starter KitのDDR2 SDRAMコントローラのシミュレーションをしていた。今度はIOだけではなくコントローラ全体を作った。
・数学ガールのsin(x)のテイラー展開をMaximaで検証したみた。
・Spartan3A Starter KitのDDR2 SDRAMコントローラのバーストテストのインプメント。DDR2-400は厳しいので、DDR2-300に目標変更。
・Spartan3A Starter KitのDDR2 SDRAMコントローラのバーストテストのデバック。結局、SD_LOOP_OUTがIOBへマップされていないのが原因だった。
・Spartan3A Starter KitのDDR2 SDRAMコントローラのバーストテストは1時間連続運転してエラーなしだった。できた~。
・37インチの地デジテレビを購入。
・diceのVHDL版。書き方を間違ってしまった。。。
・Veritak3.69B以降とChipScopeによる協調検証をしてみた。シミュレーションと実機のリフレッシュの違いが観測できた。たっくさんありがとうございました。
・Quartus2でSignaltap2とVeritakの協調検証を始めた。

7月
・ISE11.2iでのSpartan-3とSpartan-6の速度差を検証してみた。Virtex-6とSpartan-6のスライス構造とパスの比較もした。MCBも。
・ModelSimのVHDLシミュレーションとChipScopeの協調検証ができるようなった。ModelSimにVCDファイルを出力させて比べてみた。タックさんありがとうございました。
・Quartus2でSignaltap2を試すためにキャラクタ・ディプレイ・コントローラをAltera用に書き換えた。
・iPhone 3GSを買った。
・AlteraのTimeQuestなどをいろいろいじって勉強をした。
・AlteraのFPGAでキャラクタ・ディプレイ・コントローラを動作させることができた。
・次にSignaltap2を使ってみた。
・SignalTapⅡからVCDファイルを出力し、Veritakでシミュレーションの波形と比べてみることができた。たっくさんありがとうございました。
・小型カメラPENTAX Optio E75を購入。これは検索エンジンからのアクセスが多い。なぜ?

8月
・AlteraのSOPC Builderを使ってみた。一部バグはあるが、使い易い。
・食品棚完成。
・スライド丸のこ購入。
・黒部ダムにも行ったな~。
・Nios2 9.0 IDEを使ってみた。くりさんやtakepon256さん、いろいろお世話になりました。
・超電磁Pさんの高性能デジタル回路設計の基礎と最新動向というセミナを受けてきた。
・FPGAカフェにも行ってきた。
・FPGA技術No.5の備州長船さんの第3章 THE AVALONM@STER(Avalon-MMスレーブペリフェラルの作成方法)を参考に、ダイナミック7セグメントLED用のAvalon-MMスレーブペリフェラルを作った。
・KiCADにオートルーターが付いた。ちょっと使ってみた。

9月
・KiCADでSaprtan3ボードを試作してみた。いろいろ使い方がわかった。なんか基板を作ってみたいな。。。
・CMOSカメラから画像を入力してディスプレイへ出力する回路を作り出した。画像処理編スタート。

10月
・手押しかんな盤を買っちゃいました。
・ModelSimでinit_signal_spyを使ってVHDLの他の階層のsignalをミラーした。長年の懸案の事項をやってみることができた。
・CMOSカメラから画像を入力してディスプレイへ出力する回路もメモリやCMOSカメラのモデルを作ってシミュレーションした。
・子ども会の旅行で親だけでディズニーシーに行ったっけ。
・CMOSカメラから画像を入力してディスプレイへ出力15(できた!!!)。いろいろ紆余曲折はありましたが、やっと白黒画像をディスプレイに出力できました。。。
・画像のエッジ検出。2X2の差分でスレッショルド方式でのエッジ検出。

11月
・まずは横方向のみのエッジ検出を試した。(スレッショルド方式)
・次に縦横斜めのエッジ検出。(スレッショルド方式)
・2X2の画素の演算で画像のエッジ検出。
・3X3のラプラシアンフィルタが完成。
・ソーベル・フィルタは飽和してしまった。まだデバックしていない。
・ウッドデッキ完成。
・YUV-RGB変換回路の作製を始める。長船さん、ありがとうございました。
・MTM04に行ってきた。楽しかった。

12月
・DE0を使ってみた。
・YUV-RGB変換回路ができたと思ったら、エッジがおかしかった。
・シャープネスがおかしそうだったので、SCCBレジスタを設定する回路を作製。
・SCCBレジスタでオート・シャープネスを切れば、エッジはOKとなった。

1年を振り返ってみると、今年もいろんなことをやってきた。秋月のマイコン基板から、DDR2 SDRAMコントローラ、Kicad、画像処理までをやっていたとは思わなかった。1年は短いようでも、結構長いのかもしれない。それと木工、電動工具を買いまくった年でもある。また、インパクトドライバーを買おうとしているけど。。。
ブログを書いているので、一年を詳細に振り返って見られるのはとても良いことだと思う。
画像もブログでは、一段落してきたので、次は何をやろうか?(仕事ではこれからです)やはりDDR2 SDRAMコントローラを活かして、ビットマップのVGAコントローラを考えてみようかな?
あとPCI ExpressやDDR3 SDRAMなどもいじってみたい。今後の展開にご期待下さい?(期待出きないかもしれないけど。。。)

#Spartan3A Starter KitのDDR2 SDRAMコントローラは自分のところの技術発表会で、CMOSカメラから画像を入力してディスプレイへ出力する回路は高エネ研の技術研究会でいずれも3月に発表する予定。
  1. 2009年12月26日 05:55 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0