37
CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc 1 - 37 東京エレクトロンデバイス社製評価ボードを用いた、 Impulse Accelerated Technologies 社 CoDeveloper Xilinx Virtex Xilinx Virtex Xilinx Virtex Xilinx VirtexⅡ Pro Pro Pro Pro プラットフォームサポートパッケージ プラットフォームサポートパッケージ プラットフォームサポートパッケージ プラットフォームサポートパッケージの操作手順チュートリアル 使用ボード:東京エレクトロンデバイス株式会社 Virtex-ⅡPro(PowerPC)評価ボード TB-V2P-XSP-016 使用ソフト:Xilinx 社 Platform Studio(Embedded Development Kit)バージョン7.1 Impulse Accelerated Technologies 社 CoDeveloper バージョン2.0 使用アプリケーション:CoDeveloper とともにインストールされる HelloWorld HelloWorld HelloWorld HelloWorld(PowerPC Examples PowerPC Examples PowerPC Examples PowerPC Examples) (輸入元)InterLink InterLink InterLink InterLink (有)インターリンク インターリンク インターリンク インターリンク 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]

HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

1 - 37

東京エレクトロンデバイス社製評価ボードを用いた、

Impulse Accelerated Technologies 社 CoDeveloper

Xilinx VirtexXilinx VirtexXilinx VirtexXilinx VirtexⅡⅡⅡⅡ Pro Pro Pro Pro プラットフォームサポートパッケージプラットフォームサポートパッケージプラットフォームサポートパッケージプラットフォームサポートパッケージの操作手順チュートリアル

使用ボード:東京エレクトロンデバイス株式会社

Virtex-ⅡPro(PowerPC)評価ボード TB-V2P-XSP-016

使用ソフト:Xilinx 社

Platform Studio(Embedded Development Kit)バージョン7.1

Impulse Accelerated Technologies 社

CoDeveloper バージョン2.0

使用アプリケーション:CoDeveloper とともにインストールされる

