我正在尝试用 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.299
、0.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/