”
キャラクタROMをAXI4 Lite Slave として実装する3(IPをXPSプロジェクトに追加する)”の続き。
今回は、前回XPSプロジェクトに追加したキャラクタROMをAXI4 Liteバスに接続するIPをテストするために、UARTをXPSプロジェクトに追加しようと思う。こうすることで、TeraTermでアドレスを入力したらキャラクタコードを返すアプリが作れるはずだ。
・IP Catalog のCommunication Low-Speed -> AXI UART(Lite) の右クリックメニューからAdd IPを選択した。

・Add IP Instance to Desgin ダイアログが出る。Yesボタンをクリックした。

・XPS Core Config ダイアログが出た。Userタブはビットレートの設定だった。これはこのままとした。

・XPS Core Config ダイアログのSystemタブの設定項目を示す。

・XPS Core Config ダイアログのInterconnect Settings for BUSIFタブの設定項目を示す。結局デフォルトのままOKボタンをクリックした。

・Instantiate and Connect IPダイアログが出るので、OKボタンをクリックした。microblaze_0 のAXI4 Liteバスに接続する。

・XPSプロジェクトでaxi_uartlite_0 が追加された。Bus Interfaceタブではmicroblaze_0 のAXI4 Liteバスに接続されていた。

・Portsタブをクリックした。ここでは、axi_uartlite_0 のInterrupt が未接続だったので、これを接続する。Interrupt の空いているピンクの四角の部分をダブルクリックすると、Interrupt Connection Dialog が出てくる。Unconnected Interrupt(s) のaxi_uartlite_0 を選択して、→をクリックすると、axi_uartlite_0 がConnected Inerrruput に移動した。これでaxi_uartlite_0 Interrupt が割り込みコントローラに接続できたので、Interrupt Connection Dialog をOKボタンで閉じる。

・axi_uartlite_0 のInterrupt がmicroblaze_0_intc::Intr に接続された。

・axi_uartlite_0 の外部入出力ピンの設定だが、すでにaxi_uartlite_0_RX_pin とaxi_uartlite_0_TX_pin がExternal Ports に接続されていた。

・Addressesタブをクリックした。ここでもaxi_uartlite_0 に64Kバイトのアドレス空間が割り当てられ、0x40600000 というアドレスが割り当てられていた。

・Hardware メニューからGenerate Netlist を選択して論理合成し、char_rom_axi_lite のVerilogのバグを取った。
・ProjectメニューからDesign Rule Check を選択した。エラーは無かった。

・最後に、ProjectメニューからClear All Generated Files を行った。これをしておかないとPlanAheadに戻った時にエラーになることがある。
・XPSを終了し、PlanAheadに戻った。次にすることは、UARTのTX, RXポートが増えているので、トップファイルの作りなおしと、制約ファイルにUARTのTX, RXポートの制約を書くことだ。
XPSにおけるUARTの追加は、ほとんど自動化されていて、Interrupt の追加だけは自分でやったが、他は自動で接続された。結構便利だと思う。
- 2012年06月13日 05:50 |
- AX4 Lite Slave IPの作製
-
| トラックバック:0
-
| コメント:0
”
キャラクタROMをAXI4 Lite Slave として実装する2(AXI4 Lite バスの勉強2)”の続き。
前回、AXI4 Liteバスのプロトコルを検討したので、実際にVerilog でキャラクタROMをAXI4 Liteバスに接続するIPを作ってみた。ファイル名は char_rom_axi_lite.v とした。使用するPlanAheadプロジェクトは、”
XPS入りのPlanAhead14.1プロジェクトを作る1(プロジェクトの生成)”、
”XPS入りのPlanAhead14.1プロジェクトを作る2(XPSの設定、インプリメント)”、”
XPS入りのPlanAhead14.1プロジェクトを作る3(SDK)”で新規作成したXPSプロジェクト入りのPlanAheadプロジェクトを使用する。(PlanAhead14.1を使用している)
・”
12.3 EDK、12.3 ISE - カスタム AXI IP コアの作成方法”に書いてあるar37425.zipをダウンロードした。
・ar37425\axi_lite_slave_v1_00_a フォルダをAtlys_EDK_test_PA\Atlys_EDK_test_PA.srcs\sources_1\edk\system\pcores にコピーした。
・フォルダ名をaxi_lite_slave_v1_00_a から char_rom_axi_lite_v1_00_a に変更した。
・Atlys_EDK_test_PA\Atlys_EDK_test_PA.srcs\sources_1\edk\system\pcores\char_rom_axi_lite_v1_00_a\data の下のファイル名を下図のように変更した。

・char_rom_axi_lite_v2_1_0.mpd のBEGIN からの行を下のように変更した。
BEGIN char_rom_axi_lite
## Peripheral Options
OPTION IPTYPE = PERIPHERAL
OPTION IMP_NETLIST = TRUE
OPTION STYLE = HDL
OPTION DESC = CharROM AXI Lite Slave
OPTION LONG_DESC = Character ROM AXI4-Lite Slave
OPTION HDL = MIXED
OPTION RUN_NGCBUILD = FALSE
・char_rom_axi_lite_v2_1_0.pao の内容を下の2行に書き換えた。(コメントは残してあります)
lib char_rom_axi_lite_v1_00_a char_gen_rom.v verilog
lib char_rom_axi_lite_v1_00_a char_rom_axi_lite.v verilog
・PlanAheadプロジェクトを立ちあげて、XPSプロジェクトを起動した。まだ、IP Catalog のProject Local PCores -> USER にはCharROM AXI Lite Slave がエントリされていない。

