71
1 © 2011 The MathWorks, Inc. モデルベース開発ツールを用いたFPGA 実装 ~画像処理システムをHDLを書かずにFPGA に実装する!~ MathWorks Japan アプリケーションエンジニアリング部 松本 充史 Atsushi Matsumoto [email protected]

モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

Embed Size (px)

Citation preview

Page 1: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

1 © 2011 The MathWorks, Inc.

モデルベース開発ツールを用いたFPGA実装

~画像処理システムをHDLを書かずにFPGAに実装する!~

MathWorks Japan

アプリケーションエンジニアリング部

松本 充史 Atsushi Matsumoto

[email protected]

Page 2: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

2

はじめに -MathWorks会社概要-

MathWorks, Inc. – 本社:米国 マサチューセッツ州, Natick

– 従業員2,000名超

– MATLABプロダクトファミリとPolySpaceの 開発、販売、サポート、トレーニング、コンサルティングサービス

– ミッション:”Accelerating the pace of engineering and science”

導入実績 – 175カ国以上、100万人以上のユーザ

– 3,500以上の大学

日本法人: MathWorks Japan – 2009/7/1より営業開始

– 東京、名古屋、大阪オフィス

この世界地図は、MATLABとMapping

Toolbox(オプション)により

円筒図法で描いたものに、現地法人と代理店を

マッピングしたものです。

ネイティック本社オフィスビル

日本支社オフィスビル

Page 3: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

3

MathWorks社セッション

アジェンダ

MATLAB/Simulink機能紹介

画像処理関連の機能紹介

モデルベースデザインによる開発

モデルからのHDLおよびHDLテストベンチ生成

Page 4: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

4

MATLAB/Simulink概要

視覚的に理解可能なモデリング/シミュレーション環境

– ブロック線図シミュレーション環境

– マルチドメイン(アナログ/デジタル、タイム/イベントドリブン、浮動小数点/固定小数点)

– 開発ツールの連携による統合された開発環境

– 自動コード生成による組込み

科学技術計算のための最先端の開発環境

– 対話的なプログラミング環境

– アプリケーション固有の簡潔なプログラミング言語

– データの探索、解析、計算およびグラフィックス機能

– アルゴリズム開発、カスタマイズ可能な各種機能

計測環境 MATLAB / Simulink 実装環境

Page 5: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

5

MATLABデスクトップ 対話形式で実行(コンパイル・リンク等が不要)→解析結果を逐一確認

ワークスペース MATLAB メモリ領域

コマンドウィンドウ 各種コマンド実行

コマンド履歴

フィギュア

ウィンドウ

現在のフォルダ

Page 6: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

6

ダブルクリック

シミュレーション結果

ブロック線図シミュレータ Simulink 各種システムの数式モデルの作成・シミュレーションが可能

ライブラリブラウザ

シミュレーション実行

ブロックパラメータ

ドラッグ&ドロップ

Page 7: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

7

離散系マルチレートシステムのモデリング・シミュレーション アナログ・デジタル混在、マルチレートシステムのモデリング

マルチレートシステムの間引き・補間処理をユーザが意識することなくモデリング

入力のアナログ信号/

オーバサンプリング後の信号

出力信号のスペクトル

デジタルフィルタ アップサンプル

アナログフィルタ

スペクトルの表示

>> ovsmpl

Page 8: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

8

MATLABプロダクトファミリの構成(機能別)

Fixed Point Toolbox,

Simulink Fixed Point

Stateflow,

SimEvents Simscape,

SimRF,

SimElectronics,

SimPowerSystems

Simulink 3D Animation,

Gauges Blockset,

Simulink Report

Generator

HDL Verifier,

Simulink Verification

and Validation,

Simulink Design Verifier,

SystemTest,

Polyspace

xPC Target

Parallel Computing

Toolbox,

MATLAB Distributed

Computing Server

MATLAB Coder,

Simulink Coder,

Embedded Coder,

