Блокируйтесь параметры реализации позволяют вам управлять деталями кода, сгенерированного для определенных реализаций блока. Смотрите Параметры блоков 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
.
Установка 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
. Например, чтобы включить адаптивную конвейеризацию для продукта блокируются в подсистеме, my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'HandleDenormals', 'on')
hdlset_param
.Можно использовать свойство InputRangeReduction для sin, потому что, загар, 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.
Можно установить LatencyStrategy на Custom для этих блоков с типами данных double
и single
:
Можно также установить LatencyStrategy на Custom для этих блоков с типами данных single
:
Чтобы задать стратегию задержки блока от командной строки, используйте hdlset_param
. Например, чтобы задать минимальную задержку для продукта блокируют в подсистеме my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'LatencyStategy', 'MIN')
hdlset_param
.Можно задать пользовательскую задержку для определенных блоков в нативном режиме с плавающей точкой. При помощи пользовательской стратегии задержки вы можете компромисс между частотой часов и потреблением энергии. Чтобы задать пользовательскую стратегию задержки, установите LatencyStrategy на Custom
и задайте значение для NFPCustomLatency.
Можно задать установку NFPCustomLatency для этих блоков и с single
и с типами данных double
:
Можно также задать установку NFPCustomLatency для этих блоков с типами данных single
:
Устанавливать пользовательское значение задержки для подсистемы от диалогового окна HDL Block Properties:
Щелкните правой кнопкой по блоку.
Выберите HDL Code> HDL Block Properties.
Во вкладке Native Floating Point, для LatencyStrategy, выбирают Custom.
Задайте значение для NFPCustomLatency.
Чтобы задать стратегию задержки блока от командной строки, используйте hdlset_param
. Например, чтобы задать пользовательскую задержку четыре для продукта блокируют в подсистеме 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-кода в нативном режиме с плавающей точкой. Блоки, которые имеют эту установку, включают продукт, Делятся, Обратная величина, и так далее. При помощи этой установки можно задать, как вы хотите, чтобы 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
. Например, чтобы реализовать умножение мантиссы с помощью сумматоров и переключателей для продукта блокируют в подсистеме 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
. Например, чтобы включить адаптивную конвейеризацию для продукта блокируются в подсистеме, my_dut
в вашей модели Simulink my_design
:
hdlset_param('my_design/my_dut/Product', 'HandleDenormals', 'on')
hdlset_param
.