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

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

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

下に変更点を示す。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を使っても問題ないようです。
- 2009年12月26日 21:51 |
- 画像処理
-
| トラックバック:0
-
| コメント:0