30
PEAR LAB Utsunomiya Univ. 組込み向けFPGA設計の教育 ~ゲーム音楽演奏システム設計事例 大川猛、大津金光、横田隆史 宇都宮大学大学院工学研究科情報システム科学専攻 2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 1

組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

Embed Size (px)

Citation preview

Page 1: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

大川猛、大津金光、横田隆史

宇都宮大学大学院工学研究科情報システム科学専攻

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 1

Page 2: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•FPGAの大容量化・低価格化による普及加速•アプリ特化回路・高速並列処理を省電力で。製品へFPGA導入

•FPGA応用範囲の拡大•昔:グルーロジック・通信・パケット・画像処理(フィルタ)

•今:画像認識・ニューラルネット・検索エンジン・証券取引・高速制御・・・などなど

•組込みシステムにおける高機能化・高性能化の要求•既存のSoC+ソフトウェアで満たせない要求をカバー

•情報処理技術者試験でFPGAを含むシステムが出題(IPA・平成28年エンべデッドシステムスペシャリスト試験)

•「組込み向けFPGA設計技術者」の需要増

背景

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 2

Page 3: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•ハードとソフトの境目を超越した技術者•必要に応じて、ハード開発もソフト開発もやる

•組込みシステム全体を見通した設計ができる

•「組込みシステムFPGAの設計ができる」事だけにとどまらないメリットがあるはず

「組込み向けFPGA設計技術者」とは

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 3

Page 4: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

「組込み向けFPGA設計技術者」育成の課題

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 4

チュートリアルと実践のギャップ

実践

演習:HDL(RTL)で設計実装・シミュレーション

FPGAでLEDをチカチカ点滅

課題座学:論理回路

現状のFPGA設計者教育

・学習者の自助努力頼み・適切な難易度の課題が必要

Page 5: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•「組込み向けFPGA設計技術者」の育成のために必要な教育内容を検討する

•その第1歩として、教育プログラム「PWMオーディオ出力によるゲーム音楽演奏FPGAシステム開発」を実施

研究目的

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 5

Page 6: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•学部3年•情報工学実験2 HDLによるハードウェア設計

• 11月:研究室仮配属

•学部4年• 4月:研究室本配属

• 4月~6月:導入教育・英語文献輪講

• 5月:卒業研究グループ配属

• 7月→ここでの教育

• 8月:大学院入試

• 9月~1月:卒業研究

前提:宇都宮大学工学部情報工学科のFPGA・HDL関連カリキュラム

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 6

組合せ回路・順序回路(1コマ半x3回・30名)

FPGAボードで演習・レポート

メモリアクセス回路(1週間・6名)

FPGAボードで演習・レポート

学部2年:論理設計とスイッチング理論

Page 7: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

1. ほぼ全ての大学生が興味を持つ題材

2. データ量・回路量が少ない(cf.画像処理)

3. 完成イメージがある

なぜ「ゲーム音楽演奏FPGAシステム」を題材にするのか?

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 7

•現在(2016年)の大学4年生

• 1995年生まれ

• 2005年:10歳

• 2013年:18歳 大学1年生

•家庭用ゲーム機の歴史• 1983年:任天堂ファミリーコンピュータの誕生

• 1990年:スーパーファミコン

• 1994年:SONYプレイステーション

• 2004年:ニンテンドーDS

• 2006年:Wii

FPGAコンパイル時間:~1分

親世代がゲームに理解がある(ことが多い)

Page 8: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

●Attention(注意)

・面白そう・ゲーム音楽を題材

●Relevance(関連性)

・やりがい・応用を意識した内容

●Confidence(自信)

・やればできる・自分の力で出来る内容

●Satisfaction(満足感)

・やってよかった・発表の場

学習意欲に関するARCSモデルとの関連

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 8

FPGAコンパイル時間:~1分

自分でやった、という達成感

Page 9: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

FPGA設計教育プログラムの経過「PWMオーディオによるゲーム音楽演奏FPGAシステム」

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 9

Page 10: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

●プロジェクトのゴール•「7/18(月・祝)のオープンキャンパスまでに,ゲーム音楽を演奏するFPGA