HelloWorldHelloWorldHelloWorldHelloWorld((((PowerPC ExamplesPowerPC ExamplesPowerPC ExamplesPowerPC 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]

Page 2: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

2 - 37

第第第第1111章章章章::::概要概要概要概要

このチュートリアルでは、Impulse C(※)で記述された"HelloWorld"アプリケーションを、東京エレクトロ

ンデバイス社製評価ボード上で動作させます。

(※)Impulse C:ANSI-C に、ハードウェア化の為のしかけを組み込んだ言語とそのツールセットの呼称

HelloWorld の Impulse C ソースファイルは第6章をご参照ください。

操作を進めていく過程において、以下の手順について解説致します。

�� CoDeveloper による、ハードウェア(VHDL)とソフトウェア・インタフェースの生成

�� CoDeveloper の開発環境から Xilinx 開発環境へプロジェクトを移行(半自動)

�� Platform Studio での操作

�� 評価ボードへのダウンロード

Page 3: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

3 - 37

第第第第2222章章章章::::操作操作操作操作フローフローフローフロー((((サマリサマリサマリサマリ))))

「CoDeveloper」

�� Example アプリケーションのロード

�� デスクトップシミュレーション

�� HDL やソフトウェアインタフェース部を生成 ��プロジェクトファイルをエクスポート

「Xilinx Platform Studio(EDK)」

�� プラットフォームの定義

�� CoDeveloperのハードウェアとソフトウェアをプロジェクトへ追加

��配置配線 ��ダウンロード

「TB-V2P-XSP-016」

「ターミナルウィンドウ」

�� 信号観測

Page 4: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

4 - 37

第第第第3333章章章章::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper のののの操作操作操作操作

ステップステップステップステップ3333----1111::::HelloWorldHelloWorldHelloWorldHelloWorld アプリケーションアプリケーションアプリケーションアプリケーションををををロードロードロードロードするするするする

CoDeveloper Application Manager を起動します。Windows の[スタート]ボタン→[すべてのプログラム]→

[Impulse Accelerated Technologies]→[CoDeveloper]グループから選択します。

Xilinx VirtexⅡ Pro 用の Hello World サンプルプロジェクトを開きます。メニュー[File]→[Open Project…]

を選択します。するとダイヤログが開くので、

<CoDeveloper インストールディレクトリ>¥Examples¥Xilinx¥VirtexⅡPro¥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 サンプルアプリケーションについて」もご参照ください。

Page 5: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

5 - 37

ステップステップステップステップ3333----2222::::シミュレーションシミュレーションシミュレーションシミュレーションのののの為為為為ににににアプリケーションアプリケーションアプリケーションアプリケーションををををコンパイルコンパイルコンパイルコンパイルするするするする

機能検証の為に、アプリケーションのコンパイルとシミュレーションを行います:

1. メニュー[Project]→[Build Software Simulation Executable]を選択し、HelloWorld.exe 実行ファイル

をビルドします。コマンドウィンドウが開き、コンパイルとリンクのメッセージが下記のように表示されます:

2. Windows 実行ファイルの HelloWorld アプリケーションがデスクトップ(コンソール)ソフトウェアアプリ

ケーションとして作成されました。このアプリケーションを実行するには、メニュー[Project]→

[Launch Software Simulation Executable]を選択します。コマンドウィンドウが開き、下図のようにアプリ

ケーションが実行されます:

Page 6: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

6 - 37

シミュレーションは下記のように出力している事を確認します: 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)

上でコンパイルされています。

Page 7: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

7 - 37

ステップステップステップステップ3333----3333::::Platform Support PackagePlatform Support PackagePlatform Support PackagePlatform Support Package のののの定義定義定義定義

ハードウェア生成コンパイル(HDL 生成)や関連するソフトウェアインタフェースファイルの出力に先だって、

ターゲットとなるプラットフォームの選択を行います。下記のようないくつかの設定項目があります:

• 出力ファイルフォーマット(VHDL、Verilog、ターゲットとなるプラットフォーム)

• コンパイル実行中における最適化のタイプ

• 生成されるファイルの格納フォルダ

ターゲットとなるプラットフォームを定義するには、メニュー[Project]→[Options]を選択し、開いたダイヤ

ログから[Generate]タブを選択します:

ここでは、Platform Support Package プルダウンメニューから[Xilinx VirtexⅡ Pro PLB(VHDL)]を選択し

ます。また、Hardware Build Directory として「hw」、Software Build Directory として「sw」を定義します。

また、Hardware Export Directory と Software Export Directory を「EDK」とします。設定が済んだら、[Apply]

→[OK]ボタンを押しダイヤログを閉じます。

サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPC プロセッサで

動作)と、PLB バスにおいてシングルストリームを介して通信するハードウェアプロセス(FPGA で動作)とが

含まれます。

Page 8: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

8 - 37

ステップステップステップステップ3333----4444::::ハードウェアプロセスハードウェアプロセスハードウェアプロセスハードウェアプロセスとなるとなるとなるとなる HDLHDLHDLHDL をををを生成生成生成生成するするするする

HDL フォームでのハードウェア、関連するソフトウェア・インタフェースやライブラリファイルを生成するに

は、メニュー[Project]→[Generate HDL]を選択します。すると、下図のように一連の処理が実行され、画面

には実行ログが表示されます:

処理が完了すると、プロジェクトディレクトリ下の「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 サブディレクトリがあり、ディレクトリの中には組み込みソフトウェアアプリケーションの一部

Page 9: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

9 - 37

としてコンパイルされるソフトウェアライブラリが含まれます。これらのライブラリはハードウェア/ソ

フトウェア・インタフェースのソフトウェア側にインプリメントされます。

Xilinx Platform Studio(EDK)の操作に馴れている場合には、以上のファイルを Platform Studio プロジェ

クトへマニュアルでコピーすることもできます。しかしながら、次のステップでは、CoDeveloper の「ハード

ウェアとソフトウェアエクスポート機能」を使用してこれらのファイルを Xilinx Platform Studio プロジェ

クトへ半自動的に移します。 ステップステップステップステップ3333----5555:::: ディレクトリディレクトリディレクトリディレクトリ EDKEDKEDKEDK をををを作成作成作成作成するするするする

先のステップのとおり、ターゲットプラットフォーム上で動作する完全なハードウェア/ソフトウェアアプリ

ケーションの作成に必要な、いくつかのハードウェアとソフトウェアに関連するファイルを CoDeveloper は生

成します(ターゲットプラットフォーム:PowerPC プロセッサを組み込んだ Xilinx FPGA)。これらのファイル

をマニュアルで移動し、既にある Xilinx プロジェクトへインテグレートする事も可能ですが、ここでは

CoDeveloper のエクスポート機能を使用してこれらのファイルを Xilinx ツールへインテグレートします。以

降では、Platform Studio(EDK)バージョン7.1のプロジェクト作成を例に、操作方法を示します。

最初に、プロジェクト内に Xilinx Platform Studio(EDK)プロジェクトファイルを格納するサブディレクト

リを作成します。このチュートリアルでは、ディレクトリ名を「EDK」とします。この名前 EDK は CoDeveloper

の Generate Option ダイヤログで設定した名前でもあります:

Page 10: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

10 - 37

ステップステップステップステップ3333----6666::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper からからからからファイルファイルファイルファイルををををエクスポートエクスポートエクスポートエクスポート

Generate Options ダイヤログを開き(メニュー[Project]→[Options]を選択し、開いたダイヤログから

[Generate]タブを選択)、エクスポート先となるディレクトリ名の設定内容を再度確認してください:

これらエクスポートディレクトリは、CoDeveloper のエクスポートソフトウェアとエクスポートハードウェア

機能を使用した際に、生成されたハードウェアとソフトウェアプロセスのコピー先として定義されているディ

レクトリです。ここで定義されたディレクトリ(ここでは EDK)は、先に生成された Platform Support Package

アーキテクチャライブラリファイルの格納ディレクトリとして定義されています。よって、エクスポート作業

を行う前に、Platform Support Package が正しく選択されていることを必ず確認してください。

Page 11: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

11 - 37

ビルドディレクトリ(ここでは"hw"と"sw")からエクスポートディレクトリ(ここでは"EDK"ディレクトリ)

へファイルをエクスポートするには、メニューの[Project]→[Export Generated Hardware(HDL)]と[Project]

→[Export Generated Software]をそれぞれ実行します。実行すると、実行ログが下図のように表示されます:

Note:次のステップへ進む前に、必ずソフトウェアとハードウェアのエクスポートを実行してください。

また、以降のステップでは、Xilinx ISE や Platform Studio(EDK)ソフトウェアが必要です。

これまでの操作により、必要な全てのファイルが CoDeveloper から Xilinx ツール環境へエクスポートされま

した。

Page 12: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

12 - 37

第第第第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]ボタンを押します。

