FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

あけましておめでとうございます 2018

あけましておめでとうございます。本年も、「FPGA開発日記」をよろしくおねがい致します。

f:id:msyksphinz:20171231133926p:plain:w300

昨年は、

など、様々なことに手を出した一年でした。

今年の目標として、

  • 引き続きRISC-Vをベースとしたエコシステムの勉強。自分でOSSへの貢献をしていきたい。
  • Vivado-HLSを使って、いろんなシステムを作っていきたい。ディープラーニングなども、Vivado HLSを使って勉強していきたい。
  • ディープラーニングなどの理解を深め、RISC-Vエコシステムとの連携にも挑戦していきたい
  • モバイルアプリケーションやVoice Kitを活用して、面白いものを作っていきたい。
  • より多くの人に出会いたい。去年はRISC-Vを通じて多くの人々と知り合えた。今年も、RISC-Vと言わず、様々なことにチャレンジして、コミュニティを広げていきたい。

去年の目標も継続しているけども!

頑張っていきたいと思います。よろしくお願いします。

年末だしブログの情報を回収してワードクラウドを作ろう2017

年末年始なので、今年一年はどうだったかな、ということでまとめてみよう。

今年の元旦には、こんな目標を立てていたのだった。

msyksphinz.hatenablog.com

  • ZedBoardを用いて、RISC-VとARMの連携など(オペレーティングシステム、ソフトウェアスタックも含む)
  • Vivado-HLSを使った実装の発展
  • TensorFlowなどの理解を深める
  • モバイルアプリケーションの開発に挑戦してみたい

あれれ!ほとんど出来て無いじゃないの!

  • ZedBoardを用いて、RISC-VとARMの連携など(オペレーティングシステム、ソフトウェアスタックも含む) → RISC-Vのエコシステムの理解は進んだ。発表も2件行った。
  • Vivado-HLSを使った実装の発展 → × 全然できていない。
  • TensorFlowなどの理解を深める → ディープラーニングについての理解は進んだ。C言語での実装もやってみた。
  • モバイルアプリケーションの開発に挑戦してみたい → × 全然できていない。

ブログの記事数

今年は、この記事を含めて349記事を書いた。去年が308記事なのでかなり伸びている。今年はどうしたんだ?暇か?

Jan Feb Mar Apr Mar Jun Jul Aug Sep Oct Nov Dec Total
2017 27 21 30 24 33 30 30 29 29 31 33 32 349
2016 32 31 22 28 25 20 23 19 23 30 29 26 308
2015 20 27 17 6 28 29 35 31 44 31 34 27 329

このブログ自身のこと

11月から12月にかけて、 RISC-V WorkshopやRISC-V メニーコア、Design Solution ForumやRISC-V Day 2017 での発表を行わせていただき、様々な方とお話しすることが出来た。

  • 2016/01/01のフォロワー数: 5
  • 2016/12/31のフォロワー数: 86
  • 2017/12/31のフォロワー数: 292

なんじゃこりゃ!すごい増加だ。さらに、今年のブログのアクセス数をグラフにしてみた。

f:id:msyksphinz:20171230234957p:plain

2017年12月はすごい事になっている。やはりRISC-Vに注目が集まった年であるということが出来る。

12月のAdvent-Calendarチャレンジ

12月はAdvent-Calendarに苦しんだ月だった。ただ皆さんのご協力のおかげで無事に完走。ありがとうございます。

qiita.com

2017年のワードクラウド

今回はPythonを使って、今年1年のタイトル一覧を使って、MeCabを使ってワードクラウドを作った。 へんな文字が出てくるので、filterで処理して切り落としている。

f:id:msyksphinz:20171230235513p:plain

github.com

mecab_wordlist = mecab_analysis(text.decode('utf-8'))
mecab_wordlist = filter(lambda x: unicode(x, 'utf-8') != unicode('みる', 'utf-8'), mecab_wordlist)
mecab_wordlist = filter(lambda x: unicode(x, 'utf-8') != unicode('やっ', 'utf-8'), mecab_wordlist)
mecab_wordlist = filter(lambda x: unicode(x, 'utf-8') != unicode('する', 'utf-8'), mecab_wordlist)

というわけで、来年もよろしくお願いします。

Design Solution Forum とRISC-V Tokyo 2017 の発表資料を公開しました

今年開催されたRISC-Vに関係するイベント、 "Design Solution Forum 2017" および "RISC-V Tokyo 2017" で使用した発表資料を公開しようと思います。

