fpga実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam...

54
1 © 2016 The MathWorks, Inc. FPGA実装入門: ソフトウェア開発者のための高速処理ソリューション MathWorks Japan アプリケーションエンジニアリング部 プリンシパルアプリケーションエンジニア 松本 充史

Upload: others

Post on 10-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

1© 2016 The MathWorks, Inc.

FPGA実装入門:ソフトウェア開発者のための高速処理ソリューション

MathWorks Japan

アプリケーションエンジニアリング部プリンシパルアプリケーションエンジニア松本充史

Page 2: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

2

アジェンダ

FPGAとは?– FPGAとSoC FPGAとは?どんなところで使われている?

– FPGAの特長、動作原理、一般的な設計フロー

HDL Coderを使ったFPGA設計– アルゴリズムをエラーなく実装するには

– HDL Coderを使ったFPGA設計フロー

関連資料とサービス

Page 3: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

3

FPGA採用事例FPD、携帯電話の基地局

FPDや携帯電話の基地局などで利用– 規格や仕様が変更になっても柔軟に回路変更が可能

Page 4: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

4

FPGA採用事例小規模・省電力化

http://news.mynavi.jp/articles/2015/02/05/ice40_ultra_lite/

Page 5: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

5

FPGA採用事例三菱電機がFA用コントローラMELSEC iQ-RにSoC FPGAを採用

マイコン+周辺回路⇒SoC FPGA

1チップ化により性能向上しながらコスト削減

http://www.aps-web.jp/magazine/altera/v11/

https://www.altera.co.jp/about/news_room/releases/2015/corporate/nr-altera-mitsubishi-electric-soc-cyclone.html

Page 6: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

6https://www.altera.co.jp/about/news_room/releases/2015/products/nr-altera-audi-adas-cyclone-v.html

FPGA採用事例SoC FPGAのADAS用途での量産適用

Page 7: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

7

FPGA採用事例データセンターでのDeep Learningの高速処理に適用

Microsoftが検索エンジンbingの処理速度向上のためにデータセンターにFPGA

を採用

“Transitioning from the Era of Multicore to the Era of Specialization” Microsoft Research

https://www.sics.se/ssw2014/speakers/doug-burger

Page 8: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

8

FPGA採用事例低電力かつ高性能な津波シミュレーション(ステンシル計算)

http://www.caero.mech.tohoku.ac.jp/wordpress/?p=1631

Page 9: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

9

FPGA採用事例:低消費電力でディープラーニング

デンソー社は柔軟性と消費電力を両立したDNN

のハードウェア化の研究http://jglobal.jst.go.jp/public/20090422/201502209567184397

http://response.jp/article/2016/08/29/280790.html

アルテラ社はディープラーニングのIPを提供http://special.nikkeibp.co.jp/atcl/TEC/16/081900037/

Page 10: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

10

FPGA(Field Programmable Gate Array)とは?

書き換え可能なロジックデバイス– ハードウェアで構成するため高速かつ低消費電力

– ロジックセル(一単位)はSRAMまたはFlashMemで構成したLUT

– 他にもDSPブロック(積和演算器)、メモリ、高速I/Oと、それらを接続する内部配線を持つ

– 有限なリソースの使用可否/ルーティングをして使用する

I/Oブロック

内部配線

ロジックセル(ロジックの1単位)

ブロックRAM

DSPブロック(積和演算器)

Page 11: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

11

FPGAのロジックセルはLookup TableとFlip Flopで構成

ロジックセルの構成要素– ルックアップテーブル

(Look Up Table:LUT)

– フリップフロップ(Flip Flop:FF)

設計方法– ユーザがVHDL/Verilogに記述した

論理演算や積和演算を論理合成

ツールがLUTやDSPブロックに変換

0000000100100011010001010110011110001001101010111100110111101111

0000000000000001

Q

CLK

DA0

A1

A2

A3

A0↓

A1↓

A2↓

A3↓

SRAM

データ

4入力ANDに相当するロジックセル

Page 12: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

12

積和演算回路リソース:DSPブロック

FPGAのシリーズ、世代、メーカーによって構造が異なる

ロジックセルで演算するよりも高速

乗算だけでなく積和、FF、マルチプレクサなどが含まれる– DSPブロック内のどのリソースを使うかは設定によって変わる

HDLの積和演算記述を論理合成ツールが変換、またはFPGAベンダ固有のマクロ記述