を作ろう!」

「ゲーム音楽演奏FPGAシステム」教育プログラムの概要

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 10

期間 2016年7月7日~18日(12日間)

受講生 6名(学部4年生)

作るもの ゲーム音楽を奏でるFPGA

・3和音(矩形波x2,三角波x1)

Page 11: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•環境• FPGA基板: Digilent社製BASYS2

• FPGAデバイス: Xilinx社製 Spartan3E-100

•入力:• BRAM上に楽曲データを格納(コンパイル時)

•ボタン入力(RESET, START)・スイッチ入力(表示切替)

•出力:• PWM音声(アンプ経由でスピーカ)

• LED・7セグメントLED(デバッグ表示用)

開発環境・システム構成

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 11

Page 12: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

時期 内容・開発段階

7/7(木) ◆キックオフミーティング第1段階:矩形波の発生【開発実演】→スピーカ

第2段階ノコギリ波の発生 【宿題 Gr1,Gr2】

7/11(月) ◆第2回ミーティング

第3段階:三角波の発生とミキサー(3和音)【Gr1】第4段階:音楽シーケンサの開発 【Gr2】

第5段階:統合テスト → スピーカ 【Gr2】

7/15(金) ◆第3回ミーティング

7/18(月・祝)

◆オープンキャンパス

「ゲーム音楽演奏FPGAシステム」教育プログラムの経過

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 12

Page 13: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•プロジェクトゴールの共有

•要求・PWMオーディオの原理の説明

•全体システム案の説明

•基本的な操作の実演(矩形波出力)

7/7(木) キックオフミーティング

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 13

Page 14: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

PWM変調によるアナログ音声信号出力

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 14

50%

DUTY比

10%

10%

-50%

PWM周波数: 200KHz(周期: 5us)

LPF

(<100KHz)

50%

出力電圧

10%

Page 15: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•FPGAのピンの出力では、PC用スピーカを直接接続できない→アンプモジュール(PMODAMP1)経由

•カウンタ回路で、50MHzから1000Hzを生成・出力

•100KHzのPWMによる音量制御

•FPGAプロジェクトファイルを配布(ISE)

第1段階:矩形波の発生【開発実演】

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 15

always@(posedge CLK)

begin

if(RESET)

counter <= 0;

else

if(counter == audio_period)

counter <= 0;

else

counter <= counter +1;

end

PC用スピーカアンプモジュールFPGAボード

Page 16: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•HDLを修正して、矩形波→ノコギリ波を発生

•7/11(月)に全員集合して、スピーカ出力音声およびオシロスコープで確認*

第2段階:ノコギリ波の発生【宿題】

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 16

Page 17: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

7/11(月) 第2回ミーティング

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 17

•各受講生に責任を持たせるため開発を分担•Gr1(4名) 後半(音源・ミキサー)【省略】

•Gr2(2名) 前半(シーケンサ)

Page 18: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

(*印は教員が介入)

•音楽シーケンサ開発計画*

•ホワイトボードでの設計*

•楽曲データ形式の設計*

•HDL実装

•テスト用回路の設計*

•DEBUGテスト

第4段階:音楽シーケンサの開発【Gr2】

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 19

Page 19: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

ゲーム音楽演奏システムの全体構成*

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 21

Seq

#0

BRAM

#0

Square Wave Gen

#0

Mixer PWMSeq

#1

BRAM

#1

Square Wave Gen

#1

Seq

#2

BRAM

#2

Triangle Wave Gen

#2

Common Clk

Tick=1ms@120 BPM

20

20

20

8

4

8

4

8

4

10

9

32

9

32

9

32当初は1つのシーケンサで設計した(右上)が、FPGAの並列性を活用し、音源毎に独立した3つのシーケンサ(右)とし設計を単純化した

Page 20: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•音楽の知識•音程:ドレミファソと周波数

•音長:4分音符480・8分音符240

•ギャップを埋めるには?•楽譜→メモリ上のデータ

•データ生成ツールの作成(Python)

テストデータの作成

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 22

楽曲データ形式の設計と、具体例によるテストデータ・テスト駆動開発データはFPGAのBRAMに初期値として与える(Xilinx COEファイル)

