View
773
Download
0
Category
Preview:
Citation preview
PEAR LAB Utsunomiya Univ.
組込み向けFPGA設計の教育~ゲーム音楽演奏システム設計事例
大川猛、大津金光、横田隆史
宇都宮大学大学院工学研究科情報システム科学専攻
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 1
PEAR LAB Utsunomiya Univ.
•FPGAの大容量化・低価格化による普及加速•アプリ特化回路・高速並列処理を省電力で。製品へFPGA導入
•FPGA応用範囲の拡大•昔:グルーロジック・通信・パケット・画像処理(フィルタ)
•今:画像認識・ニューラルネット・検索エンジン・証券取引・高速制御・・・などなど
•組込みシステムにおける高機能化・高性能化の要求•既存のSoC+ソフトウェアで満たせない要求をカバー
•情報処理技術者試験でFPGAを含むシステムが出題(IPA・平成28年エンべデッドシステムスペシャリスト試験)
•「組込み向けFPGA設計技術者」の需要増
背景
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 2
PEAR LAB Utsunomiya Univ.
•ハードとソフトの境目を超越した技術者•必要に応じて、ハード開発もソフト開発もやる
•組込みシステム全体を見通した設計ができる
•「組込みシステムFPGAの設計ができる」事だけにとどまらないメリットがあるはず
「組込み向けFPGA設計技術者」とは
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 3
PEAR LAB Utsunomiya Univ.
「組込み向けFPGA設計技術者」育成の課題
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 4
チュートリアルと実践のギャップ
実践
演習:HDL(RTL)で設計実装・シミュレーション
FPGAでLEDをチカチカ点滅
課題座学:論理回路
現状のFPGA設計者教育
・学習者の自助努力頼み・適切な難易度の課題が必要
PEAR LAB Utsunomiya Univ.
•「組込み向けFPGA設計技術者」の育成のために必要な教育内容を検討する
•その第1歩として、教育プログラム「PWMオーディオ出力によるゲーム音楽演奏FPGAシステム開発」を実施
研究目的
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 5
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年:論理設計とスイッチング理論
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分
親世代がゲームに理解がある(ことが多い)
PEAR LAB Utsunomiya Univ.
●Attention(注意)
・面白そう・ゲーム音楽を題材
●Relevance(関連性)
・やりがい・応用を意識した内容
●Confidence(自信)
・やればできる・自分の力で出来る内容
●Satisfaction(満足感)
・やってよかった・発表の場
学習意欲に関するARCSモデルとの関連
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 8
FPGAコンパイル時間:~1分
自分でやった、という達成感
PEAR LAB Utsunomiya Univ.
FPGA設計教育プログラムの経過「PWMオーディオによるゲーム音楽演奏FPGAシステム」
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 9
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)
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
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
PEAR LAB Utsunomiya Univ.
•プロジェクトゴールの共有
•要求・PWMオーディオの原理の説明
•全体システム案の説明
•基本的な操作の実演(矩形波出力)
7/7(木) キックオフミーティング
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 13
PEAR LAB Utsunomiya Univ.
PWM変調によるアナログ音声信号出力
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 14
50%
DUTY比
10%
10%
-50%
PWM周波数: 200KHz(周期: 5us)
LPF
(<100KHz)
50%
出力電圧
10%
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ボード
PEAR LAB Utsunomiya Univ.
•HDLを修正して、矩形波→ノコギリ波を発生
•7/11(月)に全員集合して、スピーカ出力音声およびオシロスコープで確認*
第2段階:ノコギリ波の発生【宿題】
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 16
PEAR LAB Utsunomiya Univ.
7/11(月) 第2回ミーティング
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 17
•各受講生に責任を持たせるため開発を分担•Gr1(4名) 後半(音源・ミキサー)【省略】
•Gr2(2名) 前半(シーケンサ)
PEAR LAB Utsunomiya Univ.
(*印は教員が介入)
•音楽シーケンサ開発計画*
•ホワイトボードでの設計*
•楽曲データ形式の設計*
•HDL実装
•テスト用回路の設計*
•DEBUGテスト
第4段階:音楽シーケンサの開発【Gr2】
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 19
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つのシーケンサ(右)とし設計を単純化した
PEAR LAB Utsunomiya Univ.
•音楽の知識•音程:ドレミファソと周波数
•音長:4分音符480・8分音符240
•ギャップを埋めるには?•楽譜→メモリ上のデータ
•データ生成ツールの作成(Python)
テストデータの作成
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 22
楽曲データ形式の設計と、具体例によるテストデータ・テスト駆動開発データはFPGAのBRAMに初期値として与える(Xilinx COEファイル)
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
音符休符
コマンド
PEAR LAB Utsunomiya Univ.
テスト方式の設計*
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 24
•いきなりスピーカーをつなぐ前に、FPGAボード上7
セグメントLEDを用いて、楽曲データを表示して、テストする方式を提案(by教員)
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
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
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)ファイル
PEAR LAB Utsunomiya Univ.
•楽譜テキストデータの入力 → タイヘン・・・
•ネット上のMIDIファイル→楽譜テキストデータに変換できれば、どんどん音楽を演奏できるのでは?
•Pythonでツールを作成• Pretty midiがよさそう!(MIDIファイルの読み込み)
• https://github.com/craffel/pretty-midi
学生が自主的に追加したタスク
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 28
PEAR LAB Utsunomiya Univ.
•スピーカを接続して、ゲーム音楽演奏をテストした
•期待通りの動作
•実物は「SWEST作品発表」にてデモ展示しています
第5段階:統合テスト【Gr2】
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 29
PEAR LAB Utsunomiya Univ.
•「組込み向けFPGA設計技術者」の育成方法を見出すことを目的とし、その第1歩として「ゲーム音楽演奏システム設計」を行った。
•結果:10日間の開発で、FPGAでゲーム音楽を演奏できた。受講生の反応は好意的であった。
•今後、教員の介入を少なくして本プログラムの有効性を評価したい
まとめ
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 30
PEAR LAB Utsunomiya Univ.
•本稿に記載のFPGA導入教育プログラムにおいて受講生として参加してくれた,宇都宮大学オプティクス教育研究センター山本裕紹研究室の4年生(藤井賢吾, 伊藤秀征, 黒川菜緒, 森田渉吾),工学部情報工学科 横田・大津・大川研究室の4年生(小林都生, 菅田悠平)・大学院生(松本拓也・山科和史)のみなさん,ありがとうございました.
謝辞
2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉 31
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行
Recommended