Page 13: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

13 - 37

続いて、Base System Builder ウィザードダイヤログを使用したプロジェクト作成を行います。

下記画面が出現しますので、

[x]I would like to create a new design

を選択し、[Next]ボタンを押します。

Page 14: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

14 - 37

続く画面では、ターゲットボードの選択を求められます。

ドロップダウンメニューから下記のボードを選択してください。

Board Vendor:東京エレクトロンデバイス

Board Name:TB-V2P-XSP-016

Board Revision:1

[Next]ボタンをクリックします。

Page 15: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

15 - 37

次のウィザードでは[x]PowerPC をプロセッサとして選択します:

[Next]ボタンをクリックしウィザードへの入力を続けます。

Page 16: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

16 - 37

ステップステップステップステップ4444----2222::::新規新規新規新規プラットフォームプラットフォームプラットフォームプラットフォームののののコンフィグレーションコンフィグレーションコンフィグレーションコンフィグレーション

前のステップにより、System Builder ウィザードによる基本的な PowerPC プロジェクトが作成できました。

次に、これから作成するソフトウェア/ハードウェア・アプリケーションを動作させるプラットフォームに、

いくつかの必要な定義を加えます。次図のようなウィザード画面によるプロセッサ・コンフィグレーション・

ページにおいて、以下の設定を行います。:

System Wide SettingSystem Wide SettingSystem Wide SettingSystem Wide Setting

Reference Clock Frequency:25.00MHz

Processor Clock Frequency:25.00MHz

Bus Clock Frequency:25.00MHz

PowerPC 405 Processor EnginePowerPC 405 Processor EnginePowerPC 405 Processor EnginePowerPC 405 Processor Engine

JTAG Debug Interface:FPGA JTAG

On-Chip Memory (OCM)(Uses BRAM)

Data :NONE

Instruction:NONE

[Next]ボタンを押しウィザードを続けます。

Page 17: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

17 - 37

次に、プロセッサに含まれる周辺 I/O の定義を行います。RS232 のみを選択し、以下のようにオプションを定

義します:

Peripheral:OPB UARTLITE

Baudrate:9600

Data Bits:8

Parity:NONE

Use Interrupt:disabled

[Next]ボタンを押しウィザードを続けます。

