Блокируйтесь параметры реализации позволяют вам управлять деталями кода, сгенерированного для определенных реализаций блока. См. Модель HDL Набора и Представления и Параметры блоков, чтобы изучить, как выбрать реализации блока и параметры в графический интерфейсе пользователя или командной строке.
Имена свойства заданы как векторы символов. Тип данных значения свойства характерен для свойства. В этом разделе описываются синтаксис каждого параметра реализации блока, который можно задать во вкладке Native Floating Point HDL Block Properties. Вы видите, как определение параметра влияет на сгенерированный код.
Можно использовать свойство CheckResetToZero в mod и функциях rem блока Math Function в нативном режиме с плавающей точкой. Если у вас есть числа a
и b
таким образом, что частное a/b
близко к целому числу, эта установка обрабатывает a
как интегральное кратное b
, и rem (a, b) =0. Этот результат численно точен и совпадает с результатом симуляции Simulink®. Однако вычисление этого результата использует дополнительные ресурсы и увеличивает место области на целевом устройстве FPGA.
Например, для этих значений чисел, вы получаете различные результаты симуляции, когда вы включаете и отключаете установку CheckResetToZero.
Установка CheckResetToZero | Описание |
---|---|
'on' (значение по умолчанию) | Когда вы вычисляете mod или rem двух чисел, частное которых ближе к целому числу и имеет точность, больше, чем те из данных с плавающей запятой вводят вас использование, HDL Coder™ добавляет необходимую логику, чтобы вывести результат mod или rem как нуль, когда частное чисел близко к целому числу. |
'off' | HDL Coder не вставляет дополнительную логику, чтобы вычислить частное, которое сохраняет область на целевом устройстве FPGA. |
Установить CheckResetToZero для блока из диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code HDL Block Properties.
Для CheckResetToZero выберите on или off.
Установить CheckResetToZero для блока Math Function в подсистеме, my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Math', 'CheckResetToZero, 'on')
hdlset_param
.Можно использовать DivisionAlgorithm
свойство, когда вы включаете Native Floating Point
режим для блока Divide и блока Math Function в режиме Reciprocal.
Установка DivisionAlgorithm | Описание |
---|---|
Radix-2 (значение по умолчанию) | Режим Radix 2 по умолчанию выполняет повторенные вычитания на вычислительный один бит частного в каждой итерации. Чтобы спроектировать для более низкого использования области при обменивании на задержку, используйте режим Radix 2 в сочетании с набором LatencyStrategy к |
Radix-4 | Режим Radix 4 выполняет повторенные вычитания на вычислительные два бита частного в каждой итерации. Чтобы вычислить результат, режим Radix 4 использует половину количества итераций, которое требуется режимом Radix 2. Чтобы спроектировать для более низкой задержки при обменивании на область, используйте режим Radix 4 в сочетании с набором LatencyStrategy к |
Использование ресурса деления с одинарной точностью и максимум синхронизируют частоту на Xilinx Virtex-7
Режим DivisionAlgorithm | LatencyStrategy | Задержка | Fmax | LUTs | Регистры |
---|---|---|---|---|---|
Основание 2 | Min | 17 | 334.4 МГц | 1248 | 1011 |
Max | 32 | 454.5 МГц | 1294 | 1797 | |
Основание 4 | Min | 11 | 245.5 МГц | 1956 | 865 |
Max | 20 | 453.1 МГц | 1854 | 1522 |
Задавать DivisionAlgorithm для блока из диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Во вкладке Native Floating Point задайте DivisionAlgorithm.
Чтобы задать DivisionAlgorithm для блока в командной строке, используйте hdlset_param
. Например, эта команда задает режим Radix 4 для блока Divide в подсистеме, my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Divide, 'DivisionAlgorithm', 'Radix-4')
Можно использовать HandleDenormals
свойство для определенных блоков, которые поддерживают генерацию HDL-кода в Native Floating Point
режим. Нестандартные числа являются числами, которые имеют величины меньше, чем самое маленькое число с плавающей запятой, которое может быть представлено без начальных нулей в мантиссе. С этой установкой можно задать, хотите ли вы, чтобы HDL Coder вставил дополнительную логику, чтобы обработать нестандартные числа в вашем проекте. Для получения дополнительной информации смотрите Нестандартные Числа.
Установка HandleDenormals | Описание |
---|---|
'inherit' (значение по умолчанию) | Используйте указатель denormals установка родительской подсистемы. Если эта подсистема является подсистемой высшего уровня, используйте указатель denormals устанавливающий для модели. |
'on' | Если у вас есть нестандартные числа в этих входных параметрах блока, HDL Coder добавляет логику, чтобы нормировать нестандартные числа. |
'off' | HDL Coder не вставляет дополнительную логику, чтобы обработать нестандартные числа в вашем проекте. Генератор кода обрабатывает нестандартное значение как нуль прежде, чем выполнить любой расчет. |
Включить HandleDenormals
для блока в модели, установленной параметр, HandleDenormals
, к 'on'
для того блока.
Установить указатель denormals для блока из диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Для HandleDenormals выберите inherit, on или off.
Чтобы установить указатель denormals для блока из командной строки, используйте hdlset_param
. Например, чтобы включить адаптивную конвейеризацию для блока Product в подсистеме, my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'HandleDenormals', 'on')
hdlset_param
.Можно использовать свойство InputRangeReduction в sin, cos, tan, sincos и функциях cos+jsin блока Trigonometric Function в Native Floating Point
режим. По умолчанию эта установка включена для блока, и это принимает, что ваш входной диапазон неограничен. Если ваш вход с блоком ограничен в области значений [-pi, pi]
, ваш проект не требует, чтобы логика уменьшала входной диапазон. В этом случае можно отключить эту установку, и реализация блока подвергается более низкой задержке и использует меньше ресурсов на целевом компьютере. Когда вы отключаете установку, сгенерированная модель содержит блок, который проверяет, ограничены ли входные параметры в области значений [-pi, pi]
.If у вас есть неограниченные входные параметры, сгенерированная модель, инициировал утверждение в процессе моделирования.
Установка InputRangeReduction | Описание |
---|---|
'on' (значение по умолчанию) | Принимает, что входной диапазон неограничен и вставляет дополнительную логику, чтобы уменьшать область значений входного параметра до |
'off' | Принимает, что входной параметр ограничен в области значений |
Установить InputRangeReduction для блока из диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code HDL Block Properties.
Во вкладке Native Floating Point, для InputRangeReduction, выбирают on или off.
Отключить InputRangeReduction для блока Trigonometric Function в подсистеме, my_trigonometric
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/my_trigonometric', 'InputRangeReduction, 'off')
hdlset_param
.Можно использовать LatencyStrategy
свойство для определенных блоков, которые поддерживают генерацию HDL-кода в нативном режиме с плавающей точкой. Свойство задает, хотите ли вы, чтобы блоки в вашем проекте сопоставили с минимумом, максимумом или пользовательской задержкой для нативного оператора с плавающей точкой.
Установка LatencyStrategy | Описание |
---|---|
'inherit' (значение по умолчанию) | Используйте установку стратегии задержки родительской подсистемы. Если эта подсистема является подсистемой высшего уровня, используйте установку стратегии задержки в модели. |
'Max' | Во время генерации кода HDL Coder использует максимальное значение задержки в нативном операторе с плавающей точкой. |
'Min' | Во время генерации кода HDL Coder использует минимальное значение задержки в нативном операторе с плавающей точкой. |
'Zero' | Во время генерации кода HDL Coder не добавляет задержки для нативного оператора с плавающей точкой. |
'Custom' | Во время генерации кода HDL Coder добавляет задержку, равную значению, которое вы задаете для установки NFPCustomLatency нативного оператора с плавающей точкой. Можно использовать эту установку в определенных блоках в нативном режиме с плавающей точкой. Чтобы видеть блоки, для которых можно задать установку, смотрите NFPCustomLatency. |
Чтобы задать минимальную опцию задержки для блока в модели, установите параметр, LatencyStrategy
, к 'MIN'
для того блока.
Чтобы изучить, как установить установку стратегии задержки уровня модели, смотрите Факторы Задержки с Нативной Плавающей точкой.
Установить стратегию задержки подсистемы от диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Во вкладке Native Floating Point, для LatencyStrategy, выбирают inherit, Max, Min, Zero или Custom.
Если вы устанавливаете LatencyStrategy на Custom, необходимо задать значение для NFPCustomLatency.
Для получения дополнительной информации смотрите раздел "HDL Code Generation" каждой страницы блока.
Можно установить LatencyStrategy на Custom для этих блоков с single
и double
типы данных.
Math Function в режиме Reciprocal
Можно также установить LatencyStrategy на Custom для этих блоков с single
типы данных.
Чтобы задать стратегию задержки блока из командной строки, используйте hdlset_param
. Например, чтобы задать минимальную задержку для блока Product в подсистеме my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'LatencyStategy', 'MIN')
hdlset_param
.Можно задать пользовательскую задержку для определенных блоков в нативном режиме с плавающей точкой. При помощи пользовательской стратегии задержки вы можете компромисс между частотой часов и потреблением энергии. Чтобы задать пользовательскую стратегию задержки, установите LatencyStrategy на Custom
и задайте значение для NFPCustomLatency. Для получения дополнительной информации смотрите раздел "HDL Code Generation" каждой страницы блока.
Можно задать установку NFPCustomLatency для этих блоков с обоими single
и double
типы данных.
Можно также задать установку NFPCustomLatency для этих блоков с single
типы данных.
Устанавливать пользовательское значение задержки для подсистемы от диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Во вкладке Native Floating Point, для LatencyStrategy, выбирают Custom.
Задайте значение для NFPCustomLatency.
Чтобы задать стратегию задержки блока из командной строки, используйте hdlset_param
. Например, чтобы задать пользовательскую задержку четыре для блока Product в подсистеме my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'LatencyStategy', 'Custom' hdlset_param('my_design/my_dut/Product', 'NFPCustomLatency', 4)
hdlset_param
.Можно использовать MantissaMultiplyStrategy
свойство для множителей, которые поддерживают генерацию HDL-кода в нативном режиме с плавающей точкой. Блоки, которые имеют эту установку, включают Product, Divide, Math Function (в режиме Reciprocal), и так далее. При помощи этой установки можно задать, как вы хотите, чтобы HDL Coder реализовал операцию умножения мантиссы для блоков.
Установка MantissaMultiplyStrategy | Описание |
---|---|
'inherit' (значение по умолчанию) | Использование мантисса умножает установку стратегии родительской подсистемы. Если эта подсистема является подсистемой высшего уровня, использование, мантисса умножает установку стратегии для модели. |
'FullMultiplier' | HDL Coder использует множители, чтобы выполнить операцию умножения мантиссы для нативного оператора с плавающей точкой. Множители могут использовать модули DSP на целевом устройстве. |
'PartMultiplierPartAddShift' | HDL Coder разделяет реализацию в две части. Одна часть реализована со множителями. Другая часть реализована с комбинацией сумматоров и переключателей. Множители могут использовать модули DSP на целевом устройстве. Комбинация сумматоров и переключателей не использует DSP. |
'NoMultiplierFullAddShift' | HDL Coder использует сумматоры и переключатели, чтобы реализовать умножение мантиссы. Эта опция не использует модули DSP на целевом устройстве. Можно также использовать эту опцию, если целевое устройство не содержит модули DSP. |
Чтобы реализовать умножение мантиссы с сумматорами и переключателями, установите MantissaMultiplyStrategy
, к 'NoMultiplierFullAddShift'
для того блока.
Установить адаптивную конвейеризацию для подсистемы от диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Во вкладке Native Floating Point, для MantissaMultiplyStrategy, выбирают inherit, FullMultiplier, PartMultiplierPartAddShift или NoMultiplierFullAddShift.
Чтобы задать мантиссу умножают стратегию блока из командной строки, используют hdlset_param
. Например, чтобы реализовать умножение мантиссы с помощью сумматоров и переключателей для блока Product в подсистеме my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', ... 'MantissaMultiplyStategy', 'PartMultiplierPartAddShift')
hdlset_param
.Можно использовать MaxIterations
свойство для mod и функций rem блока Math Function в Native Floating Point
режим. Если у вас есть числа a
и b
это - значительно большие целые числа, можно увеличить установку MaxIterations, чтобы совпадать с результатом симуляции Simulink. Однако вычисление этого результата использует дополнительные ресурсы и увеличивает место области на целевом устройстве FPGA.
Установка MaxIterations | Описание |
---|---|
32 (значение по умолчанию) | Количество по умолчанию итераций, чтобы вычислить результат mod и rem функционирует в |
64
| Задайте |
128
| Задайте |
Установить MaxIterations для блока из диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Во вкладке Native Floating Point, для MaxIterations, выбирают 32, 64 или 128.
Чтобы установить указатель denormals для блока из командной строки, используйте hdlset_param
. Например, чтобы включить адаптивную конвейеризацию для блока Product в подсистеме, my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'HandleDenormals', 'on')
hdlset_param
.