********************************************************************** セッションS2-a チュートリアル テーマ:FPGAを使ったシステム開発について考えよう 講師:大川 猛(宇都宮大学),安藤 友樹(名古屋大学) 日時:2014/8/29 9:00~10:20 参加人数:29名(終了時) ********************************************************************** --------------------スライド------------------------------------------ ■FPGAについて ・FPGAとはFiled Programmable Gate Arrayの略で書き換えが可能なハードウェアのこと ・利点 再構成可能であり,SWのバージョンアップのように修正可能 少量多品種の製品開発が可能 ・欠点 専用チップと比較すると性能では劣る(消費電力・周波数・面積効率) ・最近ホットなのはARMコアとFPGAを1チップに統合したもの 昔は別チップだったが1チップに統合したことで高速な通信が可能 ARMコアとFPGA上のソフトコアでヘテロマルチコア構成が可能 ■ARM+FPGAの利用事例 ・フェノクス(Phenox) 超小型の自律飛行ドローン XilinxのZynqを利用 ARMでLinuxアプリケーション,OpenCVという画像処理のライブラリ FPGAで画像処理,機体の制御処理 ・運転支援システム XilinxのZynqを利用 従来は3チップで構成されていた ARMとFPGAでは1チップで構成でき, ARMで処理しながら周りのHWロジックのところに専用回路をいれている ・モータ制御 ARMで制御アルゴリズムを実行 FPGAでモータを回す回路など ■FPGAを利用したシステム設計フロー ・概要 STEP1:アーキテクチャ構成の決定 どんなプロセッサ,専用HWを使うか STEP2:ソフトウェア&ハードウェア設計 SW,HW,その間の通信をそれぞれ設計 STEP3:コシミュレーション SWとHWの協調シミュレーション STEP4:合成と実行(テスト) 実際にFPGAに実装 ・個々のSTEP STEP1:アーキテクチャ構成の決定 FPGAベンダのGUIツールが充実している 基本的なIPは用意されており,GUIで選択して接続するだけで開発ができる STEP2:ソフトウェア&ハードウェア設計 ARM:OSをどうするか(Linux,RTOS,使わない) FPGA:高位合成ツールを利用 通信:SW-SW間,SW-HW間の通信を設計 最近はヘテロ間の通信が課題となっている STEP3:コシミュレーション SW:所謂シミュレータを利用 HW:HDLのシミュレータを利用 通信:Verilogなどのハードウェア記述言語から, 通信の仕組みが提供されているので上手く使って実現 STEP4:合成と実行 SW:コンパイラを利用 HW:FPGAベンダが提供するGUIツールを利用 HWはシミュレーションで動いても, 実機になるとクロック周波数などで動かなくなったりするので大変 ■GUIツールの実演 Xilinx社:Vivado 最近はベンダが無料でツールを提供している 主流はHDLの記述だが,ツールではブロックをつなげて設計ができる マイコンツールと同じような感じでできる SWの開発はEclipseで出来る Altera社:Qsys ライブラリでタイマーなどが提供されている ダブルクリックするだけで追加していける プロセッサとの接続もクリックで出来る FPGAはベースアドレスも自分で決められるなど自由度が高い ・FPGAに何かを期待してこのセッションに来てくださったのかと思いますが, そのアイデアをグループを作って共有して, ARMとFPGAを使ってどういうシステムを作ろうか, というアイデアをグループで1つ作ってみようという試みのワークをやってみます. --------------------ワーク------------------------------------------ ・グループ分け FPGA・組み込みシステムの経験に基いて, 経験者が散らばるように5~6人にグループ分け,自己紹介 (6班に分けたが,人数の関係上4班の人は他班に移動) ・ワーク内容 「ARMとFPGAを使ってどのようなシステムを作るか」 ・Q1 FPGAに期待することは?(どんなことが出来るか,してみたいか) 構成部品,システム,アプリケーション,抽象的な概念などのキーワードを それぞれ一人五個以上ポストイットに書き出す. ・Q2 FPGAで出来ないことは?(ソフトウェアで作った方が良いもの) 構成部品,システム,アプリケーション,抽象的な概念などのキーワードを それぞれ一人五個以上ポストイットに書き出す. ・Q3 ARM+FPGAで何をするか Q1で出たものをFPGA,Q2で出たものをARMでするように組み合わせたシステム グループ内でポストイットの共有をし,Q3のシステムを考える. **********3班の内容*********************************************************** ・Q1 FPGAに期待することは? 光る,動く,ガジェット,高速,アクセラレータ,低消費電力,簡単な開発,ルータ, SWのアップデートが難しい環境,安い,リアルタイム性 ・Q2 FPGAで出来ないことは? 書き換えが必要で大量生産,規模が大きい物,逐次,1回で十分な処理,スマホアプリ, とにかく早く試してみたいもの,シミュレータ,DBが大きい物,柔軟性が必要なもの ・Q3 ARM+FPGAで何をするか アプリ,ガジェットとか良さそう スマホアプリだとすると何をFPGAでやるのか スマホでマウスになるとか面白そう←もうあるのでは タッチパネルで指を判断してキーボードになるとか タブレットでキーボードが良いんじゃないか FPGAで画像処理,ソフトはGUIとか ******************************************************************************* ・ポスター作成 グループ毎に考えたシステムのポスターを作成. 新製品の開発を任されたという仮定で. ・ポスター発表(各班一分) ○1班 議事録くんというICレコーダに音声を認識して, 文字を出力できるようなものを考えたいと思います. FPGAで作る部分っていうのは, フーリエ変換とかの音声処理の部分をは繰り返し処理なので, これはFPGAで出来ると思いました. ソフトウェアの部分としては,UIの部分だったり, 音声処理したものを実際に認識するという部分はソフトウェアだと思います. 新製品のポスターということなので, こういうので重要な要素は例えば何かって言うと, 何時間動作するのかということがあり, 例えば10時間動作しますということを主張します. ○2班 僕らのグループは可視性音声エフェクターっていうことで, FPGAでは音声データとか物理的なデータの処理を行って, ARMの方でインターフェースとして, データがどれだけ歪んでいるのかを見えるようにして, 目で見て音声データを変えれるような商品が出来ないかなと考えました. ○3班 僕ら3班は俺のキーボードです. 基本的にはキーボードは形が決まっていて打ちにくい. で,それがタブレットがあって,FPGAを持って,指紋をなんとなく分かってくれたら, 自分が今人差し指でこう叩いたなっていうのを認識して, ここがキーボードでいいんですねとか分かってくれて, 好きな形のキーボードが作れますっていうのを想像しました. この中でのARMっていうのは,キーボードの見た目とか, ここに表示するキーボードとかの見た目とかを出したり,GUI的なものを出したり, あとはタブレットのOS部分とかをやります. FPGAは叩かれた時のどの指で叩いたのかっていう, ちょっと重い処理をやってくれるというのを考えました. ○5班 5班は電子制御ブレーキシステムです. まずブレーキシステムにFPGAを搭載するっていうことで, HWを変更するっていうのと, ARMプロセッサっていうのは, ブレーキシステムの制御する部分をARMプロセッサで出来ると考えました. FPGA部分はブレーキの計算が複雑なものをFPGAで実装することで, ブレーキシステムを実現出来ると考えました. (6班はまだ出来上がっていないので先に7班の発表) ○7班 7班のまとめた結果としては,3D絵日記ですね. FPGAでは画像処理とか高速な処理,並列処理,音声認識とか そういったところの得意さを活かすというところと. あとARMの方ですね, こちらは自然言語処理,こちらは自動でタイトル作成とかタグ付けをするとか, さらにIOT,インターネットオブシングスということで, 自動でクラウドにバックアップしたりとか, そういったところをSWで活かしていくようなアプリケーションという内容です. ○6班 我々はなかなかアイデアが出なくて苦労したんですけども, プログラムを早く実行できるコンピュータっていう なんかよくわからないんですけども, 学生さんが車の実際の計測データを, MATLABを使った,MATLABから生成したCプログラムで処理するっていう. 研究の中でそういうことをしてると,凄くデータの処理に時間が掛かるということで. MATLABからはかせたCプログラムっていうことで, 一個のプログラムを早く動かせるコンピュータ. 普通のコンピュータっていうのはいろんなプログラムを同時に実行したり, プログラム差し替えたりして実行するわけですけど. なんかこの仕事をしたいっていうときに, あまり高くなく,早く実行できるコンピュータっていうのが作れそうだなっていうことを 考えました. 以上