FPGAを使ってみよう
とある勉強会資料
はじめに
 今日はZyboを使って実際にVivadoで合成しながら動かしてみるよ!
最初にハードウェアの話
 パソコンのソフトウェアは、パソコンと言うハードウェアの上で動く
⇒ パソコンのハードウェアを知らないと良いソフトが書けない
 FPGAのソフトウェアは、FPGAと言うハードウェアの上で動く
⇒ FPGAのハードウェアを知らないと良いソフトが書けない
おんなじですね
とりあえずエッジデバイスいろいろ
エッジコンピューティングって何よ?
現実とバーチャルを繋ぐ接点(IoTってやつですね)
我々の生活するリアル空間/リアル時間に直接作用できる
エッジ
コンピュータ
スイッチ
マイクロ
フォン
スピーカ
LCD
カメラ
OLED
超音波
センサ
気圧計 ジャイロ
モーター LED 温度計
匂い
センサ
・・・・・
物理世界とは電気で繋がってます
BGA(Ball Grid Array)
QFP(Quad Flat Package)
シリコンウェハ上の回路は、ボンディングワイヤーを通してパッケージの外のピンまで繋がっていく
こんな感じの各ピンにいろいろな事させて物理世界と通信
物理世界と直接つながる電極の入出力をプログラミングするよ!
余談(最近は基板もフリーソフトだけで作れるよ)
基板だけなら500円でつくれる
(部品代と半田付けは頑張れ)
回路図読めば基板の配線がわかるぞ
シルク印刷に部品番号を記載することも多い
ZYBOは学習用基板なのでそのへんはばっちり
(FPGAのピン番号まで印刷されている)
とりあえず、ここまでわかれば
今日のところはOK
Let’s programming!
ここからはソフトウェアの実践へ
https://github.com/ryuz/jelly/tree/master/projects/zybo_vga
を実際に作ってみるよ
以下、合成待ちの時間の小話集
インターミッション(1)
バイポーラトランジスタの話。とりあえずWikipediaからペタペタ
超大雑把に言うと、ベース-エミッタ間の電流量で、コレクタ-エミッタ間の電流量を制御できる素子
デジタルの場合は、とりあえず「電流流せばスイッチがONなる」という程度の理解からかな
ついにディスコンしたけどな...(涙)
インターミッション(2)
電界効果トランジスタ(FET)の話。とりあえずWikipediaとかペタペタ
超大雑把に言うと、ソース-ゲート間の電圧で、ドレイン-ソース間の電流量を制御できる素子
デジタルの場合は、とりあえず「電流流せばスイッチがONなる」という程度の理解からかな
ソース/ドレインについては、電流ではなく電子(マイナス電荷)視点での命名。電流はドレインからソースに流れるので注意
インターミッション(3)
TTLのNANDゲート
狭義には、データを保持できる自己参照ループがラッチ回路
新しい値への変更を「ラッチする」「ラッチさせる」とかの言い方
クロック変化でラッチさせる機構がフリップフロップ。
が、広い意味で「ラッチ」と「フリップフロップは」あまり区別せずに呼ばれることも多い
論理記述いろいろ
インターミッション(4)
TTLのNANDゲート
狭義には、データを保持できる自己参照ループがラッチ回路
新しい値への変更を「ラッチする」「ラッチさせる」とかの言い方
クロック変化でラッチさせる機構がフリップフロップ。
が、広い意味で「ラッチ」と「フリップフロップは」あまり区別せずに呼ばれることも多い
論理記述いろいろ
インターミッション(5)
FF
組み合わせ
回路
クロック/リセット
FF
組み合わせ
回路
FF
組み合わせ
回路
・
・
・
入力0
入力1
出力0
出力1
出力2
従来のハードウェアロジック
(ASICとか)
FF
Lookup Table
(メモリ)
クロック/リセット
FF
Lookup Table
(メモリ)
FF
Lookup Table
(メモリ)
・
・
・
入力0
入力1
出力0
出力1
出力2
FPGAの場合
(同じ機構をメモリをプログラムするだけで実現できる)
ク
ロ
ス
バ
ー
ス
イ
ッ
チ
(
メ
モ
リ
)
インターミッション(6)
CLB (LUT + FFの基本ブロック)
DSP (積和演算加速用のブロック)
BRAM (36bit x 1kword のデュアルポートメモリ)
MMCM(PLLでクロック周波数を変換) SelectIO (外部ピンの設定)
PL(Programable Logic)部に出てくるプログラミングリソースたち
MGT (ギガビットトランシーバー)
何が何個入ってるかで安いやつから高いやつまで
何百品種も出ているので、スケーラビリティー高い
インターミッション(7)
SoCとしてのFPGA開発環境
SDカード
ARM プログラム
PL プログラム
クラウド
ARM プログラム
PL プログラム
SDブート
SOTA/FOTA
JTAG
ダウンロード&デバッグ
ブレーク張ったり、ステップ実行したり
トリガ張ったり、波形取ったり
JTAG繋いで物理デバッグもできるし、ネット経由で遠隔デバッグも可能
まとめ
最後、こんなのがうごくよー
https://twitter.com/Ryuz88/status/1393721331527548931
延長でこんなものも作ってまーす(宣伝)
https://youtu.be/vl-lhSOOlSk
最後までお付き合いいただき有難うございました。
おつかれさまでした。

FPGA勉強会資料 20210516