Comments
Transcript
IP インテグレーターを用いた Kintex-7 MicroBlaze システム シミュ
ア プ リ ケーシ ョ ン ノ ー ト : Vivado IP イ ン テグレー タ ー XAPP1180 (v1.0) 2013 年 10 月 29 日 概要 リ フ ァ レ ン ス シ ス テム : IP イ ン テグ レー タ ーを 用いた Kintex-7 MicroBlaze シ ス テム シ ミ ュ レーシ ョ ン 著者 : James Lucero こ の リ フ ァ レ ン ス シ ス テ ム では、 IP イ ン テ グ レー タ ーを シ ミ ュ レーシ ョ ンやハー ド ウ ェ アで使用 し て、 Kintex®-7 デバ イ ス アーキ テ ク チ ャ 上の MicroBlaze™ プ ロ セ ッ サ シ ス テ ムの機能を示 し ます。こ のシ ス テ ムには、 シ ス テ ム デザ イ ンに重要な メ イ ン メ モ リ や RS232 な ど の一般的なペ リ フ ェ ラ ルが含まれ ます。 リ フ ァ レ ン ス シ ス テ ムにおけ る ペ リ フ ェ ラ ルの機能検証を目的 と し て、 ス タ ン ド ア ロ ンの ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンがい く つか提供 さ れてい ます。アプ リ ケーシ ョ ンには hello_uart お よ び hello_mem が 含まれます。 こ こ では、シ ス テ ムのシ ミ ュ レーシ ョ ン環境を設定す る 方法、Vivado® シ ミ ュ レー タ ま たは ModelSim® 環境のいずれか を使用 し てシ ミ ュ レーシ ョ ン を実行す る 方法、 お よ びハー ド ウ ェ アでデザ イ ン を実行す る 方法を説明 し ます。Kintex-7 XC7K410TFFG900-2 FPGA を含む KC705 ボー ド を タ ーゲ ッ ト に し て、 シ ミ ュ レーシ ョ ンお よ びハー ド ウ ェ アでのデザ イ ン実行について解説 し ます。 含まれる シ ス テム こ のアプ リ ケーシ ョ ン ノ ー ト には リ フ ァ レ ン ス シ ス テ ムが含まれます。 こ れは、 xapp1180.zip フ ァ イ ルか ら 入手で き ます。 フ ァ イ ルを ロ ーカル マシ ン で解凍す る と 、 次のデ ィ レ ク ト リ 構造が使用 さ れます。 mb_ddr_simulation/ project_1.sdk/ - デザ イ ン用の ソ フ ト ウ ェ ア プ ロ ジ ェ ク ト を含む project_1.srcs/ - エンベデ ッ ド デザ イ ン用のフ ァ イ ルを含む sim/ - シ ミ ュ レーシ ョ ンに必要な フ ァ イ ルを含む ready_for_download/ - こ のアプ リ ケーシ ョ ン ノ ー ト 用のプ リ コ ンパ イ ル済みビ ッ ト ス ト リ ームお よ び ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン を含む は じ めに こ のアプ リ ケーシ ョ ン ノ ー ト では、 IP イ ン テグ レータ ー デザ イ ン を使用し た、 Kintex-7 デバ イ ス を用い る MicroBlaze プ ロ セ ッ サ シ ス テ ムのシ ミ ュ レーシ ョ ンおよ びハー ド ウ ェ ア生成について説明し ます。 必要な環境 シ ミ ュ レーシ ョ ン、 ソ フ ト ウ ェ ア、 お よ びハー ド ウ ェ アの各要件を次に示 し ます。 シ ミ ュ レーシ ョ ン要件 VHDL お よ び Verilog の協調シ ミ ュ レ ーシ ョ ン 機能 ま た は Vivado シ ミ ュ レ ー タ を 備え る ModelSim SE/QuestaSim® Advanced Simulator 10.2a ソ フ ト ウ ェ ア要件 Vivado 2013.3 © Copyright 2013 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. All other trademarks are the property of their respective owners. japan.xilinx.com 1 ハー ド ウ ェ ア シ ス テム仕様 ハー ド ウ ェ ア要件 ハー ド ウ ェ ア シ ス テム仕様 • ザ イ リ ン ク ス KC705 評価ボー ド ( リ ビ ジ ョ ン C ま たは D) • Type-A/Mini-B の 5 ピ ン USB ケーブル 2 本 デザ イ ンの高性能な部分は次を使用 し てい ます。 • 200MHz での MicroBlaze プ ロ セ ッ サ • 200MHz での AXI イ ン タ ー コ ネ ク ト イ ン ス タ ン ス • 800MHz での AXI_7SERIES_DDRx メ モ リ コ ン ト ロ ー ラ ー (デー タ が幅が 64 ビ ッ ト の DDR3 を 備え る ) デザ イ ンの よ り 低い性能の部分は次を使用 し てい ます。 • 100MHz での AXI ペ リ フ ェ ラ ル IP (AXI4LITE) • 100MHz での AXI イ ン タ ー コ ネ ク ト イ ン ス タ ン ス リ フ ァ レ ン ス シ ス テ ムには次が含まれます。 • MicroBlaze • AXI_INTERCONNECT • MIG_7SERIES • AXI_GPIO • AXI_UART16550 • LMB BRAM 図 2 にブ ロ ッ ク 図を、 表 1 にシ ス テ ムのア ド レ ス マ ッ プ を示 し ます。 ブ ロ ッ ク図 図 2 に、 リ フ ァ レ ン ス シ ス テ ムのブ ロ ッ ク 図を示 し ます。 X-Ref Target - Figure 1 図2 : リ フ ァ レ ン ス シ ス テムのブ ロ ッ ク 図 japan.xilinx.com 2 ハー ド ウ ェ ア シ ス テム仕様 ア ド レス マ ッ プ 表 1 に、 リ フ ァ レ ン ス シ ス テ ムのア ド レ ス マ ッ プ を示 し ます。 表 1 : リ フ ァ レ ン ス シ ス テムのア ド レ ス マ ッ プ ペ リ フ ェ ラル イ ンス タ ンス ベース ア ド レ ス 上位ア ド レ ス mig_7series mig_7series_1 0x80000000 0xBFFFFFFF axi_uart16550 axi_uart16550_1 0x40400000 0x40401FFF axi_gpio axi_gpio_1 0x42000000 0x4200FFFF lmb_bram_if_cntlr lmb_bram_if_cntlr_1 0x00000000 0x0000FFFF lmb_bram_if_cntlr lmb_bram_if_cntlr_2 0x00000000 0x0000FFFF ソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン プ ロ セ ッ サの命令は、 LMB (Local Memory Bus) BRAM (ブ ロ ッ ク RAM) ま たは MIG_7SERIES のい ずれかで、 SDK プ ロ ジ ェ ク ト の リ ン カー ス ク リ プ ト に よ っ て実行 さ れます。 Hello UART ソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン こ の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンは AXI UART16550 の機能を テ ス ト し ます。 シ ミ ュ レーシ ョ ン済 みの RS232 タ ー ミ ナルに Hello World! が表示 さ れ、 Vivado では Tcl コ ン ソ ールに、 ModelSim で は [Transcript] ウ ィ ン ド ウ に出力が表示 さ れます。 こ の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンでは、 MIG_7SERIES メ モ リ コ ン ト ロ ー ラ ーを使用 し て DDR3 メ モ リ が不足 し ます。 Hello Mem ソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン こ の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンは MIG_7SERIES メ モ リ コ ン ト ロ ー ラ ーの機能を メ モ リ テ ス ト を 用いて検証 し ま す。 GPIO 入力が メ モ リ コ ン ト ロ ー ラ ーか ら の init_done 信号に接続 さ れてい る ため、 ソ フ ト ウ ェ ア プ リ ケーシ ョ ンは GPIO レ ジ ス タ を ポー リ ン グ し 、 メ モ リ コ ン ト ロ ー ラ ーがいつキ ャ リ ブ レーシ ョ ン さ れ る か を判断 し ます。 メ モ リ のキ ャ リ ブ レーシ ョ ン後、 シ ョ ー ト メ モ リ テ ス ト ( テ ス ト パ タ ーンで 32 ワー ド の XIL_TESTMEM_INCREMENT) が メ モ リ コ ン ト ロ ー ラ ーで実行 さ れます。メ モ リ テ ス ト の結果に基づいて PASSED! ま たは FAILED! メ ッ セージがシ ミ ュ レーシ ョ ン RS232 タ ー ミ ナルに表示 さ れます。 こ の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンでは、 LMB BRAM を使用 し て内部 メ モ リ が不足 し ます。 ModelSim/Questa シ ミ ュ レ ー タ 向けにシ ミ ュ レ ーシ ョ ン環境を設定する ラ イ ブ ラ リ の コ ンパイル 1. MODELSIM (Linux 用) ま たは MODELTECH (Windows modelsim.ini フ ァ イ ルを指定 し てい る こ と を確認 し ます。 用) 変数が書 き 込み可能で有効な 2. Vivado ツールを開 き ます。 3. Tcl コ ン ソ ールで、EDK ラ イ ブ ラ リ を除 く すべてのザ イ リ ン ク ス ラ イ ブ ラ リ を コ ンパ イ ルす る ため に次の コ マ ン ド を入力 し ます。 compile_simlib -simulator modelsim -library unisim -library simprim -library xilinxcorelib -language all -directory <PATH_TO_COMPILED_LIBRARIES> 注記 : コ ンパ イ ル時間は ロ ーカル マシ ンに よ っ て異な り ます。 Vivado プ ロ ジ ェ ク ト では、 [Simulation] の [Compiled library location] で コ ンパ イ ル済みの ラ イ ブ ラ リ デ ィ レ ク ト リ を指定 し ます。 こ の手順は後述 し ます。 japan.xilinx.com 3 ハー ド ウ ェ ア シ ス テム仕様 シ ミ ュ レーシ ョ ンのデ ィ レ ク ト リ お よび フ ァ イル 1 つのシ ミ ュ レーシ ョ ン デ ィ レ ク ト リ を Linux お よ び Windows 環境の両方に使用 し ます。 こ れはプ ロ ジ ェ ク ト の メ イ ン デ ィ レ ク ト リ の sim/ です。 こ のエ リ アにあ る ス ク リ プ ト は、 リ ン カー ス ク リ プ ト が DDR ア ド レ ス空間用に設定 さ れてい る 場合に ELF フ ァ イ ルを、プ ロ セ ッ サ命令を用いて メ モ リ モデルを ロ ー ド ア ッ プす る フ ァ イ ルに変換で き ます。 こ のプ ロ セ ス実行中に、 Data2MEM を使用 し て初期 .mem フ ァ イ ルを生成 し 、 プ ロ セ ッ サ命令で メ モ リ モデルを正 し く 読み込むフ ォーマ ッ ト に .mem フ ァ イ ルを perl ス ク リ プ ト を使用 し て変換 し ます。メ モ リ コ ン ト ロ ー ラ ーがキ ャ リ ブ レーシ ョ ン さ れ る と 、こ のシ ミ ュ レーシ ョ ン テ ス ト ベンチは .mem フ ァ イ ルを メ モ リ に読み込みます。 さ ま ざ ま なサイ ズの DDR3 に応 じ て テ ス ト ベン チ / ス ク リ プ ト を変更する 各 .mem フ ァ イ ルは 1 つの 16 ビ ッ ト メ モ リ モデルに関連付け ら れ て い ま す ( た と えば、 64 ビ ッ ト DDR3 には 4x16 ビ ッ ト の メ モ リ モデルが必要)。 テ ス ト ベンチ (system_tb.v) は、 DDR3 コ ン ポーネ ン ト に必要な メ モ リ モデルの容量に よ っ て変更 さ れます (16 ビ ッ ト では 1x、 32 ビ ッ ト では 2x、 64 ビ ッ ト では 4x)。 gen_memfiles.sh/gen_memfiles.bat コ マ ン ド は、使用する .mem フ ァ イ ルに基づいて変更 さ れま す (1x sim/ddr3_0.mem、 2x sim/ddr3_0.mem sim/ddr3_1.mem、 4x sim/ddr3_0.mem sim/ddr3_1.mem sim/ddr3_2.mem sim/ddr3_3.mem)。 memory_init.bmm フ ァ イ ルは、 メ モ リ のア ド レ ス空間、 メ モ リ の幅、 お よ び使用す る .mem フ ァ イ ル に基づいて変更 さ れます。 こ れ ら の変更用に、 16 ビ ッ ト DDR3 の例が sim/example_16 デ ィ レ ク ト リ にあ り ます。 さ ま ざ ま な UART 周波数に応 じ て テ ス ト ベ ン チ を変更する UART コ アの ク ロ ッ ク 周波数/AXI 周波数の変更に使用す る 命令は、 テ ス ト ベンチ (system_tb.v) の コ メ ン ト にあ り ます。 シ ミ ュ レーシ ョ ン フ ァ イル sim/ デ ィ レ ク ト リ には次の関連フ ァ イ ルお よ びデ ィ レ ク ト リ が含まれます。 • 512Mb_ddr3/ - Micron 社 DDR3 メ モ リ モデル • gen_memfiles.sh - ELF を .mem フ ァ イ ルに変換する Linux メ イ ン ス ク リ プ ト • gen_memfiles.bat - ELF を .mem フ ァ イ ルに変換する Windows メ イ ン ス ク リ プ ト • memory_init.bmm - 初期 .mem フ ァ イ ルを ELF フ ァ イ ルか ら 生成す る ために data2mem が使用 する ブ ロ ッ ク メ モ リ マ ッ プ フ ァ イル • ddr3_x.mem - 外部 メ モ リ モデルを ロ ー ド す る メ モ リ フ ァ イ ル。 提供 さ れ る フ ァ イ ルは hello_uart 外部 メ モ リ フ ァ イ ルを使用。 • system_tb.v - デザ イ ン用の Verilog テ ス ト ベンチ • uart_rcvr.v - シ ミ ュ レーシ ョ ン済みの RS232 タ ー ミ ナル用 • uart_rcvr_wrapper.v - シ ミ ュ レーシ ョ ン済みの RS232 タ ー ミ ナル用 注記 : ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン か ら の出力は、 シ ミ ュ レーシ ョ ン実行中に ModelSim/Questa シ ミ ュ レー タ タ ー ミ ナル内部ま たは Vivado Tcl コ ン ソ ール内部でモニ タ リ ン グ さ れます。 japan.xilinx.com 4 シ ミ ュ レーシ ョ ンの実行 シ ミ ュ レーシ ョ ン の実行 IP イ ン テグ レー タ ーか ら シ ミ ュ レーシ ョ ン を実行する 次の手順に従っ て IP イ ン テ グ レー タ ーか ら シ ス テ ム シ ミ ュ レーシ ョ ン を実行 し ます。 プ ロ ジ ェ ク ト を開 く / シ ミ ュ レ ーシ ョ ン モー ド を設定する、 およびデザイ ン フ ァ イルを生成 する 1. Vivado 内で <unzip dir>/mb_ddr_simulation/project_1.xpr を開 き ます。 注記 : デフ ォ ル ト では、 Vivado シ ミ ュ レー タ が タ ーゲ ッ ト シ ミ ュ レー タ に選択 さ れてい ます。 設 計ア シ ス ト 機能は実行 し ないで く だ さ い。 2. Flow Navigator で、 [IP Integrator] を展開 し て [Open Block Design] を ク リ ッ ク し ます。 3. design_1.bd を選択 し ます。 図 4 にブ ロ ッ ク 図を示 し ます。 X-Ref Target - Figure 3 図4 : IP イ ン テグ レー タ ーのブ ロ ッ ク 図 4. [Sources] ビ ュ ーで [design_1_wrapper] を展開 し ます。 5. [design_1_i] を右 ク リ ッ ク し 、 [Generate Output Products] を ク リ ッ ク し ます。 6. [Generate] を ク リ ッ ク し てデザ イ ン フ ァ イ ル と ラ ッ パーを生成 し ます。 7. ModelSim/QuestaSim ユーザー対象 a. Flow Navigator で、 [Simulation] を展開 し て [Simulation Settings] を ク リ ッ ク し ます。 [Project Settings] → [Simulation] タ ブ を開き ます。 b. [Target simulator] を ク リ ッ ク し て [select QuestaSim/ModelSim] を選択 し 、 [Target Simulator] ダ イ ア ロ グ ボ ッ ク ス で [YES] を ク リ ッ ク し ます。 c. [Complied library location] では、 <PATH_TO_COMPILED_LIBRARIES> を選択 し ます。 d. [Simulation] タ ブを ク リ ッ ク し て、 [-noopt] が [More VSIM Options] に含まれてい る こ と を確 認 し ます。 8. Flow Navigator で [Project Manager] を ク リ ッ ク し ます。 9. [Sources] ビ ュ ーで、 [Simulation Sources] を展開 し た後、 [sim_1] を展開 し ます。 10. [system_tb] を右 ク リ ッ ク し 、 [Associate ELF Files] を ク リ ッ ク し ます。 [Simulation Sources] の microblaze_1 に対し て、[Associated ELF File] 列の下にあ る [Browse] (...) ボ タ ン を ク リ ッ ク し ます。 japan.xilinx.com 5 シ ミ ュ レーシ ョ ンの実行 11. シ ミ ュ レーシ ョ ンに使用す る プ ロ ジ ェ ク ト の [ELF File] を選択 し ます。 12. IDDR3 メ モ リ 空間に コ ー ド が存在す る 場合は、「Windows 用に外部 メ モ リ フ ァ イ ルを生成する 」 ま たは 「Linux 用に外部 メ モ リ フ ァ イ ルを生成す る 」 の手順に従っ て く だ さ い。 注記 : 追加 さ れた ELF フ ァ イ ルが project_1.srcs/sim_1/imports/ に コ ピー さ れます。 プ ロ ジ ェ ク ト に ほ か の ELF フ ァ イ ル を 追加す る に は、 [Project Manager] で [Add Sources] → [Add or Create Simulation Sources] → [Add Files] を ク リ ッ ク し 、 追加す る ELF フ ァ イ ルを選択 し ます。 デフ ォ ル ト では、 hello_uart application が選択 さ れてい ます。 Windows 用に外部 メ モ リ フ ァ イルを生成する 1. コ マ ン ド プ ロ ンプ ト を開 き ます。 ザ イ リ ン ク ス ツール イ ン ス ト ール ディ レ ク ト リ から settings32.bat ま た は settings64.bat を 実行 し ま す。 一般的 な イ ン ス ト ー ル デ ィ レ ク ト リ は C:\Xilinx\Vivado\2013.3 です。 2. 同 じ コ マ ン ド プ ロ ンプ ト 内で次のパ ス を設定 し ます。 注記 : パ スお よ び Windows のバージ ョ ンは、 ロ ーカル イ ン ス ト ールに よ っ て異な り 、 下記に示す フ ァ イ ル の 例 は、 <unzip 内 容 と 異 な る 可 能 性 が あ り ま す。 こ の パ ス の セ ッ ト ア ッ プ dir>/mb_ddr_simulation/path64.bat ま たは <unzip dir>/mb_ddr_simulation/path32.bat にあ り ます。 set PATH=C:\Xilinx\Vivado\2013.3\bin;C:\Xilinx\Vivado\2013.3\lib\win64.o; C:\Xilinx\Vivado\2013.3\tps\win64\jre\bin\server;C:\Xilinx\Vivado\2013.3\ tps\win64\jre\bin;C:\Xilinx\SDK\2013.3\bin\nt64;C:\Xilinx\Vivado\2013.3\ ids_lite\EDK\bin\nt64;C:\Xilinx\Vivado\2013.3\ids_lite\EDK\lib\nt64;C:\ Xilinx\Vivado\2013.3\ids_lite\ISE\bin\nt64;C:\Xilinx\Vivado\2013.3\ids_ lite\ISE\lib\nt64;%PATH% 3. 同 じ コ マ ン ド プ ロ ンプ ト 内で、 Vivado プ ロ ジ ェ ク ト の メ イ ン dir>\mb_ddr_simulation\ にデ ィ レ ク ト リ を変更 し ます? デ ィ レ ク ト リ であ る <unzip 4. 次の コ マ ン ド を実行 し ます。 sim\gen_memfiles.bat <location of ELF file> 注記 : こ の実行には 20 秒ほ ど かか り 、コ マ ン ド ウ ィ ン ド ウ がい く つか開 き 、閉 じ ます。 メ モ リ フ ァ イ ル (.mem) は sim/ デ ィ レ ク ト リ にあ り ます。 Linux 用に外部 メ モ リ フ ァ イルを生成する 1. Vivado プ ロ ジ ェ ク ト の現在のデ ィ レ ク ト リ が mb_ddr_simulation/ であ る こ と を確認 し ます? 2. sim/ デ ィ レ ク ト リ の実行権限があ る こ と を確認 し ます。 exec sim/gen_memfiles.sh <location of ELF file> 注記 : メ モ リ フ ァ イ ル (.mem) は sim/ デ ィ レ ク ト リ にあ り ます。 シ ミ ュ レ ーシ ョ ン を実行する 1. Flow Navigator で、 [Simulation] → [Run Simulation] → [Run Behavioral Simulation] を ク リ ッ ク し てシ ミ ュ レー タ を起動 し ます。 2. Vivado シ ミ ュ レー タ ま たは Modelsim/Questa がデザ イ ンの コ ンパ イ ルを完了 し た ら 、 必要な信号 をデザ イ ンに追加 し 、選択 し た ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン向けに指定 さ れた実行時間で run コ マ ン ド を実行 し ます。 た と えば、 [run 200us] です。 japan.xilinx.com 6 シ ミ ュ レーシ ョ ンの実行 ソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン を実行する Hello UART ソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン を実行する こ のシ ミ ュ レーシ ョ ンの実行には ~240µs かか り ます。 Vivado シ ミ ュ レー タ の実行時間は、 1 ~ 2 時間 ほ ど かか る 可能性があ り ます。 AXI UART16550 は、 シ ミ ュ レーシ ョ ン済みの RS232 タ ー ミ ナルお よ び/ ま たは ModelSim ト ラ ン ス ク リ プ ト ウ ィ ン ド ウ、 ま たは Vivado シ ミ ュ レー タ Tcl コ ン ソ ールへの出力送信を開始 し ます。 図 5 にそ の出力を示 し ます。 UART 0 Transmitted Out Char = 0x48 = "H" @ Time = 173475000.0 ps UART 0 Transmitted Out Char = 0x65 = "e" @ Time = 179715000.0 ps UART 0 Transmitted Out Char = 0x6c = "l" @ Time = 185475000.0 ps UART 0 Transmitted Out Char = 0x6c = "l" @ Time = 191235000.0 ps UART 0 Transmitted Out Char = 0x6f = "o" @ Time = 196995000.0 ps UART 0 Transmitted Out Char = 0x20 = " " @ Time = 202755000.0 ps UART 0 Transmitted Out Char = 0x55 = "U" @ Time = 208995000.0 ps UART 0 Transmitted Out Char = 0x61 = "a" @ Time = 214755000.0 ps UART 0 Transmitted Out Char = 0x72 = "r" @ Time = 220515000.0 ps UART 0 Transmitted Out Char = 0x74 = "t" @ Time = 226275000.0 ps UART 0 Transmitted Out Char = 0x0d = <special char> @ Time = 232515000.0 ps 図5 : Hello UART 出力 Hello Mem ソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン を シ ミ ュ レ ーシ ョ ンする こ のシ ミ ュ レーシ ョ ンの実行には ~142µs かか り ます。 Vivado シ ミ ュ レー タ の実行時間は、 1 時間ほ ど かか り ます。 メ モ リ テ ス ト が問題な く 完了 し た ら 、ModelSim/Questa ト ラ ン ス ク リ プ ト ウ ィ ン ド ウ ま たは Vivado シ ミ ュ レー タ Tcl コ ン ソ ールに出力が表示 さ れます。 図 6 にその出力を示 し ます。 UART 0 Transmitted Out Char = 0x50 = "P" @ Time = 102135000.0 ps UART 0 Transmitted Out Char = 0x41 = "A" @ Time = 106935000.0 ps UART 0 Transmitted Out Char = 0x53 = "S" @ Time = 111735000.0 ps UART 0 Transmitted Out Char = 0x53 = "S" @ Time = 116535000.0 ps UART 0 Transmitted Out Char = 0x45 = "E" @ Time = 121335000.0 ps UART 0 Transmitted Out Char = 0x44 = "D" @ Time = 126135000.0 ps UART 0 Transmitted Out Char = 0x21 = "!"@ Time = 130935000.0 ps UART 0 Transmitted Out Char = 0x0d = <special char> @ Time = 135735000.0 ps 図6 : Hello Mem 出力 japan.xilinx.com 7 ハー ド ウ ェ ア上でのシ ス テムの実行 ハー ド ウ ェ ア上で のシ ス テムの実行 こ のセ ク シ ョ ンでは、 リ フ ァ レ ン ス デザ イ ン をハー ド ウ ェ アで実行す る 手順について説明 し ます。 1. USB ケーブルを ホ ス ト PC か ら USB JTAG ポー ト に接続 し ます。 適切なデバ イ ス ド ラ イ バーが イ ン ス ト ール さ れてい る こ と を確認 し ます。 2. 別の USB ケーブルを ホ ス ト PC か ら USB UART ポー ト に接続 し ます。 USB-UART ド ラ イ バーが イ ン ス ト ール さ れてい る こ と を確認 し ます。 3. 電源をオンに し ます。 4. ホ ス ト PC 上で、 次の設定でハ イ パー タ ー ミ ナルな ど の端末プ ロ グ ラ ム を開始 し ます。 • ボー レー ト : 9600 • デー タ ビ ッ ト : 8 • パリ テ ィ : なし • ス ト ップ ビ ッ ト : 1 • フ ロ ー制御 : な し 構築済みビ ッ ト ス ト リ ーム と コ ンパイル済みソ フ ト ウ ェ ア ア プ リ ケーシ ョ ン を 使用 し て リ フ ァ レ ン ス シ ス テムを実行する <unzip_dir>/mb_ddr_simulation/ デ ィ レ ク ト リ の ready_for_download/ デ ィ レ ク ト リ に あ る フ ァ イ ルを使用 し てシ ス テ ム を実行す る 手順は、 次の と お り です。 1. Xilinx Microprocessor Debugger (XMD) ツールを起動 し ます。 2. ready_for_download デ ィ レ ク ト リ へ移動 し ます。 3. XMD に ビ ッ ト ス ト リ ーム を ダ ウ ン ロ ー ド し ます。 XMD% fpga -f design_1_wrapper.bit 4. XMD でプ ロ セ ッ サに接続 し ます。 XMD% connect mb mdm 5. プ ロ セ ッ サ コ ー ド (ELF) フ ァ イ ルを ダ ウ ン ロ ー ド し ます。 XMD% dow hello_uart.elf ま たは XMD% dow hello_mem.elf 6. ソ フ ト ウ ェ ア を実行 し ます。 XMD% run 「Hello UART」 ま たは 「PASSED!」 がハ イ パー タ ー ミ ナル画面に表示 さ れます。 ハー ド ウ ェ アの構 築 こ のセ ク シ ョ ンでは、 Vivado を用いたハー ド ウ ェ ア デザ イ ンの再構築について説明 し ます。 注記 : 生成 さ れた ビ ッ ト ス ト リ ームは次の場所にあ り ます。 <unzip dir>/mb_ddr_simulation/project_1.runs/impl_1/design_1_wrapper.bit 1. Vivado 内の <unzip dir>/mb_ddr_simulation/project_1.xpr を開 き ます。 2. Flow Navigator で次を実行 し ます。 a. [IP Integrator] を展開 し 、 [Open Block Design] を ク リ ッ ク し ます。 b. [design_1.bd] を選択 し ます。 3. [Sources] ビ ュ ーで次を実行 し ます。 a. [design_1_wrapper] を展開 し ます。 b. [design_1_i] を右 ク リ ッ ク し 、 [Generate Output Products] を ク リ ッ ク し ます。 japan.xilinx.com 8 SDK ツールによ る ソ フ ト ウ ェ アの コ ンパイル と デザイ ンの実行 c. [Generate] を ク リ ッ ク し てデザ イ ン フ ァ イ ルお よ び ラ ッ パーを生成 し ます。 4. Flow Navigator で [Project Manager] を ク リ ッ ク し ます。 5. [Log] ビ ュ ーで [Design Runs] タ ブを ク リ ッ ク し ます。 6. [impl_1] を右 ク リ ッ ク し て [Launch Run] を ク リ ッ ク し 、 [Launch Selected Runs] ダ イ ア ロ グ ボ ッ ク ス で [OK] を ク リ ッ ク し ます。 7. [Missing Synthesis Results] ボ ッ ク ス で [OK] を ク リ ッ ク し てネ ッ ト リ ス ト を生成 し ます。 注記 : こ の手順は、 マシ ンに よ っ ては 30 分~ 60 分ほ ど かか り ます。 8. 完了 し た ら 、 [Implementation Completeded] ダ イ ア ロ グ ボ ッ ク ス で [Generate Bitstream] を ク リ ッ ク し ます。 注記 : 特にデザ イ ンが変更 さ れた場合は、 イ ンプ リ メ ン テーシ ョ ンの タ イ ミ ン グが満た さ れてい る こ と を確認 し ます。 9. [Design Runs] ウ ィ ン ド ウ で、 [impl_1] を右 ク リ ッ ク し て [Open Implemented Design] を ク リ ッ ク し ます。 10. [Project Manager] の [Sources] ビ ュ ーで次を実行 し ます。 a. [design_1_i] を右 ク リ ッ ク し 、 [Export Hardware for SDK] を ク リ ッ ク し ます。 b. [Export Hardware] お よ び [Include bitstream] を ク リ ッ ク し ます。 c. [OK] を ク リ ッ ク し ます。 SDK ツールに よ る ソ フ ト ウ ェ アの コ ンパイル と デザ イ ンの実行 こ のセ ク シ ョ ンでは、 SDK ツールを用いた ソ フ ト ウ ェ アの コ ンパ イ ル、 そ し てその後に続 く 、 SDK か ら のハー ド ウ ェ ア と ソ フ ト ウ ェ アの実行について説明 し ます。 SDK ツールで ソ フ ト ウ ェ ア を コ ンパイルする 1. SDK を起動 し ます。 Linux の場合は xsdk と 入力 し ます。 2. Workspace Launcher で、 次の ワ ー ク スペース を選択 し ます。 <unzip dir>\project_1.sdk\SDK_Workspace 3. [OK] を ク リ ッ ク し ます。 注記 : 手順 4 ~手順 7 は、 空の SDK_Workspace にのみ必要です。 4. ハー ド ウ ェ ア プ ラ ッ ト フ ォームの BSP お よ び ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン を イ ン ポー ト す る 必 要があ り ます。 [File] → [Import] → [General] → [Existing Projects into Workspace] を ク リ ッ ク し ます。 5. [Next] を ク リ ッ ク し ます。 6. <unzip dir>\project_1.sdk を選択 し て [OK] を ク リ ッ ク し ます。 7. standalone_bsp_0、 hw_platform_0、 お よ び関連す る ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン を含む、 すべ てのチ ェ ッ ク ボ ッ ク ス がオンにな っ てい る こ と を確認 し て く だ さ い。 8. [Finish] を ク リ ッ ク し ます。 注記 : こ の時点で BSP および ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンが コ ンパ イ ル さ れます。 こ れには 2 ~ 5 分かか り ます。 その他の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンについてのエ ラ ー メ ッ セージが表示 さ れ た 場合、 [Project Explorer] で ソ フ ト ウ ェ ア ア プ リ ケ ー シ ョ ン プ ロ ジ ェ ク ト を 右 ク リ ッ ク し て [Change Referenced BSP] を ク リ ッ ク し 、 [standalone_bsp_0] を ク リ ッ ク し ます。 [OK] を ク リ ッ ク し ます。 9. こ れで、 SDK で既存の ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの変更や ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンの 新規作成が可能にな り ま し た。 注記 : デフ ォ ル ト では、 含ま れてい る ソ フ ト ウ ェ ア アプ リ ケーシ ョ ンは -DSIM = 1 に設定 さ れてい ま す。 こ のオプシ ョ ン を変更する には、 ソ フ ト ウ ェ ア アプ リ ケーシ ョ ン上で右 ク リ ッ ク し て [C/C++ Build japan.xilinx.com 9 シ ス テムの変更 Settings] → [MicroBlaze gcc complier] → [Miscellaneous] を ク リ ッ ク し ま す。 ハー ド ウ ェ ア で ソ フ ト ウ ェ ア を実行す る 場合は、 こ のオプシ ョ ン を削除 し ます。 SDK ツールに よ っ てハー ド ウ ェ アお よび ソ フ ト ウ ェ ア を実行する 1. SDK_Workspace プ ロ ジ ェ ク ト が開いた状態で、 [Xilinx Tools] → [Program FPGA] を ク リ ッ ク し ます。 2. [Program] を ク リ ッ ク し ます。 3. [Project Explorer] で、 (Software_Application_Name) → [Run As] → [Launch on Hardware] を右 ク リ ッ ク し ます。 シ ス テムの変更 シ ス テ ム を変更す る 手順は、 次の と お り です。 1. イ ン ス タ ン ス を次の よ う に接続 し ます。 イ ンス タ ンス 接続先 AXI4Lite プ ロ ト コ ルを用い る AXI マ ス タ ー / ス レーブ イ ン ス タ ン ス axi_interconnect_1 axi_interconnect_2 AXI4 プ ロ ト コ ルを用い る AXI マ ス タ ー / ス レーブ イ ン ス タ ン ス 2. ブ ロ ッ ク の変更お よ び保存後、既存の SDK_Workspace 向けに新 し い SDK_Export デ ィ レ ク ト リ を 生成 し 、 デザ イ ン を再生成 し ます。 3. [Project Manager] の [Sources] ビ ュ ーで、 [design_1_wrapper] を展開 し ます。 注記 : 8 ページの 「ハー ド ウ ェ アの構築」 を参照 し て新 し いビ ッ ト ス ト リ ーム を生成 し て く だ さ い。 4. [design_1_i] を右 ク リ ッ ク し 、 [Generate Output Products] を ク リ ッ ク し ます。 5. [Generate] を ク リ ッ ク し てデザ イ ン フ ァ イ ルお よ び ラ ッ パーを生成 し ます。 6. [design_1_i] を右 ク リ ッ ク し 、 [Export Hardware for SDK] を ク リ ッ ク し ます。 7. [Module Already Exported] ダ イ ア ロ グ ボ ッ ク ス で [YES] を ク リ ッ ク し ます。 8. SDK プ ロ ジ ェ ク ト で、 [hw_platform_0] Specification] を ク リ ッ ク し ます。 を右 ク リ ッ ク し て [Change Hardware Platform 9. 開 く 警告ダ イ ア ロ グ ボ ッ ク ス で [Yes] を ク リ ッ ク し ます。 10. 新 し く 作成 さ れた design_1.xml への リ ン ク を提供 し ます。 こ の フ ァ イ ルは、 <unzip dir>\ project_1.sdk\SDK\SDK_Export\hw にあ り ます。 11. [OK] を ク リ ッ ク し ます。 12. 必要に応 じ て 「シ ミ ュ レーシ ョ ンの実行」 セ ク シ ョ ンの手順を再実行 し て く だ さ い。 参考資料 こ の資料のデザ イ ン フ ァ イ ルは、 https://secure.xilinx.com/webreg/clickthrough.do?cid=344919 に あ り ます。 次の文書は、 こ のアプ リ ケーシ ョ ン ノ ー ト の補足資料です。 • UG081 : 『MicroBlaze プ ロ セ ッ サ リ フ ァ レ ン ス ガ イ ド 』 • UG900 : 『Vivado Design Suite ユーザー ガ イ ド : ロ ジ ッ ク シ ミ ュ レーシ ョ ン』 • UG994 : 『Vivado Design Suite ユーザー ガ イ ド : IP イ ン テ グ レー タ ーを使用 し た IP サブシ ス テ ム の設計』 • UG898 : 『Vivado Design Suite ユーザー ガ イ ド : エンベデ ッ ド ハー ド ウ ェ ア デザ イ ン』 • UG810 : 『Kintex-7 FPGA 用 KC705 評価ボー ド ユーザー ガ イ ド 』 japan.xilinx.com 10 改訂履歴 改訂履歴 Notice of Disclaimer 次の表に、 こ の文書の改訂履歴を示 し ます。 日付 バージ ョ ン 2013 年 10 月 2 日 1.0 内容 初版 The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extent permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any errors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute, or publicly display the Materials without prior written consent.Certain products are subject to the terms and conditions of the Limited Warranties which can be viewed at http://www.xilinx.com/warranty.htm; IP cores may be subject to warranty and support terms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in Critical Applications:http://www.xilinx.com/warranty.htm#critapps. 本資料は英語版 (v1.0) を翻訳 し た も ので、 内容に相違が生 じ る 場合には原文を優先 し ます。 資料に よ っ ては英語版の更新に対応 し ていない も のがあ り ます。 日本語版は参考用 と し て ご使用の上、 最新情報につ き ま し ては、 必ず最新英語版を ご参照 く だ さ い。 こ の 資 料 に 関 す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の 問 題 に つ き ま し て は、 [email protected] ま でお知 ら せ く だ さ い。 いただ き ま し た ご意見を参考に早急に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受け付けてお り ません。 あ ら か じ め ご了承 く だ さ い。 japan.xilinx.com 11