– 論理合成ツールのオプション設定によっても何に推論されるか変わるので注意

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

+/-

× +/-

Q

Q

D

Q

Q

D Q

Q

D

18 /

/

25

/

48

/

48

/

25

30 /

/

48 Xilinx社7シリーズFPGAのDSPブロック(DSP48E1)を簡略化

Page 13: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

13

FPGAとSoC FPGA

FPGA(Low Cost~High End)– Altera: Cyclone, Arria, Stratix

– Xilinx: Spartan, Artix, Kintex, Virtex

SoC FPGA: FPGAとプロセッサ(ARM Cortex-Aなど)を1チップ化プロセッサとFPGAはバスで接続– Altera: Cyclone SoC, Arria SoC

– Xilinx: Zynq

FPGA

ARM

Processor

AXI

Bus

Page 14: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

14

マイコンに対するFPGAの優位性

FPGAはロジックをカスタマイズ可能なデバイス– マイコン、ASSPなど複数チップをFPGAひとつにまとめられる

システム構成単純化、小型化、BOMコスト低減

マイコン/軸制御⇒多軸制御を1チップ化など

– ハード化≒並列化による高速化、高性能化

並列度を自在に変更できるため、要求性能に応じた高性能化が可能

FPGA マイコン

周辺回路 全てFPGA内に実装可 専用チップが必要

ボード面積 1チップ化で低減可能 周辺チップが必要で大

処理能力 処理の並列度を変えることで高速化が可能

限定的(マイコンの能力に依存)

インターフェースなどの仕様変更

ボードに実装後でも内部回路構成の変更が可能

チップ自体の変更ボードの変更が必要

設計の容易さ 難しい 容易

http://jp.mathworks.com/discovery/fpga.html

Page 15: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

15

動作原理:MCU/MPU vs. ASIC/FPGA

動作原理プログラム読み出し⇒命令デコード⇒演算(パイプライン有)⇒レジスタ(メモリ)に保存

逐次処理~コア数での並列化

1サイクル周期:kHz~数MHz

動作原理演算に必要な回路を合成して論理回路を形成

逐次処理~並列処理をフレキシブルに変更

1サイクル周期:MHz~数百MHz

MCU/MPU ASIC/FPGAMultiCore, GPU, etc

内部レジスタ(演算結果保存)

演算回路

プログラムメモリ命令デコード

内部レジスタ(演算結果保存)

演算回路

プログラムメモリ命令デコード

+

×

×

×

+

Page 16: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

16

回路のタイミング設計

入力A, B, C, D, Eに対する信号に対して同期化を行うには?

B

C

D

YA × + × +

E

0001 0101 1011

? ? ? ? ? ?

各パスの遅延は回路や配線によって異なる

Page 17: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

17

Flip Flop(FF) ≒ Register:入力信号をクロックで同期化する

D Flip Flopが最もポピュラーなFF

ClockエッジによりD入力の状態をQに出力する⇒Clockに同期して出力Qを保持

reset clk D Q

1 - - 0

0 ↑ edge 0 0

0 ↑ edge 1 1

0 - X QQ

QR

D

clk

resetclk

D

Q

1

1 2

2 3

3

Page 18: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

18

回路のタイミング設計:パイプラン処理

計算結果Yは入力に対してレイテンシ:2クロックで出力される。

スループットを上げたい時は?

B

C

D

YA × + × +

E

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

※ Clock Skew ,Setup/Hold Timeも考慮する必要があるが、ここでは簡略化

遅延 = X ns以内 ⇒ Fmax(clock) = 1/(X+α) MHz

0001 0101 1011

xxxx xxxx 0001

Page 19: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

19

回路のタイミング設計:パイプラン処理

クロック周波数、スループットは2倍

レイテンシ:3クロック

B

C

D

YA × + × +

E

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

DQ

Q

D

Q

Q

D

Q

Q

D

遅延 = X/2 ns以内⇒ Fmax(clock) = 1/(X/2+α) MHz

0001 0101 1011

相対的にタイミングがずれないよう遅延調整

xxxx xxxx xxxx 0001

Page 20: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

20

回路のタイミング設計:パイプラン処理

クロック周波数、スループットは4倍

レイテンシ:5クロック

B

C

D

YA × + × +

E

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

DQ

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

Q

Q

D

遅延 = X/4 ns以内⇒ Fmax(clock) = 1/(X/4+α) MHz

