2015-03-25 6 views
-1

У меня есть число с плавающей запятой в verilog, я хочу сдвинуть его вправо, чтобы сделать стандарт IEEE, но я не знаю, где точка, чтобы понять, стандартно это или нет (прекратить смещение) ,с плавающей запятой в verilog

Что мне делать?

второй вопрос: если я смену с плавающей запятой следующим образом: 10001.11 вправо, что происходит в verilog? 0100.111 или 0100.11?

IEEE standard

+0

Почему вам нужно перейти, чтобы сделать это IEEE стандарт это IEEE стандарт 754 – Morgan

+0

Что произошло, когда вы попробовали смену '>>', которую я получаю: 'Незаконный оператор для реальных выражений: >>.' почему не просто умножить на 0,5. – Morgan

+0

Я хочу сделать это до 1.000111, чтобы быть нормализованным (его моя ошибка, чтобы сказать, что он стандартный), tnx i умножается на 0,5, но что происходит? 0100.111? @morgan – user76767

ответ

0

IEEE 1800-2012 последние спецификации SystemVerilog состояния:

5.7.2 Real буквальные константы

Реальные буквенных постоянных чисел должны быть представлены, как описано в стандарте IEEE 754, Стандарт IEEE для чисел с плавающей запятой с двойной точностью.

...

6.12 Real, shortreal, и в реальном времени типы данных
Реальный * тип данных такой же, как C двойником. Краткодействующий тип данных совпадает с положением C. Заявки в реальном времени обрабатываются синонимом с реальными декларациями и могут использоваться взаимозаменяемо. Переменные этих трех типов совместно именуются как реальные переменные

* Реальные и shortreal типы представлены, как описано IEEE Std 754.

Wikipedia IEEE 754

0

Одна вещь, чтобы убедиться, является ли вы «Имеет номер floating point или номер fixed-point. На практике они хранятся очень по-разному, причем номера с фиксированной точкой намного проще обрабатывать.

  • Номера с фиксированной точкой сохраняются так же, как и любое другое целое число. Разница заключается в том, когда они интерпретируются, десятичная точка добавляется в бит позиции. Например, вы можете сохранить 16-но число, но, скажем, последние 4 бита после десятичной точки. Это иногда называют 12.4, убедитесь, что вы прокомментируете свой код, чтобы это было ясно. Вам также нужно отслеживать, является ли число положительным значением или значением дополнения 2.

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

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

10001,11 >> 1 = 11000,11

Заметим, что если ваш номер будет подписан 2 в дополнение, то MSB, будут скопированы из MSB числа до сдвига (это сохраняет знак до и после смены).

0

Вы рассказываете об операции с фиксированной точкой. Операция сдвига не работает с числами с плавающей запятой.

Verilog имеет тип с плавающей точкой - реальный, но этот тип не для синтеза и не поддерживают oparation >> (сдвиг)

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

Но если вы хотите, чтобы умножить число, вы должны работать с показателем и мантиссы частей

0

Чтобы сделать это IEEE стандарт. вам необходимо следовать формату IEEE-754 для представления чисел с плавающей запятой. В стандарте существуют различные типы представлений с плавающей запятой.

  1. половину точности (или FP16), где вы можете иметь 1 бит для знака, 5-бит для экспоненты и 10 бита для мантиссы.

  2. полная точность (или FP32), где вы можете иметь 1 бит для знака, 8 бит для экспоненты и 23 бит для мантиссы и так далее.

Вы можете выполнять любые операции с FP16 и FP32 представлений, как сложение, вычитание, умножение и т.д.

Смежные вопросы