Самый простой способ сделать VHDL с плавающей точкой? - PullRequest
1 голос
/ 15 марта 2012

Я ищу самый простой способ разделить два числа с плавающей запятой, используя VHDL.Мне нужно, чтобы код был синтезируемым (я буду реализовывать его на FPGA Spartan 3).

Первый операнд всегда будет фиксированным числом (например, 600), а второй будет целым, скажем, между 0и 99999. Фиксированное число - дивиденд, а целое число - делитель.Поэтому мне придется рассчитать что-то вроде этого: 600/124.Или любое другое число вместо 124, конечно, которое находится в диапазоне от 0 до 99999. Второе число (то, которое меняется) всегда будет целым числом !!(не будет что-то вроде 123.45).

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

Есть идеи?Спасибо!

Ответы [ 2 ]

3 голосов
/ 16 марта 2012

Есть много способов сделать это, самым простым из которых является ПЗУ. Вам нигде не требуется с плавающей запятой, поскольку деление целых чисел и компенсация ненулевого остатка может дать вам те же результаты. Я бы посоветовал рассчитать первые 600 результатов в MATLAB или электронной таблице, чтобы вы могли видеть, что обработка значений до 99999 не требуется.

Кроме того, некоторые общие номенклатуры для диапазона и точности: QI.F , где I - число целочисленных битов, а F - количество дробных битов. Таким образом, 0..99999 будет Q17.0, а ваш вывод будет Q10.0.

3 голосов
/ 16 марта 2012

В этом файле VHDL есть функция деления FP *1002* с этого сайта .

...