15.06.27 実録 ソフトウェア開発者が fpgaを独習した最初の3歩@rtlを語る会(9)

31
実録 ソフトウェア開発者が FPGA を独習した最初 3 RTL を語る会 (9) 2015/06/27 @muo_jp

Upload: kei-nakazawa

Post on 08-Aug-2015

1.088 views

Category:

Technology


6 download

TRANSCRIPT

Page 1: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

実録 ソフトウェア開発者が FPGAを独習した最初の3歩RTLを語る会(9) 2015/06/27 @muo_jp

Page 2: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

自己紹介(@muo_jp)ソフトウェア系

Webな人(Java, ActionScript2/3, JavaScript, PHP, MySQL)→Androidプログラマ(Java)→Android/iOSなひと(Java, Objective-C, C++, C#)

仕事: スクールアイドル系プログラマ

好きな言語: C#

Page 3: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

ソフトウェア開発者が FPGAを独習する最初の3歩

Page 4: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第-2歩

Page 5: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第-2歩: 暗黒の時代サーバにFPGA統合を妄想していた-2010ぐらい

2010年にDE0を買った

Hello, world!的なものから先にほぼ進まなかった

学び: VHDL流派の人々とVerilog流派の人々、入り乱れてるので両方読めないと話が始まらなさそう

Page 6: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第-1歩

Page 7: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第-1歩: 文明のきざし2013-2014付近。ZedBoardにすごい未来を感じる

あんまりお金かけたくないな、と思って2014年の夏にMicroZedを購入した

ZedBoardのチュートリアルを軽くやっていけばどうにかなるじゃろ→圧倒的なI/O力差で挫折

学び: 初心者はMicroZedよりも大人しくZedBoard買ったほうがいい。結局JTAGケーブル買ったら大差ない値段

Page 8: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第0歩

Page 9: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第0歩: 型を学ぶ

ARM Cortex-A9×2! ZynqでワンチップLinux on FPGA (Design Wave) – 2014/11/12

出た当初はこの本高いなぁ、Web上にある情報でなんとかならないかなぁ、と思っていた→諦めて買った

ほんと多彩なトピックをカバーしてる。結果は http://www.muo.jp/2015/02/arm-cortex-a92-zynqlinux-on-fpga150.html に書いた(誤植多かったので別途まとめた)

学び: ツール群の扱い方がざっくりと身につかないと、他のことが頭に入ってこない。まずはこういう本に従ってひと通りを体験するの大事(しかしISEベース...!)

Page 10: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

学び: Zynq方面の雰囲気「ARM無しのFPGA単体で使いたいんですけど?」→「Artixでも使えば^^」

Linuxを使うか否かは別として、チュートリアル的にARMは普通使うぽい

http://news.mynavi.jp/articles/2012/02/22/zynq-7020/002.html

ARM側の電力削りたければ100MHzでも10MHzでも好きにクロック落とせ

Cortex-R系はひとまずやる気ない(後にMPSoCではCortex-A53ベースとCortex-R5ベースの2ラインに割れたのも面白いところ)

RTOSが必要ならSMPではなくAMP構成にしてARM側の1コアを低クロック動作させて使え

Page 11: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第0.5歩

MicroZedにはGPIOが足りないので自分で補う

Page 12: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

パーツ集め

MicroZedの拡張ヘッダは100pinsの高周波回路用

DigiKeyに売っていたので輸入

さすがにいきなり基板起こすのは大変なのでユニバーサル化の変換基板を探した→サンハヤトのがあった

Page 13: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

形になった

ハンダが荒い

Page 14: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
Page 15: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

学び: やっぱりMicroZedよりもZedBoardを買ったほうがいい

Page 16: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

今のところテスタを当てて電圧測ってキャッキャしてます

Page 17: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第0.75歩

Page 18: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第0.75歩: Verilogに馴染むVerilog-HDL基礎文法最速マスター を読む

「CPUの創りかた」で紹介されるIC群を作ろうというざっくりした話

わかりやすい。怖がらずにVerilogを読めるようになる

HDL設計入門 - Verilog HDL キーワードを漏らさず知れる

学び: 構文的な話はWebでいいかな、という読みで大体okだった。実践的なVerilogの書き方についての本欲しい

Page 19: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第1歩

Page 20: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第1歩: 公式リソースで学ぶ

http://zedboard.org/sites/default/files/documentations/MicroZed_GettingStarted_v1_1.pdf

QSPIやmicroSDからLinuxを起動し、PS側に生えているGPIOを叩いてLED/スイッチ制御を試した

学び: Railsの「5分でこれ出来るよ!!」という甘いレールに乗ってる感覚。ここと実用物は直結しない

Page 21: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第2歩

Page 22: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第2歩: 続 公式リソースで学ぶ

Avnetのチュートリアル(PDF)に従ってARM側にELFのバイナリを転送して実行する

Xilinx SDKへ出した先は普通のCで嬉しい!となる。hw connect armやると本当にCPU止まるところで感動。なお、まだHDL出てこない

学び: Xilinx SDKへ出力後の叩き方は普通にCなのでとても助かる。名前付けも参考になる。Zynq本も生きてくる

Page 23: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第3歩

Page 24: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第3歩: PS側からLチカする

Linux上だと何かと大変というのが前段で分かっているのでCPUを生で触る

第2歩でXilinxのヘッダやサンプル実装をあちこち眺めた分、MIOの叩き方イメージなどが湧いていた

試行錯誤

Page 26: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
Page 27: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

第3歩: サンプルであっさり解決

XilinxのZynq向けBSP、今のところとても素直な動きをするので好み

Xilinx SDKから普通にブレークポイント止まるしメモリダンプも効くので、AndroidのNDKより楽

MIOのバンク(0-15, 16-53)とXGpioPsのバンク配置が違うのは謎

学び: ようやく「試行錯誤すればどうにかゴールへ辿り着ける」感じになってきた。後はXilinxのanswersでどうにかなりそう

Page 28: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

目下やっていること

Page 29: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

ARMv8機能のバックポート

時代はARMv8

Zynq UltraScale+ MPSoCあたりだとCortex-A53積んでいるの、よいですね

ZedBoardシリーズはCortex-A9系、当然ARMv7

ARMv7でもAESアクセラが欲しい!

Page 30: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

C#からの高位合成Vivado HLS側でほどよく他言語利用の枠組みを提供してほしい・・・

LLVM-backend相当の作りになっていてほしい(情報を集め中)

C#をC++に変換するアプローチで良いのかも

自社が出しているOSSの一部にC#→C++変換ツールがたまたまある

このアプローチだと、sourcemapっぽいのは必須

Page 31: 15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)

まとめ

素人はMicroZedよりもZedBoardを買うべき

Vivadoベースの入門書整備されるとよさそう

RTLの独習はできるけれど実用面の壁ありそう

VivadoHLSにC#コード食べさせたい