Filter Design HDL Coder,

HDL Coder

Statistics Toolbox,

Curve Fitting Toolbox,

Symbolic Math Toolbox,

Optimization Toolbox,

Neural Network Toolbox

MATLAB Compiler,

MATLAB Builder NE/JA/EX,

Spreadsheet Link EX

Database Toolbox,

MATLAB Report

Generator

Page 9: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

9

MATLABプロダクトファミリの構成(適用分野別)

Control System Toolbox

System Identification Toolbox

Fuzzy Logic Toolbox

Robust Control Toolbox

Simulink Control Design

Simulink Design Optimization

Signal Processing Toolbox

DSP System Toolbox

Communications System Toolbox

Wavelet Toolbox

Fixed Point Toolbox

RF Toolbox

Phased Array System Toolbox

SimRF Image Processing Toolbox

Computer Vision System Toolbox

Mapping Toolbox Data Acquisition Toolbox

Instrument Control Toolbox

Image Acquisition Toolbox

Vehicle Network Toolbox

Financial Toolbox

Econometrics Toolbox

Datafeed Toolbox

Fixed-Income Toolbox

Financial Derivatives Toolbox

Bioinformatics Toolbox

SimBiology

Page 10: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

10

信号処理・画像処理設計・解析オプション

Signal Processing Toolbox

信号生成

フィルタ設計解析

アナログフィルタ

ディジタルフィルタ(IIR/FIR)

スペクトル解析、線形予測

GUI(FDATool, SPTool, WinTool, etc)

Image Processing Toolbox

画像処理、解析

2次元フィルタ設計

空間変換

ブロック処理

モルフォロジ

Wavelet Toolbox

ウェーブレット変換による処理

信号、画像の解析、合成、

ノイズ除去、圧縮

ウェーブメニューGUI

>> wavemenu

MATLABプログラムで信号・画像処理

アルゴリズム開発・解析を短期間で実現

Image Acquisition Toolbox

MATLAB/Simulinkに画像、映像を取込

フレームグラバー、カメラ

DCAM, Camera Link, GigE

Web Camera(VFM, WDM)

Page 11: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

11

各種スペクトル解析

Signal Processing Toolbox

subplot(3,1,1)

[s1, f1] = periodogram(sig,...

hamming(length(sig)),...

length(sig), Fs);

plot(f1, 20*log10(s1)),grid

xlim([0 f1(end)])

subplot(3,1,2)

[s2, f1] = pmusic(sig, 16, 1024, Fs);

plot(f1, 20*log10(s2)),grid

xlim([0 f1(end)])

subplot(3,1,3)

spectrogram(sig,hamming(512),...

256,512,Fs);

ピリオドグラム

MUSIC法

スペクトログラム スペクトル解析を行うMATLAB

コード(Signal Processing

Toolboxで提供するスペクトル解析関数と窓関数を使用) >> edit noise_suppress_full

Page 12: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

12

フィルタ設計・解析GUI:FDATool (Filter Design & Analysis Tool)

Signal Processing Toolbox

①フィルタ設計

②ワークスペースからインポート

③極零エディタ

④モデルの実現

⑤量子化パラメータ設定

⑥フィルタの変換

⑦マルチレートフィルタの作成

作成したフィルタの管理

(複数のフィルタを保存、接続)

Designボタン

Analysisボタン 様々な応答を表示

周波数/位相/群遅延/位相遅延

インパルス/ステップ/零極配置

フィルタ係数/フィルタ情報

>> fdatool

Page 13: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

13

空間変換(射影法による空間変換例) Image Processing Toolbox

道路の画像を真上から見た画像に変換

(文字、標識認識などのアプリケーション)

maketformコマンドで変換フォーム作成

imtransformコマンドで空間変換

tform=maketform('projective',[6 147; 565 147; 118 28; 296 28],...

[36 3480; 1798 3480; 36 83; 1750 130]);

% 画像空間変換 B =imtransform(ROI,tform,'bicubic');