0001 0101 1011

xxxx xxxx xxxx 0001xxxx xxxx

Page 21: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

21

回路のタイミング設計:パイプラン処理

パイプライン段数を増やすことでクロック周波数/スループット向上

FF間のタイミング達成可否は論理合成ツールでタイミング解析

スループット(F

clk

)

パイプライン段数=レイテンシ

FPGAツール上のタイミングエラー画面

Page 22: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

22

FPGAの回路面積(リソース):リソース共有

スループットは遅くても良いので、沢山の演算を行うには?

リソース共有:FPGAの回路リソースを低減する手法– コンポーネントを時分割で共有

– 並列処理⇔逐次処理を調整

×

×

+

完全並列処理乗算器:4加算器:3

スループット:100MHz

a

b

c

d

A

B

C

D

× +

× +

+

一部逐次処理乗算器:2加算器:3

スループット:50MHz

a⇒bA⇒B

c⇒dC⇒D

逐次処理乗算器:1加算器:1

スループット:25MHz

a⇒b⇒c⇒d

A⇒B⇒C⇒D

× +

Page 23: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

23

設計のトレードオフ:スループットと回路面積

同じ処理内容でも、要求性能(スループット/回路規模)に応じた設計が必要– 回路面積削減:リソース共有、逐次化

– スループット向上:パイプライン処理、並列化

回路面積

スループット

回路面積は小さくしたいがスループットは

上げたい

並列度

クロック周波数パイプライン段数

Page 24: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

24

一般的なFPGAデザインフロー

FPGA実機検証

論理合成・配置配線

テストベンチ作成・HDL検証

HDL設計(VHDL/Verilog)

機能設計(ブロック図)

設計仕様(Word)

仕様検討(MATLAB/C)

FPGAプログラミング

仕様書を参考にVHDL/Verilogコード記述

HDLシミュレータで論理検証

FPGAツールでコンパイル

プログラムファイルをダウンロード

上位言語で仕様検討固定小数点設計など

ロジックアナライザ(外部・オンチップ)などで動作検証

文書ベースの実装仕様

Page 25: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

25

FPGA設計に使用されるツール群

HDLシミュレータ

VHDL/Verilog HDLなどのハードウェア記述言語(HDL)をシミュレーションするツール

FPGA設計で利用されるHDLシミュレータ

– Mentor Graphics社 ModelSim, Questa

– ALDEC社 Active HDL

– Cadence社 Incisive

FPGA開発ツール(通称:論理合成ツール)

HDLをコンパイルするツール

– 論理合成:HDL⇒ネットリスト

– マッピング:ターゲットデバイスのリソースに適合

– 配置配線:デバイス内の素子を配置・配線

– タイミング解析:各回路パスの遅延を推定

– プログラムファイルの生成

– ダウンロード:FPGAのコンフィギュレーション

その他の機能– C高位合成

– システム設計(複数コンポーネント接続、バス設定)

FPGA設計で用いられるツール

– Altera社:QuartusII, Quartus Prime

– Xilinx社:ISE, Vivado

Page 26: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

26

アジェンダ

FPGAとは?– FPGAとSoC FPGAとは?どんなところで使われている?

– FPGAの特長、動作原理、一般的な設計フロー

HDL Coderを使ったFPGA設計– アルゴリズムをエラーなく実装するには

– HDL Coderを使ったFPGA設計フロー

関連資料とサービス

Page 27: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

27

一般的なFPGAデザインフローの課題アルゴリズムをエラーなくハードウェア化するには?

FPGA設計の課題

HDL記述とテストベンチ作成に大きな工数

HDLシミュレーションでは論理検証のみ、機能検証が不十分

手変換を経ているのでトレーサビリティ取れない⇒仕様/アルゴリズムに戻って修正困難

FPGA実機検証

論理合成・配置配線

テストベンチ作成・HDL検証

HDL設計(VHDL/Verilog)

機能設計(ブロック図)

設計仕様(Word)

仕様検討(MATLAB/C)

ギャップ

FPGAプログラミング

手作業で変換エラー発生

Page 28: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

28

MATLAB/Simulink⇒HDL Coderはギャップを解消

設計フロー

上流から下流まで同一環境を利用

仕様モデルをリファインして実装用モデルを作成

課題の解消

モデルは実行可能な仕様書⇒情報伝達ミスを解消

