米The MathWorks(マスワークス)社の「MATLAB」は、制御/信号処理/画像処理などのアルゴリズム開発に広く普及しているソフトウエア・ツールである。実際にユーザーは、MATLABで開発したアルゴリズムをDSPやマイコンにソフトウエアとして実装したり、FPGAやASICにハードウエアとして実装する手法をすでに導入している。
ただし、MATLAB上のアルゴリズムは、これらのチップにそのまま実装できるわけではない。独自のMATLAB言語で記述されているからだ。チップに実装するためには、C言語コードやHDLコードで記述し直さなければならない。
このため従来は、MATLABによるアルゴリズム開発工程と、チップへの実装工程は分断されていた。「研究部門の技術者がMATLABでアルゴリズムを開発し、機器/チップ設計部門の技術者が、これを参照しながら、実装用のC言語コードを手作業で書き起こしていた」(同社でSignal Processing and Communications担当のプロダクト・マーケティング・マネジャーを務めるArun Mulpur氏)。
そこで同社は、アルゴリズムの開発工程とチップへの実装工程を橋渡しする新機能を用意した。MATLAB言語で記述したアルゴリズムを直接、C言語のソース・コードに変換して出力する機能「Embedded MATLAB」だ。MATLABの最新バージョンである「リリース2007b」に標準機能として追加した。リリース2007bは、国内でも2007年9月下旬に代理店のサイバネットシステムが販売を始めており、価格は約35万円である。
Simulink経由で実装データへ
Embedded MATLABで生成したC言語コードは、次のように活用する。
まず、ブロック線図をベースとしたシステム全体のモデリング/シミュレーション・ツール「Simulink」にモデルとして読み込んで、さまざまな機能ブロック(Simulinkモデル)と組み合わせてシステム全体を記述する。例えば、無線システムにおける受信器の信号処理アルゴリズムであれば、送信器や無線伝搬経路のSimulinkモデルと組み合わせるといった具合だ。次にシミュレーションを実行し、システムにおけるアルゴリズムの動作を評価する。
従来もSimulink上でMATLABのアルゴリズムをモデルとしてシミュレーションすることは可能だったが、インタプリタを介して実行しており、シミュレーション速度は低かった。Embedded MATLABではC言語コードをDLL(Dynamic Link Library)化してからSimulinkに読み込むため、「5〜15倍は高速化できる」(同氏)という。
シミュレーションで妥当性が確認できれば、いよいよ実装工程だ。Embedded MATLABで生成したC言語コードをソフトウエアとして実装する場合は、Simulinkのオプション機能「Real-Time Workshop Embedded Coder」を使って、特定のマイコン/DSPに最適化する。Embedded MATLABで生成したモデルとSimulinkモデルをまとめて、1つのC言語コードを生成することも可能だ。コード密度については、「手作業による最適化に比べると低いが、実用レベルだ。作業時間を大幅に短縮できる、エラーの発生を抑えられるといったメリットの方が大きい」(同氏)とした。
ハードウエアとして実装する場合は、やはりオプションの「Simulink HDL Coder」を使う。論理合成可能なVerilog/VHDLコードを生成可能だ。さらに、LSI検証向け論理シミュレータと連携するオプションを利用すれば、SimulinkモデルとEmbedded MATLABで生成したC言語コードに加えて、ユーザーが開発済みのHDLコードをSimulink上で組み合わせて動作を確認した上で、1つのHDLコードにまとめて出力することもできる。
なお、Embedded MATLABを利用するには、Simulink本体に加えてオプションの「Real-Time Workshop」が必要になる。ただし、生成したC言語コードそのものは、Simulink以外のC言語実行環境に読み込んで使うことも可能だ。例えば、MATLABでアルゴリズムを開発し、他社が供給するC言語ベースの動作合成ツールを使って実装するという開発フローを構築できる。
Copyright © ITmedia, Inc. All Rights Reserved.