figure, imshow(B), title('空間変換') %画像表示

変換して抽出

Page 14: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

14

特定のフィルタ作成(fspecial関数) Image Processing Toolbox

Sobelエッジ強調 : sobel

モーション : motion コントラスト強調 : unsharp

平均化 : average 原画像

巡回平均化 : disk

>> H = fspecial('unsharp')

H =

-0.1667 -0.6667 -0.1667

-0.6667 4.3333 -0.6667

-0.1667 -0.6667 -0.1667

Page 15: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

15

システムシミュレーション用オプションSystem Toolbox

DSP System Toolbox

高度なフィルタ設計

マルチレート、適応フィルタ、固定小数点化

スペクトル推定

デジタルフィルタ

行列、線形代数

FFT/DCT/DWT

Communications System Toolbox

アイパターン、コンスタレーション表示

変復調、符号化、復号化

チャネルモデル

ガロア体演算

Computer Vision System Toolbox

静止画、動画像ファイルI/O

フィルタ、変換

ブロック処理

モルフォロジ

System Object、Simulinkブロックによるモデリングと

システム・シミュレーションの実行

Phased Array System Toolbox

フェーズドアレイシステムの設計・シミュレーション

波形設計・解析、時間・空間処理

Page 16: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

16

DSP System Toolboxの機能

各種信号処理アルゴリズムを提供

– MATLAB Function:フィルタ設計・解析

– MATLAB System objects:ストリーミング・シミュレーション

– Simulink Block:ストリーミング・シミュレーション

コード生成に対応

– 全てのブロックがCコード生成に対応(可視化用ブロック除く)

– 20以上のブロックがHDL生成に対応

Signal Sources Transforms & Estimation

Filter Design Spectral Analysis

Signal Scopes Quantizers

Linear Algebra & Matrix Math Statistical Signal Processing

Page 17: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

17

Computer Vision System Toolboxの機能

豊富な画像処理アルゴリズムを提供

– マルチメディア動画ファイルの入出力

– テキストやグラフィックスのオーバレイ

– 動き検出

– 特徴検出

– オブジェクトのトラッキング

– フィルタリング、幾何学変換、モルフォロジ

コード生成に対応

– 全てのブロックがCコード生成に対応

– 詳細化を行ってからHDL生成

Page 18: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

18

Simulink画像処理オプションを利用した

車線検出シミュレーション

アプリケーション分野別に各種ライブラリを提供

(この例ではComputer Vision System Toolboxを利用)

仕様、アルゴリズムの検討が短期間で終了

>> vipldws_win

エッジ検出

フィルタ 2値化 ハフ変換 ピーク検出

Page 19: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

19

オプティカルフローによる動画像認識

Computer Vision System Toolbox

開発したアルゴリズムをその場で映像表示

Simulinkによる画像フレーム間処理の実現

ストリーミング・シミュレーション

入力画像 速度ベクトル表示

Page 20: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

20

固定小数点演算、シミュレーションオプション

Fixed-Point Toolbox

MATLABで固定小数点演算

オーバーフロー発生箇所の検出

倍精度浮動小数点演算との比較

固定小数点フィルタの

ダイナミックレンジ、リミット

サイクル発振の解析

固定小数点化による精度検証が可能

Simulink Fixed Point

Simulink既存ブロックで固定小数点設定が可能

設定はC/HDLコード生成結果に反映

固定小数点アドバイザ

スケーリングの最適化

Page 21: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

21

浮動小数点⇒固定小数点モデルへの変換 Simulink Fixed Point

固定小数点アドバイザ:浮動小数点モデルに対して固定小数点化をサポート

>> fxpdemo_fpa

Page 22: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

22

固定小数点ツール:スケーリングの最適化機能 Simulink Fixed Point

固定小数点モデルに対して、シミュレーションのログから最適なスケーリング(小数点位置)を算出して設定を最適化

提示されたスケーリング

固定小数点ツールGUI

