Числовые факторы с собственным компонентом, с плавающей точкой

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

HDL Coder™ генерирует код, который выполняет стандарт IEEE 754 арифметики с плавающей точкой. Собственный компонент HDL Coder поддержки с плавающей точкой:

  • Вокруг к самому близкому режиму округления

  • Нестандартные числа

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

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

Вокруг к самому близкому округлению режима

Собственный компонент HDL Coder использование с плавающей точкой раунд к самому близкому даже округляющемуся режиму. Этот режим разрешает все связи путем округления к самой близкой ровной цифре.

Этот метод округления требует по крайней мере трех запаздывающих битов после 23 битов мантиссы. MSB называется "Сторожевым" разрядом, средний бит называется Круглым битом, и LSB называется Липким битом. Таблица показывает округляющееся действие, что HDL Coder выполняет на основе различных значений трех запаздывающих битов. x обозначает, что не заботится о значении и может взять или 0 или 1.

Округление битовОкругление действия
0xx

Никакое действие не выполняется.

100Связь. Если бит мантиссы, который предшествует "Сторожевому" разряду, является 1, окружите, в противном случае никакое действие не выполняется.
101Окружить.
11xОкружить.

Нестандартные числа

Нестандартные числа являются числами, которые имеют равное нулю поле экспоненты и ненулевое поле мантиссы. Ведущий бит мантиссы является нулем.

value=(1)sign*(0+Σ23i=1b23i2i)*2126

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

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

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

Обработка исключений

Если вы выполняете операции, такие как деление на нуль или вычисляете логарифм отрицательного числа, HDL Coder обнаруживает и сообщает об исключениях. Таблица суммирует отображение от кодирования числа с плавающей запятой к значению номера для различных видов исключений. x обозначает, что не заботится о значении и может взять или 0 или 1.

ЗнакЭкспонентаМантиссаЗначениеОписание
x0xFF0x00000000

value=(1)S

Бесконечность
x0xFFНенулевое значение

значение = NaN

Не номер
x0x000x00000000

значение = 0

Нуль
x0x00Ненулевое значение

value=(1)sign*(0+Σ23i=1b23i2i)*2126

Нестандартный
x0x00 <E <0xFFx

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

Нормальный

Относительная точность и факторы ULP

Представление бесконечно вещественных чисел с конечным числом битов требует приближения. Это приближение может привести к погрешностям округления в расчете с плавающей точкой. Чтобы измерить погрешности округления, стандарт с плавающей точкой использует относительную погрешность и ULP (Модули в Последнем Месте) ошибка.

ULP

Если область значений экспоненты не верхне ограничена, Модули в Ласт-Плэйс (ULP) числа с плавающей запятой x расстояние между двумя самыми близкими ведущими двойственную политику числами с плавающей запятой a и b самый близкий к x. Стандарт IEEE 754 требует, чтобы результат элементарной арифметической операции, такой как сложение, умножение и деление был правильно кругл. Правильно округленный результат означает, что округленный результат в 0,5 ULP точного результата.

ULP каждый означает добавлять 1 к десятичному значению номера. Таблица показывает приближение пи к девяти десятичным цифрам и как ULP каждый изменяет приближенное значение.

Число с плавающей запятойЗначение в десятичном числеПредставление IEEE 754 для Одного ТиповULP
3.14159274110785300110|10000000|100100100001111110110110
3.14159297910785300120|10000000|100100100001111110111001

Разрыв между двумя последовательно представимыми числами с плавающей запятой варьируется согласно величине.

Число с плавающей запятойЗначение в десятичном числеПредставление IEEE 754 для Одного ТиповULP
123456712346133040|10010011|001011010110100001110000
1234567.12512346133050|10010011|001011010110100001110011

Относительная погрешность

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

Число с плавающей запятойЗначение в десятичном числе Представление IEEE 754 для Одного ТиповULPОтносительная погрешность
838860812582912000|10010110|0000000000000000000000001
838860712582911980|10010101|1111111111111111111111012.3841858e-07
110653532160|01111111|0000000000000000000000001.1920929e-07
210737418240|10000000|0000000000000000000000012.3841858e-07

Величина относительной погрешности зависит от действительного значения числа с плавающей запятой.

В MATLAB®, eps функционируйте измеряет относительную точность числа с плавающей запятой. Для получения дополнительной информации смотрите eps.

Смотрите также

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

Функции

Связанные примеры

Больше о