RS232 のみを選択します。

Page 18: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

18 - 37

Add Internal Peripherals の PLB BRAM IF CONTLR ペリフェラルでは、Memory size を 64KB とします。

[Next]ボタンをクリックしてウィザードを続けます。

Page 19: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

19 - 37

続く画面では全てデフォルトのまま、[Next]ボタンをクリックしてウィザードを続けます。

続く画面でも全てデフォルトのまま、[Next]ボタンをクリックしてウィザードを続けます。

Page 20: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

20 - 37

続く画面でも全てデフォルトのまま、[Next]ボタンをクリックしてウィザードを続けます。

以上でプラットフォームとプロセッサ機能のコンフィグレーションが完了します。Base System Builder ウィ

ザードがこれまで作成したシステムのサマリを表示します:

選択した構成でシステムやプロジェクトを生成する為に[Generate]ボタンをクリックします。

Page 21: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

21 - 37

[完了]を押し、ウィザードを閉じます。

Page 22: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

22 - 37

ステップステップステップステップ4444----3333::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper でででで生成生成生成生成したしたしたしたハードウェアハードウェアハードウェアハードウェアをををを XilinxXilinxXilinxXilinx ツールツールツールツールののののプロジェクトプロジェクトプロジェクトプロジェクトにににに追加追加追加追加するするするする

前のステップで[完了]ボタンを押したあと、下のようなダイヤログが表示されます。ここでは、

[x]Start Using Platform Studio

を選択(デフォルト)して、[OK]をクリックします:

Page 23: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

23 - 37

続いて、HelloWorld ハードウェアプロセスとして記述されているモジュールをターゲットシステムへ追加し

ます。メニュー[Project]→[Add/Edit Cores]を選択し、下記ダイヤログボックスを表示させます。タブは

[Peripherals]タブが選択されています:

CoBuilder で作成された IP コア、plb_helloplb_helloplb_helloplb_hello を選択し[Add]ボタンをクリックします。Peripherals リストの

左側に plb_helloplb_helloplb_helloplb_hello モジュールが表示されます。

Page 24: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

24 - 37

次に[Bus Connections]タブを選択します。

マトリックスボックスの、plb_hello_0 splb 行と plb 列が交わる箇所をクリックして、plb_hello_0 インスタ

ンスを PLB バスへ接続します。小さいグレーの sがボックスに表示されます:

Page 25: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

25 - 37

次に[Ports]タブを選択します。

右側のリストから plb_hello_0plb_hello_0plb_hello_0plb_hello_0 インスタンスの中にある PLB_clkPLB_clkPLB_clkPLB_clk ポートを選択し、[<< Add]ボタンをクリック

します。PLB_clkPLB_clkPLB_clkPLB_clk ポートがリスト左側の最後に表示されます(確認するには表示をスクロールダウンする必要

があります)。

また下図のように、Net Name を sys_clk_ssys_clk_ssys_clk_ssys_clk_s に変更します:

Page 26: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

26 - 37

次に[Addresses]タブを選択します。

ここではプラットフォーム上にある各ペリフェラルのアドレスを定義します。ここではアドレスを自動割り当

てしてみます。[Generate Address]ボタンを押すとアドレスが自動でアサインされます。

[適用]→[OK]ボタンをクリックして、「Add/Edit Hardware Platform Specifications」ダイヤログを閉じます。

また、プロジェクトを保存します。

以上の操作で、全ての必要なハードウェアファイルが CoDeveloper から Xilinx ツールの環境へエクスポート

され、新しいプラットフォームがコンフィグレーションされました。次のステップではソフトウェアファイル

を新しいプラットフォームへ構築します。

Page 27: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

27 - 37

ステップステップステップステップ4444----4444::::CoDeveloperCoDeveloperCoDeveloperCoDeveloper でででで生成生成生成生成したしたしたしたソフトウェアソフトウェアソフトウェアソフトウェアをををを XilinxXilinxXilinxXilinx ツールツールツールツールののののプロジェクトプロジェクトプロジェクトプロジェクトにににに追加追加追加追加するするするする

ここでは、Platform Studio プロジェクトへ関連するソフトウェアソースファイルをインポートします。

プロジェクトビューの[Application]タブをクリックし、プロジェクト TestApp_Memory:を表示させます:

自動生成されたサンプルソースファイル、TestApp_Memory.c をプロジェクトから外します。Sources を展開す