モデル間、モデル-HDL間のトレーサビリティ

テストベンチの自動生成

FPGA/ASIC実装

論理合成

テストベンチ生成

HDLコード生成

固定小数点設計(Simulink+Fixed-Point Designer)

詳細設計(Simulink+HDL Coderブロック)

機能設計(Simulink)

仕様検討(MATLAB/Simulink)

Page 29: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

29

ASIC開発工数のベンチマーク(ユーザ事例)

48% 実装の工数削減 (プロジェクト全体では33%)

47% FPGAプロトタイプ開発期間の削減

80% HW(実機)検証削減

1st FPGA Prototype 2nd FPGA Prototype

1st FPGA Prototype

手書き

HDL

Coder

仕様検討 機能設計

詳細設計 HDL記述 HDL検証 HW検証

2nd FPGA Prototype

ASIC実装

Page 30: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

30

FPGA設計時に使用するブロック

テストベンチとして使用するブロック– 可視化・解析、信号生成

– 制御対象、ノイズ付加

HDL生成対象ブロック– 低抽象度ブロック

– 高抽象度ブロック

Page 31: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

31

実装用モデリング例:信号処理系のハードウェア実装

リファレンスモデル

実装用モデルフレームベース信号をサンプルベースに変換

コード生成対応ブロック(Valid信号付)に置換

非対応処理(fftshift)を等価な処理で置換(RAM)

Page 32: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

32

実装用モデリング例:制御系のハードウェア実装

伝達関数を離散化固定小数点化

非対応ブロックの置換

高抽象度ブロックの置換

FF(Delayブロック)の追加

リファレンスモデル

実装用モデル

Page 33: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

33

固定小数点設計ツールFixed-Point Designer

TM

固定小数点設定機能を提供– ビット幅、小数点位置、丸め、オーバーフロー

– デフォルトの「継承」パラメータにより

設定工数を削減

設定の最適化ツール:固定小数点ツール– オーバーフロー解消と冗長ビットの削減

– 手作業でのイタレーションを低減

オーバーフローの解消冗長ビットの削減

Page 34: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

34

MATLABコード/Simulink/StateflowモデルからHDLコード生成 HDL Coder TM

MATLAB/Simulink/StateflowモデルからVHDL/Verilog生成– モデルと等価なHDLコード生成

– 固定・浮動小数点コード生成対応

– 高機能ライブラリを使用した設計が可能

– Xilinx Vivado , Altera QuartusIIと連携して

コンパイル

回路パフォーマンスの最適化– パイプライン自動挿入

– リソースシェアリング

コード生成レポートの生成– モデル-コード間のトレーサビリティ

– 回路リソース情報

アルゴリズム検討

システム設計

実装

コード生成 検証

SoCVirtual Platform

Processor

C, C++ SystemCVHDL,

Verilog

FPGA/ASIC

Page 35: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

35

リソース共有:SharingFactor

複数の演算器を時分割で共有回路面積の低減

シリアライズ

2

4

8

5

9

94 582

3

6

1

7

4

46 713

6

24

8

35

36

デシリアライズ

共有対象の演算器

Page 36: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

36

パイプライン自動挿入:DistributedPipelining

加算器チェーンに自動的にパイプライン挿入

Page 37: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

37

並列度

クロック周波数パイプライン段数

設計のトレードオフ探索をパラメータ設定で実行

スループット/回路規模はサブシステムのHDLプロパティで調整

回路面積

スループット

パイプライン段数:Distributed Pipelining

並列度:Sharing Factor

クロック周波数

Page 38: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

38

HDL Coder新機能:Singleデータ型のHDL生成サポート

広ダイナミックレンジに対応

固定小数点化の作業が不要に

IEEE-754フォーマットのSingle精度のサポート

多数の演算に対応

– Add, Subtract, Mult, Gain, Abs, Min, Max, RelOp

– Divide, Mod, Rem, Reciprocal, Sin, Cos, Atan, Atan2

– Log, Exp, Power, Sqrt, Inverse Sqrt, Data type conv

DTC

(SI)single

DTC

(SI)single

UNPACK

int32 UNPACK

<S,E,M>IEEE

Floating-Point

Algorithm

Implementation

<S,E,M> PACK int32DTC

(SI)single

XORAS

BS

Add

Exponents

Adjust

Exponent

AE

BE

Adjust

Exponent

Multiply

