FC2カウンター FPGAの部屋 キャラクタ・ディスプレイ・コントローラをAXI4スレーブにする1(仕様の検討)
FC2ブログ

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

FPGAの部屋

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

キャラクタ・ディスプレイ・コントローラをAXI4スレーブにする1(仕様の検討)

キャラクタ・ディスプレイ・コントローラの仕様の変更”で作ったキャラクタ・ディスプレイ・コントローラをAXI4スレーブ・デバイスとして、MicroBlaze のシステムに接続しようと思う。つまり、AXI4バスのスレーブ・デバイス用のラッパーを作ろうと思っている。今回は仕様の検討を行う。

・キャラクタ・ディスプレイ・コントローラの使用できるポートは1つだけだ。AXI4バスはWrite, Read それぞれ独立にアクセスされる可能性があるが、1度に実行できるのはどちらかの転送となる。よって、アービタを作ってラウンドロビンでアービトレーションを行う。(ただし、MicroBlaze では、X1倍動作なので、IOバッファ(あるとすれば?)に溜まったRead, Writeが同時に発行されることはないと思われる)(追加:やはり、同じクロックでARVALIDとAWVALIDがアサートされる確率は少ないと思うので、Write優先ということにする)

・オーバーラップしてRead 及び Write 要求が来る可能性があるが、現在処理中のトランザクションがあったら、AWREADY または、ARREADYを0にしておいて要求を受け付けない。

・AXI4バスのビット幅は32ビット幅とする。その内の下16ビットだけをキャラクタ・ディスプレイ・コントローラのデータとして使用する。上の16ビットは、MicroBlaze からのRead時には0を返す。Writeは書き捨てとする。

・基本的に32ビット幅のアクセスを考えている。つまり、ソフトウェアではunsigned int かint でのRead, Writeとする。

・AXI4バスからのWrite はそのままキャラクタ・ディスプレイ・コントローラのバスへのWriteとする。Waitしても、1クロックごとにリアルタイムに書き込みができるからだ。

・AXI4バスからのRead は、分散RAMによるFWFTのFIFOを間に挟む。BlockRAMからのReadは1クロック遅延するため、AXI4バス・マスタ・デバイスからのRREAYがディアサートされて、ReadがWaitされた時にキャラクタ・ディスプレイ・コントローラ側もアドレスを戻すために1クロックWaitする必要があるからだ。

・上記の機能を、AXIバスのクロックに同期して、キャラクタ・ディスプレイ・コントローラが行えるようにプロセッサ側の動作クロックと描画側の動作クロックを分離する。

AXI4バス・サンプルのシミュレーション結果は、”ar37425のAXI4 Masterサンプルを試す6(シミュレーション3)”を参照のこと。

(2012/02/25:追加)
下に概念図を追加する。
CDC_axi_slave_4_120226.png

上の図で、制御部のWrite Transaction State Machine とRead Transaction State Machine は協調動作して、一方がアクティブの場合は、片方は動作しない。同時にアクティブになろうとした場合にはWriteの方が優先される。
データパスではWriteは直結だが、Write Transaction State Machine がアクティブの場合のみ直結される。その以外はWREADYはディアサートされる。
ReadはFIFOが間に入る。このFIFOは分散RAMを使用した16深度、32ビット幅のFIFOだ。これにより、Waitが入るとバーストすることができない(というか1つお休みする必要がある)BlockRAMのReadをバースト可能にする。
  1. 2012年02月25日 04:27 |
  2. AXI4 Slave IPの作製
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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