>> fxpdemo_sine_ovfl

最適化前の固定小数点設定

最適化後の固定小数点設定

Page 23: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

23

Cコード生成・検証オプション

MATLAB Coder

MATLABコードから等価なC

コードを生成

スタンドアローン化

アルゴリズムの配布

Simulink Coder

SimulinkモデルからCコード生成

プロトタイピング用

浮動小数点CPU向けコード

Embedded Coder

組込み用Cコード生成

固定小数点コード対応

各社IDEとリンク、デバッグの自動化

ターゲット用デバイスドライバブロック

デスクトップまたは組込み用Cコード生成および検証

Page 24: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

24

HDLコード生成・検証オプション

HDL Coder

Stateflow, MATLAB Functionを含むSimulinkモデルからHDL生成

ターゲット依存しないVHDL/Verilog

テストベンチ(HDL, Model)生成

FPGAベンダツールと連携

HDL Verifier

HDLシミュレータと協調シミュレーション

ModelSim / Incisive(NC Verilog)

FPGA-in-the-Loop

SystemC TLM 2.0生成

ASIC/FPGAに実装可能なコードを生成および検証

Filter Design HDL Coder

MATLABで設計したIIR/FIR/マルチレート・フィルタからHDL生成

ターゲット依存しないVHDL/Verilog

テストベンチ(HDL, Model)生成 Z-1

Z-1

Z-1

Z-1

+

+

+

+

Page 25: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

25

MathWorks社セッション

アジェンダ

MATLAB/Simulink概要

画像処理関連の機能紹介

モデルベースデザインによる開発

モデルからのHDLおよびHDLテストベンチ生成

Page 26: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

26

従来手法の問題点~エラー早期発見の重要性

Source: “Migration from Simulation to Verification with ModelSim”

by Paul Yanik. EDA Tech Forum,

2004 Mar 11, Newton MA

エラーによる手戻りよって

開発工数増大

60%

21%

12%7%8%

15%

22%

55%

0%

10%

20%

30%

40%

50%

60%

70%

仕様 設計 実装 検証

開発工程における設計エラーの発生原因/エラー検出

エラー混入 エラー検出

エラーの60%が

仕様

段階で混入

検証まで

55%のエラーは

見つからない

Page 27: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

27

FPGA開発者 システム開発者

アルゴリズム

Fixed-Point

Timing / Control Logic

Architecture Exploration

Algorithms / IP

テストベンチ

Environment Models

Algorithms / IP

Analog Models

Digital Models

RTL設計

IP Interfaces

HW Architecture

検証

Functional Simulation

Static Timing Analysis

Timing Simulation

Behavioral Simulation

Back Annotation 実装

Map

Place & Route

Synthesis

FPGA

ハードウェア

FPGAの要求

Hardware Specification

Test Stimulus

システム開発とFPGA開発の間に存在する壁

システム開発とFPGA開発には開発環境や担当者の違いによる壁が存在

アルゴリズム資産をHDLなど別言語に変換する手間は膨大

仕様エラーや変更による実装用コードの修正作業は工数大

Page 28: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

28

MATLAB and Simulink

アルゴリズム開発とシステム開発

モデルベースデザインによる実装

アルゴリズム

Fixed-Point

Timing / Control Logic

Architecture Exploration

Algorithms / IP

テストベンチ

Environment Models

Algorithms / IP

Analog Models

Digital Models

RTL設計

IP Interfaces

Hardware Architecture

検証

Functional Simulation

Static Timing Analysis

Timing Simulation

Behavioral Simulation

Back Annotation 実装

Map

Place & Route

Synthesis

FPGA

ハードウェア

FPGA要求

Hardware Specification

Test Stimulus

Page 29: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

29

MATLAB and Simulink

アルゴリズム開発とシステム開発

モデルベースデザインによる実装

RTL設計

IP Interfaces

Hardware Architecture

検証

Functional Simulation

Static Timing Analysis

