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

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

FPGAの部屋

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

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

Spartan-3A Starter KitでEDKを使ってカメラ表示18(シミュレーションでデバック2)”の続き。

前回、MPMC(Multi-Port Memory Controller)の初期化が済んでいないのが原因だとわかった。
camera_controller, display_controller, sccb_controller の各モジュールにMPMC_InitDone信号を追加して、今までのリセット信号とORをとり、クロックで同期した信号を新たなリセット信号とすることにした。

次に、それぞれの.MPDファイルにMPMC_InitDone 信号を追加した。

PORT MPMC_InitDone = "", DIR = I


XPSでProjectメニューから> Rescan User Repositories をしてから、Portタブを見ると、camera_controller, display_controller, sccb_controller の各モジュールにMPMC_InitDone信号が追加された。
Spa3A_SKit_OV7670_82_110920.png

これを、MPMCのMPMC_InitDone と接続した。
Spa3A_SKit_OV7670_83_110920.png

ついでに、試しにインプリメントしてみたら、BRAMが足りなかったので、キャッシュを取り外すことにする。
Use Instruction and Data Caches のチェックを外した。
Spa3A_SKit_OV7670_84_110920.png


もう一度、XPSでProjectメニューから> Rescan User Repositories をする。

XPSを終了して、再度、シミュレーションを行った。今回は、ip2bus_mstrd_reqを1(アクティブ)にするタイミングをInitDoneが1になった後にしたのがわかると思う。
Spa3A_SKit_OV7670_86_110921.png

次に、Disp_Controller_Top.vhd のIPICのプロトコル部分を下図に示す。”Spartan-3A Starter KitでEDKを使ってカメラ表示6(PLBV46 Master Burstのバースト転送)”のFixed Length Burst Read Operationを参照。
Spa3A_SKit_OV7670_85_110921.png

ip2bus_mstrd_reqを1(アクティブ)にした後、6クロック(96nsec) でip2bus_mst_cmdackが1にアサートされている。ip2bus_mst_cmdackが1にアサートされた後、15クロック(240nsec) で、bus2ip_mstrd_src_rdy_n が0にアサートされている。その後、bus2ip_mstrd_src_rdy_nは、ディアサートされること無く連続してアサートされている。
1つのバースト転送の処理時間は、43クロック(688nsec) となった。32ビット幅のバスで688nsecで16バースト転送を行っているので、スループットは、(16バースト×4バイト)/ 688X(10の-9乗)≒ 93MBytes/sec となった。

MPMCのDDR2 SDRAMの理想的な帯域は、125MHzでDDRで16ビットデータ幅なので、125MHz×2×2バイト=500MBytes/sec となった。約1/5の帯域を使っていることになる。
  1. 2011年09月21日 05:55 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0