Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,287 views

Published on

著者:大川猛、大津金光、横田隆史(宇都宮大学大学院工学研究科情報システム科学専攻)
発表日:2016/8/25 IPSJ SIGEMB8月研究会(SWEST18共催)@下呂温泉

Published in: Technology
  • Be the first to comment

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

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

×