複数のAXI4 バスを持つIPの作製

AX4 Master IPにAXI4 Lite Slave インターフェースを追加1(仕様の検討)
CMOSカメラ・インターフェース回路とビットマップ・ディスプレイ・コントローラに フレームバッファのスタートアドレスを指定するためのレジスタを付けようと思っている。このレジスタへのアクセスは、AXI4 Lite Slave バスを経由してARMプロセッサが行う。つまり、AXI4 Master と AXI4 Lite Slave の2つのAXI4バスを持つIPとなる。

カメラ・インターフェースIPにAXI4 Lite Slave インターフェースを追加1(ISimでエラー)
AXI4 Lite Slave インターフェース回路を作成した(HDLコードあり)。シミュレーションをしようとしたがエラーだった。エラーの原因はバスが長すぎることだった。
カメラ・インターフェースIPにAXI4 Lite Slave インターフェースを追加2(シミュレーション)
浅い階層にプロジェクトを移動してISimでシミュレーションを行った。成功した。テストベンチ、AXI4 Lite Slave インターフェースのHDLコードあり。
カメラ・インターフェースIPにAXI4 Lite Slave インターフェースを追加3(MPD, MUIファイルの作製)
MPDファイルとMUIファイルのソースコードあり。
カメラ・インターフェースIPにAXI4 Lite Slave インターフェースを追加4(XPSプロジェクト)
XPSプロジェクトでカメラ・インターフェースIPをAdd IPして、バスやポートを接続した。Design Rule Check を実行するまで。

ビットマップ・ディスプレイ・コントローラIPにAXI4 Lite Slave バスを追加1(シミュレーション)
ビットマップ・ディスプレイ・コントローラIP (bitmap_disp_cntrler_axi_master.v) にAXI4 Lite Slave バスのシミュレーションを行った。
ビットマップ・ディスプレイ・コントローラIPにAXI4 Lite Slave バスを追加2(XPSプロジェクト)
MPDファイルとMUIファイルを修正して、XPSプロジェクトにAdd IPした。

AXI4 Master IP にAXI4 Lite Slave を追加1(インプリメント)
ZedBoard_OOB_Desgin に、AXI4 Lite Slave によるレジスタを追加した CamInf IP と BDC IP を追加できたので、とりあえずWindows7 上でインプリメントを行った。
AXI4 Master IP にAXI4 Lite Slave を追加2(SDK)
インプリメントが終了したので、今度はSDKを立ちあげてソフトウェアをリコンパイルした。DTSもうまく生成された。Linux環境に変更した。
AXI4 Master IP にAXI4 Lite Slave を追加3(DTSをコンパイル)
今回は、前回作った xilinx.dts をDTCでコンパイルした。
AXI4 Master IP にAXI4 Lite Slave を追加4(FSBLとBOOT.binの生成)
FSBL (First Stage Bootloader) と BOOT.bin を生成した。
AXI4 Master IP にAXI4 Lite Slave を追加5(Linuxを起動)
SDカードにdevicetree_ramdisk.dtb と BOOT.bin が書けたので、SDカードをZedBoard に挿入して電源をONしてLinux を起動してみた。
次に、Sysfs を確認した。カメラ・インターフェースIPとビットマップ・ディスプレイ・コントローラIP の項目があった。
AXI4 Master IP にAXI4 Lite Slave を追加6(Cテストプログラム)
SDKを立ちあげ、テストプログラムを作製して、AXI Lite Slave インターフェースの動作を調べようとしている。今回はC言語で書いたテストプログラムを書いた。
AXI4 Master IP にAXI4 Lite Slave を追加7(SDKリモートデバッグ)
C言語で書いたソフトウェアをVirtualBox 上に実装したUbuntu12.10 のSDKからZedBoardのディレクトリへダウンロードして、リモートデバッグを行った。動作しなかった。
AXI4 Master IP にAXI4 Lite Slave を追加8(ChipScopeデバッグ)
前回、カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIP のAXI4 Lite Slave バスに接続されたレジスタにRead/Write を行った。Readで読めた値は 0x1A000000 のはずが 0x00000000 だった。Writeで値を書き込むとZedBoardのLinux が死んでしまった。今回は、ChipScope AXI Monitor IP を入れて、AXI4バスに何が怒っているかを検証した。
AXI4 Master IP にAXI4 Lite Slave を追加9(バグフィックス)
前回のバグがわかったので、バグをフィックスできた。
AXI4 Master IP にAXI4 Lite Slave を追加10(ハードウェア完成)
前回の記事でバグをフックスしたので、今回はインプリメントし、SDKで BOOT.bin を生成して、SDカードにコピーしてZedBoardで確かめてみた。カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPの両 方共、レジスタに書かれたフレームバッファにアドレスを使っていた。成功だ。


inserted by FC2 system