Timing Simulation

Behavioral Simulation

Back Annotation 実装

Map

Place & Route

Synthesis

FPGA

ハードウェア

HDL生成

RTL

Page 30: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

30

MATLAB and Simulink

アルゴリズム開発とシステム開発

モデルベースデザインによる実装

検証

Functional Simulation

Static Timing Analysis

Timing Simulation

Behavioral Simulation

Back Annotation 実装

Map

Place & Route

Synthesis

FPGA

ハードウェア

ビヘイビア

協調シミュレーション HDL生成

RTL

Page 31: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

31

MATLAB and Simulink

アルゴリズム開発とシステム開発

モデルベースデザインによる実装

検証

Static Timing Analysis

Timing Simulation

Back Annotation 実装

Map

Place & Route

Synthesis

FPGA

ハードウェア 実装

Map

Place & Route

Synthesis

Functional Simulation

検証

Static Timing Analysis

Timing Simulation

Functional Simulation

ビヘイビア

協調シミュレーション HDL生成

RTL Back Annotation

Page 32: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

32

FPGA

ハードウェア

モデルベースデザインによる実装

FPGAハードウェア

FPGA in the Loop

MATLAB and Simulink

アルゴリズム開発とシステム開発

実装

Map

Place & Route

Synthesis

検証

Static Timing Analysis

Timing Simulation

Functional Simulation

ビヘイビア

協調シミュレーション HDL生成

RTL Back Annotation

Page 33: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

33

FPGAハードウェア

FPGA in the Loop

MATLAB and Simulink

アルゴリズム開発とシステム開発

実装

Map

Place & Route

Synthesis

検証

Static Timing Analysis

Timing Simulation

Functional Simulation

ビヘイビア

協調シミュレーション HDL生成

RTL Back Annotation

共通の開発環境 • 早く簡単に設計~最適なデザインの探索

• 高速なシミュレーション

• 設計とテストを統合

• 豊富な解析機能

設計の繰り返し回数を短縮 • 多様なコードを短時間で生成

• 最適化されたコードを生成

• モデルを変更せずにHDLを変更

HDL検証を統合 • 検証時間の短縮

• バックアノテーションによりクリティカルパスの表示

• HDLシミュレータまたはFPGAボードと協調シミュレーション

ワークフローを統合 • アルゴリズム/ハードの協働

• 尐ない繰り返しで最適な設計

モデルベースデザインのメリット

Page 34: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

34

モデルベースデザイン導入後の効果予想

Source: The MathWorks, Early Verification presentation

エラーの早期発見によって

手戻り削減、効率改善

60%

21%

12%7%

55%

22%

15%

8%

0%

10%

20%

30%

40%

50%

60%

70%

仕様 設計 実装 検証

モデルベースデザイン導入後のイメージ

エラー混入 エラー検出

仕様段階での

シミュレーション

が重要

エラーを後工程に持ち越さない

Page 35: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

35

画像処理IC開発事例

Simulink適用前

アプリケーション – デジタルカメラ用画像処理IC

ターゲットデバイス – FPGAプロトタイプ~カスタムIC

適用前の問題点 – 手戻りが多く、時間がかかっていた。

⇒紙の仕様書+Cシミュレーションで顧客に提案

⇒Verilog記述+FPGAプロトタイプ

– C、SystemCなどもトライしたが・・・

Page 36: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

36

画像処理IC開発事例

Simulink適用後

高抽象度モデリングによるアルゴリズム検証

– Computer Vision System Toolboxの利用

モデリング後すぐにシミュレーションで結果確認

– デザインレビューや顧客への提案に利用できる

Page 37: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

37

画像処理IC開発事例

Simulink適用後

既存ブロックだけでなくMATLAB Functionブロックの併用により柔軟性がUP

Simulinkに埋め込んだMATLABコードからもHDL

生成できます。

Page 38: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

38

画像処理IC開発事例

Simulink適用後

