浮動小数点演算子のレイテンシ値
HDL Coder™ のネイティブ浮動小数点サポートでは、浮動小数点設計から HDL コードを生成できます。HDL Coder は、ネイティブ浮動小数点モードにおいて、いくつかの Simulink® ブロックと Math Function ブロックおよび Trigonometric Function ブロックをサポートしています。以下の表は、これらの浮動小数点演算に対する既定のレイテンシ値を示しています。
ブロックのレイテンシ設定をカスタマイズして、レイテンシと最大周波数の間のトレードオフを図ることができます。詳細については、NFPCustomLatencyを参照してください。
また、ネイティブ浮動小数点 IP のグローバル カスタム レイテンシも設定できます。浮動小数点 IP のグローバル カスタム レイテンシを指定するには、表にリストされているキーワードを使用します。浮動小数点 IP のカスタム レイテンシの設定に関する詳細については、ネイティブ浮動小数点のレイテンシに関する考慮事項を参照してください。
これらの浮動小数点演算子のレイテンシを確認するには、MATLAB® で次のコマンドを入力します。
nfpconfig = hdlcoder.createFloatingPointTargetConfig('NativeFloatingPoint');
nfpconfig.IPConfigMath Operations
この表は、HDL Coder においてネイティブ浮動小数点でサポートされている基本的な数学演算と、そのレイテンシ情報のリストを示しています。基本的な数学演算には、加算、減算、乗算などが含まれます。これらのブロックの大部分は single および double 両方のデータ型で使用できます。ブロックに対応する double データ型のエントリが表示されない場合は、そのブロックは double 型をサポートしていないことを意味しています。
基本的な数学演算子
| Simulink ブロック | キーワード | データ型 | 最小出力レイテンシ | 最大出力レイテンシ | カスタム レイテンシのサポート |
|---|---|---|---|---|---|
| Sum | ADDSUB | double | 6 | 11 | はい |
| single | 6 | 11 | |||
| half | 4 | 8 | |||
| Product, Matrix Multiply または Gain | MUL | double | 6 | 9 | はい |
| single | 6 | 8 | |||
| half | 4 | 7 | |||
| Divide | DIV | double | 31 | 61 | はい |
| single | 17 | 32 | |||
| half | 10 | 19 | |||
| Product, Matrix MultiplyReciprocal | RECIP | double | 30 | 60 | はい |
| single | 16 | 31 | |||
| half | 10 | 19 | |||
| Multiply-Add | MULTADD | single | 8 | 14 | いいえ |
| Sqrt | SQRT | double | 33 | 58 | はい |
| single | 16 | 28 | |||
| half | 6 | 12 | |||
| Rounding Function | ROUNDING | double | 3 | 5 | はい |
| single | 3 | 5 | |||
| Gain(Power of 2) | GAINPOW2 | double | 1 | 2 | はい |
| single | 1 | 2 | |||
| half | 1 | 4 |
この表は、HDL Coder においてネイティブ浮動小数点でサポートされている数学関数と、そのレイテンシ情報を示しています。Math Function ブロックの [関数] 設定を使用して関数を選択できます。
数学関数
| Simulink ブロック | キーワード | データ型 | 最小出力レイテンシ | 最大出力レイテンシ | カスタム レイテンシのサポート |
|---|---|---|---|---|---|
| Rem | REM | single | 15 | 24 | いいえ |
| Mod | MOD | single | 16 | 26 | いいえ |
| Reciprocal Sqrt | RSQRT | single | 16 | 30 | はい |
| Hypot | HYPOT | single | 17 | 33 | いいえ |
| Reciprocal | RECIP | double | 30 | 60 | はい |
| single | 16 | 31 | |||
| half | 10 | 19 | |||
| Magnitude Square | - | double | 6 | 9 | はい |
| single | 6 | 8 |
この表は、HDL Coder においてネイティブ浮動小数点でサポートされている指数演算と、そのレイテンシ情報を示しています。Math Function ブロックの [関数] 設定を使用して関数を選択できます。これらのブロックは single データ型で使用できます。Double 型は Log 以外のブロックでサポートされていません。
三角関数演算
この表は、HDL Coder においてネイティブ浮動小数点でサポートされている三角関数演算と、そのレイテンシ情報を示しています。Trigonometric Function ブロックの [関数] 設定を使用して関数を選択できます。これらのブロックは single データ型で使用できます。
三角関数
| Simulink ブロック | キーワード | データ型 | 最小出力レイテンシ | 最大出力レイテンシ | カスタム レイテンシのサポート |
|---|---|---|---|---|---|
| Sin | SIN | double | 34 | 34 | いいえ |
| single | 27 | 27 | |||
| half | 8 | 14 | |||
| Cos | COS | double | 48 | 48 | いいえ |
| single | 27 | 27 | |||
| half | 9 | 14 | |||
| Tan | TAN | single | 33 | 33 | いいえ |
| Sincos | SINCOS | single | 27 | 27 | いいえ |
| Asin | ASIN | single | 17 | 23 | いいえ |
| Acos | ACOS | single | 17 | 23 | いいえ |
| Atan | ATAN | single | 36 | 36 | いいえ |
| Atan2 | ATAN2 | single | 42 | 42 | いいえ |
| Sinh | SINH | single | 18 | 30 | いいえ |
| Cosh | COSH | single | 17 | 27 | いいえ |
| Tanh | TANH | single | 25 | 43 | いいえ |
| Asinh | ASINH | single | 94 | 94 | いいえ |
| Acosh | ACOSH | single | 93 | 93 | いいえ |
| Atanh | ATANH | single | 67 | 67 | いいえ |
比較と変換
この表は、HDL Coder においてネイティブ浮動小数点でサポートされている関係演算子およびデータ型変換に関連する演算と、そのレイテンシ情報を示しています。これらのブロックは、single と double 両方のデータ型で使用できます。ただし、MinMax ブロックは除きます。このブロックは double データ型をサポートしません。Data Type Conversion ブロックについては、double データ型、half データ型、single データ型の間、および浮動小数点データ型と他の固定小数点データ型の間で変換できます。
比較と変換
| Simulink ブロック | キーワード | データ型 | 最小出力レイテンシ | 最大出力レイテンシ | カスタム レイテンシのサポート |
|---|---|---|---|---|---|
| Data Type Conversion | CONVERT | DOUBLE_TO_NUMERICTYPE | 3 | 6 | はい |
| DOUBLE_TO_SINGLE | 3 | 6 | |||
| HALF_TO_NUMERICTYPE | 2 | 3 | |||
| HALF_TO_SINGLE | 1 | 2 | |||
| NUMERICTYPE_TO_DOUBLE | 3 | 6 | |||
| NUMERICTYPE_TO_HALF | 2 | 4 | |||
| NUMERICTYPE_TO_SINGLE | 6 | 6 | |||
| SINGLE_TO_DOUBLE | 3 | 5 | |||
| SINGLE_TO_HALF | 2 | 3 | |||
| SINGLE_TO_NUMERICTYPE | 6 | 6 | |||
| Relational Operator | RELOP | double | 1 | 3 | はい |
| single | 1 | 3 | |||
| half | 1 | 2 | |||
| MinMax | MINMAX | single | 3 | 3 | いいえ |