Slide 1

Slide 1 text

FPGA入門 夏のAI EdgeハードウェアMeetup in 福岡 2019年7月10日 きしだなおき

Slide 2

Slide 2 text

FPGAとは ● Field Programmable Gate Array – Field 現場で – Programmable プログラム可能な – Gate 論理素子が – Array いっぱい並んだやつ ● 現場でプログラムできる論理回路

Slide 3

Slide 3 text

FPGAの仕組み

Slide 4

Slide 4 text

回路の合成 ● 例:3入力でORとANDの組み合わせ

Slide 5

Slide 5 text

回路にはいろいろある ● XORやNOTなどいろいろ組み合わせると大変 ● 全部用意しようとすると使わない素子が多く なる ● 回路に無駄

Slide 6

Slide 6 text

回路の入出力の組み合わせ 入力 出力 000 0 100 0 010 0 110 1 001 1 101 1 011 1 111 1

Slide 7

Slide 7 text

LUT(LookUp Table) ● 入出力をあらかじめメモリにもっておけばい い ● 製品としては4入力LUTや6入力LUT 入力 出力 000 0 100 0 010 0 110 1 001 1 101 1 011 1 111 1

Slide 8

Slide 8 text

論理ブロック ● Logical Element(LE) Intel(Altera) ● Logical Cell(LC) Xilinx

Slide 9

Slide 9 text

配線 ● 論理ブロックが格子状に配置 ● 周囲に配線 ● アイランドスタイル

Slide 10

Slide 10 text

乗算回路とメモリ ● 乗算やメモリを論理ブロックの組み合わせで 実現すると効率がわるい ● 乗算回路やメモリ(SRAM)がのってる

Slide 11

Slide 11 text

FPGAは基本的にはメモリ回路 ● LUTの基本はメモリ ● 配線スイッチもメモリ ● 配線データを書き込むだけ

Slide 12

Slide 12 text

FPGAとCPU ● CPUとは – メモリから命令をよびだして、命令にしたがった 回路で処理を行う – ノイマン型アーキテクチャ

Slide 13

Slide 13 text

FPGAなら ● 命令を読み込む必要なく、回路をやりたい処 理のとおり並べることができる ● 非ノイマン型アーキテクチャ

Slide 14

Slide 14 text

FPGAの利点 ● 命令を読み込む必要がない – 処理を行うまでのタイムラグが少ない ● 低レイテンシ – 命令解析のための回路が不要 ● 余分な回路がないので低消費電力 ● 細かな並列化

Slide 15

Slide 15 text

FPGAでの開発 ● 回路記述 – VHDLやVerilogHDLなど ● 論理合成 – HDLを論理回路に変換 ● 配置配線 – 論理回路を実際の回路に配置 ● コンフィギュレーション – FPGAに回路情報を設定

Slide 16

Slide 16 text

ソフトウェアとの違い ● 配線は記述順序は関係ない ● 状態はレジスタで保持してクロックなど契機 に変更

Slide 17

Slide 17 text

HDLの問題点 ● 書くのが面倒 ● 書くのが面倒 ● 論理合成に時間がかかる – 数時間かかったりする ● デバッグが面倒 ● デバッグが面倒 ● テストも面倒 ● テストも面倒 ● いろいろ面倒

Slide 18

Slide 18 text

IPを使う ● Intellectual Property ● ようするにライブラリ ● だれかが作って検証してる

Slide 19

Slide 19 text

SoC ● System on Chip ● CPU回路のせちゃえ – ソフトコアCPU ● 物理CPUのせちゃえ – FPGAの微細化 – チップに余裕 – 再構成可能回路が大量にあってもしかたない – そうだARMを乗せよう

Slide 20

Slide 20 text

高位合成 ● CとかJavaとかで書いてHDLに変換 ● アルゴリズムの検証がソフトウェアとして行 える – デバッガなどが使える – コンパイルが速い ● OpenCL – GPUやCPUでの並列にも対応

Slide 21

Slide 21 text

FPGAのつかいどころ ● 画像・映像処理 – Mac ProにはFPGAが載っていて動画エンコーディ ングなどに使える ● ネットワーク処理 ● 「人工知能」 ● IoT

Slide 22

Slide 22 text

人工知能 ● 深層ニューラルネットワーク ● たくさんの掛け算・足し算を要素ごとに行う

Slide 23

Slide 23 text

IoT ● たくさんのセンサーから常時データが送られ る ● ほとんどのデータは無駄 ● 人工知能(深層ニューラルネットワーク)に学習 させて、必要なデータだけを送信 ● 低消費電力

Slide 24

Slide 24 text

実際に試すには? ● FPGA開発ボード – DE0-CVやDE0-nano(Intel) ● WindowsかLinux ● Macの場合はiverilogで信号の確認だけ・・・ – VirtualBoxなどを使ってLinuxを動かせばOK

Slide 25

Slide 25 text

FPGAやりましょう