Разделиться

Разделите тот, введенный другим (HDL Coder)

Описание

Блок Divide доступен с Simulink®. Для получения информации о поведении симуляции и параметрах блоков, смотрите, Делятся.

Примечание

Когда вы развертываете сгенерированный HDL-код на целевой компьютер, убедитесь, что вы устанавливаете параметр signed integer division rounds to в панели Hardware Implementation диалогового окна Configuration Parameters к Zero или Simplest.

Архитектура HDL

Чтобы выполнить оптимизированную HDL операцию деления, соедините блок продукта с блоком Divide во взаимном режиме. Для получения информации о блоке Divide во взаимном режиме смотрите Взаимный Режим.

Режим по умолчанию

В режиме по умолчанию блок Divide поддерживает только целочисленные типы данных для генерации HDL-кода.

АрхитектураПараметрыОписание
default
Linear
'none'Сгенерируйте деление (/) оператор в HDL-коде.

Взаимный режим

Когда Number of Inputs установлен в /, блок Divide находится во взаимном режиме.

Этот блок имеет реализации мультицикла, которые вводят дополнительную задержку в сгенерированном коде. Чтобы видеть добавленную задержку, просмотрите сгенерированную модель или модель валидации. См. Сгенерированную Модель Модели и Валидации.

Во взаимном режиме блок Divide имеет реализации блока HDL, описанные в следующей таблице.

АрхитектураПараметрыДополнительные циклы задержкиОписание
default
Linear
'none'0

Когда вы вычисляете обратную величину, использование, HDL делит (/) оператор, чтобы реализовать деление.

ReciprocalRsqrtBasedNewtonIterations

Подписанный вход: Iterations + 5

Вход без знака: Iterations + 3

Используйте итеративный метод Ньютона. Выберите эту опцию, чтобы оптимизировать область.

Значение по умолчанию для Iterations равняется 3.

Рекомендуемое значение для Iterations между 2 и 10. Если Iterations вне рекомендуемой области значений, HDL Coder™ отображает сообщение.

ReciprocalRsqrtBasedNewtonSingleRateIterations

Подписанный вход: (Iterations * 4) + 8

Вход без знака: (Iterations * 4) + 6

Используйте конвейерный метод Ньютона одного уровня. Выберите эту опцию, чтобы оптимизировать скорость, или если вы хотите одну реализацию уровня.

Значение по умолчанию для Iterations равняется 3.

Рекомендуемое значение для Iterations между 2 и 10. Если Iterations вне рекомендуемой области значений, кодер отображает сообщение.

Итерационный метод Ньютона-Raphson:

xi+1=xif(xi)f'(xi)=xi(1.50.5axi2)

ReciprocalRsqrtBasedNewton и ReciprocalRsqrtBasedNewtonSingleRate реализуют метод Ньютона-Raphson с:

f(x)=1x21

Свойства блока HDL

Общий

ConstrainedOutputPipeline

Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. Значение по умолчанию 0. См. также ConstrainedOutputPipeline.

ConstrainedOutputPipeline

Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. Значение по умолчанию 0. См. также ConstrainedOutputPipeline.

DSPStyle

Синтез приписывает для отображения множителя. Значением по умолчанию является none. См. также DSPStyle.

InputPipeline

Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также InputPipeline.

OutputPipeline

Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также OutputPipeline.

Нативная плавающая точка

HandleDenormals

Задайте, хотите ли вы, чтобы HDL Coder вставил дополнительную логику, чтобы обработать нестандартные числа в вашем проекте. Нестандартные числа являются числами, которые имеют значения меньше, чем самое маленькое число с плавающей запятой, которое может быть представлено без начальных нулей в мантиссе. Значением по умолчанию является inherit. См. также HandleDenormals.

LatencyStrategy

Задайте, сопоставить ли блоки в вашем проекте к inherit, Max, Min, Zero или Custom для оператора с плавающей точкой. Значением по умолчанию является inherit. См. также LatencyStrategy.

NFPCustomLatency

Чтобы задать значение, установите LatencyStrategy на Custom. Задержка Coderadds HDL равняется значению, которое вы задаете для установки NFPCustomLatency. См. также NFPCustomLatency.

MantissaMultiplyStrategy

Задайте, как реализовать операцию умножения мантиссы во время генерации кода. При помощи различных настроек можно управлять использованием DSP на целевом устройстве FPGA. Значением по умолчанию является inherit. См. также MantissaMultiplyStrategy.

DivisionAlgorithm

Задайте, использовать ли Основание 2 или Основание 4 алгоритма, чтобы выполнить деление с плавающей точкой. Режим Radix 2 предлагает компромисс между задержкой и частотой. Режим Radix 4 предлагает компромисс между задержкой и использованием ресурсов. Для получения дополнительной информации смотрите DivisionAlgorithm.

Поддержка комплексных данных

Этот блок не поддерживает генерацию кода для деления с комплексными сигналами.

Ограничения

Когда вы используете блок Divide во взаимном режиме, следующие ограничения применяются:

  • Вход должен быть скаляром и должен иметь целочисленную или фиксированную точку (подписанный или без знака) тип данных.

  • Вывод должен быть скаляром и иметь целочисленную или фиксированную точку (подписанный или без знака) тип данных.

  • Только режим округления Zero поддерживается.

  • Необходимо выбрать опцию Saturate on integer overflow на блоке.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Генерация HDL-кода
Сгенерируйте Verilog и код VHDL для FPGA и проекты ASIC с помощью HDL Coder™.

Введенный в R2014a