MagnitudesNormalize

AM

BMRound Normalize

CE

CM

CS

アルゴリズム検討

システム設計

コード生成

Generic

Floating Point

FPGA

Altera/Xilinx

Soft IP

Altera

Hard IP

ASIC

コード生成

Page 39: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

39

HDLコード・FPGAの検証HDL Verifier TM

HDLシミュレータとのコシミュレーション– モデルをHDLのテストベンチとして利用

(生成HDL用、手書きHDL用)

– 豊富な信号生成、可視化解析機能を利用

FPGA-in-the-Loop:FPGA実機検証– 検証のアクセラレーション

– 設計対象の機能検証に有効

コシミュレーション、FPGA実機検証用モデルはHDL Coderで自動生成可能

アルゴリズム検討

システム設計

実装

コード生成 検証

SoCVirtual Platform

Processor

C, C++ SystemCVHDL,

Verilog

FPGA/ASIC

Page 40: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

40

HDLワークフローアドバイザ(HDL Coder機能)Altera QuartusII/Xilinx ISE/Vivadoとの連携

ウィザード形式のFPGA実装ツール

– デバイス、インターフェース設定

– モデルチェック~HDL生成

– コンパイル(FPGAツール連携)

– ダウンロード

選択可能なワークフロー– Generic FPGA:FPGA向けコンパイルのみ

– FPGA-in-the-Loop:FPGA実機検証

– FPGA Turnkey:FPGA実装

– Simulink Real-Time FPGA I/O: 専用制御用ハード実装

– IP Core Generation:Zynq/Altera SoC実装

– Software Defined Radio: 通信用RF+Zynqボード実装

Page 41: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

41

特定ボードをターゲットに実装するハードウェアサポートパッケージとは?

3rd Party製ハードウェアを簡単に実装するためのパッケージ– データ収集:Webカメラ、測定器、iPhone/Androidセンサーなど

– Cコード生成:Analog Devices DSP, TI DSP, ARM Cortex-A/M,

BeagleBone Black, STM32F4-Discovery, Raspberry Piなど

– HDLコード生成:Altera FPGA Board, Altera SoC,

Xilinx FPGA Board, Xilinx Zynqなど

MATLABアドオンメニューからインストール– オプション製品に紐付き

– 無償ダウンロード

Page 42: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

42

ビデオアルゴリズムのFPGA実装用サポートパッケージComputer Vision System Toolbox Hardware Support Package

ボード定義ファイルとリファレンスデザイン提供

FPGA内の映像信号(処理前・後)をSimulinkでキャプチャ

対応ボード(2016年8月現在)– Avnet社 ZedBoard, Xilinx社 ZC702, ZC706

– Avnet社 FMC HDMI CAM, FMC IMAGEON

(HDMI入力-出力)

Page 43: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

43

Computer Vision System Toolbox Hardware Support Package

システム構成

ADV7551

HDMI out

ADV7611

HDMI in

FMC Card

Video

I/F

Video

I/F

Test

Pattern

Gen

Color

Space

Convert

Color

Space

Convert

Frame

Capture

S2MM

DMA

(32bits)

DDR

Capture

Frame

Buffer

AXI DMA

Driver

AXI DMA

Client

UDP

ServerSimulink 422

422

User

Logic

422

RGB/444/422

FPGA

RGB/444/422

ARM

Xilinx

SW IP

MathWorks

IP

HDMI

HDMI

Page 44: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

44

通信システムのSoC実装用サポートパッケージXilinx Zynq Based Radio

Tx/RxのSimulinkブロックとSystem Objectを提供

ボード定義ファイルとリファレンスデザイン提供

対応ボード(2016年8月現在)– Avnet社 ZedBoard, PicoZed

– Xilinx社 ZC706

– Analog Devices社

AD-FMCOMMS1/2/3/4-EBZ

http://jp.mathworks.com/hardware-support/zynq-sdr.html

Page 45: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

45

FPGAをスルーしてデータ収集目的で使用可能

ARM/FPGAカスタムロジックを実装し、PCからパラメータ調整が可能

Xilinx Zynq Based Radio使用例

アナログフロントエンド

FPGA

(カスタムロジック)

Tx/Rx

インターフェースブロック

/System Object

PCからパラメータ調整

ARM

(カスタムコード)

信号生成/モニタリング/ユーザ定義モデル

Page 46: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

46