・XPSのProject メニューからRescan User Repositories を実行した。
・IP Catalog のProject Local PCores -> USER にCharROM AXI Lite Slave がエントリされた。

・CharROM AXI Lite Slave を右クリックしてAdd IPした。
・Add IP Instance to Desgin ダイアログが出る。Yesボタンをクリックした。

・XPS Core Config ダイアログが出るが壊れている。Cancelボタンをクリックした。

やはり壊れていた。前にも”
キャラクタ・ディスプレイ・コントローラをAXI4スレーブにする9(インプリメント1)”で XPS Core Config ダイアログが壊れていたが、C_USE_ADVANCED_PORTS のENTITYを追加した覚えがある。
ウィザードが先に進むので進めてからCharROM AXI Lite Slave を削除することにする。
・Instantiate and Connect IPダイアログが出るので、OKボタンをクリックした。

・CharROM AXI Lite Slave が追加されたので、右クリックメニューからDelete Instance を選択する。
・Delete IP Instance ダイアログでDelete instance and all its connections(デフォルト)を選択して、OKボタンをクリックすると、CharROM AXI Lite Slaveが消えた。

・Atlys_EDK_test_PA\Atlys_EDK_test_PA.srcs\sources_1\edk\system\pcores\char_rom_axi_lite_v1_00_a\data の char_rom_axi_lite_v2_1_0.mui にC_USE_ADVANCED_PORTS のENTITYを追加した。
<!ENTITY C_S_AXI_RNG03_HIGHADDR '
<widget id="C_S_AXI_RNG03_HIGHADDR">
<key>C_S_AXI_RNG03_HIGHADDR</key>
<label>Slave AXI RNG03 High Address </label>
<tip></tip>
</widget>
'>
<!ENTITY C_USE_ADVANCED_PORTS '
<widget id="C_USE_ADVANCED_PORTS">
<key>C_USE_ADVANCED_PORTS</key>
<label>C_USE_ADVANCED_PORTS </label>
<tip></tip>
</widget>
'>
]>
・XPSのProject メニューからRescan User Repositories を実行した。
・CharROM AXI Lite Slave を右クリックしてAdd IPした。Add IP Instance to Desgin ダイアログが出てから、XPS Core Config ダイアログが出た。今度はエラーはない。

・XPS Core Config ダイアログのSystemタブで、S_AXI -> Slave AXI Supports Write の手のマークをクリックしてAutoを外してチェックを外した。CharROM AXI Lite Slave では、ReadのみでWriteは使用しないためだ。

・前と同様に、Instantiate and Connect IPダイアログが出るので、OKボタンをクリックした。
・XPSプロジェクトにCharROM AXI Lite Slave が追加された。ポートの接続もされているし、アドレスも割り振られていた。


- 2012年06月11日 05:41 |
- AX4 Lite Slave IPの作製
-
| トラックバック:0
-
| コメント:0
”
キャラクタROMをAXI4 Lite Slave として実装する1(AXI4 Lite バスの勉強)”の続き。
今回はAXI4 Lite バスのWriteとReadトランザクションのタイミングチャートを書いてみた。
最初にWriteの2つのトランザクションのタイミングチャートを書いてみた。下の図に示す。

最初のWriteアクセスは最速の場合を示している。次のWriteアクセスはWrite address channel が1クロックWaitして、Writeデータ出てくるまでに1クロック遅延し、Writeデータが出てきた後も1クロック遅延している。
次にReadの2つのトランザクションのタイミングチャートを書いてみた。下の図に示す。

Write同様、最初のReadアクセスは最速の場合を示している。次のReadアクセスはRead address channel が1クロックWaitして、Readデータ出てくるまでに1クロック遅延し、Readデータが出てきた後も1クロック遅延している。
AXI4 LiteはAXI4のシングル転送しか出来ない簡易版と言う感じだ。次からは、キャラクタROMをインスタンスしてAXI4 Lite Slave IPを作っていこうと思う。
- 2012年06月09日 18:10 |
- AX4 Lite Slave IPの作製
-
| トラックバック:0
-
| コメント:0
だいぶ間が開いてしまったが、”
AXI4バスでDVI表示回路を作る(仕様の検討)”でキャラクタ・ディスプレイ・コントローラのキャラクタROMをAXI4 Lite Slave として実装することにした。今回はそのためのAXI4 Liteバスの仕様を勉強することにする。
AXI4バスに対してのAXI4 Liteバスの特徴を下に示す。(AMBA ® AXI ™ and ACE ™ Protocol Specification ARM IHI 0022D (ID102711) を参考にしている)
・すべてのトランザクションの転送長が1
・データバス幅は32または64ビット、Xilinxの仕様では32ビット幅
・すべてのアクセスが Non-modifiable, Non-bufferable
・排他的アクセスは無し
下にaxi_slave_v1_00_aのVerilogのテンプレートとaxi_lite_slave_v1_00_aのVerilogテンプレートをWinMerge で比較した結果を下に示す。


左がaxi_slave_v1_00_aのVerilogのテンプレート、右がaxi_lite_slave_v1_00_aのVerilogテンプレートだ。左に比べて、右が格段に信号が少ないことがわかる。例えば、S_AXI_AWLENやS_AXI_AWSIZE、S_AXI_AWBURST、S_AXI_ARLENやS_AXI_ARSIZE、S_AXI_ARBURST は転送数が1と決まっていれば必要ないはずだ。この様に、AXI4 Lite は、AXI4の簡易版になっているようだ。
- 2012年06月06日 21:22 |
- AX4 Lite Slave IPの作製
-
| トラックバック:0
-
| コメント:0