”
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信号が追加された。

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

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

もう一度、XPSでProjectメニューから> Rescan User Repositories をする。
XPSを終了して、再度、シミュレーションを行った。今回は、ip2bus_mstrd_reqを1(アクティブ)にするタイミングをInitDoneが1になった後にしたのがわかると思う。

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

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の帯域を使っていることになる。
- 2011年09月21日 05:55 |
- EDK
-
| トラックバック:0
-
| コメント:0