高抽象度モデル(CVSTモデル)とHDL用低抽象度

モデル(Pixel Stream)の等価性検証が容易

高抽象度

HDL生成用

HDLコシム 注 CVST:Simulinkオプション

Computer Vision System Toolbox

Page 39: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

39

紙仕様書+Cシミュレーション:2ヶ月

担当エンジニアM様のコメント

仕様検討からプロトタイピングまでが85%低減しました。C, SystemCなどの上位設計言語と比較してブロック線図での設計はハード設計者向きだと思います。

Simulink

: 1週間+α

-85%

Page 40: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

40

MathWorks社セッション

アジェンダ

MATLAB/Simulink概要

画像処理関連の機能紹介

モデルベースデザインによる開発

モデルからのHDLおよびHDLテストベンチ生成

Page 41: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

41

一般的なRTL設計:同期回路設計とは

一般的にFPGA/ASIC設計には同期回路設計が用いられる

– フリップフロップ(FF)の間に挟んだ論理回路で構成

– 論理回路の転送時間がCLK周期を超えないよう設計

– FF間の転送時間だけ考えれば良いので設計が容易

FF

FF

FF

FF

clk

Page 42: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

42

同期回路設計を考慮したSimulinkモデル

オレンジ色は

FFに相当する

Delayブロック

FFに相当するDelayブロックと処理ブロックで構成

⇒動作合成ではない

Delayブロックのパラメータによる自動挿入機能

⇒ Distributed Pipelining

⇒元モデルはデバイス依存しない(再利用性高い)設計資産

低~高抽象度まで用意されたブロック

⇒低抽象度:+, ×, ANDなどHDL記述同等

⇒高抽象度:Sin/Cos, フィルタ, 誤り訂正(RS)、FFT、ベクタ信号等

Page 43: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

43

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

アルゴリズム検討

システム設計

実装

Processor

C, C++ VHDL,

Verilog

FPGA/ASIC

Page 44: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

44

HDL Coderモデルの作成 対応するエントリ

MATLAB Stateflow ステートマシン

コントロールロジック

Simulink データパス系

システム全体

MATLAB データパス

コントロールロジック

HDL生成 HDL生成

ブロック生成

Page 45: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

45

高抽象度モデルの作成

アルゴリズム検討~数式を基に行列演算モデル作成

アルゴリズムをモデリング ⇒ シミュレーションで検証

アルゴリズムに着目した検証:行列演算、浮動小数点

⇒シミュレーションの高速化

ブロック線図は信号フローが把握しやすい

𝑢𝑥,𝑦𝑘+1 = 𝑢𝑥,𝑦

−𝑘 −𝐼𝑥 𝐼𝑥𝑢𝑥,𝑦

−𝑘 + 𝐼𝑦𝑣𝑥,𝑦−𝑘 + 𝐼𝑡

𝛼2 + 𝐼𝑥2 + 𝐼𝑦

2

𝑣𝑥,𝑦𝑘+1 = 𝑣𝑥,𝑦

−𝑘 −𝐼𝑥 𝐼𝑥𝑢𝑥,𝑦

−𝑘 + 𝐼𝑦𝑣𝑥,𝑦−𝑘 + 𝐼𝑡

𝛼2 + 𝐼𝑥2 + 𝐼𝑦

2

𝐼𝑥 =−1 0 1−2 0 2−1 0 1

/8

𝐼𝑌 =−1 −2 −10 0 01 2 1

/8

Horn-Schunck法による

オプティカル・フロー

数式を

モデル化

Page 46: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

46

SimulinkモデルにMATLABコードの埋め込み MATLAB Functionブロック

SimulinkにMATLABアルゴリズムを埋め込んでシミュレーション

プリコンパイル処理により高速動作

C/HDLコード生成に対応

MATLAB Function

ブロック Simulinkモデルの処理をMATLABコードで記述可能

Page 47: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

47

ステートマシンの設計環境:Stateflow

