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

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

FPGAの部屋

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

Spartan-3A Starter KitでEDKを使ってカメラ表示20(カメラ回路のシミュレーション)

Spartan-3A Starter KitでEDKを使ってカメラ表示19(InitDoneの処理)”の続き。

前回、ディスプレイ回路はシミュレーションの結果、問題なく動作していそうだということがわかった。今度はカメラ回路のシミュレーションを行った。カメラ回路はカメラからデータを取得して、DDR2 SDRAMに書きこむのでWrite動作を行う。

シミュレーションは全体のシミュレーションのため1msのシミュレーションに長い時間がかかる。測ってなかったが10分以上かかるので、すぐにvsyncが出るようにOV7670モデルを調整して行った。

Cam_Controller_Top.vhdのIPICインタフェース部分のシミュレーション結果を下に示す。
Spa3A_SKit_OV7670_87_110922.png

1.IP2Bus_MstWr_Reqが1になって、コマンド転送が始まる。

2.IP2Bus_Mst_Addrにアドレスをセット、IP2Bus_Mst_Lengthに転送長(040、0x40バイト、64バイト、16バースト)をセットする。

3.96nsec(6クロック後)にBus2IP_Mst_CmdAckが1になって、コマンド転送は終了。

4.1.と同時にデータ転送もスタートし、IP2Bus_MstWr_dにデータを出力、IP2Bus_MstWr_sof_nを0にアサートして最初のデータであることを宣言する。

5.同時に、IP2Bus_MstWr_src_rdy_nを0にアサートする。

6.Bus2IP_MstWr_dst_rdy_nが0にアサートされるのは、48nsec(3クロック)後だった。IP2Bus_MstWr_src_rdy_nとBus2IP_MstWr_dst_rdy_nが同時にアサートされるときに1個のデータ転送が完了する。

7.2つ目のデータ転送は、80nsec(5クロック)待たされた。5クロック後にBus2IP_MstWr_dst_rdy_nがアサートされ、2つ目のデータ転送が完了した。(IP2Bus_MstWr_src_rdy_nは0にアサートし続けている)

8.その後のデータ転送はWait無く終了し、最後に、Bus2IP_Mst_Cmpltが1にアサートされて終了となる。

Writeが開始されて完了するまでの時間は448nsecとなった。

次に、シミュレーション波形の時間間隔を伸ばすと下のシミュレーション波形となった。
Spa3A_SKit_OV7670_88_110922.png

ここで、Writeの間隔は、2.56usecとなった。
32ビット幅のバスで2.56usecで16バースト転送を行っているので、スループットは、(16バースト×4バイト)/ 2.56X(10の-6乗)= 25MBytes/sec となった。

MPMCのDDR2 SDRAMの理想的な帯域は、125MHzでDDRで16ビットデータ幅なので、125MHz×2×2バイト=500MBytes/sec となった。1/20の帯域を使っていることになる。

前回のディスプレイ回路は全帯域の1/5、カメラ回路は1/20の帯域をピークで使用する。両方あわせて5/20、つまり、1/4の帯域を使用する。MPMCのDDR2 SDRAMはピークの帯域を想定しているので、それよりも少ない帯域になるが、1/4の帯域しか使用しないとなると、まだ余裕があるといえると思う。
カメラ回路もディスプレイ回路もなるべく長いバースト長を使用することで、ベースとなる帯域を減らさないように工夫している。
  1. 2011年09月22日 05:30 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0