FC2カウンター FPGAの部屋 2013年08月27日
FC2ブログ

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

FPGAの部屋

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

AXI VDMAのシミュレーション13(Questaでシミュレーション)

前の記事は、”AXI VDMAのシミュレーション12(ハードウェア協調シミュレーション)

ISimによるハードウェア協調シミュレーションは失敗に終わって、ISimによるソフトウェアのシミュレーションは13msec 辺りでISimが落ちてしまう。ISimでは打つ手が無いので、QuestaSim でシミュレーションを行った。

シングルバッファのシミュレーションは問題なく終了し、”LogiCORE IP AXI Video Direct Memory Access v5.04a Product Guide PG020 December 18, 2012”の113ページ、Triple Frame Buffer Example のシミュレーションを行ったことを覚書としてブログに書いておく。

AXI VDMA のレジスタの設定用テキスト・ファイルを下に示す。

10000000
0000008B
1000005c
00000000
10000060
00180000
10000064
00300000
10000058
01000c80
10000054
00000c80
10000050
00000258
10000030
00000003
100000ac
00000000
100000B0
00180000
100000B4
00300000
100000a8
00000c80
100000a4
00000c80
100000a0
00000258
ffffffff


設定値の意味については、”AXI VDMAのレジスタ設定用AXI Lite Master IPの作製2(シミュレーション)”を参照のこと。
AXI VDMAの設定は、MM2S のみ Genlock をイネーブルしている。フレームバッファは3つ使用して、それらのアドレスは 000000, 180000, 300000 とした。

QuestaSim で101msec シミュレーションした結果を下に示す。
axi_vdma_sim_1_130827.png

上の図の説明をすると、AXI VDMAの信号を表示している。赤の四角で囲った部分は MM2S の AXI4 Master Read 部分の信号で、ピンクの四角で囲った部分は S2MM の AXI4 Master Write 部分の信号だ。
それぞれのフレームの切れ目に、赤い棒とピンクの棒で印を付けてある。赤い棒には、”300000 000000 000000 180000 180000 300000”と続く数字が書いてある。これは、次のフレーム(右側)のスタートアドレスを示す。これは、HDMIに出力する信号だ。
ピンクの棒には、”000000 180000 300000 000000”と続く数字が書いてある。これも、次のフレーム(右側)のスタートアドレスを示す。これは、CMOSカメラからくる信号なので、フレームレートが約半分になっている。
ピンク色の数字と赤色の数字を見比べてもらいたいのだが、180000 の後の赤色の数字を見て欲しい。300000 までの間の赤い数字は、すべて 000000 になっている。これは、 000000 からのアドレスのフレームバッファには、CMOSカメラから転送された正常なデータが入っているからである。
ピンク色の数字の 300000 の位置から 000000 までの赤い数字は 18000 になっているのも同じ理由からである。

よって、この結果を見ると、トリプル・バッファリングがうまく出来ていると言えると思う。
  1. 2013年08月27日 17:23 |
  2. IP
  3. | トラックバック:0
  4. | コメント:0

Vivado HLSのAXI Master Exampleを試す1

前回は、AXI Lite Slave を試してみたので、今回は、AXI Master の Example を試してみようと思う。

なお、今回はやり方を省略するので、詳しくは、下の記事を見なおして欲しい。

Vivado HLSのExampleを試してみる1(axi_lite の生成)
Vivado HLSのExampleを試してみる2(シミュレーションと合成)
Vivado HLSのExampleを試してみる3(インターフェイス)
Vivado HLSのExampleを試してみる4(C/RTL Cosimulation)
Vivado HLSのExampleを試してみる5(IPにした)


・最初に、AXI Master の Example の Project を作製した。
Vivado_HLS_47_130826.png

・solution1 を右クリックして、右クリックメニューから Solution Setting... を選択して、Solution Settingを選ぶ。
・Synthesis のクロックの周波数とFPGAの種類を確認した。前 Example のと同じだった。
Vivado_HLS_48_1308267.png

・今回の AXI Master の Example は、50個のバッファのアドレスをもらって、各バッファに +100 した値をバッファに入れて返すというプログラムだった。
Vivado_HLS_49_1308267.png

・Run C Simulation アイコンをクリックして、Cのシミュレーションを走らせた。成功した。
Vivado_HLS_50_1308267.png

・Run C Synthesis アイコンをクリックして、合成を行った。
・合成レポートが表示された。左のExplorer の Solution1 には、Syn フォルダが増えていて、その下に、report, systemc, verilog, vhdl のサブフォルダが出来た。今回のファイルは2つ出来ていた。
Vivado_HLS_51_1308267.png

・Latency と Utilization Estimates を表示した。今度のレイテンシは211だ。
Vivado_HLS_52_1308267.png

・Interface を下に示す。今度は、ap_ctrl_hs バスを使用している。
Vivado_HLS_53_1308267.png

・ap_ctrl_hs バスについては、”Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2013.2) 2013 年 6 月 19 日”の71ページに記述がある。そこの、”図 1-39 : ap_ctrl_hs インターフェイスのビヘイビア”を下に引用する。
Vivado_HLS_54_1308267.png

ap_ctrl_hs バスの動作についてはマニュアルに記載がある。正直なところ、その説明を読んでもよくわかないのだが、後でシミュレーションして、動作を確認してみたいと思う。

・Analysis パースペクティブでの画面を下に示す。
Vivado_HLS_55_1308267.png

まだ詳細にどのように表を見るかがいまいちわかっていない。Latency は 211クロックで、Interval は 212クロックだそうだ。

・使用リソースを示す。
Vivado_HLS_56_1308267.png

次の記事は、”Vivado HLSのAXI Master Exampleを試す2
  1. 2013年08月27日 05:41 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0