FC2カウンター FPGAの部屋 2016年09月13日
fc2ブログ

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

FPGAの部屋

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

DMA Read IP を単体でシミュレーション1(論理シミュレーション)

Vivado HLSで作ったDMA Read IP を実機でテスト1(動作しない)”で DMA Read IP が全く動作しないので、単体でシミュレーションしみることにした。

シミュレーションするにあたって、必要なIP は、”AXI4 Slave Bus Functional Model のVerilog HDL版4”と、”レジスタ設定用AXI4 Master IPをVivado HLS で作ってみた”で作った reg_write_read IP だ。

DMA_Read_test プロジェクトを作成して、 reg_write_read IP をIP Catalog に登録した。AXI4 Slave Bus Functional Model のVerilog HDL版はプロジェクトに入れて使用しようと思ったのだが、面倒なので axi_slave_bfm IP を作ることにした。

axi_slave_bfm プロジェクトを作成して、Tools メニューから Create and Package IP... を選択してIP 化を行った。
DMA_Read_IP_test_3_160913.png

上の図で、edit packaging settings をクリックすると、Project Settings のIP が開くので、Create archive of IP にチェックと入れると、IP がまとめらえたZIP ファイルができる。
DMA_Read_IP_test_4_160913.png

それが、xilinx.com_user_axi_slave_bfm_1.0.zip だ。
DMA_Read_IP_test_5_160913.png

xilinx.com_user_axi_slave_bfm_1.0.zip の中身を示す。
DMA_Read_IP_test_6_160913.png

DMA_Read_test フォルダの下に axi_slave_bfm フォルダを作って、そのZIP ファイルの中身を入れた。

DMA_Read_test プロジェクトで axi_slave_bfm フォルダをIP Catalog に登録した。
DMA_Read_IP_test_7_160913.png

DMA_Read_test ブロックデザインを生成して、Add IP して回路を構成した。
DMA_Read_IP_test_8_160913.png

Address Editor。
DMA_Read_IP_test_9_160913.png

DMA Read IP のレジスタを設定する reg_write_read IP を編集して、レジスタに書き込む値をセットする。
DMA_Read_IP_test_10_160913.png

reg_write_read_reg_?_rom.dat を編集する。dat ファイルの機能の割り当てを示す。

reg_write_read_reg_0_rom.dat : Write - 0, Read - 1
reg_write_read_reg_1_rom.dat : Delay、単位はクロック数
reg_write_read_reg_2_rom.dat : アドレス、16進数
reg_write_read_reg_3_rom.dat : データ、16進数


実際にレジスタをセットする値を示す。

R/W  Delay Address      value
0    0    0x44A00018    0x10000000
0    0    0x44A00020    0x10000000
0    0    0x44A00028    0x10000000
0    0    0x44A00030    0x00000000
0    0    0x44A00000    0x00000001


実際に値を書き込んでいるところだ。
DMA_Read_IP_test_11_160913.png

これで Re-Package IP を行う。

次に、今回は、AXI4 Master Read のみなので、AXI4 Slave BFM の設定をRead されたら 0 から順に +1 された出力を出すモードに変更した。
DMA_Read_IP_test_12_160913.png

これで論理シミュレーションの準備が整ったので、シミュレーションを行った。
DMA_Read_IP_test_13_160913.png

シミュレーション波形を示す。動作している問題ないようだ。
最初に、AXI4-Stream 出力とレジスタ設定用のAXI4-Lite Slave Write を示す。AXI4-Stream 出力も出力されている。
DMA_Read_IP_test_14_160913.png

AXI4 Master Read を示す。こちらも正常のようだ。
DMA_Read_IP_test_15_160913.png

論理シミュレーションは正常のようだが、それじゃなんで動作しないのだろうか?
  1. 2016年09月13日 21:47 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Vivado HLSで作ったDMA Read IP を実機でテスト1(動作しない)

Vivado HLSで作ったDMA Write IP を実機でテスト4(成功)”に続いて、”Vivado HLS で DMA Read IP を作る(絶対アドレス指定版)”で作ったDMA Read IP をテストする。

Vivado HLSで作ったDMA Write IP を実機でテスト4(成功)”のプロジェクトをそのまま使用することにした。
今まで使用していた ZYBO_0_162_3_t0 フォルダを ZYBO_0_162_3_t1 フォルダにコピーして使用した。

VGA出力を担当しているビットマップ・ディスプレイ・コントローラを削除して、DMA Read IP と”ビットマップ・ディスプレイ・コントローラをAXI4-Stream対応にする5(IP作成)”で作成した AXI4-Stream 版ビットマップ・ディスプレイ・コントローラを追加した。
その際に、AXI4 Master 版のビットマップ・ディスプレイ・コントローラとAXI4-Stream 版のビットマップ・ディスプレイ・コントローラが2つプロジェクトに入ったので、bitmap_disp_engine.v の Verilog HDL のモジュール名が重なってエラーが出てしまった。異なるIP でも同じモジュール名があるとダメなようなので、AXI4-Stream 版のビットマップ・ディスプレイ・コントローラのAXI4-Stream 版ビットマップ・ディスプレイ・コントローラの bitmap_disp_engine.v の Verilog HDL のモジュール名を bitmap_disp_eng_axis に変更した。
ブロックデザインを示す。
DMA_Read_IP_test_1_160912.png

すでにVivado Analyzer を入れてある。

プロジェクトを示す。
DMA_Read_IP_test_2_160912.png

この回路を論理合成、インプリメント、ビットストリームの生成を行い、SDKにハードウェアをエクスポートして、ZYBOでやってみたがやはりだめだった。VGA出力が出ていなかった。

とりあえずはDMA Read IP にVivado Analyzer を入れて確かめてみたが、AXI4 Master アクセスが出ていなかった。
AXI4 Lite Slave による設定はきちんとされているようなので、動かないはずはないと思うのだが。。。
DMA Read IP を単体でシミュレーションしてみることにしようと思う。
  1. 2016年09月13日 04:11 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0