**********************************************************************
ワーク S5-c
テーマ:高位合成/FPGA活用技術の最前線
講師:青木 海(sigboost株式会社), 照屋 大地(東京農工大学)
コーディネータ:山本 諒太
日時:2018/8/31 13:00~14:10
参加人数:26名
**********************************************************************

13:00 開始
○イントロダクション
青木さん自己紹介
駆け出しテックベンチャー.
sigboostとは電子楽器かつFPGA高位合成処理.
プログマブルな電子楽器

照屋さん自己紹介

○照屋さんプレゼン
FPGA:LSIだが論理回路を自由に組み替え可能
FPGAとマイコンを組み合わせる.面倒
⇒Rubyのみで書きたい(Mulveryプロジェクト)

回路設計の知識不要かつハード化対象を自動で抽出できるようにする

FPGAを使うために
課題1:幅広い知識が必要
高位合成:CやJavaの高級言語をレジスタ転送レベル設計に変換する技術
課題2:動作記述≠構造記述
⇒HW技術者による最適化が必要になる

Rubyを書いてFPGAをただのHW程度にしか思わずいろいろな
デバイスを使えるようにしたい

・環境紹介
Zynqberry:マイコン+FPGAなRaspberry Pi互換ボード
PYNQ:PythonでFPGAを便利に使う

・Mulveryのアプローチ
Reactive Programming(RP)※を用いたプログラムからの合成
※データストリームをオブジェクトとして扱う
RPの例を図とともに説明

・Scheduler
動作スレッドを制御するための仕組み

・SchedulerとHW合成アイデア
動作スケジューリングを制御すればそのままデータフローグラフとして扱えそう

・動的解析による実装
多段階計算を使った動的解析.
フレームワークとして提供するので通常のRubyで合成も実行も全部できる

・Schedulerの合成
複数のスレッドを同時にキックするところがうまくいっていない

・デバイスコントローラとしての活用
1024個のフルカラーLEDを制御

●質疑応答●
Q.ハードもソフトにもならないマップというが,
どうやってコンパイラが見つけるのか
A.コンパイラではない.動的型付けを実行している.
 型で何がくるかを調べながら動作している

Q.FPGA側で数値扱うときにビット長がいろいろほしくなったりする.
A.FPGA独特な数値型は先頭で書き換えているだけ.難しくない


○青木さんプレゼン
プログラマブルな電子楽器

Maxというソフトウェア
問題:最大発音数の問題.レイテンシのばらつきがある.落ちる

Maxの信号処理をFPGA上の回路へ変換する.
回路情報はマイクロSDに保存する

Sigboostの構成
Zynq-7010(ARM +FPGA)を使う


・HLS&FPGA勘所
ソフト屋がHDLを簡単に書ける環境は現状ない
FPGA化する必要がある部分だけFPGA化する
FPGAのターゲット領域

・midiglue
FPGAを使わない安価なプログラマブルな電子楽器

実演

●質疑応答●
Q.web editorにしないのはなぜか
A.1カ月で作るという目標をたてたため.マーケットサーベイであるため
デバイスの書き込みなのでそこそこ大変であるため

Q.言語は自分で作ったものか
A.*.nodeは自分たちの機構である

Q.FPGAで早くコンパイルを終わらせたい.使う部分が分けられれば,
 コンパイルが早くなるのでは?
A.キャッチアップはしている.今後採用する可能性がある

■まとめ
 FPGAを実装するのは苦労を伴うが,MulveryのようなRubyのみで開発できるようにする
 手法やSigboostのようにFPGAを活かしたプログラマブルな電子楽器など様々なアプロ
 ーチが行われている.

以上.