シーケンス制御・条件分岐、複数モードシステムを直感的にモデリング、HDL生成

OFF状態

ON状態

遷移条件 グラフィカル関数

ステートチャート

(状態遷移図)

フローチャート

(流れ図)

Stateflowチャートブロック

Page 48: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

48

画像データの入出力機能 Computer Vision System Toolbox

AVI, WMV, MPGなどのファイルをリード

Webカメラ、フレームグラバーから

オンラインで画像データ収集

(Image Acquisition Toolbox使用)

サイズやデータタイプを問わず

画像信号を表示

Page 49: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

49

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

Page 50: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

50

詳細モデルの作成

高抽象度モデルをモディファイ(1/2)

画像信号をPixel Streamに変換

Ts = Tf / (Vsize*Hsize)

R R

R

R R

R

R

R R

R

R

R R

R

G

G G

G

G

G G

G

G

G G

G

G

G G

G

B

B B

B

B

B B

B

B

B B

B

B

B B

B

Tf

サンプル

ベース信号

R R

R

R R

R

R

R R

R

R

R R

R

G

G G

G

G

G G

G

G

G G

G

G

G G

G

B

B B

B

B

B B

B

B

B B

B

B

B B

B

Page 51: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

51

詳細モデルの作成

高抽象度モデルをモディファイ(2/2)

HDL生成のために実回路を考慮したモデルに修正

– FFの追加

– 除算処理

– 各ブロックのHDLブロックプロパティ設定

(例:ラインバッファ用DelayブロックのRAM設定)

HDL生成用

詳細モデル

Page 52: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

52

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

Page 53: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

53

固定小数点データ型設定 設定内容は生成HDLに反映

丸め設定

オーバーフロー処理

Inherit(継承) double, single,

int8, 16, 32

fixdt(任意ビット幅)

Product(乗算)ブロックの設定画面

Page 54: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

54

固定小数点モデルでの機能検証

モータ制御用

コントローラ

ビット精度が足りず外乱応答が悪化

十分な精度により

仕様を満足

定常偏差大きい

定常偏差小さい

Page 55: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

55

固定小数点設定の最適化:固定小数点ツールGUI

固定小数点ツールGUIで

オーバーフローの修正と

冗長ビットの削減を実施

オーバーフローの解消

冗長ビット削減により回路面積の削減

Page 56: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

56

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

Page 57: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

57

HDLブロックプロパティ / コードプロパティ

モデルから多様なHDL生成するためのパラメータ

Area/Speedに影響

多入力時の構造、

入出力パイプラインレベル

BlackBox化、

パイプライン挿入、

階層フラット化、

リソースシェア

フィルタの回路アークテクチャ

(Distributed Arithmetic,

Parallel, Serial)

Page 58: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

58

回路面積(演算器の使用個数)の低減 HDLブロックプロパティ:Sharing

シリアル化

パラレル化

複数の乗算器やサブシステムの処理を、時分割で共有して計算。

回路面積の低減

2

4

8

5

9

2 4 8 5 9

3

6

1

7

4

3 6 1 7 4

6

24

8

35

36

Page 59: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

59

パイプライン自動挿入によるクロック速度の向上 HDLブロックプロパティ:Distributed Pipelining

Pipelineが自動挿入

Pipelineレジスタ

複数パス間の

タイミング調整用レジスタ

設定画面

Page 60: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

60

リソースシェアリング(左)とパイプライン挿入(右)の結果

• Sharing:DSP使用個数を低減

• OutputPipelineの効果はあるレベルで飽和

Logic

Element

DSP

Fmax

左からOutputPipeline = [0, 4, 8, 12, 16] 左からSharingFactor = [0, 3, 6, 12]

Page 61: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

61

HDL Coderから生成したFIRフィルタのHDL アーキテクチャ変更による論理合成結果

1つのモデル(FIR Filterブロック)から、HDLブロックプロパティを設定することで速度/面積トレードオフの探索を短時間で実施

