CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
1 - 35
東京エレクトロンデバイス社製評価ボードを用いた、
Impulse Accelerated Technologies 社 CoDeveloper
Xilinx MicroBlazeXilinx MicroBlazeXilinx MicroBlazeXilinx MicroBlaze プラットフォームサポートパッケージプラットフォームサポートパッケージプラットフォームサポートパッケージプラットフォームサポートパッケージの操作手順チュートリアル
使用ボード:東京エレクトロンデバイス株式会社
Virtex-ⅡPro 評価ボード TB-V2P-XSP-016
使用ソフト:Xilinx 社
Platform Studio(Embedded Development Kit)バージョン7.1
Impulse Accelerated Technologies 社
CoDeveloper バージョン2.0
使用アプリケーション:CoDeveloper とともにインストールされる
HelloWorldHelloWorldHelloWorldHelloWorld((((MicroBlaze ExamplesMicroBlaze ExamplesMicroBlaze ExamplesMicroBlaze Examples))))
(輸入元)InterLinkInterLinkInterLinkInterLink
((((有有有有))))インターリンクインターリンクインターリンクインターリンク TEL:045-663-5940 FAX:045-663-5945 [email protected]
PLD ソリューションプロダクトグループ ストラテジックマーケティンググループ 〒224-0045 横浜市都筑区東方町1番地 TEL:045(474)7028 FAX:045(474)5583 URL:http://ppg.teldevice.co.jp/ mailto:[email protected]
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
2 - 35
第第第第1111章章章章::::概要概要概要概要
このチュートリアルでは、Impulse C(※)で記述された"HelloWorld"アプリケーションを、東京エレクトロ
ンデバイス社製評価ボード上で動作させます。
なお、TB-V2P-XSP-016 に搭載されている VirtexⅡPro には PowerPC405 ハードコアプロセッサが内蔵されてい
ますが、本チュートリアルでは MicroBlaze を使用する場合を想定し、PowerPC を使用せず MicroBlaze を FPGA
へ実装しています。PowerPC を使用する場合につきましては該当資料をご参照ください。
(※)Impulse C:ANSI-C に、ハードウェア化の為のしかけを組み込んだ言語とそのツールセットの呼称
HelloWorld の Impulse C ソースファイルは第6章をご参照ください。
操作を進めていく過程において、以下の手順について解説致します。
�� CoDeveloper による、ハードウェア(VHDL)とソフトウェア・インタフェースの生成
�� CoDeveloper の開発環境から Xilinx 開発環境へプロジェクトを移行(半自動)
�� Platform Studio での操作
�� 評価ボードへのダウンロード
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
3 - 35
第第第第2222章章章章::::操作操作操作操作フローフローフローフロー((((サマリサマリサマリサマリ))))
「CoDeveloper」
�� Example アプリケーションのロード
�� デスクトップシミュレーション
�� HDL やソフトウェアインタフェース部を生成 ��プロジェクトファイルをエクスポート
「Xilinx Platform Studio(EDK)」
�� プラットフォームの定義
�� CoDeveloperのハードウェアとソフトウェアをプロジェクトへ追加
��配置配線 ��ダウンロード
「TB-V2P-XSP-016」
「ターミナルウィンドウ」
�� 信号観測
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
4 - 35
第第第第3333章章章章::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper のののの操作操作操作操作
ステップステップステップステップ3333----1111::::HelloWorldHelloWorldHelloWorldHelloWorld アプリケーションアプリケーションアプリケーションアプリケーションををををロードロードロードロードするするするする
CoDeveloper Application Manager を起動します。Windows の[スタート]ボタン→[すべてのプログラム]→
[Impulse Accelerated Technologies]→[CoDeveloper]グループから選択します。
Xilinx MicroBlaze 用の Hello World サンプルプロジェクトを開きます。メニュー[File]→[Open Project…]
を選択します。するとダイヤログが開くので、
<CoDeveloper インストールディレクトリ>¥Examples¥Xilinx¥Microblaze¥HelloWorld
までナビゲートし、プロジェクトファイル HelloWorld.icProj を開きます。
(必要があれば、チュートリアルを始める前に Example ディレクトリのファイルを他のディレクトリにバック
アップコピーしておいてください)
プロジェクトファイルが開かれると、下図のように表示されます:
HelloWorld プロジェクトには下記のファイルが含まれています:
Source FilesSource FilesSource FilesSource Files:HelloWorld.cHelloWorld.cHelloWorld.cHelloWorld.c、HelloWorld_sw.cHelloWorld_sw.cHelloWorld_sw.cHelloWorld_sw.c、HelloWorld_hw.cHelloWorld_hw.cHelloWorld_hw.cHelloWorld_hw.c-これらソースファイルは完全なアプリ
ケーション、すなわち main()ファンクション、consumer と producer ソフトウェアプロセス、一つのハードウ
ェアプロセス、を記述しています。
ソースファイルについては、「第6章:Hello World サンプルアプリケーションについて」もご参照ください。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
5 - 35
ステップステップステップステップ3333----2222::::シミュレーションシミュレーションシミュレーションシミュレーションのののの為為為為ににににアプリケーションアプリケーションアプリケーションアプリケーションををををコンパイルコンパイルコンパイルコンパイルするするするする
機能検証の為に、アプリケーションのコンパイルとシミュレーションを行います:
1. メニュー[Project]→[Build Software Simulation Executable]を選択し、HelloWorld.exe 実行ファイル
をビルドします。するとコンパイルとリンクのメッセージが下記のように表示されます:
2. Windows 実行ファイルの HelloWorld アプリケーションがデスクトップ(コンソール)ソフトウェアアプリ
ケーションとして作成されました。このアプリケーションを実行するには、
メニュー[Project]→[Launch Software Simulation Executable]を選択します。コマンドウィンドウが開き、
下図のようにアプリケーションが実行されます:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
6 - 35
シミュレーションは下記のように出力している事を確認します:
CPU listing for hello…
FPGA hardware says: 0
FPGA hardware says: 1
FPGA hardware says: 2
FPGA hardware says: 3
FPGA hardware says: 4
FPGA hardware says: 5
FPGA hardware says: 6
FPGA hardware says: 7
FPGA hardware says: 8
FPGA hardware says: 9
アプリケーションでは FPGA ハードウェアが上記値を生成したとのメッセージを表示していますが、実際は、
シミュレーションの為にハードウェアプロセスがソフトウェアプロセスとしてホスト開発システム(Windows)
上でコンパイルされています。
ステップステップステップステップ3333----3333::::Platform Support PackagePlatform Support PackagePlatform Support PackagePlatform Support Package のののの定義定義定義定義
ハードウェア生成コンパイル(HDL 生成)や関連するソフトウェアインタフェースファイルの出力に先だって、
ターゲットとなるプラットフォームの選択を行います。下記のようないくつかの設定項目があります:
• 出力ファイル設定(VHDL や Verilog、ターゲットとなるプラットフォーム)
• コンパイル実行中における最適化のタイプ
• 生成されるファイルの格納フォルダ
ターゲットとなるプラットフォームを定義するには、メニュー[Project]→[Options]を選択し、開いたダイヤ
ログから[Generate]タブを選択します:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
7 - 35
Platform Support Package プルダウンメニューから、[Xilinx MicroBlaze OPB(VHDL)]を選択します。また、
Hardware Build Directory として「hw」、Software Build Directory として「sw」を定義します。また、Hardware
Export Directory と Software Export Directory を「EDK」とします。設定が済んだら、[適用]→[OK]ボタン
を押しダイヤログを閉じます。
サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(MicroBlaze プロセッサ
で動作)と、OPB バスにおいてシングルストリームを介して通信するハードウェアプロセス(FPGA で動作)と
が含まれます。
ステップステップステップステップ3333----4444::::ハードウェアプロセスハードウェアプロセスハードウェアプロセスハードウェアプロセスとなるとなるとなるとなる HDLHDLHDLHDL をををを生成生成生成生成するするするする
HDL フォームでのハードウェア、関連するソフトウェア・インタフェースやライブラリファイルを生成するに
は、メニュー[Project]→[Generate HDL]を選択します。すると、下図のように一連の処理が実行され、画面
には実行ログが表示されます:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
8 - 35
処理が完了すると、プロジェクトディレクトリ下の「hw」と「sw」ディレクトリの中に、いくつかのファイル
が生成されます。ファイルの生成までは、マシンの処理能力に依りますが数分かかります。各ディレクトリに
は以下が含まれます:
ハードウェアディレクトリハードウェアディレクトリハードウェアディレクトリハードウェアディレクトリ((((hwhwhwhw))))
• ハードウェアプロセスを記述している VHDL ソ ー スファイル( HelloWorld_comp.vhd と
HelloWorld_top.vhd)と、ハードウェアストリームインタフェースが生成されています。
• liblibliblib サブディレクトリがあり、ディレクトリの中に VHDL ライブラリ要素が含まれます。
• pcorepcorepcorepcore サブディレクトリがあり、ディレクトリの中には Xilinx EDK ツールに必要なファイルが生成され
ています。
ソフトウェアディレクトリソフトウェアディレクトリソフトウェアディレクトリソフトウェアディレクトリ((((swswswsw))))
• プロジェクトから抽出された、組み込みプロセッサへのコンパイルに必要な C ソースファイル(今回は
HelloWorld.c と HelloWorld_sw.c)。
• ハードウェアイニシャライズファンクションが記述されている Cファイル(co_int.c)が作成されていま
す。このファイルは、組み込みプロセッサへのコードとしてコンパイルされます。
• driverdriverdriverdriver サブディレクトリがあり、ディレクトリの中には組み込みソフトウェアアプリケーションの一部
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
9 - 35
としてコンパイルされるソフトウェアライブラリが含まれます。これらのライブラリはハードウェア/ソ
フトウェア・インタフェースのソフトウェア側にインプリメントされます。
Xilinx Platform Studio(EDK)の操作に馴れている場合には、以上のファイルを Platform Studio プロジェ
クトへマニュアルでコピーすることもできます。しかしながら、次のステップでは、CoDeveloper の「ハード
ウェアとソフトウェアエクスポート機能」を使用してこれらのファイルを Xilinx Platform Studio プロジェ
クトへ半自動的に移します。 ステップステップステップステップ3333----5555:::: ディレクトリディレクトリディレクトリディレクトリ EDKEDKEDKEDK をををを作成作成作成作成するするするする
先のステップのとおり、ターゲットプラットフォーム上で動作する完全なハードウェア/ソフトウェアアプリ
ケーションの作成に必要な、いくつかのハードウェアとソフトウェアに関連するファイルを CoDeveloper は生
成します(ターゲットプラットフォーム:MicroBlaze プロセッサを組み込んだ Xilinx FPGA)。これらのファ
イルをマニュアルで移動し、既にある Xilinx プロジェクトへインテグレートする事も可能ですが、ここでは
CoDeveloper のエクスポート機能を使用してこれらのファイルを Xilinx ツールへインテグレートします。以
降では、Platform Studio(EDK)バージョン7.1のプロジェクト作成を例に、操作方法を示します。
最初に、プロジェクト内に Xilinx Platform Studio(EDK)プロジェクトファイルを格納するサブディレクト
リを作成します。このチュートリアルでは、ディレクトリ名を「EDK」とします。この名前 EDK は CoDeveloper
の Generate Option ダイヤログで設定した名前でもあります:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
10 - 35
ステップステップステップステップ3333----6666::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper からからからからファイルファイルファイルファイルををををエクスポートエクスポートエクスポートエクスポート
Generate Options ダイヤログを開き(メニュー[Project]→[Options]を選択し、開いたダイヤログから
[Generate]タブを選択)、エクスポート先となるディレクトリ名の設定内容を再度確認してください:
これらエクスポートディレクトリは、CoDeveloper のエクスポートソフトウェアとエクスポートハードウェア
機能を使用した際に、生成されたハードウェアとソフトウェアプロセスのコピー先として定義されているディ
レクトリです。ここで定義されたディレクトリ(ここでは EDK)は、先に生成された Platform Support Package
アーキテクチャライブラリファイルの格納ディレクトリとして定義されています。よって、エクスポート作業
を行う前に、Platform Support Package が正しく選択されていることを必ず確認してください。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
11 - 35
ビルドディレクトリ(ここでは"hw"と"sw")からエクスポートディレクトリ(ここでは"EDK"ディレクトリ)
へファイルをエクスポートするには、メニューの[Project]→[Export Generated Hardware(HDL)]と[Project]
→[Export Generated Software]をそれぞれ実行します。実行すると、実行ログが下図のように表示されます:
Note:次のステップへ進む前に、必ずソフトウェアとハードウェアのエクスポートを実行してください。
また、以降のステップでは、Xilinx ISE や Platform Studio(EDK)ソフトウェアが必要です。
これまでの操作により、必要な全てのファイルが CoDeveloper から Xilinx ツール環境へエクスポートされま
した。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
12 - 35
第第第第4444章章章章::::Xilinx Platform StudioXilinx Platform StudioXilinx Platform StudioXilinx Platform Studio((((EDKEDKEDKEDK))))のののの操作操作操作操作
ステップステップステップステップ4444----1111::::Xilinx System BuilderXilinx System BuilderXilinx System BuilderXilinx System Builder をををを使用使用使用使用してしてしてして、、、、プラットフォームプラットフォームプラットフォームプラットフォームをををを作成作成作成作成するするするする
Xilinx ツールの環境をセットアップします。Xilinx Platform Studio を起動し、新しいプロジェクトを作成
します。Xilinx Platform Studio を起動すると下記のような画面が表示されますので、
[x]Base System Builder を選択し、[OK]ボタンを押します:
「Create New Project Using Base System Builder Wizard」ダイヤログが開きますので、[Browse]ボタンを
押し、Xilinx Platform Studio(EDK)プロジェクトとして作成したディレクトリを選択します。プロジェク
トファイル名、ここでは system.xmp、を設定し[OK]ボタンを押します。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
13 - 35
続いて、Base System Builder ウィザードダイヤログを使用したプロジェクト作成を行います。
下記画面が出現しますので、
[x]I would like to create a new design
を選択し、[Next]ボタンを押します。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
14 - 35
続く画面では、ターゲットボードの選択を求められます。
ドロップダウンメニューから下記のボードを選択してください。
Board Vendor:東京エレクトロンデバイス
Board Name:TB-V2P-XSP-016
Board Revision:1
[Next]ボタンをクリックします。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
15 - 35
次のウィザードページでは[x]MicroBlaze をプロセッサとして選択します:
[Next]ボタンをクリックしウィザードへの入力を続けます。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
16 - 35
ステップステップステップステップ4444----2222::::新規新規新規新規プラットフォームプラットフォームプラットフォームプラットフォームののののコンフィグレーションコンフィグレーションコンフィグレーションコンフィグレーション
前のステップにより、System Builder ウィザードによる基本的な MicroBlaze プロジェクトが作成できました。
次に、これから作成するソフトウェア/ハードウェア・アプリケーションを動作させるプラットフォームに、
いくつかの必要な定義を加えます。次図のようなウィザード画面によるプロセッサ・コンフィグレーション・
ページにおいて、以下の設定を行います。:
System Wide SettingSystem Wide SettingSystem Wide SettingSystem Wide Setting
Processor-Bus Clock Frequency:25.00MHz
Processor ConfigurationProcessor ConfigurationProcessor ConfigurationProcessor Configuration
Debug Interface:[x]On-Chip H/W debug module
Local Data and Instruction Memory(Uses BRAM):64KB
Cache:[x]No Cache
[Next]ボタンを押しウィザードを続けます。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
17 - 35
次に、プロセッサに含まれる周辺 I/O の定義を行います。RS232 のみを選択し、以下のようにオプションを定
義します:
Peripheral:OPB UARTLITE
Baudrate:9600
Data Bits:8
Parity:NONE
Use Interrupt:disabled
[Next]ボタンを押しウィザードを続けます。
RS232 のみを選択します。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
18 - 35
Add internal Peripherals では、[Next]を押し、そのまま進みます。
[Next]ボタンをクリックしてウィザードを続けます。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
19 - 35
続く画面では全てデフォルトのまま、[Next]ボタンをクリックしてウィザードを続けます。
続く画面でも全てデフォルトのまま、[Next]ボタンをクリックしてウィザードを続けます。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
20 - 35
続く画面でも全てデフォルトのまま、[Next]ボタンをクリックしてウィザードを続けます。
以上でプラットフォームとプロセッサ機能のコンフィグレーションが完了します。Base System Builder ウィ
ザードがこれまで作成したシステムのサマリを表示します:
選択した構成でシステムやプロジェクトを生成する為に[Generate]ボタンをクリックします。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
22 - 35
ステップステップステップステップ4444----3333:::: CoDeveloper CoDeveloper CoDeveloper CoDeveloper でででで生成生成生成生成したしたしたしたハードウェアハードウェアハードウェアハードウェアをををを XilinxXilinxXilinxXilinx ツールツールツールツールののののプロジェクトプロジェクトプロジェクトプロジェクトにににに追加追加追加追加するするするする
前のステップで[完了]ボタンを押したあと、下のようなダイヤログが表示されます。ここでは、
[x]Start Using Platform Studio
を選択して(デフォルト)[OK]をクリックします:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
23 - 35
続いて、HelloWorld ハードウェアプロセスとして記述されているモジュールをターゲットシステムへ追加し
ます。メニュー[Project]→[Add/Edit Cores]を選択し、下記ダイヤログボックスを表示させます。タブは
[Peripherals]タブが選択されています:
CoDeveloper で作成された IP コア、opb_helloopb_helloopb_helloopb_hello を選択し[Add]ボタンをクリックします。Peripherals リスト
の左側に opb_helloopb_helloopb_helloopb_hello モジュールが表示されます。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
24 - 35
次に[Bus Connections]タブを選択します。
マトリックスボックスの、opb_hello_0 sopb 行と mb_opb 列が交わる箇所をクリックして、opb_hello_0 イン
スタンスを OPB バスへ接続します。小さいグレーの sがボックスに表示されます:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
25 - 35
次に[Ports]タブを選択します。
右側のリストから opb_hello_0opb_hello_0opb_hello_0opb_hello_0 インスタンスの中にある opb_clkopb_clkopb_clkopb_clk ポートを選択し、[<< Add]ボタンをクリック
します。opb_clkopb_clkopb_clkopb_clk ポートがリスト左側の最後に表示されます(確認するには表示をスクロールダウンする必要
があるかもしれません)。
また下図のように、opb_clk の Net Name を sys_clk_ssys_clk_ssys_clk_ssys_clk_s に変更します:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
26 - 35
次に[Addresses]タブを選択します。
ここではプラットフォーム上にある各ペリフェラルのアドレスを定義します。ここではアドレスの自動割り当
て機能を使用してみます。[Generate Address]ボタンを押すとアドレスが自動でアサインされます:
[適用]→[OK]ボタンをクリックして、「Add/Edit Hardware Platform Specifications」ダイヤログを閉じます。
また、プロジェクトを保存します。
以上の操作で、全ての必要なハードウェアファイルが CoDeveloper から Xilinx ツールの環境へエクスポート
され、新しいプラットフォームがコンフィグレーションされました。次のステップではソフトウェアファイル
を新しいプラットフォームへ構築します。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
27 - 35
ステップステップステップステップ4444----4444::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper でででで生成生成生成生成したしたしたしたソフトウェアソフトウェアソフトウェアソフトウェアをををを XilinxXilinxXilinxXilinx ツールツールツールツールののののプロジェクトプロジェクトプロジェクトプロジェクトにににに追加追加追加追加するするするする
ここでは、Platform Studio プロジェクトへ関連するソフトウェアソースファイルをインポートします。
プロジェクトビューの[Application]タブをクリックし、プロジェクト TestApp_Memory:を表示させます:
自動生成されたサンプルソースファイル、TestApp_Memory.c をプロジェクトから外します。Sources を展開す
ると表示される TestApp_Memory.c の上でマウス右クリックをすると、コンテキストメニュー[Remove File]
が表示されますので、これを選択します:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
28 - 35
次に HelloWorld ソースファイルを追加します。Sources の上でマウス右クリックし、出現するポップアップ
メニューから[Add Files]を選択します。すると「Add Source and Header Files to the project」ダイヤロ
グが開きます。下図のように EDK ディレクトリ下の"code"ディレクトリにあるファイルを全て選択します:
[開く]ボタンをクリックして、これらの3つのファイルをプロジェクトへ追加します。追加されたソースファ
イルは、MicroBlaze CPU 上で動作するソフトウェア・アプリケーションを構成します。
以上の操作により、FPGA ビットマップファイルを作成するのに必要な、ハードウェア/ソフトウェア・アプ
リケーションの準備が整いました。次のステップでは、ビットマップの作成、デバイスへのダウンロード、ア
プリケーションの実行について手順を示します。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
29 - 35
ステップステップステップステップ4444----6666::::FPGAFPGAFPGAFPGA ビットマップビットマップビットマップビットマップのののの生成生成生成生成
ここまでに、以下のステップを行ってきました:
• CoDeveloper からハードウェアとソフトウェアのファイルを生成
• Xilinx Platform Studio プロジェクトを作成し、MicroBlaze ベースのプラットフォームを作成
• CoDeveloper で生成したファイルを Xilinx Platform Studio 環境へ移す
• OPB バスを介した、Impulse C ハードウェアプロセスと MicroBlaze プロセッサの接続とコンフィグレーシ
ョン
ここでは、ビットマップを生成しアプリケーションをターゲットプラットフォームにダウンロードします。こ
こでの操作は容易ですが、ファイル生成に時間がかかります。
Platform Studio のメニュー[Tools]→[Generate Bitstream]を選択します:
Note:このプロセスが完了するまでに、使用のマシンリソースに依りますが、数十分程度(またはそれ以上)
要します。
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
30 - 35
ビットストリームが生成されたら、ソフトウェアソースファイルをコンパイルする為に、メニュー[Tools]→
[Build All User Applications]を選択します:
コンパイルが終了したら、メニュー[Tools]→[Update Bitstream]を選択します:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
31 - 35
第第第第5555章章章章::::アプリケーションアプリケーションアプリケーションアプリケーションををををボードボードボードボード上上上上でででで動作動作動作動作させるさせるさせるさせる
最後に、アプリケーションをボード TB-V2P-XSP-016 上で実行し、ボード上の信号を観測します。
ステップステップステップステップ5555----1111::::TBTBTBTB----V2PV2PV2PV2P----XSPXSPXSPXSP----016016016016 のののの設定設定設定設定
コンフィグレーションの方法としてここでは、TB-V2P-XSP-016の付属ダウンロード用フラットケーブルを用い
た、Master serial mode-(DSW2 の 1:OFF、2:ON)-を使用する事とします。
1.ボードとPCに、ダウンロード用フラットケーブルと RS232 ケーブルが装着されている事を確認します。
2.ここでは、ボード上のスイッチ DSW2 の1番を OFF、2番を ON にします。
3.ボード上の FPGA 初期化スイッチを押し、FPGA を初期化します。
4.ボード上上の JTAG チェーン切り替えスイッチの XC2VP7 ボタンを押します。
なおボードに関する詳しい設定に関しましては、TB-V2P-XSP-016 ハードウェアユーザーガイドをご参照くだ
さい。
ステップステップステップステップ5555----2222::::信号観測信号観測信号観測信号観測のののの為為為為ののののターミナルプログラムターミナルプログラムターミナルプログラムターミナルプログラムのののの設定設定設定設定
Windows の HyperTerminal、または他のターミナルプログラムを開きます。
開発ボードに対し STDIN/STDOUT として設定した RS232 ペリフェラルを設定します。Base System Builder で
設定したペリフェラルの定義と同じコミュニケーション設定(9600 baud、8-N-1)を使用します。フローコン
トロールは、もし可能であればオフにします。
Xilinx Platform Studio のメニュー[Tools]→[Download]を選択し、HyperTerminal ウィンドウを確認します。
ボード上のデバイスのコンフィグレーションが完了すると、下図のようにデスクトップシミュレーションと同
じ内容(ステップ3-2)が観測されます:
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
32 - 35
第第第第6666章章章章::::Hello WorldHello WorldHello WorldHello World サンプルアプリケーションサンプルアプリケーションサンプルアプリケーションサンプルアプリケーションについてについてについてについて
Hello World ソースファイルの基本的な中身について見てみます。
この"Hello World"サンプルプロジェクトには、ソフトウェアプロセス(MicroBlaze プロセッサで動作)と、
OPB バスにおいてシングルストリームを介して通信するハードウェアプロセス(FPGA で動作)とが含まれます。
ハードウェアへコンパイルしようとしているプロセスは、HelloWorld_hw.c に下記のように記述されていま
す:
void say_hello(co_stream hello_out, co_parameter arg)
このハードウェアプロセスは、コンパイルタイムパラメータ argargargarg の値に従い、データを出力ストリーム
(hello_outhello_outhello_outhello_out)に単純に出力します。
HelloWorld_hw.c ファイルの中で、ハードウェアプロセスは、hello_out 出力ストリームと対応するソフトウ
ェアプロセス hear_hello 入力ストリームとの接続を定義する configuration function(config_hello)を持
ちます。
hear_hellohear_hellohear_hellohear_hello(HelloWorld_hw.c の最初の方で externexternexternextern function として宣言されている)プロセスはソースファ
イル HelloWorld_sw.c の中で定義されています。このプロセスはコンパイルされると、PowerPC プロセッサに
ロードされ、自動生成されたハードウェア/ソフトウェア・インタフェース経由で FPGA ハードウェア部と通
信を行います。今回のチュートリアルの場合、ソフトウェアプロセスはハードウェアプロセスの出力するデー
タをストリーム経由で単純に読み込みます。(典型的な Impulse C アプリケーションでは、関連するハードウ
ェアプロセスからの複数の入力/出力ストリームがあります。)
もう一つのソースファイル HelloWorld.c には、アプリケーションの main 関数が含まれます。この main
function は、ローレベルの configuration file について Impulse C ファンクション co_initico_initico_initico_initialize()alize()alize()alize()を経由
して言及しています。また、co_initialize()co_initialize()co_initialize()co_initialize()は HelloWorld_hw.c の中で externexternexternextern function として宣言されて
います。
Hello WorldHello WorldHello WorldHello World ソースコードソースコードソースコードソースコード
HelloWorld_sw.cHelloWorld_sw.cHelloWorld_sw.cHelloWorld_sw.c //////////////////////////////////////////////////////////// // Copyright (c) 2003, Impulse Accelerated Technologies, Inc. // All Rights Reserved. // // HelloWorld_sw.c: Process to be executed on the target CPU. // #include "co.h" #include "cosim_log.h" #include <stdio.h>
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
33 - 35
#ifdef IMPULSE_C_TARGET #define printf xil_printf #endif void hear_hello(co_stream hello_in) { int i; int hi = 0; IF_SIM(cosim_logwindow log = cosim_logwindow_create("hear_hello");) co_stream_open(hello_in, O_RDONLY, INT_TYPE(32)); printf("CPU listening for hello...¥n¥r"); for ( i = 0; i < 10; i++ ) { co_stream_read(hello_in, &hi, sizeof(int)); printf("FPGA hardware says: %d¥n¥r", hi); } co_stream_close(hello_in); } HelloWorld_hw.c HelloWorld_hw.c HelloWorld_hw.c HelloWorld_hw.c ////////////////////////////////////////////////////////////// // Copyright (c) 2003, Impulse Accelerated Technologies, Inc. // All Rights Reserved. // // HelloWorld_hw.c: Hardware processes and configuration code. // #ifdef WIN32 #include <windows.h> #endif #include <stdio.h> #include "co.h" #define MONITOR #ifdef MONITOR #include "cosim_log.h" #endif // Software process extern void hear_hello(co_stream hello_in); void say_hello(co_stream hello_out, co_parameter arg) { #ifdef MONITOR IF_SIM(cosim_logwindow log_say_hello;) #endif co_int32 count = 0; co_int32 iterations = (co_int32) arg; #ifdef MONITOR IF_SIM(log_say_hello = cosim_logwindow_create("say_hello");) #endif
CoDeveloper_TEL_MicroBlaze_HelloWorld_jp.doc
34 - 35
co_stream_open(hello_out, O_WRONLY, INT_TYPE(32)); for ( count = 0; count < iterations; count++ ) { co_stream_write(hello_out, &count, sizeof(co_int32)); } co_stream_close(hello_out); } void config_hello(void * arg) { int iterations = (int)arg; co_process say_hello_proc, hear_hello_proc; co_stream hello_stream = co_stream_create("hello_stream", INT_TYPE(32), 8); #ifdef MONITOR IF_SIM(cosim_logwindow_init();) #endif say_hello_proc = co_process_create("say_hello", (co_function)say_hello, 2, hello_stream, 10); hear_hello_proc = co_process_create("hear_hello", (co_function)hear_hello, 1, hello_stream); co_process_config(say_hello_proc, co_loc, "PE0"); } co_architecture co_initialize(int arg) { return co_architecture_create("hello", "xilinx_mb_opb", config_hello, (void *) arg); } HelloWorld.cHelloWorld.cHelloWorld.cHelloWorld.c ///////////////////////////////////////////////////////////// // Copyright (c) 2003, Impulse Accelerated Technologies, Inc. // All Rights Reserved. // // HelloWorld.c: Main function. // #include "co.h" #include <stdio.h> extern co_architecture co_initialize(int arg); int main(int argc, char * argv) { int iterations = 10; co_architecture arch = co_initialize(iterations); co_execute(arch); IF_SIM(
Top Related