exponenta event banner

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

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

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

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

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

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

  • Настройка ULP (единицы на последнем месте) и относительная точность

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

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

Этот способ округления требует, по меньшей мере, трех завершающих битов после 23 битов мантиссы. MSB называется bit Guard, средний бит называется битом Round, а LSB - битом Sticky. В таблице показано действие округления, выполняемое кодером HDL на основе различных значений трех завершающих битов. x обозначает значение «don 'care» и может принимать либо 0, либо 1.

Биты округленияДействие округления
0xx

Действие не выполнено.

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

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

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

значение = (1) знак * (0 + Σ23i = 1b23 − i2 − i) * 2 − 126

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

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

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

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

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

ЗнакЭкспонентаSignificandСтоимостьОписание
x0xFF0x00000000

значение = (1) S∞

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

значение = NaN

Не число
x0x000x00000000

значение = 0

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

значение = (1) знак * (0 + Σ23i = 1b23 − i2 − i) * 2 − 126

Denormal
x0x00 < E < 0xFFx

значение = (1) знак * (1 + Σ23i = 1b23 i2 − i) * 2 (e − 127)

Нормальный

Относительная точность и соображения ULP

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

ULP

Если диапазон экспоненты не ограничен верхним пределом, то единицы измерения на последнем месте (ULP) числа с плавающей запятой x - это расстояние между двумя ближайшими к x ближайшими к числу с плавающей запятой a и b. Стандарт 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.

См. также

Рекомендации по моделированию

Функции

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

Подробнее