※ Altera Startix IV EP4S40G2F40I1

FIR Symmetric 200 tap filter

Page 62: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

62

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

Page 63: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

63

HDL生成レポートで得られる情報

リソース数

(乗算、加算、

レジスタ、RAMなど)

HDLプロパティによる

最適化結果

モデル⇔HDL

双方向対応表

モデルの表示

VHDL/Verilog

(HTML形式で表示)

モデル上の名前を継承(ポート、信号線、

process)

双方向リンク

対応箇所を

ハイライト表示

VHDL/Verilog

(HTML形式で表示)

Page 64: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

64

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

Page 65: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

65

HDL協調シミュレーションとFPGA-in-the-Loop

HDL Verifier提供機能

MATLABとSimulinkをHDLやFPGAのテスト環境として利用

生成/手書きHDLが検証対象(検証にHDL Coderは不要)

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

Simulink

MATLAB

データ通信

HDL Simulator

FPGA Board

信号パターン

制御入力

期待値

可視化、解析

プラントモデル

アナログ回路

TCP/IP, Shared Mem

TCP/IP

Page 66: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

66

FPGA-in-the-Loop動作メカニズム

Simulink上でFPGA信号を可視化解析

Simulinkモデルの高速実行 / FPGA機能検証

Board FPGA

User

Design

ユーザが用意した

ロジック Ethernet接続

自動生成される

インターフェース

Ethernet FIL

Interface

ボード上の

Ethernet PHY

Host

Computer

Ethernet

Simulink

FIL

Block

Page 67: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

67

ユーザ導入効果とシミュレーション高速化 FPGA-in-the-Loop Simulation(FIL)

適用回路:無線デジタル信号処理回路 13倍 2000倍

FIL高速化のポイント

– 期待値との照合はTo Fileブロックを使用

(Simulinkモデルと照合しない)

– フレームベース信号の利用(DSP System Toolbox機能)

– アクセラレータの使用

ユーザ

効果 Simulink 従来検証方法

(論理合成後ゲートレベル) FIL

時間 60分 200時間以上 4分30秒

Page 68: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

68

HDL Coderを使ったASIC/FPGA実装フロー

ASIC

FPGA

MATLAB/Simulink

論理合成ツール

( QuartusⅡ)

(ModelSim, Incisive)

HDL Coder

Fixed-Point Toolbox

Simulink Fixed Point

HDL Verifier

論理合成・配置配線

HDLシミュレーション・検証

HDL生成可チェッカー・生成

HDLプロパティ設定

浮動 / 固定小数点化

実装用モデル作成

シミュレーションモデル作成

Page 69: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

69

FPGAツールと連携するHDLワークフローアドバイザ

提供するワークフロー

– FPGA-in-the-Loop

– Turnkey

– Generic FPGA

包含する機能

– FPGAプロジェクト生成

– HDLチェック・生成・検証

– 論理合成・配置配線

(Altera/Xilinx連携)

– バックアノテーション

Page 70: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

70

FPGAへスタンドアローン実装:FPGA Turnkey

既存のHDLをBlackBoxで取り込み

HDLワークフローアドバイザにてピン設定

実装ステップ

1. ボードの選択

2. ピン設定

3. HDL生成

4. 合成&配置配線

5. FPGAプログラミング

Simulink

アルゴリズム Stateflow

ステートマシン

既存HDL 統合して

HDL生成

から実装まで

MATLABコード

Page 71: モデルベース開発ツールを用いたFPGA実装 MATLABプロダクトファミリの構成(機能別) Fixed Point Toolbox, Simulink Fixed Point Stateflow, SimEvents Simscape,

71

まとめ

モデルベースデザインの導入によりシステムの機能検証を早期実現

使用ブロックやHDLプロパティ設定により

様々なパターンでHDL生成可能

HDL Verifierを利用して、生成したHDLと既存HDLを統合したHDL/FPGAレベルでの検証

FPGAツールとの連携によりボード実装までサポート