Xilinx Zynq Based Radio実装ブロック図

Page 47: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

47

BLDCモータのベクトル制御Example

Embedded Coder Support Package for Xilinx Zynq-7000

ボード定義ファイルとリファレンスデザイン提供

すぐに動作可能なモータ制御モデル– ARM:速度制御器

– FPGA:ベクトル制御演算と電流制御

対応ボード– Avnet社 ZedBoardなど

– Avnet社 AD-FMCMOTCON2-EBZ

– テスト用のダイナモメータ

https://jp.mathworks.com/help/releases/R2016b/supportpkg/xilinxzynq7000ec/examples/field-oriented-control-of-a-permanent-magnet-synchronous-machine.html

Page 48: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

48

アジェンダ

FPGAとは?– FPGAとSoC FPGAとは?どんなところで使われている?

– FPGAの特長、動作原理、一般的な設計フロー

HDL Coderを使ったFPGA設計– アルゴリズムをエラーなく実装するには

– HDL Coderを使ったFPGA設計フロー

関連資料とサービス

Page 49: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

49

FPGA/ASIC実装 ビデオシリーズページ

HDL Coder/HDL Verifier/

Vision HDL Toolbox製品と個別機能に関する様々なビデオ

検索FPGA ASIC 実装

https://jp.mathworks.com/videos/series/fpgaasic-implementation-102284.html

Page 50: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

50

製品評価前の基本機能習得に最適HDL Coder Workshop

ワークショップ内容– PCを使ったハンズオン形式の無償ワークショップ

– HDL Coderの機能解説と操作体験

– 次回開催:2017年2月13日

ワークショップハイライト– 機能概要

– HDL生成のための設定と手順

– HDL生成に対応したSimulinkモデルの作成

– 固定小数点化とシミュレーション

– モデリング例(フィルタ、FFT、MATLABコード、ステートマシンなど)

– 最適化(リソース共有、パイプライン)機能

– 等価性検証および検証の高速化

– 論理合成ツール(Altera QuartusII/Xilinx Vivado)との連携

Page 51: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

51

充実したドキュメント

日本語化された製品ドキュメント– 全機能を網羅

HDL Coder評価ガイド– 3時間程度で基本機能をWalk Through

HDL Modeling Guideline

– パフォーマンスや生産性の観点で

まとめたモデリングノウハウ集

Page 52: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

52

技術トレーニングコース

MathWorks技術トレーニングコース– パブリックコース(東京、名古屋、大阪)、オンサイトコース、オンライン

トレーニングコース受講のメリット– 短期間で豊富な機能を効率的に習得

– 実用的な演習問題により、理解度向上

関連コース– HDL CoderによるHDLコード生成

2016年10月27~28日東京、2017年4月18~19日東京、2017年6月15~16日名古屋

– MATLABとSimulinkによるXilinx Zynq SoCプログラミング(ZedBoard付き)

2017年5月30~31日東京

https://jp.mathworks.com/services/training/index.html

Page 53: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

53

技術コンサルティングサービスのご紹介

MathWorksの技術コンサルティングとは?– お客様の要求にあわせ、習熟度向上を目的としたアドバイザリーサービス

HDL Coder/HDL Verifierをご利用頂く方の悩み– 手書きHDLでFPGA実装の経験はあるが、モデル記述に慣れない

– Simulinkの経験はあるが、FPGAのことが良くわからない

– SimulinkもFPGAも初めてで、何から始めればよいかわからない

コンサルティングサービスの内容– お客様のスキルレベル、開発フェーズにあわせた効果的な技術習得の計画立案

– 短期集中型トレーニングパッケージのご提供と、フォローアップサポート

プロジェクトの早期立ち上げが可能に!

Page 54: FPGA実装入門: ソフトウェア開発者のための高速処理ソ … › content › dam › mathworks › ...10 FPGA(Field Programmable Gate Array)とは? 書き換え可能なロジックデバイス

54

まとめ

従来手法とHDL Coderを使ったFPGA設計フローを解説– アルゴリズムとFPGA実装とのギャップを埋めるHDL Coderを使った設計

– シミュレーション~固定小数点化~HDL生成・検証~実装までのシームレスなフロー

各種ハードウェアサポートパッケージは初心者のFPGAプロトタイピングをサポート

豊富なリソース– 無償のビデオ、ワークショップ

– 有償トレーニング/コンサルティングサービス