Как я могу использовать числа с плавающей запятой в VHDL? - PullRequest
1 голос
/ 27 октября 2019

Я пытаюсь создать конвертер RGB в YUV в VHDL.

Y = 0.299 x R + 0.587 x G + 0.114 x B

U = -0.147 x R - 0.289 x G + 0.436 x B

V = 0.615 x R - 0.515 x G -0.100 x B

В этой формуле я должен использовать и несколько чисел с плавающей запятой, таких как 0.299, 0.587 и т. Д. Как создать синтезируемый VHDL с числами с плавающей запятой?

1 Ответ

3 голосов
/ 28 октября 2019

Вы можете сделать это, используя целочисленное умножение.

Если у вас есть FPGA с 18-битными умножителями, вы умножаете и затем используете верхние биты.

Например: 0,299, R = 20 =>

0.299 * 2 ^ 17 = 39191

39191 * 20, затем используйте верхние биты результата (сверху вниз до 17), которые равны делению на 2 ^ 17

, так как вашЯ использую RGB для YUV. Думаю, это критично ко времени, поэтому приведенный выше пример - лучший выбор, в противном случае я обычно использую Instant SoC для реализации алгоритмов с плавающей запятой, которые не критичны по времени.

...