モデルベースデザイン手法を使ったProgrammable SoCの協調設計【準備編】:画像トラッキングアルゴリズムを手戻りなく実装するために(4/4 ページ)
今回から数回にわたり「モデルベースデザイン手法を使ったProgrammable SoCの協調設計」とはどのようなものか、実践を交えて解説していきます。第1回は、CPUコアを備えたFPGAであり、ソフトとハードを協調動作できるProgrammable SoCにモデルベースデザイン手法を用いる利点を中心に紹介します。
コラム:MATLABとSimulinkとSystem Object
プログラミング環境としてのMATLABは行列演算や解析を行うために開発された非常に抽象度の高いプログラミングで科学技術計算を行える環境です。コマンド1行で行列演算を含む複雑な演算そのままの抽象度でデジタル回路の処理を模擬するには無理があります。MATLABは行列演算が得意であるがために、画像データを2次元または3次元配列として扱い、フレーム単位で処理を行いますが、実際のFPGAの中では、フレーム単位で処理が行われているわけではなく、ピクセル単位で行われています。このような抽象度の乖離(かいり)があるのに、コード生成だけできるようにしても、どこかで破綻をきたしてしまいます。
一方Simulinkはブロック線図で処理内容を記述するシミュレーション環境です。ビット演算、論理演算、乗算、加算のような抽象度が低いものから、デジタルフィルターやFFT、画像のBlob解析など1つのブロックで高機能なものまでさまざまなブロックライブラリが提供されており、それを利用することで、アルゴリズムを一からスクラッチでプログラミングしたり、アルゴリズム自体のデバッグをしたりする手間を省けます。
Simulinkで提供されているブロックを例示します。
Simulinkで提供されているブロックは、プロセッサやFPGAに組み込むためのものだけではありません。Simulinkはそもそもシミュレーションを行う環境ですので、シミュレーションに必要なさまざまなライブラリが提供されています。例えば、シミュレーションするのには何らかの入力信号や、データを可視化、保存、チェックする機能が必要です。また、フィードバック制御系のシミュレーションを行うには制御対象が必要ですし、通信システムの送受のシミュレーションを行うには通信路を模擬する必要があります。このようなシミュレーションに必要な機能を全て提供しているのです。
VHDL/Verilogなどのコードは、複数人で共同作業を行う中でファイル数が多くなってくると、階層関係やデータの流れがカオス化してしまいます。Simulinkでは信号の流れや階層構造が分かりやすいブロック線図で設計を行います。
また、Simulinkでは組み込みシステム同様ストリーミングの動作を表現でき、組み込みシステムとの親和性が高いため、Simulinkを使う方が多くのメリットを得やすいので、組み込みシステム開発では主にSimulinkが利用されます。
プログラムによる開発が好みの場合は、組み込み開発と親和性が高いストリーミング処理に最適化されたMATLABコードのフレームワークがあります。それがDSP System Toolbox、Communications System Toolbox、Computer Vision System Toolbox、Vision HDL Toolboxなどで使えるSystem Objectです。System Objectはオブジェクト指向のMATLABコードの一種で、オブジェクトの定義、メソッドという手順でプログラムを記述、実行します。そのメソッドをループ実行することで、ストリーミング処理が実行できるのです。System ObjectとSimulinkで処理を行った場合に、どのような記述になるか示したのが下図です。
これまでMATLABで書いていたコードをSystem Objectに書き換えるのは手間と考える方もいるかもしれません。しかし、System Objectでは組み込みシステムなどの実システムの振る舞いをシミュレートしながら実現可能性をチェックすることができるだけでなく、組み込み開発においてはARM Cortex-M/A向けの最適化されたCコード生成の機能があったり、抽象度の高い関数からHDLコード生成ができたりしますので、利用をおすすめします。
著者
松本 充史:MathWorks Japan アプリケーションエンジニアリング部 プリンシパルアプリケーションエンジニア
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- モデルベース開発ツールを使いこなせ
組み込みシステム開発チームは、新製品をいかに早く市場に送り出すかでしのぎを削っている。そのための方策として、設計者らはモデルベースの開発ツールに目を向け始めている。ますます複雑になるソフトウエア開発を迅速に行うためだ。そうしたツールの多くは、UMLをベースとしている。 - 最新ツールが支えるモデルベース設計
組み込みシステムの大規模化、複雑化が進むに従って、ソフトウエア開発の負担が大きくなってきた。そこで数年前から注目されてきたのがモデルベース設計である。本稿では、モデルベースのソフトウエア開発をサポートするために、どのようなツールが開発されており、どのように活用されているのかを紹介する。 - 「MATLAB」ファイルからHDLコードを直接生成、新オプションでHDL対応を拡充
モデルベース設計環境「MATLAB/Simulink」の新バージョン「R2012a」の発表に合わせて、HDLに対応する新オプションが2つ追加された。「HDL Coder」は「MATLAB」ファイルからのHDLコードを自動生成が可能。「HDL Verifier」は、MATLABファイルや「Simulink」モデルに加えて、手書きのHDLコードをFPGAの評価ボードに実装して、検証作業を行うことができる。 - 「MATLAB/Simulink」の新バージョン「R2010b」、信号処理/通信機能向けの機能を強化