狠狠撸

狠狠撸Share a Scribd company logo
実録 ソフトウェア開発者が
FPGAを独習した最初の3歩
RTLを語る会(9) 2015/06/27
@muo_jp
自己紹介(@muo_jp)
ソフトウェア系
Webな人(Java, ActionScript2/3, JavaScript, PHP,
MySQL)→Androidプログラマ(Java)→Android/iOSなひ
と(Java, Objective-C, C++, C#)
仕事: スクールアイドル系プログラマ
好きな言語: C#
ソフトウェア開発者が
FPGAを独習する最初の3歩
第-2歩
第-2歩: 暗黒の時代
サーバにFPGA統合を妄想していた-2010ぐらい
2010年にDE0を買った
Hello, world!的なものから先にほぼ進まなかった
学び: VHDL流派の人々とVerilog流派の人々、入り乱れて
るので両方読めないと話が始まらなさそう
第-1歩
第-1歩: 文明のきざし
2013-2014付近。ZedBoardにすごい未来を感じる
あんまりお金かけたくないな、と思って2014年の夏にMicroZed
を購入した
ZedBoardのチュートリアルを軽くやっていけばどうにかなる
じゃろ→圧倒的なI/O力差で挫折
学び: 初心者はMicroZedよりも大人しくZedBoard買ったほうが
いい。結局JTAGケーブル買ったら大差ない値段
第0歩
第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ベース...!)
学び: 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コアを低クロッ
ク動作させて使え
第0.5歩
MicroZedにはGPIOが足りないので自分で補う
パーツ集め
MicroZedの拡張ヘッダは100pinsの高周波回路用
DigiKeyに売っていたので輸入
さすがにいきなり基板起こすのは大変なのでユニバー
サル化の変換基板を探した→サンハヤトのがあった
形になった
ハンダが荒い
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
学び: やっぱりMicroZedよりも
ZedBoardを買ったほうがいい
今のところテスタを当てて
電圧測って?????してます
第0.75歩
第0.75歩: Verilogに馴染む
Verilog-HDL基礎文法最速マスター を読む
「CPUの創りかた」で紹介されるIC群を作ろうというざっくり
した話
わかりやすい。怖がらずにVerilogを読めるようになる
HDL設計入門 - Verilog HDL キーワードを漏らさず知れる
学び: 構文的な話はWebでいいかな、という読みで大体okだっ
た。実践的なVerilogの書き方についての本欲しい
第1歩
第1歩: 公式リソースで学ぶ
http://zedboard.org/sites/default/?les/documentations/
MicroZed_GettingStarted_v1_1.pdf
QSPIやmicroSDからLinuxを起動し、PS側に生えてい
るGPIOを叩いてLED/スイッチ制御を試した
学び: Railsの「5分でこれ出来るよ!!」という甘い
レールに乗ってる感覚。ここと実用物は直結しない
第2歩
第2歩: 続 公式リソースで学
ぶ
Avnetのチュートリアル(PDF)に従ってARM側にELFのバイ
ナリを転送して実行する
Xilinx SDKへ出した先は普通のCで嬉しい!となる。hw
connect armやると本当にCPU止まるところで感動。な
お、まだHDL出てこない
学び: Xilinx SDKへ出力後の叩き方は普通にCなのでとて
も助かる。名前付けも参考になる。Zynq本も生きてくる
第3歩
第3歩: PS側からLチカする
Linux上だと何かと大変というのが前段で分かってい
るのでCPUを生で触る
第2歩でXilinxのヘッダやサンプル実装をあちこち眺め
た分、MIOの叩き方イメージなどが湧いていた
試行錯誤
惭颈肠谤辞窜别诲冲贬奥冲鲍骋冲惫1冲6.辫诲蹿より
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
第3歩: サンプルであっさり
解決
XilinxのZynq向けBSP、今のところとても素直な動きをするので
好み
Xilinx SDKから普通にブレークポイント止まるしメモリダンプも
効くので、AndroidのNDKより楽
MIOのバンク(0-15, 16-53)とXGpioPsのバンク配置が違うのは
学び: ようやく「試行錯誤すればどうにかゴールへ り着ける」
感じになってきた。後はXilinxのanswersでどうにかなりそう
目下やっていること
ARMv8機能のバックポート
時代はARMv8
Zynq UltraScale+ MPSoCあたりだとCortex-A53積ん
でいるの、よいですね
ZedBoardシリーズはCortex-A9系、当然ARMv7
ARMv7でもAESアクセラが欲しい!
C#からの高位合成
Vivado HLS側でほどよく他言語利用の枠組みを提供してほし
い???
LLVM-backend相当の作りになっていてほしい(情報を集め中)
C#をC++に変換するアプローチで良いのかも
自社が出しているOSSの一部にC#→C++変換ツールがたまたま
ある
このアプローチだと、sourcemapっぽいのは必須
まとめ
素人はMicroZedよりもZedBoardを買うべき
Vivadoベースの入門書整備されるとよさそう
RTLの独習はできるけれど実用面の壁ありそう
VivadoHLSにC#コード食べさせたい

More Related Content

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