Fipsy検証環境のブロック図をざっくり解説する

Fipsyの検証環境の構成をざっくりまとめておきたいと思う。ArduinoPythonソースコードの中身まで読み解き、本質的な部分まで調べたいところだが、気乗りしないのでとりあえずできたことを書いておく。ちなみに、Mocoの解説だとPythonが何をしているのかわかりにくく、だいぶ苦戦した。

ブロック図にするとこんな感じ。

f:id:MasterKoda:20190102131102j:plain
Fipsy検証環境_ブロック図

まず、.jedファイルというJEDECファイル形式でRTL(FPGAに書き込むソースコード)を出力する。JEDECファイルの文法は決まっているようで、if文などで書かれたRTLをFPGAに焼くための結線情報がわかる形式になっている(人間が見て理解できる)。

.jedが出力できたら、次に、USBにデータを載せるためにBinary形式=.binに直す。

こちらのページにPythonのセットアップ方法が書かれているため、基本的には指示に従えば良い。

とはいえ、何をしているのか私にはさっぱりわからなかった。最終的には、

python FileChooser.py

コマンドプロンプト上で叩いて、FileChooserというスクリプトを呼び出し、GUIに従ってファイル選択などを行っていく。時系列で細かく説明するには結構めんどいので、こちらの環境立ち上げメモも参照されたい。

masterkoda.hatenablog.com

私がかかった罠は、Pythonを実行するという一般常識がなかったことに起因していた。まさかWindowsコマンドプロンプトからPythonが起動できるとは。また、書き込めているかどうかわからず、うーうーしていたが、Fipsyのアドレスが読み込めるあたりまで行ければだいたい動いているのは間違いなさそうだ。つまづいたのは、検証のためにソースコードの一部をいじったからで、動かないソースコードを書き込めた照明ができた時点でつまづいていた。うっかり。

ざっくりではあるが、こんな感じのブロック構成になっている。気が向いたら、詳細を丁寧に解説したいと思う。気が向くのは、このFPGAを使って面白いことができることがわかってからだろう。。。流石にLUTs数が小さすぎて、もう少し大きいFPGAを選びたいところ。

脳波測定デバイスの調査

自己能力開発、研究開発の一環として、脳波測定に興味を持っている。通常、疲れた、疲れていないと言った脳の状態は主観論に終始してしまうが、脳波を測定して客観的に評価をすることができれば、活動を改善することができる。これは仕事場での働きすぎ防止や、リモートワークでの集中度合い監視にも活かすことができるだろう。自分のビジネスを持ちたいという気持ちが強くあり、そのきっかけ作りとしては、非常に有効なものとなるだろう。

バイスはまだヘッドセット程度の大きさであるが、耳栓タイプのワイヤレスイヤホンぐらいまで小型化することができるとさらに応用例が広がるだろう。

脳波は数Hz程度の低周波であるから、デバイスの小型化が難しい側面もあるのではないかと思うが、何らかのブレイクスルーでスケールする道を選び出すことができるとありがたい。

応用分野は果てしなく広がる。教育、医療、ゲーミング。今それほどまでに浸透していない理由も器になるところだが、今後の発展のためも考えて、まずは手を動かしてみるのもいいだろう。

ググってみると、応用例の報告は研究段階が多いようだ。下記の記事でも検討されているが、「脳波を使って何かをコントロールする」という取り組みが主に取られているよう。ようは電子機器とのインターフェイスをキーボードやマウスではなく脳波にしようというのである。 第2回 「脳波」を真剣に科学してみる:未来のサービスを作る基礎技術|gihyo.jp … 技術評論社

脳波を測るのは、SDKまでセットで提供しているMindwaveのツールを使えば何の問題もなさそうだ。ただし、これをビジネス化するアイデアはあまり内容である。例えば、認知症の改善指標や、教育効果の指標、例えば音楽を聞くほうが集中できるのかどうかのような中2的な研究ですら、応用例として考えることはできるが、ビジネスにするのは難しい。とはいえ、個人的にはビジネスのみを考えるべきではないと思うし、本当に価値のあることならば如何にかこうにかビジネス化はできると信じている。今の世の中であれば、データを売るなんてことも考えられるだろう。

もう一つ、自分の考えの根幹にあるものは、改善をするためには評価が必要であるということだ。至極当然のことなのだが、こう言った原理的なことほど、世の中ではないがしろにされていたりする。定量化は万能ではない。例えば、素振り100回/日する少年と101回/日する少年では、どちらの方が上達が早いか明らかにするには、他の要素も抽出する必要がある。ただ、1000回/日する少年は、よっぽど適当な練習でない限り、確率的にかなり上達が早いと考えるのが自然である。

こう言った定量化が、脳波を用いるとできる。例えば、営業力も測ることができるようになるだろう。顧客を模擬した相手に脳波測定器をつけて、その感情を計測することで、営業力の指標の参考にできるだろう。コミュニケーション力、いわゆるコミュ力も同様である。ポイントは、人間の活動を定量化すべき、そして脳の働きは定量化できるということだ。

ここで注意したいことは、応用例の検討に終始しないことだ。あくまでも根幹技術を培うことに集中した方がいい。何故ならば、応用例は競争と荒廃を繰り返すからだ。根幹技術、コンピテンシーは廃れないものを意味する。

大きな枠で考えると、現象を「波」として捕らえられるものは多岐にわたるはずなのである。脳波しかり、木の生命活動も波として計測できるようだ。そのデータをいかにして計測して集約して活用するか、それがビジネスのタネになる。

とりあえずコイツを購入して、様子を見てみようと思う。控えめに考えても、仕事中の自分の状態を把握するためには絶好のデバイスだし、うまくいけば自分のビジネスにも繋がる。

FPGAで実装できる機能と必要なLUTsをざっくりまとめた

Lattice FPGAの活用を検討している。特にFipsyのような超小型FPGAアクセラレーション目的で活用ができないものかと模索している。FPGAは3cm*3cmぐらいのサイズが主流だが、Latticeは小型FPGAに特化している。IoTのエッジ用途を考えると、よほど小さくて消費電力が低くないと低くないと活用はできないから、Latticeは非常に優位な立ち位置にいると言えるだろう。

masterkoda.hatenablog.com

LatticeのReference Designは下記に公開されている。FPGAのデザインがここまで整理されて公開されているのは正直意外だった。LatticeとしてはFPGAが売れればいいので当たり前なのだが、設計資産を公開することはASICベンダーだったらあり得ないだろう。こういったオープンソース思考には感服するし、自分もそういった思考の持ち主でいたいと思う。

www.latticesemi.com

機能とLUTs

LUTs(ラッツと読むらしい)はFPGAにどれほどのロジックを詰め込めるか表した単位で、多ければ多いほどたくさんの機能が実装できる。Fipsyは256LUTsしかないため、どの程度のロジックが入れ込めるのかと思って調べて見たが、Reference Designはほぼほぼ使えない。ただし、グレードを少しアップグレードするだけで機械学習のようなリッチな処理までできるようになるので可能性の広がりは大きい。専門家には怒られるかもしれないが、ざっくりの値をまとめた。

Function vs LUTs
Function LUTs*1
LVDS converter 180
I2C Bus Master 200
ADC 400
Software Microprocessor 2000
H264 40k
Hand Gesture ?

イメージでいうと、MHzオーダー程度のインターフェイス処理については数百LUTsで実装可能。圧縮や機械学習のような力技の処理が必要な場合は数千LUTsオーダーが必要。

*1:全ておおよその数字