FC2カウンター FPGAの部屋 AXI4 プロトコルの勉強3(書きこみバースト例)

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

FPGAの部屋

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

AXI4 プロトコルの勉強3(書きこみバースト例)

今度は、AXI4の書きこみバースト例だ。

最初にオーバーラップしていない書き込みバーストのタイミングチャートを下に示す。
AXI_Protcol_3_111209.png

最初の書き込みは、4バイト境界にアラインされたアドレス(AD0)の転送となる。AWIDは0、AWSIZEは4バイト、バーストモードはインクリメント、となる。(Write address channel)
次に、Write data channelの番となる。WDATAにデータを出力し、WSTRBを0b1111にする。これですべてのバイトレーンが書き込まれる。WVAILDとWREADYの両方が1にアサートされたときがデータ転送が成立したときである。最後のデータ転送の時にWLASTをアサートして終了となる。
最後にWrite response channelだ。Write data channel終了後に、BVALIDとBREADYが共に1にアサートされた時に、AWIDと同じIDがBIDに出力され、BRESPに0(OKEY)が出力されれば、書き込みが成功した。

次の書き込みは、2バイト境界にアラインされた16ビット幅のリトルエンディアンの書き込み。(9.3ナロー転送を見ると、AXI4の基本的なエンディアンはリトルエンディアンの様です。)このデータ転送があるのか?という点が分からないがこういうのもあり得るのでは?ということで見て欲しい。
2012/10/22:追加 書き込みトランザクションにやるハンドシェークの依存関係を誤解していたので、タイミングチャートを書きなおした。書き込みトランザクションにおいて、WVALIDをアサートする前に、AWREADYがアサートされるのを待っていてはダメだそうだ。デッドロック状態を引こ起こす可能性があるそうだ。)

リトルエンディアンなので、4n+2のアドレスから16ビット幅でデータ転送すると、32ビットの内の上の16ビットを書きこむ。その後、下の16ビットを書きこむ。WSTRBで制御すれば、4n+1, 4n+3のアドレスからでもバーストが出来る。


次にオーバーラップ書き込み。行けるかどうか分からないが?オーバーラップ出来るとすれば、こんな感じか?
AXI_Protcol_4_111212.png

2番目の書き込みは4n+3から4バイトアクセスした時だ。WIDは違うほうが良いのかも?と思い変えている。

LogiCORE IP PLBV46 to AXI Bridge (v2.00a) DS711 September 21, 2010を見るといろんなAXIのトランザクションが載っている。
30ページのFigure 13: Burst Write Transfer of Length 10 That Crosses 4KB Boundary on AXIを見ると、書き込みをオーバーラップしている例が載っている。可能みたいだ。
  1. 2011年12月11日 23:05 |
  2. AXI4バス
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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