FC2カウンター FPGAの部屋 2012年09月10日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

WebPACK14.2でZedBoardのPS & PLチュートリアルをやってみた6(実機でテスト)

WebPACK14.2でZedBoardのPS & PLチュートリアルをやってみた5(SDK)”の続き。

前回、SDKでコンパイルが終了したので、今回は実機で動作を確認した。

100.ZedBoard の電源をONした。

101.TeaTerm を立ちあげて115200bps に設定した。

102.Xilinx Toolsメニューから Program FPGA を選択した。

103. Program FPGA ダイアログが出た。Program ボタンをクリックした。ビットファイルがダウンロードされ、PLファブリックがプログラムされる。
ZedBoard_PSPL_67_120909.png

104.hello_world_0の右クリックメニューからRun as -> Run Configurations... を選択した。
ZedBoard_PSPL_68_120909.png

105.Xilinx C/C++ ELF の右クリックメニューからNew を選択した。
ZedBoard_PSPL_69_120909.png

106.hello_world_0 Debug が出来た。
ZedBoard_PSPL_70_120909.png

107.Runボタンをクリックした。

108.Processor in use ダイアログが出た。Yesボタンをクリックした。
ZedBoard_PSPL_71_120909.png

109.Tera Termにメニューが表示されていた。
ZedBoard_PSPL_72_120909.png

110.Tera Termで'1'キーを押してから、ZedBoard のBTNU キーを押すとLD9 が一旦消灯してから、また点灯した。
ZedBoard_PSPL_73_120909.png

111.Tera Termで'0'キーを押してメニューに戻した。

112.Tera Termで'2'キーを押してから、ZedBoard のBTNR キーを押すとLD9 が一旦消灯してから、また点灯した。
ZedBoard_PSPL_74_120909.png

113.Tera Termで'0'キーを押してメニューに戻した。

114.Tera Termで'3'キーを押したらBYEで終了した。
ZedBoard_PSPL_75_120909.png

ZedBoard のBTNU、BTNR、LD9 の位置を下の写真に示す。
ZedBoard_PSPL_76_120910.jpg

WebPACK14.2でZedBoardのPS & PLチュートリアルをやってみた7(SDKデバック)”に続く。
  1. 2012年09月10日 20:22 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0

WebPACK14.2でZedBoardのPS & PLチュートリアルをやってみた5(SDK)

WebPACK14.2でZedBoardのPS & PLチュートリアルをやってみた4(インプリメント)”の続き。

PlanAheadでのインプリメントを終了したので、ハードウェアをエクスポートして、SDKを立ち上げる。

89.File メニューからExport -> Export Hardware for SDK... を選択した。
ZedBoard_PSPL_59_120909.png

90.Export Hardware ダイアログが開く。Launch SDKにチェックを入れて、OKボタンをクリックした。
ZedBoard_PSPL_60_120909.png

91.Hardware 構成をExport してSDKが立ち上がった。
ZedBoard_PSPL_61_120909.png

92.FileメニューからNew -> Xilinx C Projectを選択した。

93.New Projectダイアログが開いた。Hello Worldが選択されている。
ZedBoard_PSPL_62_120909.png

94.次のダイアログが開いた。Finishボタンをクリックした。
ZedBoard_PSPL_63_120909.png

95.Hello Worldプロジェクトがビルドされた。トータルでは0x12C10 (76.8KBytes) メモリを使用している。さすがに大きい。
ZedBoard_PSPL_64_120909.png

次にhelloworld.c を書き換える。どのよう動作をするかはチュートリアルの40ページからの、”A.1 About the Application Software”、”A.2 Application Software Steps”に書いてある。

main()関数 はソフトを実行するエントリポイントです。main() 関数は初期化とシステムの周辺デバイスの設定をします。EMIOインターフェースを使用して、そのようなAXI GPIOおよびPS GPIOなど、さまざまなユースケースを実行するために選択する手順を持っています。シリアル端末上の命令にで、異なるユースケースを選択することができます。


ソフトウェア実行の手順

1.AXI GPIOモジュールを初期化。

2.ボード上のBTNUプッシュボタンに接続されている入力ピンとして、AXI GPIOピンの方向コントロールを設定する。ピン配置は、システムの作成時にユーザー制約ファイル(UCF)でLOC制約を使用して固定されている。

3.デバイスIDが0のAXI TIMERモジュールを初期化。

4.AXI timer ISRにコールバック関数を対応付ける。
この関数は、タイマ割り込みが発生するたびに呼び出される。コールバック関数はDS23 LEDをスイッチし、割り込みフラグをセットする。main()関数は実行を停止する割り込みフラグを使用して、タイマー割り込みを待ち、再起動実行。

5.リセット間にタイマー設定値をタイマーにロード。

6.割り込みモードやAuto Reload mode などのタイマーオプションを設定。

7.PSセクションのGPIOを初期化

8.PSセクションGPIOのチャネル0、ピン番号10を設定する。これはMIOピンにマッピングされ、ボード上のLED"LD9"に接続された出力ピンだ。

9.PSセクションGPIOのチャネル2、ピン番号0を設定する。これはEMIOインターフェースを介してPLサイドに接続されたBTNRプッシュポタンスイッチだ。

10.Snoop control unit Global Interrupt controllerを初期化。ID '91'割り込みの割り込みルーチンを登録。例外ハンドラを登録して、割り込み許可。

11. シリアル端末経由で選択されたAXI GPIO または PS GPIO ユースケースを元にシーケンスを実行。

ソフトウェアは、シリアル端末からの選択でプロシージャを実行する。
シリアル端末を経由しての使用例を選択した後は、端末上の指示に従ってボード上のプッシュボタンを押す必要がある。そうすると、'LD9'LEDが消灯、タイマーがスタートし、タイマー割り込みが来るまでウエイトする関数が呼ばれる。タイマー割り込みが起こったら'LD9'LEDを点灯して実行を再スタートする。

(英語に自信がないので、間違っていたらお知らせください)


書き換えるための helloworld.c は、ZedBoard.org のReference Designs のZynq Concepts, Tools, and Techniques on ZedBoard v14.1 をダウンロードすると取得することが出来る。

(注)XPSで入れたIPを含むIPのドライバが、私のフォルダ階層だと、”file:///K:/HDL/Xilinx/14.2/ISE_DS/EDK/sw/XilinxProcessorIPLib/drivers/”にある。各ドライバ用フォルダの下の /doc/html/api/index.html をブラウザで見ると、各IPの制御ルーチンの説明を見つけることが出来る。


96.Zynq Concepts, Tools, and Techniques on ZedBoard v14.1 のhelloworld.c の内容SDKプロジェクト内のhelloworld.c にコピー&ペーストした。
ZedBoard_PSPL_65_120909.png

97.念のため、Project メニューからClean... を選択した。

98.Clean ダイアログが開く。OKボタンをクリックした。
ZedBoard_PSPL_66_120909.png

99.再コンパイルされた。

WebPACK14.2でZedBoardのPS & PLチュートリアルをやってみた6(実機でテスト)”に続く。
  1. 2012年09月10日 03:56 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0