[英]Gradient color display in Nexus 3 Spartan 6 FPGA - VHDL
我正在尝试使用 Spartan 6 板显示颜色渐变。 由于我目前使用的 Spartan 6 板仅支持 8 位 VGA,因此我无法在没有硬边界的情况下显示 RGB 颜色。 我已经通过这样的编码显示了带有硬边框的 RGB 颜色
if x>0 and x<50 then
rgb <= RED;
elsif x>= 50 and x<100 then
rgb <= GREEN;
elsif x>= 100 and x<150 then
rgb <= BLUE;
elsif x>= 150 and x<200 then
rgb <= WHITE;
elsif x>= 250 and x<300 then
rgb <= RED;
elsif x>=350 and x<400 then
rgb <= GREEN;
elsif x>= 400 and x<450 then
rgb <= BLUE;
elsif x>= 450 and x<500 then
rgb <= WHITE;
end if;
但是现在我必须显示没有硬边界的颜色渐变。 我目前正在使用 640x480 的屏幕分辨率。 我正在考虑使用 LUT 通过给出索引来给出所有可能的组合。 我需要一些关于如何在 VHDL 中完成的建议,或者有没有其他方法可以在不明确编码所有条件组合的情况下实现这一点?
如何使用这些颜色渐变实现移动的颜色渐变图案?
有人可以帮我弄这个吗? 谢谢!
它是每个组件 8 位(24 位 RGB)还是每个颜色 8 位(8 位 RGB)? 在第二种情况下,您将很难显示渐变。 并非不可能,但要困难得多。
让我们假设您有一个 24 位案例。 如果步长为 50,它将需要一些中到重的逻辑,或者一个大的选择向量。 但是如果你把它设置为 64,它会变得简单得多。
看:
R(7 downto 2) <= X(5 downto 0) when X(11 downto 6) = "000000" else
31-X(5 downto 0) when X(11 downto 6) = "000001" else
"000000"
将在屏幕左侧为您提供 128 像素宽的黑到红到黑渐变。
您可以将它与其他 2 种颜色组合以获得所需的效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.