FC2カウンター FPGAの部屋 AXI VDMAのドライバによるレジスタの設定値2

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

FPGAの部屋

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

AXI VDMAのドライバによるレジスタの設定値2

AXI VDMAのドライバによるレジスタの設定値”の続きというか、前回はディスプレイに画像が表示されない状態でデバックのためにドライバを使用してAXI VDMA を設定した時のWrite/Read したレジスタ番地とその値を調べた。
今回は、動作する状態になった時のWrite/Read したAXI VDMAのレジスタ番地とその値を調べる。

今回は、”#define NUMBER_OF_WRITE_FRAMES 3”になっていて、フレームバッファが3面になっている。

最初にAXI VDMAのレジスタ設定波形の全体像を示す。
V_ZYBO_CAMD_151_94_150628.png

波形を拡大する。最初の波形を示す。
V_ZYBO_CAMD_151_95_150628.png

Write : 0x30 番地に 0x4 をWrite した。これは、S2MM_VDMACR (S2MM VDMA Control Register – Offset 30h) が 0x4 なので、Reset のビットのみ立っている。リセットしているようだ。

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010002 で、IRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。

Write : 0x30 番地に 0x4 をWrite した。これは、S2MM_VDMACR (S2MM VDMA Control Register – Offset 30h) が 0x4 なので、Reset のビットのみ立っている。リセットしているようだ。

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010002 で、IRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。

V_ZYBO_CAMD_151_96_150628.png

Write : 0x48 に 0x1 をWrite した。0x48は、”AXI Video Direct Memory Access v6.2 LogiCORE IP Product Guide Vivado Design Suite PG020 April 1, 2015”では、Reserved となっているが、古いAXI VDMAのPG020、v5.00.a では、S2MM Frame Store Register (S2MM_FRMSTORE) と設定されていたので、その名残なのかな?

V_ZYBO_CAMD_151_97_150628.png

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010002 で、IRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010002 で、IRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。

Write : 0x30 番地に 0x00010002 をWrite した。これは、S2MM_VDMACR のIRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。リセット解除?

Write : 0xA4 番地に 0x00000c80 を Write した。 S2MM Horizontal Size Register(S2MM_HSIZE)。10進数で3200 = 800 x 4バイト。

Write : 0xA8 番地に 0x00000c80 を Write した。 S2MM Frame Delay and Stride Register(S2MM_FRMDLY_STRIDE)。10進数で3200 = 800 x 4バイト。

V_ZYBO_CAMD_151_98_150628.png

Write : 0xAC 番地に 0x10000000 をWrite した。S2MM Start Address (1 to 16) の最初のスタートアドレスに 0x10000000 を書いた。これは自分で定義した値でDDR3 SDRAMのアドレス範囲の真ん中辺りだ。

Write : 0xBO 番地に 0x101D4C00 をWrite した。S2MM Start Address (1 to 16) の2番目のスタートアドレスに次のフレームバッファのアドレスの 0x101D4C00 を書いた。

Write : 0xB4 番地に 0x103A9800 をWrite した。S2MM Start Address (1 to 16) の2番目のスタートアドレスに次のフレームバッファのアドレスの 0x103A9800 を書いた。

V_ZYBO_CAMD_151_99_150628.png

この区間にはAXI VDMAへのアクセスが無い。

V_ZYBO_CAMD_151_100_150628.png
Read : 0x34番地をRead した。 S2MM VDMA Status Register(S2MM_VDMASR)。値は0x00010001 で、IRQFrameCntSts が 0x1、 Halted が 1 となっている。

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010002 で、IRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010002 で、IRQFrameCount が 0x1、Circular_Park が 1 で後は全て 0 だった。

Write : 0x30 番地(S2MM_VDMACR)に 0x00010003 をWrite した。これは、IRQFrameCount が 0x1、Circular_Park が 1 、Run/Stop が 1 で後は全て 0 だった。

Read : 0x34番地をRead した。 S2MM VDMA Status Register(S2MM_VDMASR)。値は0x00010000 で、IRQFrameCntSts が 0x1のみだった。 Halted の 1 が解除されていた。

V_ZYBO_CAMD_151_101_150628.png

Read : 0x30 番地をRead した。S2MM_VDMACR。値は0x00010003 で、IRQFrameCount が 0x1、Circular_Park が 1 、Run/Stop が 1 で後は全て 0 だった。

Write : 0xA0番地(S2MM Vertical Size (S2MM_VSIZE – Offset 0xA0))をWrite した。値は0x00000258 で10進数で 600 ラインだ。

V_ZYBO_CAMD_151_102_150628.png

この区間にはAXI VDMAへのアクセスが無い。

結局、S2MM Start Addressに3回書いて、3つのフレームバッファのアドレスを書いただけの差だった。
S2MM Frame Store Register は廃止されていて、フレームバッファ・アドレスに書いたレーム・スタート番地の数が画像フレームの数になるのかもしれない?

AXI VDMAの設定値サンプル
sentVDMA.txt
video_frame_buffer.c
Lab 3: Rendering Video for Space Invaders via the VGA Controller
PASTEBIN
  1. 2015年06月28日 06:04 |
  2. IP
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3187-2a4aa4b1
この記事にトラックバックする(FC2ブログユーザー)