ると表示される TestApp_Memory.c の上でマウス右クリックをすると、コンテキストメニュー[Remove File]

が表示されますので、これを選択します:

Page 28: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

28 - 37

次に HelloWorld ソースファイルを追加します。Sources の上でマウス右クリックし、出現するポップアップ

メニューから[Add Files]を選択します。すると「Add Source and Header Files to the project」ダイヤロ

グが開きます。下図のように EDK ディレクトリ下の"code"ディレクトリにあるファイルを全て選択します:

[開く]ボタンをクリックして、これらの3つのファイルをプロジェクトへ追加します。追加されたソースファ

イルは、PowerPC CPU 上で動作するソフトウェア・アプリケーションを構成します。

続いて、プログラムスタートアドレスを設定します。Project: TestApp_Memory をダブルクリックします:

ダブルクリック

Page 29: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

29 - 37

すると「Set Compiler settings for the project: TestApp_Memory」ダイヤログが開きます。[Environment]

タブを選択し、Program Start Address にプログラムスタートアドレスを入力します。今回 BRAM にプログラ

ム を 格 納 する の で、メ ニ ュ ー [Project] → [Add/Edit Cores] → [Addresses] タ ブ で 確認 で きる

plb_bram_if_ctrl_1 の Base Address を入力します:

Page 30: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

30 - 37

以上の操作により、FPGA ビットマップファイルを作成するのに必要な、ハードウェア/ソフトウェア・アプ

リケーションの準備が整いました。次のステップでは、ビットマップの作成、デバイスへのダウンロード、ア

プリケーションの実行について手順を示します。

注)

プロジェクトディレクトリの中の以下のファイルを編集してください。

(プロジェクトディレクトリ EDK)¥drivers¥plb_hello_v1_00_a¥src¥co.h

最後から2行目をコメントアウトしてください。

(編集前) #include "co_math.h" #endif /* CO_H */

(編集後) /* #include "co_math.h" */ ←この行をコメントアウトする #endif /* CO_H */

Page 31: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

31 - 37

ステップステップステップステップ4444----5555::::FPGAFPGAFPGAFPGA ビットマップビットマップビットマップビットマップのののの生成生成生成生成

ここまでに、以下のステップを行ってきました:

• CoDeveloper からハードウェアとソフトウェアのファイルを生成

• Xilinx Platform Studio プロジェクトを作成し、PowerPC ベースのプラットフォームを作成

• CoDeveloper で生成したファイルを Xilinx Platform Studio 環境へ移す

• PLB バスを介した、Impulse C ハードウェアプロセスと PowerPC プロセッサの接続とコンフィグレーショ

ここでは、ビットマップを生成しアプリケーションをターゲットプラットフォームにダウンロードします。こ

こでの操作は容易ですが、ファイル生成に時間がかかります。

Platform Studio のメニュー[Tools]→[Generate Bitstream]を選択します:

Note:このプロセスが完了するまでに、使用のマシンリソースに依りますが、30分程度(またはそれ以上)

要します。

Page 32: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

32 - 37

ビットストリームが生成されたら、ソフトウェアソースファイルをコンパイルする為に、メニュー[Tools]→

[Build All User Applications]を選択します:

コンパイルが終了したら、メニュー[Tools]→[Update Bitstream]を選択します:

Page 33: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

33 - 37

第第第第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)が観測されます:

Page 34: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

34 - 37

第第第第6666章章章章::::Hello WorldHello WorldHello WorldHello World サンプルアプリケーションサンプルアプリケーションサンプルアプリケーションサンプルアプリケーションについてについてについてについて

Hello World ソースファイルの基本的な中身について見てみます。

この"Hello World"サンプルプロジェクトには、ソフトウェアプロセス(PowerPC プロセッサで動作)と、PLB

バスにおいてシングルストリームを介して通信するハードウェアプロセス(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_initialize()co_initialize()co_initialize()co_initialize()を経由

して言及しています。また、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>

Page 35: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

35 - 37

#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

Page 36: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

36 - 37

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);

Page 37: HelloWorld((PowerPC ExamplesPowerPC ......サンプルプロジェクト"Hello World"アプリケーションには、ソフトウェアプロセス(PowerPCプロセッサで

CoDeveloper_TEL_PowerPC_HelloWorld_jp.doc

37 - 37

IF_SIM( printf("Press any key to continue..."); getc(stdin); ) }