Design Solution Forumについては既に登録者限定で公開されているけど、特に隠す必要はないので公開してしまう。

RISC-V Tokyo 2017の資料については、開催後に riscv.tokyo にアップロードされると聞いていたのだけれども、一向にそんな感じがしないので勝手に公開してしまえ、という感じ。 まあ riscv.org でもワークショップの全資料が公開されているからいいんじゃないでしょうか。

RISC-V Tokyo 2017 の資料については日本語版と英語版があり、両方公開します。 たぶん英語版はサブディスプレイで表示してあったと思う。英語の正しさについては、かなり無保証...

注意事項としては、最初の自己紹介の部分は不要なので削除している、バックアップスライドも削除している。

また、資料内の細かい点として、RoCCを使ったアクセラレータの性能測定では、

  • Design Solution Forum 2017: Dot Product Accelerator で4倍以上高速化
  • RISC-V Tokyo 2017: Dot Product Accelerator で8倍以上高速化

と差分があるけども、Design Solution Forumの時は対象データを64-bit整数、RISC-V Tokyoの時は対象データを32-bit整数として2-way SIMDとしたのでこのような差が出ている。

あまり大したことは書いていませんが、興味がある方はご覧になってみてください。

さわって分かるオープンソースプロセッサ「RISC-V」の世界 (Design Solution Forum 2017)

RISC-V オープンソース ハードウェア 概説 (RISC-V Tokyo 2017)

RISC-V オープンソース ハードウェア 概説 英語版 (RISC-V Tokyo 2017)

f:id:msyksphinz:20171227232154p:plain

RISC-Vの連載をInterface誌に寄稿しました(2018年2月号から)

CQ出版のInterface誌2018年2月号から、RISC-Vについて連載を寄稿しました。タイトルは、「オープンソースCPU「RISC-V」の研究」です。

結構な文章と図を寄稿したのだけれども、紙面の都合上で連載になったらしい。何回続くのかはわかりませんが、ゆっくりとお付き合いいただければ。

ちなみに今月号は歴史と登場の背景なので、技術的にはあまり面白くない。本当はCPUと特許の歴史とかもっと調べて深堀したいんだけどなあ。 SuperHモトローラの話とか、すごく面白そうだ。

ちなみにストーリーとしては、大きく分けて

  1. RISC-Vについて
  2. RISC-Vの仕様について
  3. HiFive1を使ってみる
  4. Rocket-Chipを使ってみる

という感じで寄稿したはず。まあ、どのように編集されるかは、編集者さんにお任せしているので、良く分かりません。

f:id:msyksphinz:20171226225250p:plain

学生の頃、CQ出版に寄稿すると言えばかなりのレジェンドであると聞かされていたので、まさか自分がこのように原稿を書くことになるとは思っていなかった。 これで少しでもレジェンドに近づけるかなあ。

まだまだ自分はひよっこだし、文章力もいまいちなので、読みにくい部分はあると思いますがよろしくお願いします。

あと、何か月も連載しているとあらかじめ提出した原稿が古くなるので、その辺は随時更新していかなければならないし、このブログを通じて小話のようなものも書いていければ良いかなと思う。 特にこういうStep by Stepの話って、何か月も引っ張るような話でもないけど、まあ特集じゃないので文章を省略する必要もないしじっくり解説できる。 内容的に古くなったら更新していけばいいし、新しいネタがあればちょいちょい突っ込んでいけばいいかもしれない。

というわけで、みなさんバシバシ買ってください!

「半導体・ハードウェア開発 2017」Advent Calendarが終了しました

qiita.com

12/01から始めた「半導体・ハードウェア開発 2017」Advent Calendar、全ての日でエントリが埋まり、無事に終了しました。

まずはご協力頂いた皆様、どうもありがとうございました。皆様のご協力がなければ、25日全てを埋めることは不可能でした。改めて感謝致します。

25日の日程のうち、私は10日を担当しました。途中で仕事が忙しくなって結構苦しくなりましたが、何とか完走できてよかった。 ご協力してくださる方は非常にうれしかったですが、やはり去年のAdvent Calendarにも書いてくださった方が多いですね。 そういう意味では、私自身あまり進化していないかもしれない。。来年もやるかどうかは微妙ですね。

  • 終結果(2017/12/26 0:00時点)
    • カレンダー数 : 593
    • 25日完遂カレンダー数 : 230/ 593
    • 購読者数ランキング 114 / 230