Page 21: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•メモリ上に下記データ(1つのエントリでひとつの音符・休符を表現)を格納し、順次演奏する

•コマンドで繰り返し(JUMP)を表現する

楽曲データ形式の設計*

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 23

31 16

vol length

15 12 11 0

0 note

2324

31 16

cmd 0

15 12 11 0

parameter

音符休符

コマンド

Page 22: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

テスト方式の設計*

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 24

•いきなりスピーカーをつなぐ前に、FPGAボード上7

セグメントLEDを用いて、楽曲データを表示して、テストする方式を提案(by教員)

Page 23: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•不具合発生• →メモリ読み出しタイミングが間違っていた• →シミュレーションで確認・状態遷移を修正

音楽シーケンサのテスト・デバッグ

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 25

Init

ReadMem

Command Note

WaitJump

length != 0length == 0

Init

ReadMem

Command Note

WaitJump

length != 0length == 0

WaitMem

Page 24: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

参考)シーケンサの回路記述

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 26

// Process for state transition

always @(posedge CLK)

begin

if(RESET) begin state <= 0; end

else begin

case(state)

0: if(BTN[0]) state <= 1;

1: state <= 2;2: if(length != 0) state <= 3; else state <= 8;

3: if(length == 0) state <= 4; else state <= 3;

4: state <= 5;

5: state <= 1;

8: state <= 5;

default: state <= 0;

endcase

end

end

Page 25: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•BRAM初期値ファイルの入力 → タイヘン・・・

•教員「テキストデータ形式で入力し変換しては?」*

•周りにいた大学院生がPythonで変換ツールを作成

データ変換ツールの作成

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 27

E5 15 240

R 0 240

E5 15 480

R 0 480

E5 15 480

R 0 480

C5 15 480

E5 15 480

R 0 480

G5 15 480

R 0 1440

G4 15 480

memory_initialization_radix = 16 ;

memory_initialization_vector =

0045F0F0,000000F0,0045F1E0,000001E0,

0045F1E0,000001E0,0005F1E0,0045F1E0,

000001E0,0075F1E0,000005A0,0074F1E0,

000005A0,0005F1E0,000003C0,0074F1E0,

楽譜テキストデータ

BRAM初期値(Xilinx COE)ファイル

Page 26: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•楽譜テキストデータの入力 → タイヘン・・・

•ネット上のMIDIファイル→楽譜テキストデータに変換できれば、どんどん音楽を演奏できるのでは?

•Pythonでツールを作成• Pretty midiがよさそう!(MIDIファイルの読み込み)

• https://github.com/craffel/pretty-midi

学生が自主的に追加したタスク

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 28

Page 27: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•スピーカを接続して、ゲーム音楽演奏をテストした

•期待通りの動作

•実物は「SWEST作品発表」にてデモ展示しています

第5段階:統合テスト【Gr2】

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 29

Page 28: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•「組込み向けFPGA設計技術者」の育成方法を見出すことを目的とし、その第1歩として「ゲーム音楽演奏システム設計」を行った。

•結果:10日間の開発で、FPGAでゲーム音楽を演奏できた。受講生の反応は好意的であった。

•今後、教員の介入を少なくして本プログラムの有効性を評価したい

まとめ

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 30

Page 29: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

•本稿に記載のFPGA導入教育プログラムにおいて受講生として参加してくれた,宇都宮大学オプティクス教育研究センター山本裕紹研究室の4年生(藤井賢吾, 伊藤秀征, 黒川菜緒, 森田渉吾),工学部情報工学科 横田・大津・大川研究室の4年生(小林都生, 菅田悠平)・大学院生(松本拓也・山科和史)のみなさん,ありがとうございました.

謝辞

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 31

Page 30: 組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例

PEAR LAB Utsunomiya Univ.

ファイル名 行数

TOP: pwmaudio.v 219

music_sequencer.v 223

Square.v 58

Triangle.v 99

mixer.v 46

Pwm.v 67

Common_clk.v 82

TOPLEVEL Test: Test.v 72

UNIT Test: Test_triangle.v 60

ソースコード量

2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 32

794行