サポートされている MATLAB データ型、演算子、制御フロー ステートメント
MATLAB® アルゴリズムから HDL コードおよび SystemC コードを生成するときは、HDL Coder™ がサポートしているデータ型、演算子、および制御フロー ステートメントを使用してください。
サポートされているデータ型
HDL Coder は、cell 配列と Inf
データ型をサポートしません。この表は、サポートされている MATLAB データ型のサブセットを示しています。
タイプ | サポートされているデータ型 | 制限 |
---|---|---|
整数 |
| Simulink® の MATLAB Function ブロックの端子には、64 ビット データに対して数値型 sfix64 または ufix64 を使用しなければなりません。 |
実数 |
| MATLAB コード内の
実数データ型は SystemC コード生成ではサポートされていません。 |
文字 | char | – |
論理値 |
| – |
固定小数点 |
| 勾配 (1.0 以外) とバイアス (0.0 以外) をもつ固定小数点数はサポートされていません。 固定小数点数の最大ワード サイズは 128 ビットです。 |
ベクトル |
| 使用できるベクトル要素の最大数は 2^32 です。 変数に添字を使用する前に、変数を完全に定義しなければなりません。 |
行列 |
| 行列は設計アルゴリズムの本体および最上位の設計関数への入力として使用できます。 次の HDL ワークフローでは、行列はサポートされていません。
|
構造体 | struct | 構造体配列はサポートされていません。 FPGA ターンキーおよび IP コアの生成ワークフローについては、構造体は設計アルゴリズムの本体ではサポートされていますが、最上位の設計関数への入力としてはサポートされていません。 構造体は、SystemC コード生成では、最上位 DUT の端子の入力および出力としてはサポートされていません。 |
列挙型 | enumeration | ターゲット言語が Verilog® の場合は、すべての列挙型メンバーの名前が設計内で固有でなければなりません。 次のワークフローまたは検証メソッドでは、最上位 DUT の端子の列挙型はサポートされていません。
列挙型は、SystemC コード生成では、最上位 DUT の端子の入力および出力としてはサポートされていません。 |
グローバル変数は HDL コード生成および SystemC コード生成ではサポートされていません。
サポートされる演算子
メモ
算術演算への大きなベクトル入力および行列入力に対して生成された HDL コードおよび SystemC コードは非効率なコードになる場合があります。これらの演算子のコードは自動的にパイプライン化されません。
算術演算子
演算 | 演算子の構文 | 同等の関数 | 制限 |
---|---|---|---|
二項の加算 | A+B | plus(A,B) | A と B のいずれも logical データ型にすることはできません。 |
行列の乗算 | A*B | mtimes(A,B) | 行列算術演算に対して生成された HDL コードはパイプライン化されず、非効率なコードになる場合があります。 |
配列の乗算 | A.*B | times(A,B) | A と B のいずれも logical データ型にすることはできません。 |
行列のべき乗 | A^B | mpower(A,B) |
行列算術演算に対して生成された HDL コードはパイプライン化されず、非効率なコードになる場合があります。 |
配列のべき乗 | A.^B | power(A,B) | A と B はスカラーでなければなりません。また、B は整数でなければなりません。 |
複素数転置 | A' | ctranspose(A) | – |
行列転置 | A.' | transpose(A) | |
行列の連結 | [A B] | なし | – |
行列のインデックス | A(r c) | なし | 変数を使用する前に、変数を完全に定義しなければなりません。 |
論理演算子
演算 | 演算子の構文 | 同等の M 関数 | メモ |
---|---|---|---|
論理 AND | A&B | and(A,B) | – |
論理 OR | A|B | or(A,B) | – |
論理 XOR | A xor B | xor(A,B) | – |
論理 AND (ショートサーキット) | A&&B | 該当なし | 条件にはショートサーキット論理演算子を使用します。 |
論理 OR (ショートサーキット) | A||B | 該当なし | 条件にはショートサーキット論理演算子を使用します。 |
要素の補数 | ~A | not(A) | – |
関係演算子
関係 | 演算子の構文 | 同等の関数 |
---|---|---|
より小さい | A<B | lt(A,B) |
以下 | A<=B | le(A,B) |
以上 | A>=B | ge(A,B) |
より大きい | A>B | gt(A,B) |
等しい | A==B | eq(A,B) |
等しくない | A~=B | ne(A,B) |
制御フロー ステートメント
HDL Coder では、次の制御フロー ステートメントや構成が制限付きでサポートされています。
制御フロー ステートメント | 制限 |
---|---|
|
HDL Coder では、 |
if |
HDL Coder では、 |
switch |
複数の |
次の制御フロー ステートメントはサポートされていません。
while
break
continue
return
parfor
次のベクトル関数は使用しないでください。これらの関数により、break
ステートメントを使用するループが生成される場合があります。
isequal
bitrevorder