ランキングで言うと非常に中途半端ですが、でも593カレンダーのうち完遂できたのはわずかに230カレンダーですので、その中で114位というのはかなり頑張った方だと思っています。

平日は夜中に頑張れますが、休日は別の用事もあったりして苦手で、他の方が支援して下さったのはありがたかったです。

今年はRISC-Vが徐々に知名度が上がってきたかなと思います。RISC-V関係のイベントで2件発表もさせてもらいました。 が、RISC-Vだけではネタもあまりないので、今年は少し範囲を広げた、という次第です。

やはり、去年と比べて機械学習や高位合成、などの話題が増えた、という印象ですね。

Google Voice Kitを使ってみる(3. 音声→文字を認識するアプリケーションの作成)

Google Voice Kitを使ってみる、続き。 前回、アプリケーションが動作するようになったので、自分で音声認識のプログラムなどを作ってみたい。

以下のサイトを参考にして、プログラムを作成した。ちなみ、Google Speech APIを使用するために課金の情報を入力する必要がある。 1年間の無料評価ライセンスがあるのでそれを使用しているが、1年間の間にちゃんとしっかり活用しないとなあ。。。

aiyprojects.withgoogle.com

  • /home/pi/src/motion.py
#!/usr/bin/env python3

import aiy.audio
import aiy.cloudspeech
import aiy.voicehat

def main():
    '''Start voice recognition when motion is detected.'''
    button = aiy.voicehat.get_button() 
    recognizer = aiy.cloudspeech.get_recognizer()
    recognizer.expect_phrase('repeat after me')
    aiy.audio.get_recorder().start()
    while True:
        print('Press the button and speak')
        button.wait_for_press() 
        print('Listening ...') 
        text = recognizer.recognize()  # 音声認識を実行する。
        print(text)
        aiy.audio.say('You said ')
        aiy.audio.say(text)

if __name__ == '__main__':
    main()

サンプルプログラムにはaiy.audio.say('You said ', text)と書いてあるが、実行中にエラーメッセージが出てしまうので修正しなければならなかった。

Press the button and speak
Listening ...
repeat after me
Unknown language: repeat after me
Valid languages:
en-US
en-GB
de-DE
es-ES
fr-FR
it-IT

Usage: pico2wave <words>
  -w, --wave=filename.wav     Write output to this WAV file (extension SHOULD be .wav)
  -l, --lang=lang             Language (default: "en-US")

Help options:
  -?, --help                  Show this help message
      --usage                 Display brief usage message
Traceback (most recent call last):
  File "./src/motion.py", line 22, in <module>
    main()
  File "./src/motion.py", line 19, in main
    aiy.audio.say('You said ', text)

これを実行して、音声認識を実行する。

$ ./src/motion.py 
Press the button and speak
Listening ...
what time is it now     # 認識結果
Press the button and speak
Listening ...

ある程度きちんと認識できる。ただし、"Turn on the light", "Turn off the light" の「ターン」の発音が下手くそすぎて認識されない。 スマートフォンGoogleに喋らせるとうまく認識するので、これは日本人の発音の問題かなあ。 日本語のAPIがきちんと使えるようになればいいのだが。

f:id:msyksphinz:20171224232547p:plain

アプリケーション実行中はボタンのLEDが点灯する。格好いい。

関連記事

Google Voice Kitを使ってみる(2. サンプルプログラムの実行)

Google Voice Kitを使ってみる、続き。 前回、組み立てが完了したので次にソフトウェアをダウンロードして実行する。

まず、MagPiのウェブサイトからISOファイルをダウンロードする。 MicroSDカード(4GB以上?)を用意し、EtcherでISOファイルを書き込む。

aiyprojects.withgoogle.com

f:id:msyksphinz:20171223223403p:plain

SDカードをRaspberry-Pi3に差し込み、ブートすると、ディスプレイにデスクトップ画面が現れる。

f:id:msyksphinz:20171223230907p:plain

ワイヤレスLANを接続する。

f:id:msyksphinz:20171223235114p:plain

Voice / Microphone テストを実行しよう。"Check Audio"プログラムをクリックする。

f:id:msyksphinz:20171223235428p:plain

マイクから、"Front, Centre"と聞こえる。次に、"Testing 1,2,3..." とスピーカーに喋りかけると、その声がリピートされる。

成功だ!ちゃんと動作していることを確認できた。

関連記事