Нативная технология с плавающей точкой может сгенерировать 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
.