SlideShare a Scribd company logo
FPGAエアプ勢が
FPGA触り始めた話
Yuhei Hayashi
iehuuy
つまり
F P G A エ ア プ
背景
・チームでFPGA機能付きNICを使って開発とかしてたよ
・デジタル回路自体の知識はある
・いつもそこそこ解ってそうな顔で発言
・SoftwareとHardwareの協調! (ドヤァ
・大学時代に授業で習ってちょっと使ったことはあるレベル
・機能ブロック図書いて満足しちゃう
・HDL? OpenCL? なにそれおいしいの? ^q^
ただ実際は…
理想
FPGAアクセラレーター
PAC N3000
触ってみてこうなればいいなという理想
・仕事面
FPGA開発の勘所をつけたい
設計⇒実装⇒評価の流れ
ワシが考えた最強の回路をぱぱっと試しに作りたい
FPGAアクセラレーターでパケットを好きにごにょごにょ
・趣味面
周辺回路買ってきてアイデア実現するDIYのスキルつける
趣味で没頭して
作ってみたいものたち
・評価ボード(DE10-Standard) 買う
・本読んで,設計⇒実装⇒デバッグの基本的な流れの習熟
・付属マニュアル読んで, SoftwareとHardware連携方法の習熟
・回路間標準IF(Intel Avalon)の習熟
・オリジナル回路作成
やったこと(2020年3月末~)
DE10-Standard
6万円くらい
特徴
・FPGA部分とHPS部分に分かれてる
・HPSのマイクロプロセッサ上でLinuxが動く
・IFが割と豊富
基本的な流れの習熟
・物を揃えて写経すればHDL解らなくても動く物が一応作れる
・開発環境の整え方、波形によるデバッグ、簡単な回路設計、
簡単な周辺回路の作成、CPUバスへの接続などなどが体験できる
・この本が無いと詰んでた感はある
・開発環境のverを合わせないと痛い目みるよ(^ ^)
・誤植が原因で詰まったときはイラッとした
・回路記述言語のVerilogの文法とか学べる本
・基本的な回路(カウンタとかセレクタとか)の記述例も学べる
・普段Cとかpythonとか触ってる人は、ちょっと癖のある書き方
・デジタル回路とか知識ある人なら、割とイメージ沿った素直な文法
SoftwareとHardware連携の習熟
・何か本で学びたかったが、まとまった本が無さそう
仕方なくマニュアル(英語)で学ぶことに…
・HPSのマイクロプロセッサ上で動くLinuxのアプリからFPGA
に接続されてるLEDを制御する、という流れ
・流れを追うだけならReference Designとかサンプルコードが
あるので簡単.追うだけならね…
流れを一般化すると…
・Memory-MappedなFPGA周辺回路を設計,実装します
・周辺回路をバス接続しAXI Bridge経由でCPUに繋ぎます
・周辺回路用のC言語ヘッダを生成します
・周辺回路のアドレスやスペックを意識したプログラムを書きます
・やっと動きます
バスの理解や組み込みの知識が無いとだいぶ理解がしんどい
LED
pio
LED
ctlAXI Bridge
Intel Avalon-MMの習熟
Avalonは回路間IFの業界標準
Avalon-MMはMemory Mapped IFの業界標準
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/mnl_avalon_spec.pdf
CPU
周辺回路1
Avalon-MM bus
周辺回路2
クロック
アドレス
データ有効位置
読込命令
書込命令
待ち依頼
読込データ
信号の一例
書込データ
レスポンス
Master
Slave
Slave
(なんとか)オリジナル回路作成
みんな大好きFIZZBUZZ
Softwareが回路に数値をwrite
組み合わせ回路でfizzbuzz判定
Softwareからreadして判定結果を読み出せる
★FPGA側
・avalon-MMはとりあえず必要な信号だけ定義
・除算器はintelのIP使った.結構簡単に組み込めた
・IF向かいの必要回路は、結構テンプレな感じ
・内部のロジックでオリジナル感が出てくる
・仕様が定義できたら後は作業感
★Software側
・コアロジック以外はほぼおまじない
・addressにポインタアクセスしてread/writeする
Memory-Mappedなのでもちろんメモリアクセスす
るのと同じ感覚で触れる
・やっぱFPGAだから爆速なのか?とか思ったが
Softwareだけでfizzbuzzやったのに比べそんなに速く
ならなかったというオチ
バスアクセスとかのオーバーヘッドがデカい?
https://github.com/yuheihayashi/fizzbuzz_fpga_io
・設計は命
デバッグが大変すぎるので、設計が下手だと手戻りがデカい
IF仕様は標準があるので素直に従うのでおk
内部ロジックは素直にintel純正の既存IP使ったほうが安心
オレオレロジック作るなら、細かい単位で設計⇒コーディング⇒デバッグしておいたほうが吉
・コーディングはそこまで難しくない
設計仕様に沿って素直に書くだけ
・デバッグがやばい大変.
コンパイルに時間がかかるので気軽にTry and Errorができない…
RTLシミュレーションとかで早めにバグ潰さないと死ぬ
・基礎は一通り習熟できたので、時間とモチベがあればいろいろなものは作れそう
特にモチベが…
・やっぱり動くと嬉しい.エアプダメゼッタイ
・先生欲しい!誰か詳しい人いませんか!?
・今後はOpenCLとかでラクしてみたい
・Avalon-STの習熟してパケット処理したい
わかったこととか

More Related Content

PDF
道具を磨き続ける
PDF
Hachioji.pm15
PDF
NetBSD/evbarm (APC9750) への道
PPTX
Jjug ナイト・セミナー くわっちょ 20140822
PDF
PHP-MLを使用して気軽に機械学習にトライしてみる
PDF
Lチカからはじめるfpga入門
PDF
Introduction of FPGA
PDF
[DL Hacks]FPGA入門
道具を磨き続ける
Hachioji.pm15
NetBSD/evbarm (APC9750) への道
Jjug ナイト・セミナー くわっちょ 20140822
PHP-MLを使用して気軽に機械学習にトライしてみる
Lチカからはじめるfpga入門
Introduction of FPGA
[DL Hacks]FPGA入門

Similar to FPGAエアプ勢がFPGA触り始めた話 (20)

PPTX
研究者のための Python による FPGA 入門
PDF
re:Invent 2017 で FPGA に入門してみた
PDF
OpenCAPI meetup 20180702
PPTX
FPGAことはじめ
PDF
ACRi_webinar_20220118_miyo
PPTX
FPGAって、何?
PDF
ソフトウェア技術者はFPGAをどのように使うか
PPT
20140310 fpgax
PDF
ICD/CPSY 201412
PDF
ソフトウェア技術者から見たFPGAの魅力と可能性
PPTX
Kyoto dev caffe
PDF
FPGA+SoC+Linux実践勉強会資料
PPTX
$30で始めるFPGA
PPT
FPGA
PPTX
Fpga programming introduction
PDF
FPGA・リコンフィギャラブルシステム研究の最新動向
PPTX
Starc verilog hdl2013d
PDF
FPGA startup 第一回 LT
PDF
FPGAをロボット(ROS)で「やわらかく」使うには
PDF
研究者のための Python による FPGA 入門
re:Invent 2017 で FPGA に入門してみた
OpenCAPI meetup 20180702
FPGAことはじめ
ACRi_webinar_20220118_miyo
FPGAって、何?
ソフトウェア技術者はFPGAをどのように使うか
20140310 fpgax
ICD/CPSY 201412
ソフトウェア技術者から見たFPGAの魅力と可能性
Kyoto dev caffe
FPGA+SoC+Linux実践勉強会資料
$30で始めるFPGA
FPGA
Fpga programming introduction
FPGA・リコンフィギャラブルシステム研究の最新動向
Starc verilog hdl2013d
FPGA startup 第一回 LT
FPGAをロボット(ROS)で「やわらかく」使うには
Ad

FPGAエアプ勢がFPGA触り始めた話