Начало работы с HDL Coder Native с плавающей точкой

Нативная поддержка с плавающей точкой в HDL- Coder™ позволяет вам генерировать код из проекта с плавающей точкой. Если ваш проект имеет сложные математические и тригонометрические операции или имеет данные с большой динамической областью значений, используйте native с плавающей точкой.

Ключевые возможности

В вашем Simulink® модель:

  • Вы можете иметь половинную точность, одинарную точность и двойную точность типов данных с плавающей точкой и операций.

  • Можно иметь комбинацию целого числа, с фиксированной точкой и операциями с плавающей точкой. При помощи Data Type Conversion блоков можно выполнить преобразования между плавающей точкой и типами данных с фиксированной точкой.

Сгенерированный код:

  • Соответствует IEEE-754 стандарту арифметики с плавающей точкой.

  • Не зависит от цели. Можно развернуть код на любом типовом FPGA или ASIC.

  • Не требует модулей DSP с плавающей точкой или жестких блоков DSP на целевых ASIC или FPGA.

HDL Coder поддерживает:

  • Математическая и тригонометрическая функции

  • Большое подмножество блоков Simulink

  • Денормальные числа

  • Настройка задержки оператора с плавающей точкой

Числовые Факторы и IEEE-754 стандартные Податливости

Нативная технология с плавающей точкой в HDL Coder придерживается стандарта IEEE на арифметику с плавающей точкой. Для базовых арифметических операций, таких как сложение, вычитание, умножение, деление и взаимное, когда вы генерируете HDL-код в собственном режиме с плавающей точкой, полученные числовые результаты совпадают с исходной моделью Simulink.

Некоторые расширенные математические операции, такие как экспоненциальные, логарифмические и тригонометрические операторы, имеют специфическое для машины поведение реализации, потому что эти операторы используют повторяющиеся реализации на основе рядов Тейлора и Ремеза. Когда вы используете эти операторы в нативном режиме с плавающей точкой, сгенерированный HDL-код может иметь относительно небольшие числовые различия от модели Simulink. Эти числовые различия находятся в пределах допустимого диапазона и, следовательно, указывают на податливость IEEE-754 стандарту.

Чтобы сгенерировать код, соответствующий IEEE-754 стандарту, HDL Coder поддерживает:

  • Скругление до ближайшего режима округления

  • Денормальные числа

  • Исключения, такие как NaN (не число), Inf и нуль

  • Индивидуальная настройка ULP (модулей измерения на последнем месте) и относительная точность

Для получения дополнительной информации см. «Числовые факторы с собственной плавающей точкой».

Типы с плавающей точкой

Одинарная точность

В стандарте IEEE 754-2008 одинарная точность числа с плавающей запятой составляет 32 бита. 32-битный номер кодирует 1-битный знак, 8-битный экспонент и 23-битный мантисса.

Этот график является нормированным представлением для чисел с плавающей запятой. Можно вычислить фактическое значение нормального числа как:

value=(1)sign*(1+Σ23i=1b23i2i)*2(e127)

Поле экспоненты представляет экспоненту плюс смещение 127. Размер мантиссы 24 бита. Начальный бит равен 1, поэтому представление кодирует более низкие 23 бита.

Используйте типы с одной точностью для приложений, которые требуют большей динамической области значений, чем типы с половинной точностью. Операции с одной точностью потребляют меньше памяти и имеют более низкую задержку, чем типы с двойной точностью.

Двойная точность

В стандарте IEEE 754-2008 одинарная точность числа с плавающей запятой составляет 64 бита. 64-битный номер кодирует 1-битный знак, 11-битный экспонент и 52-битный мантисса.

Double-precision floating-point bit encoding.

Поле экспоненты представляет экспоненту плюс смещение 1023. Размер мантиссы 53 бита. Начальный бит равен 1, поэтому представление кодирует более низкие 52 бита.

Используйте типы двойной точности для приложений, которые требуют большей динамической области значений, точности и точности. Эти операции используют большую площадь на ПЛИС и более низкую целевую частоту.

Половинная точность

В стандарте IEEE 754-2008 половинная точность числа с плавающей запятой составляет 16 бит. 16-битный номер кодирует 1-битный знак, 5-битный экспонент и 10-битный мантисса.

Half-precision floating-point bit encoding.

Поле экспоненты представляет экспоненту плюс смещение 15. Размер мантиссы 11 бит. Начальный бит равен 1, поэтому представление кодирует более низкие 10 бит.

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

При использовании half типы, можно хотеть явным образом задать Output data type блоков равной half вместо настройки по умолчанию Inherit: Inherit via internal rule. Чтобы узнать, как программно изменить параметры, смотрите Задать параметры блоков для нескольких блоков программно.

Факторы о типах данных

С собственной поддержкой с плавающей точкой HDL Coder поддерживает генерацию кода из моделей Simulink, которые содержат сигналы с плавающей точкой и сигналы с фиксированной точкой. Можно хотеть смоделировать проект с типами с плавающей точкой на:

  • Реализуйте алгоритмы, которые имеют большую или неизвестную динамическую область значений, который может попасть за пределы области значений представимых фиксированных точек.

  • Реализуйте сложные математические и тригонометрические операции, которые трудно спроектировать в фиксированной точке.

  • Получите более высокую точность и лучшую точность.

Проекты с плавающей точкой потенциально могут занимать больше площади на целевом компьютере. В вашей модели Simulink рекомендуется использовать типы данных с плавающей точкой в пути данных алгоритма и типы данных с фиксированной точкой в логике управления алгоритмом. Этот рисунок показывает раздел модели Simulink, которая использует Single и фиксированные точки. При помощи Data Type Conversion блоков можно выполнить преобразования между одним и фиксированные точки.

См. также

Руководства по моделированию

Функции

Похожие примеры

Подробнее о