Собственный компонент HDL Coder™ поддержка с плавающей точкой может сгенерировать HDL-код из вашего проекта с плавающей точкой. HDL Coder поддерживает несколько Simulink® блоки и математические и тригонометрические функции в нативном режиме с плавающей точкой. Эти таблицы показывают значения задержки по умолчанию этих операций с плавающей точкой.
Можно настроить настройки задержки для большинства блоков и проект для компромиссов между задержкой и Fmax путем определения пользовательских значений задержки. Можно также установить глобальную пользовательскую задержку нативного дюйм/с с плавающей точкой. Используйте ключевые слова, перечисленные в таблицах, чтобы настроить задержку дюйм/с с плавающей точкой. Для получения дополнительной информации смотрите Факторы Задержки с Нативной Плавающей точкой.
Вы видите задержку этих операторов с плавающей точкой в MATLAB® путем ввода этих команд.
nfpconfig = hdlcoder.createFloatingPointTargetConfig('NativeFloatingPoint');
nfpconfig.IPConfigЭта таблица показывает список основных математических операций, которые поддерживаются с собственным компонентом, с плавающей точкой в HDL Coder и их информации о задержке. Основные математические операции включают сложение, вычитание, умножение, и так далее. Можно использовать большинство этих блоков с обоими single и double типы данных. Если вы не видите запись double тип данных, соответствующий блоку, это означает, что блок не поддерживает double типы.
Основные математические операторы
| Блоки Simulink | Ключевые слова | Тип данных | Минимальная Выходная задержка | Максимальная Выходная задержка |
|---|---|---|---|---|
| Add | ADDSUB | 'double' | 6 | 11 |
| Единственный | 6 | 11 | ||
| Половина | 4 | 8 | ||
| Subtract | ADDSUB | 'double' | 6 | 11 |
| Единственный | 6 | 11 | ||
| Половина | 4 | 8 | ||
| Product | MUL | 'double' | 6 | 9 |
| Единственный | 6 | 8 | ||
| Половина | 4 | 6 | ||
| Divide | DIV | 'double' | 31 | 61 |
| Единственный | 17 | 32 | ||
| Половина | 10 | 19 | ||
| Math Function | - | 'double' | 30 | 60 |
| Единственный | 16 | 31 | ||
| Multiply-Add | MULTADD | Единственный | 8 | 14 |
| Rounding Function | ROUNDING | 'double' | 3 | 5 |
| Единственный | 3 | 5 | ||
| Unary Minus | UMINUS | 'double' | – | – |
| Единственный | – | – | ||
| Половина | – | – | ||
| Sign | SIGNUM | 'double' | – | – |
| Единственный | – | – | ||
| Abs | ABS | 'double' | – | – |
| Единственный | – | – |
Эта таблица показывает математические функции, которые поддерживаются с собственным компонентом, с плавающей точкой в HDL Coder и их информации о задержке. Можно выбрать функцию с помощью установки Function блока Math Function. Можно использовать эти блоки с single типы данных: double типы не поддержаны для блоков.
Математические функции
| Блоки Simulink | Ключевые слова | Минимальная Выходная задержка | Максимальная Выходная задержка |
|---|---|---|---|
| HDL Reciprocal | HDLRECIP | 14 | 21 |
| Rem | REM | 15 | 24 |
| Mod | MOD | 16 | 26 |
| Sqrt | SQRT | 16 | 28 |
| Reciprocal Sqrt | RSQRT | 16 | 30 |
| Hypot | HYPOT | 17 | 33 |
Эта таблица показывает тригонометрические операции, которые поддерживаются с собственным компонентом, с плавающей точкой в HDL Coder и их информации о задержке. Можно выбрать функцию с помощью установки Function блока Trigonometric Function. Можно использовать эти блоки с single типы данных: double типы не поддержаны для блоков. Блок Sin имеет минимальную задержку 8 и максимальную задержку 14.
Тригонометрические функции
Эта таблица показывает экспоненциальные операции, которые поддерживаются с собственным компонентом, с плавающей точкой в HDL Coder и их информации о задержке. Можно выбрать функцию с помощью установки Function блока Math Function. Можно использовать эти блоки с single типы данных: double типы не поддержаны для блоков кроме Журнала.
Эта таблица показывает операции, связанные со сравнением чисел и преобразованиями типа данных, которые поддерживаются с собственным компонентом, с плавающей точкой в 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 |
| Единственный | 1 | 3 | ||
| Половина | 1 | 2 | ||
| MinMax | MINMAX | Единственный | 3 | 3 |