1 © 2011 The MathWorks, Inc.
モデルベース開発ツールを用いたFPGA実装
~画像処理システムをHDLを書かずにFPGAに実装する!~
MathWorks Japan
アプリケーションエンジニアリング部
松本 充史 Atsushi Matsumoto
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(オプション)により
円筒図法で描いたものに、現地法人と代理店を
マッピングしたものです。
ネイティック本社オフィスビル
日本支社オフィスビル
3
MathWorks社セッション
アジェンダ
MATLAB/Simulink機能紹介
画像処理関連の機能紹介
モデルベースデザインによる開発
モデルからのHDLおよびHDLテストベンチ生成
4
MATLAB/Simulink概要
視覚的に理解可能なモデリング/シミュレーション環境
– ブロック線図シミュレーション環境
– マルチドメイン(アナログ/デジタル、タイム/イベントドリブン、浮動小数点/固定小数点)
– 開発ツールの連携による統合された開発環境
– 自動コード生成による組込み
科学技術計算のための最先端の開発環境
– 対話的なプログラミング環境
– アプリケーション固有の簡潔なプログラミング言語
– データの探索、解析、計算およびグラフィックス機能
– アルゴリズム開発、カスタマイズ可能な各種機能
計測環境 MATLAB / Simulink 実装環境
5
MATLABデスクトップ 対話形式で実行(コンパイル・リンク等が不要)→解析結果を逐一確認
ワークスペース MATLAB メモリ領域
コマンドウィンドウ 各種コマンド実行
コマンド履歴
フィギュア
ウィンドウ
現在のフォルダ
6
ダブルクリック
シミュレーション結果
ブロック線図シミュレータ Simulink 各種システムの数式モデルの作成・シミュレーションが可能
ライブラリブラウザ
シミュレーション実行
ブロックパラメータ
ドラッグ&ドロップ
7
離散系マルチレートシステムのモデリング・シミュレーション アナログ・デジタル混在、マルチレートシステムのモデリング
マルチレートシステムの間引き・補間処理をユーザが意識することなくモデリング
入力のアナログ信号/
オーバサンプリング後の信号
出力信号のスペクトル
デジタルフィルタ アップサンプル
アナログフィルタ
スペクトルの表示
>> ovsmpl
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
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
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)
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
12
フィルタ設計・解析GUI:FDATool (Filter Design & Analysis Tool)
Signal Processing Toolbox
①フィルタ設計
②ワークスペースからインポート
③極零エディタ
④モデルの実現
⑤量子化パラメータ設定
⑥フィルタの変換
⑦マルチレートフィルタの作成
作成したフィルタの管理
(複数のフィルタを保存、接続)
Designボタン
Analysisボタン 様々な応答を表示
周波数/位相/群遅延/位相遅延
インパルス/ステップ/零極配置
フィルタ係数/フィルタ情報
>> fdatool
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('空間変換') %画像表示
変換して抽出
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
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
フェーズドアレイシステムの設計・シミュレーション
波形設計・解析、時間・空間処理
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
17
Computer Vision System Toolboxの機能
豊富な画像処理アルゴリズムを提供
– マルチメディア動画ファイルの入出力
– テキストやグラフィックスのオーバレイ
– 動き検出
– 特徴検出
– オブジェクトのトラッキング
– フィルタリング、幾何学変換、モルフォロジ
コード生成に対応
– 全てのブロックがCコード生成に対応
– 詳細化を行ってからHDL生成
18
Simulink画像処理オプションを利用した
車線検出シミュレーション
アプリケーション分野別に各種ライブラリを提供
(この例ではComputer Vision System Toolboxを利用)
仕様、アルゴリズムの検討が短期間で終了
>> vipldws_win
エッジ検出
フィルタ 2値化 ハフ変換 ピーク検出
19
オプティカルフローによる動画像認識
Computer Vision System Toolbox
開発したアルゴリズムをその場で映像表示
Simulinkによる画像フレーム間処理の実現
ストリーミング・シミュレーション
入力画像 速度ベクトル表示
20
固定小数点演算、シミュレーションオプション
Fixed-Point Toolbox
MATLABで固定小数点演算
オーバーフロー発生箇所の検出
倍精度浮動小数点演算との比較
固定小数点フィルタの
ダイナミックレンジ、リミット
サイクル発振の解析
固定小数点化による精度検証が可能
Simulink Fixed Point
Simulink既存ブロックで固定小数点設定が可能
設定はC/HDLコード生成結果に反映
固定小数点アドバイザ
スケーリングの最適化
21
浮動小数点⇒固定小数点モデルへの変換 Simulink Fixed Point
固定小数点アドバイザ:浮動小数点モデルに対して固定小数点化をサポート
>> fxpdemo_fpa
22
固定小数点ツール:スケーリングの最適化機能 Simulink Fixed Point
固定小数点モデルに対して、シミュレーションのログから最適なスケーリング(小数点位置)を算出して設定を最適化
提示されたスケーリング
固定小数点ツールGUI
>> fxpdemo_sine_ovfl
最適化前の固定小数点設定
最適化後の固定小数点設定
23
Cコード生成・検証オプション
MATLAB Coder
MATLABコードから等価なC
コードを生成
スタンドアローン化
アルゴリズムの配布
Simulink Coder
SimulinkモデルからCコード生成
プロトタイピング用
浮動小数点CPU向けコード
Embedded Coder
組込み用Cコード生成
固定小数点コード対応
各社IDEとリンク、デバッグの自動化
ターゲット用デバイスドライバブロック
デスクトップまたは組込み用Cコード生成および検証
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
+
+
+
+
25
MathWorks社セッション
アジェンダ
MATLAB/Simulink概要
画像処理関連の機能紹介
モデルベースデザインによる開発
モデルからのHDLおよびHDLテストベンチ生成
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%のエラーは
見つからない
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など別言語に変換する手間は膨大
仕様エラーや変更による実装用コードの修正作業は工数大
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
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
30
MATLAB and Simulink
アルゴリズム開発とシステム開発
モデルベースデザインによる実装
検証
Functional Simulation
Static Timing Analysis
Timing Simulation
Behavioral Simulation
Back Annotation 実装
Map
Place & Route
Synthesis
FPGA
ハードウェア
ビヘイビア
協調シミュレーション HDL生成
RTL
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
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
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ボードと協調シミュレーション
ワークフローを統合 • アルゴリズム/ハードの協働
• 尐ない繰り返しで最適な設計
モデルベースデザインのメリット
34
モデルベースデザイン導入後の効果予想
Source: The MathWorks, Early Verification presentation
エラーの早期発見によって
手戻り削減、効率改善
60%
21%
12%7%
55%
22%
15%
8%
0%
10%
20%
30%
40%
50%
60%
70%
仕様 設計 実装 検証
モデルベースデザイン導入後のイメージ
エラー混入 エラー検出
仕様段階での
シミュレーション
が重要
エラーを後工程に持ち越さない
35
画像処理IC開発事例
Simulink適用前
アプリケーション – デジタルカメラ用画像処理IC
ターゲットデバイス – FPGAプロトタイプ~カスタムIC
適用前の問題点 – 手戻りが多く、時間がかかっていた。
⇒紙の仕様書+Cシミュレーションで顧客に提案
⇒Verilog記述+FPGAプロトタイプ
– C、SystemCなどもトライしたが・・・
36
画像処理IC開発事例
Simulink適用後
高抽象度モデリングによるアルゴリズム検証
– Computer Vision System Toolboxの利用
モデリング後すぐにシミュレーションで結果確認
– デザインレビューや顧客への提案に利用できる
37
画像処理IC開発事例
Simulink適用後
既存ブロックだけでなくMATLAB Functionブロックの併用により柔軟性がUP
Simulinkに埋め込んだMATLABコードからもHDL
生成できます。
38
画像処理IC開発事例
Simulink適用後
高抽象度モデル(CVSTモデル)とHDL用低抽象度
モデル(Pixel Stream)の等価性検証が容易
高抽象度
HDL生成用
HDLコシム 注 CVST:Simulinkオプション
Computer Vision System Toolbox
39
紙仕様書+Cシミュレーション:2ヶ月
担当エンジニアM様のコメント
仕様検討からプロトタイピングまでが85%低減しました。C, SystemCなどの上位設計言語と比較してブロック線図での設計はハード設計者向きだと思います。
Simulink
: 1週間+α
-85%
40
MathWorks社セッション
アジェンダ
MATLAB/Simulink概要
画像処理関連の機能紹介
モデルベースデザインによる開発
モデルからのHDLおよびHDLテストベンチ生成
41
一般的なRTL設計:同期回路設計とは
一般的にFPGA/ASIC設計には同期回路設計が用いられる
– フリップフロップ(FF)の間に挟んだ論理回路で構成
– 論理回路の転送時間がCLK周期を超えないよう設計
– FF間の転送時間だけ考えれば良いので設計が容易
FF
FF
FF
FF
clk
42
同期回路設計を考慮したSimulinkモデル
オレンジ色は
FFに相当する
Delayブロック
FFに相当するDelayブロックと処理ブロックで構成
⇒動作合成ではない
Delayブロックのパラメータによる自動挿入機能
⇒ Distributed Pipelining
⇒元モデルはデバイス依存しない(再利用性高い)設計資産
低~高抽象度まで用意されたブロック
⇒低抽象度:+, ×, ANDなどHDL記述同等
⇒高抽象度:Sin/Cos, フィルタ, 誤り訂正(RS)、FFT、ベクタ信号等
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
44
HDL Coderモデルの作成 対応するエントリ
MATLAB Stateflow ステートマシン
コントロールロジック
Simulink データパス系
システム全体
MATLAB データパス
コントロールロジック
HDL生成 HDL生成
ブロック生成
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法による
オプティカル・フロー
数式を
モデル化
46
SimulinkモデルにMATLABコードの埋め込み MATLAB Functionブロック
SimulinkにMATLABアルゴリズムを埋め込んでシミュレーション
プリコンパイル処理により高速動作
C/HDLコード生成に対応
MATLAB Function
ブロック Simulinkモデルの処理をMATLABコードで記述可能
47
ステートマシンの設計環境:Stateflow
シーケンス制御・条件分岐、複数モードシステムを直感的にモデリング、HDL生成
OFF状態
ON状態
遷移条件 グラフィカル関数
ステートチャート
(状態遷移図)
フローチャート
(流れ図)
Stateflowチャートブロック
48
画像データの入出力機能 Computer Vision System Toolbox
AVI, WMV, MPGなどのファイルをリード
Webカメラ、フレームグラバーから
オンラインで画像データ収集
(Image Acquisition Toolbox使用)
サイズやデータタイプを問わず
画像信号を表示
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プロパティ設定
浮動 / 固定小数点化
実装用モデル作成
シミュレーションモデル作成
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
51
詳細モデルの作成
高抽象度モデルをモディファイ(2/2)
HDL生成のために実回路を考慮したモデルに修正
– FFの追加
– 除算処理
– 各ブロックのHDLブロックプロパティ設定
(例:ラインバッファ用DelayブロックのRAM設定)
HDL生成用
詳細モデル
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プロパティ設定
浮動 / 固定小数点化
実装用モデル作成
シミュレーションモデル作成
53
固定小数点データ型設定 設定内容は生成HDLに反映
丸め設定
オーバーフロー処理
Inherit(継承) double, single,
int8, 16, 32
fixdt(任意ビット幅)
Product(乗算)ブロックの設定画面
54
固定小数点モデルでの機能検証
モータ制御用
コントローラ
ビット精度が足りず外乱応答が悪化
十分な精度により
仕様を満足
定常偏差大きい
定常偏差小さい
55
固定小数点設定の最適化:固定小数点ツールGUI
固定小数点ツールGUIで
オーバーフローの修正と
冗長ビットの削減を実施
オーバーフローの解消
冗長ビット削減により回路面積の削減
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プロパティ設定
浮動 / 固定小数点化
実装用モデル作成
シミュレーションモデル作成
57
HDLブロックプロパティ / コードプロパティ
モデルから多様なHDL生成するためのパラメータ
Area/Speedに影響
多入力時の構造、
入出力パイプラインレベル
BlackBox化、
パイプライン挿入、
階層フラット化、
リソースシェア
フィルタの回路アークテクチャ
(Distributed Arithmetic,
Parallel, Serial)
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
59
パイプライン自動挿入によるクロック速度の向上 HDLブロックプロパティ:Distributed Pipelining
Pipelineが自動挿入
Pipelineレジスタ
複数パス間の
タイミング調整用レジスタ
設定画面
60
リソースシェアリング(左)とパイプライン挿入(右)の結果
• Sharing:DSP使用個数を低減
• OutputPipelineの効果はあるレベルで飽和
Logic
Element
DSP
Fmax
左からOutputPipeline = [0, 4, 8, 12, 16] 左からSharingFactor = [0, 3, 6, 12]
61
HDL Coderから生成したFIRフィルタのHDL アーキテクチャ変更による論理合成結果
1つのモデル(FIR Filterブロック)から、HDLブロックプロパティを設定することで速度/面積トレードオフの探索を短時間で実施
※ Altera Startix IV EP4S40G2F40I1
FIR Symmetric 200 tap filter
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プロパティ設定
浮動 / 固定小数点化
実装用モデル作成
シミュレーションモデル作成
63
HDL生成レポートで得られる情報
リソース数
(乗算、加算、
レジスタ、RAMなど)
HDLプロパティによる
最適化結果
モデル⇔HDL
双方向対応表
モデルの表示
VHDL/Verilog
(HTML形式で表示)
モデル上の名前を継承(ポート、信号線、
process)
双方向リンク
対応箇所を
ハイライト表示
VHDL/Verilog
(HTML形式で表示)
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プロパティ設定
浮動 / 固定小数点化
実装用モデル作成
シミュレーションモデル作成
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
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
67
ユーザ導入効果とシミュレーション高速化 FPGA-in-the-Loop Simulation(FIL)
適用回路:無線デジタル信号処理回路 13倍 2000倍
FIL高速化のポイント
– 期待値との照合はTo Fileブロックを使用
(Simulinkモデルと照合しない)
– フレームベース信号の利用(DSP System Toolbox機能)
– アクセラレータの使用
ユーザ
効果 Simulink 従来検証方法
(論理合成後ゲートレベル) FIL
時間 60分 200時間以上 4分30秒
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プロパティ設定
浮動 / 固定小数点化
実装用モデル作成
シミュレーションモデル作成
69
FPGAツールと連携するHDLワークフローアドバイザ
提供するワークフロー
– FPGA-in-the-Loop
– Turnkey
– Generic FPGA
包含する機能
– FPGAプロジェクト生成
– HDLチェック・生成・検証
– 論理合成・配置配線
(Altera/Xilinx連携)
– バックアノテーション
70
FPGAへスタンドアローン実装:FPGA Turnkey
既存のHDLをBlackBoxで取り込み
HDLワークフローアドバイザにてピン設定
実装ステップ
1. ボードの選択
2. ピン設定
3. HDL生成
4. 合成&配置配線
5. FPGAプログラミング
Simulink
アルゴリズム Stateflow
ステートマシン
既存HDL 統合して
HDL生成
から実装まで
MATLABコード
71
まとめ
モデルベースデザインの導入によりシステムの機能検証を早期実現
使用ブロックやHDLプロパティ設定により
様々なパターンでHDL生成可能
HDL Verifierを利用して、生成したHDLと既存HDLを統合したHDL/FPGAレベルでの検証
FPGAツールとの連携によりボード実装までサポート