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

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

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

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

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

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

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

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

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

Этот метод округления требует по меньшей мере трёх конечных бит после 23 бит мантиссы. MSB называется бит Guard, средний бит - бит Round, а LSB - бит Sticky. Таблица показывает округление, которое HDL Coder выполняет на основе различных значений трёх конечных бит. x обозначает значение, которое не имеет значения, и может принимать значение 0 или 1.

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

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

100Галстук. Если бит mantissa, который предшествует биту Guard, равен 1, то в противном случае действие не выполняется.
101Округлить.
11xОкруглить.

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

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

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

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

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

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

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

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

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

value=(1)S

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

значение = NaN

Не число
x0x000x00000000

значение = 0

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

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

Denormal
x0x00 < E < 0xFFx

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

Нормальный

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

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

ULP

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

ULP одного означает добавление 1 десятичное значение числа. Таблица показывает приближение pi к девяти десятичным цифрам и то, как 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.

См. также

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

Функции

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

Подробнее о