verilog-hdl tutorial (15) software

31
1 Verilog-HDL 講習会DE0編(15-2) 組込みプロセッサNios IIの使い方 ソフトウェア編 5, August, 2013 鹿児島大学 中原 啓貴

Upload: hiroki-nakahara

Post on 18-Jul-2015

93 views

Category:

Education


5 download

TRANSCRIPT

1

Verilog-HDL 講習会DE0編(15-2) 組込みプロセッサNios IIの使い方

ソフトウェア編 5, August, 2013

鹿児島大学 中原 啓貴

Nios II EDSを起動します (FPGAは書き込んでいますか?)

2

Workspace (作業用フォルダ)は このままでOK

アプリケーションとBSP(Board Support Package)をテンプレから作成

3

BSP: Board Support Package ボード毎のライブラリ等の ファイルを集めたパッケージ (ハードウェア毎に作成する)

4

クリック

前回のチュートリアルの 作業フォルダ

Hellow_NiosII_system.sopcinfo を選択

5

自動設定(前回, NiosII/eに割当てた名前)

プロジェクト名は Hello_NiosII に設定

テンプレは Hello World

Next をクリック

6 Finish をクリック

Create a new BSP ... にチェックを付ける

早速プログラムを入力しよう

7

クリックして展開

hello_world.c をダブルクリック

この2行を入力 (ハードウェアにアクセス するためのおまじない)

プログラムを保存して ビルドを実行します

8

保存アイコンをクリック

プロジェクト名を 右クリック

Build Project をクリック

Build が完了すると Console に使用メモリが表示されます

9

10

ビルドした プログラムを FPGA上の Nios II/eに

転送して実行

プロジェクト名を 右クリック

Run As で Nios II Hardware を選択

11

初回実行時には (FPGA上の) Nios II/e と (PC上の) Nios II EDS が接続されていないので

接続設定を行います

Project nameと Project EFL file nameのパスが 正しいかチェック

12

Target Connection タブをクリック

System ID checks の Ignore (無視する)オプションをチェック

13

右にスクロールする

Refresh Connections をクリックする

14

Processors: と Byte Stream Devices が応答すればOK

FPGAとPCの接続が終われば Apply をクリックして Run をクリック

Nios II Consoleに 「Hello from Nios II!」が表示されればOK

15

Downloading ELF Process failed が 表示される場合は, Quartus II Programmer を閉じましょう. (JTAG のUSB通信を取り合うのが 原因らしい...)

system.h の中身を見てみる

16

ダブルクリック

GPIO32_OUT (ハードウェア設定時につけた名前)の メモリマップドIOにおける ベースアドレス (BASE Address)は 0x1001090

今度は io.h の中身を確認

17

IORD_32DIRECT: IOから読み込む IORD_32DIRECT(ベースアドレス, オフセット)

IOWR_32DIRECT: IOにデータを書き込む IOWR_32DIRECT(ベースアドレス, オフセット, データ)

hello_world.cを修正

18

Build を行い, 実行する

19

IORD_32DIRECTで読み込んだ値を IOWR_32DIRECTでLEDGに接続したIOに書き込む

RS232C信号をNios II/eで 受信する

20

【準備】RS232Cケーブルを接続

新しいプロジェクトを作ろう

21

22

プロジェクト名は RS232C_test に設定

テンプレは Hello World

Next をクリック

先程のチュートリアルを参考に Hello_NiosII_system.sopcinfoを 読み込む

23

既に BSP (ハードウェア毎のライブラリパッケージ)は生成済みなので選択する

Next をクリック

24

BSP を編集して RS232Cを

読み込むように設定 プロジェクト名を 右クリック

Nios II で BSP Editor ... を選択

25

標準入力を uart_0 に設定 (uart_0は Qsys で設定したUART Serialの名前でしたよね)

26

標準入力を uart_0 に設定 標準出力は jtag_uart_0 に設定 (JTAGはNios II EDS の System Console に  表示されると思って下さい)

hello_world.c を修正 修正後, Build -> Run を実行

27

RS232C テストツールを起動

28

設定は 第12回, 第13回の 講習会を参考にする

接続を行う ↓ 送信TEXT に A を入力 ↓ 送信データのバイナリ変換にチェックをつけて ↓ TEXT送信をクリック

送信データが Console に表示され, そのバイナリ値がLEDGに表示されます

29

文字「A」のバイナリ値: 0x41, つまり 0100 0001

まとめ •  DE0ボード上に Qsys を使って Nios II/e を含むシス

テムを生成 •  Nios II EDSを使ってソフトウェアでハードウェアを

制御 ‒ これからはソフトウェアでハードウェアを制御する時代!

‒ たいていのハードウェアは既にペリフェラルとして供給されている

‒ ハードウェアの設計は最小限に •  設計時間を短縮しつつ, 楽に(バグが少なく), かつ高

性能なシステム設計がこれからのトレンド 30

課題 •  Qsys を使って Nios II/e を含むシステムをもう一度生成

して FPGA上に実現せよ (自分の手でやってみると一発で動くのは難しいことがわかるはず)

•  生成したシステムで, 以下の動作を行うソフトウェアを Nios II EDSで作成し, 実行せよ ‒  LEDGが左右に動く (速度は適当で良い) ‒  スライドスイッチのON/OFFに応じて, LEDGの点滅速度が変る ‒  RS232C通信を介して, PCからの値に応じてLEDGが点滅する・動

く ‒  【難】RS232C通信を介して, PCに値を送る

(ヒント): io.h を開いて uart_0 のデバイスのパス "/dev/uart_0" を調べる. fopenでそのデバイスを開いて, fprintf で書き込めば良い. これを応用すれば, BSP を開いて編集する必要がなくなる.

31