vhdl - 如何在 VHDL 中使用 float ?

标签 vhdl fpga

我正在尝试用 VHDL 创建 RGB 到 YUV 转换器。

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

在此公式中,我必须使用多个 float ,例如 0.2990.587 等。如何使用 float 创建可综合的 VHDL?

最佳答案

您可以使用整数乘法来实现此目的。

如果您的 FPGA 具有 18 位乘法器,您可以进行乘法运算,然后使用高位。

例如:0.299,R=20 =>

0.299 * 2^17 = 39191

39191 * 20 然后使用结果的高位(从上到下 17),与除以 2^17 相同

由于您的应用程序是 RGB 到 YUV,我想这对时间至关重要,因此上面的示例是最佳选择,否则我通常使用 Instant SoC实现对时间要求不高的浮点算法。

关于vhdl - 如何在 VHDL 中使用 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58583309/

相关文章:

simulation - VHDL定时器同步/异步加载速度问题

verilog - 从命令行使用 Quartus

arrays - 我可以同时访问数组的 2 个索引吗 VHDL

vhdl - 在VHDL中找到运算符 '0'的 “+”定义

vhdl - 模拟器和合成器之间初始化状态机的差异

initialization - VHDL/如何初始化我的信号?

fpga - 如何在 Altera Quartus 中生成 .rbf 文件?

c - 如何使用微 Controller 对 Lattice iCE40 ultra 进行编程

vhdl - std_logic_vector 与 Xilinx vhdl 中的整数综合

python - Cocotb 在门级仿真中使用泛型/参数