Нативная технология с плавающей точкой может сгенерировать 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 | Окружить. |
Нестандартные числа являются числами, которые имеют равное нулю поле экспоненты и ненулевое поле мантиссы. Ведущий бит мантиссы является нулем.
Нестандартные числа имеют величины меньше, чем самое маленькое число с плавающей запятой, которое может быть представлено без начальных нулей в мантиссе. Присутствие нестандартных чисел указывает на потерю значительных цифр, которые могут накопиться по последующим операциям и в конечном счете привести к неожиданным значениям.
Логика, чтобы обработать нестандартные числа включает подсчет количества начальных нулей и выполнения операции сдвига влево, чтобы получить нормированное представление. Сложение этой логики увеличивает место области на целевом устройстве и может влиять на синхронизацию вашего проекта.
При использовании нативной поддержки с плавающей точкой можно задать, хотите ли вы, чтобы HDL Coder обработал нестандартные числа в вашем проекте. По умолчанию генератор кода не проверяет на нестандартные числа, который сохраняет область на целевой платформе.
Если вы выполняете операции, такие как деление на нуль или вычисляете логарифм отрицательного числа, HDL Coder обнаруживает и сообщает об исключениях. Таблица суммирует отображение от кодирования числа с плавающей запятой к значению номера для различных видов исключений. x
обозначает, что не заботится о значении и может взять или 0 или 1.
Знак | Экспонента | Мантисса | Значение | Описание |
---|---|---|---|---|
x | 0xFF | 0x00000000 |
| Бесконечность |
x | 0xFF | Ненулевое значение | значение = NaN | Не номер |
x | 0x00 | 0x00000000 | значение = 0 | Нуль |
x | 0x00 | Ненулевое значение |
| Нестандартный |
x | 0x00 <E <0xFF | x |
| Нормальный |
Представление бесконечно вещественных чисел с конечным числом битов требует приближения. Это приближение может привести к погрешностям округления в расчете с плавающей точкой. Чтобы измерить погрешности округления, стандарт с плавающей точкой использует относительную погрешность и ULP (Модули в Последнем Месте) ошибка.
Если область значений экспоненты не верхне ограничена, Модули в Ласт-Плэйс (ULP) числа с плавающей запятой x расстояние между двумя самыми близкими ведущими двойственную политику числами с плавающей запятой a и b самый близкий к x. Стандарт IEEE 754 требует, чтобы результат элементарной арифметической операции, такой как сложение, умножение и деление был правильно кругл. Правильно округленный результат означает, что округленный результат в 0,5 ULP точного результата.
ULP каждый означает добавлять 1
к десятичному значению номера. Таблица показывает приближение пи к девяти десятичным цифрам и как ULP каждый изменяет приближенное значение.
Число с плавающей запятой | Значение в десятичном числе | Представление IEEE 754 для Одного Типов | ULP |
---|---|---|---|
3.141592741 | 1078530011 | 0|10000000|10010010000111111011011 | 0 |
3.141592979 | 1078530012 | 0|10000000|10010010000111111011100 | 1 |
Разрыв между двумя последовательно представимыми числами с плавающей запятой варьируется согласно величине.
Число с плавающей запятой | Значение в десятичном числе | Представление IEEE 754 для Одного Типов | ULP |
---|---|---|---|
1234567 | 1234613304 | 0|10010011|00101101011010000111000 | 0 |
1234567.125 | 1234613305 | 0|10010011|00101101011010000111001 | 1 |
Относительная погрешность измеряет различие между числом с плавающей запятой и приближением вещественного числа. Относительная погрешность возвращает расстояние от 1,0 до следующего большего числа. Эта таблица показывает, как действительное значение номера изменяется с относительной точностью.
Число с плавающей запятой | Значение в десятичном числе | Представление IEEE 754 для Одного Типов | ULP | Относительная погрешность |
---|---|---|---|---|
8388608 | 1258291200 | 0|10010110|00000000000000000000000 | 0 | 1 |
8388607 | 1258291198 | 0|10010101|11111111111111111111110 | 1 | 2.3841858e-07 |
1 | 1065353216 | 0|01111111|00000000000000000000000 | 0 | 1.1920929e-07 |
2 | 1073741824 | 0|10000000|00000000000000000000000 | 1 | 2.3841858e-07 |
Величина относительной погрешности зависит от действительного значения числа с плавающей запятой.
В MATLAB®, eps
функционируйте измеряет относительную точность числа с плавающей запятой. Для получения дополнительной информации смотрите eps
.