VHDL: Как преобразовать число с плавающей запятой в целое - PullRequest
1 голос
/ 12 февраля 2011

Я хочу передать число из числа с плавающей запятой в целое число.В основном у меня есть число с плавающей точкой от 1 до 0 с тремя десятичными разрядами, и я хочу передать его целому числу, как если бы я умножил его на 1000. Я подозреваю, что должен быть более оптимальный способ сделать это, чем использовать арифметикумульт операция x1000.Я ищу кусок кода желательно.Спасибо всем возможным кусочкам кода, ссылкам, статьям или комментариям.

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Если вы хотите это для моделирования , только вы можете сделать что-то вроде:

i <= integer(r * 1000);

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

i <= integer(r * 1024);

Тем не менее, @Potatoswatter имеет действительную точку: вам следует подумать, действительно ли вам нужна реальная (с плавающей точкой).

0 голосов
/ 12 февраля 2011

Если у вас есть двоичное число с плавающей точкой, которое не является константой, невозможно преобразовать его в целое число в [0,1000] без фактического выполнения умножения и интегрального преобразования.

Попробуйте выполнить двоичную арифметику на бумаге. Масштабирование Base-10 не работает до смены или чего-то особенного ... это просто общая операция масштабирования.

Поскольку число находится в диапазоне [0,1], рассмотрите возможность выполнения всей арифметики в фиксированной точке, возможно, используя 1/1024 в качестве единицы или даже в десятичной дроби с фиксированной точкой с 1/1000 в качестве единицы.

Вы должны использовать математику с плавающей точкой, только если вам нужно больше точности ближе к нулю.

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